優秀なエンジニアが「使い捨てコード」の命名にこだわる本当の理由
「ちょっと1回だけデータを抽出するだけだから、ファイル名は test_data.py でいいか。変数名も tmp でいいや」
数ヶ月後、なぜかその test_data.py がチームの運用フローに完全に組み込まれており、誰も中身をいじれなくなって途方に暮れる...。エンジニアであれば、一度はこんな経験があるのではないでしょうか。
優秀なエンジニアほど、一見短命に見える補助スクリプトや、一時的な検証ツールに対しても、名付けやUI(操作性)を雑に扱いません。それは彼らが几帳面だからでも、時間に余裕があるからでもありません。
彼らがこだわるのは、ソフトウェア開発の本当のコストがどこにあるかを知っているからです。
コードの寿命を見誤るな
そもそも、「使い捨てコード」という言葉自体が実態を見誤らせます。人は「一回しか使わないつもり」で小さなツールを書きますが、その種のコードは驚くほどの確率で再利用されます。
今日の一時調査に使ったスクリプトは、明日の再現確認、来月の障害解析、半年後の引き継ぎ資料作成と、用途を変えながら生き残ります。
仕様書より先に小さな検証コードが残り、設計意図より先に暫定スクリプトがチーム内で共有されるのは「現場あるある」です。「どうせ捨てるから雑でよい」という発想は、コードの寿命を甘く見ているだけでなく、後から文脈を知らない人間が再利用する際のリスクを過小評価しています。
熟達者はこの現実を知っているため、短命なものほど最低限の読みやすさと扱いやすさを確保し、未来の負債になるのを防ぐのです。
デバッグの正体は「実験の反復」である
開発を「コードを実装する作業」と捉えると、UIや名付けは副次的なものに見えます。しかし実務において、我々を最も苦しめるのは実装ではなく「デバッグの反復」です。
デバッグとは、一発で真因を見抜く神秘的な行為ではなく、条件を変えながら仮説を潰していく「実験の連続」です。このとき、操作性の悪い使い捨てツールは、開発者の時間を奪うだけでなく致命的な「誤認」を引き起こします。
❌ 悪い使い捨てツールの例(認知負荷が高い)
$ ./run.sh
> done.
### いま何の設定で動いた? 失敗したの? 成功したの?✅ 優秀なエンジニアの使い捨てツール(認知負荷が低い)
$ ./run_migration.sh --target=users
> [INFO] Dry run started for 'users' table.
> [WARN] 3 records would be modified.
> [INFO] Run with '--execute' to apply changes.設定値が一目で見えること、再実行しやすいこと、条件と結果が結び付くこと。これらは見栄えのためではなく、「調査の再現性」を守るための実験装置の設計なのです。
「名付け」はシステムの内部UIである
画面の見た目だけがUIではありません。「人間とシステムが接する面」をUIと呼ぶならば、モジュール名、関数名、変数名は、開発者がシステムと対話するための内部UIです。
人間はコードを読むとき、すべてを一行ずつ解読するわけではありません。まず「名前」から責務と構造の地図を作り、そこから探索を始めます。
Cacheと名付けられているのに、実は「永続化」まで行っている。validateUserという名前なのに、こっそりDBの「更新」まで行っている。TempDataという名前なのに、実は複数ユーザーが参照する「共有ストレージ」である。
誤った名前は、単に分かりにくいだけではありません。読む側の仮説生成を強烈に歪めます。経験豊富なエンジニアほど名前を強く手掛かりにして抽象化を行うため、ここで嘘をつかれると熟達者ほど迷宮入りしてしまいます。
良い名前は熟達者を加速させ、悪い名前は熟達者まで失速させます。優秀なエンジニアが名付けに異常なほど敏感なのは、美学ではなく防衛本能に近いです。
優秀なエンジニアは計算コストより「認知コスト」を見る
未熟なうちは、「速い処理」、「短いコード」、「難しいアルゴリズム」が価値の中心に見えがちです。しかし実務における最大のボトルネックはCPUではなく、人間の認知限界にあります。
毎回設定を探す、責務を読み違える、前回との差分が分からない...。これらの摩擦は、人間の「集中力」や「作業記憶」を少しずつ削り取っていきます。
人は迷うたびに、頭の中に構築した前提条件を失い、またソースコードを遡って文脈を立ち上げ直さなければなりません。優秀なエンジニアは、自分も含めた人間の頭がいかに脆いかを知っています。だからこそ、見た目の美しさではなく「摩擦の少なさ(認知負荷の低さ)」にこだわるのです。
AI時代、名前の重要性はかつてなく重くなった
「AIがコードを書く時代になれば、名付なんて適当でよくなるのでは?」 そう思うかもしれませんが、実態は完全に逆です。
コードを書くコストが下がった分、「読むこと・疑うこと・直すこと」の比重が相対的に極めて重くなりました。
AIは実行結果を直接体験する前に、まずコードの「名前」や「文脈」から意味を推定します。雑に Manager と名付ければ、責務境界を曖昧にしたまま「それっぽい修正案」を返してきます。AIに対して名前で嘘をつくと、AIは速く正解に近づくのではなく、光の速さで誤ったコードを大量生成します。
コードを読む主体が「人間だけ」から「人間+LLM」に広がったことで、誤った名称の被害範囲は拡大しました。曖昧さを減らし、正しいコンテキストを与えるための名付けとUI設計は、AI時代において最も重要なスキルになったのです。
まとめ
結局のところ、たかが使い捨てコードにどう向き合うかは、その人がソフトウェアを何だと見ているかを露呈します。
プログラムを「一回結果を出すだけの機械」と思っている人は、動けばよいと考え、名前やUIを装飾品とみなします。 反対に、プログラムを 「長い時間をかけて理解され、疑われ、修正され続ける対象」だと知っている人は、最初からそのための足場を用意します。
使い捨てコードに丁寧さが出るのは、その人が「将来の自分、同僚、保守担当者、そしてAIの視点」を想像できているからです。
たかが使い捨てコード、されど使い捨てコード。 そこへの小さな配慮は決して過剰品質ではなく、ソフトウェア開発の本当の難しさに立ち向かうための、合理的な実務判断なのです。