『Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド』という本を書きました

かなり久しぶりの更新ですが、タイトルの通り『Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド』という書籍を執筆し3月16日より発売されましたー。

出版社はマイナビ出版さんで、もちろんAmazonで買えます! 

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

 

目次は以下のようになっています。総ページ数は297ページと前回(263ページ)をわずかに上回る分量となりました!

Chapter1 サーバーレスアプリケーションの概要
1-1 サーバーレスアプリケーションとは
1-2 ユースケースアーキテクチャパターン
1-3 サーバーレスアプリケーションのライフサイクル管理概要

Chapter2 Amazon Web ServicesAWS)利用の準備
2-1 AWSアカウントの取得
2-2 AWSにおける認証と認可について
2-3 リージョンの選択
2-4 AWS Command Line Interface(AWS CLI)の準備

Chapter3 インフラを自動化しよう
3-1 Amazon CloudWatchのアラームをトリガーに自動処理をする
3-2 Webサイトの状態を定期的にチェックする

Chapter4 Twitterのリアルタイム分析をしよう
4-1 Amazon Kinesisを使ってTwitterのデータを受け取る
4-2 AWS Lambdaを使ってストリーミングデータをAmazon DynamoDBへ保存する

Chapter5 写真投稿サイトをシングルページアプリケーションで作ろう
5-1 Webサイトの概要を確認する
5-2 バックエンドのAPIを実装する
5-3 フロントエンドを実装する
5-4 Amazon Cognitoを利用した認証処理を追加する
5-5 Amazon Rekognitionを使って自動タグづけを行う

Chapter6 サーバーレスアプリケーションのライフサイクル管理
6-1 AWS Serverless Application Model(AWS SAM)詳細
6-2 複数環境の管理
6-3 デリバリプロセスの自動化(CI/CD)

Chapter7 サーバーレスアプリケーションのトラブルシューティング
7-1 メトリクスのモニタリング
7-2 AWS X-Rayを利用したトラブルシューティング

 

 

さて、今回の書籍執筆にあたりいくつかの試みがありました。まず、昨年のAWS Summit Tokyo 2017のタイミングで『実践AWS Lambda』という本を書いて発売されたのですが、このときのポストにも書いたようにいくつかの点で心残りがありました。 

また、スクリーンショットに関しては今回は主に初心者向けということでなるべくマネージメントコンソールからの操作にしようという方針だったので、スクリーンショット多めだったんですが、次回からは全てCLIを使った手順にしようと強く思いました。CLIベースであれば画面のアップデートによる影響を受けないので。

なかでもこのスクリーンショットによる手順の問題はずっと気になっていた点です。というのもロードマップ情報を知る立場として、対外的には言えないもののAWS Lambdaのコンソールがアップデートされることを実は知っていたのです。ただし、執筆中に聞いていた範囲ではそこまで大きなものではないはずでした。しかし、実際にAWS re:Invent 2017で発表され、その大きく様変わりしたユーザーインターフェースに驚いた方も多いと思います。これだけ大幅な変更が入ることがわかったのは脱稿した後でしてどうしようもなかったというのが実情です。

実際のところ、このマネージメントコンソールのアップデートで既存資料が影響を受けるというのはあるある話なんですね。例えば、前日夜中までかけてハンズオン資料作って、翌日いざってときに画面が変わってるとか。

しかし、『実践AWS Lambda』に関しては6月に発売開始され、マネージメントコンソールのアップデートが発表されるのが11月末でした。言ってみれば賞味期限として半年程度しかないことになります。

書籍の場合、機能のアップデートが多いと追従できず陳腐化しがちという課題もあるのですが、コンソールのアップデートというのはまた違います。今回のように大幅な変更が入ってしまうと解説している手順自体が変わってしまうわけです。というわけで前回の書籍でやりたくてもスケジュール上の問題でできなかったCLIによる手順を今回の手順では全面的に採用しています。

その結果、スクリーンショットが少なく初心者の方には少し手が出しづらいものになってしまったかも知れません。その点に関しては申し訳ないと思うものの情報の賞味期限を延ばすためでありご理解いただけると嬉しいです。

また、ほとんどの手順をCLIで解説したことで発生した課題もあります。それは1つのコマンドが非常に長いものが多く紙面サイズ上一行で掲載できないのはもちろん複数行にわけるにしてもキリの良いところで改行できないというなかなか悩ましい問題がありました。なるだけ対応したつもりではありますが、わかりにくい箇所があるかもしれません。

 

さて、それ以外では前回は主にAWS Lambdaの機能や設定項目について解説した内容となっていたのですが、実際のところAWS Lambdaを中心とする「サーバーレス」なサービスを活用して構築する「サーバーレスアプリケーション」では各サービスの設定方法だけでなく、実際にアプリケーションからどう呼び出すかがイメージし辛いという声をよく聞いていました。そこで、今回は企画段階からユースケース別に実際のアプリケーションをサンプルとしてコードベースで解説するというものにしようという話になりました。そのかわり各サービスの機能や設定方法の詳細に関してはそこまで言及せず、あくまで組み合わせや選択時における考え方を示すだけにしようというのが本書のコンセプトでした。そこで実際のよくあるワークロード、ユースケースをもとにサンプルとなるアプリケーションを用意していきました。

