明るく

暗く

システム開発

【発注者向け】システム開発の「実装」とは?成果物と合意のポイント

システム開発における実装フェーズとは、設計書に基づきプログラミングを行って、実際に動くシステムを作り上げる工程のことです。

 

発注者にとって実装フェーズは、専門的な作業が中心となるため中身が見えにくいです。成果物の確認の観点やテストの範囲を明確に合意しておくことで、納品後のトラブルを防げます。まずは完了定義やテストの役割分担を整理し、開発会社と共通認識を持つことから始めましょう。

 

この記事のポイント

 

実装とは?発注者向けに一言でいうと何をする工程か

実装とは、目に見えない「設計図(指示書)」を、コンピュータが理解できる言語を使って「実際に動くプログラム」に変換する作業のことです。建物でいえば、図面をもとに大工さんが実際に家を建てる「建築工事」の段階に相当します。

 

システム開発をスムーズに進めるためには、このフェーズで何が行われ、発注者がどう関わるべきかを理解しておくことが不可欠です。

実装の基本的な意味(設計図を形にする「建築工事」の段階)

実装は、要件定義や設計で決まったルールを、プログラミングによって形にする工程です。単にコードを書くだけではなく、作成したプログラムが単体で正しく動くかを確認する「単体テスト」まで含まれるのが一般的です。

 

発注者にとっては、それまで書類上だけだった計画が、初めて「動くもの」として実体化するる重要なフェーズといえます。

他フェーズとのつながり(要件定義・設計・テストとの関係)

実装は、前工程である「設計」の結果を反映し、後工程である「テスト」へとつなぐ橋渡しの役割を担います。設計書に不備があると実装のやり直しが発生し、実装の品質が低いと後のテスト工程で不具合が多発してしまいます。

 

設計の質が実装に響き、実装の質がテストに響くという一連のつながりを押さえておくことは、プロジェクト全体の遅延を防ぐ上で重要です。

実装がうまくいかないとどうなる?(発注者が受ける影響)

実装フェーズで認識の齟齬や品質低下が起きると、納期遅延や予算超過のリスクが直結します。特に指示通りだが操作性が悪いといった感覚的なズレは、実装段階でのコミュニケーション不足から生じやすいため注意が必要です。

 

こうしたトラブルを防ぐには、開発会社と、今どの範囲の作業(実装)をしているのかという共通認識を持つことが大切です。しかし、打ち合わせでは「開発」と「実装」という言葉が混同して使われることも少なくありません。

 

そこで、スムーズな意思疎通のために、両者の違いを改めて整理しました。以下の表は、一般的なビジネスシーンにおける用語の使い分けをまとめたものです。

 

項目 開発(Development) 実装(Implementation)
範囲 企画から運用までプロジェクト全体 プログラミングと単体テストの工程
役割 ビジネス課題をシステムで解決すること 設計書を動くプログラムに変換すること
発注者の関わり 意思決定や要件定義が中心 進捗確認と仕様変更の判断が中心

 

このように、実装は開発という大きな流れの中の一つのステップとして位置づけられています。「今は全体開発の中の、具体化(実装)のフェーズにいる」という共通認識を持っておくだけでも、確認すべき項目を絞り込みやすくなります。

 

自社のプロジェクトにおいて、「今どの工程で何を作っているのか」を常に把握できているでしょうか? 次は、実装フェーズで具体的にどのような成果物ができあがるのかを解説します。

実装フェーズで何ができあがるか:成果物と確認観点

実装フェーズの主な成果物は、実際に動くプログラム一式(ソースコード)と、それが正しく動くことを証明するテスト結果報告書です。発注者は専門的なコードを読み解く必要はありませんが、何が共有されれば安心かという基準を知っておくことで、プロジェクトの透明性が高まります。

 

納品後に思っていたものと違うという事態を避けるために、確認すべきポイントを整理しましょう。

成果物の全体像(何が納品・共有されると安心か)

一般的に、実装フェーズ完了時に共有される成果物には、

 

  • プログラム本体
  • ソースコード
  • 単体テスト結果報告書
  • 実装済み機能一覧

 

などがあります。これらが揃うことで、設計通りの機能が作られたという客観的な証拠になります。

発注者が確認しやすいポイント(成果物をどう見ればよいか)

技術的な知識がなくても、

 

  • 画面のイメージが要件定義とズレていないか
  • 主要な業務フローが滞りなく進むか
  • エラー時に適切なメッセージが表示されるか

 

といった点は確認できます。実際の業務を想定して、違和感がないかチェックしましょう。

