utilパッケージ不要論(及び、書籍刊行に向けた進捗共有)


From:

Stephen S. HANADA

Shinjuku, Tokyo

Sunday, 01:11 p.m.

親愛なる友人へ、

いかがお過ごしですか?

utilなどというパッケージは不要だ」

先日、私は職場でそのように叫びました。事実、私はそう信じています。特にWebアプリケーションのDDDやClean Architecture、OOPにおいて本当に必要な状況はかなり限定的で、本質的には不要、さらに言えば、存在するべきではない、とすら言えます。同じことはcommonlibrarycoreなどといったものにも該当します。私はこれらのものが出てきた時に、次のように冗談を言います。

  • core →「核となるもの? 核爆弾でも作る気か?」
  • common →「常識(common sense)なのか? 少なくともこれは良識(bon sense)的なパッケージ/関数ではない」
  • utility →「公共事業(utilities)をやるのは結構だが、ゴミ最終処分場を街中に作るのはやめろ」
  • library →「図書館運営をするほどの余裕があるのか?」

言葉遊びでしかないです。しかし、このような言葉遊びで問いかけるべき時があります。

もちろん、こういう冗談や言葉遊びをせずに、純粋に技術的に、これらのパッケージに対してその是非を問うことは可能です。例えば、「utilに置かれる関数は、おおよそ汎用的過ぎて、作った時には意図が明確であっても、使うときにはその意図は不明瞭になる」、「そのため、その関数は使われなくなるか、パッケージが肥大化するかのいずれかの傾向にあるから、クラスや構造体、型に対しての独自実装をした方がよい」という感じに話すことができます。

しかし、このような技術的な教訓めいたものは、それに関連した痛みを味わった人にしか通じないです。痛みを味わった人は十分に考えたことがあり、この教訓の意図や意味を理解し、把握し、既にそのように行動しています。つまり、この教訓が通じる人にはこの教訓は不要です。しかし、痛みの味わったことのない人は表層的な意味しか理解せず、その場ではそのように行動しても、別の場所ではこの教訓を無視するでしょう。だから、本当に伝えたい人にはこの教訓は伝わりません

だから、考えさせなければならないのです。回りくどくても、言葉遊びで意味を問い、本当に適切な場所なのか、本当に適切な名前なのかを、考えさせ、自分で問えるようになれるように伝えなければなりません。

これは技術に限った話ではないでしょう。

適切な名前で呼べ、

というのは、日常でも科学でもそうでしょう。「アオ」と言って、緑を指すのが適切な場面もあれば、藍色を指すのが不適切な場面もあります。文脈や状況に合わせて適切さは変わるというのは自明のことです。しかし、その文脈に応じた適切さを逆手に撮って、一つの名前に多くを寄せ、自分が該当すると思ったものをなんでもかんでも人は入れるのです。「愛」に「執着」や「見栄え」を入れたり、「陰謀論」に「正しさ」や「おろかさ」などを入れたりするのです。そして、utilityによく分からない関数が大量に入れられ、コードベースが肥大化し、たとえアーキテクチャとして優れていても身動きが取りづらくなります(そのようなものを許容するのはアーキテクチャとして優れているのかはまた別の話ですが)。

utilityに入れられるような関数は、ほとんどはクラスや型の独自関数として定義可能ですし、そのクラスや型でしか通用しないロジックが含まれているでしょう(もしその関数に独自のロジックが含まれていないなら、なぜそれがOSや言語やフレームワークのレベルに入っていないのでしょうか?)。複数の型やクラスにまたがって実装したいものがあるとしても、それはインターフェイスを使えば事足りるでしょう。そう考えれば、適切な名前を適切な場所で呼ぶ、これを実践するならばutilityに含まれる関数は消え、そのパッケージは不要になるはずです。

ただし、適切な名前をつけること、適切な名前を適切な場所で呼ぶことは、難しいです。痛みを味わうことがなければ身につかないこともあります。そして、言葉遊びで意識の光の下に曝さなければならない場合もあります。何度も間違いを犯すでしょう。しかし、諦めずにより良いものを作らなければなりません。

