Quickstarters
Feature Overview
How to Build a Backend for iOS?
38 分
はじめに このチュートリアルでは、 iosのバックエンドを構築する方法 を学びます。 back4app https //www back4app com 。 データベース管理、クラウド機能、restおよびgraphql api、ユーザー認証、ファイルストレージ、リアルタイムクエリ(ライブクエリ)など、back4appの重要な機能を統合する方法を説明し、iosアプリケーションのための安全でスケーラブルで堅牢なバックエンドを作成します。 back4appの バックエンドサービス は、 サーバーサイド インフラストラクチャの設定の複雑さを軽減し、開発を加速するのに役立ちます。 柔軟なnosqlデータベーススタイルの形式でデータを保存し、ユーザーアカウントを管理し、 プッシュ通知 を追加し、カスタムソリューションを構築するのにかかる時間の一部で高度なアクセス制御を適用できます。 これにより、サーバーのメンテナンスやプロビジョニングを心配することなく、 ユーザーエクスペリエンス の向上やコア機能の実装に集中できます。 このチュートリアルの終わりまでには、実際のシナリオに適応でき、トラフィックの増加に対応でき、より複雑なロジックや サードパーティサービス を追加できる準備が整ったバックエンドを持つことができます。 iosアプリのための信頼性の高いバックエンドを提供し、 開発プロセス を加速し、全体的な ユーザーインターフェース をより少ない労力で向上させることができます。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 基本的なios開発環境 xcode(バージョン13 0以上)で開発できます。 xcodeをインストールします。 https //developer apple com/xcode/ swift package manager またはcocoapodsを使用してparse swiftを追加します インストールの詳細については、 parse swift githubの指示 https //github com/netreconlab/parse swift を参照してください。 swiftとiosの概念に関する知識 appleのswiftドキュメント。 https //docs swift org/swift book/ swiftやiosに不慣れな場合は、開始する前に公式ドキュメントや基本的なiosチュートリアルを確認してください。 xcodeを使用した機能的なios環境と無料のback4appアカウントを持っていると、スムーズに進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し接続する 新しいプロジェクトを作成する理由は? 新しいback4appプロジェクトは、あなたの バックエンド開発 の基盤を形成します。データベース、api、認証、クラウド機能など、迅速かつ安全に バックエンドを構築する ために必要なすべてのツールを提供します。 手順 back4appアカウントに ログインします。 「新しいアプリ」をクリックして 新しいアプリを作成します。 アプリに名前を付けます (例:「ios backend demo」)。 作成されると、新しいプロジェクトがback4appダッシュボードに表示されます。 parse swift sdkのインストールとキーの設定 back4appは、内部でparseプラットフォームに依存しています。iosの場合、parse swift sdkを使用します 1\ parseキーを取得する back4appダッシュボードで、「アプリ設定」または「セキュリティとキー」に移動して、次を見つけます アプリケーションid クライアントキー (該当する場合はswiftキー) サーバーurl (通常は https //parseapi back4app com ) 2\ parse swift sdkを追加する 「 swift package manager 」を使用している場合 // in package swift or xcode's swift packages package( url "https //github com/netreconlab/parse swift git", from "5 0 0" ) もしあなたが cocoapods を使用している場合は、あなたの podfile に追加してください pod 'parseswiftog' 次に実行します pod install 3\ parseを初期化する あなたの appdelegate swift (またはメインのswiftuiアプリファイル) の中で、 parseswift initialize( ) をあなたの資格情報で呼び出します import swiftui import parseswift @main struct myapp app { init() { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", // optional serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\\\(error)") } } var body some scene { windowgroup { contentview() } } } おめでとうございます!あなたのiosアプリはback4appに接続され、すべてのリクエストやデータトランザクションはparse swiftを通じて自動的に行われます。 ステップ2 – データベースの設定 1\ データモデルの作成 back4appは、各クラス/テーブルをダッシュボードから管理できる schema アプローチを使用しています。例えば、 todo クラスを作成したいとします 「データベース」に移動 し、back4appコンソールで。 「新しいクラスを作成」をクリック し、名前を todo にして、 title (string)や iscompleted (boolean)などのカラムを追加します。 2\ aiエージェントを使ったデータモデルの作成 back4appのaiエージェントは、スキーマ設計を加速できます ダッシュボードでaiエージェントを開く 。 データモデルを 平易な言葉で説明します(例:「タイトルとiscompletedフィールドを持つ新しいtodoクラスを作成」)。 aiに スキーマを自動的に構築させます。 3\ swift sdkを使用したデータの読み書き 「 parse swift 」を使用して、コード内でデータ構造を定義します。例えば import parseswift struct todo parseobject { // parseobject protocol var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } // saving func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { let saved = try await todo save() print("saved objectid \\\\(saved objectid ?? "")") } catch { print("error saving \\\\(error)") } } // querying func fetchtodos() async { do { let todos = try await todo query() find() print("fetched \\\\(todos count) todos") } catch { print("error fetching \\\\(error)") } } 4\ rest apiを使用したデータの読み書き また、rest呼び出しを使用することもできます。例えば、todoを作成するには 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 '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 5\ graphql apiを使用したデータの読み取りと書き込み back4appはgraphqlサポートも含まれています。こちらがミューテーションの例です mutation { createtodo(input { fields { title "clean house" iscompleted false } }) { todo { objectid title iscompleted } } } 6\ ライブクエリの操作(オプション) back4appは リアルタイム の更新をライブクエリを通じてサポートしています。swiftの場合 let subscription = try? todo query("iscompleted" == false) subscribe() subscription? handleevent({ event in switch event { case created(let newtodo) print("new todo created \\\\(newtodo)") case updated(let updatedtodo) print("todo updated \\\\(updatedtodo)") default break } }) ステップ3 – aclとclpを使用したセキュリティの適用 1\ 概要 アクセス制御リスト https //www back4app com/docs/security/parse security (acl)はオブジェクトごとの権限を制御し、 クラスレベルの権限 (clp)はクラス全体のデフォルトを設定します。 2\ 手順 クラスレベルの権限 back4appダッシュボードでクラス(例 todo )を開き、「セキュリティ」タブをクリックします。読み取り/書き込みを認証されたユーザーまたはロールのみに制限できます。 コード内のacl parseobjectを保存する際に、aclを割り当てることができます これらを調整して、データが正しいユーザーによってのみアクセスされるようにします。 ステップ4 – クラウドコード関数の作成 1\ なぜクラウドコード? クラウドコード は、iosアプリにサーバーサイドのロジックを追加するための最良の友です。機密性の高いロジックや検証をクライアントから遠ざけ、外部apiを統合し、サーバー上でバックグラウンドタスクを実行できます。 2\ 例の関数 ローカル(またはオンラインエディタ)で main js ファイルを作成し、次の関数を定義します parse cloud define("calculatetextlength", async (request) => { const { text } = request params; if (!text) { throw "no text provided"; } return { length text length }; }); 3\ デプロイメント 次のいずれかを使用します back4app cli https //www back4app com/docs/local development/parse cli またはダッシュボード内の cloud code > functions エディタ。 cliをインストールします アカウントキーを設定します デプロイします 4\ iosからのcloud codeの呼び出し task { do { if let result = try await parsecloud callfunction("calculatetextlength", with \["text" "hello back4app"]) as? \[string int] { print("text length \\\\(result\["length"] ?? 0)") } } catch { print("cloud code error \\\\(error)") } } 5\ npmモジュールの使用 あなたの package json (cloud code内)で、依存関係をリストします。次に main js const axios = require('axios'); parse cloud define("fetchposts", async () => { // use axios here }); ステップ5 – 認証の設定 1\ ユーザー認証を有効にする あなたのback4appダッシュボードでは、 user クラスがすでに提供されています。メール確認、パスワードリセットなどを設定できます。 2\ iosコードサンプル サインアップ ログイン 3\ ソーシャルログイン parse swiftでソーシャルログイン(google、apple、facebook)を統合できます。詳細な手順については、 ソーシャルログインドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。 ステップ6 – ファイルストレージの取り扱い 1\ ファイルストレージの設定 parseを通じて画像やドキュメントなどのファイルをアップロードおよび取得します。swiftの場合 struct gamescore parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var score int? var picture parsefile? } func uploadimagedata( data data) async { var file = parsefile(name "photo jpg", data data) do { file = try await file save() print("file url \\\\(file url ?? "")") } catch { print("error uploading file \\\\(error)") } } 2\ ファイルの取得 func fetchimage(file parsefile) async { do { let fetched = try await file fetch() print("fetched localurl \\\\(fetched localurl? absolutestring ?? "")") } catch { print("error fetching file \\\\(error)") } } 3\ セキュリティの考慮事項 back4appの設定やアプリの parse config ファイルでファイルの権限を設定できます。たとえば、誰がファイルをアップロードまたは削除できるかを制限します。 ステップ7 – メール確認とパスワードリセット 1\ なぜ確認が必要なのか? メール確認は、ユーザーが提供したメールアドレスを所有していることを保証します。パスワードリセットのフローは、ユーザーが安全にアカウントを回復できるようにします。 2\ back4appでの設定 に行く アプリ設定 > ユーザーメール設定 メール認証を有効にする を設定する 送信元メール , メールテンプレート、およびオプションのカスタムドメイン。 3\ 実装 task { do { try await user requestpasswordreset(email "johnny\@example com") print("password reset email sent") } catch { print("error resetting password \\\\(error)") } } ステップ 8 – クラウドジョブによるタスクのスケジューリング 1\ 概要 を使用して クラウドジョブ を使用して、古いレコードの削除や毎日の通知の送信などのタスクを自動化します。これらは サーバーサイド で実行され、クライアントによって直接トリガーされることはありません。 2\ 例 parse cloud job("cleanupoldtodos", async (request) => { const todo = parse object extend("todo"); const query = new parse query(todo); // older than 30 days 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 `; }); このジョブをback4appダッシュボードの サーバー設定 > バックグラウンドジョブ にスケジュールして定期的に実行します。 ステップ9 – ウェブフックの統合 1\ 定義 ウェブフック は、特定のイベントが発生したときにアプリが外部サービスにデータを送信できるようにします。例えば、 todo が作成されたときにslackチャンネルに通知します。 2\ 設定 ダッシュボード もっと見る > ウェブフックに移動し、「ウェブフックを追加」を選択します。 エンドポイントを設定 例 https //my server com/webhook endpoint イベントトリガー 例 “クラス todo の新しいレコード。” 3\ コード例 parse cloud aftersave("todo", async (request) => { const { object } = request; // make an http post to an external url // containing the new todo details }); ステップ10 – back4app管理パネルの探索 1\ どこで見つけるか あなたの 管理パネル は、back4appダッシュボードの「その他」>「管理アプリ」からアクセスできます。管理ユーザーを作成し、簡単にアクセスできるサブドメインを選択してください。 2\ 機能 データブラウジング ユーザーフレンドリーな形式でクラスを表示および編集します。 ログ サーバーログとcloud codeログを確認します。 分析 使用状況、プッシュ通知などを監視します。 結論 このチュートリアルでは、 iosのバックエンドを構築する方法 を学びました。 スケーラブルなデータベースを統合し、aclとclpを使用してセキュリティを実装し、cloud code関数を作成し、ユーザー認証を設定し、ファイルストレージを管理し、さらにはバックグラウンドタスクをスケジュールしました。 これらの基本的な機能が整ったことで、 iosモバイルアプリケーション の信頼性の高いバックエンドを提供し、 ユーザーエクスペリエンス やユニークな機能に集中することができます。 次のステップ 高度な役割 やマルチレベルのセキュリティのためのカスタムアクセスコントロールを探求してください。 プッシュ通知、ジオクエリ、または外部データソースのような 高度な機能 を統合してください。 パフォーマンスのヒント、ログ分析、またはリアルタイム分析のために back4appの公式ドキュメント を確認してください。 チャットアプリケーション、iot統合、またはeコマース拡張に関する 追加のチュートリアル を試してみてください。 back4appを活用することで、 オープンソース に基づくプラットフォームを手に入れ、複雑さを軽減し、 データを簡単に保存し、 iosアプリに リアルタイム 機能を組み込むことができます。これらのステップを実装することで、デザイン、ユーザーフロー、またはビジネスロジックに取り組む時間が生まれ、あっという間に iosアプリのための堅牢なバックエンド を作成できます。