昨日、ずっと枕を濡らしながらAWS Mobile Hubについて調べていたので、AWSとかさっぱりわからない人の視点で、Parseとの比較をしてみる。

そもそも僕はAWSを本格的に使ったことがなく、Voicepaperの音声ダウンロード先にS3を使っているぐらいだ。つまり、AWS童貞と言っても過言ではありません。

さらに、一応CakePHPでWebサービス作ったことはあるものの、そんなのは3年以上も前でもう忘れたし、その時のサーバはサクラのレンタルサーバである。つまり、バックエンドなんてわからない、残念なプログラマという位置付け。

そういう人だからこそParseをこよなく愛し、Taxnoteに自動同期つけようと4か月近くCoreDataとの連携をせっせと準備し、UIもいろいろできた、リリースするかといったところで、Parseご臨終の悲報を聞いたのが先日だったわけです。

いやあ、僕は自分のコードでバグないかとすごい心配してたけど、サービス自体がなくなるとは想定外でしたね。つい最近までダッシュボードをリニューアルとかしてて、そんな気配は微塵も感じなかったし。

いつものようにParseのダッシュボード開こうとしたら、悲しい告知文がでかでかとあり、ショックなんてもんじゃなかったですね。

ザッカーバークも育児休暇から帰ってきたら、気分が変わったのかな。

というわけで、AWSとかよくわからない人が、Parseからつい最近出たAWS Mobile Hubを数時間勉強した感想を書いてみます。

AWSマスターの人は全く役に立たないけど、似たような境遇の人にはちょっと役に立つかもしれない。

なぜAWS Mobile Hubなのか

いや、実はまだどれに移行するか、そもそもバックエンド自分で頑張るかなども含め、検討中なんですよ。

でも、正直、この分野はParseが圧倒的に使いやすく、有力な他の選択肢はいなかったという認識なんですね。偏見ですが。

さらに、バックエンドみたいな依存度の高いサービスで、またParseみたいな事態が起こったら怖すぎる。たくさん、似たようなサービスあるけど、3年後に生き残ってそうな安心感があるものはといえば、難しい。

と考えたところ、FirebaseかMobile Hubを触ってみようかと思い、Mobile Hubの方が、AWSのツールだからまだ安心感あるわと思って、こっちから勉強することになりました。

ちなみに、Parseの代替は?っていうリンク。いろいろあるんですね。
https://github.com/relatedcode/ParseAlternatives

AWS Mobile Hubの情報源

最近発表したばかりでベータなのもあり、日本語の情報源は少ない。英語の情報源も少ない。

日本語で、情報が多かったのはコレでした。
AWS Mobile Hubで超かんたんモバイルアプリ開発 (Android / iOS)

そして、英語も入れると、一番良いのは、Amazonの解説動画を見ることです。これを見たらだいたい概要つかめました。

そして、何より、Mobile Hubは実際に触りながら分かるという具合にできていて、自分が使いたい設定を選んでサンプルコードを生成してくれる。

だから、ざっと上記のリンクで概要掴んだら、いきなり触ってみるのが一番良さげ。

AWSのいろんな単語に戸惑う

まず、最初に戸惑ったのが、AWSのいろんな単語です。

やれ、Cogniteだ、Lamdaだ。初めての自分にはツールがありすぎて、どれがどれだかわけわかめ。

サービスの名称を見ても、何をしてくれる機能なのかはわからないものが多い。まるで、アプリを開いたら、アプリ独自のアイコンや名称ばかりで、どのボタンもタップするまで動きがわからないみたいな。

今思うと、なんでAWS DataStorageじゃなくて、S3っていう名前なんだろうか。

そして、説明を読んでもAWS童貞にはあまりピンとこないのも多い。

昨日わかったことは、AWSはいろんな便利ツールがあるけど、それをモバイルアプリ開発で、簡単に扱うツールというのがMobile Hubらしい。

Parseみたいなサービスを作るぜ!ってAmazonが新規に開発したという感じではなく、これ使うとAWSのツール群と簡単につながりますよみたいな。

Mobile Hubで出来ること

