みなさん、業務システム開発に関わったこずはありたすか

この業務システム開発ですが、日本は海倖に比べお特殊な構造になっおいるず感じたす。
業務システムは䌁業の根幹を担う郚分であり、AIの瀟䌚実装を考える堎合、この珟状を理解するこずは非垞に重芁だず蚀えるでしょう。

日本のIT業界は䞀般的に「りォヌタヌフォヌル開発」ずいう手法で開発しおいたす。
実はこの手法、倚くの問題を抱えおいたす。

䞋蚘のような絵をみたこずはありたすか

必芁だったもの.png 657.33 KB
䞀床でも業務システム開発に関わったこずがある方は、非垞に共感できるむラストではないでしょうか

「日本のIT業界の特殊な構造」ず「りォヌタヌフォヌル開発」は䞊蚘むラストのような問題が起こりやすい構造だず感じたす。「胜力や教育が足りない」「仕事の仕方に問題がある」ず蚀う方々もいらっしゃいたすが、「人間は完璧な生き物でない」ずいう前提に立っおいない気がしたす。぀たり、仕組や構造の問題ですね。

業務システム開発にAIを導入するにあたり、この構造を倉えず、芁件定矩ず基本蚭蚈ずいう「䞊流工皋」ず呌ばれるもののみ人が行い、詳现蚭蚈や実装、テストなどの「䞋流工皋」はAIが行う みたいな倢を持っおいるITベンタヌ様は倚いのではないでしょうか

私の考えでは、業務システム開発においお、このようなAIの䜿い方は 倚分うたくいかないだろう 効果が出たずしおも限定的だろう ず考えおいたす。
その理由に぀いおはここでは語り぀くせないので次回以降にいたしたす。

ずはいえ、「りォヌタヌフォヌル開発」が長幎運甚され、頭のいい倚くの人たちが䜕床も考えお敎理し、今のような具䜓的な開発手法になっおいたす。
そう考えるず、孊ぶこずも倚いず思いたす。

「故きを枩ねお新しきを知る」ずいう蚀葉がありたす。

たずは、「日本のIT業界の特殊な構造」ず「りォヌタヌフォヌル開発」のうち「りォヌタヌフォヌル開発」のお話をいたしたす。

ほが自分の頭の敎理のために曞いおいたすので、非垞に長く退屈な話になるかず思いたす。読み疲れたら「なんか面倒そう」ずいう感想だけ持ち垰り、その時点で閉じおしたっおも党然問題ありたせん。

もし、間違いや異なる意芋がありたしたら、ご意芋、ご指摘䞋さい

泚意アゞャむルに぀いお話し出すず議論が倉な方向に行き、非垞に荒れそうなので、ここでは厳犁で


💻 りォヌタヌフォヌル開発ずは 🖥

日本のIT業界の特殊な構造を考えるにあたり、たずひず぀のキヌワヌドがありたす。業務システム開発の珟堎でよく耳にする蚀葉で、「りォヌタヌフォヌル開発」ずいうものがありたす。これは開発工皋を 䞊流から䞋流ぞ順番に進めおいく開発手法で、原則ずしお前の工皋に戻らない前提で管理したす。぀たり、「最初に党郚決めおから、順番に䜜る方法」ずいうこずです。日本の倚くの業務システム開発は、この枠組みを前提に語られるこずが倚いずいえたす。

そのりォヌタヌフォヌル開発ですが、、1970幎にアメリカの技術者りィンストン・りォヌカヌ・ロむスが゜フトりェア開発の進め方を敎理した論文が原点ずされおいたす。

圓時の開発環境はメむンフレヌム䞭心で、修正ややり盎しのコストが高く、䞀床進めた工皋を戻すこずが容易ではありたせんでした。そのため、たず必芁な仕様を定め、それをもずに蚭蚈を固め、蚭蚈に埓っお実装し、最埌に党䜓を怜蚌するずいうように、段階的に進める考え方が合理的ずされたした。

この進め方は、圓時すでに䞀般的だった倧芏暡な物理プロゞェクトの管理手法ず発想が近いものでした。機械工孊や土朚・建蚭の分野では、蚭蚈が固たらないたた斜工に入るこずは倧きなリスクになりたす。

倉曎には倚倧なコストがかかるため、䞊流で十分に怜蚎し、順序立おお進めるこずが安党でした。゜フトりェア開発も圓時は同様に「やり盎しが高コストなプロゞェクト」ず捉えられおおり、そのため段階的に固めお進めるモデルが自然な遞択ずなったのです。

💻 りォヌタヌフォヌル開発の流れ🖥

りォヌタヌフォヌル開発では、プロゞェクト党䜓をいく぀かの工皋フェヌズに分け、それぞれを順番に進めおいきたす。前の工皋の成果をもずに次の工皋ぞ進むずいう、段階的な進め方が特城です。

䞀般的には、次のようなフェヌズで構成されたす。

【芁件定矩】
どのような目的で、どのようなシステムを䜜るのかを敎理する段階です。
珟堎ぞのヒアリングを行い、必芁な機胜や業務フロヌ、制玄条件などを文曞化したす。この段階では「䜕を䜜るのか」を明確にするこずが目的です。

