HN 日本語サマリー

← 一覧へ戻る
プログラミング

SOLIDとクリーンコードは私には決して堅牢でもクリーンでも感じられなかった

Solid and Clean Code never felt solid or clean to me (devz.cl)

23 pointsby DanielVZ25 コメント

要約

この記事では、プログラミングの学習過程で著者がSOLID原則やクリーンコードに対して抱いた懐疑的な見方を述べています。特に「Uncle Bob」として知られるRobert C. Martin氏の提唱する原則が、根拠に乏しい、あるいは冗長な説明を伴う「詐欺的」なものに感じられたと指摘しています。著者は、これらの原則が新米プログラマーを教条主義的な行動に誘導するリスクがあると考えています。

全文翻訳

SOLIDとクリーンコードは私には決して堅牢でもクリーンでも感じられなかった 2026-07-01T00:00:00Zに公開 ダニエル 私はオンラインドキュメントとプロジェクトを通じてプログラミングを学びました。本も読みましたが、それらが私のプログラミングやソフトウェアエンジニアリングのキャリアにとって極めて重要だったとは考えていません。読んだ本の一部を挙げます。 『データ指向アプリケーションデザイン(Designing Data-Intensive Applications)』:本当に良い本です。 『人月の神話(The Mythical Man-Month)』:古く感じましたが、業界がどこから来たのかを理解するのに役立ちました。 『デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素(Design Patterns, Elements of Reusable Object-Oriented Software)』:あまり覚えていません。すべてのパターンを完全に理解するには読むのが早すぎたと思いますが、少なくともデザインパターン全般の理解は得られました。 『クリーンコード(Clean Code)』:この本は、ベテランエンジニアからのアドバイスの束のように感じられましたが、その多くが検証可能な良いアドバイスではありませんでした。部外者として、少なくとも自分のコードが読まれることを意識しなければならないという認識は得られました。 ある日、面接官が私にデザインパターンとSOLID原則について尋ねました。私はGang of Fourの本から学んだものについて話し始めましたが、彼は私を遮り、SOLID原則について尋ねているのであり、私が何を話しているのか分からないと言いました。今になって思えば、彼は単に主題についてあまり知らずにルーブリックを読んでいただけだと分かりますが、私はその面接を混乱して終えました。 そこで私はSOLID原則をググり、「Uncle Bob」という人物が、導入部分の大部分を使って水分子について話し、その後10分以上かけて新しいプログラマーの増加率が常に倍増しており、この成長率が続く限り、全エンジニアの半分は常に経験不足であると説明する動画にたどり着きました。そして、講演が始まって20分が過ぎたところで、ようやく本題に入り、悪いコードは作業を遅らせ、コードの硬直性や結合は悪いと説明し、30分経ってようやく本当のテーマに入りました。 講演のほぼ半分は5分で完全に説明できたはずです。 私の背景 その頃、私は歴史を専攻して3年目でした。週に何千ページも読み書きしなければなりませんでした。誰もが同じように書くわけではなく、異なる分野には異なる書き方があることを学びました。歴史を書く場合、暗黙のうちに従うべき構造と語彙があり、他の人文科学や社会科学でも同様で、自然科学でも同じだと推測しています。 私はそれらを、互いの作品を読み合うことで生まれる文化的ルールだと考えています。そのため、良い成績を取るために、教授や彼らが好む著者の書き方や調査スタイルを真似しようとしました。どんな著者を読んでいるのか、文章の密度、ペース、物語と議論の混ぜ方などがわかるようになりました。 また、ここでは説明しませんが、その頃までに、私は4、5件の詐欺/悪徳商法を非常に間近で見ていました。実際に数ヶ月間、詐欺師と被害者のそばで無力なまま詐欺が進行しているのを見ていました。 これらすべては、人がどのように書き、話すかを理解する感覚を養ってきたということを言いたかったのです。 なぜこれは詐欺のように読めるのか? 「Uncle Bob」を軽んじるつもりはありませんが、彼が書いたり話したりするものはすべて、まるで天才プログラマーの講演/著作であると私を説得しようとしている間に、私の時間を奪われているかのように感じさせました。 まず、「Uncle Bob」というニックネームですが、これにはこのような背景があります。 はっきりさせておくと、「Uncle Bob」という名前は1989年に同僚から与えられたものです。何年もの間、私のメールやuunetの署名に使われていました。(uunetが何だったか知らない子供たちもいます)。その名前が定着し、最終的に私はそれをブランドとして採用しました。 – ロバート・C・マーチン、https://news.ycombinator.com/item?id=7713646 悪くない説明ですが、信頼できるベテランエンジニアとしてのブランドを確立しようとしている人物にとって、その名前が依然として操作的に感じられるという事実は変わりません。 また、余談ですが、もちろんuunetが何だったか知らない子供たちはいます。 分かっています。あなたは「経験豊富な」プログラマーなのですね。 エンジニアは、客観的な真実を見ることができる公平な機械であると仮定しがちですが、私が歴史を学ぶ中で学んだことの一つは、客観的であろうと努力する唯一の方法は、自分が主観的な人間であるという事実を受け入れることだということです。客観的であると仮定すればするほど、自分自身の主観性であれ、他人の主観性であれ、主観性によって容易に操作されてしまいます。「Uncle Bob」をまるで本物の賢い叔父のように慕い、彼を引用して複雑な依存性注入のごまかしを正当化する同僚がいたことで、私の操作感知センサーはすべて作動しました。 次に、彼が実際に使う散文があります。前述したように、彼のスタイルはフィラーコンテンツに過度に依存しています。もちろん、単なるランダムなフィラーコンテンツではありません。顎を掻きながら自信満々に話せるような内容であり、気の利いたジョークを散りばめ、賢く見せるものです。もし私の大学教授が私がそのように書いているのを見たら、時間の無駄だとして減点したでしょう。大学では、特に私たち学生が、必要ページ数を埋められないときに、過剰な引用や、議論に影響を与えないが長さを稼ぐための多少関連する物語を付け加えるのを何度も見てきました。 私がフィラーだらけの歴史書やエッセイを読むときにやっていたのは、まずテキストをざっとスキャンして実際のコンテンツをハイライトし、その後でじっくり読むことでした。Uncle Bobの本でも同じことができます。 「Robertがどれほど賢いか、ワークショップのほんの一部を見るだけでわかるでしょう。彼はソフトウェアの原則、天文学、数学、歴史、企業の世界、そしていわゆる『プログラマー』のほとんどが聞いたこともないような他の主題について(そして多くを)話します!」 – どうやらフィラーコンテンツを気に入った人 これはある程度好みの問題であることも認めざるを得ません。しかし、私の意見では、この分野の初心者にとってのベテラン経験の源として自分を売り込むのであれば、それなりの責任を負うべきです。最悪の場合、彼らの時間を無駄にしていることになります。最悪のシナリオでは、著者にかなりの信頼を要する中身の薄いコンテンツを通じて、彼らを教条主義的な行動に操っていることになります。 頭字語マーケティング ソフトウェアエンジニアは頭字語が本当に好きですね。 SOLID、DRY、KISS、YAGNIのようなアジャイルの頭字語があります。 ACID、CAP、OLAP、OLTPのようなベンダーが推し進める頭字語もあります。 リストは無限です。中には納得できるものもあります。他のものにはよく研究された誠実な起源(ACID、CAP)がありますが、同時にこれらが普及したのは、企業と「アジャイル」支持者の両方にとってマーケティングの箇条書きやスローガンとして機能してきたからだと感じます。よく見てみると、SOLID原則の中には、厳密に精査すると決して堅牢ではないものもあります。エンジニアが不必要にコードをDRYにしようとして生み出した複雑さにより、数え切れないほどの時間が費やされてきました。そして、人々がこれらの頭字語を極端に解釈して自分たちの慣行を正当化する話題については、いくらでも話し続けることができます。 ACID、CAP、OLAP、OLTPなどの頭字語は面接の基礎知識として含まれていますが、実際にはソフトウェアシステムを理解するためのより良い代替手段がたくさんあります。あまり魅力的な頭字語ではないPACELC設計原則は私のお気に入りの一つです。 エンジニアに対して公平に言えば、これはアメリカ文化の一部のように思えます。これらの人々は何にでも頭字語を使います。私がアメリカを拠点とする同僚と働き始めたとき、毎週のように新しい頭字語をググらなければなりませんでした。 私にとって頭字語の世界で最悪なのはEBITDAです。その時点ですでに新しい単語ができています。どうか新しい概念を発明してください。Core Operating Earningsのようなものです。 希望的命名 歴史書を書くときに、「ヒスパニック植民地主義のクリーンな歴史」とか「20世紀チリ農業文化のSOLIDな歴史」とは呼ばないでしょう。通常、それが何であるかをそのまま呼びます。私にとって、自分のコードやソフトウェアを「クリーン」、「簡単」、「シンプル」と呼ぶことは常に間違っていると感じてきました。あなたは自分が作成したものに、あなたが目指す主観的な特性があると宣言する権利はありません。