「動けばいい」で進めた開発が後で重くなる理由
「まずは動くものを早く作ってほしい」——納期が迫る中、現場責任者がそう開発会社やエンジニアに伝えるのは、決して間違った判断ではありません。実際、最初のリリースはスムーズに終わり、社内の評判も悪くなかった。ところが半年後、ちょっとした機能追加を依頼しただけなのに、見積もりの金額も期間も想像以上に膨らんでいて、担当者から歯切れの悪い説明を受ける。「あのとき急がせたのは自分なのに、なぜこんなに重くなっているのか」という戸惑いを覚えた方は、決して少なくないはずです。
この違和感の正体は、実は「手抜き」や「技術力不足」ではないことがほとんどです。むしろ、最初の判断は合理的だったのに、その判断の積み重ねが後になって重荷に変わる、という構造があります。この構造を知っているかどうかで、次の開発依頼の進め方は変わってきます。
この記事では、「動けばいい」を優先した結果として生まれる技術的負債がどういう仕組みで発生し、発注側として何を確認しておけば後々の重さを減らせるのかを整理します。
なぜ「動けばいい」が後で重くなるのか
技術的負債という言葉は、ソフトウェア開発の世界で使われる比喩です。借金と同じように、今すぐの手間を後回しにすると、時間が経つほど「利子」がついて返済が重くなる、という考え方を指します。独立行政法人情報処理推進機構(IPA)が公開している非機能要求グレードでは、保守性や変更のしやすさといった項目が、将来の改修コストや品質に直結する非機能要件として整理されており、こうした観点をあらかじめ合意しておくことの重要性が示されています。
具体的には、こういうことです。納期や予算の制約がある中で、「とりあえず画面を表示させる」「エラー処理は後回しにする」「似たような処理をコピーして使い回す」といった判断が現場では日常的に行われます。一つひとつは、その場では正しい選択です。しかし、こうした判断が積み重なると、コードの中に「後で整理するつもりだった部分」が放置されたまま層になって残ります。そして、次に機能を追加しようとしたとき、その放置された部分が邪魔をして、思ったより時間がかかる、という形で表面化します。
ここで押さえておきたいのは、技術的負債は「悪いこと」として一方的に避けるべきものではない、という点です。スタートアップが市場の反応を見るために最初は粗くても動くものを出す、という判断は、ビジネスとして理にかなっています。問題は、その負債の存在が発注側に見えていないまま、気づいたときには返済の規模が膨らんでいる、という情報の非対称性にあります。
「見えない負債」が積み重なる仕組み
技術的負債が厄介なのは、見た目には分からないという点です。画面は動いているし、ユーザーからのクレームも特に来ていない。それなのに、内部では変更しづらい構造がじわじわと広がっている、ということが起こります。
この仕組みを分解すると、主に次の3つの要因が絡み合っています。
- 仕様の変更履歴が整理されていない:最初に決めた仕様から何度も方向転換があった場合、その都度コードを継ぎ足していくと、全体の整合性が崩れやすくなります
- テストが最小限にとどめられている:「動くことの確認」は行われていても、「変更しても壊れないことの確認」まで手が回っていないケースがあります
- 担当者の頭の中にしか無い設計判断がある:なぜその実装にしたのかという理由が文書化されず、人に紐づいたまま残ってしまうことがあります
これらは、要件定義の進め方とも地続きの話です。最初に「何を作るか」が曖昧なまま契約が進むと、作りながら仕様を決めることになり、結果として負債が生まれやすい土壌ができてしまいます。この点は、要件定義を丸投げしたくなる心理とその代償でも扱っている話とつながる部分があるので、あわせて確認しておくと理解が深まります。
実務上ここがポイントなのですが、技術的負債は「誰かのミス」ではなく「判断の積み重ねの結果」として生まれるため、原因を個人に求めても根本的な解決にはなりません。むしろ、次に依頼するときに「今回は速度優先か、将来の拡張性も重視するか」を発注側自身が決めておくことの方が、負債を減らす近道になります。
発注側が確認しておきたい観点
では、発注する側として何を確認しておけば、後になって重さに気づくリスクを減らせるのでしょうか。完璧な予防は難しいとしても、確認しておく価値がある観点はいくつかあります。
- 「今回は速度優先」という前提を共有する:最初のリリースをスピード重視で進める場合は、その判断を開発会社やエンジニアと言葉にして共有しておきます。後から「なぜこんな作りになっているのか」と揉めることを減らせます
- 改修時のコード品質に関する方針を聞いておく:テストの範囲やコードレビューの有無など、品質に関わる工程がどの程度組み込まれているかを、契約前に確認しておくと見通しが立てやすくなります
- 「後で整理する予定の部分」を記録してもらう:とりあえず動かすために簡略化した箇所があれば、それをメモとして残してもらうよう依頼しておくと、次の担当者が引き継ぎやすくなります
- 機能追加のたびに見積もりの中身を聞く:追加開発の見積もりが想定より高い場合、その理由の中に「既存部分の整理が必要だから」という説明が含まれていないか確認します
見積もりが上振れするのは、追加機能そのものの難易度よりも、既存コードの整理にかかる手間が理由になっているケースが実はよくあります。これは、追加開発費用が高く感じる理由と相場の考え方で扱っている話とも重なる部分なので、見積もりに疑問を感じたときに読み比べておくと判断材料が増えます。
技術的負債は、完全にゼロにすることを目指す話ではありません。むしろ、どの程度の負債を許容するかを発注側が意識的に選べる状態を作っておくことが、現実的な向き合い方です。ここは、次にスケジュールが厳しいプロジェクトを依頼するときにそのまま使える視点なので、手元に控えておくといいところです。
まとめ
「動けばいい」を優先した開発判断自体は、状況によっては合理的な選択です。ただし、その判断が技術的負債として積み重なり、後の改修コストに跳ね返ってくるという構造があることは知っておく価値があります。
- 技術的負債は手抜きではなく、仕様変更・テスト不足・属人化した判断が積み重なって生まれる
- 最初に「速度優先か拡張性重視か」を言葉にして共有しておくと、後の認識ズレを減らせる
- 追加開発の見積もりが高く感じたときは、既存コードの整理コストが含まれていないか確認する
次に開発を依頼する場面では、完成した画面の見た目だけでなく、その裏側にどんな判断が積み重なっているのかを、一度担当者に尋ねてみるところから始めてみるとよいかもしれません。
執筆
サイバーコネクト編集部
誇張や決めつけを避け、現場で実際に判断材料になる情報だけをお伝えします。
監修
しんすけ
PM
株式会社サイバーコネクトのPMとして、要件定義・進行管理・品質管理を担当。オフショア(フィリピン)チームが担う実装フェーズの成果物について、日本側で最終品質チェックを行う体制の運用に携わっている。前職ではホームページ制作会社に勤務し200件を超えるホームページを制作。
まずはお話をお聞かせください。
要件が整理されていない段階でもご相談いただけます。
関連記事
開発会社の技術力、提案書だけで見抜けるのか
提案書や実績一覧だけでは見抜きにくい開発会社の技術力について、なぜ比較しづらいのか、面談でどう確認すればよいのかを整理しました。
担当エンジニアが辞めたらプロジェクトは止まるか
担当エンジニアの退職でプロジェクトが止まるのではという不安を、属人化の構造から整理し、発注側が事前にできる備えを解説します。
フリーランス発注、退職リスクをどう見るか
フリーランスエンジニアが突然いなくなったら、という不安を「契約」と「情報管理」の視点から整理し、事前の備えと離脱後の選択肢を解説します。
情報の取り扱いと免責:本記事は一般的な情報提供を目的としており、個別の状況に対する助言ではありません。 統計・数値等は出典を明記したもの以外は掲載していません。内容は公開時点の一般的な傾向を示すものであり、 実際の発注・契約にあたっては個別の事情に応じて専門家・取引先とご確認ください。