しゅみは人間の分析です

いらんことばかり考えます

 ある日、「最新技術を使いたいが、ベストプラクティス(定番の手法)がなくて困る」的なことを耳にした。当時は何も思わなかったのだが、最新技術とベストプラクティスは両立しえないことに気づいた。

 最新技術とはなにか? ベストプラクティスとはなにか? という定義論的なつまらない議論をすれば、いかようにでも言えるのだけども、素直に解釈するならば最新技術の領域にベストプラクティスは存在しない*1。皆様で試行錯誤をして、局所最適解を見つける課程にあるからこそ、最新技術なのではないだろうか。

 たしかに、試行錯誤を行う一員に自分が加わり、最適な設計を模索するのはリスクが高い。それゆえ、頭をあまり使わずに「いい感じの設計」を享受することができるのは、ある程度枯れた技術のみということになる*2。これは最新の領域への関わりが本質的に投資行動であることを導く。投資には必ずリスクがあり、技術(手段)の選択もリスクを伴う投資である。判断には誰かが責任を取らなければならず、あてが外れたら負債が最大化する前に処理をしなければならない。

 私の少ない経験から得られている教訓は、システムの根本原理を抱えるロジックはPure * Objectにすることである*3*4。本質的な部品に依存が少なければ、フレームワーク・ライブラリが変わっても言語が変わらない限りは負債処理がやりやすい。Pureなオブジェクトにこだわるのがベストプラクティスなのではないか? という疑問も出てくるが、この手法は<ベストプラクティス>ほど頭を使わないで済むものではないので、世に求められているそれではないだろう。

*1:ベストプラクティスがあるほど枯れてるが、次の世代の技術がないケース。ありえるが、それはその領域が死んでるのではないだろうか。

*2:以前どっかの日記で書いたが、枯れたフレームワークとは設計思想を固定化してチームの開発速度を得るトレードオフを持つので、状況によっては大きな利点がある。

*3:アプリケーション実装者の視点にあえて偏らせているのですが、SRE的な領域だとどうするんでしょうね。

*4:さらっと書いたが、言うほど簡単なことではない。複雑な現実の仕様を噛み砕いて蒸留する苦しみがある。