サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >ドキュメント:開発ガイドライン

ドキュメント

共通ドキュメント

開発ガイドライン

 

開発ガイドラインについて

ニフクラ mobile backendを、より上手くご活用頂けるように、ご利用の際のガイドラインをまとめました。

サービスとしての制限事項

 項目            内容   
共有サービスである事の制限 mobile backendは共有サービスのため、他のお客様の利用により、パフォーマンスなど影響を受ける可能性があります。 
システム安定稼働に対するサービス運営方針 富士通クラウドテクノロジーズ(以下、FJCT)では上記のように、一部のお客様のご利用によって、他のお客様への影響がでないよう、サービス運営をしております。
その為、システム全体への高負荷が予想されるお客様については、未然にパフォーマンス低下を防ぐため改善勧告を行う事がございます。
また、突発的に負荷が高まった際はやむを得ない場合に限り、利用規約に則りサービスの一時停止などの処置も行いますので、サービスご利用の際はパフォーマンスチューニングの実施をお願いいたします。
尚、Expertプラン以上のお客様につきましては、テクニカルサポートにてパフォーマンス向上のアドバイスを行わせて頂く事も可能です。

APIについて

 項目            内容   
レスポンスタイムの保証      レスポンスタイムの保証はございません。
パフォーマンスが出ない場合はリクエスト内容の見直しや、対象クラスの保持オブジェクトの数やサイズの見直し、追加インデックス(有償オプション)の利用などをお客様にてご検討ください。
また、Expertプラン以上のお客様につきましては、テクニカルサポートにてパフォーマンス向上のアドバイスを行わせて頂く事も可能です。 
レスポンスの保証      レスポンスに関して、Basicプランのお客様には一切の保証をしておりません。
Expertプラン以上のお客様にはSLAを定めております。
いずれの場合も100%の保証は行っておりませんので、アプリ側で適切なエラーハンドリングとリトライを実装してください。
エラーについてはこちらをご覧ください。 
サポートしているSSL/TLSのバージョン      現状 (2016/11/30時点)
・SSLv1, v2 v3 使用不可
・TLSv1.0, v1.1, v1.2 使用可

内部データベースについて
(データストア/会員管理等共通)

 項目            内容   
オブジェクトサイズの制限      システム制限:16MB
登録可能なサイズ上限の目安:10MB程度
巨大なオブジェクトに対して更新処理を行うと高負荷が発生する恐れがあるので実施を控えるよう推奨いたします。  
オブジェクト数の制限      システム制限:なし
多数のオブジェクトを登録すると更新や検索における性能劣化が予想されます。
最大1,000万件以下に抑えることを推奨します。
インデックスが無いフィールドでのソート制限      システム制限:ワーキングメモリ32MB以下
内部データベース上でのソート処理で使用するメモリが32MBを超えた場合、ソートができませんので、インデックス機能のご利用をご検討ください。
登録および更新後、参照に反映されるまでの時間 内部データベースはレプリケーション構成を採っているため、登録/更新後すべてのデータベースに反映される時間にはタイムラグが存在します。

検索クエリについて

 項目            内容   
$relatedTo     $relatedToで検索した際に、参照先オブジェクトが存在しないポインタが対象に含まれた場合はそのポインタが無視されるだけなので、そのリレーションにポインタが100件登録されているにも関わらずlimit=10で検索した際に8件しか返却されないことなどが発生します。 
include     1つだけ指定する利用方法を想定しています。
カンマ区切りで複数指定することも可能ですが、前に指定されたものから順に検査され最初に置き換えができたものだけが子要素に置き換えられます。2つ以上指定した場合に1つ目が正常に子要素に置き換えられると、2つ目はポインタのまま返却されます。 
order     orderを指定しない場合の並び順は「natural order」であり、DB上のデータ並び順に従います。
更新等の書き換え処理によって順番が変わることがあるため順序の保証はありません。
内部データベースの制限事項にもある通り、ソート処理には制限事項があるためインデックスのあるフィールドをorderに指定することを推奨します。 
limit     0-1000を指定できます。
limit&skip     skipの分だけ読み飛ばして、limit分を返却するため、skipが大きくなるに従ってパフォーマンスが劣化します。 

