Parse Server を Heroku へセットアップしてみる

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

今年の1月に衝撃的なニュースがありました。mBaaSとしてとても扱いやすく優れていたサービスのひとつであるParseが1年後の2017年1月28日にサービス終了するというのです。

【重要】これはParseが2017/1/28に終了する、という発表ではないですか?これは。これ以上ない優れたサービスだったのですが、、、こういうこともあるんですね。この先、どうすればいいんでしょう。

白石 哲也

さんの投稿 

2016年1月28日

これに置き換わる他のサービスを検討していたのですが、さすがParse、ただただ開発を放置して終了していくのではなくParse Serverをオープンソース化して、今後も選択肢を残してくれています。Parse Dashboardというのも発表してくれたので、それぞれどんなものか試してみました。

00 

2月に入って

The best place to stay up-to-date with the latest Parse news and events.

というブログエントリーがあり、AWSかHerokuかという選択肢が出てきました。

注:本記事は個人によるものであり、所属する企業や団体に関係するものでも代表するものでもありません。#はじめに先日、モバイル向けのバックエンドサービスであるParse.comが1年後に終了するという発…
MBaasのParseが2017年1月28日をもってサービスを終了することになりましたね。ただし、App側のSDKに加えバックエンドのParse Serverもオープンソース化されましたので、ミグレ…

上記を参考にさせていただき、ざっと見たところ、Herokuが簡単そうだったのでやってみました。また、「Parse Dashboard」もローカル上にセットアップしてみたので、それらについてのMEMOを残しておきます。

Parse Dashboardをローカル上にセットアップ

このダッシュボードは、Parse.com上にあった管理画面を自分の環境で立ち上げられる感じですね。参考にしたのは、

The best place to stay up-to-date with the latest Parse news and events.

のGetting Started。そこに書かれているとおりにやったら、ローカル上にセットアップするのは簡単でした。

githubにある「parse-dashboard」のクローンをローカルに作成し、そのフォルダに入って「npm install」(途中、「yes」とタイプするところあり。git部分は「sudo git clone …」としました)

「npm run dashboard」を実行。

01

dashboardを起動後、ブラウザで、「http://localhost:4040」を開くとParse Dashboardがあらわれます。

02

ここには、さまざまなParse Server上のアプリへの接続が可能なんだと思います。試しにparse.com上(現在まだサービスが終了する前なので)のアプリに接続してみます。インストールされた「Parse-Dashboard」フォルダ内の「parse-dashboard-config.json」に情報を書き込みます。JSON形式でParseアプリ情報を配列で書いてあげるだけで、このダッシュボード上にアプリがリストされます。(Parse.com上にあるアプリのキー情報は、「App Settings>Security&Keys」にあります。)

03

再度、ブラウザ上でダッシュボードをリロードすると、しっかりParse.com上のアプリが表示され、

04

データベースの参照などもできるようになりました!

05

Parse Server を Heroku へセットアップ

次に、いよいよParse Serverのセットアップ。Parse Server + Heroku ですが、Heroku Dev Centerにスクリーンショット付きのとてもわかりやすいステップが記載されています。

Parse Server is a Parse API compatible Express router package and an alternative to the hosted Parse service.

06

ここにある通りですが、Herokuにアカウントやデータベースを準備するところからやってみます。「Sign up」を押して氏名等入れて新規にアカウントを作成。(Pick your primary development languageは適当によく使う言語を入れておけばいいと思います)

07

届いた認証メールのURLを開くとアカウントが作成されます。(なぜかSafariで開かなかったのでスクショがここからChromeになってます)

08

ひとつアプリを作ってみます。「+」から「Create new app」

09

App Nameを入れます。これは後ほどアプリのURLにも使われることからか一意の文字列となるようです。すべて小文字で。すでに使われていたりすると「XXX  is not available」となり使えません。

10

もろもろ入力後、「Create App」

11

作成したHerokuアプリにMongoDB(無料プラン)をアドオン

次にデータベースのセットアップです。ParseはMongoDBを必要とするため、アドオンとしてMongoDBを追加します。これもHerokuは追加しやすい!「Resources」タブから「Add-ons」の欄で検索してもいいのですが、説明書きにあるスクショの製品名と若干違いがあるので、一応ここは「MongoLab add-on」のリンク先からインストールします。(「MongoLab」を検索したものでも同じでした)

12

