Quickstarters
Feature Overview
How to Build a Backend for Ruby?
32 分
はじめに このチュートリアルでは、 rubyのバックエンドを構築する方法 を発見します。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、back4appの基本機能を通じて進んでいきます。 rubyプログラミング言語とback4appを活用することで、安全でスケーラブル、かつ堅牢なバックエンドを手に入れ、ソフトウェア開発エコシステムに簡単に統合できます。 このアプローチは、parseに基づいたオープンソースのウェブプラットフォームを使用することで、時間と労力を節約します。迅速な開発原則を用いて、開発プロジェクトを加速する方法を見ていきます。 その過程で、高度なセキュリティ機能を使用し、cloud jobsでタスクをスケジュールし、外部統合のためのwebhookを設定する方法を学びます。 最後には、ウェブアプリケーションフレームワークの構造を作成し、プロダクションアプリケーション用に拡張する準備が整います。 あなたは次のことができるようになります データモデル、オブジェクト指向ロジック、リアルタイムデータのためにrubyをback4appと統合します。 モデル・ビュー・コントローラー(mvc)スタイルまたは他の好みのアーキテクチャでのアプリケーション開発のベストプラクティスを活用します。 安全なユーザー認証、cloud codeトリガーなどを扱うことで、バックエンド開発者としての役割を強化します。 back4appの柔軟な機能を使用して、実際のニーズに合ったwebアプリケーションをさらに洗練させます。 前提条件 back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントがない場合は無料でサインアップしてください。 ローカルruby環境 あなたは ruby https //www ruby lang org/en/documentation/installation/ をインストールしている必要があります。通常、ruby 2 6以上が推奨されます。 rubyプログラミング言語に対する親しみ rubyの構文、 オブジェクト指向 の概念、一般的な プログラミング言語 の使用に関する基本的な知識。 bundler(オプションですが推奨) bundlerは、あなたの webアプリケーションフレームワーク または 開発プロジェクト のためのgemを管理するのに役立ちます。 bundler公式ドキュメント。 https //bundler io/ 始める前に、これらの前提条件がすべて整っていることを確認してください。back4appプロジェクトが作成され、ruby環境が準備されていることで、スムーズなチュートリアル体験が得られます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する なぜこのステップが重要なのか 新しいback4appプロジェクトはあなたの アプリケーション開発 の基盤です。それはあなたのデータベースをホストし、ユーザー認証を管理し、 cloud code を実行するための環境を提供します。 新しいプロジェクトを作成する back4appにログインします。 back4appダッシュボードで 新しいアプリ をクリックします。 アプリに名前を付けます(例:「ruby backend tutorial」)。 parse sdkをインストールし、back4appに接続する ruby用のparse sdkは、back4appのバックエンドと対話するのに役立ちます。 gem を介してインストールできます。 ステップ2 – データベースの設定 1\ データモデルの作成 back4appでは、 クラス はデータベーステーブルのようなものです。たとえば、タスクを保存するための「todo」クラスを作成できます。rubyからその場でクラスを作成するか、ダッシュボードで定義して詳細な制御を行うことができます。 2\ aiエージェントを使用したデータモデルの作成 アプリダッシュボードでaiエージェントを開く データモデルを説明する 簡単な言葉で(例:「タイトル、iscompletedフィールドを持つtodoアプリ」)。 aiエージェントにスキーマを自動的に作成させる 3\ rubyを使用したデータの読み取りと書き込み(parse sdk) 以下は、ruby sdkを使用して「todo」クラスに新しいレコードを作成する簡単な例です。 require relative 'parse config' \# create a todo object todo = parse object new("todo") todo\["title"] = "buy groceries" todo\["iscompleted"] = false saved todo = todo save puts "todo saved with objectid #{saved todo\['objectid']}" \# query todos query = parse query new("todo") results = query get puts "fetched #{results size} todos " results each do |t| puts "title #{t\['title']}, completed #{t\['iscompleted']}" end 4\ rest apiを使用したデータの読み取りと書き込み restインターフェースを使用してレコードを作成および取得することもできます。 curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 5\ graphql apiを使用したデータの読み取りと書き込み back4appは高度な web applications のためのgraphqlエンドポイントを提供します。 mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } 6\ ライブクエリの使用(オプション) back4appダッシュボード(サーバー設定)で live queries を有効にし、環境がwebsocket接続をサポートしている場合はrubyスクリプトから購読します。また、同時実行をサポートする web application framework でリアルタイム更新に使用することもできます。 ステップ3 – aclとclpによるセキュリティの適用 1\ 概要 acl(アクセス制御リスト)とclp(クラスレベルの権限)は、あなたのデータを object oriented な方法で保護します。aclは、誰が各レコードを読み書きできるかを決定することを可能にします。clpは、クラス全体の権限を管理することを可能にします。 2\ クラスレベルの権限(clp)とaclの設定 アプリの database セクションに移動し、「todo」のようなクラスを選択します。「セキュリティ」または「クラスレベルの権限」の下でクラスのclpを設定します。レコードにaclを設定するには owner = parse user current todo = parse object new("todo") acl = parse acl new(owner) acl public read = false acl public write = false todo acl = acl todo\["title"] = "private task" todo save これにより、所有者のみがその特定のtodoを読み書きできることが保証されます。 ステップ 4 – クラウドコード関数の作成 1\ クラウドコードの理由 クラウドコードは、ビジネスロジックとバリデーションをサーバーに直接埋め込むのに役立ちます。データの整合性を確保し、クライアントに公開されていないタスクを実行するのに最適です。 2\ 例の関数 プロジェクトの main js (または類似のもの) で、back4app上にクラウド関数を定義できます parse cloud define('calculatetextlength', (request) => { const { text } = request params; if (!text) { throw 'no text provided'; } return { length text length }; }); 注 私たちのメインアプリケーションはrubyを使用していますが、parseのクラウドコードはjavascriptベースです。これがback4app上でサーバーサイドのロジックを埋め込む方法です。 3\ デプロイメント back4app cli back4app ダッシュボード 関数を cloud code > functions にコピー/ペーストし、 deploy をクリックします。 4\ npm モジュール cloud code 環境に npm モジュール (例 axios) をインストールできます。例えば npm install axios あなたの main js , それを require し、必要に応じて外部 api 呼び出しを行います。 ステップ 5 – 認証の設定 1\ ダッシュボード設定 アプリの アプリ設定 でユーザー認証を有効にします。back4app は parse user を使用してユーザー管理を行います。 2\ ruby でのサインアップ / ログイン require relative 'parse config' \# signing up a user user = parse user new({ username "alice", password "secret123", email "alice\@example com" }) begin user sign up puts "user signed up successfully" rescue => e puts "error #{e message}" end \# logging in a user logged in user = parse user login("alice", "secret123") puts "logged in as #{logged in user username}" 3\ ソーシャルログイン ソーシャルログイン(facebook、google、apple)を統合するには、 ソーシャルログインのドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。実装の詳細は各プロバイダーによって異なります。 ステップ 6 – ファイルストレージの取り扱い 1\ ファイルストレージの設定 back4app は parse file オブジェクトを介してファイルのアップロードを管理します。ruby では file = parse file new("image png", file read("/path/to/image png")) saved file = file save puts "file saved at #{saved file url}" \# attach file to an object photo = parse object new("photo") photo\["imagefile"] = saved file photo save puts "photo object created with file reference " 2\ 例 ユーザーは画像、文書、またはその他のファイルをアップロードできます。フロントエンドや他のサービスで表示するためにurlを取得してください。 3\ セキュリティに関する考慮事項 必要に応じて、認証されたユーザーにファイルアップロードを制限するようにアプリを構成してください。 ステップ 7 – メール確認とパスワードリセット 1\ なぜ重要なのか メール確認は新しいアカウントの有効なメールアドレスを保証します。パスワードリセットは、ユーザーが安全にアカウントを回復できるようにします。 2\ back4app ダッシュボードの設定 「 メール確認 」を有効にします。 確認とパスワードリセットのためのカスタムテンプレートを設定します。 3\ コード例 rubyから、パスワードリセットをリクエストできます curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset これにより、ユーザーのメールにパスワードリセットリンクが送信されます。 ステップ 8 – クラウドジョブによるタスクのスケジューリング 1\ クラウドジョブの役割 クラウドジョブは、古いデータのクリーンアップや要約メールの送信などの定期的なタスクを実行します。 2\ 例のジョブ parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); バック4アプリのダッシュボードで、 アプリ設定 > サーバー設定 > バックグラウンドジョブ の下にスケジュールします。 ステップ9 – ウェブフックの統合 1\ 定義 ウェブフックを使用すると、バック4アプリで特定のイベントが発生するたびに外部サービスにhttpリクエストを送信できます。これは、サードパーティサービスへのリンクや他の プログラミング言語 でのタスクのトリガーに最適です。 2\ 設定 アプリのバック4アプリダッシュボードに移動し、 その他 > ウェブフック , そして外部サービスのurlを持つ新しいウェブフックを追加します。 3\ 例 新しい「todo」が作成されるたびに、stripeやslackにデータを送信します。あるいは、クラウドコードでトリガーを定義し、そのトリガー内でhttpリクエストを行うこともできます。 ステップ10 – back4app管理パネルの探索 1\ どこにあるか アプリのダッシュボードで、 more > admin app , それから有効にします。 2\ 機能 コードなしでデータ管理のためのグラフィカルインターフェース。 ログ分析、バックグラウンドジョブのスケジューリングなどのためのツール。 役割ベースのアクセス制御により、非技術的なユーザーがコンテンツを安全に管理できるようにします。 結論 あなたは、rubyプログラミング言語を使用してparse apiと接続し、back4app上でrubyアプリのための安全でスケーラブルなバックエンドを構築しました。あなたの開発プロセスには次のものが含まれます 高度なセキュリティ機能(acl、clp)を持つ データベース 。 リアルタイム データ更新をlive queriesを通じて。 cloud code トリガーによるカスタムビジネスロジック。 ユーザー認証 とファイル処理。 スケジュールされたタスク をcloud jobsとwebhooksを使用して外部サービスに。 データ管理のための使いやすい admin panel 。 この基盤を使って、実世界の要件を満たすために、ウェブアプリケーションや他のプログラミング言語のプロジェクトを拡張できます。 経験豊富なバックエンド開発者であろうと、rubyを始めたばかりであろうと、back4appは迅速な開発のためのオブジェクト指向で使いやすいプラットフォームを提供します。 追加のapiや機能を統合し、モデル・ビュー・コントローラー(mvc)パターンや他のアーキテクチャスタイルに合わせたさらなるカスタマイズを探求してください。 次のステップ 生産環境を洗練させる 高度なキャッシング、役割ベースのアクセス、またはパフォーマンス最適化を追加することによって。 データクラス間のより複雑な関係を追加する 実世界のユースケースを強化するために。 公式のback4appドキュメントを探求する セキュリティ、パフォーマンスの洞察、分析のために。 他のオープンソースのウェブフレームワークで実験する アプリケーションの機能を拡張するために。 rubyとback4appを使って、より堅牢で機能豊富な ウェブアプリケーション を構築することを楽しんでください!