受入・検収の前にすり合わせたいこと(認識ズレ防止)

最終的な検収を行う前に、動作速度などの非機能要件についても再確認が必要です。実装段階でのデモを通じて、実際の挙動が期待値に届いているかを早期にフィードバックすることが、手戻りを防ぐ最大の対策となります。

 

以下の表は、成果物ごとに発注者が確認すべき観点と、合格の目安をまとめたものです。

 

成果物 発注者の確認観点 OKの目安
動作画面(デモ) 業務フロー通りに動くか 迷わず最後まで操作を完了できる
単体テスト報告書 全ての機能がテストされているか テスト項目に漏れや未実施がない
進捗管理表 予定通りの機能が揃っているか 契約時の要件が全て「済」になっている

 

こうした細かなすり合わせを重ねることで、最終的な納品時に、確かに自分たちが望んだものができてい」という納得感を持って検収(合格判定)ができるようになります。

 

成果物を受け取る際に、どのような資料や説明があれば、自分たちが安心して「完了」と言えるかイメージを膨らませておきましょう。

 

次は、実装工程で最もトラブルに発展しやすい完了のルールや仕様変更の扱いについて、詳しく見ていきます。

実装で揉めないための合意点:完了定義・テスト範囲・変更管理

実装フェーズでトラブルを防ぐためには、「完了定義」「テスト範囲」「変更管理」の3点を事前に合意しておくことが重要です。これらが曖昧なままだと、プロジェクト終盤で「終わったはずなのに不具合が止まらない」「追加費用で揉める」といった事態を招きます。

 

発注者として主導権を握るために、最低限押さえておくべきルールを解説します。

実装完了の定義(どこまでできたらOKか)

実装完了とは、単にコードを書き終えることではありません。一般的にはソースコードの記述が終わり、開発者による単体テストをパスし、バグ管理表の致命的な不具合が解消された状態を指します。

 

発注者は、テストが正しく行われたことを示す「実施結果の記録」が揃っていることを、完了の条件にしましょう。

テスト範囲の決め方(単体・結合・総合・受入の役割分担)

テストは役割分担が肝心です。開発会社が担当する単体・結合テストでプログラムの正しさを保証し、総合テストでシステム全体の動きを確認します。そして最終的に、発注者が業務に使えるかを判定する受入テストを主導することで、品質の最終責任を担保します。

仕様変更の扱い(変更管理:費用・納期・優先度・合意手順)

実装中に要望を出す際は、それが費用や納期にどう響くのか、開発会社に改めて見積もりを出してもらいましょう。その内容を見て、今すぐ対応が必要か、それとも後回しでよいかを冷静に判断することが重要です。

 

こうした仕様変更を含め、実装フェーズを円滑に進めるためには、あらかじめ開発会社と以下のような3つの重要ポイントを合意しておきましょう。

 

合意すべき3つの重要ポイント

  1. 完了定義:テストの結果報告が揃った時点でフェーズ完了とする

  2. 役割分担:受入テストは発注者が主導し、不具合の修正責任は開発会社が持つ

  3. 変更ルール:変更による費用・期間への影響を必ず書面で提示させる

 

こうした「困ったときの相談ルール」を事前に決めておくことが、プロジェクトにおける最大の備えとなります。

 

とはいえ、現場で実際に何が行われているかわからないと、ルールの必要性もイメージしにくいかもしれません。次は、発注者からは見えにくい開発現場の裏側を、少しだけ覗いてみましょう。

開発会社は実装で何をしている?(発注者からは見えにくい作業の実態)

開発会社の実装作業は、単にコードを書くだけではなく、品質を一定に保つための組織的なプロセス(レビューやログ管理など)に支えられています。現場でどのような手順が踏まれているかを知ることで、進捗報告の裏側にある作業の重みを正しく理解できるようになるでしょう。

 

ここでは、開発会社が品質を守るために裏側で行っている工夫を簡単にご紹介します。

実装の進め方(作る → 確認 → 直す)

現場ではプログラミング、開発者本人によるセルフチェック、他メンバーによるレビュー、そして単体テストというサイクルを繰り返しています。作って終わりではなく、何重ものチェックを経て品質が作られているのです。

品質を担保するためにやっていること(レビュー・ログ・履歴管理)

ミスを減らすため、複数人でコードを確認する「レビュー」や、変更の履歴をすべて記録する「バージョン管理」が行われています。また、システムが裏側で何をしたかを記録する「ログ出力」により、万が一の不具合時にも迅速な原因究明が可能になります。

