設計Night2018で話してきました
スライドは以下です.
id:nkgt_chkonkさんに「パフォーマンス視点でのソフトウェアの設計というテーマでなんか話せない?」と持ちかけられ,当時色々考えていたこともあり「やってみるか!」という感じの経緯でできたのがこのトークです.
言いたかったことはスライド終盤に書いたように
- 一発で良い設計にたどり着ければ最高だけどなかなかそうもいかんよね〜
- 良い設計とは「変化に耐えうること」「変更にあたってコストが低いこと」ではないか
- 設計には段階がある
- 第一段階としての良い設計は「最適化の余地がある設計」ではないか
ということです.「早すぎる最適化」はもちろん良くないことですが,しかし「最適化の余地を残しておくことは重要」というような認識です.
スライド中に出てくる「美しいものは空気抵抗が少ない」というのは新幹線を開発した三木忠直さんという方の言葉で,つまり「美しいものは速い」という意味なんですが *1 ,かねがね「いい言葉だな〜」と思っていたので引用させてもらいました.困ったときはそっちの方に倒す,という感じで日々を暮らしています.
なお,この発表はズルをしていて,キュー(バッファ)に使うミドルウェアのコストに全く言及していませんでした.しかし前時代と比較してキューのようなミドルウェアはオンデマンドで利用しやすくなった,そして運用コストが下がって使いやすくなったというのはあると思います.Amazon KinesisやSQSやGoogle Cloud Pub/Subなどといったクラウドサービスがキュー(あるいはpub/sub)サービスを提供しているのが大きいと思います.以前は自分でマシンを確保して「ActiveMQを入れるぞ〜〜〜」みたいな感じだったわけですから……
ところで発表の冒頭でも言ったのですが,僕は割と野生の勘でソフトウェア設計をしがち (もちろん理論は基礎として持ちつつ) で,こういう感じで体系的に言語化するのが得意な方ではないのですが、一丁頑張ってやってみましたところ自分の中でも理解が整理されたり深まったりしたので良かったですねという感じです.
設計Night2018,いいイベントでした.ありがとうございました.
*1:必ずしも一般化できる話ではないことは承知していますが