Quickstarters
Feature Overview
How to Build a Backend for PHP?
37 分
はじめに このチュートリアルでは、 phpのバックエンドを構築する方法 を学びます。back4appを使用して、サーバーサイドで動的なwebアプリケーションを実行します。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリなど、主要なback4appサービスの統合に焦点を当てます。 これらの手順に従うことで、phpプロジェクトで使用できる安全でスケーラブル、かつ堅牢なバックエンドを作成します。 また、すべてをゼロから構築するのに比べて、back4appがバックエンド開発をどのように加速するかを見て、時間と労力を節約できる理由を理解します。 高度なセキュリティを実装し、cloud jobsでタスクをスケジュールし、webhookで外部統合を接続する方法を発見します。すべてback4appのインフラストラクチャに依存しながら行います。 最後には、この基本的なサーバーサイドのバックエンドを完全なプロダクションセットアップに成長させる準備が整い、実際の使用のためにサードパーティapiやカスタムロジックを統合することができます。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成し、新しいプロジェクトを準備するためのガイドに従ってください。 基本的なphp開発環境 phpがインストールされたローカル環境を設定するか、phpをサポートするホスティング環境を使用できます。 公式phpドキュメント https //www php net/docs php curlサポートまたはhttpリクエストを送信する方法 ほとんどのphpインストールにはcurlがデフォルトで含まれています。 curlのインストール(公式ドキュメント) https //curl se/docs/install html ウェブアプリケーションの基本に関する知識 http、サーバーサイドスクリプティング、基本的なデータベースの概念を理解していると役立ちます。 以下の手順に入る前に、これらの前提条件を整えておいてください。back4appプロジェクトを設定し、php環境を準備しておくと、進めやすくなります。 ステップ1 – back4appプロジェクトの設定 新しいプロジェクトを作成する back4appでサーバーサイドバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ行っていない場合は、次の手順に従ってください back4appアカウントにログインする back4appダッシュボードで「新しいアプリ」ボタンをクリックする アプリに名前を付ける (例えば、「php バックエンド チュートリアル」)。 作成が完了すると、新しいback4appプロジェクトがダッシュボードに表示されます。このプロジェクトは、今後の設定手順の基盤となります。 back4appにrest apiで接続する 私たちはparse特有のsdkなしでphpを使用しているため、通信にはback4appのrestおよびgraphql apiに依存します。back4appダッシュボードから以下の認証情報が必要です アプリケーションid rest apiキー parseサーバーurl (通常は https //parseapi back4app com ) これらは、アプリの アプリ設定 または セキュリティとキー セクションに移動することで見つけることができます。 phpでは、curlや他のライブラリを使用してhttpリクエストを実行できます。以下は、back4appにpostリクエストを送信する短い例です $url = 'https //parseapi back4app com/classes/todo'; $data = array( 'title' => 'buy groceries', 'iscompleted' => false ); $payload = json encode($data); $ch = curl init($url); curl setopt($ch, curlopt post, 1); curl setopt($ch, curlopt postfields, $payload); curl setopt($ch, curlopt httpheader, array( 'x parse application id your application id', 'x parse rest api key your rest api key', 'content type application/json' )); curl setopt($ch, curlopt returntransfer, true); $result = curl exec($ch); curl close($ch); echo $result; // print api response このスニペットは、phpアプリケーションをback4appバックエンドに接続する方法を示しています。 your application id , your rest api key , および他のパラメータを自分のキーに合わせて変更してください。これにより、サーバーサイドのコードが新しいプロジェクトでデータを読み書きできるようになります。 ステップ 2 – データベースの設定 データモデルの作成 back4appプロジェクトの準備が整ったら、データベースを構築する時です。データモデルは、ウェブアプリケーションのデータがどのように整理されるかを定義します。たとえば、タスクやブログ投稿をクラスに保存することができます。 「データベース」セクションに移動 あなたのback4appダッシュボードで。 新しいクラスを作成 (例:「todo」)し、次のようなフィールドを追加します。 title (文字列)と iscompleted (ブール値)。 back4appでは、さまざまなデータ型のためにカラムを作成できます。これには、 string , number , boolean , pointer , relation , file , およびその他が含まれます。また、phpスクリプトからオブジェクトを最初に保存するときに、スキーマを自動的に作成させることもできます。 aiエージェントを使用したデータモデルの作成 back4appのaiエージェントはデータモデルの作成を自動化できます aiエージェントを ダッシュボードから開きます。 「新しいtodoアプリをback4appで完全なクラススキーマで作成してください。」のような 説明を提供します。 aiエージェントに データベーススキーマを作成させます。 この機能は時間を節約し、サーバーサイドアプリを一貫性のあるものに保つことができます。 データの読み書き (rest api) restを使用して、あなたの todo クラスに新しいオブジェクトを保存するには、postリクエストを送信できます 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 phpでは、curlを使用して同様のことを行います。例えば $url = 'https //parseapi back4app com/classes/todo'; $data = array('title' => 'buy groceries', 'iscompleted' => false); // (same curl setup as before) すべての既存の todo アイテムをクエリするには curl x get \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ https //parseapi back4app com/classes/todo データの読み取りと書き込み (graphql api) back4appはgraphqlもサポートしています。graphqlクエリやミューテーションを送信することでデータを挿入または取得できます https //parseapi back4app com/graphql 挿入 (ミューテーション) mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } クエリ query { todos { edges { node { objectid title iscompleted } } } } ライブクエリの使用(オプション) リアルタイムの更新が必要な場合は、 ライブクエリ を検討してください。back4appダッシュボードでライブクエリを有効にし、php環境(または別のクライアント)からwebsocketアプローチを使用して変更を購読します。javascriptクライアントで一般的ですが、必要に応じてphpで別のソケットを設定できます。詳細については、 back4appライブクエリドキュメントをご覧ください。 https //www back4app com/docs/javascript/live queries ステップ3 – aclとclpによるセキュリティの適用 簡単な概要 acl(アクセス制御リスト) と clp(クラスレベルの権限) は、誰がオブジェクトを読み書きできるかを制御することでデータを保護します。これにより、不正アクセスからバックエンドを保護します。 ステップバイステップ クラスレベルの権限(clp) をデータベースダッシュボードで設定します。公開の読み書きを制限したり、認証を要求したりできます。 aclを設定する 必要に応じて、各オブジェクトに対して細かい制御を行います。aclは特定のユーザーまたはロールに対して読み書きアクセスを指定できます。 詳細については、 アプリセキュリティガイドラインをご覧ください。 https //www back4app com/docs/security/parse security ステップ4 – クラウドコード関数の作成 クラウドコードの利点 クラウドコードを使用すると、サーバー側のjavascriptを実行してビジネスロジック、トリガー、またはバリデーションなどのタスクを実行できます。自分のサーバーを設定することなく、特定のコードを隠したり、データ変換を行ったりできます。 例の関数 テキストの長さを計算するシンプルなクラウドコード関数 // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); この関数は、phpスクリプトからrestを使用して呼び出すことができます 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 '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength デプロイメント cloud codeをデプロイするには、 back4app cli https //www back4app com/docs/local development/parse cli またはback4appダッシュボードを使用できます。 npmモジュール 追加のライブラリが必要な場合は、npmでインストールし、cloud codeにインポートしてください。これは、高度なサーバーサイド統合に役立ちます。 ステップ5 – 認証の設定 認証を有効にする デフォルトでは、あなたのback4appプロジェクトには、 parse user クラスを介したユーザー認証があります。ユーザーがメールを確認する必要があるか、ユーザー名/パスワードでのみログインするかを制御できます。 サインアップ、ログイン、ログアウト (rest) ユーザーを作成する 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 '{"username" "alice","password" "secret123","email" "alice\@example com"}' \\ https //parseapi back4app com/users 既存のユーザーでログインする curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login ソーシャルログイン ソーシャルログイン(google、apple、facebook)は、oauthフローを設定することで可能です。手順については、 ソーシャルログインのドキュメント。 https //www back4app com/docs/platform/sign in with apple ステップ6 – ファイルストレージの取り扱い ファイルストレージの設定 restを通じてファイルをアップロードできます curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/jpeg" \\ \ data binary "@/path/to/myimage jpg" \\ https //parseapi back4app com/files/myimage jpg jsonレスポンスにはファイルurlが含まれています。このurlをクラスに保存して、アップロードされたファイルを参照できます。 例 { "name" "myimage jpg", "url" "https //myapp back4app io/files/myimage jpg" } セキュリティの考慮事項 認証されたユーザーまたは特定の役割からのみファイルアップロードを許可できます。サーバー設定でファイルアップロードルールを構成してください。 ステップ7 – メール確認とパスワードリセット 概要 メール確認は、有効なメールアドレスのみが使用されることを保証します。パスワードリセットは、ユーザーが安全にアカウントを回復できるようにします。 ダッシュボード設定 back4appダッシュボードで , アプリ設定 > メール に移動します。 メール確認を有効にする と、希望するテンプレートを設定します。 パスワードリセットを有効にする ことで、ユーザーがアカウントを回復できるようにします。 実装 有効にすると、ユーザーのサインアップが確認メールをトリガーします。次のコマンドを使用してパスワードのリセットを促すこともできます 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 – クラウドジョブによるタスクのスケジューリング クラウドジョブの機能 クラウドジョブを使用すると、古いデータの削除や定期的なメールの送信などのタスクを自動化できます。これらは main js に記述し、back4appのダッシュボードでスケジュールできます。 例 // main js 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); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); このコードを back4appにデプロイします。 ダッシュボードで ジョブをスケジュールします。 アプリ設定 > サーバー設定 > バックグラウンドジョブ の下で。 ステップ9 – ウェブフックの統合 定義 ウェブフック は、イベントが発生したときに、他のサービスにhttpリクエストを送信することを可能にします。たとえば、back4appクラスに新しいレコードが作成されたときなどです。これは、外部統合、支払いプラットフォーム、メールマーケティングツール、またはslack通知などに役立ちます。 設定 ウェブフック パネルをback4appダッシュボードで開きます > もっと見る > ウェブフック 新しいウェブフックを追加 し、イベントデータを送信したいエンドポイントurlを指定します。 トリガーを選択 (例:オブジェクトの作成、更新、または削除)。 また、 クラウドコード トリガーでウェブフックを定義することもでき、 axios のようなnode jsモジュールを使用してhttpリクエストを行うことができます。 ステップ10 – back4app管理パネルの探索 「 back4app admin app 」は、非技術的なユーザーや管理者がコードを書くことなくデータを管理できるモデル中心のインターフェースです。標準のparse dashboardよりも直感的なデータ処理体験を提供します。 どこで見つけるか 管理アプリを有効にする には、次の場所に移動します: アプリダッシュボード > その他 > 管理アプリ 「管理アプリを有効にする」をクリック し、管理者の資格情報を設定します。 サブドメインを選択 して、管理アプリにアクセスします。 新しく作成した管理者の資格情報でログインして、データベースレコード、ユーザーアカウント、役割などの管理を開始します。 結論 このチュートリアルでは、back4appを使用して、あなたの php ウェブアプリケーションのサーバーサイドバックエンドを構築する方法を学びました。安全なデータベースを設定し、リアルタイム機能を活用し、cloud codeでカスタムロジックを定義し、ユーザー認証、ファイルストレージ、スケジュールされたジョブを探求しました。また、webhookと管理パネルが外部サービスと統合し、データ管理を簡素化する方法も見ました。 この基盤が整ったことで、次のphpプロジェクトに必要に応じて拡張できる柔軟でスケーラブルなバックエンドを持つことができます。アプリケーションをさらに強力でダイナミックにするために、高度な技術、カスタムロール、またはサードパーティapiを探求し続けてください。 次のステップ 本番環境向けのphpアプリケーションを洗練させる ために、キャッシング、負荷分散、または高度なセキュリティを追加してください。 ロールベースのアクセス制御を追加する または、ユーザー基盤が必要とする場合はユニークな認証フローを追加してください。 公式のback4appドキュメントを参照する パフォーマンスチューニング、ログ、分析についてさらに学ぶために。 追加のチュートリアルを試す ここで学んだ技術を使用して、eコマースからソーシャルプラットフォームまで、実世界のソリューションを構築してください。