設計書には「入力必須」と書いてあるのに、コードを読むと空欄でも通る。保守案件で一度はぶつかる場面ですが、正しいのはどちらなのかを、自分で決めるわけにはいきません。
私はSESで5年ほど、4社の現場を経験しました。3社目の保守改善の約1年半では、この種のずれに何度も当たり、聞き方を間違えて手戻りにしたこともあります。今回は、ずれを見つけてから客先に質問し、設計書を直すところまでの進め方を、実体験を交えてお伝えします。
この記事で分かること
- ずれを見つけたとき、質問する前にコードで確かめておく範囲
- 分かったことを「確認済み・推定・未確認」に分けるメモの作り方
- 客先の窓口に送る質問文の例文
- 設計書を自分が直してよいのかを、誰にどう確認するか
目次
SESで設計書とコードがずれていたときは、まずコードで確かめる
結論質問より先に、コードで「確認済み」の範囲を作ります。何を見て、どこまで分かったかを持たずに聞くと、窓口の担当者に調査を丸投げすることになるからです。
ここでは、設計書が古くなる理由を短く押さえたうえで、質問の前にコードで確かめる手順を見ていきます。入場直後の全体把握は別の記事に書いたので、ここではずれを見つけた後の確認だけを扱います。
設計書が古くなるのは、珍しいことではない
NTTデータは2013年のニュースリリースで、保守運用で改修が重なると設計書への反映漏れが起き、ソースと設計書が食い違う「不備」や、そもそも書かれていない「不足」の状態になると説明しています。長期間運用されたシステムほど顕著だとも書かれています(出典: NTTデータ 設計書リカバリーのニュースリリース)。
私の3社目も、まさにそうした現場でした。金融系のWebサイトを長く保守していて、フレームワークは古い作りのObjectWorksです。設計書とコードにずれがあること自体は、前提として受け入れるしかありません。
問題は、ずれを見つけた後に何をするかです。
質問の前にやる2つの確認
私が先にやるのは、次の2つです。どちらも、1時間かからない範囲に収めます。
- 画面の文言でコードを検索する画面に出ているラベルやエラーメッセージで全文検索し、該当の処理に当たりをつけます。設計書の項目名ではなく、実際の画面の文言から入るのがコツです。
- 1つの操作を入力から保存まで追う入力チェック、サーバー側の処理、DBへの保存の順に、実際の動きを読みます。設計書のどの行と食い違うかを、行単位で言える状態にします。
ここまでで分かるのは、「今のコードがどう動くか」だけです。なぜそう動くのか、設計書が間違いなのか実装が間違いなのかは、コードからは分かりません。
この区別が、次の章の分類につながります。
確認済み・推定・未確認に分けて、メモにする
結論調べて分かったことを、事実と推測と空白に分けて書きます。質問する側が何を知っていて何を知らないかを、相手に一目で伝えるためです。
コードを読んだ後は、頭の中の理解をそのまま質問にしないで、いったんメモにします。分け方は3つで、私の中では次のように決めていました。
| 分類 | 意味 | 書き方の例 |
|---|---|---|
| 確認済み | 自分の目でコードや画面の動きを見て、事実として言える | 保存処理に必須チェックはなく、空欄でも保存される |
| 推定 | 事実から推測しているが、裏が取れていない | 過去の改修で意図的に緩めた可能性がある |
| 未確認 | 見ていない、または見られない | 本番データに空欄の契約があるかは未確認 |
推定を確認済みと書いて、書き直した失敗
入場して数か月のころ、私は推定を確認済みの欄に書いてしまったことがあります。調査結果表に「この項目は仕様として必須ではない」と書いてレビューに出したところ、レビュアーから聞かれました。
この「仕様として」は、どこで確かめたの?
……コードが必須チェックをしていなかったので、そう判断しました。
それはコードの動きで、仕様かどうかは別の話だよね。書き分けて。
その指摘のとおりでした。コードの動きは確認済みですが、「仕様である」は推定です。表を書き直し、窓口への確認も1往復増えました。
見たことと、そう思ったことを、同じ欄に混ぜない。この癖をつけてから、レビューで同じ指摘を受けたことはありません。
メモはこの形で十分
実際に私が使っていたメモは、次の4行です。長い文章にはせず、項目ごとに短く書きます。
- ずれの内容 設計書のどの記載と、コードのどの動きが食い違うか
- 確認済み コードを追って分かったこと(場所も添える)
- 推定 そう考える理由と、裏が取れていない点
- 未確認 見ていないこと、見られないこと
この4行がそろっていれば、質問文はほぼ書けたも同然です。
客先の窓口に聞く質問文の例文
結論質問文は、ずれの内容・確認済み・推定・聞きたいことの順で、5〜6行に収めます。窓口の担当者は、前提を読むだけで判断できる状態が一番返事が早いからです。
3社目では、利用部門への質問は連絡窓口のリーダーを経由する決まりでした。直接聞ける相手がいない現場は多いので、窓口の相手が忙しくても読める形を心がけました。質問をする相手づくりそのものは、別の記事で扱っています。
実際に送った文面の例
マイページの契約内容変更まわりの改修で、先ほどの「入力必須」のずれを見つけたときの質問文を、固有の名称を伏せて再現します。
窓口のリーダーへ送った質問(再現)
お疲れさまです。契約内容変更の改修の調査中に、設計書とコードの食い違いを見つけました。
【ずれの内容】設計書では項目Aは「入力必須」ですが、現在のコードでは空欄でも保存できます。
【確認済み】保存処理に必須チェックはなく、画面上も空欄で完了できることを確認しました。
【推定】過去の改修で意図的に緩めた可能性がありますが、経緯は確認できていません。
【お伺いしたいこと】必須として扱うのが正か、現状の動きが正か、ご教示ください。
【影響】今回の改修ではこの項目のチェック条件にも触れるため、返答により実装方針が変わります。
ポイントは、最後の「影響」の一行です。この質問に答えないと何が止まるのかが書いてあると、後回しにされにくくなります。
返事は約半日で届き、実装が正だった
この質問の返事は、窓口のリーダーから約半日後に来ました。実装のほうが正で、過去に利用部門の要望で緩めた経緯があり、設計書の更新が漏れていた、という内容です。
もし確認済みと推定を分けずに「設計書が間違っていると思います」とだけ送っていたら、窓口の側で調べ直す手間が増えていたはずです。半日で済んだのは、聞く前に自分で確かめた範囲を示せたからだと私は見ています。
窓口経由の往復に半日かかる点は、保守のリリースが重くなる話の中でも触れています。
設計書を直すのは誰の仕事か|準委任の範囲と、直してよい範囲の確認
結論設計書を直してよいかは、技術の話ではなく、作業の範囲の話です。契約と作業指示で決まるので、自分で判断せず、窓口か自社の営業に確認します。
ずれの正体が分かると、次に「この設計書、直していいのか」という問題が出てきます。ここでは、私の現場での線の引き方と、確認する相手を整理します。
契約の範囲は、依頼の範囲で決まる
SESの多くは準委任契約で、客先から指示された作業を行うことが仕事の中心です。準委任と請負の違いは、別の記事にまとめています。
設計書の更新が、今回の作業に含まれているのか。それとも、頼まれてもいない設計書を勝手に直すことになるのか。ここは契約書や作業指示の書き方次第で、現場ごとに違います。契約書の中身は私の手元にはなかったので、窓口のリーダーに確認しました。
私の現場では、改修の範囲だけ直すことになっていた
3社目では、窓口のリーダーに聞いたうえで、次のように整理されました。
3社目で確認した設計書の扱い
- 今回の改修で触れる箇所の設計書は、改修作業の一部として自分が更新する
- 改修と関係のない箇所のずれは、直さずに質問・課題を整理するExcelに記録する
- 記録したものは窓口のリーダーに渡し、直すかどうかは客先側が決める
保守のリリースが重い話の記事にも書きましたが、小規模な改修でも設計書の更新に3時間ほどかかっていました。範囲外まで直し始めると、この時間がふくらみます。
範囲外のずれを勝手に直さないのは、手間の問題だけではありません。どの設計書が最新かを客先が管理しているのに、一部だけ私が書き換えると、版の整合が崩れるからです。
直す前に確認する項目
別の現場に移ったときも、同じ順で確認しておくと、後で揉めません。
設計書を直す前に確かめること
- 設計書の更新は、今回の作業指示や見積もりに含まれているか
- 設計書の正は誰が管理しているか(客先か、元請けか)
- 範囲外のずれを見つけたとき、誰に、どの様式で伝えるか
- 修正した設計書は、誰がレビューや承認をするか
答えが曖昧なら、窓口のリーダーか、自社の営業に聞くのが早いです。窓口に確認しにくい内容でも、自社の営業経由なら聞ける場合があります。
まとめ
設計書とコードのずれは、長く運用されているシステムでは起こるものです。見つけたときの動き方を型にしておくと、慌てずに済みます。
- コードで先に確かめる 画面の文言で検索し、1つの操作を入力から保存まで追う
- 3つに分ける 確認済み・推定・未確認を混ぜずにメモにする
- 5〜6行で聞く ずれの内容・確認済み・推定・聞きたいこと・影響の順
- 直す権限を確認する 改修の範囲は更新、範囲外は記録して客先に渡す
私が一番伝えたいのは、質問の質は、聞く前にどこまで自分で確かめたかで決まるということです。確認済みの範囲を示せば、窓口の担当者も判断しやすく、返事も早くなります。
次にずれを見つけたら、まず「確認済み・推定・未確認」の3行だけでも書いてみてください。それだけで、質問文の半分はできています。




