愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

Webアプリのなんかアレ

  • HTTPはそもそもstatelessだ
  • sessionとかをホゲホゲしてstateを持ち込むけど、そっちを基準にして考えるよりstatelessを基準にして考えた方がいいと思う
  • ここからはWebアプリのことなので、プロトコルから演繹するものかどうかはアレだけど続ける
  • HTTPは本来statelessだから、副作用を持たない(または副作用が推奨されない)関数型言語が向いてるぜ!っていうのはいきすぎ
  • その逆でもないけど、継続を使ってアレアレするぜ!ってのもアレ
  • プロセス内にずーっと持ってるものと、リクエストごとにnewするもの(必ずしもオブジェクトじゃなくてもいいけど)が頭の中 / 設計上で区別されていて、両者が然るべきカタチで使い分けられていれば十分な気がする
  • 前者であるべきものが後者になっていたり、後者に入るべきものが前者に入っていたりすると悲しい
  • たとえば前者の内容を、リクエストごとに書き換える必要があるとか(前者はほぼimmutableでよいものになると思う)
  • 分かりやすい(?)前者は、DBのslave/master、shardを解決するクラスのインスタンスとか
  • 分かりやすい後者は、Context object(あるなら)とか、Request objectとか
  • 性能とか気にならないなら、全部後者だと余計なこと考えなくてもいい気がする(現実的には厳しいとおもう)
  • Request的なものはimmutableでいい
  • Contextにstateが多すぎると破滅するけど、ないと多分不便
  • Response的なものはmutableでないと不便


1〜2年後くらいに自分でこれを見て、「青いなあ〜」と思えることを希望

※追記 もっと早いほうがいい