リレーション型について

 項目            内容   
データ保持形式       リレーションは「ポインタの配列」としてオブジェクト内に保持されるため、巨大なリレーションを作成すると、それを保持するオブジェクトも巨大化します。  
参照先オブジェクトが削除された場合のリレーション型の挙動       リレーション型の参照先オブジェクトが削除されても、リレーション型内部の当該オブジェクトへの参照ポインタは削除されません。  

ACLについて

 項目            内容   
共通仕様(会員管理を除く)       許可されている人/ロールを列挙する(deny/allow)
明示的に全体(public=*)への許可を設定することもできます。
誰も登録されていない場合は全許可とみなされます。
拒否する人/ロールを設定することはできません。
会員管理特有の仕様      共通仕様に準じるが、「誰も登録されていない場合は本人のみ許可」となります。  

プッシュ通知について

 項目            内容   
配信の品質保証       配信処理はベストエフォートであり端末への到達を完全に保証するものではありません。  
配信の責任範囲       mobile backendではAPNs(Apple Push Notification services)とFCM(Firebase Cloud Messaging)を使用してプッシュ通知を実現しております。mobile backendからAPNs/FCMへ通知の配信依頼が完了した時点で「配信済み」となります。APNs/FCMへの配信依頼完了以降、端末への通知到達まではAPNs/FCMの責任範囲となりFJCTは一切の責任を負いません。
配信速度 ベストエフォートであり配信速度の保証はありません。お客様の用途に適するか、事前検証をお願いいたします。
内部システム 大量のプッシュ通知配信処理を短時間に処理するため、システムは非同期(ジョブキュー)かつ並列で構成されています。
非同期かつ並列なシステム構成のためステータス(配信中、等)の変更に時間がかかることがあります。
配信優先順序 配信時刻を過ぎたプッシュから順次キューへの登録が行われますが、キューへの登録は有償プランのお客様から順に実行されます。
即時配信 即時配信は、「プッシュ通知の登録時刻を配信時刻として設定した予約配信」です。順次キューへの登録が行われます。登録と同時に配信されるわけではありませんのでご注意ください。
配信のキャンセル プッシュ通知配信システムの保全および性能確保のため、一定の条件下においてプッシュ通知の配信がキャンセルされることがあります。
キャンセルされたプッシュ通知は、キャンセルされた時点で配信処理が停止し、その時点で未配信の端末への配信処理は行われません。
配信キャンセルとなる条件は事前の告知なく変更されることがあります。

■配信がキャンセルされる条件(例)
プッシュ通知の配信においてinvalidTokenエラーが頻発した際にキャンセルされることがあります
  理由(1)→invalidTokenエラーが発生した場合、APNsとのコネクションが切断され再接続処理が行われます。配信処理においてAPNsとの接続処理が最もコストが高い処理です。再接続が頻発すると配信システムの品質低下を招き、配信遅延などを引き起こすため、配信処理をキャンセルします。
  理由(2)→invalidTokenエラーが短期間に頻発した場合、APNsへ短期間に大量の不正トークン利用および再接続処理が発生します。APNsに対する攻撃と受け取られる可能性があるため配信処理をキャンセルします。
APNs特有の注意事項
(invalidTokenエラーについて)
APNsにはDebugビルド用のSandbox環境と、AdHocビルドおよびAppStoreビルド用のProduction環境の2つの配信システムが存在し、mobile backendではダッシュボードにて設定頂いたAPNs証明書の種類によって使用するAPNsのシステムを決定しています。Sandbox証明書の場合はSandbox環境へ、Sandbox&Production証明書の場合はProduction環境へ接続します。
APNsではdebugビルドのアプリで取得されたデバイストークンはSandbox環境でのみ、AdHoビルドおよびAppStoreビルドのアプリで取得されたデバイストークンはProduction環境でのみ有効であり、異なる組み合わせの場合は不正なデバイストークンとしてinvalidTokenエラーが発生いたします。(例:Debugビルドで取得したデバイストークンを使ってAPNsのProduction環境に配信依頼をする)