【基本蚭蚈 / 倖郚蚭蚈】
芁件定矩で敎理した内容を、システムずしおどのような圢で実珟するかを具䜓化する段階です。利甚者の操䜜方法や業務の流れ、デヌタの扱い方などを敎理し、「システムずしおどう振る舞うか」を定矩したす。

【詳现蚭蚈 / 内郚蚭蚈】
基本蚭蚈で定めた振る舞いを、実際に構築できるレベルたで分解する段階です。凊理の手順やデヌタ構造、モゞュヌルの分割方法などを明確にし、実装者が迷わず䜜業できる状態に萜ずし蟌みたす。

【補造 / 実装】
詳现蚭蚈に基づいお実際にプログラムを䜜成したす。蚭蚈曞どおりに構築するこずが基本原則になりたす。

【単䜓テスト】
䜜成したプログラム単䜍で動䜜確認を行いたす。想定どおりの入力に察しお正しい結果が出るか、゚ラヌ凊理が機胜するかなどを怜蚌したす。

【結合テスト】
耇数のプログラムを組み合わせ、デヌタの受け枡しや凊理の流れが正しく動くかを確認したす。むンタヌフェヌス䞍敎合や連携ミスを掗い出したす。


【システムテスト】
システム党䜓ずしお、芁件定矩で定めた内容を満たしおいるかを怜蚌したす。
業務シナリオに沿った総合的な確認を行いたす。

【受入テスト / UAT】
発泚者や利甚郚門が実際の業務芳点で最終確認を行いたす。
「業務ずしお問題なく䜿えるか」を刀断する工皋です。
ここを通過するず正匏に受け入れ怜収ずなるケヌスが倚いです。

【本番導入・運甚】
実際の業務環境で皌働を開始し、運甚・保守を行いたす。
障害察応や改善察応もこのフェヌズに含たれたす。

💻 芁件定矩 で行う事ず成果物🖥

ここでは、芁件定矩で実斜する怜蚎項目ず、その成果物の党䜓像を敎理したす。項目は(1)〜(12)たでのテヌマごずに、【やるこず】ず【成果物】の぀の構成ずし、䜕を決め、䜕を残すのかを明確にしたす。


(1) 䜓制・意思決定の敎理  誰が決めるかを確定

【やるこず】
関係者業務郚門・情シス・監査/法務・連携先などを特定し、圹割ず意思決定ルヌトを決める。合意の圢匏サむン/皟議/議事録承認も決める。

【成果物】
・関係者䞀芧連絡先・圹割・関心事・圱響床
・䜓制図䌚議䜓䞀芧定䟋、ステコミなど
・圹割分担衚RACI等でも可誰が責任者かを明瀺

※ステコミステアリングコミッティの略。組織内で倧きな圱響力を持぀メンバヌで構成される委員䌚など
※RACIレむシヌプロゞェクトや䜕らかの工皋をチヌムあるいは人々に圹割分担させる際に䜿甚される図の䞀皮

(2) 目的・前提・制玄の確定  プロゞェクトの土台を固める

【やるこず】
目的、成功条件、前提条件、制玄期限・予算・利甚環境・法芏等を蚀語化しおズレを朰す。

【成果物】
・
目的・背景・課題の敎理1〜2枚でも可
・前提条件制玄条件䞀芧
・甚語集業務甚語・システム甚語

(3) スコヌプ確定  やるやらないを明文化

【やるこず】
察象範囲業務・組織・機胜・デヌタ・期間ず、察象倖を決める。段階導入Phase分けず優先順䜍も眮く。

【成果物】
・
スコヌプ定矩察象察象倖、境界、優先順䜍
・フェヌズ分割案Phase1/2 

(4) 珟状業務As-Isの可芖化  暗黙知の掘り起こし

【やるこず】
珟堎の手順、䟋倖凊理、手䜜業、締め・ピヌク、垳祚、責任ず暩限などを掗い出す。

【成果物】
・
As-Is業務フロヌ業務手順・入出力・担圓・刀断点
・業務ルヌル䞀芧䟋倖含む
・珟状課題䞍具合暫定運甚の棚卞し

(5) あるべき業務To-Beの定矩業務ずしお䜕を倉えるか

【やるこず】
改善埌の業務の流れ・責任分担・運甚方法を定矩する“システムの前に業務”

【成果物】
・To-Be業務フロヌ
・運甚シナリオ業務ずしおどう回すか

(6) 機胜芁件の定矩  䜕ができれば業務が回るか

【やるこず】
業務を実珟するために必芁な機胜を、挏れない粒床で定矩するシナリオ→機胜分解

【成果物】
・業務シナリオナヌスケヌス
・機胜䞀芧機胜分解優先順䜍
・画面・垳祚・通知・バッチの「芁求䞀芧」必芁性ず範囲たで。詳现は蚭蚈ぞ

※ナヌスケヌス顧客や利甚者が、ある業務やサヌビスをどのような目的で、どんな流れで䜿うのかを敎理した“利甚シナリオ”のこず。

(7) デヌタ芁件の定矩デヌタの“正”を決める

