2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エンジニア兼経営者が考える「良い技術的負債」。納期と利益のために、あえてコピペコードを選ぶ判断基準

2
Last updated at Posted at 2026-02-18

unnamed-2.jpg

はじめに:「DRY原則」は絶対正義か?

エンジニアとしてキャリアを積むと、「DRY(Don't Repeat Yourself)」や「Clean Architecture」 こそが絶対的な正義であると信じ込んでしまう時期があります。

  • コピペコードは悪だ。
  • ハードコーディングは罪だ。
  • 共通化されていない処理は、即刻リファクタリングすべきだ。

かつての私もそうでした。
しかし、私は現在、「エンジニア」としてコードを書きながら、「経営者」として会社のPL(損益計算書)を見ています。

その二つの視点を持った今、私は断言できます。

「ビジネスを成功させるために、あえて『汚いコード(技術的負債)』を選ぶべき瞬間がある」

今回は、技術的な正しさよりも「利益と納期」を優先する際の、私の 「戦略的判断基準」 を共有します。これは、エンジニアとしての魂を売る話ではありません。ビジネスという戦場で生き残るための、武器の話です。


1. 技術的負債=「借金(レバレッジ)」である

経営において「借金(Debt)」は必ずしも悪ではありません。
事業を拡大するための「融資」は、成長を加速させるためのレバレッジ(てこ) です。

エンジニアリングにおける「技術的負債」も全く同じです。

戦略的負債の定義
「今、リファクタリングに使うはずだった3日間を借り入れて、リリースを早め、市場の反応を見る」こと。

licensed-image.jpg

これは、スタートアップや新規事業においては極めて合理的な投資行動です。
悪いのは「借金すること」そのものではなく、「返済計画のない借金(闇雲なスパゲッティコード)」 を作ることです。


2. 私が「あえてコピペ」を指示する3つのケース

私は自社の開発や、クライアントワーク(PM業務)において、メンバーに 「ここは共通化しないで。コピペでいいよ」 と指示することがあります。
その判断基準は以下の3点です。

Case A: 「生存期間(TTL)」が短い機能

  • 状況: 来週の展示会のためだけのデモ機能、あるいは1ヶ月限定のLP(ランディングページ)。
  • 判断: 共通化禁止。フルハードコーディング推奨。
  • 理由: この機能は、数週間後にはゴミ箱行きです。捨てることが確定しているコードを綺麗に設計するのは、経営視点で見れば**「コストの無駄遣い」**でしかありません。

Case B: 「仕様変更」の方向性が定まっていないPoC

  • 状況: 新規事業のMVP(Minimum Viable Product)。仕様がまだ固まっておらず、ユーザーの反応次第で大きく変わる可能性がある。
  • 判断: 拙速な抽象化(共通化)を避ける。
  • 理由: 「将来使うかも」と思って作った共通クラスは、大抵使いません(YAGNI原則)。むしろ、仕様変更が入った時に、共通化されているせいで 「あっちを直すとこっちが壊れる」 という結合度の高さが足かせになります。このフェーズでは、コピペで独立させておいた方が、破壊的な変更に強いのです。

Case C: 「納期」が「品質」より優先される契約

  • 状況: 「今月中にリリースできれば大型契約が決まる。できなければ契約破棄」という瀬戸際。
  • 判断: テストコードは書かなくていい。動くものを出せ。
  • 理由: ここでエンジニアが「テストカバレッジが...」とこだわり、納期を逃せば、会社の売上が消えます。売上が消えれば、エンジニアの給料も払えません。
    「まずは稼ぐ。稼いだ金で、来月リファクタリングする」 という順序が、ビジネスでは正義です。

3. 「良い負債」にするためのたった一つのルール

ただし、汚いコードを放置すれば、それは「不良債権」になり、いつか開発チームを破綻させます。
私が「コピペ」や「ハードコーディング」を許容する時、必ずセットで守らせるルールがあります。

「『なぜ汚く書いたか』と『いつ直すか』をコメントに残すこと」

demo-user.ts
// TODO: 展示会デモ用(2026-02-28)
// 展示会終了後にこのファイルごと削除する。
// そのため、あえてUserComponentとは共通化せずに実装している。
//
// 返済計画: 2026-03-05 までに本番実装へリプレース

const demoUserData = {
  id: 'demo-001',
  name: 'テスト ユーザー',
  role: 'admin' // 本来はRBACで管理
};

このように 「意図的な負債である」と宣言されていれば 、後から見たエンジニア(あるいは未来の自分)は迷わず削除やリファクタリングができます。

一番怖いのは、「何も考えずに書かれた汚いコード」なのか「意図を持って書かれた戦略的な汚いコード」なのか区別がつかないことです。


4. エンジニアのコスト意識(PL脳)

エンジニアの単価を時給8,000円と仮定します(外注単価の目安)。

「綺麗な設計」にこだわってリリースが1週間(40時間)遅れた場合、直接的な人件費だけで32万円のコスト増です。
さらに、その1週間の遅れで競合他社に顧客を奪われた場合の 機会損失(Opportunity Cost) は、数百万円、数千万円になるかもしれません。

「このリファクタリングは、数百万の機会損失に見合う価値があるか?」

経営者兼エンジニアは、常にこの問いを自分に投げかけています。

具体例:SUSの現場でよくある「技術的負債」のROI計算

項目 内容
案件 顧客管理システムの追加機能開発
要件 1週間後のデモで「AI分析機能」を見せる必要がある
選択肢A 綺麗な設計で実装(設計2日+実装3日+テスト2日)= 納期不可
選択肢B コピペで動作するデモを作り、本番は後で作り直す(実装1.5日)
判断 選択肢Bを選び、コメントに「本番リリース前にリファクタリング必須(2026-03-10)」と記載

結果:
デモで契約獲得(年間1,200万円)。その後、獲得した予算でリファクタリングを実施。


まとめ:真の「シニアエンジニア」とは

技術的な理想を追求できるエンジニアは優秀です。
しかし、「ビジネスの状況に応じて、あえて理想を捨て、泥臭い現実解を選べるエンジニア」 こそが、本当の意味でのシニアエンジニアであり、経営者がパートナーとして呼びたい人材です。

  • 技術的視点: Clean Architecture, DRY原則, カバレッジ100%
  • 経営的視点: Time to Market, ROI, Cash Flow

この両方の変数を扱えるようになると、エンジニアリングはもっと面白くなります。
私はこれからも、「利益を生むためのコピペ」 を恐れずに使い分けていきます。


この記事を書いた人✏️@YushiYamamoto
株式会社プロドウガ CEO / AIアーキテクト
Next.js / TypeScript / n8nを活用した自律型アーキテクチャ設計を専門としています。
日々の自動化の検証結果や、ビジネス側の視点(ROI等)に関するより深い考察は、以下の公式サイトおよびnoteで発信しています。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?