All of old. Nothing else ever. Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. -- Samuel Beckett

この詩を思い出してください。


それでは、

青を心に。

Stephen S. Hanada

"Gentleman Philosopher"

P.S. 現在、原稿としては3万字弱を書けました。ここから更に加筆・修正をして、本としての体裁を整えていきます。書籍の体裁にできそうになったら、まずはVLC Callに参加してくださった方に、PDFを送らせていただきます。誤字脱字のチェックをしていただくことや、意味が通じなかったらコメントをしてもらいたい、という思惑もあります。が、何よりもいち早くに価値を届けたいからでもあります。今しばらくお待ちください。(VLCには参加しなかったけれど、私と直接話したことがある人も、希望すればお送りさせていただこうと思います。)

 「知の前駆者」の真正の記録を配信する"Weekly Newsletter from Stephen S. HANADA"を登録してくれてありがとうございます。
 メールアドレスなどの変更が必要になったらPreferencesから変更できます。もうメールを受け取りたくなくなったら、Unsubscribe もできます。
Shimoochiai, Shinjuku, Tokyo 98104-2205

Gentleman Philosopher

Read more from Gentleman Philosopher

From: Stephen S. HANADA Shinjuku, Tokyo Sunday, 09:31 a.m. 親愛なる友人へ、 いかがお過ごしですか? 10年以上前、大学生だった私は教育実習のために二週間高校にいました。そして、高校公民の免許を取るために行った高校で、気持ち悪い体験をしました。心霊的なものではなく、人の心理に関する気持ち悪さです。 生徒たちは、数年前に高校を卒業し、まだ卒論すら書いたことのない学生たちに向かって「先生」「先生」と言うのです。そう言われたとしても、恥じることのないように勉強と訓練をしてきたとは言え、私を含む教育実習生らはそう言われることに興奮を覚えていました。教えること、そして、教える側に立つことは、とても気持ち良いです。しかし、私は 気持ちよさを感じる自分に対して 気持ち悪さを感じていました 。これの理由はその時は分かりませんでした。しかし、その不快感は根強く、結局、教員になる道を選ぶことはありませんでした。...

From: Stephen S. HANADA Shinjuku, Tokyo Sunday, 09:26 a.m. 親愛なる友人へ、 いかがお過ごしですか? 私は年に4回ほど(もしかしたらもっと多いかも)とても体調が落ち込みます。季節の変わり目や長期休みのタイミングで生じがちです。そして、このGW中が年4回の体調不良の1つです。行楽日和で人の移動が多くありますので、あなたも体調には十分気をつけてください。 今日あなたにお伝えしたいことは、今こうやって、体調が悪くても、アウトプットを私がしなければならないことについてです 人の悩みとしてよく語られがちなものはいくつかあります。そのうちの1つが自分の物を世に出すこと、つまり、アウトプットすることを、どう身につけるか、どう習慣化するというものです。仕事ではアウトプットすることが習慣になっているけれど、個人の場合はできなかったり、時々しか出せなかったり、ということで悩む人は多いです。...

From: Stephen S. HANADA Shinjuku, Tokyo Sunday, 11:32 a.m. 親愛なる友人へ、 いかがお過ごしですか? 私達は度々、 そうであると知っていながら、 そうではないあり方で語ります。 このことを理解するために、私のDeliberateな思いつきの次の一文から考えていきましょう。 幽霊に重力魔法は効く。 この一文には心霊とファンタジーが混ざっており、あなたには奇妙に映るかもしれません。しかし、これは人々が見落としがちな共通の認識から出てくるものであり、その導出のやり方と、もともとの共通の認識への気づき方は、とても大事だと思います。 幽霊と言えば、様々なものが彷彿とされます。Jホラーの代表的な貞子やお岩さん、もしくは化け猫や地縛霊など、たくさんの幽霊が思い浮かばれることでしょう。家に出る幽霊や事故物件などは「もしかしたら…」と大人になっても怖くなるものの一つです。もちろん、幽霊が家に出るという話は日本だけではなく、各国にもあります。...