Elixirのバックエンドを構築する方法は?
このチュートリアルでは、 Elixirのバックエンドを構築する方法を学びます。
データベース管理、Cloud Code Functions、RESTおよびGraphQL API、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、Back4Appの重要な機能を統合する方法を説明し、安全でスケーラブル、かつ堅牢なバックエンドを作成します。
Erlang VM(BEAM)上で動作し、OTP(Erlang OTP)を活用するElixirは、障害耐性があり、同時実行環境で知られており、Back4Appと組み合わせることで、現代的で高性能なインフラストラクチャを形成します。
Back4Appの迅速なセットアップと直感的な環境が、サーバーやデータベースを手動で構成するのに比べて、どれほど時間と労力を大幅に削減できるかを確認します。
これには、パターンマッチングを活用し、Elixirの選択したWebフレームワークにフックすることが含まれます。
このチュートリアルの終わりまでには、プロダクション準備が整ったアプリケーションに拡張したり、カスタムロジックやサードパーティAPIで強化したりできる堅実な基盤を持つことができます。
このチュートリアルを完了するには、次のものが必要です:
- 基本的なElixir開発環境 マシンにElixirがインストールされていることを確認してください。PhoenixなどのWebフレームワークを使用する予定がある場合は、Phoenixインストールガイドを参照してください。
始める前に、これらの前提条件がすべて整っていることを確認してください。Back4Appプロジェクトを設定し、ローカルのElixir環境を準備しておくことで、スムーズに進めることができます。
Back4AppでのElixirのバックエンドを構築する方法の最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください:
- Back4appアカウントにログインする。
- Back4Appダッシュボードで「新しいアプリ」ボタンをクリックする。
- アプリに名前を付ける(例:「Elixir-Backend-Tutorial」)。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/drXO0UqsgxhFvRDiVmsMb_image.png?format=webp)
プロジェクトが作成されると、Back4Appダッシュボードにリストされているのが見えます。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。
Back4AppはParseプラットフォームを基盤として使用しています。Elixir用の公式Parse SDKは現在ありません。その代わりに、RESTまたはGraphQL APIを使用してBack4Appに簡単に接続できます。Elixirプロジェクトでは、あなたは:
- アプリの「アプリ設定」または「セキュリティとキー」セクションから、アプリケーションIDとRESTまたはGraphQLキーを取得します。
- 次に、HTTPoisonやTeslaなどのElixirライブラリを使用してHTTPリクエストを構成します。
たとえば、設定ファイルに資格情報を保存するには(config/dev.exsまたは同様のもの):
その後、これらの資格情報をコード内で参照してREST呼び出しを行うことができます。このガイド全体を通じて、標準のHTTPまたはGraphQLリクエストを使用してBack4Appデータベース、ユーザーシステム、およびその他の機能と対話する方法を紹介します。
Back4Appでは、データは クラス. Back4Appダッシュボードで新しいクラスを作成できます:
- 「データベース」セクションに移動して、Back4Appダッシュボードで。
- 新しいクラスを作成(例:「Todo」)し、タイトル(String)やisCompleted(Boolean)などの関連するカラムを追加します。
![新しいクラスを作成 新しいクラスを作成](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/iaZ_P-7epc_LSMFIPlaZV_image.png?format=webp)
Back4Appは、データモデルを説明し作成するのを助けるAIエージェントも提供しています:
- AIエージェントを開く アプリダッシュボードまたはメニューから。
- データモデルを説明する 簡単な言葉で(例:「新しいTodoアプリを完全なクラススキーマで作成してください。」)。
- AIエージェントにスキーマを自動的に作成させる
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/0snNZwHWzxuXlNu30n7IA_image.png?format=webp)
Elixirには公式のParse SDKがないため、直接のSDK使用はスキップします。代わりに、以下に REST, GraphQL, および Live Queries アプローチを示します。
HTTPクライアントをインストールします。例えば、 HTTPoison を mix.exs に追加します。
次に、 mix deps.get を実行します。
ElixirアプリケーションからTodoオブジェクトを作成(保存)するには:
そして、あなたのTodoオブジェクトをクエリするには:
GraphQLを介しても対話できます。例えば、Todoを作成するには:
Elixirでは、これをHTTPクライアントで送信することもできます:
リアルタイムの更新のために、Back4Appは ライブクエリ を提供しています。アプリの サーバー設定 でライブクエリを有効にできます。現在、ネイティブのElixir Parseクライアントライブラリはないため、通常はPhoenixチャネルまたは提供された wss://YOUR_SUBDOMAIN_HERE.b4a.io エンドポイントにカスタムWebSocketクライアントを介して接続します。これはより高度なもので、サブスクリプション、メッセージなどを処理するためのカスタムコーディングが必要です。
Back4Appは アクセス制御リスト(ACL) と クラスレベルの権限(CLP) を提供して、データアクセスを保護および管理します。ACLは個々のオブジェクトに適用され、CLPはクラス全体に適用されます。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/PdAyrw1nqA1QQJFuCc-4t_image.png?format=webp)
- クラスレベルの権限 (CLPs): あなたの Back4App ダッシュボードで、データベースを選択し(例: “Todo”)、クラスレベルの権限 タブを開きます。設定を調整します(例: “認証が必要” または “公開に対するアクセスなし”)。
- ACLの設定: オブジェクトを作成または更新する際に、REST または GraphQL リクエストで ACL データを送信できます。たとえば、細かいオブジェクトごとの制御が必要な場合は、JSON で _ACL フィールドを指定します。
![ACLを編集 ACLを編集](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/MF1Uf7HSJF03Xg6djap9m_image.png?format=webp)
詳細については、アプリセキュリティガイドラインをご覧ください。
クラウドコードを使用すると、自分のサーバーを管理することなくサーバーサイドのロジックを実行できます。Elixirでは、通常はOTPに依存して並行処理を行いますが、ここではBack4AppでJavaScriptクラウドコードを作成して、バリデーション、トリガー、またはカスタムビジネスロジックを処理できます。このコードはParse Server上で実行されるため、Elixirコードをクライアントまたはマイクロサービスのタスクに集中させることができ、重い処理はクラウドコードで行われます。
あなたの main.js をBack4AppダッシュボードまたはCLIを使用して:
次の方法でデプロイします: Back4app CLI またはダッシュボードの Cloud Code > Functions に貼り付けて Deploy をクリックします。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/pGxBQFBhk4prMc8Ub-uho_image.png?format=webp)
Elixirから、次のように使用できます:
Back4Appは、認証のためにParse Userクラスを使用します。サインアップ、ログイン、パスワードリセットを簡単に管理できます。Elixirからは、通常REST呼び出しを使用します:
Back4Appは、Google、Apple、Facebookなどとの統合をサポートしています。ほとんどの場合、ユーザーをOAuthフローに誘導し、これらのプロバイダーから返されたトークンを使用してParseログインを完了します。詳細については、ソーシャルログインドキュメントを参照してください。
Back4Appはファイルを安全に保存します。Elixirからは、RESTを介してファイルをアップロードします:
ファイルのURLを含むJSONレスポンスを受け取ります。これは、参照用にクラス(例: Photo)に保存できます。
ファイルのアップロードを許可するユーザーを設定するには、Back4Appプロジェクトの fileUpload 設定を構成できます。必要に応じて、認証されたユーザーのみにアップロードを制限できます。
メール認証は、ユーザーがサインアップ時に使用したメールアドレスを所有していることを確認します。パスワードリセットは、ユーザーが安全にアカウントを回復できるようにします。これらの機能は、Back4Appに組み込まれています。
- メール認証を有効にする あなたのアプリの「アプリ設定」または「認証」の下で。
- 「Fromアドレス」とメールテンプレートを設定します。
- パスワードリセットを有効にする ユーザーがメールで送信されたリンクを介してリセットできるようにします。
ダッシュボードで有効にすると、パスワードリセットをトリガーできます:
クラウドジョブを使用すると、古いデータのクリーンアップや定期的なメールの送信などのルーチン作業を自動化できます。これらはCloud Codeで記述します。
- コードをデプロイします。
- Back4appダッシュボードに移動します。 > アプリ設定 > サーバー設定 > バックグラウンドジョブ.
- ジョブをスケジュールします。 毎日または選択した頻度で実行されるようにします。
![クラウドジョブのスケジューリング クラウドジョブのスケジューリング](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5wG60YnWIST74erryTb-u_image.png?format=webp)
Webhooksを使用すると、特定のイベントが発生したときに、Back4Appアプリケーションが外部サービス(例:SlackチャンネルやStripe)にHTTPリクエストを送信できます。
- Webhooksの設定に移動し、Back4Appダッシュボード > その他 > Webhooksを選択します。
- エンドポイントを設定します(例えば、https://your-service.com/webhook-endpoint)。
- トリガーを設定します。「Todoクラスに新しいレコードが追加されたとき」など。
![Webhookの追加 Webhookの追加](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/morUMdwsAbVQ1EmBfUfAA_image.png?format=webp)
Todoが作成されるたびにSlackにデータを送信したい場合は、Slackの受信Webhook URLを指す新しいWebhookを追加できます。また、トリガー内でカスタムHTTPリクエストを送信することで、Cloud CodeでWebhookを定義することもできます。例えば、afterSaveのように。
![BeforeSave WebHook BeforeSave WebHook](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/fXvy4eRzabyWmN80OMyqW_image.png?format=webp)
「Back4app管理アプリ」は、データを管理するためのユーザーフレンドリーなインターフェースです。これを「アプリダッシュボード > その他 > 管理アプリ」から有効にできます。
![管理アプリを有効にする 管理アプリを有効にする](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5BTk1ntDh9JLXurObmm_o_image.png?format=webp)
- 最初の管理ユーザーを作成する, これによりB4aAdminUserロールと追加のクラスが設定されます。
- サブドメインを割り当てることで、管理インターフェースにアクセスします。
- ログインすることで、シンプルなインターフェースでデータを表示および管理します。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/u-pU1yBJJxa9KEM2psjXS_image.png?format=webp)
このチュートリアルに従って、Back4Appを使用してElixirのバックエンドを構築することで、あなたは:
- 安全なバックエンド 構造をBack4Appのプラットフォーム上でElixirを使用して統合しました。
- データベースを設定しました クラス、データ型、関係を持つ。
- REST/GraphQLを使用しました Elixirからデータと対話するために。
- セキュリティを適用しました ACLとCLPを使用して。
- カスタムロジックを追加しました Cloud Code関数を使用して。
- ユーザー認証を設定しました メール確認とパスワードリセットを使用して。
- ファイルストレージを処理しました および取得。
- バックグラウンドジョブをスケジュールしました 自動化のために。
- 外部サービスを統合しました ウェブフックを使用して。
- Back4App管理パネルを探索しました 簡単なデータ管理のために。
Elixirの並行性モデル(Erlang VMによって動かされる)とOTP、Back4Appのスケーラブルで柔軟なサービスを組み合わせることで、高度に堅牢なバックエンドを構築できます。
さらに高度な機能を探索し、ビジネスロジックを統合し、Back4Appに重い作業を処理させましょう。
- 本番環境向けのElixirアプリを構築する このバックエンドをお好みのElixir/Phoenixウェブフレームワークと組み合わせて。
- 高度な機能を統合する 役割ベースのアクセス制御やサードパーティAPI(決済ゲートウェイ、メッセージングサービス)など。
- Back4appの公式ドキュメントを探る 高度なセキュリティ、ログ、パフォーマンスチューニングなどについて。
- 他のチュートリアルをチェックする リアルタイムアプリ、IoTダッシュボード、または位置情報サービスのために。パターンマッチングとOTPの同時実行を駆使すれば、幅広いアプリケーションに対応できます!
![Doc contributor](https://s3.amazonaws.com/archbee-animals/cat.png)