プログラミング言語はどう決まる?(将来の運用や保守に関わる選択の理由)

プログラミング言語は、システムの動かしやすさだけでなく、数年後の直しやすさや拡張のしやすさを元に選定されます。JavaやC#は堅実な大規模システム、PHPやPythonはWebサービスやAI開発といった特徴があります。

 

選定理由を聞く際は、保守のしやすさやエンジニアの確保のしやすさを確認しておくと安心です。

 

開発チームから「チェック作業に時間をかけています」と報告を受けたとき、それが手抜きをせず、品質を高く保つための大切な工程だとわかれば、納得感を持って作業を任せられるようになるはずです。

 

現場の作業実態が見えてきたら、次はそれらをどう管理し、確認するかという実務のステップに進みましょう。打ち合わせの場で、開発会社に対して何を、どのタイミングで確認すべきか。そのままコピーして使える、発注者向けのチェックリストをまとめました。

発注者チェックリスト(打ち合わせ質問テンプレ)

実装フェーズでの失敗を避けるために、開発会社との打ち合わせでそのまま使える質問リストを作成しました。これらの項目を確認することで、認識のズレを早期に発見し、プロジェクトを健全な状態に保つことが可能になります。

 

打ち合わせの議事録作成や、プロジェクトの状況確認にぜひ活用してください。

合意形成チェック(完了定義・テスト範囲・変更管理)

  • 「このプロジェクトにおける『実装完了』の定義を教えてください」

  • 「単体テストと結合テストの合格基準は何ですか?テストを実施した結果(エビデンス)は見せてもらえますか?」

  • 「仕様変更が必要になった場合、費用や納期への影響はどのようなフローで提示されますか?」

成果物チェック(何をいつ確認するか)

  • 「実装フェーズの終了時に、どのような資料や成果物が納品されますか?」

  • 「受入テストの前に、発注者が操作感を確認できるデモの機会はありますか?」

  • 「ソースコードの所有権や保守用のドキュメントは、納品物に含まれますか?」

進行中チェック(進捗共有・課題管理・リリース/切り戻し)

  • 「進捗の遅れが発生した場合、どのタイミングでどのような報告をいただけますか?」

  • 「現在発生しているバグの数と、そのうち致命的なものの件数を教えてください」

  • 「万が一リリース時に問題が起きた場合、元の状態に戻す(切り戻し)手順はありますか?」

 

これらの質問を打ち合わせで投げかけることで、開発会社との認識のズレを未然に防ぎ、プロジェクトを健全な状態に保てます。

 

次に、実装フェーズを進める際によく寄せられる疑問をQ&A形式でまとめました。判断に迷った際の参考にしてください。

実装フェーズでよくある質問

実装フェーズに関するよくある質問をまとめました。

Q. 実装を「完了」と判断する基準は何ですか?

設計書通りの機能が作られ、単体テストが100%完了し、重大なバグがゼロであることを基本とします。さらに、テスト結果報告書が発注者に提出・承認されることを条件に含めるのが一般的です。

Q. テスト範囲(単体・結合・総合・受入)は誰が何をしますか?

単体・結合テストは開発会社がプログラムの正しさを、総合テストは開発会社がシステム全体の動きを検証します。最後の受入テストは、発注者が実業務で問題なく使えるかを最終確認します。

Q. 仕様変更はどう扱いますか?(費用・納期・優先度)

変更要望が出た時点で、開発会社に工数とスケジュールへの影響を算出してもらいます。その内容をもとに、追加予算を出すか、納期を延ばすか、優先順位を下げるかを判断し、必ず書面で合意しましょう。

Q. 実装フェーズの成果物は何ですか?

動作するプログラム本体、ソースコード、単体テスト仕様書・報告書、および実装済み機能の一覧が主な成果物です。

Q. 開発と実装の違いは何ですか?

「開発」は企画から運用までを含むプロジェクト全体を指し、「実装」はその中の一工程であるプログラミングと単体テストの作業を指します。

まとめ

実装フェーズは、発注者にとって丸投げになりがちな工程です。しかし、成果物の確認観点や合意のルール(完了定義・テスト範囲・変更管理)を明確にすることで、プロジェクトの成功率は飛躍的に高まります。

 

大切なのは、開発会社が品質を守るために何をしているかを知り、適切なタイミングで「正しい問いかけ」を行うことです。今回ご紹介したチェックリストを参考に、開発会社と良好なコミュニケーションを築き、理想のシステム完成を目指しましょう。