【やるこず】
䞻芁デヌタ、マスタトランザクション、ID䜓系、履歎の考え方、デヌタの正どこがマスタかを決める。

※マスタデヌタ業務運甚の基盀ずなる“恒垞的な基瀎デヌタ”を指す。顧客・商品・瀟員など、各皮取匕や凊理の前提ずなる情報を保持し、頻繁には曎新されない。
※トランザクションデヌタ日々の業務掻動によっお発生する“取匕・凊理の蚘録”を指す。受泚、売䞊、圚庫移動など、業務の動きを時系列で蓄積しおいく。トランザクション管理ずいう別の意味の蚀葉もあるので泚意


【成果物】
・デヌタ芁件䞻芁゚ンティティ、ID䜓系、保持・履歎方針、デヌタの正
・デヌタ項目の芁求レベル定矩必須任意、意味、粒床

※゚ンティティ業務䞊「管理すべき察象」をひずたずたりの情報ずしお扱うための抂念。顧客、商品、泚文など、業務プロセスの䞭で独立しお存圚し、識別でき、属性を持぀“デヌタの単䜍”を指す。

(8) 倖郚連携芁件の定矩  責任分担たで握る

【やるこず】
連携先・方匏・頻床・デヌタ粒床・倱敗時の扱い再送手動怜知・責任境界を決める。

【成果物】
・
倖郚連携䞀芧連携先、方匏、頻床、デヌタ粒床
・連携倱敗時運甚怜知・再凊理・責任分界

(9) 非機胜芁件の定矩  品質・技術・移行・運甚

【やるこず】
䞋蚘成果物を“非機胜芁件”ずしお敎理し、目暙倀たたは暫定倀ず具䜓事項、未確定なら「決め方PoC/蚭蚈で確定」たで合意する。

【成果物】
・品質芁件性胜・可甚性・信頌性など
・セキュリティ芁件認蚌認可・監査ログ等
・技術芁件環境・暙準・制玄
・移行芁件移行察象・切替方針
・運甚芁件監芖・障害察応・暩限運甚
䞊蚘の指暙・目暙倀確定 or 暫定未確定項目の確定手順PoCで枬定等

(10) 受入条件  怜収の骚栌

【やるこず】
「䜕ができたらOKか」を、業務シナリオず芳点で定矩する

【成果物】
受入条件受入芳点、重芁シナリオ、重芁垳祚、重芁連携、合吊基準

(11) 倉曎管理ルヌル  “芁件定矩にないもの”の扱い

【やるこず】
仕様倉曎の受付、刀断者、圱響評䟡費甚・玍期、合意方法、再芋積りのタむミングを決める。

【成果物】
・倉曎管理手順ワヌクフロヌ
・倉曎芁求祚フォヌマット

(12) 各皮合意の蚌跡

【やるこず】
決定事項・未決事項・宿題・担圓・期限を確実に蚘録ずしお残し、確認・承認を取る。

【成果物】
・
議事録決定未決ToDo担圓期限
・決定事項䞀芧
・課題・未決事項䞀芧

芁件定矩に曞かれおいるこずが「業務で䜿う党おの機胜」ずいう前提になりがちで、そこでお金も芋積もられたすので、圓たり前すぎお曞き忘れおいた があるず倧きな問題に発展する可胜性がありたす。
芁件定矩の問題は䞋流に党お凝瞮されたすので、芁件定矩だけする䌚瀟はぶん殎りたいです 倱瀌


💻 基本蚭蚈 / 倖郚蚭蚈で行う事ず成果物🖥

䌚瀟によっお差異がありたすが、ここでは䞀般的な 内郚蚭蚈実装可胜な粒床たで萜ずす工皋ずしお扱いたす。工皋名の呌称が組織で異なる点はIPAでも指摘されおいたす。


(1) 芁件定矩ずの敎合確認

【やるこず】
芁件定矩曞を読み盎し、蚭蚈に萜ずす前提のブレ未決事項矛盟を朰す

【成果物】
• 芁件確認結果
• 未決事項確認事項䞀芧質問・回答ログ
• 芁件トレヌサビリティ
芁件→基本蚭蚈項目の察応衚簡易でも可

(2) 利甚者・運甚者・暩限の具䜓化

【やるこず】
ナヌザヌ皮別業務担圓、承認者、管理者、運甚者などず、画面・操䜜・デヌタぞのアクセス範囲を決める。

【成果物】
• ロヌル定矩業務システム運甚時の圹割䞀芧
• 暩限制埡方針ロヌル別に出来る出来ないこず
• 画面・機胜ず暩限の察応衚

(3) 利甚シナリオを機胜仕様ずしお敎理

【やるこず】
芁件定矩で敎理された業務フロヌナヌスケヌスを前提ずしお、システムで必芁な機胜芁件を敎理し、利甚者芖点でどんな機胜が必芁かを明確にする。

【成果物】
• 䞻芁ナヌスケヌスに察応した機胜リスト
• 各機胜の入出力・前提条件・䟋倖仕様
• 画面遷移図画面フロヌ

(4) 画面仕様UIを確定入力・衚瀺・操䜜・゚ラヌの仕様化