インストール対象となるアプリを選択します。今作成中のアプリがリストに出てくると思います。

13

MongoDBのプランを選びます。ここは無料の「Sandbox – Free」を選んでおきます。

14

ここ説明書きになかったので注意ですが、無料のアドオンを選んだとしても、支払い情報を先にセットアップしておかねばならないらしいです。ここをクリックすると支払い情報を設定するページが開きます。

15 

ここはしかたなく入力

16

Billing Informationにクレジットカードが登録されます。

17

支払い情報を入れた後、先ほどのプラン選択画面で「Provision」を入れると先に進めます。

18

無事にHerokuアプリにMongoDBが設定されました。

19

自分のGitHubアカウントに接続し「parse-server-example」とつなぐ

この「parse-server-example」は冒頭にリンクしたQiitaの記載にも

サンプルといいつつ、自分のアプリ向けにいっさい手を加えずそのまま使えます。

とあるようにかなり優れたファイルです。これとアプリを紐付けます。

Deployタブにある「GitHub」をクリック。

20

「Connect to GitHub」を押します。

21

GitHubにログイン。

22

「Authorize application」を押してGitHubにHerokuとの接続を許可します。

23

この次のステップがスクリーンショットだけだと若干わかりにくいです。まず、この説明書きからもリンクされている「official example」をまず開きます。

24

開いたGitHub上で「Fork」しておきましょう。Heroku側では接続したアカウントにぶらさがっているリポジトリを検索することになるようです。

25

26

それから、「Search for a repository to connect to」の検索窓に「parse」と入れると、自分のGitHubアカウントにぶらさがっている「parse-server-example」が検索結果に出てきます。「connect」を押します。

27

無事に接続されたら、

28

「Manual deploy」にある「Deploy a GitHub branch」欄の「Deploy Branch」を押します。

29

デプロイが始まります。

30

31

デプロイが成功すると「Your app was successfully deployed.」と表示されます。

32

「View」を押すと、「https://xxxxx.herokuapp.com」が開き、「I dream of being a web site.」と素朴な夢が表示されます。

33

ターミナルから以下のようなcurlを投げると「{“result”:”Hi”}」と返ってきて正常に動作していることを確認できます。(「jiminycrickets」という部分はHerokuアプリ名です)

34

動作確認とParse Dashboardからの接続

さて、セットアップをすませた、こちらのサンプルは、「https://xxxx.herokuapp.com/test」にアクセスするとこんなページが現れます。

35

1、2、3と順番にテストボタンを押してみましょう。

36

37

38

39

「Congrats!」と出たら成功です。しっかりParse Serverも動いているということでしょう!

Herokuの「Config Vars」というものを使って管理画面上で定義した変数をHerokuアプリ内で利用できるようです。この仕組みを使って、このexampleのindex.js内で定義している「APP_ID」「MASTER_KEY」「SERVER_URL」などをダッシュボードからカスタマイズしてみようと思います。(MASTER_KEY等をここでカスタマイズすることでParse Dashboardから接続できるようになりました)

Herokuダッシュボードの「Settings」タブにある「Reveal Config Vars」をクリック。

40

「MONGOLAB_URI」は自動的に作られます。

41

index.js内の「process.env.XXXX_XXXX」というところに代入される感じですね。代入しないと「||」の右側がデフォルトとして使われる感じのようです。

 42

さて、こうしてHeroku上に設定した自作のParse Serverへ、localhostに表示した自作Parse Dashboardからアクセスできるかを試してみようと思います。冒頭で作成したParse Dashboardのクローン内にある「Parse-Dashboard」フォルダ内の「parse-dashboard-config.json」を再度開き、二つ目のParseアプリとしてJSON形式でアプリ情報を書き込みます。「appID」と「masterKey」はHerokuダッシュボードのSettings「Config Vars」で設定した任意の文字列です。

43

さてつながるか。localhostにセットアップしたParse Dashboardをリロードしてみます。するとエラーなく二つ目のアプリが表示されました!

44

選択すると、まだ何もないけどブラウズできてうまくいったようです。

45

とりあえず、ここまでMEMOしておきました。が、重要なのはこれがしっかり使えるのか、とか、既存のParse.comのデータを持ってこれるのか、とか課題はいろいろとあると思います。

引き続き、何かわかったら、Parse Server系の情報もMEMOしていこうと思います。

追記:「Parse Server + Heroku : Facebook / Twitter ログインを試す」を追加しました。