CoC, good and evil
id:yuki_neko_nyanさんのエントリを見て。
以下抜粋。
CoCについての一番の議論は多分、「中身が見えない」つまり「implicit」ってことなのだろう。 誰がいつ何をどうやって適応しているのかわからないものは信用できない。 なるほど、いかにもそのとおりかもしれない。信用できないから何かを記述する。コードを?ルールを?或いは別の何かを? 悪意のある世界に住んでいれば、そうも思うだろう。明記されていなければ、何が起こるかわからない。 しかし、フレームワークは善意の、とことん善意の世界だ。善なるフレームワークでなければ、ほかの誰かに食われてしまう。 良貨は悪貨を駆逐する。最終進化においては最も良いものだけが残るような世界だ。 だから私はあなたを信じる。あなたが暗黙の約束といっても、私はあなたを信じる。 その約束は善なる意思によって作られたことを信じる。ちょっとだけコードを覗くかもしれないがあなたを信じる。
おー、なるほど。フレームワークは善意の世界か。特にCoCは本当に善意そのものみたいなところがありますね。
たしかにそういう考え方は興味深いですね。自分が出来るかはともかくとしてw
しかしながら、そういう観点で見ると、世の中のフレームワークは悪意を見越したものが多いということになってしまいます。
ただ、設定を明示的にというのが必ずしも悪意を見越したにつながるかは、解釈次第だとは思います。
自分の解釈では、
・善意・悪意というよりは、心理的なプレッシャーや保守性の考え方
・implicitとexplicitは、コストの問題
っていうのが大きいんじゃないかと思います。
動いている、けどなんでこうなってるかわからないってのがたぶんに心理的にプレッシャーにはなりそう。特に初期導入時と保守時。
保守の場合に規約だけだと不安がる人もいるんじゃないかと。
規約ベースで出来上がっているシステムに対して手を入れる場合にどこが規約でどこが規約じゃないかを
探すコストはどの程度なんだろうとちょっと考えてしまいます。
また、上記コストと、全て明示的に記述した場合に探すコスト+多くの量を記述するコストで
どちらのほうが上回るか、これが知りたいですね。開発の最中だけじゃなく、運用・保守まで含めた意味でのコストバランスを
見ていくべきなんじゃないかなあと最近考えています。
だから、
善なるフレームワークでなければ、ほかの誰かに食われてしまう。
これにはあんまり同意できないかな。そうあるべきだとは思うけど。
なぜならデファクトになっているもののほとんどが明示的な設定をベースにした作りになってるから。
明示的ではっきりしていることが、欧米圏の一種の文化なのかもしれないけど。
またmetaなフレームワークを作る人とアプリケーションよりなフレームワークを作る人では
善意・悪意のあり方もちょっと違ってきそうですね。
metaなのを作る人は善意の固まりだけど、アプリよりなのは多分善意と悪意の狭間な感じじゃないでしょうか。
善意だったら上手くいくのはわかるんだけど、プロジェクトではそうも言ってられないんだよーと
言う叫びがちょっとだけ聞こえてきそうです。
どうしても信じられない人は、フレームワークを使うより作る人になるべきだ。友人にできないなら支配するほうが手っ取り早い。 それができる世界にすんでいるのだから。 そっちのほうが一つずつ設定を書いていくよりは、よっぽどいけてると思うけどね。
うん。これにはめちゃ同意。
やっぱり愚痴を言うだけじゃなくて、なにかCREATEしていく力が重要なんだと、そういうことですね。
何か作るときに、自分はなるべく善意でありたいなあ、でもバランスは重要っす、と心がけています。