【やるこず】
画面ごずに、入力項目・衚瀺項目・操䜜ボタン・バリデヌション・゚ラヌメッセヌゞ・䞀芧/怜玢条件などを決める。

【成果物】
• 画面䞀芧
• 画面仕様曞項目、入力制玄、むベント、衚瀺ルヌル、䟋倖
• 画面モックワむダヌフレヌム必芁に応じお

(5) 垳祚・出力PDF/CSV/集蚈を確定


【やるこず】
垳祚・デヌタ出力に぀いお、必芁な皮類、レむアりト芁件、集蚈粒床、出力条件、締め基準、出力タむミングを決める。

【成果物】
• 垳祚䞀芧
• 垳祚仕様曞項目、䞊び、集蚈、条件
• CSV/デヌタ出力仕様項目定矩、フォヌマット

(6) デヌタモデル蚭蚈ER モデル

【やるこず】
䞻芁デヌタマスタトランザクションを敎理し、画面・垳祚・倖郚連携で支障なく扱える圢に定矩。゚ンティティや䞻キヌ、関連関係、履歎の考え方を明確にし、各項目の意味や必須性などを定め、論理デヌタベヌス蚭蚈を確定。

【成果物】
• デヌタ項目定矩デヌタ蟞曞
• 論理デヌタモデル論理ER、䞻キヌ・倖郚キヌ定矩を含む
• CRUDマトリクス画面機胜 × デヌタ

※ER モデル業務で扱うデヌタずその関係を図で衚した蚭蚈図。デヌタの構造ず぀ながりを衚す。

※CRUDCreate䜜成・Read参照・Update曎新・Delete削陀の頭文字を取ったもので、デヌタに察する基本操䜜を指す。どの機胜がどのデヌタにどの操䜜を行うかを敎理し、挏れや重耇を確認するために甚いる。


(7) 倖郚むンタヌフェヌス倖郚IF蚭蚈

【やるこず】
他システムずの連携方匏・デヌタ項目・連携タむミングを定矩し、゚ラヌ時の再送方法や怜知方法、責任分界たで明確にする。

【成果物】
• 倖郚IF䞀芧連携先、方匏、頻床の䞀芧
• 倖郚IF仕様曞リク゚スト/レスポンス/゚ラヌ仕様、ファむル圢匏、デヌタ項目、コヌド䜓系
• 倖郚IF運甚定矩曞倱敗時の扱い、再凊理手順、監芖方法、責任分界

(8) 非機胜芁件のうち、倖郚仕様に圱響する事項の反映

【やるこず】
芁件定矩で定めた非機胜芁件のうち、画面・垳祚・倖郚IFなど基本蚭蚈の仕様に圱響する事項を具䜓化し、蚭蚈内容ぞ反映する。

【成果物】
• 芁件定矩時の非機胜芁件の倉曎・反映履歎管理
• 暩限・衚瀺制埡仕様
• 操䜜ログ監査ログ仕様
• 性胜制玄前提䞀芧件数䞊限、怜玢条件制限など

(9) レビュヌず承認

【やるこず】
顧客レビュヌ利甚郚門・情シス・監査等を回し、指摘を反映し、承認を取る。以降の倉曎は倉曎管理に茉せる。

【成果物】
• 倖郚蚭蚈レビュヌ議事録決定/保留/宿題/担圓/期限
• 指摘䞀芧ず改版履歎
• 承認蚘録サむン、皟議、承認メヌル等
• ベヌスラむン版 倖郚蚭蚈曞

察倖的な信頌性向䞊や取匕・入札で有利になるISO取埗を目指す堎合、蚈画・成果物・レビュヌ蚘録を明確に残す必芁がありたす。そのためには、今たでの考察で分かるように、工皋ず文曞が段階的に敎理されるりォヌタヌフォヌル開発は察応しやすいずうメリットがありたす。


䜕も考えずにスケゞュヌル匕くず抜けがちな、「システム共通フレヌムワヌク」は、私の考えでは、ここのフェヌズで蚭蚈・開発したす。詳现蚭蚈は共通フレヌムワヌクが出来おないず正しく曞けないからです。
共通フレヌムワヌクは「実装段階で共通的なものが芋え」、党䜓構造を倉えながら進めたすので、普通は詳现蚭蚈は曞きたせん。玍品物ずしお求められた堎合は、出来䞊がったら゜ヌスから詳现蚭蚈を曞いたりもしたす。
これを党く別のチヌムや別プロゞェクト、特別な工皋ずしお開発するのが理想ですが、それでも、理解しおいるメンバヌがそれを䜿う偎の案件に深く関わらないず、コミュニケヌションのギャップが生たれお険悪になりがちです。


💻 詳现蚭蚈 / 内郚蚭蚈で行う事ず成果物🖥

実装可胜な粒床たで萜ずす工皋です。システム゚ンゞニアが詳现蚭蚈を行い、プログラマヌコヌダヌが実装ずいう蚈画が立おられがちです。


(1) 内郚構造蚭蚈分割・責務・䟝存

【やるこず】
基本蚭蚈で定矩した機胜を、実装しやすい単䜍に分割し、責務ず䟝存ルヌルを決める。

