ニフクラ mobile backendは3月末で終了します。
ニフクラ mobile backendからの移行先として、お勧めしているのがParse Serverです。設計思想が近く、変更するコード量が少なく済むのではないかと思います。
Parse ServerではiOS向けにSDKを提供していますが、Swift SDKについてはあまりドキュメントが充実していません。そこで、各機能の使い方を解説します。今回はファイルストア相当として使える、ファイルフィールドの取得方法を紹介します。
Swift SDKとObjective-C SDKのどちらを使うべきか
Parse ServerにはSwift SDKとObjective-C SDKが用意されています。機能的にいうと、Objective-C SDKの方が多いようです。しかし、公式メッセージとしてはSwift SDKを使っていくのを奨励しています。
Parse Server Swift SDKのインストール
Swift SDKのインストールは、CocoaPodsやCarthageなどが使えます。しかし、一番簡単なのはXcodeのPackage Dependenciesを使う方法でしょう。
XcodeのFileメニューより、Add Package Dependenciesを選択して、出てきたダイアログで以下のURLを指定します。
https://github.com/parse-community/Parse-Swift.git
そして、利用するファイルでSDKをインポートします。
import ParseSwift
初期化
SwiftUIの例です。初期化は (アプリ名)App.swift
にて行います。そして、初期化は ParseSwift.initialize
にて行います。指定するアプリケーションID、クライアントキー、サーバーURLはそれぞれParse Serverを立ち上げる際に指定したものを使います。
マスターキーも指定できるようですが、アプリ側では使わない方が良いかと思います。
import SwiftUI
import ParseSwift
@main
struct ParseDemoApp: App {
init() {
ParseSwift.initialize(applicationId: "YOUR_APP_ID", clientKey: "YOUR_CLIENT_KEY", serverURL: URL(string: "https://example.com/parse")!)
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Parse Serverにはファイルストアはありません
Parse ServerにはNCMBでいうファイルストア相当の機能はありません。ファイルはデータストアの1フィールドに紐付けて保存します。また、取得できるのはURLのみで、実データの取得はURLからダウンロードする形になります。
今回は例として、以下のような構造体を定義しています。
import ParseSwift
struct Item: ParseObject {
// 以下は必須です
var objectId: String?
var createdAt: Date?
var updatedAt: Date?
var ACL: ParseACL?
var originalData: Data?
// 以下は自分で定義したフィールドです
var name: String?
var file: ParseFile?
}
そして、以下のようにデータを取得できます。
let query = Item.query()
let items = try? query.find()
if ((items) != nil) {
if items![0].file != nil {
print(items![0].file?.url ?? "No file")
}
}
ここで取得できる url
は以下のようになります。
https://example.com/parse/files/appId/your_file.jpeg
後はこのURLを使って画面に表示するか、実データをダウンロードして処理する形になります。
まとめ
Parse ServerとNCMBでは、バイナリファイルの扱いがまったく異なります。ファイルに対するACLという概念はありませんので、URLが分かってしまうと誰でもアクセスできます。NCMBで言えば、標準でファイルストアのHTTPS公開が有効になった状態と言えます。
移行する場合には、 files
のようなクラスを作成し、そこにファイルを紐付ける形になるでしょう。もちろん、Parse Serverらしくデータストアの1フィールドとして保存も可能です。
ファイルストアについては違いがあるとはいえ、データの管理方法などはParse ServerとNCMBで似ています。他のmBaaSと比べると、修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。