2017/4/21のGlobal Azure Bootcamp 2018@Tokyoでお話してきました。
発表に使用したスライドはこちらです。
テーマ選定
スタンプカードアプリ作りたかった
妻が筋トレ(?)か何かをするにあたり、スタンプカードアプリ(別にアプリである必要はなかった)がほしい、スタンプはできれば猫がいい、みたいなことを言ってたのがきっかけの1つです。
※継続的に筋トレする習慣を作るのに必要なのは本当にスタンプカードなのかどうかはわからない
Durable FunctionのHuman Interactionパターン実装したかった
去年のServerless ConfかなにかでAzure Functionsの拡張機能であるDurable Fuctionsを知り、興味を持ちました。
中でもパターン #5: 人による操作に謎のロマンを感じ実装してみたくなりました。
一定以上のまとまりがあるコードが書きたかった
LTなり、何か記事を書くなり、技術系のアウトプットをするには技術的なインプットが必要と思っていますが、インプットの質を上げるためにももうちょっとアウトプットせねばという思いがありました。
しょうもなくてもいいからGitHubにひとまとまりのソースコードを上げられるだけコードを書くというのが今年の方針です。
振り返り
スライドでは主にコードについて書いてますが、もうちょっと取り組み全体寄りの振り返りです。
Good
- クライアントもサーバもコードを書いてGitHubに上げたこと
- 期待した動作をするアプリができたこと
- Azure FunctionはHTTP Triggerを1回触る程度でよくわかってなかったけど、全体的なお作法をざっと見た上でDurable Fucntionsのキャッチアップに入れたこと
- Durable Fucntionsの実行の仕組みもなんとなく把握できる程度にデバッグ実行したりストレージの中身のぞいたり研究できたこと
- PaaSの組み合わせ方にもデザインパターンがあり、実装するからこそそのありがたみを感じられることを実感できたこと
Challenge
- 声出すの、歌とかでなくてもほんとに音にならなくてつらい
- 全部喋らんけど資料になるから資料厚くしよう、そして喋るときはいろいろ飛ばそう、はまだ自分には早そう
- (練習した後)ギリギリまで資料を変えて本番に臨むとわりと混乱して大事などころだけ絞って喋るって緊張してると難しい。今回は資料アップロードした後もここ表現こうした方がいいとか、順番はやっぱこういう方がいいとか10回くらい直してアップロードし直した
- 実装的にあれも足りないこれも足りないとウジウジしてないで学びたいことを学ぶためのサンプルと割り切ること
- 足りないと思う部分はissueとかで残しとくともっと深めようとか現実的に稼働させたいとか思ったときに役立つかも
- 一方で個人的に本番運用するプロダクトがあってもよいなぁ
- クラウドリソースの認証・認可さすがにザルすぎる
- ログの追い方は「とりあえずサンプル1つ動いた」の次の段階くらいで意識的に時間とって把握するのがよさそう
- 今回くらいの規模のサンプルでも途中デプロイすることがあったり、単にブレークポイントはる以外にログきちんと追いたい局面が多々あった
- Azure FunctionsがV1ベース
- V2でやろうとするとnugetからのインストールからうまくいかなくて、古めのバージョンでうまくいく組みわせでやり過ごしてしまった感
- 実行の仕組みの研究とか言うわりに「どう実装されているか」をコード見ながら考えてない。動きからテキトー想像する「だけ」は研究とは言わない
- UI苦手やぁ
- よくあるアプリのパーツ実装してみるとか、作りたいと思ってるものに沿った形で取り入れてみるのはやった方が表現の幅が広がっていきそう
まとめ
総じて取り組んでよかったなぁと思います。
需要があるかはおいておいて、今回のスライドでも20分くらいじっくり喋りたかった内容だったりするので機会があればリベンジしたいなぁと思いました。
あと、今回みたいなアーキテクチャでデータの整合性はどうすると保てるのかだったり、クラウドアーキテクチャの原則は何なのかだったり、もっと踏み込んで学んだら楽しそうな分野に出会えてよかったです。
クラス設計もデザインパターンからでなく、その前提となる原則やそれを実現するための具体的なコード(の変化)を追うととても実感がわきました。
今ではクラウド設計の原則的なことも整理が進んでいると思うので、追ってけたらなぁと思いました。
勉強会ではこのセッションが特に印象的でした。
本日の資料です。 Azure Cosmos DB と Databricks を使ったCQRSパターンとラムダアーキテクチャ https://t.co/lLG3IZJfOW #globalazure #jazug
— PaaSがかり (@kazuyukimiyake) 2018年4月21日