クイックスターターズ

ReactJSのためのバックエンドを構築する方法は?

46min

はじめに

このチュートリアルでは、Back4appを使用してReactJSアプリケーションの完全なバックエンドを構築する方法を学びます。

データベース管理、Cloud Code Functions、RESTおよびGraphQL API、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、Back4appの重要な機能を統合する方法を説明します。これにより、ReactJSフロントエンドとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成します。 また、Back4appの迅速なセットアップと直感的な環境が、サーバーやデータベースを手動で構成するのに比べて、時間と労力を大幅に削減できることも確認できます。

その過程で、高度なセキュリティ機能、Cloud Jobsを使用したタスクのスケジューリング、外部統合のためのWebhookの設定など、主要な機能に関する実践的な経験を得ることができます。

このチュートリアルの終わりまでには、この基盤となるセットアップを本番環境に適したアプリケーションに強化する準備が整い、必要に応じてカスタムロジックやサードパーティAPIを簡単に組み込むことができるようになります。

前提条件

このチュートリアルを完了するには、次のものが必要です:

  • Back4appアカウントと新しいBack4appプロジェクト Back4appの始め方。 アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。
  • 基本的なReactJS開発環境 これを使用して設定できます Create React App または同様のツール。マシンにNode.jsがインストールされていることを確認してください。
  • Node.js(バージョン14以上)がインストールされていること npmパッケージをインストールし、ローカル開発サーバーを実行するためにNode.jsが必要です。 Node.jsのインストール
  • JavaScriptと基本的なReactJSの概念に慣れていること ReactJS公式ドキュメント。 Reactが初めての場合は、始める前に公式ドキュメントまたは初心者向けのチュートリアルを確認してください。

始める前に、これらの前提条件がすべて整っていることを確認してください。Back4appプロジェクトが設定され、ローカルのReactJS環境が準備されていると、より簡単に進めることができます。

ステップ1 – Back4appプロジェクトの設定

新しいプロジェクトを作成する

Back4appでReactJSバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください:

  1. Back4appアカウントにログインする
  2. Back4appダッシュボードの「新しいアプリ」ボタンをクリックする
  3. アプリに名前を付ける(例:「ReactJS-バックエンド-チュートリアル」)。
Document image


プロジェクトが作成されると、Back4appダッシュボードにリストされます。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。

Parse SDKを接続する

Back4appは、データを管理し、リアルタイム機能を提供し、ユーザー認証を処理するためにParseプラットフォームに依存しています。ReactJSアプリケーションをBack4appに接続するには、parse npmパッケージをインストールし、Back4appダッシュボードの資格情報で初期化する必要があります。