とはいえ、ページ数やスケジュールの都合で盛り込めなかったものが多いのも事実でした。本当はテストに関しても深掘りしたかったところです。考え方はコンテキストの違いによってもいろいろあるものの1つの考え方を示したいという思いがあったのですがこちらに関しては残念ながら見送りました。また、シングルページアプリケーションの章において実画像の削除処理をAmazon DynamoDBのストリームをもちいて非同期で行うというものを盛り込みたかったのですがこちらに関してはページ数の都合で割愛となってしまったことは残念です。とはいえ、触れるべき内容ではあるのでこちらの処理に関してはサポートサイトにて別途配信を予定しています。

それ以外にも、例えばAWS LambdaでDead Letter Queueを用いてより信頼性・堅牢性の高いアプリケーションをしていく話やAWS Step FunctionsとAWS Lambdaを用いた分散バッチ処理実装やLambdaファンクションのオーケストレーションといった部分も色んな事情が重なって含めることができませんでした。まあ色んな事情の多くはスケジュール的なものだったりするのですが。

 

なお、今回ももちろんサポートサイトが用意されています。

book.mynavi.jp

 

こちらのサイトでは本文に含まれているソースコードが全てダウンロードできるようになっています。正直なところ、本文に記載されているコードを全て手で写して実行するのはかなり大変な作業になると思いますのでダウンロードして活用いただければと思います。

また、今後発見されたミスや誤字などの修正に関しても随時こちらのサイトに記載されていきます。
※既にいくつかご指摘いただいています…m(_ _)m

 

あと、発売を記念して購入者限定のセミナーをマイナビさん主催で開催することになっています。購入した方であれば無料で参加できますのでぜひお越しいただければと思います。当日は私のほうからはサーバーレス関連サービスのアップデートならびに最新事例のご紹介を行います。また、別のものがサーバーレスアプリケーションのライブコーディングをお見せすることも予定されています。

もちろん、私がいるので本の内容に関する不明点などを直接ご質問いただいても構いませんし、感想などをいただけると非常に励みになります。

また、当日は来場の方向けに特製AWS Lambda Tシャツを御用意していますのでお時間がありましたらぜひお越しいただければと思います。

お申込みは以下のサイトよりどうぞ。

2018年3月発売予定『Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド』で、ご予約・ご購入者限定イベントを開催します! | マイナビブックス

 

なお、『実践AWS Lambda』に関しては現在改訂版を準備中でして、発売以降のアップデートを盛り込むだけでなく手順をすべてCLI化します。こちらは順調にいけば今年のAWS Summit Tokyoあたりでお届けできるのではないかと思っております。

 

最後に、技術書に関する今後の在り方について個人的に思うところをつらつらと書いて終わりにします。今回の書籍は執筆時間がなかなか取れずダラダラと期間をかけてしまったのですが、そこに年に一度のグローバルカンファレンスであるAWS re:Inventが重なっていたこともあり紹介しているサービス群にもいくつかアップデートが入っていたりします。今回は各サービスの深掘りではなく組み合わせとアプリ実装に重きを置いていたのでAWS Lambdaのマネージメントコンソールの問題以外は大きな影響はなかったものの、やはりクラウドのような進化の速いサービス・プロダクトに関する解説書というのは難しいなと強く感じたのも事実です。電子版はアップデートしやすいのでまだしも紙の書籍に関しては特にそう思います。

一方で技術書の類はどういうわけか事実として紙媒体のほうが好まれます。また、公式のドキュメントではわかりにくいところがあるのも事実だと思います。特に英語のドキュメントを翻訳しているものなどは日本語表現としてわかりにくいことも往々にしてあります。

そういったこともあり、日本語執筆者による解説書の有用性は認めるものの、先述したとおり機能のアップデートが早く、多いとそれに対して紙媒体では追従が難しく陳腐化しがちというのは作者としてはそれなりの苦労をもって書いている以上悲しい気分にもなったりするわけです。

もちろんすべての技術書が同様とは思いません。長期に渡って手に取られる優れた技術書というのも数多く存在します。特定のサービスやプロダクトについて解説するものだからそういうことに陥りがちというのもわかります。

と、まあこんな感じでモヤモヤした気持ちを抱えたまま答えも出ずに過ごしていますw

 

というわけで、とりとめもなく書いてしまいましたが、各種勉強会での登壇依頼もお待ちしていますので、こんな私でよければTwitterあたりで雑に絡んでいただけますと幸いです。

 

©Keisuke Nishitani, 2018   プライバシーポリシー