■invalidTokenエラーの回避方法(例)
・mobile backend上のアプリを2つ(development/production)作成し、ビルドタイプに応じて使い分けることでinstallationクラスにSandbox/Productionのデバイストークンが混在することを予防することができます。
FCM特有の注意事項
(カノニカルIDの扱いについて)
・「アプリケーションのアップデート」や「アプリケーションの再インストール」などに起因して、同じデバイスに対してFCMサーバが複数のRegistration ID(デバイストークン)を割り振る場合があります。このとき、FCMサーバーが正規のIDと認識しているデバイストークンがカノニカルIDと呼ばれています。

・同じデバイスに対して複数のデバイストークンが払い出された場合、FCMの仕様上、払い出されたデバイストークンの全てで正常にプッシュ通知が届きます。このため、同じデバイスを示す複数のデバイストークン宛にプッシュ通知を配信すると、重複受信が発生します。
なお、カノニカルID以外のデバイストークン宛にプッシュ通知を配信した場合、FCMはフィードバックとしてカノニカルIDへの更新依頼を返却します。

・mobile backendではこの依頼に従い、対象のデバイストークンを持つinstallationのdeviceTokenフィールドをカノニカルIDへ更新します。ただし、installationクラスのdeviceTokenフィールドはユニーク制約が課されているため、カノニカルIDが既に別のinstallationとして登録されている場合は更新に失敗します。この場合、対象のデバイストークンを持つinstallationを削除することで対応します。
アプリがアンインストールされた端末情報(installation)の自動削除 mobile backendはAPNs/FCMより、アプリ利用者がアプリを端末からアンインストールした等の理由により配信先が喪失したという内容の情報を受け取った場合、mobile backendでは対象の端末情報(installation)を自動で削除致します。
・APNsの場合はFeedbackサービスを使用した際に受領した情報に従い対処します
・FCMの場合は配信依頼時のレスポンスとして返却されたNotRegisteredエラーに従い対処します。
配信済みのプッシュ通知オブジェクトについて プッシュ通知の配信に伴い、配信済みのプッシュ通知オブジェクトが累積いたします。
こちらはプッシュ通知の登録ごとに作成されますので、個通のプッシュ通知を多用されるなど、プッシュ通知登録数が多い場合につきましては、オブジェクトの容量肥大が考えられます。
容量が肥大しますと、プッシュ通知の配信パフォーマンス低下やストレージ容量の逼迫に繋がりますので、定期的にお客様にて削除頂くことを推奨いたします。
なお、プッシュ通知開封率は配信済みオブジェクトを元データとし表記する為、オブジェクトを削除しますと開封率の確認が不可となりますこと、ご了承ください。

※ FCMはGCM(Google Cloud Messaging)の新バージョンです。既にGCMにてプロジェクトの作成・GCMの有効化設定を終えている場合は、継続してご利用いただくことが可能です。新規でGCMをご利用いただくことはできませんので、あらかじめご了承ください。

ファイルストアについて

 項目            内容   
CDNとしてのご利用について mobile backendのファイルストア機能はCDNではないため、これを用いた大規模なコンテンツ配信などには適しません。
また、Unity Asset Bundleを用いたファイルの配信には適しません。
十分な帯域は準備しておりますが、過度な帯域の専有が確認された場合は利用規約に則り対応いたします。  

SDKについて

 項目            内容   
ライセンス      Apache License, Version 2.0 です。
SDKに同梱されているライセンスが上記と異なる場合は、SDKに同梱されているライセンスを優先します。 
Bugfix対応について      ライセンスに基づきベストエフォートでの対応とさせて頂きます。
不具合を報告する場合はgithubのissueに登録してください。  
改変について      ライセンスに従ってください。
なお、改変されたSDKに関してはテクニカルサポート窓口を含めた全てのサポート窓口での対応の対象外とさせて頂きます。  

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