ニフティクラウド mobile backendではスマホアプリのバックエンドの汎用的な機能を提供しています。
主な機能としては
- データストア(DB)
- ファイルストア(ファイルストレージ)
- プッシュ通知
- 会員管理
などがあります。
しかもこれらを基本無料で、機能的な制限もなく利用できるため、本格的な商用アプリだけでなく個人で作ったアプリにちょっと通信を使った機能を組み込んでみたいなんて時にも活用できます。
ファイルストアの残念なところ
タイトルにもあるとおり、この記事ではファイルストアについて取り上げます。
ファイルストア機能はその名の通り画像やテキストのファイルをクラウド上に保存しておくことができる機能です。
ただ、この機能は以下のような仕様になっています。
- ファイルの情報は以下の6点
- ファイル名
- ファイルの種類
- ファイルサイズ
- 作成日時
- 更新日時
- ACL(アクセス権情報)
- 同一名のファイルは複数置けない
- 検索にファイル名を活用する場合に部分一致が使えない
- DBのフィールドとしてファイルもしくはポインタ情報を入れられない
つまり、ファイルストア機能をそのまま扱うには、実質ファイル名をバイネームで指定して引っ張ってくるしかないということになります。
これはかなり使いにくい、というか動的にファイルを扱うのは不可能に近い仕様となっています。
それではこれをなんとかしてもう少し扱いやすくする方法について説明します。
解決方法:データストアのフィールドにファイル名を格納する
シンプルではありますが、ファイル名はユニークな値なので、データストアに「fileName」フィールドを用意して、そこにファイル名を入れて管理することで、ファイルに擬似的に属性を付与したりすることが可能になります。
この方法を使うと、ファイルアップロード者の付与や写真にタグ付けする機能なんかも作れるようになります。
せっかく無料で使えるサービスですし、上手に活用して効率的にアプリを作りたいですね。
具体的な実装方法や活用方法の例などは次回書きます。
おまけ
あまり知られていませんが、mobile backendのファイルストア機能には「公開ファイル機能」があります。
簡単に言うと決められたURLにGETリクエストを送るだけで、mobile backend機能の実装なしでファイルストア上のファイルを取得できる機能です。
ブラウザ上でアプリ作成してアプリケーションIDさえ発行されれば、アプリ側にはURLを指定すること以外は一行もコードを組み込む必要がないので、コードは組み込みたくないけどファイルストレージは活用したい、という人にはオススメです。
使い方は以下のドキュメントを参照してください。
ファイルを公開してHTTPSで取得可能にする : http://mb.cloud.nifty.com/doc/dashboard/filestore.html#ファイルを公開してHTTPSで取得可能にする