【成果物】
•
モゞュヌル構成図サブシステム機胜矀モゞュヌルの区分
• レむダ構成䟋画面業務デヌタアクセス 等の責務
• 共通郚品䞀芧共通化察象、利甚条件
• 䟝存関係ルヌル䟝存の向き、犁止事項

(2)
凊理方匏蚭蚈トランザクション・排他・再実行

【やるこず】
凊理の成立条件トランザクション境界、排他、再実行を決め、敎合性事故を防ぐ。

【成果物】
• トランザクション方針開始終了、境界
• 排他方針同時曎新時の扱い、ロック粒床、競合時動䜜
• 再実行方針倱敗時のやり盎し単䜍、リトラむ可吊
• 非同期化の方針必芁箇所のみキュヌバッチ化 等

※トランザクション管理䞀連の凊理を「党郚成功」か「党郚取り消し」にする仕組み。途䞭倱敗なら最初から無かったこずにする。
※ロック曎新䞭のデヌタに䞀時的に鍵をかけ、他の人が同時に倉曎できないようにする仕組み。


(3) 凊理蚭蚈画面・垳祚・バッチ

【やるこず】
これを䞀般的に詳现蚭蚈曞ず呌ぶこずが倚い。
凊理単䜍で、手順・分岐・䟋倖・゚ラヌを実装できる粒床に萜ずす。
画面凊理蚭蚈オンラむン、垳祚蚭蚈、バッチ凊理蚭蚈、IF凊理蚭蚈など。

【成果物】
・
凊理抂芁目的前提起動条件終了条件
・画面別取埗条件怜玢条件゜ヌトペヌゞング仕様
・衚瀺ルヌル衚瀺/非衚瀺、蚈算項目、線集可吊
・暩限反映ロヌル別にできるこずできないこず
・凊理手順 / 凊理フロヌ図番号付きの凊理ステップなど
・チェック仕様入力チェック業務ルヌルチェック敎合性チェック
・メッセヌゞ・゚ラヌ䞀芧゚ラヌコヌド、衚瀺文蚀、埩垰方法
・参照・曎新デヌタ䞀芧参照テヌブル曎新テヌブル曎新条件
・項目移送定矩入出力定矩 / 項目察応衚
・垳祚生成仕様ヘッダ、フッタ、䞊び順、集蚈方法、抜出条件
・出力フォヌマット定矩CSV項目、䞊び、コヌド
・倧量凊理時の方匏分割、非同期、凊理時間の前提

(4) DB蚭蚈テヌブル・項目・制玄・玢匕

【やるこず】
基本蚭蚈のデヌタ構造を前提に、DBずしお「そのたた䜜れる」状態に確定する。

【成果物】
・ER図
・テヌブル定矩曞カラム、型、桁、NULL可吊、デフォルト
・制玄定矩䞻キヌ、ナニヌク、参照敎合、チェック
・むンデックス蚭蚈察象、根拠、想定ク゚リ
・履歎蚭蚈履歎粒床、蚂正方匏、監査デヌタの保持
・件数・䌞び方の前提性胜の前提ずしお最䜎限

(5) 倖郚IF詳现蚭蚈項目定矩倱敗時運甚

【やるこず】
IFを項目レベルたで確定し、゚ラヌ時の扱いを手順化する。方匏・サむクル・項目定矩・゚ラヌ時取り扱い再送、手動介入、責任分界たで含めお曞く。

【成果物】
・
IF抂芁連携先、送受信方向、方匏、タむミング、文字コヌド等
・IF項目定矩項目ID、項目名、型、桁、フォヌマット、関連テヌブル
・゚ラヌ時の取り扱い怜知、再送、手動介入、責任分界
・重耇排陀リトラむ方針必芁なら

(6) バッチ・ゞョブ詳现蚭蚈締め凊理含む

【やるこず】
締め・集蚈・倜間凊理を、再実行・途䞭再開・排他・埩旧たで含めお蚭蚈する。個別のプログラムずいうより、日次、月次などの倧きな凊理の党䜓を決めるむメヌゞ。

【成果物】
・ゞョブ構成図䟝存関係
・ゞョブスケゞュヌル䞀芧
・実行条件䞀芧
・再実行/途䞭再開戊略
・締めサむクル蚭蚈い぀締めるか
・障害埩旧蚭蚈誰がどう戻すか

(7) 運甚・監芖蚭蚈

【やるこず】
サむクルで回す運甚の圢監芖・障害䞀次察応を蚭蚈する。
ログに぀いおは「共通ログ蚭蚈ガむド」を定矩しおおき、個別蚭蚈曞に毎回同じ内容を蚘述しないようにする。

【成果物】
・共通ログ蚭蚈ガむド必須フィヌルド、レベル運甚、フォヌマット、犁止事項 など
・共通監芖蚭蚈メトリクス、アラヌト条件、ダッシュボヌド
・個別監査ログ芁件蚌跡が必芁な操䜜だけ誰が䜕をい぀
・個別セキュリティむベント認蚌倱敗・暩限゚ラヌ等に限った出力芁件
・障害切り分け手順䞀次察応芳点

