IPA DevOps・開発環境とツール — 頻出論点と過去問

頻出論点

1. この分野は何か

書いたプログラムを検査し、本番に出し、動かし続けるまでの流れを、人手に頼らずつなげる仕組みと、その途中で使う環境や道具を扱います。名前の似た手法や道具が多く、それぞれが自動にする範囲と受け持つ作業の境目で取り違えが起こります。

2. 実際の出題のされ方

DevOpsに当たる記述や用語を、ほかの開発モデルやプログラミングの手法の説明と並べた中から選ぶ問題が出ています。この論点は、ITパスポートで繰り返し出題されています。

インフラ構成のコード化やデプロイ手法、開発手法の具体的な仕組みは、応用情報技術者の午前や高度試験の午前Iで問われます。IaCの説明を選ぶ問題や、サーバプロビジョニングツールの目的を選ぶ問題が出ています。また、システムをバージョンアップする際に稼働環境を二つ用意して切り替える手法の名称や、分散システムの回復力を高める実験手法における5つの原則の組み合わせ、GUI操作をベースとしつつ必要に応じて一部のソースコードを記述する開発手法の名称を問う問題も見られます。さらに、ドキュメンテーションジェネレーターの説明を選ぶ問題も出ています。

開発の現場で使う環境と道具の役割を問う問題が、ネットワークスペシャリストとプロジェクトマネージャの午前IIで出ています。ステージング環境の説明を選ぶ問題と、バグトラッキングシステムの説明を選ぶ問題です。

道具の名前を選ぶ問題もあります。応用情報技術者の午前では、手元に履歴ごと写しを持つ型のバージョン管理ツールを、情報処理安全確保支援士の午前IIでは、アジャイル開発でソースコードの欠陥や脆弱性につながる書き方を自動で見つけるOSSを選ぶ問題が出ています。

3. 学習のポイント

開発と運用の連携およびインフラ自動化では、対象と手段の対応を押さえます。

  • DevOps:作る側と動かす側が一つのチームのように目標を共有し、ビルドから本番への反映までを道具で自動にして、変更を小さく速く届け続ける取り組みです。
  • IaC(Infrastructure as Code)とサーバプロビジョニングツール:サーバやネットワークの組み方と設定をコードの形で書いておき、ツールがそのとおりに環境を作り上げる仕組みです。手作業による設定ミスを防ぎ、同じ環境を何度でも正確に再現できます。
  • ローコード開発とノーコード開発:画面の操作で部品を組み合わせて作る点は同じで、必要なところだけコードを書けるのがローコード、コードを一切書かないのがノーコードです。

リリースと環境の管理では、本番稼働への影響を抑える工夫と各環境の役割を整理します。

  • 開発環境・ステージング環境・本番環境:開発環境は開発者が作っては試す場所、ステージング環境は本番とできるだけ同じ組み方にした確認用の場所で、本番に出す直前の確かめに使います。本番環境は利用者が実際に使う場所です。
  • ブルーグリーンデプロイメントとローリングアップデート:今の版が動く環境とは別に新しい版の環境をもう1組用意しておき、準備ができたら利用者の向かう先を一度に切り替えるのがブルーグリーンデプロイメントです。切り替えで止まる時間が短く、不具合があれば元の環境へすぐ戻せます。サーバを1台ずつ順に新しい版へ入れ替えていくのがローリングアップデートです。
  • カオスエンジニアリング:わざと障害を起こす実験で、分散システムが想定外の出来事に耐えられるかを確かめる手法です。実際の利用に近い条件で確かめるために本番の環境で行い、その代わりに利用者に影響が及ぶ範囲を小さく抑えます。

開発・品質管理を支えるツール群は、それぞれのツールが何を扱うかで切り分けます。

  • バージョン管理システム:ソースコードの変更の履歴を残して管理します。Subversionのような集中型は、履歴を1か所のサーバにまとめて持つので、履歴を見たり変更を記録したりするにはサーバへの接続が要ります。Gitのような分散型は、開発者それぞれの手元に履歴ごと丸ごと写しを持つので、サーバにつながらない間も履歴を調べたり変更を記録したりできます。
  • コード解析・文書生成・不具合管理のツール:SonarQubeは、プログラムを動かさずにソースコードを調べる静的解析のOSSで、ビルドやテストを自動で回すCI/CDのツールとは役割が違います。また、決められた書式で書かれたソースコード内のコメントから仕様書などを自動生成するツールがドキュメンテーションジェネレーター、見つかった不具合を一件ずつ登録し、直し終わるまでの経緯を追いかける道具がバグトラッキングシステムです。

4. 間違えやすいところ

用語の定義を問う問題では、名称が似ている別の技術や、開発プロセス内の別の工程の自動化とすり替えた誤答肢に注意が必要です。

IaCに関する記述を選ぶ問題では、アプリケーションを組み立てて試験する手順をコードに定義する記述が誤答肢にありました。その手順をコードにして回すのは、継続的インテグレーション(CI)の側の仕組みです。

サーバプロビジョニングツールの目的を問う問題では、死活監視といった運用監視の目的が誤答肢にありました。

ステージング環境の説明を選ぶ問題では、一般の利用者にベータ版を公開して不具合を報告してもらう環境が誤答肢にありました。

バグトラッキングシステムの説明を選ぶ問題では、プログラムを止めながら変数の値を確かめるデバッガの働きが誤答肢にありました。デバッガは不具合を見つけるための道具です。

DevOps・開発環境とツールの理解度チェック

DevOps・開発環境とツールの過去問一覧

開発プロセスのほかの論点

アジャイル開発(スクラム・XP・リーン)50問 開発モデル・ライフサイクルプロセス30問 規模・工数見積り11問