Quickstarters
Feature Overview
How to Build a Backend for Android?
42 分
はじめに このチュートリアルでは、back4appを使用して、完全なバックエンドを構築する方法を学びます。 android (java) アプリケーションのために。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリ(live queries)など、back4appの重要な機能を統合する方法を説明し、androidクライアントとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成します。 back4appの迅速なセットアップと直感的な環境が、サーバーやデータベースを手動で構成するのに比べて、時間と労力を大幅に削減できることも確認できます。 その過程で、cloud jobsを使用したタスクのスケジューリングや、外部統合のためのwebhookの設定など、主要な機能に関する実践的な経験を得ることができます。 このチュートリアルの終わりまでには、この基盤となるセットアップを本番環境に適したアプリケーションに拡張する準備が整い、必要に応じてカスタムロジックやサードパーティapiを簡単に組み込むことができるようになります。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 基本的なandroid (java) 開発環境 これを使用して設定できます。 android studio https //developer android com/studio または同様のツール。最新のandroid sdkがインストールされていることを確認してください。 java (バージョン8以上) androidプロジェクトをコンパイルして実行するためにjavaが必要です。 javaと基本的なandroidの概念に関する知識 android開発者ドキュメント https //developer android com/docs androidに不慣れな場合は、公式ドキュメントや初心者向けのチュートリアルを確認してから始めてください。 始める前に、これらの前提条件がすべて整っていることを確認してください。back4appプロジェクトを設定し、ローカルのandroid環境を準備しておくことで、より簡単に進めることができます。 ステップ1 – back4appプロジェクトの設定 新しいプロジェクトを作成する back4appでandroidバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください back4appアカウントにログインする 「新しいアプリ」ボタンをクリックする back4appダッシュボードで。 アプリに名前を付ける (例:「android backend tutorial」)。 プロジェクトが作成されると、back4appダッシュボードにリスト表示されます。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。 parse sdkを接続する back4appは、データを管理し、リアルタイム機能を提供し、ユーザー認証を処理するためにparseプラットフォームに依存しています。androidアプリケーションをback4appに接続するには、parse android sdkをインストールし、back4appダッシュボードの資格情報で初期化する必要があります。 parseキーを取得する back4appダッシュボードで、アプリの「アプリ設定」または「セキュリティとキー」セクションに移動して、 アプリケーションid と クライアントキー (または javascriptキー が示されている場合)。また、 parseサーバーurl (通常は https //parseapi back4app com )を見つけることができます。 parse sdkをインストールする あなたのandroidプロジェクトにこれらの行を追加することで module level build gradle dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } jitpackリポジトリが必要な場合は、あなたの root build gradle allprojects { repositories { maven { url "https //jitpack io" } } } あなたのandroidアプリケーションでparseを初期化する カスタム application クラスを作成する(例: app java ) そして androidmanifest xml を設定する package com example app; import android app application; import com parse parse; public class app extends application { @override public void oncreate() { super oncreate(); parse initialize(new parse configuration builder(this) applicationid("your app id") // from back4app clientkey("your client key") // from back4app server("https //parseapi back4app com/") build() ); } } 次に、このカスタム application クラスをあなたの androidmanifest xml \<?xml version="1 0" encoding="utf 8"?> \<manifest > \<application android\ name=" app" > \</application> \</manifest> このステップを完了することで、あなたのandroidフロントエンドとback4appバックエンドの間に安全な接続が確立されました。すべてのリクエストとデータトランザクションはこのsdkを通じて安全にルーティングされ、手動のrestまたはgraphql呼び出しの複雑さが軽減されます(必要に応じてそれらを使用することもできます)。 ステップ2 – データベースの設定 データの保存とクエリ back4appプロジェクトが設定され、parse sdkがandroidアプリに統合されたので、データの保存と取得を開始できます。レコードを作成して保存する一般的な方法は、 parseobject クラスを使用することです parseobject gamescore = new parseobject("gamescore"); gamescore put("score", 1337); gamescore put("playername", "sean plott"); gamescore put("cheatmode", false); gamescore saveinbackground(e > { if (e == null) { // success! } else { // failed } }); データをクエリするには parsequery\<parseobject> query = parsequery getquery("gamescore"); query whereequalto("playername", "sean plott"); query findinbackground((objects, e) > { if (e == null) { // objects now contains the results } else { // something went wrong } }); また、back4appの rest api エンドポイントを使用することもできます 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 '{"score" 1337, "playername" "sean plott", "cheatmode" false}' \\ https //parseapi back4app com/classes/gamescore back4appはまた、 graphqlインターフェース を提供しています mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } これらの多様なオプションにより、parse android sdk、rest、またはgraphqlを通じて、開発プロセスに最適な方法でデータ操作を統合できます。 スキーマ設計とデータ型 デフォルトでは、parseは スキーマを動的に作成することを許可します , ただし、より多くの制御のためにback4appダッシュボードでクラスとデータ型を定義することもできます。 back4appダッシュボードの「データベース」セクションに移動します 。 新しいクラスを作成します (例:「gamescore」)および関連するカラムを追加します。 back4appはさまざまなデータ型もサポートしています 文字列 , 数値 , ブール値 , オブジェクト , 日付 , ファイル , ポインタ、配列、関係 , ジオポイント , およびポリゴン 各フィールドに適切な型を選択できます。 back4appは、データモデルの設計を支援する aiエージェント を提供しています。 アプリダッシュボードまたはメニューからaiエージェントを開きます 。 データモデルを簡単な言葉で説明します (例:「新しいtodoアプリを完全なクラススキーマで作成してください。」)。 aiエージェントにスキーマを作成させます 。 リレーショナルデータ リレーショナルデータがある場合—例えば、複数の category オブジェクトを指す gamescore オブジェクト—を使用することができます。parseでは、 pointers または relations を使用できます。例えば // linking a gamescore to a category with a pointer public void creategamescoreforcategory(string categoryobjectid, int scorevalue) { parseobject gamescore = new parseobject("gamescore"); // construct a pointer to the category parseobject categorypointer = parseobject createwithoutdata("category", categoryobjectid); // set fields gamescore put("score", scorevalue); gamescore put("category", categorypointer); gamescore saveinbackground(e > { if (e == null) { // success } else { // error } }); } クエリを実行する際には、ポインターデータを含めることができます parsequery\<parseobject> query = parsequery getquery("gamescore"); query include("category"); query findinbackground((scores, e) > { if (e == null) { // scores now has category details } }); ライブクエリ リアルタイムの更新のために、back4appは live queries を提供しています。androidアプリから特定のクラスの変更にサブスクライブできます ライブクエリを有効にする には、back4appダッシュボードのアプリの サーバー設定 の下で行います。 コード内でライブクエリを初期化する 必要があります。 androidでは、通常、 parse livequery androidライブラリ https //github com/parse community/parselivequery android を使用してサブスクライブします。手順は他のプラットフォームと似ていますが、 livequeryclient を統合します。 dependencies { implementation "com github parse community\ parselivequery android\ latest version here" } 次に livequeryclient livequeryclient = new livequeryclient builder("wss\ //your subdomain here b4a io", 443) build(); parsequery\<parseobject> query = parsequery getquery("gamescore"); subscriptionhandling\<parseobject> subscriptionhandling = livequeryclient subscribe(query); subscriptionhandling handleevents((query1, event, gamescore) > { switch (event) { case create // a new gamescore object was created break; case update // existing gamescore updated break; case delete // existing gamescore deleted break; default break; } }); 購読することで、新しいレコードが作成、更新、または削除されるたびにリアルタイム通知を受け取ります。この機能は、複数のユーザーがページを更新せずに最新のデータを確認する必要があるコラボレーション型または動的なアプリに特に価値があります。 ステップ 3 – acl と clp を使用したセキュリティの適用 back4app セキュリティメカニズム back4app は、 アクセス制御リスト (acl) と クラスレベルの権限 (clp) を提供することで、セキュリティを真剣に考えています。これらの機能により、オブジェクトまたはクラスごとにデータの読み取りや書き込みを制限でき、認可されたユーザーのみがデータを変更できるようにします。 アクセス制御リスト (acl) acl は個々のオブジェクトに適用され、どのユーザー、役割、または一般の人々が読み書き操作を行うことができるかを決定します。例えば public void createprivatescore(int scorevalue, parseuser owneruser) { parseobject gamescore = new parseobject("gamescore"); gamescore put("score", scorevalue); parseacl acl = new parseacl(owneruser); acl setpublicreadaccess(false); acl setpublicwriteaccess(false); gamescore setacl(acl); gamescore saveinbackground(e > { if (e == null) { // success } else { // failed } }); } クラスレベルの権限 (clp) clp は、クラス全体のデフォルトの権限を管理します。たとえば、クラスが公開されて読み取り可能または書き込み可能か、または特定の役割のみがアクセスできるかどうかです。 back4appダッシュボードに移動 , アプリを選択し、 データベース セクションを開きます。 クラスを選択 (例: “gamescore”)。 クラスレベルの権限 タブを開きます。 デフォルトを設定します。 これらの権限はベースラインを設定し、aclは個々のオブジェクトの権限を微調整します。堅牢なセキュリティモデルは通常、clp(広範な制限)とacl(オブジェクトごとの細かい制限)を組み合わせます。詳細については、 アプリセキュリティガイドライン https //www back4app com/docs/security/parse security をご覧ください。 ステップ4 – クラウドコード関数の作成とデプロイ なぜcloud codeなのか cloud codeは、サーバー側でカスタムjavascriptコードを実行できるparse server環境の機能です。サーバーやインフラを管理する必要はありません。cloud codeを書くことで、back4appのバックエンドを追加のビジネスロジック、バリデーション、トリガー、そしてparse server上で安全かつ効率的に実行される統合で拡張できます。 例の関数 クライアントから送信されたテキスト文字列の長さを計算するシンプルなcloud code関数 main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); デプロイ back4app cli ダッシュボード アプリのダッシュボードに移動し、 cloud code > functions コードを main js にコピー/ペーストし、 deploy をクリックします。 関数の呼び出し parse sdkを使用してandroid(java)から hashmap\<string, object> params = new hashmap<>(); params put("text", "hello back4app"); parsecloud callfunctioninbackground("calculatetextlength", params, (result, e) > { if (e == null) { // result is a hashmap; get the length map\<?, ?> mapresult = (map\<?, ?>) result; object lengthval = mapresult get("length"); // cast to number, etc } else { // handle error } }); また、次のように呼び出すこともできます rest または graphql この柔軟性により、androidフロントエンドやrestまたはgraphqlをサポートする他のクライアントにカスタムロジックを統合できます。 ステップ5 – ユーザー認証の設定 back4appにおけるユーザー認証 back4appは、 parse user クラスを認証の基盤として活用しています。デフォルトでは、parseはパスワードのハッシュ化、セッショントークン、セキュアストレージを処理します。これは、複雑なセキュリティフローを手動で設定する必要がないことを意味します。 ユーザー認証の設定 javaを使用したandroidアプリケーションで、新しいユーザーを作成できます parseuser user = new parseuser(); user setusername("myusername"); user setpassword("mypassword"); user setemail("email\@example com"); user signupinbackground(e > { if (e == null) { // sign up success } else { // sign up failed } }); 既存のユーザーにログインします parseuser logininbackground("myusername", "mypassword", (parseuser, e) > { if (e == null) { // logged in successfully } else { // login failed } }); restを介したログインは次のようになります 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 セッション管理 成功したログインの後、parseはユーザーオブジェクトに保存された セッショントークン を作成します。現在ログインしているユーザーを確認できます parseuser currentuser = parseuser getcurrentuser(); if (currentuser != null) { // user is logged in } else { // no user is logged in } ログアウトすることができます parseuser logout(); ソーシャルログイン統合 back4appとparseは、 google や facebook などの人気のあるoauthプロバイダーと統合できます。例えば、 facebook ログインを設定するには、 facebook app id を構成し、android用の専用parse facebookutilsを使用します。詳細な手順は異なるため、 ソーシャルログインのドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。 メール認証とパスワードリセット メール認証とパスワードリセットを有効にするには back4appダッシュボードの メール設定 に移動します。 メール認証を有効にする 。 送信元アドレス とメールテンプレートを構成します。 これにより、ユーザーのメールが有効であることが確認され、安全なパスワード回復方法が提供されます。 ステップ6 – ファイルストレージの取り扱い ファイルのアップロードと取得 parseには、ファイルアップロードを処理するための parsefile クラスが含まれており、back4appが安全に保存します file file = new file("/path/to/image jpg"); byte\[] data = // read file as bytes parsefile parsefile = new parsefile("image jpg", data); parsefile saveinbackground(e > { if (e == null) { // file saved } else { // error } }); オブジェクトにファイルを添付します parseobject photo = new parseobject("photo"); photo put("imagefile", parsefile); photo saveinbackground(); ファイルのurlを取得します parsefile imagefile = photo getparsefile("imagefile"); string url = imagefile geturl(); ファイルのセキュリティ parse serverは、匿名ユーザーまたは認証されたユーザーがファイルをアップロードできるかどうかを制御するなど、ファイルアップロードのセキュリティを管理するための柔軟な設定を提供します。より高度な設定については、ドキュメントを確認してください。 ステップ7 – メール確認とパスワードリセット 概要 メールを確認することで、新しいユーザーがサインアップに使用したメールアドレスを所有していることを確認します。パスワードリセットにより、ユーザーは安全にアカウントを回復できます。 back4appダッシュボードの設定 メール確認を有効にする アプリのダッシュボードで、 メール設定 に移動します。 パスワードリセットを有効にする パスワードリセットのメールフローを設定します。 コード/実装 javaでのパスワードリセットのトリガー parseuser requestpasswordresetinbackground("email\@example com", e > { if (e == null) { // email sent } else { // something went wrong } }); ステップ8 – クラウドジョブによるタスクのスケジューリング クラウドジョブ back4appの クラウドジョブ を使用して、古いデータのクリーンアップや毎日のメール送信などの定期的なタスクをスケジュールします。例 parse cloud job('cleanupoldscores', async (request) => { const gamescore = parse object extend('gamescore'); const query = new parse query(gamescore); // e g , remove scores older than 30 days // }); それを back4appダッシュボード > アプリ設定 > サーバー設定 > バックグラウンドジョブ でスケジュールします。 ステップ9 – ウェブフックの統合 ウェブフック は、特定のイベントが発生したときに、back4appアプリが外部サービスにhttpリクエストを送信できるようにします。例えば、stripeのようなサードパーティサービスにデータを送信することができます。 ウェブフックに移動 し、back4appダッシュボード > その他 > webhooksを選択します。 外部エンドポイントで ウェブフックを追加します。 関連イベントのために トリガーを設定します。 ステップ10 – back4app管理パネルの探索 「 back4app管理アプリ 」は、非技術的ユーザー向けに設計されたウェブベースの管理インターフェースです。コードを書くことなく、迅速なcrud操作と日常的なデータ管理を可能にします。 管理アプリの有効化 「 アプリダッシュボード 」に移動し、 その他 > 管理アプリ を選択し、「 管理アプリを有効化 」をクリックします。 最初の管理者ユーザーを作成 し、サブドメインを設定すると、データ管理用のweb uiが利用可能になります。 結論 この包括的なチュートリアルに従うことで、あなたは 安全なバックエンドを作成 しました(android(java)アプリ用のback4app上)。 データベースを構成 しました。クラススキーマ、データ型、関係を含みます。 リアルタイムクエリを統合 しました(ライブクエリ)で即時データ更新を実現しました。 セキュリティ対策を適用 しました。aclとclpを使用してデータアクセスを保護および管理します。 クラウドコードを実装 しました。サーバー側でカスタムビジネスロジックを実行します。 ユーザー認証を設定 しました。メール確認とパスワードリセットをサポートします。 ファイルのアップロードを管理 しました。オプションのファイルセキュリティコントロールを含みます。 クラウドジョブをスケジュール しました。自動化されたバックグラウンドタスクのために。 webhookを使用 して外部サービスと統合しました。 back4app管理パネルを探索 しました。データ管理のために。 堅牢なandroidフロントエンド(java)と強力なback4appバックエンドを備え、機能豊富でスケーラブルかつ安全なアプリケーションを開発する準備が整いました。より高度な機能を探求し、ビジネスロジックを統合し、back4appの力を活用して、サーバーとデータベースの管理にかかる無数の時間を節約してください。コーディングを楽しんで! 次のステップ 本番環境向けのandroidアプリを構築する このバックエンドを拡張して、より複雑なデータモデル、キャッシング戦略、パフォーマンス最適化を処理します。 高度な機能を統合する 専門的な認証フロー、役割ベースのアクセス制御、または外部api(決済ゲートウェイなど)など。 back4appの公式ドキュメントをチェックする 高度なセキュリティ、パフォーマンス調整、ログ分析についての詳細を深く掘り下げるために。 他のチュートリアルを探る リアルタイムチャットアプリケーション、iotダッシュボード、または位置情報サービスに関するもの。ここで学んだ技術をサードパーティのapiと組み合わせて、複雑な実世界のアプリケーションを作成できます。