#AWSDevDay Tokyo 2018 で色々学んだ話とか

1日目と3日目、それぞれ午後から参加してきた!
しかし、どうせなら午前中から参加すれば良かったな……と反省。
次回こそは。
 
やや遅くなってしまったが、まずは1日目の感想を。

お品書き。

[何で参加しようと思ったか]

そもそもこのイベントを何で知ったんだったか……Twitterだった気もするし、AWSからのメールだった気もする。
ともかく、9月の終わりくらいになって、遅ればせながらイベントスケジュールをみたら、サーバレスだのマイクロサービスだのホットというか興味のある話題がいっぱいだったので、迷わず参加を申し込むことにした。
 
申し込むのがやや遅かったため、人気のある回は既に埋まってしまっていた。なんとか空いている講演をピックアップして申し込みをしたが、ある程度余裕を持って締め切っていたらしく、当日飛び入りで参加できる講演がほとんどのようだった。現に、自分も3日目の午後一の講演は飛び入りでの参加だった。
 
Twitchでのライブ配信も無料で見ることができるので、会社で仕事しつつライブを見るのでも十分だったかもしれない。実際、予約を取ることができなかった2日目の講演はライブを見ようと思っていたのだが、発熱でダウンしてしまったため計画通りには行かなかった。

 

[1日目(10/31)の感想ツイート]

 
 

[1日目(10/31)に視聴した講演]

The Twelve-Factor App で考える AWS のサービス開発 / 千葉悠貴氏、畑史彦氏

www.slideshare.net AWSのソリューションアーキテクト2名による、12 Factor Appで疎結合なアプリになっていればクラウドのメリットを最大限に活かせるよ、というお話。
 
12factor.net

セッションではそれぞれのファクタについて、コードベースであればCode Commit、依存関係であればSAM、といった具合に、AWSの各サービスと対応づけて説明がなされていた。もともと12 Factor Appをほとんど理解していなかったものの、多少触ったことのあるAWSのサービスを例に説明されていたこともあり、とてもわかりやすかった。
 
バックエンドサービスとして、AWSではS3をはじめとしてRDSやDynamoDB、SQSやCloud Watchなどがあるが、それらを利用する際の注意点として、遅延・停止の可能性を考慮してアプリを作るべきという話が挙げられていて、何度か事故にあった経験のある身としては耳が痛かった。
 
廃棄容易性の話題で、グレースフルシャットダウンができるか、という話でバッチ処理に話が及んで、これまた耳が痛い。Step Functionsあたりへの移行計画はあるものの、手が追いつかず……。
 
開発/本番一致も、自分は極力心がけているものの、チームメンバーにまで十分にこれが浸透しているとは言えず、同じく先日事故を起こしたばかり……穴があったら入りたい。
 
全体として、12 Factor Appの概念自体はきちんと勉強したことはなかったものの、これまでの開発経験でなんとなく目指すべき方向性として見えてきていたものが間違っていなかったということが分かり、個人的には良い収穫だった。  
 

外部に依存したコードもテストで駆動する / 和田卓人氏

 
例のAAでおなじみの和田さんのセッションを聞くのはこれが初めてだったので、やや緊張しながら参加。レッドブル開封のルーティーンなどを経て本編へ。  
AWSなどに依存したコードをテスト駆動で品質を挙げていく様子が分かりやすく説明されていた。
分かりやすく、とは言え、これを実践できるか、と言われると別問題……。
 
「テスタビリティをこじあける」というのは、概念としては理解していたものの、改めて説明されるとなるほどこうやるのか……と目から鱗な感じだった。  
テストコードのないコード=レガシーサバンナ、という概念は使い勝手が良さそう。レガシーサバンナではシンプルな方が生き残れる、ということで、利用するテストフレームワークも、easyなものではなくsimpleなものを選ぶ、というのも良かった。
 
今のチームのコードも、ややレガシーサバンナ感があるので、なんとかしていきたいところだが、ただテストコードを書いて終わり、ではダメだと和田さん。テストコードが書けたとして、ひどいロジックのコードが残ってしまっていいわけではない。テストは品質をあげるきっかけにはなるが、品質を上げるにはプログラミングすなわちリファクタリングファ不可欠である、と。いいこと言うなあ……。
 
事実と情報の違いの話も、今回のテーマとは直接関係ないけれど、マイクロサービスにおけるトランザクションを考える上で示唆的だった。

 

日経電子版における PWA 活用事例 / 安田竜氏

月間3億アクセスを支えるPWA。前からちょくちょく話題になってはいたので、気になるテーマであり、フロントエンドの最適化という意味ではとても勉強になったものの、全体的にAWS感が薄かった点が残念。
 
個人的にパフォーマンス改善のテクニックで一番目を引いたのがresource hintsのprefetch/prerenderあたり。2014年の初め頃に画面の先読みを無理やりWebSocketなどを利用して実装して遊んで研究していた身としては、今はこんな便利なHTMLタグがあるんだな……と感無量だった。あとで調べたら2014年末あたりから標準化が進んでいたらしい。もう少し追い続けていれば良かったな、と反省。
 
Workboxと言うService Workerライブラリも勉強になった。機会があったら使ってみたい。

developers.google.com

 
 

Serverlessを極めるためにDynamoDBデータモデリングを極めよう / 照井将士氏

PWA話で予約していたセッションは最後だったのと、諸事情により早めに帰らなければ行けなかったので、泣く泣く電車に乗ったところでTwitchのライブ中継の件を思い出して、充電の残り少ないiPhoneで本セッションを視聴し始めた。  
 
前提として、以前自社のDynamoDBマスターにほぼ同内容の講義をしてもらったのだが、その時は初回だったこともあり、頭に入り切らなかった。今回は、2回目ということもあり、以前よりは多少理解できた、ような気がする。  
 
来年あたり、スキーマレスの特性を活かしたアプリケーションの実装にチャレンジしてみたい。できればAWS AppSyncとかと組み合わせて。  

 

[まとめ]

・無自覚に12FactorApp実践できていたが、もう少ししっかり学んでおきたい
・テストコードを書いてレガシーサバンナを生き延びたい
・PWA面白そう
・DynamoDBデータモデリング極めていくぞ!
・目黒が思ってたより近かった。勤務地として悪くないかも。