Quickstarters
Feature Overview
How to Build a Backend for Play Framework?
33 分
イントロダクション このチュートリアルでは、back4appを使用してplay frameworkの完全なバックエンドを構築する方法を学びます。 設定、データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、ファイルストレージ、リアルタイムクエリなど、サーバーバックエンドのための重要な機能を通じて説明します。 back4appがウェブアプリケーションのバックエンドの設定、スケーリング、維持のプロセスをどのように簡素化し、play frameworkのコードに集中できるようにするかを見ていきます。 back4appを使用してplay frameworkのバックエンドを構築する方法を学ぶことで、開発時間を短縮し、開発運用の頭痛を最小限に抑えることができます。 ソーシャルログイン、タスクのスケジューリング(cloud jobs)、webhookなどの堅牢な機能も追加します。これを完了すると、必要に応じてより高度な機能を統合し、プロダクショングレードのソリューションにシステムを拡張できます。 完了すると、次のスケーラブルで安全なplay frameworkウェブアプリケーションを作成するための確固たる設計図が得られます。 実際の要求に対応するために、パフォーマンスの向上、統合、または開発モードの最適化にさらに深く取り組む準備が整います。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 動作するplay framework環境 次のことを確認してください java 8+ https //adoptium net/ がインストールされています。 次をインストールしてください sbt https //www scala sbt org/download html または ideを通じてsbtを使用する https //www playframework com/documentation/latest/ide play frameworkの基本的な知識 基礎を復習する必要がある場合は、 playドキュメント https //www playframework com/documentation/latest を参照してください。 restまたはgraphqlの知識 これにより、back4appとやり取りするのが容易になります。特に、parse sdkを直接使用しないことを決定した場合や、使用できない場合に役立ちます。 始める前に、これらの前提条件が整っていることを確認してください。back4appプロジェクトが設定され、play framework環境が準備されていると、スムーズに進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する 新しいback4appプロジェクトが必要な理由 新しいback4appプロジェクトは、アプリケーションのデータ、認証、クラウドロジックを管理するため、バックエンドの基盤となります。小さなプロトタイプを構築する場合でも、大規模なwebアプリケーションを構築する場合でも、play frameworkアプリを新しいback4appプロジェクトに簡単に接続できます。 back4appプロジェクトの作成 back4appアカウントにログイン 「新しいアプリ」をクリック あなたのback4appダッシュボードで。 アプリに名前を付ける , 例えば、「play framework backend」。 作成が完了すると、新しいプロジェクトがダッシュボードに表示されます。 back4appとの接続 back4appはparse serverを活用しています。あなたのplay frameworkアプリがparse java sdkを介してback4appとやり取りする予定がある場合、必要に応じてそれを build sbt に追加できます。そうでない場合は、restまたはgraphqlエンドポイントを使用できます。 parseキーを取得 back4appダッシュボードで、 アプリ設定 または セキュリティとキー を開いて、あなたの アプリケーションid , rest apiキー , javascriptキー (フロントエンド呼び出しを使用している場合)、または クライアントキー , さらに サーバーurl (通常は https //parseapi back4app com )。 java/parse sdkの使用(オプション) parse sdkを使用してサーバーサイドの直接統合を行いたい場合は、あなたの build sbt librarydependencies += "com parse" % "parse" % "1 0 40" // example version 次に、play frameworkのコード内でparseを初期化できます object parseconfig { def init() unit = { parse initialize(new parse configuration builder("your app id") server("https //parseapi back4app com") clientkey("your client key") build() ) } } これをあなたの global scala に配置するか、適切な初期化ポイントから呼び出すことができます。これにより、back4appプロジェクトとの直接的なインタラクションが可能になります。 もし好ましい場合は、データ操作のためにrestまたはgraphqlエンドポイントを使用してください。特にhttpリクエストをより制御したい場合や、マイクロサービスを構築している場合に便利です。 ステップ2 – データベースの設定 back4appのデータストレージサービスは、幅広いデータタイプと動的スキーマの作成をサポートしています。これにより、playアプリのデータを最小限の手間で保存できます。 データモデルの作成 「データベース」セクションを back4appダッシュボードで開きます。 新しいクラスを作成します (例:「todo」)およびカラムを追加します(例、 title をstringとして、 iscompleted をbooleanとして)。 保存 してデータベーススキーマを確定します。 aiエージェントを使用したデータモデルの作成 データ構造を迅速に定義したい場合: アプリダッシュボードで aiエージェントを開きます。 希望するデータモデルを 平易な言葉で説明します(例:「シンプルなtodoモデルを作成します。」)。 エージェントが自動的にスキーマを生成します。 parse sdkを使用したデータの読み取りと書き込み(オプション) play frameworkアプリにparse java sdkを含めることを選択した場合、データを保存およびクエリできます。 import com parse {parseobject, parsequery} object todoservice { def createtodo(title string, iscompleted boolean) either\[throwable, parseobject] = { try { val todo = new parseobject("todo") todo put("title", title) todo put("iscompleted", iscompleted) right(todo save()) } catch { case e throwable => left(e) } } def fetchtodos() either\[throwable, java util list\[parseobject]] = { try { val query = parsequery getquery("todo") val results = query find() right(results) } catch { case e throwable => left(e) } } } restを使用したデータの読み取りと書き込み play frameworkのコントローラーやサービスからhttpリクエストを送信できます。 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 graphqlを使用したデータの読み取りと書き込み back4appはgraphql apiも提供しています mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } これは、マイクロサービスを構築している場合や、フロントエンドクライアント用の柔軟なapiが必要な場合に便利です。 ライブクエリの使用 あなたの ウェブアプリケーション がリアルタイムデータを必要とする場合は、 ライブクエリ を有効にしてください ライブクエリを有効にする はback4appダッシュボードの サーバー設定 の下で行います。 コードで サブスクリプションを設定します。parse sdkまたはカスタムコードを使用している場合は、 livequeryserverurl を構成してください。 “todo”のようなクラスの変更に サブスクライブします。 ステップ3 – aclとclpによるセキュリティの適用 aclとclpの概要 back4appは、オブジェクトレベルのセキュリティのための アクセス制御リスト(acl) と、広範な制限のための クラスレベルの権限(clp) を提供します。これにより、サーバーのバックエンドを安全に保ち、認可された操作のみが行われることを保証します。 クラスレベルの権限 back4appダッシュボードの データベース セクションで クラスを選択する (例 “todo”)。 clpを開く 認証されたユーザー、ロール、または一般公開に対して読み書きを制限します。 必要に応じて構成します(例 書き込みには“認証が必要”)。 acl aclは個々のオブジェクトを保護します。たとえば、特定のユーザーだけが特定のレコードを読み書きできるようにすることができます。scalaコードからparse sdkを使用している場合 import com parse {parseacl, parseuser, parseobject} def createprivatetodo(title string, owner parseuser) parseobject = { val todo = new parseobject("todo") todo put("title", title) val acl = new parseacl(owner) acl setpublicreadaccess(false) acl setpublicwriteaccess(false) todo setacl(acl) todo save() todo } ステップ4 – クラウドコード関数の作成 なぜクラウドコードなのか クラウドコードを使用すると、back4appのサーバー上でカスタムロジックを実行でき、データトランザクションの前後にビジネスルールやバリデーションを追加できます。このような関数を実装するために、自分自身でサーバーのプロビジョニングや開発モードの再起動を処理する必要はありません。 例の関数 // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); これをrest、graphql経由で、またはparse sdkを使用している場合は直接呼び出すことができます。 デプロイメント 次のいずれかを使用します。 back4app cli またはダッシュボード cliをインストールする (linux/macosの例): アカウントキーを設定する デプロイする または、 ダッシュボード経由でデプロイする には、関数を cloud code > functions に貼り付けて「デプロイ」をクリックします。 npmモジュールの使用 クラウドコードはnpmモジュールをサポートしています。たとえば、 axios のようなhttpクライアントが必要な場合: const axios = require('axios'); parse cloud define('fetchdata', async (req) => { const response = await axios get(req params url); return response data; }); ステップ5 – 認証の設定 ユーザー認証の有効化 back4appは、 parse user クラスを使用して、サインアップ、ログイン、およびセッション管理を行います。あなたの 設定 で、「メール確認を有効にする」と「パスワードリセットを有効にする」を必要に応じて確認してください。 サンプルコード(parse sdk) import com parse {parseuser} object authservice { def signupuser(username string, password string, email string) either\[throwable, parseuser] = { try { val user = new parseuser() user setusername(username) user setpassword(password) user setemail(email) right(user signup()) } catch { case e throwable => left(e) } } def loginuser(username string, password string) either\[throwable, parseuser] = { try { right(parseuser login(username, password)) } catch { case e throwable => left(e) } } } ソーシャルログイン google、apple、またはfacebookのソーシャルログインが必要な場合は、back4appダッシュボードで設定してください。parseはユーティリティメソッドを提供するか、ニーズやアプローチに応じて標準のoauthフローに依存できます。 ステップ 6 – ファイルストレージの取り扱い back4appはファイルを parse file を介して保存します。play frameworkからは、restまたはparse sdkを使用してアップロードできます。 // example with parse sdk import com parse {parsefile, parseobject} import java nio file {files, paths} def uploadimage(filepath string) either\[throwable, string] = { try { val data = files readallbytes(paths get(filepath)) val parsefile = new parsefile("myimage jpg", data) parsefile save() right(parsefile geturl) } catch { case e throwable => left(e) } } セキュリティの考慮事項 back4appのサーバー設定でファイルアップロードの権限(公開、匿名、または認証済みのために有効にする)を構成できます。 ステップ 7 – メール確認とパスワードリセット back4appダッシュボードで メール設定に移動します。 メール確認を有効にする そしてパスワードリセット用のメールテンプレートを設定します。 playアプリで、次のように呼び出すことができます 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" "user\@example com"}' \\ https //parseapi back4app com/requestpasswordreset これにより、back4appがユーザーのメールにパスワードリセットの指示を送信します。 ステップ8 – クラウドジョブによるタスクのスケジューリング クラウドジョブ バックグラウンド作業(例:データのクリーンアップやレポートの生成)のために、 スタートタスク を必要とする場合、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); } }); スケジューリング クラウドコードを デプロイ します。 アプリ設定 > サーバー設定 > バックグラウンドジョブで、 ジョブを毎日、毎週、または必要に応じて実行するようにスケジュールします。 ステップ 9 – webhookの統合 データが変更されるたびに外部サービスに通知したい場合は、back4appで webhook を設定してください。 more > webhooksに移動します あなたのback4appダッシュボードで。 エンドポイントを持つwebhookを追加します (例:slackやstripe)。 「todoクラスに新しいレコード」などのトリガーを選択します。 cloud codeトリガーでwebhookを作成することもでき、サードパーティサービスに直接httpリクエストを送信できます。 ステップ 10 – back4app管理パネルの探索 この back4app admin app は、データとレコード管理のためのユーザーフレンドリーなインターフェースです。非技術的なユーザーでも、コードに深入りすることなくcrud操作を行うことができます。 管理アプリの有効化 次に進む アプリダッシュボード > その他 > 管理アプリ 有効にする そして管理ユーザーを作成します。 便利なアクセスのために サブドメインを選択します。 ログインすると、低レベルのダッシュボードやcliツールに手を出すことなくデータエントリを管理できます。 結論 おめでとうございます!あなたは play framework のバックエンドを構築する方法 を back4app のサービスを使用して学びました。このチュートリアルを通じて、あなたは back4app 上での play framework アプリのために 安全なバックエンド を作成しました。 データベースを 設定しました , スキーマ設計、リレーションシップ、リアルタイムクエリを含みます。 acl と clp を適用しました 安全なデータアクセスのために。 カスタムロジック、トリガー、外部統合のために cloud code を記述しました。 ユーザー認証を 設定しました , ソーシャルログイン、パスワードリセットを含みます。 ファイルアップロードを 処理しました そしてオプションのファイルセキュリティを追加しました。 cloud jobs を使用してバックグラウンドタスクをスケジュールしました。 webhooks を通じてサードパーティサービスと統合しました。 データ管理を効率化するために back4app 管理パネル を探求しました。 これらのツールを使えば、開発モードを最適化し、必要に応じてスケールし、play framework 上で堅牢なウェブアプリケーションを構築できます。 さらなる統合、パフォーマンスチューニング、そして高度なセキュリティ対策を取り入れて、サーバーバックエンドを次のレベルに引き上げましょう。 次のステップ 強化 キャッシング、ロギング、またはモニタリングツールを使用して、あなたの生産セットアップを。 高度なセキュリティを探求 ロールベースのアクセス制御やゼロトラスト設定を使用して。 決済ゲートウェイを統合 商取引や分析のために、または他のサードパーティapiを。 チェックアウト back4appの公式ドキュメントを参照して、パフォーマンスやトラブルシューティングについての深い洞察を得てください。 レビュー リアルタイムチャットアプリ、iotソリューション、または位置情報ベースのサービスに関するチュートリアルをさらに確認してください — これらの多くはこのガイドの技術に基づいています。