- ウォーターフォール・段階的・進展的モデルの違いと、どの状況で選ぶか
- スクラムの 3 役割・5 イベント・3 成果物を、1 スプリントの流れの上に並べて覚える
- バーンダウンチャートの読み方と、ベロシティから残スプリント数を出す計算の型
- XP・スクラム・リーン・DevOps の用語がどの手法に属するかの帰属
- 特許の実施許諾が要る条件(属地主義)と、著作者人格権の不行使特約の意味
- 集中型と分散型のバージョン管理、ベースラインと変更管理の手順
科目 A で例年 2〜3 問。直近 10 年(19 回)で 37 問、1 回平均 1.9 問ですが、直近 5 回は平均 2.8 問と増えています。出題の約半分はアジャイル(スクラム・XP・可視化)に集中するので、そこを確実に取り、知財と開発環境ツールで上積みするのが本章の戦略です。科目 B の「情報システム開発」を選ぶ人は、本章のスクラムと構成管理の語彙がそのまま問題文を読む前提になります。
1. 開発モデルと開発手法 ― 直列で作るか、回して作るか
開発モデルとは「工程をどう並べ、利用者にいつ動くものを見せるか」の型です。選ぶ基準は 2 つ、要求がどれだけ固まっているかとリスクをいつ潰したいかです。要求が確定していれば直列に流すのが速く、確定していなければ小さく回して確かめるほうが安全、というだけの話です。
ウォーターフォールモデルは、要件定義・設計・実装・テスト・運用を直列に並べ、各工程の成果物をレビューで確定させてから次へ進みます。確定した成果物は後述のベースラインとして凍結され、以降の変更は変更管理の手続を通します。分担と進捗が明確な反面、後工程で要求の誤りが見つかったときの手戻りコストが最大になります。第 13 章の V 字モデルは、このモデルの各設計工程と対応するテスト工程を突き合わせた見方です。
段階的モデル(Incremental Model)は、全体の要求と方式は先に決めたうえで機能を分割し、増分(インクリメント)ごとに設計からテスト・リリースまでを通します。早い段階で一部の機能が実際に使えるのが利点です。進展的モデル(Evolutionary Model)は逆に、最初に全体を粗く作り、繰り返しながら精度を上げていきます。要求が固まりきらない領域に向きます。
ほかに、試作品を利用者に触らせて要求を確定するプロトタイピングモデル、「計画→リスク分析→開発→評価」を渦巻き状に繰り返して危険な部分から潰すスパイラルモデル、少人数チームとツールで短期間に作り込む RAD(Rapid Application Development)があります。製品群に共通する資産をあらかじめ整備し、製品ごとの差分だけを開発する戦略はソフトウェアプロダクトラインと呼びます。機械学習モデルの学習・評価・デプロイ・再学習を継続的に回す運用は MLOps(Machine Learning Operations)です。
| モデル | 要求の前提 | 利用者が動くものに触る時期 | 向く場面 |
|---|---|---|---|
| ウォーターフォール | 初期に確定できる | 最後(受入れ) | 大規模・分担明確・法規対応 |
| プロトタイピング | 曖昧 | 要件定義中に試作品で | 画面や操作性の合意 |
| スパイラル | 技術リスクが高い | 各周回の評価時 | 新技術・不確実性が高い |
| 段階的(Incremental) | 全体は決まるが量が多い | 増分のリリースごと | 早期の部分稼働が要る |
| 進展的(Evolutionary) | 使ってみないと決まらない | 版のたび | 新規事業・探索的な開発 |
| アジャイル | 変化することが前提 | イテレーションごと | 変更が頻繁・小規模チーム |
設計技法としては、機能を階層構造化して段階的詳細化していく構造化手法(ソフトウェア構造を表す構造化チャート・HIPO・DFD・状態遷移図など。詳細は第 13 章)と、仕様記述言語で厳密に書いて数学的に検証する形式手法があります。形式手法の代表は VDM-SL・VDM++(支援ツールは VDMTools)と Z 言語で、状態の網羅的検査を行うモデル検査ツールには SPIN があります。コーディングをせずに画面部品の組合せで作るローコード/ノーコード開発は生産性が高い一方、複雑なロジックやプラットフォーム移行に弱い点が留意事項です。
| 用語 | 要点 |
|---|---|
| ネイティブアプリ | OS 固有の言語・API で作る。性能と端末機能の利用に有利 |
| モバイル用 Web アプリ | ブラウザで動く。審査・配布が不要だがオフラインや端末機能に制約 |
| ハイブリッドアプリ | ネイティブの外枠の中で Web 技術の画面を動かす折衷案 |
| PWA | Progressive Web Apps。Web でありながらオフライン動作・ホーム画面追加ができる |
| モバイル開発の留意点 | 端末仕様(画面サイズ等)の多様性、User-Agent による判別、パーミッション要求、圏外・着信時の動作、審査と配布 |
2. アジャイル ― 宣言・原則と手法の地図
アジャイルは特定の手順書ではなく、変化に適応しながら短い間隔で動くソフトウェアを届けるという考え方の総称です。出発点は 2001 年のアジャイルソフトウェア開発宣言で、4 つの価値が対比の形で書かれています。日本語訳では左に「価値を認めるもの」、右に「より価値をおくもの」が並びます。
| 価値を認めるもの(左) | より価値をおくもの(右) | 実務での意味 |
|---|---|---|
| プロセスやツール | 個人と対話 | 手続より、決められる人同士が直接話す |
| 包括的なドキュメント | 動くソフトウェア | 文書での合意より、動く実物での確認 |
| 契約交渉 | 顧客との協調 | 責任分界の詰めより、一緒に価値を作る |
| 計画に従うこと | 変化への対応 | 計画の遵守より、学んだことの反映 |
宣言には 12 の原則が添えられています。試験で使えるのは「動くソフトウェアこそが進捗の最も重要な尺度である」「要求の変更は開発の後期であっても歓迎する」「短い時間間隔で頻繁にリリースする」「意欲に満ちた人々を信頼し、環境と支援を与える」「最良のアーキテクチャ・要求・設計は自己組織的なチームから生まれる」「一定のペースを継続的に維持する」「定期的にふりかえり、やり方を調整する」あたりです。進捗を「消化した工数」や「作成した文書の量」で測る選択肢は、この原則に反します。
アジャイル共通の道具
| 用語 | 何をするものか | 試験での問われ方 |
|---|---|---|
| タイムボックス | 期間を固定し、入る作業量のほうを調整する | 「期間を延ばして全部入れる」は誤り |
| ユーザーストーリー | 「誰が・何をしたい・なぜ」を利用者の言葉で書いた短い要求 | 詳細仕様書との違い |
| INVEST | 良いストーリーの 6 条件。Independent(独立)・Negotiable(交渉可能)・Valuable(価値がある)・Estimable(見積り可能)・Small(小さい)・Testable(テスト可能) | 頭文字の意味 |
| ペルソナ | 典型的な利用者像を具体的な人物として定義する | ユーザーストーリーの前提づくり |
| インセプションデッキ | 開発の初期に「なぜやるのか・何を作るのか」を関係者で議論し、共通認識を得る一式の問い | 「初期」「共通認識」の 2 語で判定 |
| プランニングポーカー | カードを同時に出して相対見積りの合意を作る | 絶対工数の見積り技法ではない |
| ふりかえり(レトロスペクティブ) | プロセスの改善点を話し合う。整理の型が KPT(Keep・Problem・Try) | スプリントレビュー(成果物)との入替え |
| モブプログラミング | チーム全員が 1 つの画面を見て 1 つの成果物を作る | 2 人ならペアプログラミング |
チームが 1 つでは収まらない規模に広げる枠組みをエンタープライズアジャイルと呼びます。SAFe(Scaled Agile Framework)、LeSS(Large-Scale Scrum)、複数チームの代表が集まる Scrum of Scrums、DA(Disciplined Agile)が代表例です。名称と「大規模向けの枠組みである」ことが分かれば十分です。
3. スクラム ― 3 役割・5 イベント・3 成果物
スクラムは、透明性・検査・適応という経験主義に基づく軽量なフレームワークです。要素は3 つの役割・5 つのイベント・3 つの成果物だけで、この 11 個を「誰が」「いつ」「何を」で結び付ければ、スクラムの問題はほぼ解けます。
| 役割 | 責任 | ひっかけられ方 |
|---|---|---|
| プロダクトオーナー(PO) | プロダクトの価値の最大化。プロダクトバックログの内容と並び順(優先順位)を決める唯一の責任者 | 「開発者に作業を割り当てる」は誤り |
| スクラムマスター | スクラムの理論とプラクティスの理解・実践を支援し、チームの妨害を取り除く。指示ではなく支援 | 「進捗を管理し指示を出す管理者」は誤り |
| 開発者 | 各スプリントで利用可能なインクリメントを作る。見積りと作業計画は開発者が行う | 「PO が工数を見積もる」は誤り |
イベントはすべてタイムボックス(時間の上限)付きで、スプリントという入れ物の中に他の 4 つが入ります。順序は、プランニングで始まり、毎日のデイリースクラムを挟み、成果物を見せるレビュー、やり方を見直すレトロスペクティブで終わる、という 1 本道です。
| イベント | 目的 | 参加者と特徴 |
|---|---|---|
| スプリント | 他の 4 イベントを収める固定長の期間(1 か月以内) | 期間中はスプリントゴールを危うくする変更を入れない |
| スプリントプランニング | このスプリントで何を作り、どう作るかを決める | スクラムチーム全員。成果はスプリントバックログ |
| デイリースクラム | ゴールへの進捗を検査し、その日の計画を調整する(15 分) | 開発者のためのイベント。報告会ではない |
| スプリントレビュー | インクリメントをステークホルダに示し、フィードバックを受けてプロダクトバックログを調整する | 対象は成果物。以降のスコープはここで動く |
| スプリントレトロスペクティブ | 人・関係・プロセス・ツールを検査し、次に試す改善を決める | 対象はやり方。KPT などで整理する |
| 成果物 | 中身 | 責任者 |
|---|---|---|
| プロダクトバックログ | プロダクトに必要なものすべての、順序付きの一覧 | プロダクトオーナー |
| スプリントバックログ | 今回選んだ項目と、それを実現するための計画 | 開発者 |
| インクリメント | 完成の定義を満たした、利用可能な状態の成果物 | 開発者 |
4. アジャイルの可視化 ― バーンダウンとベロシティ
アジャイルは計画書で進捗を管理しません。代わりに実績値をグラフにして毎日眺めることで、遅れを早く見つけます。試験で問われるのはグラフの形の読み取りで、計算そのものはほとんど要りません。
バーンダウンチャートは、縦軸に残作業量(ストーリーポイントや残時間)、横軸に時間をとったグラフです。作業が消化されると残量が減るので、線は右下がりになります。開始時点と終了時点を直線で結んだ理想線を引いておき、実績線がその上にあれば遅れ、下にあれば前倒しと判断します。
誤答肢は「軸か向きだけを入れ替えた別のグラフ」で作られます。図 14-4 の 3 つの形を覚えておけば取り違えません。バーンアップチャートは完了量の累積を積み上げるので右上がりになり、スコープ(総量)の線を重ねると要求追加も見えます。ガントチャートは作業ごとの期間を帯で表すもので、残量のグラフではありません。
ベロシティと残スプリント数
ベロシティは、1 スプリントで完了できたストーリーポイントの実績値です。見積りではなく実測なので、直近数スプリントの平均を使って「あと何スプリントで終わるか」を機械的に出せます。
計算の型: ベロシティから残スプリント数を出す
ベロシティ = 直近 n スプリントの完了ポイントの平均 / 残スプリント数 = 残ストーリーポイント ÷ ベロシティ
例題 プロダクトバックログの残りは 240 ポイント。直近 3 スプリントの完了実績は 36、40、44 ポイントで、1 スプリントは 2 週間である。残りは何スプリント、何週間か。
- ベロシティを出す: (36 + 40 + 44) ÷ 3 = 40 ポイント/スプリント
- 残スプリント数を出す: 240 ÷ 40 = 6 スプリント
- 期間に直す: 6 × 2 週間 = 12 週間
答え 6 スプリント(12 週間)。3 スプリントの合計 120 をベロシティと取り違えると 2 スプリントになってしまいます。「1 スプリントあたり」に直してから割るのが手順です。
ベロシティはチーム固有の値で、チーム間の比較や評価に使ってはいけない点も押さえます。見積りの単位であるストーリーポイントは相対値であり、チームが違えば尺度も違うからです。
リーンソフトウェア開発から持ち込まれた可視化手法がバリューストリームマップです。要求が出てから利用者に届くまでの工程を横に並べ、各工程の付加価値時間(実際に作業している時間)と待ち時間を書き込みます。リードタイムの大半が待ち時間であることを見える化し、どこの滞留を削ればよいかを決めるための道具です。
| 可視化の道具 | 縦軸・表すもの | 分かること |
|---|---|---|
| バーンダウンチャート | 残作業量(右下がり) | スプリント内の遅れ・前倒し |
| バーンアップチャート | 完了量の累積(右上がり)+スコープ線 | 進捗に加えて要求の追加 |
| ベロシティ | 1 スプリントの完了ポイント | 完了時期の予測(チーム内限定) |
| バリューストリームマップ | 工程ごとの付加価値時間と待ち時間 | リードタイムのうちの無駄 |
5. XP・リーン・カンバン ― プラクティスの帰属を間違えない
スクラムが「チームの回し方」を決める枠組みなのに対し、XP(エクストリームプログラミング)は「コードの書き方」まで踏み込んだ具体的なプラクティスの集まりです。試験では両者の用語を入れ替えた誤答肢が定番なので、どの手法の言葉かを対応表で覚えます。
XP は 5 つの価値(コミュニケーション・シンプル・フィードバック・勇気・尊重)を掲げ、それを実現するプラクティスを立場別に整理しています。
| 分類 | 主なプラクティス | ねらい |
|---|---|---|
| 共同のプラクティス | 反復(イテレーション)、共通の用語、開けた作業空間、ふりかえり | チーム全体で同じリズムと語彙をもつ |
| 開発のプラクティス | テスト駆動開発(TDD)、ペアプログラミング、リファクタリング、ソースコードの共同所有、継続的インテグレーション(CI)、YAGNI | 変更に強いコードを保つ |
| 管理者のプラクティス | チームの責任の受入れ、援護、四半期ごとの見直し、持続可能なペース | 無理のない速度を守る |
| 顧客のプラクティス | ストーリーの作成、リリース計画、受入れテスト、頻繁なリリース | 価値の判断を顧客が担う |
YAGNI(You Aren't Gonna Need It)は「今必要ないものは作らない」という指針で、シンプルの価値に対応します。ソースコードの共同所有は、誰でもどのコードでも直してよいという原則で、担当者不在で修正が止まる事態を防ぎます。
開発のプラクティスの中心がテスト駆動開発(TDD)です。実装より先にテストを書き、失敗を確認してから最短で通し、最後に重複を除く、という 3 拍子を小刻みに繰り返します。「先にテストを書く」ことで、テストが仕様書と回帰テストを兼ねる点が要点です。
ペアプログラミングは 2 人 1 組で 1 台の端末に向かい、実装役と確認役を交代しながら 1 つのプログラムを作る手法です。書きながらレビューが済むので欠陥の早期発見と知識共有に効きます。人数が 3 人以上のチーム全員に広がるとモブプログラミングです。「2 人で分担して並行に別々の部分を作る」「完成後にまとめてレビューする」は、どちらもペアプログラミングではありません。
リーン・カンバン・FDD
リーンソフトウェア開発は、トヨタ生産方式の考え方をソフトウェア開発に持ち込んだもので、ムダを取り除く・品質を作り込む・決定をぎりぎりまで遅らせる・速く提供する・全体を最適化する、といった原則からなります。前述のバリューストリームマップはこの流れの道具です。
カンバンは、作業をカードにしてボード上の列(未着手・仕掛り・完了など)を移動させ、各列に置ける枚数の上限(WIP 制限:Work In Progress の制限)を決める手法です。上限に達したら新しい作業を始めず、詰まっている工程を手伝います。スクラムのように固定長の反復を必ずしも持たず、流れを絶やさないプル型である点が特徴です。
FDD(ユーザー機能駆動開発)は、利用者にとって価値のある「フィーチャ(機能)」の単位で全体モデルを作り、フィーチャごとに設計と構築を繰り返します。
| 用語 | 属する手法 | ひとことで |
|---|---|---|
| スプリント、プロダクトバックログ、デイリースクラム、スクラムマスター | スクラム | チームの回し方の枠組み |
| ペアプログラミング、TDD、リファクタリング、ソースコードの共同所有、YAGNI | XP | コードの作り方のプラクティス |
| 継続的インテグレーション(CI) | XP 発祥、DevOps でも中核 | 頻繁に統合して壊れを早期発見 |
| WIP 制限、プル型のボード | カンバン | 仕掛りを絞って流れを作る |
| バリューストリームマップ、ムダの排除 | リーン | リードタイムの無駄を可視化 |
| フィーチャ単位の反復 | FDD | 機能ごとに設計・構築を繰り返す |
| ユーザーストーリー、ふりかえり、タイムボックス | アジャイル共通 | 特定手法に固有ではない |
6. DevOps と CI/CD
アジャイルで開発が速くなっても、リリースが月 1 回の手作業なら価値は届きません。DevOps は、開発(Development)と運用(Operations)の壁を取り払い、文化と自動化の両輪で「小さく速く、何度でも安全に」リリースできる状態を作る考え方です。特定のツールの名前ではありません。
DevOps の構成要素を整理した枠組みが CALMS です。Culture(文化:チームをまたいだ責任の共有)、Automation(自動化)、Lean(リーン:ムダの排除と小さいバッチ)、Measurement(測定)、Sharing(共有)の頭文字で、先頭が文化であって、道具ではない点が趣旨です。運用側からソフトウェアエンジニアリングで信頼性を作り込む役割・実践を SRE(Site Reliability Engineering)と呼びます。
自動化の背骨が CI/CD パイプラインです。開発者が変更を push するたびにビルドとテストが自動で走り、通ったものだけが次の段階へ進みます。
| 用語 | どこまで自動か | 試験での区別 |
|---|---|---|
| 継続的インテグレーション(CI) | 統合・ビルド・自動テストまで | 「頻繁に統合して壊れを早く見つける」 |
| 継続的デリバリー(CD) | いつでもリリースできる状態まで | 本番反映の判断は人が行う |
| 継続的デプロイ | 本番反映まで | 人の承認が入らない |
| IaC(Infrastructure as Code) | サーバ・ネットワークの構成をコードで定義し自動構築 | 環境差異と手作業ミスをなくす |
本番反映の仕方にも型があります。ブルーグリーンデプロイメントは本番と同等の環境を 2 系統用意し、新版を待機系に載せてから切り替える方式で、問題が起これば切り戻すだけで復旧できます。カナリアリリースは一部の利用者にだけ新版を出し、指標を見ながら比率を上げる方式です。ローリングアップデートはサーバを 1 台ずつ順に入れ替えます。
DevOps の成果は測定して初めて改善できます。よく使われる 4 指標が Four Keys です。
| 指標 | 測るもの | 方向 |
|---|---|---|
| デプロイの頻度 | 本番へのリリース回数 | 多いほど良い |
| 変更のリードタイム | コミットから本番稼働までの時間 | 短いほど良い |
| 変更障害率 | リリースのうち障害を招いた割合 | 低いほど良い |
| 平均修復時間(MTTR) | 障害発生から復旧までの平均時間 | 短いほど良い |
測定の前提がオブザーバビリティ(可観測性)です。ログ・メトリクス・トレースという外部から観測できる出力だけで、内部で何が起きているかを説明できる状態を指します。この計装(テレメトリの収集)を標準化する仕様・実装が OpenTelemetry です。さらに、開発の早い段階からセキュリティの検査を自動パイプラインに組み込む考え方を DevSecOps と呼びます。
カオスエンジニアリングは、本番環境で意図的に障害を起こしてシステムが定常状態を保てるかを検証する実践です。「定常状態の仮説を立てる」「現実に起こり得る事象を変数とする」「本番環境で実験する」「継続的に自動実行する」「影響範囲(ブラストラジアス)を局所化する」といった原則が知られています。「テスト環境に限る」「障害を起こさないようにする」は、直観的には正しそうに見えて原則に反する誤答肢です。
7. プロセス改善・共通フレーム・ソフトウェア再利用
個々のプロジェクトの巧拙ではなく、組織としてのやり方(プロセス)の質を測って底上げする活動がプロセス改善です。測るための物差しが成熟度モデルで、代表が CMMI(Capability Maturity Model Integration:能力成熟度モデル統合)です。組織の成熟度を 5 段階で示し、上の段に上がるには下の段の達成が前提になります。
| レベル | CMMI の呼び名 | その段階の状態 |
|---|---|---|
| 1 | 初期 | 場当たり的。成功は個人の力量に依存する |
| 2 | 管理された | プロジェクト単位で計画・追跡ができている |
| 3 | 定義された | 組織の標準プロセスがあり、修整して使う |
| 4 | 定量的に管理された | プロセスの実績を数値で把握し統計的に管理する |
| 5 | 最適化している | データに基づいてプロセス自体を継続的に改善する |
国際規格の系統では、プロセスアセスメント(プロセス評価)の枠組みを ISO/IEC 33000 シリーズが定めており、その JIS 版が JIS X 33001 以下の規格群です。試験では番号と内容の対応がそのまま問われます。
- JIS X 33001 プロセスアセスメントの概念及び用語(この体系の共通語彙を定める)
- JIS X 33002 プロセスアセスメントの実施に対する要求事項(診断のやり方を定める)
- JIS X 33020 プロセス能力水準及びプロセス能力測定枠組み(能力を何段階でどう測るかを定める)
JIS X 33020 のプロセス能力水準は、レベル 0 不完全なプロセス・1 実施された・2 管理された・3 確立された・4 予測可能な・5 革新しているの6 段階で、CMMI の 5 段階と数え方が違う点に注意します。組織のプロセスを評価して改善する活動全般は SPA(Software Process Assessment)とも呼ばれます。
共通フレーム(SLCP)
発注者と受注者が「どの作業まで契約に含むのか」を同じ言葉で話せるようにするための共通の物差しが SLCP(Software Life Cycle Process:ソフトウェアライフサイクルプロセス)で、国内向けに具体化したものが共通フレーム 2013(SLCP-JCF2013)です(現行版が 2013 年版で、98 年版・2007 年版が旧版です)。規格としては JIS X 0160(ソフトウェアライフサイクルプロセス)、システムを対象とする JIS X 0170 があります。
構造はプロセス → アクティビティ → タスクの 3 階層で、合意プロセス、組織のプロジェクトイネーブリングプロセス、テクニカルマネジメントプロセス、テクニカルプロセスといったプロセス群に分かれます。企画・要件定義から開発・運用・保守・廃棄までを対象範囲に含む点が要点です。すべてを使う必要はなく、プロジェクトの特性に合わせて取捨選択することを修整(テーラリング)と呼び、規格の全項目を満たす「完全適合」と、修整した上で満たす「修整適合」という適合の考え方があります。共通フレームは作業の標準手順書ではなく、用語と作業範囲を共有するための枠組みである、という位置づけが問われます。
ソフトウェア再利用とリバースエンジニアリング
生産性と品質を同時に上げる王道が再利用です。ただし「作ったものを後で使い回す」のではなく、再利用されることを前提に設計するのが部品化の要点で、そのためにモジュールの独立性を高め、カスタマイズできる箇所を明示し、命名規則を統一してライブラリとして登録します。既製のソフトウェアパッケージを購入して業務に合わせて使うことも、開発量そのものを減らす再利用の一形態です。
| 分類の軸 | 種類 | 意味 |
|---|---|---|
| 粒度・形態 | 関数部品/オブジェクト部品(クラスライブラリ)/データ部品/プロセス部品 | 手続き単位か、データと振る舞いの組か、業務処理単位か |
| 組込み方 | 常駐部品/組込み部品 | 実行時に共有されるか、成果物に取り込まれるか |
| 内部の見え方 | ブラックボックス部品/ホワイトボックス部品 | 内部を見ずに使うか、改変を前提に中身を開くか |
| 可変性 | パラメトリック部品/ノンパラメトリック部品 | 引数で振る舞いを変えられるか |
| 相互運用性 | クローズドシステム部品/オープンシステム部品 | 特定環境専用か、標準に沿って広く使えるか |
部品より大きな単位では、独立して差し替えられるまとまりとして境界と提供機能を定めたコンポーネント、共通の骨組みを提供して開発者が差分だけを書くフレームワーク、機能を境界越しに呼び出す API、業務機能をサービスとして疎結合に組み合わせる SOA(Service Oriented Architecture)、それを小さな独立配備単位まで分割したマイクロサービスがあります。複数の提供元の API を組み合わせて新しいサービスを作る手法がマッシュアップで、画面を組み合わせるプレゼンテーションマッシュアップ、データを統合するデータマッシュアップ、処理を組み合わせるロジックマッシュアップに分かれます。短期間で作れる反面、提供元の仕様変更やサービス停止に品質が左右されるのが留意点です。
リバースエンジニアリングは、既存のソフトウェアや実行形式を解析して仕様・構成・呼出し関係(コールグラフ)などの情報を取り出す行為です。互換製品の開発や仕様書が失われた資産の保守に使われますが、権利者の許可なく解析結果を用いて開発・販売すれば知的財産権の侵害となり得ること、利用許諾契約でリバースエンジニアリング自体が禁止されている場合があることを押さえます。
8. 知的財産適用管理 ― 著作権・特許・ライセンス
この節は法律の暗記ではなく、開発の現場で誰に何の権利が残り、何をするのに許諾が要るかを判断する話です。法規そのものの体系は第 22 章で扱います。
著作権 ― 誰のものになるかは契約で決まる
プログラムは著作物として保護され、プログラムの著作者は原則としてそれを創作した者です。ただし、法人等の発意に基づき、その業務に従事する者が職務上作成したものは、契約や勤務規則に別段の定めがない限り法人等が著作者になります(職務著作)。プログラムの著作物だけは「法人等の名義で公表する」という要件が不要で、社内システムのように公表しないソフトウェアでも法人が著作者になります。したがって、外部に開発を委託した場合は、何も定めなければ著作権は受託者(開発した側)に残り、委託元は納品物を使えても改変や再利用に制約が生じます。委託元へ移したいなら、契約で著作権の譲渡を明記します。
ただし著作権を譲り受けても、著作者人格権(公表権・氏名表示権・同一性保持権)は著作者本人に一身専属的に残り、譲渡できません。とくに同一性保持権があると、委託元が納品されたプログラムを自分の判断で改変することに支障が出ます。そこで実務では、契約に著作者人格権を行使しない旨の特約(不行使特約)を入れます。この条項の目的は「委託元が委託先の了解を都度取らなくても保守・改良できるようにすること」であり、財産権の帰属や公表の可否とは別の論点です。
特許 ― 属地主義と実施許諾
特許権は国ごとに成立する権利で、日本の特許権の効力は日本国内にしか及びません(属地主義)。そして特許発明の「実施」には、物の生産・使用・譲渡・輸出・輸入などが含まれます。ここから、試験で繰り返し問われる結論が出ます。国内で製造すれば、その製品を全量国外へ輸出しても国内での実施に当たるため、実施許諾が必要です。
実施許諾には 2 種類あります。専用実施権は設定した範囲で実施できるのが実施権者だけになる強い権利で、登録が効力の発生要件です。通常実施権は同じ範囲について複数人に重ねて許諾できます。両者の違いは「独占できるか」です。
ライセンス管理と技術的保護
自社が権利を持たないソフトウェアを使うには、権利者(ライセンサー)から使用許諾を受け、利用者(ライセンシー)は契約の範囲内で使う義務を負います。管理側の実務は、保有ライセンス数と実際のインストール数を定期的に照合(棚卸)することに尽きます。契約条項を超えた利用は不正利用であり、不正コピーは法的処罰の対象になります。
| 技術的保護 | 仕組み | 主な対象 |
|---|---|---|
| アクティベーション | インストール時に固有情報を登録し、正規の利用かを認証する | ソフトウェア製品 |
| コピーガード | 複製を技術的に妨げる | 媒体・コンテンツ |
| DRM | Digital Rights Management。復号鍵と利用条件で再生・複製・期限を制御する | デジタルコンテンツ全般 |
| CPRM/AACS | 記録メディア・光ディスク向けの著作権保護方式 | 録画・映像メディア |
OSS のライセンス類型(コピーレフトの強弱など)は第 6 章、著作権法・特許法・不正競争防止法といった法規の条文レベルの整理は第 22 章で扱います。本章では「開発の場面でどの許諾を取るか」の判断だけを押さえてください。
9. 開発環境管理と構成管理・変更管理
複数人・長期間の開発では、「今動いているのはどの版か」「誰がいつ何を変えたか」が分からなくなることが最大のリスクです。それを防ぐのが開発環境管理と構成管理です。
開発環境の分離と管理対象
環境は開発環境・検証(ステージング)環境・本番環境に分け、本番と同じ構成の検証環境で確かめてから反映します。仮想化やコンテナを使えば同じ構成を短時間で再現でき、「私の環境では動く」を減らせます。開発環境そのものも管理対象で、次の 5 つが押さえどころです。
| 管理対象 | やること | 怠るとどうなるか |
|---|---|---|
| 開発環境の稼働状況 | 計算資源・ツールの使用状況を把握し、資源管理・運用管理を行う | ビルド待ちや環境不足で手が止まる |
| 設計データ・ドキュメント | 更新履歴管理・アクセス権管理・検索性の確保。リポジトリで一元化する | 最新版が分からず、機密情報の持出しも追えない |
| ツール | 使用するツールとバージョンをチームで統一する | 成果物の互換性が崩れ、ツール由来の欠陥も混入する |
| ソフトウェアライセンス | インストール数と保有ライセンス数を定期的に棚卸する | 契約違反の不正利用になる |
| 開発環境のセキュリティ | 本番データを開発環境へ持ち込まない。アクセス権と持出しを記録し、導入するツールの供給元も検証する | 開発環境が情報漏えいとサプライチェーン攻撃の入口になる |
| 開発ツール | 役割 |
|---|---|
| IDE(統合開発環境) | エディタ・コンパイラ・リンカ・デバッガなどを一体化し、同じ操作画面から扱えるようにしたもの |
| SCM(ソースコード管理) | ソースの版と変更履歴を管理する。バージョン管理システムの中核 |
| ドキュメンテーションジェネレーター | ソース中のコメントや宣言から API 仕様書を自動生成する |
| ビルドツール/CI サーバ | コンパイルから配置までの手順を自動実行する |
| 静的解析ツール/テスト自動化ツール | 実行せずに欠陥候補を検出する/テストを反復実行する |
| シミュレーター・エミュレーター | 実機がない段階で組込みソフトウェアの動作を確認する |
バージョン管理 ― 集中型と分散型
バージョン管理システムは、ファイルの変更履歴を記録し、いつでも過去の版に戻せるようにする仕組みです。集中型(Subversion、CVS など)は履歴を中央のリポジトリだけが持ち、開発者は作業コピーを取得します。分散型(Git など)は各開発者の手元に全履歴の複製があり、中央に接続できなくてもコミットや履歴の調査ができます。
分散型の運用では、作業を枝分かれさせるブランチ、枝を統合するマージ、特定の版に印を付けるタグ(リリース版の目印に使う)が基本操作です。同じ箇所を並行して変更するとマージ時に競合(コンフリクト)が起こるので、ブランチを短命に保ち、頻繁に統合するのが CI の考え方につながります。
構成管理・変更管理とベースライン
ソフトウェア構成管理は、ソフトウェアがどんな部品の組合せでできているかを識別し(構成識別)、管理単位である構成品目ごとに版と変更を統制する活動です。構成品目にはソースコードだけでなく、設計書・テスト仕様書・ビルド手順・実行環境の定義なども含みます。管理の方法をあらかじめ決めた文書が構成管理計画です。構成品目とその相互関係を記録して一元的に照会できるようにしたデータベースを構成管理データベース(CMDB)と呼びます(サービスマネジメントでも同じ言葉を使います。第 16 章)。含まれる部品と依存関係を機械可読な形式で一覧にしたものが SBOM(Software Bill of Materials)で、脆弱性が公表されたときに影響範囲を即座に特定するために使われます。
この統制の要がベースラインです。正式なレビューを経て合意された構成品目の版をベースラインとして凍結し、以後の変更は変更管理の手続を通したものだけを反映します。「勝手に直せない基準の版」を置くことで、いつの時点の何を作っているのかが常に言える状態を保ちます。
変更を記録する活動が構成状況の記録で、変更回数・最新のバージョン・移行状況などを文書化します。あわせて、構成品目が仕様どおりの機能をもつこと(機能的完全性)と、必要な要素が過不足なく揃っていること(物理的完全性)を確認するのが完全性の保証で、一貫性と正確性が判断の観点です。完全性が保証されて初めて、新しい版の出荷や配布を行うリリース管理に進みます。出荷したコードと文書は、ソフトウェアの寿命がある間、定められた保管期間にわたって保守します。要求からコード・テスト・リリースまでを相互に辿れるようにしておくことをトレーサビリティと呼び、影響分析の精度はこれで決まります。
ひっかけポイント
理解度チェック(科目 A 形式)
Q1. スクラムのイベントのうち、開発したインクリメントをステークホルダに示し、そのフィードバックを踏まえてプロダクトバックログを調整するものはどれか。
- スプリントプランニング
- スプリントレトロスペクティブ
- デイリースクラム
- スプリントレビュー
正解: エ スプリントレビューは成果物であるインクリメントを検査し、以降のスコープを調整する場です。ア は次のスプリントで何をどう作るかを決めるイベント、イ は成果物ではなくプロセスを検査して改善策を決めるイベント、ウ は開発者がゴールへの進捗を確認してその日の計画を整える 15 分のイベントです。
Q2. スクラムにおけるプロダクトオーナーの責任として適切なものはどれか。
- 開発者に対して日々の作業を割り当て、進捗を管理する
- スプリントで実装する項目の技術的な実現方法を決定する
- プロダクトバックログの項目の内容と並び順を決定する
- チームがスクラムを正しく理解し実践できるよう支援する
正解: ウ プロダクトオーナーはプロダクトの価値を最大化する責任者で、バックログの内容と優先順位を決める唯一の人です。ア のような作業割当てはスクラムには無く、開発者が自ら計画します。イ も開発者の責任です。エ はスクラムマスターの責任で、指示ではなく支援を行います。
Q3. アジャイルソフトウェア開発宣言に記述されている内容として適切なものはどれか。
- 計画に従うことよりも、変化への対応に価値をおく
- 契約交渉を、顧客との協調よりも重視する
- 動くソフトウェアよりも、包括的なドキュメントを重視する
- 個人と対話よりも、プロセスやツールに価値をおく
正解: ア 宣言の 4 つの価値は「プロセスやツールよりも個人と対話」「包括的なドキュメントよりも動くソフトウェア」「契約交渉よりも顧客との協調」「計画に従うことよりも変化への対応」です。イ・ウ・エ はいずれも左右を反転させた記述で誤りです。なお宣言は左側の価値も認めており、「ドキュメントを作らない」という意味ではありません。
Q4. バーンダウンチャートの説明として適切なものはどれか。
- 縦軸に完了した作業量の累積、横軸に時間をとり、右上がりに描く
- 縦軸に残作業量、横軸に時間をとり、右下がりに描く
- 作業ごとの開始日と終了日を帯で表し、進捗を帯の塗りつぶしで示す
- 累積の欠陥検出数を時間軸にとり、S 字状に飽和する様子を示す
正解: イ バーンダウンチャートは残作業量を縦軸にとるため、作業が進むほど右下がりになり、理想線との上下で遅れを判断します。ア はバーンアップチャート、ウ はガントチャート、エ はソフトウェア信頼度成長曲線の説明です。
Q5. 残作業が 240 ストーリーポイント、直近 3 スプリントの完了実績が 36、40、44 ポイントのとき、平均ベロシティで進むと残りは何スプリントか。
- 2
- 5
- 6
- 7
正解: ウ ベロシティ = (36 + 40 + 44) ÷ 3 = 40 ポイント/スプリントなので、240 ÷ 40 = 6 スプリントです。ア は 3 スプリントの合計 120 をベロシティと取り違えた値、イ は最大値 44 で割った 240 ÷ 44 ≒ 5.45 を切り捨てた値、エ は最小値 36 で割った 240 ÷ 36 ≒ 6.67 を切り上げた値です。
Q6. XP(エクストリームプログラミング)の開発のプラクティスの一つであるペアプログラミングの説明として適切なものはどれか。
- 開発者が担当箇所を分け合い、それぞれが別々のプログラムを並行して実装する
- 実装が完了したソースコードを、作成者以外の複数名が後日集まって机上で検証する
- 2 人 1 組で 1 台の端末に向かい、相談とレビューをしながら 1 つのプログラムを作成する
- チーム全員が 1 つの画面を囲み、全員で 1 つの成果物を作成する
正解: ウ ペアプログラミングは 2 人 1 組で実装役と確認役を交代しながら 1 つのプログラムを作る手法で、書きながらレビューが済む点が利点です。ア は分担並行の開発で、レビューが同時に行われません。イ は事後のレビュー(ウォークスルーやインスペクション)です。エ は 3 人以上に広げたモブプログラミングで、人数が異なります。
Q7. インセプションデッキの説明として適切なものはどれか。
- 開発の初期に、プロジェクトの目的や優先順位を関係者で議論し、共通認識を得るための一連の問い
- 相対的な規模を書いたカードを同時に提示し、見積りの合意を作る手法
- 反復の終わりに Keep・Problem・Try の観点で改善点を整理する手法
- 利用者の要求を「誰が・何を・なぜ」の形式で短く記述したもの
正解: ア インセプションデッキは「初期」に「共通認識」を作る道具で、この 2 語が判定の鍵です。イ はプランニングポーカー、ウ は KPT(ふりかえりの整理法)、エ はユーザーストーリーの説明で、いずれも初期の合意形成が目的ではありません。
Q8. カオスエンジニアリングの考え方として適切なものはどれか。
- 開発環境に限定して負荷を掛け、本番には影響を与えない範囲で耐性を測る
- 障害発生時に自動的に前の版へ戻す仕組みを実装すること
- テストケースを乱数で生成し、コードの網羅率を高めること
- 本番環境で意図的に障害を起こし、影響範囲を局所化しながら定常状態が保たれるかを検証すること
正解: エ カオスエンジニアリングは、定常状態の仮説を立てたうえで本番環境に現実的な障害を注入し、影響範囲を絞りながら耐性を確かめる実践です。ア は「本番環境で実験する」という原則に反します。イ はロールバックの実装、ウ はランダムテスト(ファジング等)の説明で、いずれも別の技法です。
Q9. 日本国内でだけ特許権が成立している発明について、特許権者から実施許諾を受ける必要があるのはどれか。
- 国外の工場で製造し、その全量を国外で販売する
- 国内の工場で製造し、その全量を国外へ輸出する
- 国内の研究機関が、試験・研究のためだけにその発明を実施する
- 特許権の存続期間が満了した後に、国内で製造して販売する
正解: イ 特許権は属地主義で国ごとに成立し、実施には物の生産が含まれます。国内で製造した時点で国内での実施に当たるため、販売先が国外でも許諾が必要です。ア は国内での実施行為が無いので日本の特許権は及びません。ウ は試験・研究のための実施として特許権の効力が及ばない場合に当たります。エ は権利が消滅しており誰でも実施できます。
Q10. ソフトウェア開発の委託契約に、著作者人格権を行使しない旨の特約を定める主な目的はどれか。
- 委託先が納品後に著作権を第三者へ譲渡できないようにするため
- 委託元が納品されたプログラムを、委託先の同意を得ずに改変・改良できるようにするため
- 委託元が納品物を無償で第三者へ再頒布できるようにするため
- 職務著作の要件を満たし、著作権を委託先の法人に帰属させるため
正解: イ 著作者人格権のうち同一性保持権があると、委託元が納品物を勝手に改変できません。人格権は譲渡できないため「行使しない」と約束させ、保守・改良を可能にします。ア・ウ は著作権(財産権)の譲渡や利用許諾の話で、人格権の特約とは別の条項です。エ の職務著作は法人と従業者の関係の制度で、委託契約の効果ではありません。
Q11. 分散型バージョン管理システムの特徴として適切なものはどれか。
- 各開発者の手元に全ての変更履歴の複製があり、中央のサーバに接続できなくても履歴を参照できる
- 中央のリポジトリだけが変更履歴を保持し、開発者は作業コピーだけを取得する
- ファイルを編集する前に必ずロックを取得し、同時編集を禁止する
- 変更が登録されるたびにビルドとテストを自動実行し、結果を開発者に通知する
正解: ア 分散型は各開発者がリポジトリの完全な複製を持つため、オフラインでもコミットや履歴調査ができます。イ は集中型(Subversion・CVS など)の説明です。ウ は排他制御の方式の話で分散型の定義ではありません。エ は継続的インテグレーションのツールの説明です。
Q12. IDE(統合開発環境)の説明として適切なものはどれか。
- ソースコードの変更履歴を記録し、版の差分やマージを管理する
- ソースコード中のコメントや宣言から API 仕様書を自動生成する
- テストケースを自動で実行し、結果をレポートとして出力する
- エディタ、コンパイラ、リンカ、デバッガなどを一体化し、同じ操作画面から扱えるようにする
正解: エ IDE は開発に必要なツール群を統合し、編集からデバッグまでを一貫した画面で行えるようにしたものです。ア はバージョン管理システム、イ はドキュメンテーションジェネレーター、ウ はテスト自動化ツールの説明です。
Q13. ソフトウェア構成管理における「ベースライン」の説明として適切なものはどれか。
- 構成品目の変更要求を受け付け、承認の可否を判断する組織
- 正式なレビューで合意され、以後の変更を変更管理の手続を経てのみ許す、構成品目の基準となる版
- ソフトウェアに含まれる部品と依存関係を機械可読な形式で一覧にしたもの
- 1 反復あたりに完了できる作業量の実績値
正解: イ ベースラインは凍結された基準の版で、以降は承認された変更だけが反映されます。ア は変更管理委員会などの組織、ウ は SBOM、エ はベロシティの説明です。
Q14. CMMI における成熟度レベルの並びとして正しいものはどれか。
- 初期 → 管理された → 定義された → 定量的に管理された → 最適化している
- 初期 → 定義された → 管理された → 最適化している → 定量的に管理された
- 管理された → 初期 → 定義された → 最適化している → 定量的に管理された
- 定義された → 初期 → 管理された → 定量的に管理された → 最適化している
正解: ア プロジェクト単位で管理できる(レベル 2)→ 組織の標準プロセスが定義される(レベル 3)→ 数値で管理できる(レベル 4)→ 継続的に改善する(レベル 5)という順に、範囲が個から組織へ、判断が経験から数値へ移ります。イ〜エ はいずれも順序を入れ替えたもので、とくに「定義された」が「管理された」より先に来る並びが誤りの定番です。
まとめ
本章の得点源は、出題の約半分を占めるアジャイルです。役割・イベント・用語の帰属を表で押さえ、グラフは形で見分け、知財は「国内で実施したか」「人格権は行使しない」の 2 点に絞れば、例年 2〜3 問のうち 2 問は堅く取れます。
| 論点 | 覚える結論 | 誤答肢の作られ方 |
|---|---|---|
| スクラムの構成 | 3 役割(PO・スクラムマスター・開発者)/5 イベント/3 成果物 | 役割の責任を 1 つずらす |
| レビュー vs レトロスペクティブ | 成果物を検査 vs プロセスを検査 | 説明文の入替え |
| アジャイル宣言 | 対話・動くソフトウェア・協調・変化への対応に、より価値をおく | 左右の反転 |
| バーンダウン | 残作業量・右下がり。理想線より上なら遅れ | バーンアップ・ガント・S 字 |
| ベロシティ | 残ポイント ÷ 直近平均ベロシティ = 残スプリント数 | 合計値をベロシティと誤認 |
| XP | ペアプロ・TDD・リファクタリング・共同所有・CI・YAGNI | スクラムの語を混ぜる |
| CI/CD | CI はテストまで、デリバリーは人の承認あり、デプロイは全自動 | 3 語の範囲を入れ替える |
| カオスエンジニアリング | 本番環境で実験し、影響範囲を局所化する | 「テスト環境に限る」 |
| プロセス成熟度 | CMMI は 5 段階、JIS X 33020 の能力水準は 0〜5 の 6 段階 | 段階数・規格番号の差替え |
| 特許の実施許諾 | 国内で生産・使用・譲渡・輸出・輸入すれば必要(属地主義) | 販売先の国で判断させる |
| 著作者人格権 | 譲渡できないので「不行使特約」で改変を可能にする | 財産権の帰属と混同 |
| バージョン管理 | 分散型は各自が全履歴を複製。集中型は中央だけ | 集中型・CI ツールの説明 |
| 構成管理 | 構成識別 → ベースライン凍結 → 変更管理(要求・分析・承認・実施・記録) | 承認や記録を省いた手順 |
次の第 15 章では、ここで扱った開発の進め方を「いつ・いくらで・誰が」の観点から統制するプロジェクトマネジメントを学びます。本章のスプリントやベロシティは、第 15 章のスコープ管理・スケジュール管理・EVM と同じ問題を別の道具で解いたものだと捉えると、両章がつながります。