Parse から Azure への移行

2月 1, 2016 に投稿済み

Senior Content Developer, C+E CSI

更新情報:   マイクロソフトが Azure への Parse の実装プロセスを簡素化する Marketplace テンプレートをリリースしました。  詳細については、「Announcing the publication of Parse Server with Azure Managed Services (Azure マネージド サービスで Parse Server の発行に対応)」を参照してください。

これまで、モバイル アプリをサポートするバックエンドとして Parse のホスティング サービスをご利用になっていた方にとって、今こそ Azure App Service をお試しになる絶好のタイミングだと言えるのではないでしょうか。先日の Parse のサービス終了の発表に伴い、Parse でホストされている既存のバックエンドを別のホストに移行する方法が公開されました。新しいホストをお探しの場合は、ぜひ Azure をお試しください。

簡単な移行パス

Parse 移行ガイドで提案されているように、Express アプリにマウントされた Parse Server API を使用して、Parse でホストされているアプリのバックエンドを別のホストに移行することができます。Azure App Service は、Parse に代わって Parse Server の実装をホストするうえで適したサービスです。というのも、Azure App Service の Mobile Apps で使用している Node.js バックエンドも Express アプリだからです。さらに移行作業の開始を容易にするために、Azure App Service チームは Parse Server を App Service で非常に簡単に実行するためのシンプルなプロビジョニング プロセスを作成しました。

皆様は移行を検討する前に、Parse 移行ガイドをお読みになり、新しい Parse Server でサポートされる機能とサポートされない機能を確認されたのではないでしょうか。Parse Server に含まれていない主なモバイル アプリ機能の 1 つがプッシュ通知ですが、ここでも代わりに Azure Notification Hubs を利用することができます。

移行が完了したら、既存のデータにアクセスするアプリで引き続き Parse Client SDK を使用することができます (ただし、クライアントを更新して、新しいバージョンの SDK を使用すると共に、新しいサービスの場所を参照するように設定する必要があります)。

事前準備

Azure 上で動作する新しい Parse Server を作成する手順を開始する前に、以下を実行する必要があります。

Azure サブスクリプションを作成する

Azure サブスクリプションをお持ちでない場合は、サブスクリプションにサインアップする必要があります。無料試用版のサブスクリプションには、こちらからサインアップできます。

MongoDB をセットアップする

Parse Server の現在の要件の 1 つが MongoDB を使用することです (Parse では MongoDB の要件に関するガイドが公開されています)。また、Parse でホストされているデータを MongoDB に移行するための移行ツールも提供されています。MongoDB を利用する場合、Parse では MongoLab サービスの利用を推奨しています。MongoLab サービスは、フルマネージド クラウド データベース サービスで、Azure Marketplace からもサインアップできます。ただし、MongoDB をホストする場合には、Parse Server を実行するための接続情報が必要になります。

将来的には、管理されたサービスとしての NoSQL ドキュメント データベースである Azure DocumentDB の使用もご検討ください。今後の記事では、データを DocumentDB に移行し、DocumentDB と Parse Server を併用する手順をご紹介します。

GitHub アカウントを取得する

この記事でご紹介する Azure への移行パスでは、GitHub アカウントを使用する必要があります。また、リポジトリのクローンを作成し、変更をコミットしてリポジトリにプッシュする方法についてもご説明します。

App Service に新しいバックエンドを作成する

最初に、Parse Server をホストする新しいバックエンドを App Service に作成します。Azure portal で、[+ 新規][Web + モバイル][Web アプリ] の順にクリックし、バックエンドに一意の名前を付けて [作成] をクリックします。

Azure portal で新しいアプリ サービスを作成する

これにより、Parse Server をホストする新しいバックエンド サービスが作成されます。ただし、これは App Service の価格に影響するため、この手順を実行する前に、別の App Service プランを作成することをお勧めします。App Service プランは後からいつでも変更できます。詳細については、「Azure App Service プランの概要」を参照してください。

最初のデプロイメントが完了すると、作成したバックエンドのブレードが表示されます。

Azure portal の新しい Web アプリ

App Service では、さまざまな方法でアプリをデプロイできます。次に、Parse Server リポジトリからデプロイメントをセットアップします。

Parse Server リポジトリのクローンを作成し、Azure にデプロイする

Azure 上で Parse Server を簡単に発行できるように、App Service チームは Parse Server Example リポジトリをフォークして、App Service で適切に動作するようにカスタマイズされた Parse Server を作成しました。GitHub で、Azure Parse Server のサンプル リポジトリをご自身のアカウントにフォークしてください。

Parse Server サンプル リポジトリをフォークする

このフォークは、バックエンドのデプロイ元として使用します。新たに作成したバックエンドの [設定] ブレードに戻り、下方向にスクロールして [継続的なデプロイ][ソースの選択][GitHub] の順にクリックします。次に、[認証][承認する] の順にクリックし、表示される GitHub ページで Azure 管理ポータルへのアクセスを許可して (おそらくは GitHub パスワードも入力する必要があります)、[OK] をクリックします。

GitHub の継続的なデプロイを設定する

