Quickstarters
Feature Overview
Objective-Cのためのバックエンドの構築方法は?
36 分
はじめに このチュートリアルでは、 objective cのバックエンドを構築する方法 をback4appを使用して学びます。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリなど、back4appの重要な機能を統合して、iosアプリとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成する方法を説明します。 すべてのデータ要件を処理するために、オープンソースのparse ios sdkを使用します。 back4appの柔軟な環境を活用することで、サーバー、ストレージ、セキュリティの設定にかかる時間と労力を削減する方法を見ていきます。 このチュートリアルでは、objective cのコードサンプルを示すので、通常のxcodeのワークフローに合わせてテキストを入力できます。最後には、プロダクション対応のモバイルアプリの構築ブロックが得られます。また、特定のユースケースに合わせてさらにカスタマイズすることもできます。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 objective c開発環境 最新のxcodeバージョンがインストールされていることを確認してください。 mac app storeからxcodeをダウンロード。 https //apps apple com/us/app/xcode/id497799835 cocoapodsまたはswift package managerの知識 (任意ですが推奨) swift package managerガイド。 https //github com/parse community/parse sdk ios osx objective c、iosアプリの基本、または関連する概念に精通していること appleのobjective cドキュメント。 https //developer apple com/library/archive/documentation/cocoa/conceptual/programmingwithobjectivec/introduction/introduction html スムーズに進めるために、始める前にこれらの前提条件をすべて満たしていることを確認してください。 ステップ 1 – back4app で新しいプロジェクトを作成し接続する なぜこのステップ? 新しい back4app プロジェクトは、バックエンドの基盤です。データを保存し、クラウド関数を実行し、セキュリティを管理する場所を提供します。back4app プロジェクトを立ち上げることから始めましょう。 back4app でプロジェクトを作成する back4app アカウントにログインする 。 「新しいアプリ」をクリックする back4app ダッシュボードで。 アプリに名前を付ける (例:「objectivec backend tutorial」)そして確定する。 back4app ダッシュボードで新しいアプリが表示されます。このアプリは、これから説明するすべてのバックエンド設定を処理します。 ios (objective c) 用の parse sdk をインストールする back4appはparse ios sdkと連携して動作します。このsdkは、iosアプリのデータ操作、リアルタイム機能、ユーザー認証などを簡素化します。 parseキーを取得する back4appダッシュボードで、「 アプリ設定 」または「 セキュリティとキー 」に移動して、 アプリケーションid と クライアントキー を見つけます。parseサーバーのurlは通常、「 https //parseapi back4app com 」です。 parseを統合する には、swift package managerまたはcocoapodsを使用します cocoapods pod 'parse' swift package manager xcodeを開き、「ファイル」>「パッケージを追加 」を選択します。 リポジトリを追加します https //github com/parse community/parse sdk ios osx iosターゲットでparseを確認します。 objective cでparseを初期化する 「 appdelegate m 」を開き、parseモジュールをインポートします @import parsecore; // or #import \<parse/parse h> \ (bool)application (uiapplication )application didfinishlaunchingwithoptions (nsdictionary )launchoptions { \[parse initializewithconfiguration \[parseclientconfiguration configurationwithblock ^(id\<parsemutableclientconfiguration> configuration) { configuration applicationid = @"your application id"; configuration clientkey = @"your client key"; configuration server = @"https //parseapi back4app com"; }]]; return yes; } これで、あなたのobjective cアプリはback4appバックエンドに安全に接続されました。これで、サーバー上のデータを読み書きし、管理する準備が整いました。 ステップ2 – データベースの設定 1\ データモデル(スキーマ)の作成 back4appでは、データはクラスに格納されます—データベースのテーブルのように。例えば、シンプルな「todo」クラスを作成したいとします。back4appダッシュボードの「 データベース 」セクションで手動で作成できます タイトル(文字列)、iscompleted(ブール値)などのフィールドを追加します。 2\ aiエージェントを使用したデータモデルの作成 back4appは、スキーマを生成するためのaiエージェントを提供しています。 aiエージェントを アプリダッシュボードで開きます。 データモデルを 自然言語で説明します(例:「タイトル、説明、期限を持つ新しいtodoクラスを作成します。」)。 aiにすべてを自動的に 設定させます。 3\ sdkを使用したデータの読み書き objective cを使用すると、pfobjectを使って作成およびクエリ操作を処理できます。例えば \#import \<parse/parse h> // create a new todo item pfobject todo = \[pfobject objectwithclassname @"todo"]; \[todo setobject @"buy groceries" forkey @"title"]; \[todo setobject @no forkey @"iscompleted"]; \[todo saveinbackgroundwithblock ^(bool succeeded, nserror error) { if (succeeded) { nslog(@"todo saved successfully!"); } else { nslog(@"error saving todo %@", error localizeddescription); } }]; // query all todos pfquery query = \[pfquery querywithclassname @"todo"]; \[query findobjectsinbackgroundwithblock ^(nsarray nullable objects, nserror nullable error) { if (!error) { for (pfobject item in objects) { nslog(@"todo %@", item\[@"title"]); } } }]; 4\ restを使用したデータの読み取りと書き込み sdkをスキップしたい場合 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 5\ graphqlを使用したデータの読み取りと書き込み back4appはgraphqlインターフェースも提供しています mutation { createtodo(input { fields { title "wash the car", iscompleted false } }) { todo { objectid title iscompleted } } } 6\ ライブクエリを使用する(オプション) iosアプリがリアルタイム更新を必要とする場合 ライブクエリを有効にする を サーバー設定 でback4appダッシュボードにて行います。 ライブクエリサーバーurlでparseを設定する \[parse initializewithconfiguration \[parseclientconfiguration configurationwithblock ^(id\<parsemutableclientconfiguration> configuration) { configuration applicationid = @"your app id"; configuration clientkey = @"your client key"; configuration server = @"https //parseapi back4app com"; configuration livequeryserverurl = @"wss\ //your subdomain b4a io"; }]]; 次に、objective cコードでライブ更新を購読します。これにより、uiが最新のデータを即座に表示します。 ステップ3 – aclとclpによるセキュリティの適用 アクセス制御リスト(acl)とクラスレベルの権限(clp) back4appは、細かいセキュリティのためにaclとclpを使用します。clpはクラス全体(テーブル)に適用され、aclは個々のオブジェクトに適用されます。 クラスレベルの権限の設定 「 データベース 」セクションの下で クラスを選択します(例:「todo」)。 「 クラスレベルの権限 」をクリックします。 クラスレベルで誰が読み取り、書き込み、またはクエリを実行できるかを制御します。 aclの設定 aclはオブジェクトレベルです。例えば pfacl acl = \[pfacl aclwithuser \[pfuser currentuser]]; \[acl setpublicreadaccess\ no]; \[acl setpublicwriteaccess\ no]; todo acl = acl; \[todo saveinbackground]; このスニペットは、現在のユーザーのみに読み取り/書き込みを制限します。 ステップ 4 – クラウドコード関数の作成 なぜクラウドコードなのか? クラウドコードはサーバーサイドのロジックに役立ちます—トリガー、バリデーション、またはバックグラウンドタスクの処理。クライアントからコードを隠すことで、セキュリティが向上します。 例の関数 parse cloud define("calculatetextlength", async (request) => { const { text } = request params; if (!text) { throw "no text provided"; } return { length text length }; }); この例は、クライアントが提供した文字列の長さを計算します。 デプロイメント 「 back4app cli https //www back4app com/docs/local development/parse cli 」または「 クラウドコード > 関数 」セクションをダッシュボードで使用して、あなたの main js をデプロイします。 objective cからクラウドコードを呼び出す \[pfcloud callfunctioninbackground @"calculatetextlength" withparameters @{@"text" @"hello back4app"} block ^(id nullable result, nserror nullable error) { if (!error) { nsnumber len = result\[@"length"]; nslog(@"text length %@", len); } }]; ステップ 5 – 認証の設定 parseユーザー back4appの pfuser クラスはサインアップ、ログイン、セキュリティを管理します。デフォルトでは、pfuserはパスワードのハッシュ化、セッション、およびユーザーフィールドを処理します。 サインアップ pfuser user = \[pfuser user]; user username = @"alice"; user password = @"secret123"; user email = @"alice\@example com"; \[user signupinbackgroundwithblock ^(bool succeeded, nserror nullable error) { if (succeeded) { nslog(@"user signed up successfully!"); } else { nslog(@"sign up error %@", error localizeddescription); } }]; ログイン \[pfuser loginwithusernameinbackground @"alice" password @"secret123" block ^(pfuser nullable user, nserror nullable error) { if (user) { nslog(@"user logged in %@", user username); } else { nslog(@"login error %@", error localizeddescription); } }]; ソーシャルログイン back4appは facebook , apple , google , などをサポートしています。これらのプラットフォームを統合し、ユーザーセッションを適切にリンクします。 ソーシャルログインのドキュメント https //www back4app com/docs/platform/sign in with apple を確認してください。 ステップ6 – ファイルストレージの取り扱い ファイルのアップロードと取得 画像、文書、またはその他のバイナリデータを pffileobject を使用して保存できます。 nsdata imagedata = uiimagepngrepresentation(\[uiimage imagenamed @"localimage"]); pffileobject parsefile = \[pffileobject fileobjectwithname @"image png" data\ imagedata]; pfobject photo = \[pfobject objectwithclassname @"photo"]; \[photo setobject\ parsefile forkey @"imagefile"]; \[photo saveinbackgroundwithblock ^(bool succeeded, nserror nullable error) { if (succeeded) { nslog(@"file uploaded successfully"); } }]; 取得するには pffileobject photofile = photo\[@"imagefile"]; \[photofile getdatainbackgroundwithblock ^(nsdata nullable data, nserror nullable error) { if (!error) { uiimage image = \[uiimage imagewithdata\ data]; // use the image in your ui } }]; ステップ 7 – メール確認とパスワードリセット なぜ重要なのか? メール確認はユーザーアカウントの有効性を確保するのに役立ちます。パスワードリセットは、ユーザーが認証情報を忘れた場合に安全なフローを提供します。 ダッシュボード設定 「 メール設定 」に移動します。 「 メール確認 」と「 パスワードリセット 」オプションを有効にします。 必要に応じてメールテンプレートをカスタマイズします。 実装 アプリで手動でパスワードリセットをトリガーしたい場合 \[pfuser requestpasswordresetforemailinbackground @"alice\@example com" block ^(bool succeeded, nserror nullable error) { if (succeeded) { nslog(@"reset email sent!"); } else { nslog(@"error %@", error localizeddescription); } }]; ステップ 8 – クラウドジョブによるタスクのスケジューリング クラウドジョブとは? クラウドジョブは、古いデータのクリーンアップ、日次レポートの生成、または一括通知の送信など、定期的なタスクを自動化します。 日次クリーンアップジョブの例 あなたの main js parse cloud job("cleanupoldtodos", async (request) => { const todo = parse object extend("todo"); const query = new parse query(todo); const cutoff = new date(date now() 30 24 60 60 1000); query lessthan("createdat", cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); 次に、 アプリ設定 > サーバー設定 > バックグラウンドジョブ 例えば、日次実行を選択できます。 ステップ 9 – ウェブフックの統合 概要 ウェブフックは、back4appがオブジェクトの作成などのイベントが発生したときに外部サービスにhttpリクエストを送信できるようにします。 設定 back4appダッシュボード > その他 > webhooks 新しい エンドポイント (url) を追加します。 どのイベントがウェブフックをトリガーするかを決定します (例 todoが保存された後)。 ステップ10 – back4app管理パネルの探索 概要 「 back4app管理パネル 」は、非技術的な利害関係者がコーディングなしでcrud操作を行うために使用できるシンプルでモデル中心のインターフェースです。 アクティベーション ダッシュボードで、「 more > admin app 」に移動し、有効にします。最初の管理ユーザーを作成した後、パネルにアクセスするためのカスタムサブドメインを設定できます。 このパネルは、データベースの生データに深入りすることなく、レコードの編集、ログの表示、役割の割り当てなどの日常的なタスクを簡素化できます。 結論 あなたは今、 objective cのバックエンドを構築する方法 をback4appを使用して見ました。このチュートリアルを通じて、あなたは 新しいback4appプロジェクトを作成しました。 parse ios sdk、rest、またはgraphqlを使用してデータベースを設定し、読み取りました。 live queriesを使用してリアルタイム更新を有効にしました。 aclとclpを使用してセキュリティを適用しました。 サーバーサイドロジックのためにcloud codeをデプロイしました。 ユーザー認証、ファイルストレージ、メール確認、パスワードリセットを処理しました。 スケジュールされたタスクとwebhookを設定しました。 簡単なデータ管理のためにadmin panelを探索しました。 この基盤により、フロントエンドの体験に集中しながらiosアプリをスケールさせることができます。objective cとback4appの相乗効果は、開発を加速させ、時間と労力を節約する実証済みの方法です。 次のステップ バックエンドを強化する ために、高度なカスタムロジック、プッシュ通知、または分析を追加します。 外部サービスを統合する か、ソーシャルログイン、請求、またはメッセージングのためのオープンソースライブラリを使用します。 最適化のヒント、ベストプラクティス、詳細なチュートリアルのために公式のback4appドキュメントを確認してください。 これらのパターンを使用して、チャットアプリ、ゲームのリーダーボード、または位置情報サービスのような実世界の例を構築します。 このガイドが有益であったことを願っています!back4appとparse ios sdkを活用することで、重いサーバー管理なしで堅牢で安全なシステムを開発でき、最高のモバイル体験の構築に集中できます。