ユーザ認証 (Facebook、Googleなど)、プッシュ通知、S3使ったコンテンツ配信、ユーザのデータ保存(写真とか)、解析ツール、クラウド側のロジックを書く。

この6つが簡単に設定できると。

ユーザ認証はParseみたいに、洗練されたUIを使えるわけではなく、シュールなWebっぽいUI。そして、悩ましいのは、Facebook連携とかしない、メアドで独自のアカウント作成してもらう時は、自動でやってくれないみたいだ。

多分、何かと繋げればやれるのだろうけど、そのままだと出来ませんみたいな印象。

S3使ったコンテンツ配信は良さげ。何と、全世界のサーバ使ったCDNか、一つのポイントから配信するかの選択もできる。これはいい。

ユーザのデータ保存は、写真とか、そういうものを保存できる。

で、僕が最初に探したのは、CoreDataと連携して、データベースの自動同期をしたいので、このUser Data Storageというデータ保存機能はそういうことできるのかと。

調べた結果、できないみたいだ。それはDynamoDBというデータベースツールを使うらしい。それはMobile Hubには入ってないから、自分で設定してなみたいな位置づけらしい。

どう繋げるかは、まだよくわかってない。

AWS Mobile SDK

Amazonさんは、だいぶ前からAWSとモバイルアプリ開発を繋げるSDKを出していたようだ。調べて初めて知った。

それがAWS Mobile SDK! これは、リレーショナルデータベースを使えるDynamoDBとか、S3とか、そういうものもiOS SDKから使える!

じゃあ、これ、Mobile Hubとどう違うのと。悩ましい。おそらく、Mobile Hubは連携の面倒な部分を一気にやってくれるんだろうけど、この二つをどう区別したらいいかが分かってない。

サンプルコードを見てみたら、メソッドとかがParseで慣れていると使いにくそうだというのが印象でした。Blocksの書き方とか、SaveEventuallyとか、そういう便利なメソッドはなさそうだ。

僕みたいな人がここで疑問に持つのは、じゃあ、AWS Mobile Hubって一体なんなのかっていうことだと思う。AWSのツール全部と繋げるわけでもなさそうだけど、やろうと思ったらAWSのツール全部使えるみたいな印象だし。Mobile SDKとの位置付けを説明してくれよと。

Amazon Mobile SDKのリンクがこちらなんだけど、飛んだら、なぜかMobile Hubのボタンが中央にあるぞ。この困惑のUXは如何なものか。
https://aws.amazon.com/mobile/sdk/

親切な人が教えてくれるかもしれないので、その時はこの記事をアップデート。

*親切な人が教えてくれました!

Mobile Hubは、環境構築 + テンプレートソースコード自動生成するものらしい。AWSのリソースは複数のサービスを連携して使用する必要があるため(例えば、LambdaとIAMを設定等)、それをサクッとやってくれると。

となると、Mobile Hubで環境構築して、AWS Mobile SDKを使うことになりそうなので、SDKの使いやすさがキモとなりそう。

AWSだけあって

AWSだけあって、いろんな有名サービスがアプリのバックエンドとして使ってるし、使いこなせば最強っぽい。

AWS Mobile Hubで最初から連携できることは限られているけど、AWSのいろんなツールに連携したら、いろいろできるみたいだし。

しかし、その使うための導入部分のUXとか、分かりやすいドキュメントとか、SDKの出来などがParseの強みだったんだけど、そういうのに慣れていると、結構頑張って、わかりづらいジャングルを突き進まないといけないイメージ。

多分、一発もののアプリならFirebaseとか使った方がサクッとやりたいことはできそうではあるが、長期的にやりたいプロジェクトとかなら、AWS使った方が良さそう。

いやあ、勉強しないといけないことは多そうだ。。でも、AWSはそんな簡単に亡くならないだろう。。多分。。

こういうインフラ依存とか、プラットフォーム依存って、ITビジネスの難しい問題ですね。全て自前でやるのは非合理な場合が多いし、依存したら一気に崩壊する危険性もあるし。

飛行機は乗りたくないけど、旅行するには、他の現実的な選択肢がないみたいな。ベルカンプさんは別だ。


*家計簿読み上げのアプリ作ってます。自己紹介と過去ログはこちら