目安時間: 約180分 ・ 読了目安: 20分

この章で学ぶこと

この章は中分類「開発・運用の方法論」(230語)のうち、AI駆動開発・フィジカルAI以外の約167語を扱います(AI駆動開発・フィジカルAIは次章で独立して扱います)。アジャイル・スクラムの基礎で扱った内容を土台に、開発方法論の全体像からDevOps/SREの実践、アーキテクチャパターン、ドメイン駆動設計、UI/UX設計、開発ツール、OS基礎まで、非常に幅広い領域を扱います。

開発方法論の全体像とアジャイル

要件を最初にすべて確定してから順に進めるウォーターフォールモデル、試作品を作りながら固めていくプロトタイピングモデルに対し、短い期間で反復開発するアジャイルと、開発と運用を一体化するDevOpsが現代の主流です。アジャイルの土台となるアジャイルソフトウェア開発宣言は、チームが自律的に動く自己組織化を重視します。代表的な手法には、ユーザーにとっての機能を単位に開発するユーザー機能駆動開発(FDD)、テストを先に書くテスト駆動開発(TDD)があり、プロジェクト立ち上げ時にはチームの目的意識を揃えるインセプションデッキ、要求が良質かを判定するINVEST基準、進捗を可視化するバーンダウンチャート、1スプリントで完了できる作業量を示すベロシティ、振り返り手法のKPT(Keep・Problem・Try)を活用します。

スクラムのスプリントサイクル

大規模開発向けには、SAFe・LeSS(Large-Scale Scrum)・Scrum of Scrumsといったエンタープライズアジャイル、複数手法を状況に応じて組み合わせるDA(Disciplined Agile)があります。エクストリームプログラミング(XP)が掲げるコミュニケーション・シンプル・フィードバック・勇気・尊重という五つの価値のもと、共同のプラクティス・開発のプラクティス・管理者のプラクティス・顧客のプラクティスという4種類のプラクティスが実践されます。スクラムの実行主体であるスクラムチームは、上図のとおりスプリントプランニング→開発→スプリントレビュー→スプリントレトロスペクティブというサイクルを繰り返します。

扱う用語(精選・24語)

  • ウォーターフォールモデル/プロトタイピングモデル/アジャイル/DevOps
  • アジャイルソフトウェア開発宣言/自己組織化
  • ユーザー機能駆動開発(FDD)/テスト駆動開発(TDD)
  • インセプションデッキ/INVEST/バーンダウンチャート/ベロシティ/KPT
  • エンタープライズアジャイル(SAFe・LeSS・Scrum of Scrums)/DA(Disciplined Agile)
  • 五つの価値(コミュニケーション・シンプル・フィードバック・勇気・尊重)
  • 共同のプラクティス/開発のプラクティス/管理者のプラクティス/顧客のプラクティス
  • スクラムチーム/スプリントプランニング/スプリントレビュー/スプリントレトロスペクティブ

DevOps/SREの実践

開発と運用を分断せず一体化するDevOpsの実務では、ビルド・テスト・デプロイを自動化するパイプライン自動化を通じて信頼性向上を図り、問題を早い工程で発見するシフトレフト、障害後に非難なく原因を振り返るポストモーテムを実践します。DevOpsの成熟度を文化・自動化・リーン・測定・共有の5要素で捉えるCALMSフレームワークも指針になります。

CI/CD/継続的デプロイのパイプライン

信頼性を工学的に扱うSRE(Site Reliability Engineering)では、許容できる障害の予算であるエラーバジェット、障害対応手順書のランブック(Runbook)、当番制で障害対応にあたるオンコールという仕組みで運用します。上図の継続的インテグレーション(CI)・継続的デリバリー(CD)・継続的デプロイを土台に、意図的に障害を起こして耐性を検証するカオスエンジニアリング、DevOpsの成熟度を測るDORAメトリクス(デプロイの頻度・変更のリードタイム・変更障害率・平均修復時間(MTTR)というFour Keys)で継続的に改善します。システムの内部状態を外部から把握できるオブザーバビリティ(可観測性)を実現する標準規格OpenTelemetry、インフラの状態をGitで管理するGitOps、メインブランチに頻繁に統合するトランクベース開発、セキュリティをDevOpsに組み込むDevSecOpsも現代的な実践です。

扱う用語(精選・20語)

  • パイプライン自動化/信頼性向上/シフトレフト/ポストモーテム/CALMSフレームワーク
  • SRE(Site Reliability Engineering)/エラーバジェット/ランブック(Runbook)/オンコール
  • 継続的インテグレーション(CI)/継続的デリバリー(CD)/継続的デプロイ
  • カオスエンジニアリング/DORAメトリクス/Four Keys(デプロイの頻度・変更のリードタイム・変更障害率・MTTR)
  • オブザーバビリティ(可観測性)/OpenTelemetry/GitOps/トランクベース開発/DevSecOps

