【書評】モバイルエンジニア向けのAWS解説書『Amazon Web Services クラウドネイティブ・アプリケーション開発技法』の紹介

著者・監修の佐々木 拓郎さん、 高柳さん、および SB Creative さまより<span class="deco" style="font-weight:bold;">『Amazon Web Services クラウドネイティブ・アプリケーション開発技法　一番大切な知識と技術が身につく』</span>をご献本いただきました。

<img src="https://qiita-image-store.s3.amazonaws.com/0/3180/51537d95-b6df-5a1f-739b-e70bbe3df8cb.jpeg" width="600">


昨今のモバイルアプリケーションには大抵の場合バックエンドも必要になりますが、たとえば僕はiOSアプリしかつくれません。そういう場合に、他のサーバーサイドエンジニアやインフラエンジニアと組む以外に、ちょっと前であれば **Parse.com を利用してサクッと済ませてしまう**、という選択肢もありましたが、[来年にはサービス終了](http://blog.parse.com/announcements/moving-on/)してしまうという悲しい事態になってしまった今、やはりモバイルアプリケーションのバックエンドのインフラとして<b>真っ先に候補に挙がるのは AWS</b>です。


ただそのAWS、LambdaとかMobile HubとかIoTとか色々ありすぎて、**手を付け始める前からハードルを感じてしまう**部分があることも否めません。例えば外部デバイスからアプリで吸い上げたデータを置いておきたい場合にはどれがいいんだろう、とか。お手軽さとか値段とかそのデータをどう利用したいか等にもよるのだと思いますが、どう検討・比較したらいいのか素人目には難しく思えてしまいます。


前置きが長くなりましたが、そんなAWSの各種サービスについて<b>モバイルエンジニアを対象読者として</b> [^1] 解説されている本がこちらです。

[^1]: 実際には『対象とする読者は、モバイルやJavaScript等でフロントエンドアプリを開発するアプリケーションエンジニア』とあるのでモバイルエンジニアだけではないのですが、自分がモバイルエンジニアなのでその視点で書かせていただきます。

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51tyTEHWuuL._SL160_.jpg" alt="Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 16.07.19</div></div><div class="amazlet-detail">NRIネットコム株式会社 佐々木 拓郎 佐藤 瞬 石川 修 高柳 怜士 佐藤 雄也 岸本 勇貴 <br />SBクリエイティブ <br />売り上げランキング: 9,910<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>

（Kindle版もありますが、**固定レイアウト**のようです。）

<b>600ページ強</b>の大作です。以下、個人的にいいなと思ったポイントを紹介していきます。


##AWS各サービスの詳細かつ丁寧な解説

Chapter 3 には、各サービスの<b>特徴や使いどころ、機能・導入方法・料金・制限事項</b>など、>かゆいところに手が届く情報がまとめられています。

- 3-1 Amazon S3
- 3-2 Amazon API Gateway
- 3-3 Amazon Simple Notification Service
- 3-4 Amazon DynamoDB
- 3-5 AWS Lambda
- 3-6 Amazon Cognito
- 3-7 Amazon Machine Learning
- 3-8 Amazon Kinesis
- 3-9 Amazon Simple Queue Service
- 3-10 AWS IoT
- 3-11 AWS Mobile Hub


全項目に利用方法と基本的な使い方が書かれていて、それぞれ<b>10～20ページにわたって豊富なスクリーンショット付きで丁寧に解説</b>されているので、迷うことなく試してみることができそうです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/3180/9f2856e0-016c-6274-c7d8-b4fb398ee456.jpeg" width="600">


すぐに使う予定があるわけではなくても、これを見ながら<b>一通り触ってみる</b>のも良さそうです。一度でも触っておけば、どんなことができるのかとか、どれぐらい簡単なのかとかの感触がつかめるので。（個人的には、Lambda、Machine Learning、IoT、Mobile Hub あたりを本書を見つつ触ってみたいと思っています）


##興味深いサンプル群

Chapter4からは<b>具体的なアプリケーションを実装してみるチュートリアル</b>となっており、モバイルエンジニアにとっても魅力的なサンプルが並んでいます。


以下にそのリストを列挙してみます。

- 4-1 Cognitoによる認証を利用したスマートフォン向け写真共有アプリケーション**（iOS/Android）** 
- 4-2 API GatewayとLambdaによるサーバ連携するモバイルアプリケーション**（Android）**
- 4-3 API GatewayとCognito、Lambdaを連携した認証・認可サービス
- 4-4 API Gatewayを使ったモバイルのスタブAPI
- 4-5 DynamoDBとApple Watchによる健康情報の収集**（iOS/watchOS）**
- 4-6 iBeaconと連動する勤怠管理アプリケーション**（iOS/Android）**
- 4-7 Device Farmを利用したモバイルの多端末自動テストの実施**（Android）**
- 4-8 S3とLambdaによるキーワードキュレーションサービス
- 4-9 KinesisによるTwitter情報の収集
- 4-10 Machine Learningを用いたWeb閲覧履歴保存＆キュレーションサービス
- 4-11 Cognito Syncを使った簡易メモアプリケーション**（iOS/Android）**

出版社のサイトよりダウンロードできるサンプルコードがあるので、カッコ**（）**内にiOSもしくはAndroidのどちらのサンプルが付いているかを示しました。**iOSのサンプルはSwift**で書かれています。

個人的には「DynamoDBとApple Watchによる健康情報の収集」「iBeaconと連動する勤怠管理アプリケーション」等はIoT関連の仕事をやる上でまさにそういうものが必要な場面がありましたし、認証は多くのアプリで必要になるのでどんな感じでバックエンド側を実装するのかは知っておきたいですし、「S3とLambdaによるキーワードキュレーションサービス」や「Machine Learningを用いたWeb閲覧履歴保存＆キュレーションサービス」はモバイル側ではありませんが興味があり、自分で手を動かして試してみたくなるサンプル群だなと思いました。


##まとめ

アプリケーションエンジニア向けに書かれたAWS解説本、『Amazon Web Services クラウドネイティブ・アプリケーション開発技法』を紹介しました。普段あまりサーバーサイドの開発に携わることのない私のようなクライアントサイドのエンジニアにもわかりやすく、興味深い技術書だと思います。バックエンドやAWSまわりに興味がある・知識をつけたい方はぜひ一度書店などで検討されてはいかがでしょうか。


<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51tyTEHWuuL._SL160_.jpg" alt="Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 16.07.19</div></div><div class="amazlet-detail">NRIネットコム株式会社 佐々木 拓郎 佐藤 瞬 石川 修 高柳 怜士 佐藤 雄也 岸本 勇貴 <br />SBクリエイティブ <br />売り上げランキング: 9,910<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797386312/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>