Quickstarters
Feature Overview
How to Build a Backend for MacOS?
41 分
はじめに このチュートリアルでは、 macosのバックエンドを構築する方法 を学びます。 データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、back4appの重要な機能を統合する方法を説明し、あなたのmacosアプリケーションとシームレスに通信する安全でスケーラブル、かつ堅牢なバックエンドを作成します。 また、back4appの迅速なセットアップと直感的な環境が、サーバーやデータベースを手動で構成するのに比べて、時間と労力を大幅に削減できることを確認します。 その過程で、cloud jobsを使用したタスクのスケジューリングや、外部統合のためのwebhookの設定など、主要な機能に関する実践的な経験を得ることができます。 このチュートリアルの終わりまでに、あなたはこの基礎的なセットアップを本番環境に適したmacosアプリケーションに拡張する準備が整い、必要に応じてカスタムロジックやサードパーティapiを簡単に組み込むことができるようになります。 このアプローチをマスターすることで、あなたはワークフローを効率化し、 macosのバックエンドを構築する方法 を迅速かつ効率的に学ぶことができます。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 macos開発環境(xcode) xcodeは mac app store https //apps apple com/us/app/xcode/id497799835 からインストールできます。 swift package managerまたはcocoapods parse swift sdkをインストールするため。 parse swiftドキュメント。 https //github com/netreconlab/parse swift swiftとmacosアプリ開発の基本的な知識 appleの公式ドキュメント https //developer apple com/documentation/swift swiftuiまたはappkitに慣れていると役立ちます。 始める前に、これらの前提条件がすべて整っていることを確認してください。back4appプロジェクトを設定し、ローカルのmacos開発環境を準備しておくことで、より簡単に進めることができます。 ステップ 1 – back4app プロジェクトの設定 新しいプロジェクトを作成する back4app で macos バックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください back4app アカウントにログインする 「新しいアプリ」ボタンをクリックする back4app ダッシュボードで。 アプリに名前を付ける (例:「macos backend tutorial」)。 プロジェクトが作成されると、back4app ダッシュボードにリスト表示されます。このプロジェクトは、このチュートリアルで説明するすべてのバックエンド設定の基盤となります。 parse swift sdk を接続する back4app は、データを管理し、リアルタイム機能を提供し、ユーザー認証を処理するために parse プラットフォームに依存しています。macos アプリケーションを back4app に接続するには、parse swift sdk をインストールし、back4app ダッシュボードの資格情報で初期化する必要があります。 parse キーを取得する back4app ダッシュボードで、アプリの「アプリ設定」または「セキュリティとキー」セクションに移動して、 アプリケーション id と クライアントキー (または clientkey ) を見つけます。 parse サーバー url (通常は https //parseapi back4app com ) も見つかります。 macosプロジェクトに parse swift sdkをインストールします 使用する場合は swift package manager dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] 使用する場合は cocoapods , これを podfile pod 'parseswiftog' macosアプリケーションでparseを初期化します (例えば、appkitを使用している場合は appdelegate swift 、またはswiftuiアプリを構築している場合は @main 構造体内で) import parseswift import swiftui @main struct mymacosapp app { init() { task { do { try await parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } このステップを完了することで、macosフロントエンド(ui)とback4appバックエンドの間に安全な接続が確立されました。すべてのリクエストとデータトランザクションは、このsdkを通じて安全にルーティングされ、手動のrestまたはgraphql呼び出しの複雑さが軽減されます(必要に応じてそれらを使用することもできます)。 ステップ 2 – データベースの設定 データの保存とクエリ back4appプロジェクトが設定され、parse swift sdkがmacosアプリに統合されたので、データの保存と取得を開始できます。オブジェクトを作成する最も簡単な方法は、 parseobject に準拠した構造体を定義し、次に save() を呼び出すことです。 struct todo parseobject { // parseobject required properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { try await todo save() print("todo saved successfully ") } catch { print("error saving todo \\(error)") } } func fetchtodos() async > \[todo] { let query = todo query() do { return try await query find() } catch { print("error fetching todos \\(error)") return \[] } } また、back4appのrestまたはgraphql 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 '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo back4appはgraphqlインターフェースも提供しています mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } これらの多様なオプションにより、parse swift sdk、rest、またはgraphqlを通じて、開発プロセスに最も適した方法でデータ操作を統合できます。 スキーマ設計とデータ型 デフォルトでは、parseは スキーマを動的に作成することを許可します , しかし、より多くの制御のためにback4appダッシュボードでクラスとデータ型を定義することもできます。 「データベース」セクションに移動します あなたのback4appダッシュボードで。 新しいクラスを作成します (例:「todo」)およびタイトル(string)やiscompleted(boolean)などの関連する列を追加します。 back4appはさまざまなデータ型をサポートしています string , number , boolean , object , date , file , pointer , array , relation , geopoint , そして polygon 各フィールドに適切な型を選択することができます。または、macosアプリからオブジェクトを最初に保存するときにparseが自動的にこれらの列を作成することを許可することもできます。 back4appはあなたのデータモデルを設計するのを助ける aiエージェント を提供しています aiエージェントを開きます あなたのアプリダッシュボードまたはメニューから。 あなたのデータモデルを説明します 簡単な言葉で(例:「新しいtodoアプリをback4appで完全なクラススキーマで作成してください。」)。 aiエージェントにスキーマを作成させます リレーショナルデータ リレーショナルデータがある場合—例えば、複数の category オブジェクトが複数の todo アイテムを指している場合—次のように pointers または relations をparse swiftで使用できます struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom fields var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtaskforcategory(categoryobjectid string, title string) async { let pointer = pointer\<category>(objectid categoryobjectid) var todo = todo() todo title = title todo category = pointer do { try await todo save() print("todo linked to category") } catch { print("error creating task with category relationship \\(error)") } } func fetchtodoswithcategory() async { let query = todo query() include("category") do { let todos = try await query find() print("fetched todo items with category \\(todos)") } catch { print("error fetching todos \\(error)") } } ライブクエリ リアルタイムの更新のために、back4appは live queries を提供しています。back4appダッシュボードでライブクエリを有効にすることで、macosアプリから特定のクラスの変更にサブスクライブできます。 back4appダッシュボードで ライブクエリ を有効にします。 コードで ライブクエリ を初期化します(swiftライブクエリクライアントはまだ流動的ですが、コミュニティ主導のアプローチを使用するか、公式のparse swiftの更新を待つことができます)。 src/parseconfig swift // example (subject to support in parse swift) // live query’s subdomain // parseswift configuration livequeryserverurl = url(string "wss\ //your subdomain here b4a io")! サブスクライブすると、新しい todo が作成、更新、または削除されるたびに通知を受け取ります。これは、複数のユーザーやプロセスが最新のデータを即座に確認する必要があるコラボレーティブまたは非常にインタラクティブなデスクトップアプリにとって特に価値があります。 ステップ3 – aclとclpによるセキュリティの適用 back4appのセキュリティメカニズム back4appはセキュリティを真剣に考え、 アクセス制御リスト (acl) と クラスレベルの権限 (clp) を提供しています。これらの機能により、オブジェクトまたはクラスごとにデータの読み取りや書き込みを制限でき、認可されたユーザーのみがデータを変更できるようになります。 アクセス制御リスト (acl) aclは、個々のオブジェクトに適用され、どのユーザー、役割、または一般の人々が読み取り/書き込み操作を行えるかを決定します。たとえば、macosアプリに現在ログインしているユーザーのための「プライベートタスク」の概念がある場合 import parseswift func createprivatetodo(title string) async { guard let currentuser = user current else { return } var todo = todo() todo title = title // create an acl granting read/write access only to the owner var acl = parseacl() acl setreadaccess(currentuser, value true) acl setwriteaccess(currentuser, value true) todo acl = acl do { try await todo save() print("private todo saved") } catch { print("error saving private todo \\(error)") } } オブジェクトを保存すると、それには指定されたユーザー以外の誰も読み取りまたは変更できないaclが設定されます。 クラスレベルの権限 (clp) clpは クラス全体のデフォルトの権限を管理し、クラスが一般に読み取り可能または書き込み可能か、または特定の役割のみがアクセスできるかどうかを決定します。 back4appダッシュボードに移動 , アプリを選択し、 データベース セクションを開きます。 クラスを選択 (例:「todo」)。 クラスレベルの権限 タブを開きます。 「読み取り」または「書き込み」のための「認証が必要」や、一般公開のための「アクセス不可」など、デフォルトを設定します。 ステップ4 – クラウド関数の作成とデプロイ cloud codeは、parse server環境の機能で、サーバー側でカスタムjavascriptコードを実行できるようにします—自分のサーバーやインフラを管理する必要はありません。cloud codeを書くことで、back4appのバックエンドを追加のビジネスロジック、バリデーション、トリガー、外部apiとの統合で拡張し、parse server上で安全かつ効率的に実行できます。 動作の仕組み cloud codeを書くとき、通常はjavascript関数、トリガー、および必要なnpmモジュールを main js ファイルに配置します。このファイルをback4appプロジェクトにデプロイすると、parse server環境で実行されます。これにより、機密のロジックをサーバー側に保持できます。 典型的な使用例 ビジネスロジック データを保存する前の計算や変換 データバリデーション 特定のフィールドが基準を満たしていることを確認 トリガー データが変更されたときにアクションを実行 統合 外部api(例:支払い、通知)との接続 例の関数 // 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を使用したデプロイ cliをインストールする curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash アカウントキーを設定する b4a configure accountkey クラウドコードをデプロイする b4a deploy 関数を呼び出す macosを使用してswiftから import parseswift func gettextlength(text string) async { do { let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) if let resultdict = result as? \[string any], let length = resultdict\["length"] as? int { print("text length \\(length)") } } catch { print("error calling cloud function \\(error)") } } 他のフレームワークと同様に、restまたはgraphqlを介して呼び出すこともできます。 ステップ5 – ユーザー認証の設定 back4appにおけるユーザー認証 back4appは、 parseuser クラスを認証の基盤として活用しています。デフォルトでは、parseはパスワードのハッシュ化、セッショントークン、セキュアストレージを処理するため、複雑なセキュリティフローを手動で設定する必要はありません。 ユーザー認証の設定 macosアプリケーションでは、次のように新しいユーザーを作成できます。 struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // default properties var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { newuser = try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } 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は セッショントークン 現在ログインしているユーザーにアクセスできます if let currentuser = user current { print("currently logged in user \\(currentuser username ?? "no username")") } else { print("no user is logged in") } ログアウト do { try await user logout() } catch { print("error logging out \\(error)") } ソーシャルログイン統合 google、apple、facebookなどの人気プロバイダーを authdata を設定することで統合できます。詳細な手順は異なるため、 ソーシャルログインのドキュメント。 https //www back4app com/docs/platform/sign in with apple メール認証とパスワードリセット メール認証とパスワードリセットを有効にするには バック4アプリのダッシュボードで メール設定に移動します。 メール認証を有効にする 送信元アドレスを設定する , メールテンプレート、および必要に応じてカスタムドメインを設定します。 これにより、ユーザーのメールを検証し、パスワード回復方法を提供することで、アカウントのセキュリティが向上します。 ステップ6 – ファイルストレージの取り扱い ファイルのアップロードと取得 parseには、ファイルのアップロードを処理するための parsefile クラスが含まれており、back4appが安全に保存します func uploadfile(data data) async > parsefile? { let file = parsefile(name "doc txt", data data) do { let savedfile = try await file save() print("file saved ", savedfile url ?? "no url") return savedfile } catch { print("error uploading file ", error) return nil } } オブジェクトに添付します struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(file parsefile) async { var photo = photo() photo imagefile = file do { try await photo save() print("photo object saved!") } catch { print("error saving photo ", error) } } ファイルセキュリティ parse serverの設定でファイルアップロードのセキュリティを構成できます。たとえば、どのユーザーがファイルをアップロードまたは削除できるかを制御します。ファイルのurlを共有すると、そのurlを持っている人は誰でもアクセスできることに注意してください。厳格なサーバー側のルールを設定していない限り。 ステップ7 – メール確認とパスワードリセット 概要 メール確認とパスワードリセットは、安全なユーザー管理にとって重要です。すでに ステップ5 の下で触れましたが、再度お知らせします back4appダッシュボード(メール設定)でこれらの機能を有効にします。 「メール確認を有効にする」と「パスワードリセット」メールテンプレートを構成します。 macosアプリからフローをテストします。 ステップ8 – クラウドジョブによるタスクのスケジューリング クラウドジョブ クラウドジョブ を使用すると、バックエンドで定期的なタスクをスケジュールして実行できます。たとえば、定期的なメールの送信やデータのクリーンアップなどです。 // 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); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); 新しいジョブで cloud codeをデプロイします。 back4appダッシュボードに移動 > アプリ設定 > サーバー設定 > バックグラウンドジョブ ジョブをスケジュール (例:毎日)。 ステップ9 – webhookの統合 webhook は、特定のイベントが発生するたびに、back4appアプリが外部サービスにhttpリクエストを送信できるようにします。これは、決済ゲートウェイ、メールマーケティングツール、または分析プラットフォームなどのサードパーティシステムとの統合に強力です。 webhook設定に移動 back4appダッシュボードで > もっと見る > webhooks エンドポイントを設定 (例: https //your external service com/webhook endpoint )。 トリガーを設定 どのイベントがwebhookを発火させるかを指定するために、back4appのクラスやcloud code関数で。 例えば、新しいtodoが作成されるたびにslackに通知したい場合 受信webhookを受け入れるslackアプリを作成します。 slackのwebhook urlをコピーします。 back4appダッシュボードで、「todoクラスの新しいレコード」イベントのためにそのslack urlをエンドポイントとして設定します。 ステップ10 – back4app管理パネルの探索 この back4app admin app は、非技術的なユーザーがcrud操作を行い、コードを書くことなく日常的なデータタスクを処理するために設計されたウェブベースの管理インターフェースです。これは、データベース管理、カスタムデータ管理、およびエンタープライズレベルの操作を効率化する モデル中心 , ユーザーフレンドリー なインターフェースを提供します。 管理アプリの有効化 有効にする には、 アプリダッシュボード > その他 > 管理アプリ に移動し、「管理アプリを有効にする」をクリックします。 最初の管理ユーザーを作成 , これにより新しい役割( b4aadminuser ) と関連するクラスがアプリのスキーマに自動的に生成されます。 管理インターフェースにアクセスするためのサブドメインを選択 し、セットアップを完了します。 管理資格情報を使用してログイン し、新しい管理アプリのダッシュボードにアクセスします。 有効にすると、back4app管理アプリを使用すると、parseダッシュボードやバックエンドコードを直接使用することなく、データベースのレコードを簡単に表示、編集、または削除できます。 結論 この包括的なチュートリアルに従うことで、あなたは 安全なバックエンドを作成しました back4app上のmacosアプリ用。 データベースを構成しました クラススキーマ、データ型、関係を使用して。 リアルタイムクエリを統合しました (ライブクエリ)による即時データ更新。 セキュリティ対策を適用しました aclとclpを使用してデータアクセスを保護および管理。 cloud codeを実装しました サーバー側でカスタムビジネスロジックを実行するための関数。 ユーザー認証を設定しました メール確認とパスワードリセットをサポート。 ファイルのアップロードと管理を行いました オプションのファイルセキュリティコントロール付き。 cloud jobsをスケジュールしました 自動化されたバックグラウンドタスクのために。 webhooksを使用しました 外部サービスとの統合のために。 back4app管理パネルを探索しました データ管理のために。 堅牢なmacosフロントエンドと強力なback4appバックエンドを備え、機能豊富でスケーラブルかつ安全なデスクトップアプリケーションを開発する準備が整いました。より高度な機能を探求し、ビジネスロジックを統合し、back4appの力を活用して、サーバーとデータベースの管理にかかる無数の時間を節約してください。 次のステップ 本番環境に適したmacosアプリを構築する このバックエンドを拡張して、より複雑なデータモデル、キャッシング戦略、パフォーマンス最適化を処理します。 高度な機能を統合する 専門的な認証フロー、役割ベースのアクセス制御、または外部api(支払いゲートウェイなど)を含みます。 back4appの公式ドキュメントを確認する 高度なセキュリティ、パフォーマンス調整、ログ分析についての詳細を学ぶために。 他のチュートリアルを探る リアルタイム通信、iotダッシュボード、または位置情報サービスに関するもの。ここで学んだ技術をサードパーティのapiと組み合わせて、複雑な実世界のアプリケーションを作成します。