分析・設計のモデリング手法とアーキテクチャパターン

要件を分析する段階では、利用者の視点で機能を記述するユースケース、画面イメージを示すモックアップ、動作する試作品のプロトタイプ(機能を深く検証する垂直型プロトタイプ、全体の見た目を検証する水平型プロトタイプ)を作成します。データの流れを図示するDFD(コンテキストダイアグラム・ミニスペック・構造化分析法)、システム全体をモデル化するSysML、状態の変化を図示する状態遷移図も分析・設計の道具です。

設計段階では、責務ごとに層を分けるレイヤードアーキテクチャ、ビジネスロジックを外部技術から独立させるクリーンアーキテクチャ、内側と外側を分離するヘキサゴナルアーキテクチャ、画面・制御・データを分離するMVC、中核機能を最小化するマイクロカーネルアーキテクチャ、負荷に応じて動的に拡張するスペースベースアーキテクチャ、更新(コマンド)と参照(クエリ)の処理経路を分離するCQRSという代表的なアーキテクチャパターンがあります。良い設計の指針としてはソフトウェア設計原則(SOLID)、同じ操作が異なる型で異なる動作をする多相性(ポリモーフィズム)、オブジェクト間のつながりを表す関連とその特殊形である派生関連・派生属性、複数の要素をまとめるコレクションを押さえます。

扱う用語(精選・21語)

  • ユースケース/モックアップ/プロトタイプ(垂直型プロトタイプ・水平型プロトタイプ)
  • DFD(コンテキストダイアグラム・ミニスペック・構造化分析法)/SysML/状態遷移図
  • レイヤードアーキテクチャ/クリーンアーキテクチャ/ヘキサゴナルアーキテクチャ/MVC/マイクロカーネルアーキテクチャ/スペースベースアーキテクチャ/CQRS
  • ソフトウェア設計原則(SOLID)/多相性(ポリモーフィズム)/関連/派生関連/派生属性/コレクション

UML図とドメイン駆動設計

設計を図で表現するUML(統一モデリング言語)には、クラスの構造を表すクラス図、実行時のオブジェクトの状態を表すオブジェクト図、部品の構成を表すコンポーネント図、処理の流れを表すアクティビティ図、時系列のやり取りを表すシーケンス図、利用者から見た機能を表すユースケース図があり、業務上の出来事の連鎖を分析するイベントフロー分析、自律的に判断・行動する主体として設計するエージェント指向、共通機能をまとめたフレームワークも設計の道具です。

業務の複雑さそのものをモデルの中心に据える設計手法がドメイン駆動設計(DDD)です。対象業務の知識領域であるドメインを、業務ルールを表現するドメインモデルとドメインロジックに落とし込み、複数チーム間の関係を整理するコンテキストマップ、開発者と業務担当者が共通の言葉で会話するユビキタス言語を使います。モデル上の要素は、識別子を持つエンティティ、値そのもので識別する値オブジェクト、状態を持たない処理を表すサービスに分類されます。

扱う用語(精選・18語)

  • クラス図/オブジェクト図/コンポーネント図/アクティビティ図/シーケンス図/ユースケース図
  • イベントフロー分析/エージェント指向/フレームワーク
  • ドメイン駆動設計(DDD)/ドメイン/ドメインモデル/ドメインロジック/コンテキストマップ/ユビキタス言語
  • エンティティ/値オブジェクト/サービス

UI/UXデザインの原則

利用者とシステムの相互作用を設計するインタラクションデザインの対象となるインタラクティブシステムは、フィードバックの明確さなどのインタラクションの原則に沿って設計します。人の認知特性としては、重要な情報を拾い出す特徴抽出、慣れによって操作が上達する学習機能、関心のある情報だけを無意識に選び取る選択的知覚があり、これらを踏まえたユーザー操作の分析を行います。身体の動かしやすさを考慮する身体的適合性、操作方法を示唆する視覚的な手がかりであるシグニファイア、モノの形状が使い方を暗示するアフォーダンスも重要な概念です。

画面設計の考え方としては、操作対象(オブジェクト)を起点に設計するオブジェクト指向UI(OOUI)と、やりたいこと(タスク)を起点に設計するタスク指向UIを対比して理解し、画面構成・情報の検索・情報の関係性を設計します。利用者への説明の流れを設計する情報提示ストーリー、利用シーンを描くストーリーボード、デバイスごとの制約である装置制約事項、画面上に重ねて表示するフォームオーバーレイ、出力特性・入力特性、人間工学の国際規格JIS Z 8303も押さえます。