Parseキーを取得する: Back4appダッシュボードで、アプリの「アプリ設定」または「セキュリティとキー」セクションに移動して、アプリケーションIDJavaScriptキーを見つけます。また、ParseサーバーURLも見つけることができます(通常はhttps://parseapi.back4app.com)の形式です。

Document image


Parse SDKをインストールするには、ReactJSプロジェクトで:

Bash


Yarnを使用している場合は、次のコマンドでインストールできます:

Bash


ReactJSアプリケーションでParseを初期化する:

通常、あなたはファイル(例: parseConfig.js)をsrcディレクトリに作成します:

src/parseConfig.js


このファイルは、Reactアプリの他の場所でParseをインポートするたびに、特定のBack4appインスタンスに接続するように事前に設定されていることを保証します。

このステップを完了することで、ReactJSフロントエンドとBack4appバックエンドの間に安全な接続が確立されました。すべてのリクエストとデータトランザクションは、このSDKを通じて安全にルーティングされ、手動のRESTまたはGraphQL呼び出しの複雑さが軽減されます(必要に応じてそれらを使用することもできます)。

ステップ2 – データベースの設定

データの保存とクエリ

Back4appプロジェクトが設定され、Parse SDKがReactアプリに統合されたので、データの保存と取得を開始できます。レコードを作成する最も簡単な方法は、Parse.Objectクラスを使用することです。

JS


また、Back4appのREST APIエンドポイントを使用することもできます:

Curl


Back4appはGraphQLインターフェースも提供しています:

GraphQL


これらの多様なオプションにより、Parse SDK、REST、またはGraphQLを通じて、開発プロセスに最適な方法でデータ操作を統合できます。

スキーマ設計とデータ型

デフォルトでは、Parseは スキーマを動的に作成することを許可します, しかし、より多くの制御のためにBack4appダッシュボードでクラスとデータ型を定義することもできます。

  1. Back4appダッシュボードの「データベース」セクションに移動します
  2. 新しいクラスを作成します(例:「Todo」)およびタイトル(String)やisCompleted(Boolean)などの関連するカラムを追加します。



新しいクラスを作成
新しいクラスを作成


Back4appはさまざまなデータ型もサポートしています: String, Number, Boolean, Object, Date, File, Pointer, Array, Relation, GeoPoint, およびPolygon. 各フィールドに適切な型を選択できます。希望する場合は、Reactアプリからオブジェクトを最初に保存するときにParseが自動的にこれらのカラムを作成することもできます。



カラムを作成
カラムを作成


Back4appはデータモデルを設計するのに役立つAIエージェントを提供しています:

  1. アプリダッシュボードまたはメニューからAIエージェントを開きます
  2. データモデルを説明します簡単な言葉で(例:「新しいToDoアプリをback4appで完全なクラススキーマで作成してください。」)。
  3. AIエージェントにスキーマを作成させます.



Document image


AIエージェントを使用すると、データアーキテクチャの設定にかかる時間を節約し、アプリケーション全体での一貫性を確保できます。

リレーショナルデータ

リレーショナルデータがある場合、例えば、複数のTodoアイテムを指すCategoryオブジェクトがある場合、ParseでPointersまたはRelationsを使用できます。例えば、Categoryへのポインタを追加することができます。



JS


クエリを実行する際には、ポインタデータも含めることができます:

JS


このinclude('category')呼び出しは、各Todoとともにカテゴリの詳細を取得し、リレーショナルデータをシームレスにアクセス可能にします。

ライブクエリ

リアルタイムの更新のために、Back4appはLive Queriesを提供します。ReactJSアプリでは、特定のクラスの変更にサブスクライブできます:

  1. Back4appダッシュボードでLive Queriesを有効にします。アプリのServer Settingsの下で、「Live Queries」がオンになっていることを確認してください。
  2. コード内でLive Query Subscriptionを初期化します:
src/parseConfig.js

JS


購読することで、新しいTodoが作成、更新、または削除されるたびにリアルタイム通知を受け取ります。この機能は、複数のユーザーがページをリフレッシュせずに最新のデータを確認する必要があるコラボレーション型または動的なアプリに特に価値があります。

ステップ3 – ACLとCLPによるセキュリティの適用

Back4appのセキュリティメカニズム

Back4appは、アクセス制御リスト (ACL)クラスレベルの権限 (CLP)を提供することでセキュリティを真剣に考えています。これらの機能により、オブジェクトごとまたはクラスごとにデータの読み取りや書き込みを制限でき、認可されたユーザーのみがデータを変更できるようにします。

Document image


アクセス制御リスト (ACL)

ACL」は、どのユーザー、役割、または一般の人々が読み取り/書き込み操作を行うことができるかを決定するために、個々のオブジェクトに適用されます。例えば:

JS


オブジェクトを保存すると、それには指定されたユーザー以外の誰も読み取りまたは変更できないようにするACLが設定されます。



ACLを編集
ACLを編集


クラスレベルの権限 (CLP)

CLPは、クラス全体のデフォルトの権限を管理します。たとえば、そのクラスが公開されているか書き込み可能か、または特定の役割のみがアクセスできるかどうかです。

  1. Back4appダッシュボードに移動, アプリを選択し、データベースセクションを開きます。
  2. クラスを選択(例:「Todo」)。
  3. クラスレベルの権限タブを開きます。
  4. デフォルトを設定します。たとえば、「読み取りまたは書き込みのための認証が必要」や「一般公開のためのアクセスなし」などです。



Document image


これらの権限は基本を設定し、ACLは個々のオブジェクトの権限を微調整します。堅牢なセキュリティモデルは通常、CLP(広範な制限)とACL(オブジェクトごとの細かい制限)の両方を組み合わせます。詳細については、アプリセキュリティガイドライン。

ステップ4 – クラウド関数の作成とデプロイ

クラウドコードは、サーバー側でカスタムJavaScriptコードを実行できるParse Server環境の機能であり、サーバーやインフラストラクチャを管理する必要はありません。クラウドコードを書くことで、Back4appのバックエンドを追加のビジネスロジック、バリデーション、トリガー、およびParse Server上で安全かつ効率的に実行される統合で拡張できます。

動作の仕組み

クラウドコードを書くとき、通常はJavaScript関数、トリガー、および必要なNPMモジュールをmain.js(またはapp.js)ファイルに配置します。このファイルはBack4appプロジェクトにデプロイされ、Parse Server環境内で実行されます。これらの関数とトリガーはサーバー上で実行されるため、機密ロジックを処理したり、敏感なデータを処理したり、バックエンド専用のAPI呼び出しを行ったりすることを信頼できます。これらのプロセスは、クライアントに直接公開したくないかもしれません。

あなたのBack4appアプリのすべてのクラウドコードは、Back4appによって管理されているParse Server内で実行されるため、サーバーのメンテナンス、スケーリング、またはプロビジョニングについて心配する必要はありません。main.jsファイルを更新してデプロイするたびに、実行中のParse Serverは最新のコードで更新されます。

main.js ファイル構造 典型的な main.js には次のような内容が含まれる場合があります:

  1. 必要なモジュールの Require ステートメント(NPMパッケージ、組み込みNodeモジュール、または他のクラウドコードファイル)。
  2. クラウド関数の定義 を使用して Parse.Cloud.define().
  3. トリガー 例えば Parse.Cloud.beforeSave(), Parse.Cloud.afterSave(), など。
  4. インストールしたNPMモジュール(必要な場合)。例えば、HTTPリクエストを行うために axios のようなパッケージをインストールすることがあります。その後、ファイルの先頭でそれをrequire(またはimport)できます。
JS


NPMモジュールをインストールして使用する能力により、Cloud Codeは非常に柔軟になり、外部APIとの統合、データ変換の実行、または複雑なサーバーサイドロジックの実行が可能になります。

典型的な使用例

  • ビジネスロジック: たとえば、複数のオブジェクトプロパティを集約してゲーム内のユーザーのスコアを計算し、そのデータを自動的に保存することができます。
  • データ検証: レコードを保存または削除する前に、特定のフィールドが存在することや、ユーザーが正しい権限を持っていることを確認します。
  • トリガー: データが変更されたときにアクションを実行します(例:ユーザーがプロフィールを更新したときに通知を送信)。
  • 統合: サードパーティのAPIやサービスと接続します。たとえば、Cloud Codeから直接、決済ゲートウェイ、Slack通知、またはメールマーケティングプラットフォームと統合することができます。
  • セキュリティの強化: Cloud Code関数内で入力パラメータを検証およびサニタイズすることにより、追加のセキュリティ層を追加します。たとえば、受信データが特定の形式に一致することを確認し、無効または悪意のある入力を拒否し、機密操作を実行する前にユーザーの役割や権限に基づいてアクセスルールを強制することができます。

関数をデプロイする

以下は、クライアントから送信されたテキスト文字列の長さを計算するシンプルなCloud Code関数です:

main.js


以下の方法でデプロイします: Back4app CLI:

1 - CLIをインストールします:

  • Linux/MacOSの場合:
Bash




Bash


3 - クラウドコードをデプロイします:

Bash


ダッシュボードを通じてデプロイする:

  1. アプリのダッシュボードで、クラウドコード > 関数に移動します。
  2. 関数をmain.jsエディタにコピー/ペーストします。
  3. クリックしてデプロイします。
Document image


関数を呼び出す

ReactJSを使用してParse SDKから:

JS


REST経由でも呼び出すことができます:

Curl


またはGraphQL経由で:

GraphQL


この柔軟性により、ReactJSフロントエンドやRESTまたはGraphQLをサポートする他のクライアントにカスタムロジックを統合することができます。

ステップ5 – ユーザー認証の設定

Back4appにおけるユーザー認証

Back4appは、Parse Userクラスを認証の基盤として活用しています。デフォルトでは、Parseはパスワードのハッシュ化、セッショントークン、セキュアストレージを処理します。これは、複雑なセキュリティフローを手動で設定する必要がないことを意味します。

ユーザー認証の設定

Reactアプリケーションでは、次のように新しいユーザーを作成できます:

JS


既存のユーザーにログインする:

JS


REST経由でのログインは次のようになります:

JS


セッション管理

成功したログインの後、Parseはユーザーオブジェクトに保存される セッショントークン を作成します。あなたのReactアプリでは、現在ログインしているユーザーにアクセスできます:

JS


Parseはバックグラウンドでトークンベースのセッションを自動的に処理しますが、手動で管理または取り消すこともできます。これは、ログアウトする必要があるときに便利です:

JS


ソーシャルログイン統合

Back4appとParseは、追加のパッケージをインストールするか、既存のアダプターを使用することで、 GoogleFacebook などの人気のあるOAuthプロバイダーと統合できます。たとえば、あなたの Facebook App ID を設定し、Parse.FacebookUtils.logIn()を使用することでFacebookログインを設定できます。詳細な手順は異なるため、 ソーシャルログインのドキュメントを参照してください。

JS


メール認証とパスワードリセット

メール認証とパスワードリセットを有効にするには:

  1. バック4アプリのダッシュボードでメール設定に移動します。
  2. メール認証を有効にすることで、新しいユーザーがメールアドレスの所有権を確認できるようにします。
  3. 送信元アドレスを設定する, メールテンプレート、および必要に応じてカスタムドメインを設定します。

これらの機能は、ユーザーのメールの所有権を検証し、安全なパスワード回復方法を提供することで、アカウントのセキュリティとユーザーエクスペリエンスを向上させます。

ステップ6 – ファイルストレージの取り扱い

ファイルのアップロードと取得

Parseには、ファイルのアップロードを処理するための Parse.File クラスが含まれており、Back4appが安全に保存します:

JS


データベース内のオブジェクトにファイルを添付するには、次のようにします:

JS


ファイルURLの取得は簡単です:

JS


このimageUrlをReactコンポーネントで<img>タグのsrcとして設定することで表示できます。

ファイルセキュリティ

Parse Serverはファイルアップロードのセキュリティを管理するための柔軟な設定を提供します。以下の例は、誰がサーバーにファイルをアップロードできるかを制御するための権限を設定する方法を示しています:

{ "fileUpload": { "enableForPublic": true, "enableForAnonymousUser": true, "enableForAuthenticatedUser": true } }
  • enableForPublic: trueに設定すると、認証ステータスに関係なく、誰でもファイルをアップロードできるようになります。
  • enableForAnonymousUser: 匿名ユーザー(サインアップしていないユーザー)がファイルをアップロードできるかどうかを制御します。有効にすると、一時的またはゲストユーザーがファイルをアップロードできます。
  • enableForAuthenticatedUser: 認証されたユーザーのみがファイルをアップロードできるかどうかを指定します。これは、信頼できるユーザーのみがこの機能にアクセスできるようにするために理想的です。

ステップ 7 – クラウドジョブによるタスクのスケジューリング

クラウドジョブ

クラウドジョブは、Back4appでバックエンド上の定期的なタスクをスケジュールして実行することを可能にします - 古いデータのクリーンアップや、毎日の要約メールの送信などです。典型的なクラウドジョブは次のようになります:

JS

  1. クラウドコードをデプロイする 新しいジョブで(CLIまたはダッシュボードを介して)。
  2. Back4appダッシュボードに移動する > アプリ設定 > サーバー設定 > バックグラウンドジョブ.
  3. ジョブをスケジュールする 毎日またはニーズに合った間隔で実行されるように。



クラウドジョブのスケジューリング
クラウドジョブのスケジューリング


クラウドジョブを使用すると、手動での介入なしに、バックグラウンドメンテナンスやその他の定期的なプロセスを自動化できます。

ステップ8 – ウェブフックの統合

ウェブフックを使用すると、特定のイベントが発生するたびに、Back4appアプリが外部サービスにHTTPリクエストを送信できます。これは、決済ゲートウェイ(例:Stripe)、メールマーケティングツール、または分析プラットフォームなどのサードパーティシステムとの統合に非常に強力です。

  1. ウェブフックの設定に移動し、Back4appダッシュボード > その他 > WebHooksを選択し、次に「ウェブフックを追加」をクリックします。
  2. エンドポイントを設定します(例:https://your-external-service.com/webhook-endpoint)。
  3. トリガーを設定して、Back4appのクラスやクラウドコード関数内のどのイベントがウェブフックを発火させるかを指定します。



ウェブフックの追加
ウェブフックの追加


たとえば、新しいTodoが作成されるたびにSlackチャンネルに通知したい場合:

  • 受信ウェブフックを受け入れるSlackアプリを作成します。
  • SlackのウェブフックURLをコピーします。
  • Back4appダッシュボードで、「Todoクラスの新しいレコード」というイベントのために、そのSlack URLをエンドポイントとして設定します。
  • 必要に応じて、カスタムHTTPヘッダーやペイロードを追加することもできます。

また、beforeSaveやafterSaveのトリガーでカスタムHTTPリクエストを作成することで、クラウドコード内でウェブフックを定義することもできます。



BeforeSave WebHook
BeforeSave WebHook


ステップ9 – Back4app管理パネルの探索

Back4app管理アプリ」は、非技術的なユーザーがCRUD操作を実行し、コードを書くことなく日常的なデータタスクを処理するために設計されたウェブベースの管理インターフェースです。これは、「モデル中心」、「ユーザーフレンドリーなインターフェースを提供し、データベース管理、カスタムデータ管理、エンタープライズレベルの操作を効率化します。

管理アプリの有効化

有効化」は、「アプリダッシュボード > その他 > 管理アプリ」に移動し、「管理アプリを有効化」ボタンをクリックすることで行います。

管理アプリの有効化
管理アプリの有効化


最初の管理ユーザーを作成(ユーザー名/パスワード)し、これにより新しい役割(B4aAdminUser)とクラス(B4aSetting、B4aMenuItem、B4aCustomField)がアプリのスキーマに自動的に生成されます。



Document image


管理インターフェースにアクセスするためのサブドメインを選択し、セットアップを完了します。



Document image


ログイン あなたが作成した管理者の資格情報を使用して、新しい管理者アプリのダッシュボードにアクセスします。



Document image


有効にすると、Back4app管理アプリを使用すると、Parseダッシュボードやバックエンドコードを直接使用することなく、データベースのレコードを簡単に表示、編集、または削除できます。設定可能なアクセス制御を使用すると、データを管理するための明確でポイントアンドクリックの方法が必要なチームメンバーやクライアントとこのインターフェースを安全に共有できます。

結論

この包括的なチュートリアルに従うことで、あなたは:

  • 安全なバックエンドを作成しました Back4app上のReactJSアプリ用。
  • データベースを構成しました クラススキーマ、データ型、関係を使用して。
  • リアルタイムクエリを統合しました (ライブクエリ)即時データ更新のため。
  • セキュリティ対策を適用しました ACLとCLPを使用してデータアクセスを保護および管理。
  • Cloud Codeを実装しました サーバー側でカスタムビジネスロジックを実行するための関数。
  • ユーザー認証を設定しました メール確認とパスワードリセットをサポート。
  • ファイルアップロードを管理しました オプションのファイルセキュリティコントロール付き。
  • Cloud Jobsをスケジュールしました 自動バックグラウンドタスクのため。
  • Webhookを使用しました 外部サービスと統合するため。
  • Back4app管理パネルを探索しました データ管理のため。

堅牢なReactJSフロントエンドと強力なBack4appバックエンドを持つことで、機能豊富でスケーラブルかつ安全なアプリケーションを開発する準備が整いました。より高度な機能を探求し、ビジネスロジックを統合し、Back4appの力を活用してサーバーとデータベースの管理にかかる無数の時間を節約してください。コーディングを楽しんで!

次のステップ

  • 本番環境に適したReactJSアプリを構築する このバックエンドを拡張して、より複雑なデータモデル、キャッシング戦略、パフォーマンス最適化を処理します。
  • 高度な機能を統合する 専門的な認証フロー、役割ベースのアクセス制御、または外部API(支払いゲートウェイなど)を含みます。
  • Back4appの公式ドキュメントをチェックする 高度なセキュリティ、パフォーマンス調整、ログ分析についての詳細な情報を得るために。
  • 他のチュートリアルを探る リアルタイムチャットアプリケーション、IoTダッシュボード、または位置情報サービスに関するものです。ここで学んだ技術をサードパーティのAPIと組み合わせて、複雑な実世界のアプリケーションを作成できます。