昨日、ずっと枕を濡らしながら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ビジネスの難しい問題ですね。全て自前でやるのは非合理な場合が多いし、依存したら一気に崩壊する危険性もあるし。
飛行機は乗りたくないけど、旅行するには、他の現実的な選択肢がないみたいな。ベルカンプさんは別だ。
*家計簿と読み上げのアプリ作ってます。自己紹介と過去ログはこちら。