扱う用語(精選・22語)

  • インタラクションデザイン/インタラクティブシステム/インタラクションの原則
  • 特徴抽出/学習機能/選択的知覚/ユーザー操作の分析
  • 身体的適合性/シグニファイア/アフォーダンス
  • オブジェクト指向UI(OOUI)/タスク指向UI/画面構成/情報の検索/情報の関係性
  • 情報提示ストーリー/ストーリーボード/装置制約事項/フォームオーバーレイ/出力特性/入力特性/JIS Z 8303

開発ツール・フレームワークと構成管理

チーム開発を支える基盤としては、変更履歴を管理するソースコード管理(SCM)、本番前に検証するステージング環境、設計情報を管理する設計データ管理、成果物全体を管理する構成管理とその対象であるソフトウェア構成品目、ソフトウェアの部品構成表であるSBOMがあります。開発・運用を支援するOSS(Eclipse・Git・SonarQube・Redmine など)を活用し、開発フレームワーク活用のメリット(開発効率の向上・コード品質の向上・MVCモデル など)と開発フレームワークの選定(開発要件・学習コスト など)を検討します。

領域別にはフロントエンドフレームワーク・バックエンドフレームワーク・データ・機械学習用フレームワークがあり、開発を支援する設計支援ツール、実行を止めて調べる静的デバッギングツール、実行中に調べる動的デバッギングツール、実行結果を分析する動的解析ツール、構文解析などを行う言語処理ツールを使い分けます。再利用可能なオープンソースライブラリの活用ではオープンソースライセンシングへの理解が必須です。UI設計の基礎理論として、画面の各領域を表すフレームと、近い要素同士を関連づけて認識する空間近接原理、人間工学とインタラクションの国際規格ISO 9241も押さえます。

扱う用語(精選・22語)

  • ソースコード管理(SCM)/ステージング環境/設計データ管理/構成管理/ソフトウェア構成品目/SBOM
  • システム開発・運用支援のOSS(Eclipse・Git・SonarQube・Redmine)
  • 開発フレームワーク活用のメリット/開発フレームワークの選定
  • フロントエンドフレームワーク/バックエンドフレームワーク/データ・機械学習用フレームワーク
  • 設計支援ツール/静的デバッギングツール/動的デバッギングツール/動的解析ツール/言語処理ツール
  • オープンソースライブラリ/オープンソースライセンシング
  • フレーム/空間近接原理/ISO 9241

Web/モバイルアプリケーション設計

Webサイト全体の構成を示すサイトマップを土台に、スマートフォン向けの設計を優先するモバイルファースト、画面サイズに応じて表示を最適化するレスポンシブWebデザイン、文言そのものを設計するUXライティング、スクロールに連動して物語のように魅せるスクローリーテリング、デザイン変更が意図せず崩れていないか検証するビジュアルリグレッション、迷わず目的にたどり着けるナビゲーションデザインを設計します。

実装技術としては、ページ遷移なしで動作するSPA(Single Page Application)、ブラウザで高速実行できるWebAssembly、SOAP・SVGを含むXML系技術があります。アプリケーションの実装形態には、端末専用に開発するネイティブアプリケーションソフトウェア、Webとネイティブを組み合わせるハイブリッドアプリケーションソフトウェア、Webでありながらアプリのように動作するプログレッシブウェブアプリ(PWA)があり、ディスプレイサイズなど端末仕様の多様性への対応、圏外時・着信時の動作を考慮するアプリケーションソフトウェア動作中の圏外時・着信時の対応、ストア公開前のアプリケーションソフトウェア審査とアプリケーションソフトウェア配布のプロセスも実務知識として押さえます。

扱う用語(精選・17語)

  • サイトマップ/モバイルファースト/レスポンシブWebデザイン/UXライティング/スクローリーテリング/ビジュアルリグレッション/ナビゲーションデザイン
  • SPA(Single Page Application)/WebAssembly/XML(SOAP・SVG)
  • ネイティブアプリケーションソフトウェア/ハイブリッドアプリケーションソフトウェア/プログレッシブウェブアプリ(PWA)
  • 端末仕様の多様性への対応/アプリケーションソフトウェア動作中の圏外時・着信時の対応/アプリケーションソフトウェア審査/アプリケーションソフトウェア配布

OS基礎とジョブ管理

OSの中核を最小化し安定性を高めるマイクロカーネルという設計思想のもと、特権的な処理を行うカーネルモード(スーパーバイザーモード)とその権限である特権モード、一般のアプリケーションが動くユーザーモードを区別し、プログラムを結合して実行可能にするリンケージエディタが動作します。OSの基本機能は、実行順序を管理するタスク管理、メモリ割り当てを管理する記憶管理、システム全体を管理する運用管理、異常を検知・対処する障害管理、周辺機器とのやり取りを管理する入出力管理、アカウントを管理するユーザー管理に整理できます。