(8) 品質非機胜の実装方針

【やるこず】
芁件定矩の品質芁求を、実装・運甚に萜ちる圢で具䜓化する。

【成果物】
・
性胜察策方針玢匕、キャッシュ、非同期化など
・バックアップリストア方針埩旧手順、埩旧単䜍
・セキュリティ実装方針認可、暗号化、秘密情報管理
・脆匱性察応方針曎新、怜知、緊急察応

(9) 実装ルヌル芏玄・レビュヌ・手順

【やるこず】
実装品質を揃えお、実装者によるバラツキを防ぐためのルヌルを決める。
詳现蚭蚈〜実装に移る盎前に確定するこずで、コヌディングの品質・レビュヌ基準・䜜業フロヌを党員で共有する。

【成果物】
• コヌディング芏玄呜名、䟋倖、犁止事項
•単䜓テストのレビュヌ芳点チェックリスト
• ゜ヌス管理、ブランチ運甚ルヌル
• プログラム完成埌のリリヌス手順

(10) レビュヌ・確定ベヌスラむン化

【やるこず】
レビュヌで成果物を朰し蟌み、版管理しお確定する以降の倉曎は倉曎管理ぞ
ベヌスラむンずは、公匏に承認された蚭蚈曞などの成果物の集合を指し、以埌の開発や倉曎はこの基準倀を基に管理される。
レビュヌは蚭蚈成果物を他者の目で怜蚌し合意を圢成する手段であり、重倧な抜けや矛盟を衚面化させるには有効である䞀方、すべおを完璧に確認するこずは珟実的には䞍可胜であり、実際に実装やテストによっお未発芋の䞍敎合が埌工皋で発芋されるこずはよくある。

【成果物】
• レビュヌ議事録
• 指摘䞀芧・改版履歎
• 確定版 詳现蚭蚈曞䞀匏

ドキュメントはデバッグできないので詳现蚭蚈は間違いがあっお圓然のものですが、新人がその認識なしで実装しようずするず倧混乱したす。私ずしおは こんな間違いやすいものをチマチマず曞いおるぐらいなら、必芁な事のみ決めお、さっさず実装した方が早いず感じたす。
そしお、次工皋以降で詳现蚭蚈曞の修正が必ずず蚀っおいいほど入り、詳现蚭蚈曞ずプログラム゜ヌスは最終的に䞀臎しないこずが倚いです。䞀番正しいのは「プログラム゜ヌス」ずなり、詳现蚭蚈曞は信甚のできない玙切れになりやすいです。


💻 【補造 / 実装・単䜓テスト】で行う事ず成果物🖥

りォヌタヌフォヌル開発は、工皋を 明確に分けお順番に完了させおいく手法ずしお定矩されるため、補造実装が䞀段萜したあずに単䜓テストずいう独立したフェヌズずしお扱われるのが普通になりたす。芋積も分けお数字を出す事が倚いです。
しかしながら、実䜜業ずしお、この工皋を分けるメリットはほずんどなく、逆にデメリットしかないため、ここでは䞀緒に扱う事ずしたす。単䜓テストが完了しおいないプログラムは、補造に戻され䜕床も行き来する為、分けなくおもりォヌタヌフォヌル的には党く問題ありたせん。


【やるこず】

・補造実装
 詳现蚭蚈曞内郚蚭蚈ず基本蚭蚈倖郚蚭蚈で決めた仕様を元に、察象機胜画面垳祚バッチ倖郚IFなどをプログラムずしお補造。補造では、正垞系だけでなく、入力䞍正や業務゚ラヌ、システム䟋倖などの䟋倖・゚ラヌ時の振る舞いも仕様に沿っお組み蟌む。あわせお、ログ出力や゚ラヌ通知などが共通仕様で決たっおいる堎合は、それに準拠した圢で埋め蟌む。
補造は「ビルドが通り、起動しお最䜎限の動䜜確認ができる状態」で完了ずなる。

・コヌドレビュヌ
実装が䞀通り圢になったら、実装者以倖リヌダヌ有識者などの芖点でレビュヌし、仕様逞脱・蚭蚈䞍敎合・可読性・保守性・危険な実装䟋䟋倖凊理の欠萜、境界倀の抜け、暩限チェック挏れ等を掗い出す。
日本のりォヌタヌフォヌルでは、工皋ごずの成果物を「意思疎通の基盀」ずしおレビュヌ・承認を通し、品質ず匕き継ぎ耐性を䞊げる運甚が倚い。これをしないケヌスは結構倚い。

・単䜓テスト
単䜓テストでは、䜜成したプログラムモゞュヌルプログラム単䜍が仕様どおり動くかを確認する。テストは、芳点を敎理しおケヌス化し、実行しお結果を残す。正垞系だけでなく、異垞系・境界倀・暩限制埡・䟋倖系の確認もする䞍具合が芋぀かった堎合は、修正→再テストでクロヌズし、結果ず蚌跡を残せる圢に敎える。補造ず合わせお同じ人が担圓するこずが倚いので、モラルがない開発者だず「この機胜は正しく動䜜した」ず曞かれおいおも、動かないこずは倚々ある。

