JavaScript用のバックエンドを構築する方法は?
このチュートリアルでは、Back4appを使用してVanilla JavaScriptアプリケーションの完全なバックエンドを構築する方法を学びます。
データベース管理、Cloud Code Functions、RESTおよびGraphQL API、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、Back4appの重要な機能を統合する方法を説明し、プレーンJavaScriptで書かれたフロントエンドとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成します。
また、Back4appの迅速なセットアップと直感的な環境が、サーバーやデータベースを手動で構成するのに比べて、時間と労力を大幅に削減できることを確認します。
その過程で、高度なセキュリティ機能、Cloud Jobsを使用したタスクのスケジューリング、外部統合のためのWebhookの設定など、主要な機能を実際に体験します。
このチュートリアルの終わりまでには、この基盤となるセットアップを本番環境に適したアプリケーションに拡張する準備が整い、必要に応じてカスタムロジックやサードパーティAPIを簡単に組み込むことができるようになります。
このチュートリアルを完了するには、次のものが必要です:
- 基本的なバニラJavaScript環境 外部スクリプトを参照することで、単に index.html ファイルを作成することでこれを設定できます。最新のウェブブラウザまたはJavaScriptを実行できる環境を持っていることを確認してください。
- Node.js(バージョン14以上)(オプション) Parse JavaScript SDKをローカルにインストールする予定がある場合や、コマンドラインを介してコードのデプロイを管理する予定がある場合は、Node.jsが必要です。 Node.jsのインストール
始める前に、これらの前提条件がすべて整っていることを確認してください。Back4appプロジェクトを設定し、基本的なJavaScript環境を準備しておくと、より簡単に進めることができます。
Back4appでVanilla JavaScriptバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください:
- Back4appアカウントにログインする.
- 「新しいアプリ」ボタンをクリックする あなたのBack4appダッシュボードで。
- アプリに名前を付ける(例:「VanillaJS-Backend-Tutorial」)。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/drXO0UqsgxhFvRDiVmsMb_image.png?format=webp)
プロジェクトが作成されると、Back4appダッシュボードにリスト表示されます。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。
Back4appは、データを管理し、リアルタイム機能を提供し、ユーザー認証を処理するためにParseプラットフォームに依存しています。Vanilla JavaScriptアプリケーションをBack4appに接続するには、HTMLにParse SDKを含めるか、ビルドプロセスを実行している場合はnpmでインストールします。
Parseキーを取得する: Back4appダッシュボードで、アプリの「アプリ設定」または「セキュリティとキー」セクションに移動して、アプリケーションIDとJavaScriptキーを見つけます。ParseサーバーURL(通常はhttps://parseapi.back4app.com)も見つかります。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/F9teHXd_M8ERn1OPGirbi_image.png?format=webp)
オプション1: スクリプトタグを介してParseを追加する このスクリプトをあなたのindex.htmlに追加します(VERSIONをParse JS SDKリポジトリの有効なリリースに置き換えます):
オプション2: NPMを使用する(ビルドプロセスがある場合)
次に、あなたのメインJavaScriptファイル(例: main.js):
このステップを完了することで、あなたのバニラJavaScriptフロントエンドとBack4appバックエンドの間に安全な接続が確立されました。すべてのリクエストとデータトランザクションはこのSDKを通じて安全にルーティングされ、手動のRESTまたはGraphQL呼び出しの複雑さが軽減されます(必要に応じてそれらを使用することもできます)。
Back4appプロジェクトが設定され、Parse SDKがJavaScriptコードに統合されたので、データの保存と取得を開始できます。レコードを作成する最も簡単な方法は、Parse.Objectクラスを使用することです:
また、Back4appのREST APIエンドポイントを使用することもできます:
Back4appはGraphQLインターフェースも提供しています:
これらの多様なオプションにより、Parse SDK、REST、またはGraphQLを通じて、開発プロセスに最も適した方法でデータ操作を統合できます。
デフォルトでは、Parseは スキーマを動的に作成することを許可していますが、より多くの制御のためにBack4appダッシュボードでクラスとデータ型を定義することもできます。
- Back4appダッシュボードの「データベース」セクションに移動します。
- 新しいクラスを作成します。(例:「Todo」)関連するカラムを追加します。タイトル(String)やisCompleted(Boolean)など。
![新しいクラスを作成 新しいクラスを作成](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/iaZ_P-7epc_LSMFIPlaZV_image.png?format=webp)
Back4appはさまざまなデータ型をサポートしています: String, Number, Boolean, Object, Date, File, Pointer, Array, Relation, GeoPoint, および Polygon. 各フィールドに適切な型を選択できます。希望する場合は、JavaScriptコードからオブジェクトを最初に保存するときにParseが自動的にこれらの列を作成することもできます。
![列を作成 列を作成](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/DEh9vyxdBTZcslXxkVQMA_image.png?format=webp)
Back4appはデータモデルを設計するのに役立つAIエージェントを提供しています:
- AIエージェントを開く アプリダッシュボードまたはメニューから。
- データモデルを説明する 簡単な言葉で(例: “新しいToDoアプリをback4appで完全なクラススキーマで作成してください。”)。
- AIエージェントにスキーマを作成させる.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/0snNZwHWzxuXlNu30n7IA_image.png?format=webp)
AIエージェントを使用すると、データアーキテクチャの設定時に時間を節約し、アプリケーション全体で一貫性を確保できます。
リレーショナルデータがある場合、例えば、Categoryオブジェクトが複数のTodoアイテムを指している場合、ParseでPointersまたはRelationsを使用できます。例えば、Categoryへのポインタを追加することができます。
クエリを実行する際、ポインタデータも含めることができます。
このinclude('category')呼び出しは、各Todoとともにカテゴリの詳細を取得し、リレーショナルデータをシームレスにアクセス可能にします。
リアルタイムの更新のために、Back4appはLive Queriesを提供します。あなたのバニラJavaScriptアプリでは、特定のクラスの変更にサブスクライブできます。
- Back4appダッシュボードでLive Queriesを有効にします。アプリのServer Settingsの下で、「Live Queries」がオンになっていることを確認してください。
- コード内でLive Query Subscriptionを初期化します。
購読することで、新しいTodoが作成、更新、または削除されるたびにリアルタイム通知を受け取ります。この機能は、複数のユーザーがページを更新せずに最新のデータを確認する必要があるコラボレーション型または動的なアプリに特に価値があります。
Back4appは、アクセス制御リスト (ACL)とクラスレベルの権限 (CLP)を提供することで、セキュリティを真剣に考えています。これらの機能により、オブジェクトまたはクラスごとにデータの読み取りまたは書き込みを制限でき、認可されたユーザーのみがデータを変更できるようにします。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/PdAyrw1nqA1QQJFuCc-4t_image.png?format=webp)
ACLは、どのユーザー、役割、または一般の人々が読み取り/書き込み操作を行えるかを決定するために、個々のオブジェクトに適用されます。例えば:
オブジェクトを保存すると、それには指定されたユーザー以外の誰も読み取りまたは変更できないACLが適用されます。
![ACLを編集 ACLを編集](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/3YNfxEcv7CKdLC6ca8my6_image.png?format=webp)
CLPs は、クラス全体のデフォルトの権限を管理します。たとえば、クラスが公開されているか、書き込み可能か、または特定の役割のみがアクセスできるかどうかです。
- Back4app ダッシュボードに移動, アプリを選択し、データベース セクションを開きます。
- クラスを選択 (例: “Todo”)。
- クラスレベルの権限 タブを開きます。
- デフォルトを設定します。たとえば、読み取りまたは書き込みのための「認証が必要」や、一般公開のための「アクセス不可」などです。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/MF1Uf7HSJF03Xg6djap9m_image.png?format=webp)
これらの権限はベースラインを設定し、ACLは個々のオブジェクトの権限を微調整します。堅牢なセキュリティモデルは通常、CLPs(広範な制限)とACL(オブジェクトごとの細かい制限)を組み合わせます。詳細については、アプリセキュリティガイドライン。
Cloud Codeは、サーバーやインフラストラクチャを管理する必要なく、サーバー側でカスタムJavaScriptコードを実行できるParse Server環境の機能です。Cloud Codeを書くことで、Back4appのバックエンドを追加のビジネスロジック、バリデーション、トリガー、およびParse Server上で安全かつ効率的に実行される統合で拡張できます。
Cloud Codeを書くとき、通常はJavaScript関数、トリガー、および必要なNPMモジュールをmain.js(またはapp.js)ファイルに配置します。このファイルは、Parse Server環境内で実行されるBack4appプロジェクトにデプロイされます。これらの関数とトリガーはサーバー上で実行されるため、機密ロジックを処理したり、敏感なデータを処理したり、バックエンド専用のAPI呼び出しを行ったりすることを信頼できます。これらはクライアントに直接公開したくないプロセスかもしれません。
あなたのBack4appアプリのすべてのCloud Codeは、Back4appによって管理されているParse Server内で実行されるため、サーバーのメンテナンス、スケーリング、またはプロビジョニングについて心配する必要はありません。main.jsファイルを更新してデプロイするたびに、実行中のParse Serverは最新のコードで更新されます。
main.jsファイル構造 典型的なmain.jsには次のような内容が含まれる場合があります:
- 必要なモジュール(NPMパッケージ、組み込みNodeモジュール、またはその他のクラウドコードファイル)のためのステートメント。
- クラウド関数の定義を使用して Parse.Cloud.define().
- トリガーとして Parse.Cloud.beforeSave(), Parse.Cloud.afterSave(), など。
- インストールしたNPMモジュール(必要な場合)。例えば、HTTPリクエストを行うために axiosのようなパッケージをインストールすることができます。その後、ファイルの先頭でそれをrequire(またはimport)できます。
NPMモジュールをインストールして使用する能力により、Cloud Codeは非常に柔軟になり、外部APIとの統合、データ変換の実行、または複雑なサーバーサイドロジックの実行が可能になります。
- ビジネスロジック: 例えば、複数のオブジェクトプロパティを集計してゲーム内のユーザーのスコアを計算し、そのデータを自動的に保存することができます。
- データ検証: 特定のフィールドが存在することや、ユーザーがレコードを保存または削除する前に正しい権限を持っていることを確認します。
- トリガー: データが変更されたときにアクションを実行します(例:ユーザーがプロフィールを更新したときに通知を送信)。
- 統合: サードパーティのAPIやサービスと接続します。例えば、Cloud Codeから直接支払いゲートウェイ、Slack通知、またはメールマーケティングプラットフォームと統合することができます。
- セキュリティ強化: Cloud Code関数内で入力パラメータを検証およびサニタイズすることで、追加のセキュリティ層を追加します。例えば、受信データが特定の形式に一致することを確認し、無効または悪意のある入力を拒否し、機密操作を実行する前にユーザーの役割や権限に基づいてアクセスルールを強制することができます。
以下は、クライアントから送信されたテキスト文字列の長さを計算するシンプルなCloud Code関数です:
以下の方法でデプロイします: Back4app CLI:
1 - CLIをインストールします:
- Linux/MacOSの場合:
2 - アカウントキーを設定する:
3 - クラウドコードをデプロイする:
ダッシュボードを通じてデプロイする:
- アプリのダッシュボードで、クラウドコード > 関数に移動します。
- 関数をmain.jsエディタにコピー/ペーストします。
- 「デプロイ」をクリックします。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/pGxBQFBhk4prMc8Ub-uho_image.png?format=webp)
Parse SDKを使用したバニラJavaScriptから(上記のようにParseを設定していると仮定して):
REST経由でも呼び出すことができます:
またはGraphQL経由で:
この柔軟性により、バニラJavaScriptのフロントエンドやRESTまたはGraphQLをサポートする他のクライアントにカスタムロジックを統合することができます。
Back4appは、Parse Userクラスを認証の基盤として活用しています。デフォルトでは、Parseはパスワードのハッシュ化、セッショントークン、セキュアストレージを処理します。これは、複雑なセキュリティフローを手動で設定する必要がないことを意味します。
バニラJavaScriptのセットアップでは、新しいユーザーを次のように作成できます:
既存のユーザーにログインする:
REST経由でのログインは次のようになります:
ログインに成功すると、Parseは セッショントークン をユーザーオブジェクトに保存します。現在ログインしているユーザーにアクセスできます:
Parseはバックグラウンドでトークンベースのセッションを自動的に処理しますが、手動で管理または取り消すこともできます。これは、ログアウトする必要があるときに便利です:
Back4appとParseは、追加のパッケージをインストールするか、既存のアダプターを使用することで、GoogleやFacebookなどの人気のあるOAuthプロバイダーと統合できます。たとえば、Facebook App IDを設定し、Parse.FacebookUtils.logIn()を使用することで、Facebookログインを設定できます。詳細な手順は異なるため、ソーシャルログインのドキュメント。
メール確認とパスワードリセットを有効にするには:
- バック4アプリダッシュボードのメール設定に移動します。
- メール確認を有効にすることで、新しいユーザーがメールアドレスの所有権を確認できるようにします。
- 送信元アドレスを設定する、メールテンプレート、および必要に応じてカスタムドメインを設定します。
これらの機能は、ユーザーのメールの所有権を検証し、安全なパスワード回復方法を提供することで、アカウントのセキュリティとユーザーエクスペリエンスを向上させます。
Parseには、ファイルのアップロードを処理するためのParse.Fileクラスが含まれており、Back4appが安全に保存します:
データベース内のオブジェクトにファイルを添付するには、次のようにします:
ファイルのURLを取得するのは簡単です:
この imageUrl をウェブページに表示するには、次のように src を <img> タグに設定します。
Parse Serverは、ファイルアップロードのセキュリティを管理するための柔軟な設定を提供します。以下の例は、誰がサーバーにファイルをアップロードできるかを制御するための権限を設定する方法を示しています:
{ "fileUpload": { "enableForPublic": true, "enableForAnonymousUser": true, "enableForAuthenticatedUser": true } }
- enableForPublic: trueに設定すると、認証状況に関係なく、誰でもファイルをアップロードできるようになります。
- enableForAnonymousUser: 匿名ユーザー(サインアップしていないユーザー)がファイルをアップロードできるかどうかを制御します。有効にすると、一時的またはゲストユーザーがファイルをアップロードできます。
- enableForAuthenticatedUser: 認証されたユーザーのみがファイルをアップロードできるかどうかを指定します。これは、信頼できるユーザーのみがこの機能にアクセスできるようにするために理想的です。
クラウドジョブはBack4appでバックエンド上のルーチン作業をスケジュールして実行できます。例えば、古いデータのクリーンアップや毎日の要約メールの送信などです。典型的なクラウドジョブは次のようになります:
- クラウドコードをデプロイ 新しいジョブと共に(CLIまたはダッシュボード経由で)。
- Back4appダッシュボードに移動 > アプリ設定 > サーバー設定 > バックグラウンドジョブ.
- ジョブをスケジュール 毎日またはニーズに合った間隔で実行します。
![クラウドジョブのスケジューリング クラウドジョブのスケジューリング](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5wG60YnWIST74erryTb-u_image.png?format=webp)
クラウドジョブは、手動の介入を必要とせずに、バックグラウンドメンテナンスやその他の定期的なプロセスを自動化することを可能にします。
Webhooks は、特定のイベントが発生するたびに、Back4appアプリが外部サービスにHTTPリクエストを送信できるようにします。これは、決済ゲートウェイ(例:Stripe)、メールマーケティングツール、または分析プラットフォームなどのサードパーティシステムと統合するために強力です。
- Webhooksの設定に移動 あなたのBack4appダッシュボード > その他 > WebHooksに行き、次に「Webhookを追加」をクリックします。
- エンドポイントを設定 (例:https://your-external-service.com/webhook-endpoint)。
- トリガーを設定 して、Back4appのクラスやCloud Code関数でどのイベントがWebhookを発火させるかを指定します。
![Webhookの追加 Webhookの追加](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/morUMdwsAbVQ1EmBfUfAA_image.png?format=webp)
例えば、新しいTodoが作成されるたびにSlackチャンネルに通知したい場合:
- 受信Webhookを受け入れるSlackアプリを作成します。
- SlackのWebhook URLをコピーします。
- Back4appダッシュボードで、「Todoクラスの新しいレコード」というイベントのために、そのSlack URLをエンドポイントとして設定します。
- 必要に応じて、カスタムHTTPヘッダーやペイロードを追加することもできます。
Cloud CodeでWebhooksを定義することもできます。beforeSaveやafterSaveのトリガーでカスタムHTTPリクエストを作成します:
![BeforeSave WebHook BeforeSave WebHook](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/fXvy4eRzabyWmN80OMyqW_image.png?format=webp)
「Back4app管理アプリ」は、非技術的なユーザーがCRUD操作を実行し、コードを書くことなく日常的なデータタスクを処理するために設計されたウェブベースの管理インターフェースです。これは、「モデル中心」で、「ユーザーフレンドリー」なインターフェースを提供し、データベース管理、カスタムデータ管理、エンタープライズレベルの操作を効率化します。
「有効化」を選択し、「アプリダッシュボード > その他 > 管理アプリ」に移動して、「管理アプリを有効化」ボタンをクリックします。
![管理アプリを有効化 管理アプリを有効化](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5BTk1ntDh9JLXurObmm_o_image.png?format=webp)
最初の管理ユーザーを作成します(ユーザー名/パスワード)。これにより、新しい役割(B4aAdminUser)とクラス(B4aSetting、B4aMenuItem、B4aCustomField)がアプリのスキーマに自動的に生成されます。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/u-pU1yBJJxa9KEM2psjXS_image.png?format=webp)
管理インターフェースにアクセスするためのサブドメインを選択し、セットアップを完了します。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/_2b71RLDTlQW468017saY_image.png?format=webp)
ログイン して、新しい管理アプリのダッシュボードにアクセスするために作成した管理者資格情報を使用してください。
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/jOFU8C0qiFm6wiVZXS9l0_image.png?format=webp)
有効にすると、Back4app管理アプリは、Parseダッシュボードやバックエンドコードを直接使用することなく、データベースのレコードを簡単に表示、編集、または削除することができます。設定可能なアクセス制御を使用することで、データを管理するための明確でポイント&クリックの方法が必要なチームメンバーやクライアントとこのインターフェースを安全に共有できます。
この包括的なチュートリアルに従うことで、あなたは:
- 安全なバックエンドを作成しました Vanilla JavaScriptアプリのためにBack4app上で。
- データベースを構成しました クラススキーマ、データ型、関係を使用して。
- リアルタイムクエリを統合しました (ライブクエリ)で即時データ更新を実現。
- セキュリティ対策を適用しました ACLとCLPを使用してデータアクセスを保護し管理。
- クラウドコードを実装しました サーバーサイドでカスタムビジネスロジックを実行するための。
- ユーザー認証を設定しました メール確認とパスワードリセットをサポート。
- ファイルのアップロードを管理しました オプションのファイルセキュリティコントロール付きで。
- クラウドジョブをスケジュールしました 自動化されたバックグラウンドタスクのために。
- Webhookを使用しました 外部サービスと統合するために。
- Back4app管理パネルを探求しました データ管理のために。
堅牢なVanilla JavaScriptフロントエンドと強力なBack4appバックエンドを持つことで、機能豊富でスケーラブルかつ安全なアプリケーションを開発するための準備が整いました。さらに高度な機能を探求し、ビジネスロジックを統合し、Back4appの力を活用してサーバーとデータベースの管理にかかる無数の時間を節約してください。コーディングを楽しんで!
- 本番環境向けのJavaScriptアプリを構築する このバックエンドを拡張して、より複雑なデータモデル、キャッシング戦略、パフォーマンス最適化を処理します。
- 高度な機能を統合する 専門的な認証フロー、役割ベースのアクセス制御、または外部API(支払いゲートウェイなど)を含みます。
- Back4appの公式ドキュメントをチェックする 高度なセキュリティ、パフォーマンス調整、ログ分析についての詳細な情報を得るために。
- 他のチュートリアルを探る リアルタイムチャットアプリケーション、IoTダッシュボード、または位置情報サービスに関するものです。ここで学んだ技術をサードパーティのAPIと組み合わせて、複雑な実世界のアプリケーションを作成できます。
![Doc contributor](https://s3.amazonaws.com/archbee-animals/cat.png)