起動処理では、ネットワーク経由で起動するネットワークブート、初期化プログラムを読み込むフラッシュブートローダがあり、実行順序を管理するジョブスケジューラーとその中枢であるマスタスケジューラー、システム全体を統括するシステム管理のもと、裏側で実行されるバックグラウンドジョブを、定時実行の仕組みであるcronなどで管理します。処理は実行中・実行可能・待機というタスクと状態遷移をたどり、強制的に切り替えるプリエンプティブ方式と、自発的な切り替えに任せるノンプリエンプティブ方式、イベント発生時に処理を起動するイベントドリブン方式、待ち行列理論で応答時間を評価するフィードバック待ち行列方式という制御方式があります。

扱う用語(精選・23語)

  • マイクロカーネル/カーネルモード(スーパーバイザーモード)/特権モード/ユーザーモード/リンケージエディタ
  • タスク管理/記憶管理/運用管理/障害管理/入出力管理/ユーザー管理
  • ネットワークブート/フラッシュブートローダ/ジョブスケジューラー/マスタスケジューラー/システム管理/バックグラウンドジョブ/cron
  • タスクと状態遷移/プリエンプティブ方式/ノンプリエンプティブ方式/イベントドリブン方式/フィードバック待ち行列方式

AIで学ぶ

ここまでの用語は、ChatGPTやClaudeなどの生成AIに以下のプロンプトを投げかけると、比較表つきでさらに深く掘り下げて学習できます。コピーして使ってみましょう。

あなたはプロフェッショナルデジタルスキル(システム)試験の講師です。「開発方法論とDevOps実践」の範囲について、以下の用語を初学者向けに**関連づけながら**説明してください(単体の丸暗記より、用語同士のつながりを理解したほうが記憶に定着しやすく、試験本番で紛らわしい選択肢を見分ける力もつくためです)。用語同士の違いが分かる**比較表**を最後に付けてください。

【開発方法論とアジャイル】ウォーターフォールモデル、アジャイル、DevOps、テスト駆動開発(TDD)、スクラムチーム、スプリントプランニング、スプリントレトロスペクティブ、エンタープライズアジャイル
【DevOps/SRE】SRE、エラーバジェット、継続的インテグレーション(CI)、継続的デリバリー(CD)、継続的デプロイ、カオスエンジニアリング、DORAメトリクス、GitOps
【アーキテクチャパターン】レイヤードアーキテクチャ、クリーンアーキテクチャ、ヘキサゴナルアーキテクチャ、MVC、CQRS、SOLID
【UML図とDDD】クラス図、シーケンス図、ユースケース図、ドメイン駆動設計(DDD)、エンティティ、値オブジェクト
【UI/UXデザイン】オブジェクト指向UI(OOUI)、タスク指向UI、シグニファイア、アフォーダンス、レスポンシブWebデザイン
【アプリケーション実装】SPA、WebAssembly、ネイティブアプリケーションソフトウェア、ハイブリッドアプリケーションソフトウェア、PWA
【OS基礎】カーネルモード、ユーザーモード、タスク管理、プリエンプティブ方式、ノンプリエンプティブ方式、イベントドリブン方式

AIに用語リストだけを渡すと、辞書をそのまま読み上げるような無機質な説明が返ってくることがあります。このプロンプトが役割(試験の講師)・関連づけの指示・出力形式(比較表)の3つを指定しているのはそれを避けるためです。この章は範囲が非常に広いため、興味のあるカテゴリ(アジャイル/アーキテクチャ/UI設計 など)だけを抜き出してAIに投げるのがおすすめです。

章末チェック

最後に、この章で学んだ知識をアウトプットして定着させましょう。全問に答えたら「答え合わせ」を押してください。

問1. スクラムのスプリントサイクルにおいて、スプリントプランニングの直後に行われる活動はどれか。

問2. 許容できる障害の割合をあらかじめ数値で定め、その範囲内であれば新機能のリリースを優先するSREの考え方はどれか。

問3. ビジネスロジックを外部技術(データベースやフレームワーク)から独立させ、依存の方向を内側に向ける設計思想を持つアーキテクチャパターンはどれか。

問4. 操作対象(オブジェクト)を起点に画面を設計する考え方はどれか。

問5. OSにおいて、特権的な処理を実行できるモードはどれか。

この章のまとめ

この章では、開発方法論の全体像からDevOps/SREの実践、アーキテクチャパターン、ドメイン駆動設計、UI/UXデザインの原則、開発ツール・フレームワーク、Web/モバイルアプリケーション設計、OS基礎までを学びました。範囲は広いですが、次章ではその中でも最も新しく、シラバスハックの軸である「生成AI×資格試験」に直結する領域——AI駆動開発とフィジカルAI——を集中的に学びます。

次章では、バイブコーディング・エージェンティックコーディング・仕様駆動開発といったAI駆動開発と、世界モデル・強化学習といったフィジカルAIを学びます。→ 第7章 AI駆動開発とフィジカルAI