Quickstarters
Feature Overview
Swiftのバックエンドを構築する方法は?
39 分
はじめに このチュートリアルでは、back4appを使用してswiftアプリケーションの完全なバックエンドを構築する方法を学びます。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、back4appの重要な機能を統合する方法を説明し、swiftベースのクライアントアプリとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成します。 back4appの迅速なセットアップと直感的な環境を活用することで、サーバーやデータベースを手動で構成するのに比べて、必要な時間と労力を大幅に削減できます。 その過程で、重要な機能、包括的なセキュリティ機能、cloud jobsを使用したタスクのスケジューリング、外部統合のためのwebhookの設定など、実践的な経験を得ることができます。 このチュートリアルの終わりまでに、基盤となるバックエンドサービスを本番環境に適したアプリケーションに強化する準備が整い、必要に応じてカスタムロジックやサードパーティapiを簡単に組み込むことができるようになります。 baasプラットフォームを使用することで、バックエンド開発がより効率的な体験に変わる様子を見ていきます。特に迅速なバックエンドやその他のバックエンドアプリを作成する際に役立ちます。それでは始めましょう! 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントをお持ちでない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 swift開発環境 xcode をideとして使用して、swiftを使用してiosまたはmacosアプリケーションを作成できます。お使いのマシンに最新の安定版xcodeがインストールされていることを確認してください。 swiftプログラミング言語の理解 swiftが初めての場合は、公式の swiftドキュメント https //swift org/documentation/ または初心者向けのチュートリアルを確認してから始めてください。 parse swift sdk cocoapodsを使用している場合は、 pod 'parseswiftog' をpodfileに追加してください。swift package managerを使用している場合は、 package(url "https //github com/netreconlab/parse swift git", from "5 0 0") を依存関係に追加してください。詳細は parse swiftドキュメント https //docs parseplatform org/parse swift/guide/ をお読みください。 始める前に、これらの前提条件がすべて整っていることを確認してください。back4appプロジェクトを設定し、ローカルのswift環境を準備することで、より簡単に進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する back4appでswiftバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。swiftは、parse swift sdkを使用することで、新しいバックエンドにシームレスに接続できます。方法を見てみましょう。 新しいプロジェクトを作成する back4appアカウントにログインする 。 ダッシュボードの「新しいアプリ」ボタンをクリックする 。 アプリに名前を付ける (例:「swift backend tutorial」)。 作成後、ダッシュボードに新しいアプリが表示されます。ここで、データベース、クラウド関数、およびバックエンドアプリの他の重要な設定を構成します。 parse swift sdkを接続する back4appはparseプラットフォームによって支えられており、データベース、リアルタイム更新、認証などの基盤を提供します。あなたのswiftアプリケーションは、parse swift sdkをインストールして初期化することでback4appに接続できます。 parseキーを取得する あなたのback4appダッシュボードで、アプリの「アプリ設定」または「セキュリティとキー」に移動して、あなたの アプリケーションid と クライアントキー を見つけてください。あなたの parseサーバーurl も見ることができます(通常は https //parseapi back4app com )。 parse swift sdkをインストールする swiftパッケージマネージャー (推奨): dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] cocoapods pod 'parseswiftog' アプリでparseを初期化する これをswiftプロジェクトのメインエントリーポイント(例: appdelegate swift またはswiftuiの @main 構造体)で行うことができます。例えば import swiftui import parseswift @main struct myapp app { init() { // replace placeholders with your back4app credentials parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } var body some scene { windowgroup { contentview() } } } この設定により、あなたのswiftクライアントはback4appに安全なリクエストを送信できるようになります。手動のrestやgraphql呼び出しを必要とせずにデータ操作を簡素化する堅牢な接続を確立しました(ただし、必要に応じてそれらを使用することもできます)。 ステップ2 – データベースの設定 このステップでは、back4appでバックエンドデータベースを構成し、swiftコードからデータを管理する方法を確認します。back4appはparseデータモデルを使用しており、クラスのような構造にオブジェクトを保存できます。swiftはparse swift sdkを通じてこれらのクラスと簡単に対話できます。 データモデルの作成 back4appダッシュボードの「データベース」セクションに移動します 。 新しいクラスを作成します (例:「todo」)。 必要なデータのためのカラムを追加します 、「title」(string)や「iscompleted」(boolean)など。 オブジェクトを初めて保存する際に、parse swift sdkにこれらのカラムを自動的に作成させることもできます。どちらにしても、スキーマは保存するデータと一致している必要があり、アプリがシームレスにそれを処理できるようにする必要があります。 aiエージェントを使用したデータモデルの作成 back4appは、データモデルの設計を手助けするaiエージェントを提供しています。 アプリのダッシュボードまたはメニューから aiエージェントを開きます。 自然言語でデータモデルを説明します。 例えば:「新しいswiftプロジェクトをtodoクラススキーマで作成してください。」 aiエージェントにスキーマを自動的に作成させます。 データの読み書き:parse swift sdk parse swift sdkを使用して、データを表すために parseobject に準拠した構造体を作成できます。例えば、 todo クラスがある場合: import parseswift struct todo parseobject { // parseobject protocol properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } todoオブジェクトを作成して保存します var newtodo = todo() newtodo title = "buy groceries" newtodo iscompleted = false task { do { let saved = try await newtodo save() print("saved ", saved) } catch { print("error saving todo ", error) } } すべてのtodoアイテムをクエリする task { do { let todos = try await todo query() find() print("todos ", todos) } catch { print("error fetching ", error) } } データの読み書き rest api 標準のhttpリクエストを好む場合は、rest apiを使用できます。たとえば、新しいtodoを作成するには 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" "walk the dog", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo データの読み書き graphql api graphqlもサポートされています。todoを作成するためのサンプルミューテーションは次のとおりです mutation { createtodo(input { fields { title "finish homework" iscompleted false } }) { todo { objectid title iscompleted } } } ライブクエリの操作 swiftアプリがリアルタイムの更新を必要とする場合、back4appはライブクエリをサポートしています。iosの場合 ライブクエリを有効にする あなたのアプリの サーバー設定 接続する によって parse livequeryserverurl を指定します parse configuration serverurl = url(string "https //parseapi back4app com")! parse configuration livequeryserverurl = url(string "wss\ //your subdomain b4a io")! ライブ更新に登録する let subscription = todo query() subscribecallback { subscriptionstate in switch subscriptionstate { case subscribed(let querysubscription) print("subscribed to todo changes!") default break } } これで、todoが作成、更新、または削除されるたびに、リアルタイムで更新を受け取ることができます。これは、swiftバックエンド開発における共同作業や時間に敏感な機能に特に役立ちます。 ステップ 3 – acl と clp を使用したセキュリティの適用 acl と clp とは何ですか? back4app は アクセス制御リスト (acl) と クラスレベルの権限 (clp) を使用してデータを保護します。acl はオブジェクトごとの権限を定義でき、clp はクラス全体のデフォルトのアクセスルールを設定します。 クラスレベルの権限 back4app ダッシュボードで 「 データベース 」に移動し、クラスを選択します(例 “todo”)。 「 クラスレベルの権限 」を開きます。 読み取り、書き込み、または公開アクセスの制限を設定します。 アクセス制御リスト (acl) swiftでparseobjectを作成または更新する際に、aclを設定できます。例えば var acl = parseacl() // only let the current user read and write acl setreadaccess(userid "current user id", value true) acl setwriteaccess(userid "current user id", value true) var todo = todo() todo acl = acl これにより、指定されたユーザーのみがそのオブジェクトを読み取ったり変更したりできるようになります。aclとclpを組み合わせることで、アプリのデータに対する堅牢で層状のセキュリティモデルが形成されます。 ステップ4 – クラウドコード関数の作成 なぜクラウドコードなのか? クラウドコードを使用すると、クライアントに秘密を公開することなく、サーバー側のswiftロジック(または元のparse cloud codeスタイルを使用する場合はjavascript)を実行できます。これは、バリデーション、トリガー、スケジュールされたタスクなどに最適です。 例の関数 こちらはjavascriptベースの例ですが、typescriptで作業したり、swiftから呼び出したりすることもできます。あなたのback4app cloud code フォルダーに、次のように main js を作成します parse cloud define("gettaskscount", async (request) => { const query = new parse query("todo") const count = await query count({ usemasterkey true }) return count }) parse cloud beforesave("todo", async (request) => { const todo = request object if (!todo get("title")) { throw "cannot save a todo without a title " } }) npmモジュールをインストールするには、 package json ファイルに含めてから、 main js で呼び出すことをお勧めします。デプロイ後、 callfunction を使用してswiftコードからこれらの関数を呼び出すことができます。 デプロイメント cloud codeを次の方法でデプロイします b4a deploy back4appダッシュボードを通じてデプロイすることもできます。 cloud code > functions に移動します。オンラインエディタにコードを貼り付けて、 deploy をクリックします。 swiftからの呼び出し task { do { let result = try await parsecloud callfunction("gettaskscount", with \[string any]\()) print("count ", result) } catch { print("error calling cloud function ", error) } } ステップ5 – 認証の設定 ユーザー認証の有効化 back4appの ダッシュボード では、ユーザーアカウント用のデフォルトの user クラスが表示されます。必要に応じて、アプリの 認証設定 で追加の認証プロバイダー(apple、facebook、googleなど)をオンにしてください。 サインアップとログイン(swift) struct user parseuser { var objectid string? var username string? var email string? var password string? var emailverified bool? var createdat date? var updatedat date? var acl parseacl? var originaldata data? } // sign up task { do { var newuser = user() newuser username = "alice" newuser password = "p\@ssword" let signedup = try await newuser signup() print("user signed up ", signedup) } catch { print("error signing up ", error) } } // log in task { do { let user = try await user login(username "alice", password "p\@ssword") print("logged in user ", user) } catch { print("error logging in ", error) } } ソーシャルログイン back4appはgoogle、apple、facebookによるoauthログインをサポートしています。これらのプロバイダーを 認証 設定ページで構成し、swiftアプリ内で関連するparse swift統合コード(例 parsefacebookutils または parseappleutils ) を使用して認証フローを処理します。詳細については、 ソーシャルログインのドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。 ステップ6 – ファイルストレージの処理 ファイルストレージの設定 back4appに画像、動画、または任意のファイルを保存できます。swiftでは、 parsefile let imagedata = data(/ your image bytes /) let parsefile = parsefile(name "photo jpg", data imagedata) task { do { let savedfile = try await parsefile save() print("file saved ", savedfile url ?? "no url") } catch { print("error uploading file ", error) } } 次に、このファイルをparseobjectに添付して保存できます。ファイルのurlを取得して、他の場所で表示またはダウンロードします。 セキュリティに関する考慮事項 ファイルアクセスを制限するには、 parse serverのファイル設定 https //www back4app com/docs/platform/file storage を使用できます。たとえば、認証されたユーザーのみがファイルをアップロードできるようにしたり、swiftコードで読み取り/書き込みの権限を指定したりできます。 ステップ7 – メール確認とパスワードリセット なぜ確認とリセットのメールが必要なのか? ユーザーのメールを検証することで、実際のアクティブなメールボックスを確保します。パスワードリセットは、ユーザーが認証情報を忘れた場合に安全にアカウントアクセスを回復するのに役立ちます。 back4appの設定 「 メール設定 」に移動し、「 メール認証 」を有効にします。認証とリセットフローのためのメールテンプレートを編集してください。 swiftからのパスワードリセットのトリガー task { do { try await user passwordreset(email "alice\@example com") print("password reset email sent!") } catch { print("error requesting password reset ", error) } } ステップ8 – クラウドジョブによるタスクのスケジューリング クラウドジョブ back4appでサーバーサイドのタスクをスケジュールできます。例えば、古いデータのクリーンアップや週次レポートの送信です。cloud codeでジョブを定義し、back4appダッシュボードを通じてスケジュールします。 parse cloud job("cleanupoldtodos", async (request) => { const now = new date() // example logic remove todos older than 30 days // use master key for privileged operations }) 次に、back4appの「 サーバー設定 」 > 「 バックグラウンドジョブ 」で、毎日または任意の間隔で実行するようにスケジュールできます。 ステップ9 – ウェブフックの統合 ウェブフックとは? ウェブフックは、特定のイベントが発生するたびにアプリが自動的に外部サービスにデータをpostできるようにします。これは、slack、stripe、または他のサードパーティapiとの統合に最適です。 設定 back4appダッシュボードで、 その他 > ウェブフック に移動します。 ウェブフックエンドポイントを追加します(例: https //example com/webhook )。 トリガーを選択します(例:「todo」でのオブジェクト作成)。 カスタムロジックの場合、cloud codeトリガーで外部urlにリクエストを発行することもできます。 ステップ10 – back4app管理パネルの探索 管理パネルとは? 「 back4app admin app 」は、非技術者やサポートスタッフ向けのポイント&クリックインターフェースです。データに対してcrud操作を行うためのシンプルなguiを提供し、開発環境外でデータを管理するのに最適です。 管理アプリの有効化 アプリダッシュボードに移動 > もっと見る > 管理アプリ 管理アプリを有効にし、サブドメインを選択します。 管理ユーザーを作成します。 一度有効化されると、適切な資格情報を持つ誰でも、コードなしでユーザーフレンドリーなウェブインターフェースからデータを表示および編集できます。 結論 この完全なチュートリアルに従うことで、あなたは swiftのバックエンドを構築する方法 を学びました。具体的には、あなたは 安全なバックエンドを作成しました あなたのswiftアプリのために。 クラススキーマとデータ関係を持つ データベースを構成しました。 リアルタイムクエリを使用しました (ライブクエリ)で即時更新を行いました。 堅牢なセキュリティを設定しました aclとclpを使用して。 cloud codeを使用しました サーバーサイドでカスタムロジックを実行するために。 ユーザー認証を実装しました 検証とパスワードリセットを使用して。 ファイルアップロードを処理しました 安全に。 自動化されたタスクをスケジュールしました cloud jobsを使用して。 webhookについて学びました 外部apiを統合するために。 管理パネルを探りました データ管理のために。 あなたは今、swiftアプリケーションのための機能的でスケーラブルなバックエンドサービスを持っています—より複雑な機能を処理したり、サードパーティサービスに接続したり、より多くのユーザートラフィックに適応したりするために簡単に拡張できます。また、back4appのbaas機能とswiftのモダンな構文の組み合わせがバックエンド開発をどのように加速できるかを直接体験しました。 次のステップ プロダクション準備が整ったswiftアプリを構築する ui/uxを具体化することで。 高度な機能を統合する 専門的な認証(役割ベース、sso)や、ドメイン特有のルールのための追加のcloud codeロジックなど。 公式のback4appドキュメントをチェックする ログ、分析、または高度なセキュリティについての詳細な情報を得るために。 他のチュートリアルを探る リアルタイムチャット、iotダッシュボード、または位置情報ベースのアプリに関して。これらを外部apiと組み合わせて、現実の課題を解決する。 これがback4appを使用してswiftのバックエンドを構築する方法です!コーディングを楽しんでください!