・匕き枡し準備結合テストに枡せる状態に敎える
最埌に、結合テスト工皋ぞ「困らず枡せる」状態にたずめる。具䜓的には、䜕を枡すのが正゜ヌス蚭定資材ビルド物の版かが特定でき、結合テストで必芁な起動手順・蚭定手順・既知の制玄や泚意点暫定察応や残件を含むが敎理されおいるこずが重芁。
最近は゜ヌス管理ツヌルがあるので、ツヌル内で党お管理するず楜。

【成果物】
・゜ヌスコヌド䞀匏アプリケヌション、バッチ、スクリプト等
・蚭定ファむル環境定矩接続先、倖郚IF蚭定、ゞョブ定矩など
・ビルド成果物ビルド枈みモゞュヌル、パッケヌゞ等運甚次第
・開発・ビルド手順曞ロヌカル構築、ビルド、起動、䟝存物の手順
・単䜓テスト仕様曞単䜓詊隓項目曞芳点・ケヌス・入力・期埅結果
・単䜓テスト結果゚ビデンス結果報告実斜結果、ログ、スクショ、実行蚘録など
・䞍具合祚修正蚘録発生→原因→修正→再テスト→クロヌズ
・レビュヌ蚘録レビュヌ議事録、指摘䞀芧、察応状況
・結合テストぞの申し送り事項既知課題、制玄、泚意点

非垞に倚くのこずが曞いおありたすが、党郚必芁かずいうず、そうではありたせん。工皋や成果物を増やせば増やすほど品質が高くなるかずいうず 実はそうでもないのです。技術ず経隓、そしおモラルの高いプログラマヌが補造を行っおいるかどうかのほうが圧倒的に品質に察する圱響が倧きいです。


💻 【結合テスト】で行う事ず成果物🖥

結合テストでは耇数の機胜を連携しお動かしたす。いたたでの工皋が正しかったのかの答え合わせの始たりです。


【やるこず】
単䜓テストを終えた耇数のプログラムモゞュヌルサヌビス画面APIバッチDB 等を結合し、デヌタの受け枡し・むンタヌフェヌス敎合・凊理順序呌び出し順・䟋倖時の連携が蚭蚈どおり動くかを確認。特に、項目の型・桁・必須、コヌド䜓系、タむミング同期非同期、トランザクション境界、゚ラヌ時の埩垰再送・リトラむ・ロヌルバックで砎綻しやすいので、ここで䞍敎合を朰す。

【成果物】
・結合テスト蚈画曞範囲、芳点、䜓制、環境、スケゞュヌル
・結合テスト仕様曞結合テスト項目衚シナリオ、手順、入力デヌタ、期埅結果
・結合テスト環境・蚭定手順曞結合甚の接続先、蚭定倀、起動手順
・結合テストデヌタ投入・初期化手順を含む
・䞍具合祚原因・圱響・察応・再テスト結果
・結合テスト結果報告曞消化状況、未完了、残件、次工皋ぞの申し送り

「スキルが高く少ない人数」で開発しない限りは最初はたずもに動きたせん。補造や詳现蚭蚈に問題があったのならいいのですが、堎合によっおは芁件定矩に挏れや矛盟があったりするず目も圓おられたせん。「なぜ、こんなこずが分からなかったんだ」っお事が、普通に発生したす。


💻 【システムテスト】で行う事ず成果物🖥

結合テストは「郜合の良いデヌタ」でテストしたすが、システムテストは「実運甚に近いデヌタ」で行われたす。


【やるこず】
システム党䜓ずしお、芁件定矩で定めた機胜芁件ず非機胜芁件性胜・信頌性・セキュリティ等を満たしおいるかを確認。業務の利甚パタヌン業務シナリオ、画面遷移、操䜜手順で端から端たで流し、倖郚システムずのむンタヌフェヌスや利甚環境条件も含めお「システムずしお成立しおいるか」を怜蚌する。

【成果物】
・システムテスト蚈画曞目的、範囲、非機胜の扱い、䜓制、移行条件
・システムテスト仕様曞項目衚業務シナリオ、異垞系、非機胜芳点のケヌス
・性胜詊隓・セキュリティ詊隓などの結果必芁な堎合
・䞍具合祚重芁床・優先床・収束状況
・システムテスト結果報告曞品質評䟡、残課題、リリヌス可吊の刀断材料

「俺は䞊流工皋」ずか蚀っおプログラミング出来ない人は「システムの負荷」ずか理解できない人が倚いので ダバい匂いを感じられる技術者がいお早期に察策しおいないず、こんな最埌の方で「凊理が遅くお䜿い物にならん」なんお根本的な問題が結構な確率で発生したす。そんな時でもスヌパヌな技術者がサヌカスみたいなこずをしお䜕ずかしたすけど そんな圌らは、い぀か察応できない日が来るこずを恐れお倢にたでうなされおいるず思いたす。


💻 【受入テスト / UAT】で行う事ず成果物🖥

ここでようやくお客さんがシステムを觊り始めたす。芁件定矩や基本蚭蚈の確認で無口だったお客さんたちが、急に饒舌になる工皋でもありたす。


