「モバイルバックエンド」って何?
iPhoneやAndroid開発に携わるプログラマなら「あ〜。あれね。」となるのが、「モバイルバックエンド」ですが、スマホアプリ開発に携わる人にはあまり馴染みが無いのが現実ではないでしょうか。
今回はそんな「モバイルバックエンド」について概要を見ていきたいと思います。
初心者が忘れがちなサーバーの必然性
普段から「こういう機能を持ったアプリを作ってみたい」という相談を受けることもあり、特にプログラミングを始めた初心者の方が忘れやすいのが「サーバー」に関する開発です。
例えば、「写真共有アプリを作りたい」となった時に
「じゃあ、写真データはどこに置いておくの?」
と聞くと、
「スマートフォンの中に保存します。」
と返ってきて、
「じゃあどうやってスマートフォンの画像データを共有するの?」
と聞き返してみると、
「え??」
となるわけです。
こういうケースは初心者の方に特に多く、「スマートフォンアプリを作れば全て解決」と思っている人も、思いのほかたくさんいらっしゃいました。***-
今回は、モバイルアプリのサーバー側(バックエンド)を手軽に利用することができる「モバイルバックエンドサービス」について話しをしていきたいと思いますが、サーバーには、
- WEBサーバー
- DBサーバー
- SMTP・POPサーバー
- DNSサーバー
など、さまざまなものがあります。
これらのサーバーを自分で構築し、運用し続けることは簡単なことではありません。
必要なサーバー機能は全て用意してくれていて、それを利用するだけ。
これが「モバイルバックエンド」を利用する最大のメリットです。
それでは、さまざまなモバイルバックエンドサービスについて見ていきましょう。
Firebase
Googleが運営しているモバイルバックエンドサービスが「Firebase」です。
モバイルアプリサービス開発に必要なたくさんの機能が用意されていて、ユーザー認証などの実装が複雑な機能も用意されています。
Cloud Messaging
メール通知や新しいコンテンツがあるなどの情報を、ユーザーに通知できる機能が、「Cloud Messaging」です。
使い続けられるアプリを作るためには、積極的にユーザーにアプリの最新情報を配信していくことも大切です。
メッセージを設定してすぐに配信することも、指定時刻にメッセージを送信することもできます。
Realtime Database
FirebaseサーバーにJSONデータを格納でき、オンラインとオフラインの両方で共使うことができるリアルタイムデータベースサービスです。
もし、オフラインになっても、自動的にローカルキャッシュにデータを保存するため、オンラインになると、差分データを自動で同期する機能を備えています。
これらの機能を自分で実装するとなると、「データの時系列管理」「オンライン状況の管理」「データの同期処理」など、複雑な処理を自分で作る必要がありますが、Firebaseを利用することで、これらの実装の労力を減らすことができます。
データベースサーバーの構築・運用に関しても全てFirebaseが行ってくれるため、これらの管理負荷を無くすことができるため、アプリ機能の実装に注力することができます。
Authentication
会員登録型のアプリを作る際に欠かせない機能が「ユーザー認証」ですが、トークンの管理や認証経路の暗号化など、セキュリティにも配慮した実装を行う必要があります。
Firebaseでは、
- メールアドレス
- Github
などの認証を行うことができます。
ユーザーには、「一意のID」が割り振られているため、どのユーザーなのかを識別することができます。
ログイン画面のテンプレートも用意されていますが、オリジナルデザインのログイン画面を作ることもでき、アプリごとのカスタマイズもできるようになっています。
Cloud Storage
動画・写真などの共有アプリがトレンドとなっていますが、これらのアプリで管理する動画・写真データは大容量となることも多いため、データの保存と管理に気を使う必要があります。
これらのサービスを構築するためのストレージサービスが「Cloud Storage」です。
クラウド上にデータを保存しておき、他のユーザーと共有するサービスを作ることができ、共有ユーザーの制限するために「Authencation」機能と連携することができるようになっています。
専用のAPIを利用することで、回線切断などが発生した際にも復旧後に自動的に処理を再開することができます。
Remote Config
アプリのデータ部分をKEY-VALUE形式で保存し、アプリ公開後もデータを更新できる仕組みが「Remote Config」です。
日々変化する情報や最新の情報を反映させるために、アプリを書き直して公開するのは現実的では無いため、サーバーにデータを保存し、そのデータをアプリに転送し、最新の内容を表示する方法があります。
そのような仕組みを提供しているのが「Remote Config」です。
サーバー上のデータを変更すると。アプリを利用した際に変更後のデータが自動でダウンロードされ、アプリに反映させることができます。
全てのユーザーではなく、一部のユーザーにだけ変更データを配信することもでき、「A/Bテスト」を行ったり、リリース前のテスト配信を行うなど、さまざまな使い方ができるのではないでしょうか。
ニフティクラウド mobile backend
1980年代より、インターネットの前身となる「パソコン通信」の時代から電気通信事業に取り組んでいる「ニフティ」が提供しているサービスが「ニフティクラウド mobile backend」です。
無料で利用できる機能も多く、さまざまな開発・運用実績を数多く公開しています。
プッシュ通知
iOS・Androidなどのスマホアプリにプッシュ通知を行うことができる機能ですが、専用のSDKを利用して実装するだけでプッシュ通知機能を実装することができます。
全員への通知だけではなく、特定ユーザーのみに通知できる「セグメント配信」機能も備えられています。
iOSで実装する場合は、Apple Push Notification service(APNs)を利用します。
その際にAppleの開発者サイトから、証明書を取得し、mobile backendサービスへの設定が必要となります。
プッシュ通知時にJSONデータを送ることもでき、アプリ側のそのデータを受け取り任意の処理を行うことができます。
会員管理・認証
会員制のアプリサービスを開発する際に必要な「会員管理・認証」の仕組みを利用することもでき、「メールアドレス・匿名・SNS」を利用した認証を行うことができます。
また、「会員のグルーピング機能」も備えられているため、アクセスできるデータを制限することもできます。
会員管理専用のダッシュボードも用意されているため、会員の追加・削除などの自由に行うことができるようになっています。
などのサービスとも連携できるため、SNSを利用した認証を行うことも可能です。
データストア
さまざまなデータの共有機能を実現できるのが、「データストア」です。
スキーマレスデータベースにアプリデータ及びコンテンツなどを格納することで、アプリの共有データを保存することができます。
ACLによるアクセス制御も行うことができるため、データ保全に対する配慮も行われています。
データ通信状況もチェックしながら共有データをアップロードしているため、通信管理も行なってくれます。
ファイルストア
「ファイルストア」は、「画像・動画・テキスト・音楽」などのさまざまなデータを保存することができます。
保存したファイルはHTTPSを利用した暗号化通信により安全にユーザーに配信されますが、大規模なサービスには利用ができないとのこと。
ぜひ大規模なデータ配信にも対応できるようになってほしいところです。
アップロードしたファイルにはURLでアクセスすることができるようになっています。
位置情報検索
GPSの位置情報を保存し、アプリから利用できるサービスが「位置情報検索」です。
GPSの「緯度・経度」情報から指定範囲のサービス利用者を探すことができるなど、すぐに」利用できる」便利な検索機能が多数揃っています。
位置情報を限定してプッシュ通知を行うことができるなど、あるエリアにいる人限定のクーポンを配信することもできます。
モバイルバックエンドサービスの共通項
「Google Firebase」「ニフティクラウド モバイルバックエンド」サービスについて見てきましたが、他にも
- Microsoft Azure
- Amazon Web Service
などがモバイル向けのサービスを展開しています。
サーバーと連携したアプリサービスを提供する際に必要な、
- 認証・認可機能
- データベース機能
- プッシュ通知機能
については、モバイルバックエンドサービスに欠かせない「共通項」となる機能では無いでしょうか。
「サーバー側の開発不要」でサーバーを活用した機能を利用できるのは大きなメリットですが、「サーバーの仕組みを知っておく」ことは、アプリ開発では重要となりますので、サーバーに関する知識も身につけていきたいものです。