これで、ポータルが GitHub アカウントに接続されました。プロジェクトに parse-server-example のフォークを選択し、ブランチに master を選択して、[OK] をクリックします。

デプロイ資格情報を設定する

これにより、デプロイメントがセットアップされると共に、Parse Server のコードが GitHub プロジェクトからプルされて Azure に発行されます。何らかの理由によってデプロイメントがトリガーされない場合は、[デプロイ] ブレードの [同期] ボタンをクリックして、同期を手動で開始することもできます。

バックエンドを構成する

Parse Server で必要になる情報は、環境変数 (App Service ではアプリ設定と呼ばれます) として提供することをお勧めします。この情報には、MongoDB の接続情報、アプリの ID の値、マスター キーの値などがあります。コードはセキュリティが確保されない状態のまま公開リポジトリに発行される可能性がありますが、アプリ設定を使用すると、この重要な情報がコードに残らないため、セキュリティを強化することができます。  新しいアプリ設定を作成するには、[設定] ブレードで [アプリケーションの設定] をクリックし、下方向にスクロールして [アプリの設定] セクションを表示して、以下の設定のキー/値のペアを新規作成して、[保存] をクリックします。

キー

DATABASE_URI

MongoDB の接続文字列

APP_ID

Parse アプリの ID

MASTER_KEY

Parse のマスター キー

ポータルでアプリケーションの設定を解析する

これにより、REST クライアントを使用して新しい Parse Server にアクセスできるようになります。Parse Server で他のハードコードされた値 (Facebook アプリの ID など) が必要になる場合は、これらの値もアプリ設定に追加することをお勧めします。

Hello World を試してみる

Parse Server Example プロジェクトには、hello という名前の "Hello World" 関数が含まれており、以下のように cURL を使用して呼び出すことができます。

$ curl -X POST \
>   -H "X-Parse-Application-Id: dsXH3syuEuuIZvXi1niEtX49LLilneJK5oIBcLM3" \
>   -H "Content-Type: application/json" \
>   -d '{}' \
>   http://parse-on-azure.azurewebsites.net/parse/functions/hello

この呼び出しは、Parse 開発者の皆様にとってはおそらく見慣れたものですが、今回のサービスからの応答はまったく異なるものになります。

{"result":"Hello from Azure."}

これで、Parse Server が Azure 上で適切に動作していることを検証できました。次に、Cloud Code をデプロイメントに追加します。

Parse の Cloud Code を追加する

Parse Server Example リポジトリのフォークを使用して継続的デプロイメントを構成したので、Parse の Cloud Code をデプロイメントに追加するには、この GitHub リポジトリを使用するのが最も簡単です。

Cloud Code をデプロイメントに追加するには、Git クライアントまたは GitBash などのコマンドライン ツールを使用して、ローカル コンピューター上に Parse Server Example リポジトリのフォークのクローンを作成します。

ローカルにインストールした Parse から、/Cloud および /Public サブフォルダーを新しいローカル クローンにコピーします。次に、変更を追加、コミットして、GitHub の元のフォークにプッシュします。GitHub にプッシュすると、デプロイメントが再びトリガーされます。デプロイメントが正常に完了したら、Cloud Code を使用できます。

この手順を実行するには、Cloud Code を GitHub の公開リポジトリに追加する必要があります。コードを非公開のままにするには、このリポジトリを複製して非公開リポジトリを作成する必要があります。また、最初の段階で別のデプロイ方法に切り替えることもできます。

クライアント アプリの Parse SDK を更新する

新しい Parse Server と新しいホスティング環境を使用するには、クライアント アプリで使用している Parse SDK を更新する必要があります。Parse Server での Parse SDK の使用に関するページの手順に従ってください。

プッシュ通知について

Parse Server 移行ガイドをよく読むと、以下のような記載があります。

Parse Server には、プッシュ通知機能が実装されていません。別のプッシュ プロバイダーに移行することをお勧めします。

ご心配は要りません。Azure では、モバイル アプリへのプッシュ通知の送信に特化した Azure Notification Hubs というスケーラビリティに優れたサービスをご利用いただけます。Parse のプッシュ通知と同様に、Notification Hubs には各プッシュ通知サービス (PNS)、APNS、GCM、WNS、さらには Kindle、Chrome、Baidu の認証情報が格納されます。Notification Hubs の Node.js ライブラリにより、Cloud Code や他のほぼすべてのバックエンド サービスからプッシュ通知を簡単に送信することができます。近日中に、Notification Hubs を使用して Parse Server からプッシュ通知を送信する方法をご紹介します。

まとめ

Parse Server のホスティング環境として Azure App Service に慣れたら、他の Azure サービスの使用についてもご検討ください。これらのサービスでは、分析、ジョブのスケジュール設定、Twillio や SendGrid といったサードパーティのサービスとの統合など、Parse Server には含まれない Parse ホスティング サービスの機能をご利用いただけます。また、App Service では Parse Server よりも多くの組み込み認証オプションが提供されます。

Parse Server をホストするために Azure をお試しになり、ご満足いただければ幸いです。Parse ホスティング サービスから新しいホストへのアプリのバックエンドの移行がうまくいくようにお祈りしています。

次回もどうぞお楽しみに。

Glenn Gailey