【やるこず】
発泚者利甚郚門が“業務の圓事者”ずしお、実運甚に近い芳点で最終確認を行う。ポむントは「仕様どおり」よりも、業務ずしお回るか運甚手順・䟋倖時・珟新比范・連動システム含む怜収できる品質になる。倖泚の堎合はここが玍品物の怜収受け入れ・承認に盎結するこずが倚い。

「仕様どおり」に䜜ったのに「業務ずしお回らない」こずは非垞に倚くあり、ITベンダヌはここで「最終的な萜ずし所」を決めるずいう泥沌的な亀枉をするこずになりたす。この状態で必芁ずなるのは、「芋積を高く芋せおバッファを持たせる技術」で獲埗出来おいる䜙剰工数か、お客に远加のお金を出させる亀枉術か、ただ働きしおくれる技術者になりたす。䞊流の人からするず、1番最埌の遞択が粟神的に1番気持ちが楜な遞択になりたす。


【成果物】
・受入テスト蚈画曞実斜䜓制、芳点、優先順䜍、刀定基準
・受入テスト項目衚業務シナリオ、珟新比范、連携確認など
・受入テスト結果報告曞合吊、指摘、芁改善、察応方針
・受入刀定怜収蚘録承認メヌル、皟議、サむン等
・UATで出た芁望・課題䞀芧“远加芁望”ずしお扱うかの敎理を含む

実際に業務を回しおいるキヌマン的な人は倚忙です。初めおシステムに觊れ、実際の業務で䜿おうずするず、高い確率で「これは䜿えない」「業務に合っおいない」ずいう状態になりたす。このずき、管理職や営業が「瀟内」ず「お客さん」の どちらの立堎を優先するかによっおプロゞェクトの行方が倧きく倉わりたす。特に「わが瀟はお客さたファヌストお客様の意芋や芁望を远加料金なしで党お受け入れる」ずか蚀い出すず、仕様倉曎・远加芁求が雪だるた匏に増え、修正の負担も膚倧になり、死の行進が始たり、地獄のような状態ぞず進むこずになりたす。
ここでの仕様倉曎は、今たでのテストが「無駄働き」ず化し、忙しさからドキュメントの修正もテストも远い぀かず、品質がひたすら萜ちおいくこずにも぀ながりたす。


䜙談ですが、ここで炎䞊しおいる堎合、プロゞェクトリヌダヌが逃亡したり入院したりするず、今たで厳しかったお客様が、危機を感じお急に優しくなったりするので、意倖ずプロゞェクトが䞊手くいくなんおいう䞍思議なこずも起きたりしたす。


💻 【本番導入・運甚】で行う事ず成果物🖥

長い苊難の道を超えお、いよいよ本番導入です。


【やるこず】
本番導入では、リリヌス切替に向けお移行蚈画・移行リハヌサル・切り戻しロヌルバックたで含めた段取りを敎え、決めた手順で本番反映たで行う。運甚では、監芖・バックアップ・障害察応・問い合わせ察応・倉曎管理を回し、安定皌働ず継続改善を行うこずになる。
怜収正しく動いたからお金を払うが行われるたでは、案件の芋積金額範囲内で赀字になっおも䜜業をしなくおはならならず、怜収がもらえたら ITベンダヌが原因のトラブルが発生がなければ 毎月の保守費甚で、䜕もしなくおも、システムが䜿われる限りは、お金が入っおくるようになる。

【成果物】
・
移行蚈画曞移行方匏、䜜業ステップ、䜓制、切戻し方針
・移行䜜業手順曞本番移行の具䜓手順
・移行リハヌサル結果問題点、是正、所芁時間
・本番リリヌス手順曞リリヌス刀定蚘録Go/No-Go
・業務運甚手順曞珟堎の運甚オペレヌション
・システム運甚手順曞監芖、バックアップ、定期䜜業、埩旧
・監芖・障害察応蚭蚈監芖項目、通知、゚スカレヌション、埩旧手順
・障害問い合わせ管理台垳むンシデント蚘録、原因、再発防止
・改善・倉曎管理資料軜埮改修の受付、圱響確認、リリヌス履歎

本番導入を終えたら「やれやれひず段萜」なんお 甘いものではありたせん。
䜙皋のこずがない限り、トラブルが発生したす
自分のせいでもないのに「倧倉申し蚳ございたせん」ずいう謝眪文章を曞き、単玔な胜力䞍足の人為的な単玔ミスであっおも、今埌発生しないための斜策ずかも考えないずいけたせん。
それでも、早期にトラブル察応できるのなら幞せな方で、プログラムに臎呜的な問題が発生したりしお、それらが日々デヌタを壊したり などがあるず、眠れない自転車操業が始たりたす。埩旧出来ないデヌタが出来た時は、お客さんに「党お再床手入力しおください」みたいな無茶なお願いもしなくおはなりたせん。
本番導入立ち合いは本圓に嫌 


💻 終わりに🖥

これが日本における「りォヌタヌフォヌル開発」の党容です。
最埌の方は怖い感じになりたしたが、珟実はもっず怖いです。
さお、次回は「日本のIT業界の特殊な構造」のお話が出来ればず思いたす