<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ナギ＠氷河期SEの知見録</title>
	<atom:link href="https://sys-univ.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://sys-univ.com</link>
	<description>クラウド移行・基盤設計・運用設計で見落としやすい実務の落とし穴を、若手SEにも分かる形で整理します。</description>
	<lastBuildDate>Tue, 04 Aug 2026 02:36:07 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://sys-univ.com/feed/"/>
	<item>
		<title>【システム開発入門】データベースエンジニア（DBA）の仕事｜止めない、失わない、遅くさせない</title>
		<link>https://sys-univ.com/dev/database-engineer-dba/</link>
					<comments>https://sys-univ.com/dev/database-engineer-dba/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 03 Aug 2026 01:58:15 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2967</guid>

					<description><![CDATA[システム開発には、アプリケーション、AP基盤、システム基盤・クラウド、ネットワーク、データベースなど、異なる専門性を持つエンジニアが関わります。 本記事では、その中からデータベースエンジニア（DBA）を取り上げます。 S [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="ed38853a-b8d4-4974-856e-26f9d8d542eb" data-pm-slice="0 0 []">システム開発には、アプリケーション、AP基盤、システム基盤・クラウド、ネットワーク、データベースなど、異なる専門性を持つエンジニアが関わります。</p>
<p id="34bc1610-b1b3-455f-bee8-1ac8f8628093">本記事では、その中からデータベースエンジニア（DBA）を取り上げます。</p>
<p id="5c83bd3a-1ce7-49be-844c-5b31ee08bfa7">SEの職種全体と、それぞれの役割の違いについては、次の記事で整理しています。</p>
<a href="https://sys-univ.com/dev/se-roles/" title="【システム開発入門】システムエンジニアの種類と仕事内容｜SIerのSEはどこまで担当するのか" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/07/1ba54eef98546b44e666f94f6720bcea.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【システム開発入門】システムエンジニアの種類と仕事内容｜SIerのSEはどこまで担当するのか</div><div class="blogcard-snippet internal-blogcard-snippet">システムエンジニアの種類と仕事内容を、PM、アプリ、AP基盤、インフラ、ネットワーク、DBに分けて解説。大手SIerで20年以上働いた筆者の経験から、SEのキャリアの広がりや求められるスキルも紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.27</div></div></div></div></a>
<h2 id="9ae77cac-f7f2-4ebd-8be5-7da44b01b289"><span id="toc1">データベースエンジニアとは</span></h2>
<p id="71e28162-4bc9-49d4-95fe-86a5494c4e75">データベースエンジニアは、システムが扱うデータを安全に保存し、必要なときに正しく、十分な速度で利用できるデータベースを設計、構築、運用する職種です。</p>
<p id="ed434adb-7a9e-4193-a838-b789243df892">「データベースエンジニア」という言葉から、テーブル設計やデータモデリングを想像する人もいると思います。私が関わってきたSIerのプロジェクトでは、データベースの構築、性能管理、権限管理、監視、バックアップ、障害対応を担うDBA（データベース管理者）を指すことが一般的でした。</p>
<p id="820f2439-da08-432b-8676-ca0b59d5f0e2">ここからは、長く担当してきたOracle DBAの実務を軸に、物理設計、構築、性能管理、セキュリティと監査、運用、復旧を見ていきます。製品ごとにアーキテクチャや実装方法は異なりますが、DBAに求められる基本的な役割と考え方には共通する部分があります。</p>
<p id="870652b6-e8c9-4b22-b9bc-72c7d347af9e">DBAの中心的な役割は、論理的に整理されたデータモデルを、安定して稼働できる物理構成へ落とし込むことです。データベース製品をインストールして初期設定するだけではありません。アプリケーションが扱うデータ量、処理量、同時実行数、更新頻度、障害時の復旧要件を踏まえ、業務特性に合った物理構成と運用方式を設計します。</p>
<p id="b64e174f-91f9-4da4-b8ac-da8d9a17c307">ここでいうデータモデルは、顧客、契約、申請、承認など、業務で扱う情報を整理し、どのような単位で管理するのかを定めたものです。この構造を設計する作業をデータモデリングと呼びます。業務要件やアプリケーションの処理と密接に関わるため、概念モデルや論理モデルの作成は、アプリケーション側が中心になることが多い領域です。</p>
<p id="410af263-8506-492c-af70-edfbc0f9e31e">DBAも、完成したデータモデルを受け取るだけではありません。正規化の妥当性、テーブルや列の構成、主キーや外部キー、インデックス、データ量、検索や更新の特性を確認し、性能や運用の観点からレビューや助言を行います。</p>
<p id="ccec9bed-a517-4fba-ad69-2d3099d2eea0">テーブル設計は、稼働後に変更すると、SQL、画面、バッチ、外部システムとの連携、データ移行、テストまで広い範囲へ影響します。将来のデータ増加や機能追加も見据え、物理設計へ進む前の段階からDBAが関わることが重要です。</p>
<p id="46509602-ef97-4dee-b328-d8daae788bf0">主な担当領域は、大きく次のように分けられます。</p>
<p id="826b1d7f-39d5-422d-ab6f-a4dcd5187587"><strong>構築と物理設計</strong></p>
<ul id="da7daca7-ae24-4723-8842-4ce385bcb2f5">
<li>
<p id="1c7d0b77-6469-42bc-86c9-d3371734b25f">データベース製品と構成の選定</p>
</li>
<li>
<p id="add187d7-1cb1-4302-902b-360b65451c38">インストールと初期設定</p>
</li>
<li>
<p id="a5787a25-5de1-4650-bd48-1bf23338e9a3">表領域、データファイル、ログ領域の設計</p>
</li>
<li>
<p id="7626998f-97ae-4b72-9182-c7f51f672e9f">各種初期化パラメータの設計</p>
</li>
</ul>
<p id="607b0281-22bc-44a8-92b2-2eb26ef11ce8"><strong>性能と容量管理</strong></p>
<ul id="dbc7bf46-f0fb-4603-ae1d-640ac21eed1c">
<li>
<p id="bbcc9394-8fe6-4a6e-82d7-d9f2c3fe36ba">SQLと実行計画の分析</p>
</li>
<li>
<p id="4046e458-f628-431b-95e1-4a3065580f3c">インデックスや統計情報の管理</p>
</li>
<li>
<p id="5eae9ecf-b058-4fe0-9e86-6a518ce63b15">性能チューニング</p>
</li>
<li>
<p id="d6c896bb-1f04-4e82-ba0e-3c0823a40e52">データ容量と増加量の見積もり</p>
</li>
</ul>
<p id="9119926e-e27a-4974-ae58-548c46988f44"><strong>セキュリティと運用</strong></p>
<ul id="de552652-4d6c-4dc6-ba3f-c908d8762360">
<li>
<p id="ffae8a7c-a129-4a79-a336-5f69a5f6b220">ユーザー、権限、ロールの設計</p>
</li>
<li>
<p id="eeb76818-7160-4934-8c69-af380b724dc2">監査要件への対応</p>
</li>
<li>
<p id="8e3f47c9-8c60-49d9-9361-8f7b404fe6ab">監視とログ管理</p>
</li>
</ul>
<p id="b15f5598-3c25-4c5e-bf1e-b593e3ec77ba"><strong>可用性とデータ保護</strong></p>
<ul id="bc5d3784-3428-4e22-885d-315e53da75c7">
<li>
<p id="bbe45ff2-d93d-451d-95dd-7d6f7edb3e0e">冗長化と障害時の切り替え</p>
</li>
<li>
<p id="c5c8f3d1-4f24-420e-9ee6-87e486ba4b3f">バックアップとリカバリの設計</p>
</li>
</ul>
<p id="cbbd7e14-1723-430d-8318-d8a702e37be1"><strong>移行と製品管理</strong></p>
<ul id="70c91fcc-8a68-4a9a-b61d-9a2c0e7d9a1e">
<li>
<p id="b1871071-8f05-43d5-ac6c-48660ca03fb9">システム移行（データ・環境・運用）</p>
</li>
<li>
<p id="aaa85d81-7c79-4379-bbf1-207db4493436">バージョンアップや製品更改</p>
</li>
<li>
<p id="6150f8ed-7b61-4fe1-a30b-3589c209d24b">ライセンスと保守契約の管理</p>
</li>
</ul>
<p id="dd1e74be-65a8-4477-9f26-2dec06fe384b">製品ごとに仕組みや用語は異なりますが、アプリケーションの特性を踏まえて構成を決め、稼働後も性能、セキュリティ、可用性、復旧を管理するという役割は共通しています。</p>
<h2 id="16de4f87-aac1-4d3f-9613-79a3f009cf77"><span id="toc2">アプリケーションの特性から物理構成を設計する</span></h2>
<p id="4aa5636c-2739-4165-8e01-77b26d9b730c">データベースの構築は、アプリケーションの処理内容を理解しなければ始められません。</p>
<p id="6b952cb5-f2c1-4f4e-91d7-6e8d60b8456a">どの程度のデータを登録し、どの時間帯に更新が集中するのか。長時間の検索、大量更新、夜間バッチなどがあるのか。アプリケーションの処理特性によって、必要なデータベース構成は変わります。</p>
<p id="28fb3e74-3349-4fd2-9ba6-151201182574">Oracleでは、REDOログのグループ数やサイズ、UNDO表領域の容量と保持期間、各表領域の初期容量や自動拡張の可否などを決めます。これらは、製品の標準値をそのまま採用すればよいものではありません。</p>
<p id="02cb895e-1c47-4baa-8ebe-88eb41aaadfc">更新量に対してREDOログが小さすぎれば、ログスイッチが頻発し、チェックポイント処理の負荷も高まります。次に使用するロググループのチェックポイントやアーカイブが完了していなければ、更新処理に待機が発生することもあります。</p>
<p id="f5a566cb-2fc1-46d6-9c00-f92a386c4bc8">長時間の検索や大量更新に対してUNDO領域の容量や保持期間が不足すると、読み取り一貫性に必要な過去のデータを保持できません。ORA-01555（スナップショットが古すぎます）などによって、検索処理が失敗することもあります。</p>
<p id="7b5a9009-48a9-4696-ab0b-919bb95a7f51">表領域の容量や拡張方法が不適切であれば、データの増加によって業務処理が停止する可能性があります。</p>
<p id="2bf4c79a-a9fb-48d7-8a90-f044e680b73d">容量の見積もりは、初期構築時だけの作業ではありません。どの表が月次や年次でどれだけ増えるのかをアプリケーションチームから引き出し、拡張の余地とストレージの追加時期まで計画に落とします。</p>
<h2 id="974462ee-ab0a-4323-a37d-d7290017b676"><span id="toc3">DBAが押さえるべきシステム移行の三要素</span></h2>
<p id="57fa808c-f45d-4a51-bf58-b8c22e88e33e">システム移行というと、旧システムのデータを新システムへ移し替える作業を想像しがちです。実際の移行は、<strong>データ移行、環境移行、運用移行</strong>の三つで構成されます。DBAはデータ移行を中心に、環境移行と運用移行にも関わります。</p>
<p id="abc0d4a8-b2ce-4912-b03c-36cbe7626113">データ移行では、移行対象、停止時間、移行方式、データ変換、移行後の確認方法を設計し、本番相当のデータ量でリハーサルを行います。移行後の統計情報が適切でなければ、データを正しく移せても、業務開始後に性能問題が発生することがあります。Oracle 19cへのバージョンアップでは、統計情報の更新を契機に実行計画が変化した事例もあり、移行後は主要なSQLの実行計画と性能まで確認する必要があります。</p>
<a href="https://sys-univ.com/dev/oracle-19c-partition-statistics-execution-plan/" title="Oracle 19c更改後に実行計画が変わる――パーティション削除時の統計情報更新と影響調査漏れ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/fa1d5bffc405596be4e476a9d5ce1668-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/fa1d5bffc405596be4e476a9d5ce1668-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/fa1d5bffc405596be4e476a9d5ce1668-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/fa1d5bffc405596be4e476a9d5ce1668-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/fa1d5bffc405596be4e476a9d5ce1668-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Oracle 19c更改後に実行計画が変わる――パーティション削除時の統計情報更新と影響調査漏れ</div><div class="blogcard-snippet internal-blogcard-snippet">Oracle Database 19cへの更改後、DROP PARTITIONを契機に表統計の一部が更新され、実行計画とSQL性能が変化した事例を解説。AWRやPLAN_HASH_VALUEによる原因調査、統計情報の再収集、SQL Plan Baseline、更改時の影響調査と試験の観点を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.22</div></div></div></div></a>
<p id="bf6f2cf1-e6d0-4a02-8889-b9ca7a334771">環境移行では、データベースを構築するだけでなく、tnsnames.oraや接続文字列、DNS名などを新環境へ切り替えます。運用移行では、監視、バックアップ、ログ収集、ジョブ、障害対応などを新環境でどのように実現するのかを決めます。バージョンや提供形態が変われば、従来の運用ツールやスクリプトがそのまま動くとは限りません。</p>
<p id="9a609652-f523-4178-ba64-7e3ae45134f5">データを移し替えただけでは、システム移行は完了しません。移行の全体像と、どこで失敗が起きやすいのかは、別の記事で整理します。</p>
<h2 id="7509f8e3-02ad-43ca-85a8-6bf8f683ac5e"><span id="toc4">マネージドサービスでも設計は残る</span></h2>
<p id="f29dfcba-3473-49ad-bef4-05578b16c1d9">マネージドサービスを利用する場合も、この考え方は変わりません。</p>
<p id="6be8afe3-359b-4bd2-b20d-fe74371af5a7">RDSではパラメータグループを通じて設定を変更し、変更できる範囲は製品そのものより狭くなります。</p>
<p id="1e102f07-f603-4bfc-b595-1281c3542096">標準値のまま構築してよいという意味ではありません。決められる範囲が限られた中で、業務特性に合う値を選ぶ作業が残ります。</p>
<p id="3753e4ec-938e-4cd5-9cb1-d749f12d39a8">クラウドサービスが引き受けるのは、データベース運用の一部です。どのような性能が必要なのか、障害時にどこまで業務を継続するのか、どの時点までデータを戻すのかといった判断まで、クラウド側が決めてくれるわけではありません。</p>
<p id="2b0368e5-e8a8-4fb1-858b-a6e59048d24e">RDS for Oracleへ移行すると、SYSDBA権限やOSへのアクセス、ストレージ管理、監査ログの扱いなど、オンプレミスで前提としていた運用をそのまま持ち込めない場面があります。具体的な設計ギャップと代替方法は、次の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/aws/rdsforora/" title="RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for Oracleではオンプレ運用の前提が通用しない。Storage-Full、アーカイブログ、SSH不可など、開発中に見えた9つの設計ギャップと代替アプローチを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.12</div></div></div></div></a>
<h2 id="6124be39-b3c2-4d18-8492-7930764c60ca"><span id="toc5">データベースは構築後も変化し続ける</span></h2>
<p id="b12bd7b9-1e1d-4f1d-a12c-7fda9a8aa2ce">システム基盤との大きな違いの一つは、構築後も継続的な調整が必要になることです。</p>
<p id="30d30f27-8b00-4156-8e7c-dfc6a8933b24">サーバーやOSは、構築時に適切な構成を決めれば、稼働後に設定を大きく変えずに運用できるケースもあります。</p>
<p id="069afbc5-009a-49c9-b039-1128c40b29c1">データベースでは、データ量や分布、利用者数、業務処理の内容が日々変化します。昨日まで高速だったSQLが、データの増加や統計情報、実行計画の変化によって突然遅くなることもあります。</p>
<p id="73b4b517-6ce2-4bf8-9cf0-71c4f355b46f">一つのSQLを改善して終わりとは限りません。業務機能の追加やデータ量の増加によって別の処理が遅くなり、新たな実行計画の変化が発生します。</p>
<p id="42143f78-24df-4ee5-8a1f-c6cf9d8b966e">稼働後も監視、分析、改善を繰り返すのが、データベース運用の実態です。</p>
<h2 id="3a34b252-6c65-445e-925b-fc371ffe3779"><span id="toc6">性能問題はデータベースだけでは解決できない</span></h2>
<p id="f46719f3-b906-40df-9864-06da22a0d7db">性能問題が発生した場合、CPUやメモリの使用率を見るだけでは原因を特定できません。</p>
<p id="1776415f-a5ff-454d-9704-24d205bd89e5">遅いSQLを特定し、実行計画や待機状況を確認しながら、検索対象となるデータ量、結合順序、アクセスパス、統計情報、キャッシュの状態、I/O、ロック競合などを横断的に調べます。</p>
<p id="13d78a2c-a45b-4f7a-a9a7-fa46f1c12e8d">同じSQLでも、必要なデータがメモリ上にあるか、ストレージから読み込むかによって処理時間は変わります。過去に生成された実行計画が再利用されるか、新しい実行計画が選ばれるかによっても、性能は大きく変化します。</p>
<p id="12ecc1bc-0085-4e80-aa00-3c73b50f3916">性能問題をデータベースの設定だけで解決できるケースは、実際にはそれほど多くありません。</p>
<p id="8e04b11b-456e-4618-905c-341bff6492fc">SQLや業務ロジックそのものに原因があれば、データベース側のパラメータを変更しても根本的な改善にはなりません。</p>
<p id="b5884bf3-caad-49b8-8ed1-b55d0392de6f">改善策は、インデックスの追加や変更、統計情報の更新、必要に応じたSQLヒントの付与といったデータベース側の対応に限りません。SQLの書き換え、処理の分割、検索条件の見直し、データの持ち方の変更が必要になることもあります。</p>
<p id="6f316aee-635e-4334-b8e4-a67ade4382b2">接続数やトランザクション管理に問題があれば、AP基盤チームへコネクションプールや共通処理の修正を依頼します。</p>
<p id="4ebb28d3-773b-4e53-88bf-5a59e3739310">CPUやストレージI/Oが不足していれば、システム基盤チームとリソース増強や構成変更を検討します。業務ルールを実装した共通部品が非効率であれば、アプリケーションチームの改修が欠かせません。</p>
<figure id="01e764db-7ab8-4f76-b70b-ddf547ca06a0">
<blockquote>
<p id="fb89e981-9471-4f7d-907b-b84e92927209">私がOracle DBAを担当していたときも、性能問題が起きると、まずデータベースが疑われることが少なくありませんでした。<br />
調査を進めると、原因がSQL、業務ロジック、接続方式、共通部品、ストレージなど、別の領域にあるケースも多くありました。</p>
</blockquote><figcaption></figcaption></figure>
<p id="01ce462d-01bb-4dda-8e3e-f58058b64401">実際にあった例では、検索画面の入力にアンダースコアが含まれたことで、想定を大きく超えるデータが検索され、システムが高負荷になったことがありました。</p>
<p id="4711c883-e4da-49da-ad2f-269b3366eeb2">当時使用していたOracleのリリースでは、全角の「＿」や「％」がLIKE検索のワイルドカードとして扱われることがあり、NULL以外のほぼ全件が検索対象となっていました。</p>
<p id="00188a5a-9ece-4f7d-955b-bb7729c28c18">サポートへの照会とバージョンごとの再現試験を重ねると、旧リリース向けにエスケープ処理を入れた場合、新しいリリースへアップグレードした後には逆にエラーになることも分かりました。</p>
<p id="f4e9636f-b06f-40b6-bc86-cce8892a7cf2">最終的には、バージョンが変わっても動作が変わらない書き方をSQLコーディング規約へ反映しました。</p>
<p id="a1df8f8a-eb26-4b17-abfd-9aed78d24495">本来はアプリケーション側のSQL実装に関わる問題でも、データベースが最初に疑われ、DBAが製品仕様とSQLの両面から切り分け、再発防止まで取りまとめることがあります。</p>
<h2 id="490e96a1-f17f-48e4-9f7b-65e78c88b7d2"><span id="toc7">権限とロールはアプリケーションと切り離せない</span></h2>
<p id="aceec12c-f213-4c8a-8a0a-d0f05c7bec9e">権限とロールの設計も、アプリケーションとの調整が避けられない領域です。</p>
<p id="4fba3fc6-92f2-4331-85df-b54b6abfb2a3">既存システムを引き継いだとき、アプリケーションのスキーマにDBA相当のロールがそのまま付与されていたことがありました。</p>
<p id="e2afc2c0-3a04-454a-97e3-e4a6d386be82">セキュリティ要件の観点で認められる状態ではなく、必要な権限だけを個別に付与する形へ絞り込むことになりました。</p>
<p id="559590cd-0c1b-4795-965e-ec7aa66f8632">権限を外した結果、これまで動いていた処理が動かなくなりました。どの処理がどのオブジェクトへどう触れているのかを整理した資料はアプリケーションチームにも残っておらず、発生したエラーと処理を突き合わせながら、必要な権限を一つずつ特定していく作業になりました。</p>
<p id="8d4de74f-3382-4820-bee7-fe4cf7df8c11">権限を細かく制限するほど、影響確認と試験にも相応の工数がかかります。</p>
<p id="a228bc66-0897-4f02-9350-6e1496042171">マネージドサービスでは、この制約がさらに強くなります。</p>
<p id="1d1ca266-4bd1-49bc-af7e-7cf91ccf23e9">RDS for OracleではSYSDBA権限そのものが提供されず、管理操作は用意されたパッケージ経由に限定されます。オンプレミスで当たり前に実行していた手順が使えない前提で、権限の設計と運用手順を組み立て直す必要があります。</p>
<h2 id="f0202de3-2cc7-4c18-9497-f9682195b3a5"><span id="toc8">監査ログは出せばよいわけではない</span></h2>
<p id="2b9c1601-6eab-4aa4-bbe0-a7514264b425">監査も、要件を満たす設定を入れれば終わりという作業ではありません。</p>
<p id="46c903e3-3f82-45c0-91af-2b60568c189a">とりあえず監査ログを出力する設定にしたところ、膨大な量のログが出力され、何を監査対象とするのかを決める作業の方が大変でした。</p>
<p id="5fce93af-e2a4-4bc4-9e5d-7f73da536454">すべてのSQLを記録すれば、性能とストレージへ影響します。絞りすぎれば、問題が起きたときに誰が何をしたのか説明できません。</p>
<p id="b49ed1ad-e734-4be5-b3b3-999d423874d2">特定のテーブルへのアクセスだけを対象にするのか、更新だけでなく参照まで含めるのか、保持期間をどれだけにするのかを、業務要件と法令要件の両面から決めます。</p>
<p id="55f7ba87-f1dc-48d4-a1a6-dab5712e133c">個人情報や決済に関わるデータでは、誰がいつどのデータへ触れたのかを後から説明できることが求められます。</p>
<p id="e41f9514-b806-4d24-9db6-c9573bec9a28">共通のアプリケーションユーザーで接続していれば、データベース側の記録だけでは実際の利用者までたどれません。</p>
<p id="911b05f5-f16b-4c9a-852a-7f0636de7a2f">アプリケーションのログと突き合わせて追跡できる設計にするのか、クライアント識別情報をデータベースへ渡してもらうのかを、アプリケーションチームと事前に決めておく必要があります。</p>
<p id="8e91c426-86c6-44e6-b52a-eb1bfc41b7fe">監視も、稼働状況を眺めるためのものではありません。</p>
<p id="ad849108-d5f4-4891-8a90-29339b1990eb">表領域の使用率と増加傾向、権限の変更、想定外の接続元、監査ログが想定どおり出力・保管されているかなど、業務が止まる前に気づくべき事象と、後から説明を求められる事象の両方を対象にします。</p>
<h2 id="260836b5-32c2-45bd-96e8-7b55c77aa0b5"><span id="toc9">冗長化しても業務を継続できるとは限らない</span></h2>
<p id="a1b7a46b-e3db-457a-86e7-1eeb4d71b041">データベースの可用性を高めるには、障害が発生してからデータを復旧するだけでなく、待機系へ切り替えて業務を継続できる構成も設計します。</p>
<p id="aad08d40-1fd7-431f-95cd-391d504bdf40">オンプレミスではRACやData Guard、クラウドではRDSのMulti-AZなど、障害の範囲、許容停止時間、許容できるデータ損失、費用に応じて方式を選びます。</p>
<p id="f95588c3-6ddd-4c90-a967-0ec3cb638af5">冗長化構成を用意しても、データベースが待機系へ切り替わるだけで業務を継続できるとは限りません。</p>
<p id="a04bd22f-0967-4e58-a6bf-184566f38b38">アプリケーションの再接続、接続プールの回復、DNSキャッシュ、切り替え中に失敗した処理の扱いまで含め、システム全体の復旧動作を設計します。</p>
<p id="f4020eef-6f3a-436e-bc32-d694492ec558">私が担当したシステムでは、正常時の通信遅延を抑えるため、WebサーバーとAPサーバーをRDSのプライマリと同じAZ側へ寄せて稼働させていました。正常時の性能を優先しつつ、障害時にはRDSが別のAZへ切り替わることを前提とした構成です。</p>
<p id="4dea993f-de08-4ef5-939b-c603cdc15140">RDSが別のAZへフェイルオーバーすると、Web／APサーバーとデータベースの通信がAZをまたぐ場合があります。通信経路が変わればレイテンシーも変化し、データベースアクセスの多い業務では性能へ影響する可能性があります。</p>
<p id="fa0bc9ac-6433-4f1f-b1d5-566b152e3051">確認すべきなのは、フェイルオーバーが成功したかどうかだけではありません。RDSが反対側のAZへ切り替わった状態でも、オンライン処理の応答時間やバッチ処理時間が要件内に収まるのかを試験します。</p>
<p id="94c5cdeb-6068-40ce-93a4-4e49ff75fc28">通常時と同じ性能を維持できない場合には、あらかじめ定めた縮退運転の条件で業務を継続できることまで確認します。Web／APサーバーを別AZ側へ切り替える構成であれば、アプリケーションとデータベースを同じAZ側で動かせるかも検証対象です。</p>
<p id="b61df7c4-9898-436b-90fc-60f45dc830e8">RDS Multi-AZで自動化されるのは、データベース側の待機系への切り替えです。その後にアプリケーションが正常に再接続し、性能要件や縮退要件を満たして業務を再開できるかは、利用者側で設計し、試験しなければなりません。</p>
<h2 id="0fddbcd1-5c37-409e-9d31-fcaa7bb140d0"><span id="toc10">バックアップがあっても復旧できるとは限らない</span></h2>
<p id="df8b22f4-4613-4a25-aca3-828ca8fe6300">データベースに障害が発生すれば、システム全体が停止したり、複数の業務が同時に利用できなくなったりする可能性があります。データの破損や消失が起きれば、サーバーを再起動するだけでは復旧できません。</p>
<p id="6afe1257-d800-41b0-866f-a175f0494b21">重要なのは、どの時点まで戻すのかという要件を、事前にアプリケーションチームと合意しておくことです。</p>
<p id="7dde3dbe-7f54-44a4-8d92-6fe327067f88">前日の夜間バックアップまで戻してよいのか、障害の直前まで戻す必要があるのか。直前まで戻す要件があるなら、アーカイブログモードで運用し、アーカイブログの出力先、退避方法、保持期間まで設計に含めます。</p>
<p id="959c3844-9102-458b-ad90-3866fc860963">判断が難しいのは、夜間バッチの途中で障害が発生した場合です。</p>
<p id="4dc62c60-8a6f-439e-93a4-33ccd7e883b5">どのジョブまで完了していたのか、どこまで戻せば再実行できるのか、中途半端な状態で残ったデータをどう扱うのかは、データベース側だけでは決められません。</p>
<p id="16c6832e-8ad1-45ef-9ba5-e35bbe08ca3a">復旧の目標時間と、戻した後に業務をどの順番で再開するのかを含めて、アプリケーションチームと一緒に決めます。バックアップを取得しているだけでは不十分です。</p>
<p id="4c3ebfe7-144f-4863-9233-e89cf2bd5a44">データファイルが壊れた場合、誤って大量のデータを削除した場合、バッチの途中で停止した場合では、手順も所要時間も変わります。</p>
<p id="7bc7769b-8cf4-4a56-a122-ad099a027b85">ユースケースごとに、実際にリストアとリカバリを実施します。本当に戻るのか、目標時間内に終わるのか、戻した後にアプリケーションが正しく動くのかを、アプリケーションチームと合同で確認しておきます。</p>
<h2 id="c10aaab3-ab3c-4173-a0b7-9011826864ac"><span id="toc11">RDSの復元は元のインスタンスを巻き戻す処理ではない</span></h2>
<p id="c4734868-12ff-4493-a90a-cc213807c79a">マネージドサービスを利用する場合も、復旧方法を事前に決めておく必要があります。</p>
<p id="35db3d49-f0dc-4543-a1ce-c87ffd12e865">RDSのポイントインタイムリカバリでは、バックアップ保持期間内の任意の時点へ復元できます。直近については制約があります。トランザクションログは通常5分間隔でAmazon S3へアップロードされるため、指定できる最新の復元時点は現在時刻より数分前になることがあります。実際に復元可能な最新時点は、LatestRestorableTimeで確認します。</p>
<p id="c749523b-34bc-441c-b803-178432faa778">注意が必要なのは、指定した時点の状態が新しいDBインスタンスとして作成され、元のインスタンスが巻き戻るわけではないことです。</p>
<figure id="634e42c1-700a-4865-8d42-9830b1e70a61"><img fetchpriority="high" decoding="async" contenteditable="false" draggable="false" src="https://assets.st-note.com/img/1785572618-JnB0wTWSHC5sMQiV94ubgt7X.png" alt="" width="620" height="349" /><figcaption></figcaption></figure>
<p id="d1c678a7-02a9-43e9-bbfb-f07083800ffe">復旧時間には、新しいインスタンスの作成だけでなく、DB接続先情報の変更やDNSの切り替え、接続確認に要する時間も含まれます。</p>
<p id="f752402d-0921-46c5-bdad-9aa118b867bd">アプリケーションがRDSのエンドポイントを直接参照するのか、DNS名で接続先を抽象化するのかを含め、切り替え方式を事前に設計しておかなければ、復旧目標時間には収まりません。</p>
<p id="de3965b1-5a72-402f-95cd-c8db68b06d9c">旧インスタンスをいつ削除するのか、切り戻せる状態をどこまで残すのかも決めておきます。また、復元できる単位にも制約があります。</p>
<p id="9e37c588-5d58-4323-b10e-90ec8760a682">この復元方式では、DBインスタンス全体が新しいインスタンスとして作成されます。既存のDBインスタンスを過去の状態へ戻したり、特定のテーブルだけを1時間前の状態へ戻したりする機能ではありません。</p>
<p id="eef9dd70-c4f3-401d-9481-23bcc207f208">誤更新への対応では、復元した別インスタンスから対象データを抽出して取り込むなど、別の方式を組み合わせる必要があります。</p>
<h2 id="9652ba2b-d914-4d8a-a73b-faeea5c2ad58"><span id="toc12">データベース製品によって、アーキテクチャと設計上の判断は変わる</span></h2>
<p id="b7064ddc-6627-4d98-87ab-a51862d7a930">以上、Oracleを主な例として説明しました。</p>
<p id="c00cabd1-2a1a-400a-9003-bc96c187a099">近年は、一つのシステムでも、業務データにはリレーショナルデータベース、ログや非定型データには別のデータストアを利用するなど、用途に応じて複数の製品を組み合わせる構成も増えています。</p>
<p id="6e7fb060-6145-403d-bddd-fba6129639ad">OSはAmazon LinuxからRed Hat Enterprise Linuxへ変わっても、プロセス、メモリ、ファイルシステム、権限管理など、基本的な仕組みや設計の考え方には共通する部分があります。データベースは、製品の種類が変わると設計思想そのものが大きく変わることがあります。</p>
<p id="9e0ecf51-02df-45f8-9d99-0fca79bd8035">同じリレーショナルデータベースでも、Oracle、PostgreSQL、MySQLでは、運用機能、可用性構成、拡張方式、チューニングの考え方に違いがあります。OracleとMongoDBのようなドキュメント指向データベースであれば、データの持ち方、整合性の考え方、検索方法、拡張方式まで異なります。</p>
<p id="d119edbc-d4e0-4b0a-8678-53dbdba52683">製品が変わっても、DBAに求められる基本的な役割や考え方には共通する部分があります。変わるのは、その役割を実現するためのアーキテクチャ、機能、制約、管理方法です。</p>
<p id="bbef96e6-0803-47e6-9624-882c82ea05fa">操作方法だけでなく、データモデルやトランザクション、可用性、性能設計の前提から学び直さなければならないこともあり、ここにDBAという職種の難しさがあります。</p>
<h2 id="551f4ca6-3d21-483f-8907-590a4c044d80"><span id="toc13">まとめ</span></h2>
<p id="08b31b87-242e-488d-b815-11381c16a07b">DBAは、データベース製品を構築するだけの担当者ではありません。</p>
<p id="be392c2e-30bd-409e-a881-4523fc2e09c7">アプリケーションの処理を理解して性能問題の原因を横断的に分析し、権限や監査の要件を業務と擦り合わせ、障害が起きてもデータを失わずに業務を再開できる状態を維持し続ける役割です。</p>
<p id="43dce8e9-4c97-4071-a687-16ccea5f5632">構築が終わっても仕事は終わらず、性能問題や障害が起きれば、DBAが原因分析と関係チームの調整の中心に立ちます。</p>
<p id="d2af53a4-cc08-4bae-bf7b-e21c65e93f17">データ量が増えても必要な性能を保ち、稼働後もデータの安全性と業務継続を支える。その責任を担いながら、採用する製品や要件の変化に応じて知識を更新し、新しい設計思想へ適応し続けるところに、DBAの専門性があります。</p>
<p id="301d5a58-9dd4-4bc8-9149-140551c28818"><strong>関連記事</strong></p>
<p id="60ad32b2-1082-42db-b7d0-53e06c3de7d4">SEは一つの職種ではありません。アプリケーション、AP基盤、システム基盤・クラウド、ネットワーク、プロジェクト管理など、ほかの職種との違いは次の記事で整理しています。</p>
<p id="58003a7c-c33c-451d-bb8e-66800430cdfc"><a rel="nofollow" href="https://sys-univ.com/dev/se-roles/" target="_blank">システムエンジニアの種類と仕事内容｜SIerのSEはどこまで担当するのか</a></p>
<p id="febd2e8b-91cb-4845-b82f-ce64bcbba5af">各職種についても、今後個別の記事で詳しく解説していきます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/database-engineer-dba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【システム開発入門】システムエンジニアの種類と仕事内容｜SIerのSEはどこまで担当するのか</title>
		<link>https://sys-univ.com/dev/se-roles/</link>
					<comments>https://sys-univ.com/dev/se-roles/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 27 Jul 2026 09:01:35 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2946</guid>

					<description><![CDATA[はじめに 私は大手SIerで20年以上、システム基盤を中心に、OS、ネットワーク、データベースの設計・構築から、大規模プロジェクトの統括まで経験してきました。 このページでは、私自身のキャリアを踏まえながら、システム開発 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">私は大手SIerで20年以上、システム基盤を中心に、OS、ネットワーク、データベースの設計・構築から、大規模プロジェクトの統括まで経験してきました。</p>


<p class="wp-block-paragraph">このページでは、私自身のキャリアを踏まえながら、システム開発に関わる代表的な職種と、SIerのSEが実際にどこまで担当するのかを整理します。</p>


<p class="wp-block-paragraph">システムエンジニアになりたいと考えている人の中には、SEの仕事を「設計書を書き、プログラムを作る仕事」と捉えている人もいると思います。</p>


<p class="wp-block-paragraph">実際のシステム開発では、プログラムを作るだけではシステムは完成しません。顧客の業務を整理して必要な機能を決め、サーバーやネットワークを構築し、データを安全に管理し、障害が発生しても業務を継続できる仕組みまで設計する必要があります。</p>


<p class="wp-block-paragraph">これらを一人のエンジニアがすべて担当するわけではありません。プロジェクトマネージャー、アプリケーションエンジニア、AP基盤エンジニア、システム基盤エンジニア、ネットワークエンジニア、データベースエンジニアなど、異なる専門性を持つ人たちが役割を分担します。</p>


<p class="wp-block-paragraph">実際のSIerでは、職種ごとの境界が明確に分かれているとは限りません。一つの技術領域からキャリアを始め、周辺領域へ担当範囲を広げ、最終的に複数の技術チームやプロジェクト全体を統括するSEもいます。</p>


<p class="wp-block-paragraph">企業やプロジェクトによって、職種名、チーム名、担当範囲の分け方は異なります。この記事では便宜上「職種」と表現しますが、同じシステムエンジニアという肩書でも、実際の仕事内容は大きく異なります。</p>


<p class="wp-block-paragraph">システム開発全体の流れについては、以下の記事で詳しく説明しています。</p>


<ul id="9a6d345d-7435-454a-9155-75d3756630aa" class="wp-block-list">
	<li><a href="https://sys-univ.com/dev/system-dev-overview/" target="_blank">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></li>


	<li><a href="https://sys-univ.com/dev/system-dev-overview-2/" target="_blank">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></li>
</ul>


<h2 class="wp-block-heading"><span id="toc1">システム開発は複数の専門領域で成り立っている</span></h2>


<p class="wp-block-paragraph">システム開発では、利用者が操作する画面や帳票だけでなく、その裏側にあるサーバー、ネットワーク、データベース、認証、監視、バックアップなども設計します。</p>


<p class="wp-block-paragraph">インターネット上で商品を購入できるショッピングサイトを例に考えてみましょう。</p>


<p class="wp-block-paragraph">アプリケーションエンジニアは、商品検索、注文、決済、在庫確認といった業務機能を設計します。AP基盤エンジニアは、認証、ログ出力、例外処理、データベース接続など、複数の機能が共通して利用する仕組みを整備します。</p>


<p class="wp-block-paragraph">システム基盤エンジニアは、アプリケーションを安定して動かすサーバーやクラウド環境を設計します。ネットワークエンジニアは、利用者や外部サービスと安全に通信できる構成を作ります。データベースエンジニアは、顧客情報や注文情報を正確かつ高速に読み書きできるようにします。</p>


<figure id="a6424cc5-e3fb-4238-a88b-f2d12e8cb5f8" class="wp-block-image"><img decoding="async" src="https://assets.st-note.com/img/1785139082-Pe9wHpzgxbA1slTXtnES4UBf.png" alt="" /></figure>


<p class="wp-block-paragraph">アプリケーション側が大量のデータを短時間で処理する前提を置いているのに、基盤側が小規模なサーバーしか用意していなければ、性能問題が発生します。データベース側が同時接続数を制限しているのに、アプリケーション側が大量の接続を生成すれば、処理の遅延や障害につながります。</p>


<p class="wp-block-paragraph">システム開発では、各担当者が自分の専門領域を設計するだけでなく、他の領域と前提条件を合わせる必要があります。職種を理解するうえでも、個別の仕事内容だけではなく、他の職種とどのように接続しているかを見ることが重要です。</p>


<h2 class="wp-block-heading"><span id="toc2">プロジェクトマネージャー</span></h2>


<p class="PDq2pG_selectionAnchorContainer wp-block-paragraph" data-start="1177" data-end="1215">プロジェクトマネージャーは、プロジェクト全体を成立させる責任を持つ役割です。</p>
<p data-start="1217" data-end="1292">一般的には、品質、コスト、納期を管理する仕事として説明されます。現場で求められるのは、進捗表を更新したり、会議を開催したりすることだけではありません。</p>
<p data-start="1294" data-end="1392">システム開発では、日々さまざまな問題が発生します。要件が決まらない、製品仕様が想定と異なる、他システムとの接続条件が合わない、テストで不具合が多発する、必要な技術者を確保できないといった問題です。</p>
<p data-start="1394" data-end="1501">プロジェクトマネージャーは、発生した問題を把握し、誰が、何を、いつまでに判断するのかを明確にします。担当者間で解決できない問題については、顧客、社内責任者、製品ベンダーなどを巻き込み、必要な意思決定を引き出します。</p>
<p data-start="1503" data-end="1695">大規模なプロジェクトでは、プロジェクトマネージャー一人ですべてを管理できません。アプリケーション、システム基盤、移行、運用などのチームごとにリーダーを置き、各チームが抱えている課題やリスクを集約します。大手SIerの大規模案件では、一例として、プロジェクト全体を統括するPMを課長級、各チームを率いるリーダーを課長代理級が担い、その下に主任などの担当者を配置する体制もよく見られます。</p>
<p data-start="1697" data-end="1800">プロジェクトマネージャーに必要なのは、すべての技術を自分で実装する能力ではありません。各分野の担当者が説明する内容を理解し、プロジェクト全体への影響を判断したうえで、何を優先するかを決める力が求められます。</p>
<p data-start="1802" data-end="1945">技術的には正しい案であっても、予算、納期、要員、契約条件を踏まえると採用できない場合があります。反対に、費用を抑えるために必要な冗長化やテストを削れば、稼働後の障害リスクが高まります。プロジェクトマネージャーは、個別の技術判断を品質、コスト、納期の制約の中で成立させる役割でもあります。</p>
<p data-start="1947" data-end="2052">大きな障害が発生した際には、原因を調査して復旧するだけでは終わりません。顧客に対して影響範囲、原因、復旧状況、再発防止策を説明し、必要に応じて組織を代表して謝罪することも、プロジェクトを統括する立場の仕事です。</p>
<p data-start="2054" data-end="2114">こうした判断と責任を支えるのが、現場で積み上げた技術経験です。例えば、PMには次のような事項を評価する力が求められます。</p>
<ul data-start="2116" data-end="2169">
	<li data-section-id="10g8ucf" data-start="2116" data-end="2132">担当者が提示した工数の妥当性</li>
	<li data-section-id="z0grxb" data-start="2133" data-end="2152">提案されたシステム構成の実現可能性</li>
	<li data-section-id="3ua0a4" data-start="2153" data-end="2169">障害が発生した場合の影響範囲</li>
</ul>
<p data-start="2171" data-end="2296">こうした判断をPMが自分の言葉で行うには、少なくとも一つの技術領域で設計や障害対応を経験していることが大きな支えになります。SIerでは、担当者やチームリーダーとして専門性を積み上げた後、複数領域を統括するPMへ役割を広げていくキャリアが一般的です。</p>


<p class="wp-block-paragraph">実際の更改プロジェクトで、各担当者がどのように関わるのかについては、以下の記事でも説明しています。</p>


<p class="wp-block-paragraph"><a href="https://sys-univ.com/dev/base2/" target="_blank">【システム開発とは何か】システム更改で学ぶ、プログラミングだけではない仕事の全体像</a></p>


<h2 class="wp-block-heading"><span id="toc3">アプリケーションエンジニア</span></h2>


<p class="wp-block-paragraph">アプリケーションエンジニアは、利用者の業務をシステムの機能として実現する役割を担います。</p>


<p class="wp-block-paragraph">画面や帳票を作るだけではなく、顧客がどのような業務を行い、どのようなルールで処理しているのかを理解する必要があります。</p>


<p class="wp-block-paragraph">銀行の融資審査システムであれば、申込受付、本人確認、信用情報照会、審査、承認、契約といった業務の流れを理解しなければ設計できません。会計システムであれば、勘定科目、仕訳、決算処理などの知識が必要になります。公共分野であれば、法律や制度の理解が設計に直結します。</p>


<p class="wp-block-paragraph">主な仕事には、次のようなものがあります。</p>


<ul id="e966b08c-623a-4fb7-b821-f976b6fbc911" class="wp-block-list">
	<li>業務要件の整理</li>


	<li>画面、帳票、バッチ、APIの設計</li>


	<li>データベースへ登録する情報の整理</li>


	<li>プログラム開発</li>


	<li>単体テスト、結合テスト</li>


	<li>障害原因の調査</li>


	<li>利用部門や他システム担当者との仕様調整</li>
</ul>


<p class="wp-block-paragraph">プロジェクトによっては、設計を担当する人とプログラミングを担当する人が分かれています。規模の小さい開発では、一人が要件確認からプログラミング、テストまで担当することもあります。</p>


<p class="wp-block-paragraph">アプリケーションエンジニアにとってプログラミングは重要な技術です。それだけで仕事が完結するわけではありません。顧客の業務を理解し、曖昧な要望をシステムで実現できる仕様へ落とし込む力が必要です。</p>


<p class="wp-block-paragraph">設計した機能がどの程度のデータを処理し、どのようなタイミングでデータベースや外部システムへ接続するのかも、システム基盤やデータベースの担当者へ伝えなければなりません。</p>


<p class="wp-block-paragraph">アプリケーションの仕様は、アプリケーションチーム内だけで完結するものではありません。サーバー構成、ネットワーク帯域、データベース接続数、運用時間など、他の領域の設計条件にもなります。</p>


<h2 class="font-claude-response-body break-words whitespace-normal wp-block-heading" dir="ltr"><span id="toc4">AP基盤エンジニア</span></h2>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">AP基盤とは、複数のアプリケーションを共通の方式で開発し、安定して動かすためのアプリケーション基盤を指します。AP基盤エンジニアは、個別の業務機能ではなく、複数の開発チームが共通して利用する仕組みや開発方式を設計します。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">主な担当領域は次のとおりです。</p>
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 print:block print:space-y-1" dir="ltr">
	<li class="font-claude-response-body whitespace-normal break-words pl-2">認証、認可、ログ、例外処理などの共通機能</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">データベース接続やトランザクション管理の共通方式</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">Javaや.NETなどのアプリケーション実行方式</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">Springなどのフレームワークの設計と利用ルール</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">共通ライブラリや部品の開発</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">プログラムのビルド、テスト、配備を自動化する仕組み</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">コーディング規約や開発標準の整備</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">アプリケーション性能の分析</li>
	<li class="font-claude-response-body whitespace-normal break-words pl-2">開発チームへの技術支援</li>
</ul>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">例えば、100の画面を複数の開発チームで分担して作るシステムで、ログイン状態の確認や操作権限の判定を各開発者が個別に実装すれば、画面ごとに動作や品質が異なり、セキュリティ上の不備も生じやすくなります。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">こうした処理をフレームワークや共通ライブラリとして整備すれば、各開発チームは同じ方式で実装できます。業務機能を担当する開発者は、認証やログ出力を一から作る必要がなくなり、業務ロジックの開発へ集中できます。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">この役割は、アプリケーションとシステム基盤の接点でもあります。プロセス構成、データベース接続数、タイムアウト、メモリ利用、ログ出力、配備方法などを決めるには、プログラミングだけでなく、ミドルウェア、データベース、ネットワーク、性能、セキュリティまで理解する必要があります。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">共通基盤の設計に問題があれば、その影響は多数のアプリケーションへ広がります。利用者からは見えにくい役割ですが、開発生産性、品質、性能、セキュリティを横断して支える重要な専門領域です。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">経験を積むと、共通部品の設計にとどまらず、システム全体の技術方針や構成を決めるアプリケーションアーキテクトやITアーキテクトへ役割を広げることもできます。技術的な裁量と責任範囲が広い職種として、市場での評価も高い領域です。</p>


<h2 class="wp-block-heading"><span id="toc5">システム基盤・クラウドエンジニア</span></h2>


<p class="wp-block-paragraph">システム基盤エンジニアは、アプリケーションを安定して動かすための土台を設計、構築します。</p>


<p class="wp-block-paragraph">以前はサーバーエンジニアやインフラエンジニアと呼ばれることが多く、物理サーバー、OS、ストレージ、バックアップ装置などを担当していました。現在はAWS、Microsoft Azure、Google Cloudなどのクラウドサービスを利用する案件が増え、担当範囲も広がっています。</p>


<p class="wp-block-paragraph">主な検討項目は次のとおりです。</p>


<ul id="e0ec282f-096b-4601-8796-3ad8b516a6bb" class="wp-block-list">
	<li>サーバーやクラウドサービスの構成</li>


	<li>CPU、メモリ、ディスク容量</li>


	<li>OSやミドルウェア</li>


	<li>冗長化と障害時の切り替え</li>


	<li>バックアップとリストア</li>


	<li>監視とログ管理</li>


	<li>セキュリティ</li>


	<li>性能と拡張性</li>


	<li>運用手順</li>


	<li>災害対策</li>
</ul>


<p class="wp-block-paragraph">クラウドを利用すれば、サーバー機器を自社で購入する必要はなくなります。可用性、セキュリティ、性能、運用、コストまでクラウド事業者が自動的に設計してくれるわけではありません。</p>


<p class="wp-block-paragraph">どのサービスをどのように組み合わせるのか、障害が発生した際にどの範囲まで自動復旧させるのか、データをどの地域へ保存するのかといった判断は、利用する企業と開発プロジェクト側に残ります。</p>


<p class="wp-block-paragraph">システム基盤の仕事は、平常時にシステムが動くことだけを考える仕事ではありません。サーバーやネットワークの一部が故障しても業務を継続できる構成、障害が発生しても原因を調査できる監視とログ、誤操作や災害が発生してもデータを復旧できる仕組みまで設計します。</p>


<p class="wp-block-paragraph">アプリケーションが必要とする処理量、データベースへの接続数、稼働時間、停止可能時間などを把握しなければ、適切な基盤構成は決められません。システム基盤は、アプリケーションや運用の条件を受け取って初めて設計できます。</p>


<h2 class="wp-block-heading"><span id="toc6">ネットワークエンジニア</span></h2>


<p class="wp-block-paragraph">ネットワークエンジニアは、利用者、サーバー、クラウド、外部システムの間で、安全かつ安定して通信できる仕組みを設計します。</p>


<p class="wp-block-paragraph">企業のシステムでは、単にインターネットへ接続できればよいわけではありません。</p>


<p class="wp-block-paragraph">社内端末から業務システムへ接続する通信、データセンターとクラウドを結ぶ通信、外部企業とのシステム連携、運用担当者が管理画面へ接続する通信など、それぞれに異なる条件があります。</p>


<p class="wp-block-paragraph">主な担当領域には、次のようなものがあります。</p>


<ul id="5c87d50e-3b1a-404c-831d-29abb907f8b1" class="wp-block-list">
	<li>LAN、WAN</li>


	<li>ルーティング</li>


	<li>DNS</li>


	<li>ファイアウォール</li>


	<li>ロードバランサ</li>


	<li>プロキシ</li>


	<li>VPN</li>


	<li>閉域網</li>


	<li>クラウド接続</li>


	<li>通信経路の冗長化</li>


	<li>ネットワーク監視</li>
</ul>


<p class="wp-block-paragraph">ネットワークの問題は、原因の切り分けが難しいことがあります。</p>


<p class="wp-block-paragraph">画面が表示されないという事象だけでは、アプリケーションに不具合があるのか、サーバーが停止しているのか、DNSで名前解決できないのか、ファイアウォールで通信が遮断されているのか分かりません。</p>


<p class="wp-block-paragraph">ネットワークエンジニアには、通信経路やパケットの状態を確認し、どこで通信が途切れているのかを特定する力が求められます。</p>


<p class="wp-block-paragraph">クラウド環境でもネットワークの重要性は変わりません。画面上の操作でネットワークを構築できるようになった反面、ルーティングや名前解決の設計を誤れば、複数のシステムへ影響が広がります。</p>


<p class="wp-block-paragraph">アプリケーションが接続する相手、通信量、利用するポート、暗号化方式、接続元の制限などを他の担当者と確認し、システム全体の通信条件を整合させる必要があります。</p>


<h2 class="wp-block-heading"><span id="toc7">データベースエンジニア</span></h2>


<p class="wp-block-paragraph" id="3f831d63-0c47-4697-a917-0883fe3534c6">データベースエンジニアは、システムが扱うデータを正確、安全かつ効率的に管理する役割を担います。</p>
<p id="1538cd61-7b67-4039-8395-eafad400b45d">多くの業務システムでは、顧客、契約、商品、取引、会計などの情報をデータベースへ保存します。</p>
<p id="6c8cb7ed-5ccb-4da5-a48c-456ac8331928">データベースに障害が発生すると、画面が表示できないだけではなく、取引そのものを継続できなくなる場合があります。データが破損したり失われたりすれば、企業活動へ重大な影響を及ぼします。</p>
<p id="35dbd6c2-113d-46ec-8365-28db454f2aea">主な仕事は次のとおりです。</p>
<p id="61b125a2-cc0a-4008-8e17-dd0e7fa0d146"><strong>構築と物理設計</strong></p>
<ul id="fcfaef75-37b5-4cd8-9e5d-9944a9b9e502">
	<li>
<p id="6495aee9-3566-4214-9598-316ea80d1aa1">データベース製品と構成の選定</p>
</li>
	<li>
<p id="1e3f69af-6b25-475b-b909-e566b11bf170">テーブル、インデックス、表領域などの設計</p>
</li>
	<li>
<p id="2ee55aff-bd91-4059-a3bf-bd245bcd6b8e">初期設定と各種パラメータの設計</p>
</li>
</ul>
<p id="efbcec82-f6b1-4d3e-8c1b-5eec5ab01f2c"><strong>性能と容量管理</strong></p>
<ul id="f6eda94c-38a0-4146-8815-1907e7843c8b">
	<li>
<p id="37f3f330-74b7-4b81-9584-402692095fac">SQLと実行計画の分析</p>
</li>
	<li>
<p id="9c0f772f-3017-4bd8-b526-54280d2ac21c">インデックスや統計情報の管理</p>
</li>
	<li>
<p id="2a28e791-0726-450e-a1e8-ee0e453e3139">性能チューニング</p>
</li>
	<li>
<p id="b9bacd10-afd9-40aa-8d72-4cee408f230a">データ容量と増加量の見積もり</p>
</li>
</ul>
<p id="7afb3960-2772-4699-8eed-5da299aaf38d"><strong>セキュリティと運用</strong></p>
<ul id="9af63e2e-12a8-4937-bd5d-b50353a5e1af">
	<li>
<p id="07686170-55eb-485d-89f6-16181669260a">ユーザー、権限、ロールの設計</p>
</li>
	<li>
<p id="2a45fe66-f9b1-4fd6-82cf-277164bc7ed6">監査要件への対応</p>
</li>
	<li>
<p id="b1668179-4d60-4123-a44c-f3798c61f74e">監視とログ管理</p>
</li>
</ul>
<p id="70500154-c97b-401c-aa4f-5609610376de"><strong>可用性とデータ保護</strong></p>
<ul id="5cb38c54-e134-49c8-b2f0-003c2a845b1b">
	<li>
<p id="a002de07-9d23-4d7a-b366-d5f2b09e9aa9">冗長化と障害時の切り替え</p>
</li>
	<li>
<p id="d9f8d000-4589-47a2-9612-d7b0d9f928cb">バックアップとリカバリ</p>
</li>
</ul>
<p id="ba4e2136-0caf-452a-8fc8-0281ebd33ed3"><strong>移行と製品管理</strong></p>
<ul id="a2c58215-63f7-41c0-9e08-fdd3ab2e0f90">
	<li>
<p id="f1bfc3df-494f-4b0b-899a-ed0fe2cd417d">データ移行</p>
</li>
	<li>
<p id="7af5f3cf-5266-44fa-a3bd-ec11c53bece9">バージョンアップ</p>
</li>
	<li>
<p id="83297e33-c2c4-4713-8c77-c87549b34f8f">ライセンスと保守契約の管理</p>
</li>
</ul>
<p id="884e0df7-fa8a-429d-ac9e-02fcaa49d38c">Oracle Database、PostgreSQL、Microsoft SQL Serverなど、製品ごとに構造や機能が異なるため、特定のデータベース製品に深い知識を持つエンジニアも多くいます。</p>
<p id="8b06ab2e-6827-4332-b4fe-b5a94dce927a">データベースエンジニアの仕事は、データベースをインストールして終わりではありません。</p>
<p id="93d109cc-f7e1-4997-b49f-9f34b09d9fad">どのSQLに時間がかかっているのか、索引が適切に利用されているか、統計情報が実行計画へどのように影響しているか、障害時にどの時点までデータを復旧できるかといった点を継続的に確認します。</p>
<p id="a9ef1aee-54aa-4e9d-99d9-f8e34ee2480d">アプリケーションの性能問題に見えても、実際にはSQLやデータベース設計に原因がある場合があります。データベース側だけで改善できるとは限らず、アプリケーションの処理方式そのものを見直すこともあります。</p>
<p id="36d75ccf-a375-4cf7-8f14-e247693fdca3">アプリケーションエンジニアやAP基盤エンジニアと、SQL、接続方式、トランザクション、処理量などの前提を共有することが欠かせません。</p>
<p id="d4c0b554-855f-4611-acf7-4aee23cd0fbd">ここではデータベースエンジニアの担当領域を概要として紹介しました。構成設計、性能チューニング、権限・監査、可用性、バックアップと復旧など、具体的な仕事内容と実務上の判断については、次の記事で詳しく説明しています。</p>
<a href="https://sys-univ.com/dev/database-engineer-dba/" title="【システム開発入門】データベースエンジニア（DBA）の仕事｜止めない、失わない、遅くさせない" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【システム開発入門】データベースエンジニア（DBA）の仕事｜止めない、失わない、遅くさせない</div><div class="blogcard-snippet internal-blogcard-snippet">データベースエンジニア（DBA）は何をする職種なのか。Oracle DBAの実務経験をもとに、物理設計・構築、性能と容量管理、権限・監査、監視、バックアップ、障害復旧、データ移行まで、構築後も続く仕事と責任をわかりやすく解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.03</div></div></div></div></a>
<p id="17f0a536-ddec-4d12-926e-806684b3e756"> </p>


<h2 class="wp-block-heading"><span id="toc8">運用、セキュリティ、アーキテクトという役割</span></h2>


<p class="wp-block-paragraph">実際のプロジェクトには、ここまで説明した職種以外にもさまざまな役割があります。</p>


<p class="wp-block-paragraph">運用エンジニアは、稼働後の監視、障害対応、定期作業、問い合わせ対応などを担当します。運用担当者が稼働後に考えればよい仕事ではありません。監視方法、バックアップ、障害時の連絡、復旧手順、定期作業などは、システム開発の段階から設計する必要があります。</p>


<p class="wp-block-paragraph">セキュリティエンジニアは、認証、権限、脆弱性、ログ監視、インシデント対応などを専門的に検討します。セキュリティも一つの製品を導入して完了するものではなく、アプリケーション、システム基盤、ネットワーク、運用の各領域にまたがります。</p>


<p class="wp-block-paragraph">システムアーキテクトは、個別製品の設定だけでなく、システム全体の構造や技術方針を設計します。複数のチームにまたがる技術的な整合性を取り、局所的には正しい設計が、システム全体の問題にならないようにします。</p>


<p class="wp-block-paragraph">これらが独立した職種として置かれるか、他の担当者が兼務するかは、組織やプロジェクトの規模によって異なります。</p>


<p class="wp-block-paragraph">小規模なシステムでは、一人がアプリケーション、データベース、クラウド、運用まで担当する場合があります。大規模なシステムでは、同じデータベース領域でも、性能、移行、運用などに担当が分かれることがあります。</p>


<p class="wp-block-paragraph">職種名だけで仕事内容を判断するのではなく、実際にどの範囲まで担当するのかを確認することが重要です。</p>


<p class="wp-block-paragraph">ここまでは、システム開発に関わる役割を職種ごとに分けて説明しました。実際のSIerのキャリアでは、これらの役割が一人の中で連続することがあります。ここからは、私自身の経験を例に、技術者がどのように担当範囲を広げていくのかを説明します。</p>


<h2 class="wp-block-heading"><span id="toc9">SIerのSEは一つの職種に収まらない</span></h2>


<p class="wp-block-paragraph">私自身も、最初からプロジェクト全体を管理していたわけではありません。キャリアの出発点は、SolarisやLinuxを扱うインフラエンジニアでした。</p>


<p class="wp-block-paragraph">OSを設計、構築するだけでなく、Ciscoの資格を取得し、比較的小規模なネットワーク設計も担当しました。当時は現在のクラウド環境とは異なり、物理的なサーバー機器を顧客のデータセンターへ納品し、ラックへ搭載するところまでSIer側で行う案件も数多くありました。</p>


<p class="wp-block-paragraph">現在のクラウドでは、物理サーバーや電源設備はサービスの裏側に隠れ、利用者が直接意識する機会は減りました。当時のインフラエンジニアは、OSやミドルウェアだけでなく、機器を実際に稼働させるための物理設備まで、設計と構築の対象として扱っていました。</p>


<p class="wp-block-paragraph">私も、サーバーの台数や消費電力からラックの電源容量を計算し、停電時にはUPSとUPS管理ソフト（PowerChute）を連携させて、OSやミドルウェアを安全に停止する方式を設計しました。</p>


<p class="wp-block-paragraph">ハードウェアを納品する際には、設計書上の構成を考えるだけでは終わりません。サーバーをラックへ実際に搭載し、電源やネットワークケーブルを接続して、機器が起動するところまで確認します。</p>


<p class="wp-block-paragraph">LANケーブルを配線するため、吸盤式のフロアリフターを使ってフリーアクセスフロアの床板を開け、床下へ潜ってケーブルを引き回したこともあります。現場では、この吸盤式の道具を「サッカー」と呼んでいました。作業を終えて床下から出ると、スーツが埃まみれになっていたものです。</p>


<p class="wp-block-paragraph">現在では、こうした作業はデータセンター、施工、ファシリティなどの専門担当へ分業されることが多く、クラウド環境からキャリアを始めたエンジニアには馴染みのない光景かもしれません。</p>


<p class="wp-block-paragraph">こうした経験を通じて、システムは画面上の設定やソフトウェアだけで動いているのではなく、電源、空調、ラック、ケーブル、機器といった物理的な土台の上で成立していることを理解しました。</p>


<p class="wp-block-paragraph">その後、Oracle Databaseを大規模に利用するシステムを担当するようになり、データベースの設計、構築、性能チューニングまで行うようになりました。当時のOracle9i Platinum資格も取得し、DBAとして経験を積みました。</p>


<p class="wp-block-paragraph">ここまでで約10年間です。</p>


<p class="wp-block-paragraph">OS、ハードウェア、ネットワーク、電源設備、データベースを、それぞれ独立した製品知識として覚えたわけではありません。システムに障害が発生した際、どの層に原因があるのかを切り分け、各領域の設計がどのように影響し合うのかを、実際の構築や障害対応を通じて理解していきました。</p>


<p class="wp-block-paragraph">例えば、処理が遅いという事象が発生しても、原因がサーバーのCPU不足とは限りません。ストレージのI/O、ネットワーク遅延、Oracleの実行計画、SQL、アプリケーションの処理方式など、複数の可能性があります。</p>


<p class="wp-block-paragraph">一つの製品だけを見ていては、原因を特定できない障害もあります。異なる技術領域を経験することで、システム全体を一つの構造として見られるようになりました。</p>


<p class="wp-block-paragraph">その後も肩書としてはシステム基盤を担当するエンジニアでしたが、仕事の中心は個別製品の設計や構築から、システム基盤全体の統括へ変わっていきました。</p>


<p class="wp-block-paragraph">各技術チームの作業範囲を整理し、必要な要員と工数を見積もり、RFPや提案書を作成します。案件を受注してよいかを判断する社内会議では、技術的な実現性だけでなく、採算、要員確保、リスク、契約条件についても説明します。</p>


<p class="wp-block-paragraph">入札案件では、幹部に対して案件の概要、顧客の要求、提案内容、受注方針、想定されるリスクを説明し、組織として入札へ参加するかどうかを判断できる材料を揃えます。</p>


<p class="wp-block-paragraph">この段階になると、自分でOSやデータベースを構築する時間は減っていきますが、技術経験が不要になるわけではありません。</p>


<p class="wp-block-paragraph">各担当者が提示した工数は妥当なのか、提案している構成に技術的な無理はないか、障害が発生した場合にどこまで影響が広がるのか、顧客の要求に対して過剰な構成や不足した構成になっていないかを判断するには、現場で積み上げた知識が必要です。</p>


<p class="wp-block-paragraph">見積もりについても、単価と工数を集計するだけではありません。設計、構築、テスト、移行、運用準備に何人必要なのか、各チームの作業にどのような依存関係があるのか、どの部分に不確実性が残っているのかを理解しなければ、現実的な計画にはなりません。</p>
<p id="76ac4958-d8b6-4929-ba64-f99ea4a0c694" data-pm-slice="1 1 []">システム開発費用がなぜ数億円規模になるのか、見積もりにどのような作業や費用が含まれるのかについては、以下の記事で詳しく解説しています。</p>
<p id="75834618-0d57-49df-8aaf-b77b8be8567a"><a href="https://sys-univ.com/dev/base3/" target="_blank">【システム開発費用の内訳】なぜ数億円かかるのか｜クラウド更改の見積もり構造</a></p>


<p class="wp-block-paragraph">SIerの管理職やプロジェクトマネージャーは、単に人や進捗を管理するだけの仕事ではありません。少なくとも大規模なシステム開発では、技術、費用、要員、契約、顧客との関係を結び付け、プロジェクトとして成立させる役割を担います。</p>


<p class="wp-block-paragraph">すべてのSEが同じ経歴をたどるわけではありません。アプリケーションや業務領域を起点に、プロジェクト全体を統括する人もいます。ネットワーク、データベース、セキュリティなど、一つの領域を深く追求し続けるスペシャリストもいます。</p>


<p class="wp-block-paragraph">一つの専門性を深く経験し、隣接する領域へ担当範囲を広げた結果として、複数の専門職をまとめる立場へ進むというキャリアは、SIerでは特殊なものではありません。</p>


<p class="wp-block-paragraph">職種名だけを見れば、インフラエンジニア、ネットワークエンジニア、DBA、プロジェクトマネージャー、管理職と分かれます。実際のキャリアでは、それぞれが切り離されているのではなく、過去の技術経験を土台として連続しています。</p>


<h2 class="wp-block-heading"><span id="toc10">SEになるためにプログラミングは必須なのか</span></h2>


<p class="wp-block-paragraph">SEを目指す人から、「プログラミングができなければSEになれないのか」と聞かれることがあります。</p>


<p class="wp-block-paragraph">答えは、目指す領域によって異なります。</p>


<p class="wp-block-paragraph">アプリケーションエンジニアやAP基盤エンジニアを目指すのであれば、プログラミングの知識は重要です。自分で大量のプログラムを書かない立場になったとしても、設計の妥当性を判断し、障害原因を調査するためにはコードを読める必要があります。</p>


<p class="wp-block-paragraph">システム基盤、ネットワーク、データベースを担当する場合も、プログラムと無関係ではありません。</p>


<p class="wp-block-paragraph">運用作業を自動化するスクリプト、データベースを操作するSQL、クラウド環境を構築するコードなどを扱います。現在は、サーバーやネットワークの構成をコードとして定義し、自動的に構築するIaC（Infrastructure as Code）も利用されています。システム基盤やネットワークを担当するSEにも、コードを読み書きする力が求められる場面は増えています。</p>


<p class="wp-block-paragraph">すべてのSEが、日常的に業務アプリケーションのプログラムを書いているわけではありません。</p>


<p class="wp-block-paragraph">顧客との要件調整、システム構成の設計、性能分析、障害対応、プロジェクト管理など、プログラミング以外の仕事も多くあります。</p>


<p class="wp-block-paragraph">「SEになるためにプログラミングは不要」と言い切るのも、「SEは全員プログラマーである」と捉えるのも正確ではありません。自分が目指す領域で、どの程度のプログラミング知識が必要なのかを考えることが重要です。</p>


<h2 class="wp-block-heading"><span id="toc11">SEの専門性は一つの領域から築く</span></h2>


<p class="wp-block-paragraph">システム開発には多くの専門領域があるため、最初からすべてを理解することはできません。</p>


<p class="wp-block-paragraph">SEを目指すのであれば、まず一つの領域で基礎を身につけることが現実的です。</p>


<p class="wp-block-paragraph">アプリケーションであれば、一つの業務機能について、設計、開発、テスト、障害対応まで経験します。システム基盤であれば、サーバーやクラウドサービスを構築するだけでなく、監視、バックアップ、性能確認、障害対応まで担当します。</p>


<p class="wp-block-paragraph">一連の工程を経験すると、自分が設計した内容が、後続工程や他の担当者、稼働後の運用にどのような影響を与えるのかが見えるようになります。</p>


<p class="wp-block-paragraph">専門性を身につけた後で、隣接する領域へ知識を広げます。</p>


<p class="wp-block-paragraph">データベースエンジニアがアプリケーションの仕組みを理解すれば、SQL性能の問題をより正確に分析できます。システム基盤エンジニアがネットワークやデータベースを理解すれば、障害時の切り分けが速くなります。</p>


<p class="wp-block-paragraph">プロジェクトマネージャーも、いずれかの技術領域や業務領域で現場経験を持っている方が、担当者の説明やリスクの大きさを理解しやすくなります。</p>


<p class="wp-block-paragraph">周辺領域の知識を広げることと、自分の専門性を失うことは同じではありません。何でも少しずつ知っているだけでは、重大な判断を任されにくくなります。</p>


<p class="wp-block-paragraph">まずは一つの領域で、設計、構築、テスト、障害対応まで責任を持てる水準を目指し、その専門性を軸に周辺領域との境界を理解できる範囲を広げていくことが、SEとして成長する一つの形です。</p>


<h2 class="wp-block-heading"><span id="toc12">市場価値は技術を課題解決につなげる力で決まる</span></h2>


<p class="wp-block-paragraph">特定のクラウドサービスやデータベース製品に詳しいことは、エンジニアとして大きな強みになります。</p>


<p class="wp-block-paragraph">製品の操作方法を知っているだけでは、システム開発の課題を解決できないことがあります。</p>


<p class="wp-block-paragraph">顧客が達成したいことは何か、どのような制約があるのか、どの選択肢を採用すれば品質、コスト、納期のバランスを取れるのかを考えなければなりません。</p>


<p class="wp-block-paragraph">例えば、性能問題に対してサーバーの台数を増やすことは、一つの解決策です。原因がSQLやアプリケーションの処理方式にあるなら、サーバーを増やしてもコストが上がるだけで、問題の根本は残ります。</p>


<p class="wp-block-paragraph">ネットワーク障害に見える事象が、実際にはアプリケーションの接続管理やDNSの利用方式に起因していることもあります。一つの製品や担当領域だけで問題を捉えると、対策を誤る可能性があります。</p>


<p class="wp-block-paragraph">市場価値の高いエンジニアは、知っている製品や技術をそのまま当てはめるのではなく、複数の選択肢を比較し、対象となるシステムに適した方法を選びます。</p>


<p class="wp-block-paragraph">自分の頭の中だけに解決策を持っていても、プロジェクトは動きません。設計書や計画書として整理し、関係者へ説明し、複数のチームが同じ前提で実行できる状態を作る必要があります。</p>


<p class="wp-block-paragraph">技術的な判断を、顧客、経営層、営業、契約担当者へ説明する場面では、専門用語を並べるだけでは伝わりません。技術上の問題が、費用、納期、業務継続、契約上の責任へどのような影響を与えるのかを説明する必要があります。</p>


<p class="wp-block-paragraph">専門技術、業務理解、問題解決、説明、調整の力が組み合わさることで、担当できる範囲と責任が広がります。</p>


<h2 class="wp-block-heading"><span id="toc13">まとめ</span></h2>


<p class="wp-block-paragraph">システム開発は、プログラムを作る人だけでは進められません。プロジェクトマネージャー、アプリケーション、AP基盤、システム基盤、ネットワーク、データベースなど、異なる専門性を持つエンジニアが前提条件を共有し、一つのシステムを作ります。</p>


<p class="wp-block-paragraph">職種名は専門領域を理解するためには役立ちますが、実際のSIerのSEは一つの職種だけに収まるとは限りません。技術者として積み上げた経験を土台に、周辺領域、費用、要員、契約まで担当範囲を広げ、プロジェクト全体を統括する人もいます。</p>


<p class="wp-block-paragraph">システム開発の目的は、最新技術を導入することでも、プログラムを書くことでもありません。顧客の業務上の課題を理解し、技術を使って実行可能な仕組みに変えられる人材が、現場で求められるシステムエンジニアです。</p>


<h2 class="wp-block-heading"><span id="toc14">このnoteで発信していること</span></h2>


<p class="wp-block-paragraph">このnoteでは、大規模SIerの現場で経験してきたシステム基盤設計、クラウド移行、運用設計、Oracle Database、プロジェクト管理などを、若手SEやシステム開発に関心を持つ人にも理解できる形で整理しています。</p>


<p class="wp-block-paragraph">成功事例だけを紹介するのではなく、設計時に見落としやすい点、プロジェクトで実際に発生したトラブル、その原因と再発防止まで含めて記録しています。</p>


<p class="wp-block-paragraph">システム開発の全体像を知りたい方は、まず以下の記事からお読みください。</p>


<ul id="0c714f6d-5d5a-48d3-923b-8edaad1c4a3f" class="wp-block-list">
	<li><a href="https://sys-univ.com/dev/system-dev-overview/" target="_blank">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></li>


	<li><a href="https://sys-univ.com/dev/system-dev-overview-2/" target="_blank">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></li>


	<li><a href="https://sys-univ.com/dev/base2/" target="_blank">【システム開発とは何か】システム更改で学ぶ、プログラミングだけではない仕事の全体像</a></li>
	<li><a href="https://sys-univ.com/dev/base3/" target="_blank">【システム開発費用の内訳】なぜ数億円かかるのか｜クラウド更改の見積もり構造</a></li>
</ul>



]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/se-roles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【システム開発とは何か】システム更改で学ぶ、プログラミングだけではない仕事の全体像</title>
		<link>https://sys-univ.com/dev/base2/</link>
					<comments>https://sys-univ.com/dev/base2/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 17 Jul 2026 09:01:50 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=122</guid>

					<description><![CDATA[はじめに システム開発と聞くと、新しいサービスや業務システムを作り、エンジニアがプログラムを書く仕事を想像する人が多いのではないでしょうか。 企業のシステム開発プロジェクトは、大きく分けると、新しいシステムを一から作る「 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p class="font-claude-response-body break-words whitespace-normal"><strong>はじめに</strong></p>
<p class="font-claude-response-body break-words whitespace-normal">システム開発と聞くと、新しいサービスや業務システムを作り、エンジニアがプログラムを書く仕事を想像する人が多いのではないでしょうか。</p>
<p class="font-claude-response-body break-words whitespace-normal">企業のシステム開発プロジェクトは、大きく分けると、新しいシステムを一から作る「新規開発」と、すでに稼働しているシステムを次の環境へ引き継ぐ「システム更改」があります。</p>
<p class="font-claude-response-body break-words whitespace-normal">SIerで多くのシステム開発を経験してきましたが、プロジェクトの多くは新規開発ではなく更改です。</p>
<p class="font-claude-response-body break-words whitespace-normal">新しい業務機能をほとんど作らないプロジェクトでも、数億円規模の予算が組まれ、数十人の関係者が参加し、完了まで1年以上かかることがあります。プログラムを書く以外に、何にそれほどの時間と費用がかかっているのでしょうか。</p>
<p class="font-claude-response-body break-words whitespace-normal">今回は、A銀行の融資審査システムをAWSへ移行するクラウドリフトを例に、システム更改の現場で何が行われているのかを見ていきます。現行調査、データ移行、テスト、運用引継ぎ、そしてステークホルダー間の調整という構造は、多くのシステム更改に共通するものです。</p>
<p class="font-claude-response-body break-words whitespace-normal">システム開発全体の工程や、機能要件・非機能要件の基本的な考え方は、次の記事で説明しています。あわせて読むと、個々の作業がプロジェクト全体のどこに位置するのかを理解しやすくなります。</p>
<p><a href="https://sys-univ.com/dev/system-dev-overview/">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview-2/">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></p>
<h2><span id="toc1">なぜシステムを更改しなければならないのか</span></h2>
<p>A銀行の融資審査システムは、データセンター内に設置されたサーバーで稼働しています。企業が自ら調達・管理するサーバーやネットワーク機器を使ってシステムを構築・運用する形態を、オンプレミスと呼びます。</p>
<p>このサーバーが、2年後にメーカーの保守終了時期を迎えます。現場ではEOSL（End of Service Life）などと呼ばれます。OSやデータベースなどのソフトウェアも、順次サポートが終了する予定です。</p>
<p>保守が終了した製品を使い続けると、故障時に交換部品を調達できなかったり、脆弱性が発見されても修正プログラムが提供されなかったりする可能性があります。銀行システムとして長期的に使い続けることは難しく、通常は期限を迎える前に更改が必要になります。</p>
<p>従来であれば、新しい物理サーバーを購入し、データセンター内に次期システムを構築する方法が有力でした。今回のA銀行は、機器を買い直すのではなく、AWSへの移行を選択します。</p>
<p>既存システムの構成や機能を大きく変えず、稼働場所をオンプレミスからクラウドへ移す方式を、リホストと呼びます。一般にはクラウドリフトと呼ばれることも多い移行方式です。</p>
<p>A銀行は移行期限を優先し、現在の融資審査機能を大きく変えずにAWS上で安定稼働させるため、サーバーの移行はリホストを基本としつつ、保守終了を迎えるOSやミドルウェアはあわせてバージョンアップする方針を選びました。ミドルウェアとは、OSとアプリケーションの間で動くデータベースやWebサーバーなどのソフトウェアのことです。</p>
<p>実際の更改案件でも、一つの方式だけですべてを移すとは限らず、システムや製品ごとに複数の方式を組み合わせます。</p>
<p>クラウド移行には、OSやミドルウェアの構成を一部見直すリプラットフォーム、アプリケーションの構造そのものを作り替えるリアーキテクチャ、外部事業者が提供する業務サービスへ置き換えるSaaS移行などの選択肢もあります。</p>
<h2><span id="toc2">「同じ機能を移すだけ」でも作業は減らない</span></h2>
<p>業務機能を変えないのであれば、現在のサーバーをそのままクラウドへコピーすればよいと思うかもしれません。</p>
<p>実際には、オンプレミスとクラウドでは、サーバー、ネットワーク、セキュリティ、障害対策、バックアップ、監視、料金体系など、設計・運用上の前提が多くの点で異なります。アプリケーションをほとんど修正しないクラウドリフトであっても、コピーして終わりにはできません。</p>
<p>クラウドリフトの開発ポイントは以下の記事で解説しています。</p>
<a href="https://sys-univ.com/dev/cloudlift/" title="【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由</div><div class="blogcard-snippet internal-blogcard-snippet">クラウド移行（AWSへのクラウドリフト）で起きる手戻り・コスト超過・納期遅延は、構築中ではなくPoC不足から始まります。Auto Scaling、EFS/EBS、RDS、監視、バックアップ、ライセンスなど10の設計リスクを現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.20</div></div></div></div></a>
<p>A銀行のプロジェクトでは、主に次の作業が発生します。</p>
<p><img decoding="async" class="aligncenter size-medium wp-image-2868" src="https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/ac0be39fb4e59b3a771e3d47d5d0a782.jpg 1448w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>このうち、プログラミングに該当するのは、アプリケーション対応の一部です。</p>
<p>OSやミドルウェアのバージョンアップによって動かなくなった箇所を修正する、いわゆる非互換対応が中心で、新しい業務機能を大量に作るわけではありません。</p>
<p>更改プロジェクト全体から見れば、プログラム修正は数多くある作業の一つにすぎないのです。</p>
<h2><span id="toc3">最初の壁は「現在のシステムを知ること」</span></h2>
<p>更改で最初に必要になるのは、現在動いているシステムを正確に把握することです。</p>
<p>当たり前に聞こえるかもしれませんが、ここが一番の難所だと私は考えています。</p>
<p>A銀行の融資審査システムには、画面へのアクセスを受け付けるWebサーバー、アプリケーションを動かすAPサーバー、データを管理するDBサーバーがあります。</p>
<p>それだけではありません。顧客情報を管理する別システム、信用情報機関との接続、行内の認証システム、帳票出力、メール送信、夜間に決められた処理をまとめて実行するバッチ処理など、多数の仕組みと連携しています。</p>
<p>サーバーの一覧だけを見て移行計画を立てると、こうした依存関係を見落とします。</p>
<p>アプリケーションは正常に起動しているのに、外部システムとの通信が許可されておらず審査が完了しない。サーバーの移行には成功したのに、ファイルの受け渡し時刻がずれ、翌朝の業務に必要なデータが取り込まれない。どちらも現場で実際に起きる話です。</p>
<p>現行調査では、機器やソフトウェアの一覧に加えて、誰がいつ使っているのか、どのシステムとどのような方式で通信しているのか、毎日・毎月・年度末に動く処理は何か、障害発生時に何時間以内で復旧する必要があるのか、データを何年間保存するのかといった情報まで確認します。</p>
<p>長く動いているシステムほど、設計書に書かれていない運用や、担当者だけが知っている作業が眠っています。</p>
<p>構築当時の担当者が異動や退職ですでにおらず、仕様を誰にも確認できないブラックボックスと化した処理も珍しくありません。設計書と実機の設定が食い違っていることもあります。この場合、実機の設定やログを一つずつ読み解きながら、動いているシステムの仕様を復元していく作業が発生します。</p>
<p>私の経験でも、現行調査の抜けは、移行直前の仕様追加やサービス開始後の障害に直結します。更改プロジェクトの品質は、この地味な調査工程でほぼ決まると言ってよいくらいです。</p>
<p class="font-claude-response-body break-words whitespace-normal" dir="ltr">調査が必要なのは、現在の構成や運用だけではありません。更改によってOSやミドルウェアの挙動がどう変わるのか、その影響まで調べ切れていないと、本番稼働後の障害につながります。データベースの更改後に実行計画が変わって性能障害へ発展した事例など、クラウドリフトや更改で実際に起きたトラブルは、次のマガジンにまとめています。</p>
<a rel="noopener" href="https://note.com/k_s7906/m/m4570946c9f86" title="クラウド移行でハマる、AWS設計・運用の落とし穴｜ナギ ＠ 氷河期SEの知見録｜note" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/4cda2f46e0e0c9711ce9cc4eda825fb8.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">クラウド移行でハマる、AWS設計・運用の落とし穴｜ナギ ＠ 氷河期SEの知見録｜note</div><div class="blogcard-snippet external-blogcard-snippet">AWSへのクラウド移行やDR設計で見落としやすい、設計・起動・再作成・運用の落とし穴を整理するマガジンです。

EC2、AMI、cloud-init、EC2Launch、Auto Scaling、EBS、CloudWatch Logs、S3、AWS Backupなどを題材に、「サーバは起動したのに使えない」「設定したはReadMore...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://note.com/k_s7906/m/m4570946c9f86" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">note.com</div></div></div></div></a>
<h2><span id="toc4">移行とテストは「正しさを証明する」工程</span></h2>
<p>更改では、現在のデータベースに保存されている顧客情報や審査情報を新しい環境へ移します。</p>
<p>ここで大事なのは、データをコピーできたという事実だけでは、移行成功と判断できないことです。</p>
<p>移行前後でデータ件数が一致しているか、文字化けや桁落ちがないか、審査履歴が正しい顧客にひも付いているか、移行作業中に更新されたデータが欠落していないかを確認します。</p>
<p>注意したいのは、長年運用されたデータベースには、過去の障害対応で手作業により修正されたデータや、現在の入力チェックでは登録できない古い形式のデータが残っていることです。移行リハーサルをきれいなテストデータだけで行うと、こうしたデータは本番移行の当日に初めてエラーになります。移行の確認には、本番相当のデータを使うことが欠かせません。私はシステム開発の現場で昭和「90年」となっているデータに遭遇したことがあります。</p>
<p>銀行システムを長時間停止できない場合は、事前にデータの大部分を転送し、切り替え当日に更新分だけを反映する方式も検討します。</p>
<p>移行に失敗した場合に旧システムへ戻す切り戻し計画も、原則として必要です。</p>
<p>切り替え作業を進めると、新環境で入力されたデータや外部システムへ送信した情報が発生し、単純には旧環境へ戻せなくなる時点があります。どの時点まで切り戻せるのかを明確にし、それ以降に問題が発生した場合の復旧方針も決めておかなければなりません。</p>
<p>切り替えに向けては、どの確認項目が未達なら切り戻すのか、何時までに判断するのかを事前に定めます。判断基準がないまま当日を迎えると、問題が起きた際に意思決定が遅れ、業務への影響を広げます。</p>
<p>テストの観点は後編で説明した内容と重なりますが、更改には特有の視点があります。</p>
<p>新規開発では、新しく定めた要件どおりに動くかという確認の比重が高くなります。更改のテストで軸になるのは、現行環境と新環境で同じ処理を流し、業務として同等の結果になるかを突き合わせる現新比較です。</p>
<p>日付、処理時刻、採番された番号など、意図的に結果が変わる部分については、あらかじめ差分として整理しておきます。</p>
<p>正常時の処理結果だけでなく、障害発生時の切り替え、バックアップからの復元、運用手順に沿った対応まで確認して、初めて本番利用へ進めます。</p>
<h2><span id="toc5">ステークホルダー：誰がプロジェクトを動かしているのか</span></h2>
<p>更改プロジェクトには、多くの組織が参加します。</p>
<p>プロジェクトに影響を与える人や組織、プロジェクトの結果から影響を受ける人や組織を、ステークホルダーと呼びます。</p>
<p>A銀行のプロジェクトでは、主に次のステークホルダーが関係します。</p>
<p><img decoding="async" class="aligncenter size-medium wp-image-2870" src="https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/b909b70d53103f15f2e82097d77c600d.jpg 1448w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>実際のプロジェクトでは、外部接続先、製品ベンダー、コンサルティング会社、監査部門などがさらに加わります。</p>
<p>ここで押さえてほしいのは、各担当が自分の作業を完了させても、プロジェクト全体が成功するとは限らないことです。</p>
<p>アプリケーション担当がプログラム修正を終えても、クラウド・基盤担当との認識が合っていなければ、外部システムへ接続できません。基盤担当がバックアップを設定しても、業務部門が必要とする保存期間を把握していなければ、業務要件を満たせません。</p>
<p>こうした組織間の隙間を埋めるのが、プロジェクトマネージャーの仕事です。</p>
<p>データ移行方式を一つ決める場合でも、業務部門からシステムを停止できる時間を確認し、アプリケーション担当から停止中の処理を確認します。基盤担当からはデータ転送に必要な時間を、運用担当からは切り替え後の監視体制を確認し、全体として成立する計画に組み上げます。</p>
<p>プロジェクトマネージャーは、すべての事項を自分で決裁する立場ではありません。</p>
<p>各分野の技術的な論点を理解し、未決定事項を放置せず、判断者を明確にして必要な判断を引き出し、決定事項をプロジェクト計画へ反映していく役割です。</p>
<p>大規模更改の成否は、この力量に大きく左右されます。</p>
<h2><span id="toc6">クラウドリフトで誤解しやすい3つのこと</span></h2>
<p>最後に、クラウドリフトについて現場でよく見る誤解を3つだけ挙げておきます。</p>
<h3><span id="toc7">運用はなくならない</span></h3>
<p>クラウドでは、物理サーバーやデータセンター設備の管理をクラウド事業者が担います。利用企業の責任がゼロになるわけではありません。</p>
<p>AWSは、クラウド事業者と利用者がそれぞれ管理する範囲を責任共有モデルとして整理しています。</p>
<p>今回のA銀行のように、EC2を中心として既存システムをリホストする場合、主な責任の境界は次のようになります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2884" src="https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/2026a089ac3abc9cbaf6e37f87c21171.jpg 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>AWSはデータセンター設備や物理サーバー、仮想化基盤などを管理します。利用者側には、データ、アクセス権限、ネットワーク設定、ゲストOS、アプリケーションなどの管理が残ります。</p>
<p>RDSのようなマネージドサービスを利用する場合は、OSやデータベース基盤の一部もAWSが管理するため、利用者との責任の境界が変わります。</p>
<p>クラウド事業者が基盤を安全に運用していても、利用者側が管理者権限を広く付与しすぎていれば、不正アクセスの危険は残ります。</p>
<h3><span id="toc8">移せば安くなるわけではない</span></h3>
<p>クラウドでは、サーバーの稼働時間、ストレージ、バックアップ、ログ、データ転送、監視、サポートなどに費用が発生します。</p>
<p>オンプレミスと同じ台数、同じ性能のサーバーを24時間動かすだけでは、期待したコスト削減にならないケースを私は何度も見てきました。</p>
<p>コスト最適化は、移行時に一度行えば終わる作業ではありません。稼働後も利用状況を確認し、過剰な性能、使われていない環境、不要なデータなどを継続的に見直します。</p>
<h3><span id="toc9">リフトだけではデジタルトランスフォーメーション（DX）にならない</span></h3>
<p>稼働場所を変えただけでは、業務や顧客価値の変革までは起きません。</p>
<p>クラウドリフトの価値は、老朽化設備への対応だけではなく、物理機器の調達や保守から離れ、将来クラウドに適した構成へ段階的に作り替えるための基盤を整えられることにあります。</p>
<p>その基盤を利用して、業務の自動化、データ活用、サービス改善、開発速度の向上などを実現することで、DXへつながります。</p>
<p>クラウドへの移行自体を目的にせず、クラウドを利用して何を改善するのかを先に決める必要があります。</p>
<h2><span id="toc10">システム更改とは、サービスを次の環境へ引き継ぐこと</span></h2>
<p>A銀行のプロジェクトでは、新しい業務機能をほとんど作りません。</p>
<p>それでも、現在のシステムを調査し、クラウド基盤を設計し、アプリケーションを対応させ、データを移行します。テストによって正しさを証明し、多数の関係者と切り替え日程や判断基準を調整します。</p>
<p>システム更改とは、古いサーバーを新しいサーバーへ交換するだけの作業ではありません。</p>
<p>現在提供しているサービスを、安全かつ確実に次の環境へ引き継ぐプロジェクトです。</p>
<p>システム開発がプログラミングだけではないことが、更改という実例を通じて見えてきたのではないでしょうか</p>
<p>プロジェクトを成功させるには、個別の技術に加えて、業務とシステムの関係を理解し、複数のステークホルダーをつなぎ、必要な判断を積み重ねる力が求められます。</p>
<p class="PDq2pG_selectionAnchorContainer" data-start="326" data-end="420">更改プロジェクトで発生する費用の内訳は、次の記事で解説しています。設計、開発、テスト、移行、プロジェクト管理、クラウド利用料、稼働後の継続費用まで、数億円の見積もりを例に整理しました。</p>
<p data-start="427" data-end="499"><a class="decorated-link" href="https://sys-univ.com/dev/base3/" target="_new" data-start="427" data-end="499">【システム開発費用の内訳】なぜ数億円かかるのか｜クラウド更改の見積もり構造</a></p>
<hr />
<p><strong>システム開発入門シリーズ</strong></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview/">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview-2/">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/base2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</title>
		<link>https://sys-univ.com/dev/system-dev-overview/</link>
					<comments>https://sys-univ.com/dev/system-dev-overview/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 19 Jun 2026 01:58:08 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2583</guid>

					<description><![CDATA[この記事は「SE・システム開発入門」2部作の前編です。 後編では、要件定義、設計、テスト、移行、運用保守まで、システム開発の流れを現場目線で解説しています。 後編はこちらです。 はじめに SEを目指す人の多くは、最初に「 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">この記事は「SE・システム開発入門」2部作の前編です。<br />
後編では、要件定義、設計、テスト、移行、運用保守まで、システム開発の流れを現場目線で解説しています。</p>


<p class="wp-block-paragraph">後編は<a href="https://sys-univ.com/dev/system-dev-overview-2/" target="_blank">こちら</a>です。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">SEを目指す人の多くは、最初に「まずはプログラミングを覚えないと」と考えます。</p>


<p class="wp-block-paragraph">もちろん、それは間違いではありません。</p>


<p class="wp-block-paragraph">Java、Python、JavaScript、SQLなどを理解できれば、アプリケーションがどう動いているのかをイメージしやすくなります。<br />
<br />
実際、プログラミングはシステム開発において重要なスキルです。</p>


<p class="wp-block-paragraph">ただし、SEの仕事はプログラミングだけでは終わりません。</p>


<p class="wp-block-paragraph">現場に入ると、コードを書く前後に考えることが、想像以上に多いことに気づきます。</p>


<p class="wp-block-paragraph">たとえば、Web画面に「申請する」というボタンを1つ作るだけでも、裏側では多くのことを考えています。</p>


<ul id="c08d6df4-ac47-42f3-a0b6-e280e323cdc4" class="wp-block-list">
	<li>誰が申請できるのか</li>


	<li>誰が承認するのか</li>


	<li>申請データはどこに保存するのか</li>


	<li>同時に多くの人がアクセスしても耐えられるのか</li>


	<li>サーバが1台壊れても業務を続けられるのか</li>


	<li>データはバックアップされているのか</li>


	<li>障害が起きたときに誰が検知するのか</li>


	<li>本番リリース時に旧システムからデータをどう移すのか</li>


	<li>個人情報や機密情報をどう守るのか</li>


	<li>本番稼働後、誰がどう運用するのか</li>
</ul>


<p class="wp-block-paragraph">利用者から見えるのは、画面やボタンや検索結果です。</p>


<p class="wp-block-paragraph">しかし、その裏側には、サーバ、データベース、ネットワーク、セキュリティ、監視、バックアップ、運用設計、移行設計など、非常に多くの要素があります。</p>


<p class="wp-block-paragraph">つまり、システム開発とは、単にプログラムを書く仕事ではありません。</p>


<p class="wp-block-paragraph"><strong>業務を動かす仕組みを、アプリケーションとシステム基盤の両方から作り上げる仕事です。</strong></p>


<p class="wp-block-paragraph">この記事では、これからSEを目指す人、初級SEとして働き始めた人、またはシステム開発の全体像がつかめずに悩んでいる人に向けて、システム開発の見方を整理します。</p>


<p class="wp-block-paragraph">一般的なアプリ開発の説明だけではなく、インフラエンジニア／システム基盤エンジニアの視点も交えながら説明します。</p>


<p class="wp-block-paragraph"><strong>なぜなら、実際のシステムは、機能が動くだけでは不十分だからです。</strong></p>


<p>&nbsp;</p>


<p class="wp-block-paragraph">システム開発とは、一言でいえば、<strong>業務上の目的を実現するための仕組みを作ること</strong>です。</p>


<p class="wp-block-paragraph">ここで重要なのは、ITやプログラミングそのものが目的ではないということです。<br />
企業がシステムを導入する理由は、もっと現実的です。</p>


<ul id="f7858d1e-5dee-4732-8564-7caf09c2b6fd" class="wp-block-list">
	<li>売上を増やしたい</li>


	<li>業務を効率化したい</li>


	<li>人手不足を補いたい</li>


	<li>ミスを減らしたい</li>


	<li>顧客対応を早くしたい</li>


	<li>情報漏えいを防ぎたい</li>


	<li>古いシステムを安全に入れ替えたい</li>


	<li>障害に強い仕組みにしたい</li>


	<li>将来の利用者増加に耐えられるようにしたい</li>
</ul>


<p class="wp-block-paragraph">つまり、システム開発の目的は、企業や組織の活動をよりよくすること<br />
です。<br />
<br />
たとえば、社内の物品購入申請を考えてみます。<br />
紙の申請書に記入し、上司にハンコをもらい、決裁者が承認し、担当部門が処理する。こうした業務があったとします。<br />
<br />
これをシステム化すると、次のようになります。</p>


<ul id="ab945367-6acb-4dbd-9290-3ad2863f3413" class="wp-block-list">
	<li>担当者がWeb画面から購入申請を登録する</li>


	<li>承認者にメールやチャットで通知が届く</li>


	<li>承認者がリンクから内容を確認する</li>


	<li>承認ボタンを押す</li>


	<li>承認履歴が記録される</li>


	<li>後から監査や確認ができる</li>
</ul>


<p class="wp-block-paragraph">ここまでは、よくある業務アプリケーションの説明です。<br />
しかし、インフラエンジニアの視点では、さらに裏側を見ます。<br />
<br />
この申請システムを本番で使うなら、次のようなことも考えなければなりません。</p>


<ul id="fdd01636-b3a3-4368-9b89-8a5187e7d5a0" class="wp-block-list">
	<li>何人が同時にアクセスするのか</li>


	<li>画面は何秒以内に表示されるべきか</li>


	<li>サーバが1台停止したら業務は止まるのか</li>


	<li>データベース障害時にどこまで復旧するのか</li>


	<li>承認履歴は何年間保存するのか</li>


	<li>夜間バッチは何時までに終わる必要があるのか</li>


	<li>ログはどこに出し、何日保存するのか</li>


	<li>監視アラートは誰に通知するのか</li>


	<li>バックアップはいつ取得し、復旧確認はするのか</li>


	<li>本番移行時に、旧システムの未承認データをどう扱うのか</li>
</ul>


<p class="wp-block-paragraph">これらは、利用者からは見えにくい部分です。<br />
しかし、この見えにくい部分が弱いと、システムは本番で使えません。<br />
<br />
画面がきれいでも、アクセス集中で遅くなる。<br />
機能が正しくても、サーバ障害で止まる。<br />
承認処理ができても、障害時に復旧できない。<br />
データが登録できても、バックアップから戻せない。<br />
運用手順がなければ、夜間障害で誰も対応できない。</p>


<p class="wp-block-paragraph">こうなると、システムとしては失敗です。</p>


<p class="wp-block-paragraph">だからこそ、システム開発では、機能だけでなく、<strong>非機能</strong>も重要になります。</p>


<h2 class="wp-block-heading"><span id="toc1">「機能が動く」と「本番で使える」は違う</span></h2>


<p class="wp-block-paragraph">初心者SEが最初に理解すべき大事なことがあります。<br />
それは、<strong>機能が動くことと、本番で使えることは違う</strong>ということです。<br />
<br />
たとえば、申請画面があり、申請ボタンを押すとデータが登録される。<br />
これは「機能が動く」状態です。</p>


<p class="wp-block-paragraph">しかし、本番で使えるかどうかは、さらに別の観点で確認する必要があります。</p>


<ul id="8818f900-3f83-4fad-b6cb-2d939d078bdf" class="wp-block-list">
	<li>1人が使うと動くが、1,000人が同時にアクセスしても動くのか</li>


	<li>画面表示に10秒かかっても業務上許されるのか</li>


	<li>DBサーバが停止した場合、何分で復旧できるのか</li>


	<li>障害発生時に、どのデータまで戻せるのか</li>


	<li>月末に申請が集中しても処理できるのか</li>


	<li>夜間バッチが朝の業務開始前に終わるのか</li>


	<li>セキュリティパッチ適用時にサービスを止める必要があるのか</li>


	<li>本番移行に失敗した場合、切り戻せるのか</li>
</ul>


<p class="wp-block-paragraph">こうした観点を考えるのが、システム基盤／インフラ領域の重要な仕事です。</p>


<p class="wp-block-paragraph">特に「1人が使うと動くが、1,000人が同時にアクセスしても同じように動くのか」という観点は、実際の現場では非常に重要です。</p>


<p class="wp-block-paragraph">たとえば、アプリケーションそのものは正常に動いていても、リリース直後に多数の端末やブラウザが一斉にアプリ資材をダウンロードし、配布元のWebサーバやネットワーク、メモリ、接続数を圧迫して業務影響が出ることがあります。<br />
<br />
最近であれば、SPAのJavaScriptファイル、Electron系アプリの更新資材、コンテナ環境でのイメージpull、CDNキャッシュ切れ後のオリジン集中などでも、似た構図は起こり得ます。</p>


<p class="wp-block-paragraph">通常の業務画面をJMeterで試験して問題がなくても、リリース直後の資材配布、リトライ、同時接続、キャッシュ設計、サーバ設定まで見ていなければ、本番で初めて問題が出ることがあります。</p>


<p class="wp-block-paragraph">つまり、性能問題は単に「画面が速いか遅いか」だけではありません。<br />
<br />
<strong>機能として動くことと、本番運用で耐えられることは違います。</strong></p>


<p class="wp-block-paragraph">このあたりは、「性能・サイジング」「非機能テスト」の回で、実際に現場で起きたトラブルの考え方も交えながら詳しく解説します。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<h2 class="wp-block-heading"><span id="toc2">非機能とは何か</span></h2>


<p class="wp-block-paragraph">ここで、「非機能」という言葉について簡単に説明します。<br />
非機能とは、画面やボタンのように利用者から直接見える機能ではありません。<br />
<br />
しかし、システムを本番で安心して使うために必要な品質のことです。<br />
初心者向けに言えば、<strong>非機能とは、そのシステムが本番でちゃんと使えるかを決める条件です。</strong><br />
<br />
たとえば、次のようなものが非機能に含まれます。</p>


<ul id="01855838-359b-4b50-a8ea-0589b15d68a4" class="wp-block-list">
	<li>処理速度</li>


	<li>止まりにくさ</li>


	<li>障害時の復旧</li>


	<li>バックアップ</li>


	<li>監視</li>


	<li>セキュリティ</li>


	<li>運用しやすさ</li>


	<li>将来の拡張性</li>


	<li>移行のしやすさ</li>
</ul>


<p class="wp-block-paragraph">利用者は、普段こうしたことをあまり意識しません。<br />
しかし、本番でトラブルが起きると一気に表面化します。<br />
<br />
「画面が遅い」<br />
「システムが止まった」<br />
「障害に気づくのが遅れた」<br />
「バックアップから戻せない」<br />
「移行したらデータが合わない」<br />
「運用担当が手順書を見ても対応できない」</p>


<p class="wp-block-paragraph">こうした問題は、プログラムの不具合だけで起きるわけではありません。</p>


<p class="wp-block-paragraph">システム基盤、運用設計、移行設計、非機能要件の詰めが甘いことで起きることも多いです。</p>


<h2 class="wp-block-heading"><span id="toc3">SEの仕事はプログラミングだけではない</span></h2>


<p class="wp-block-paragraph">SEという言葉は、とても広く使われています。</p>


<p class="wp-block-paragraph">現場によっては、プログラマーに近い仕事をする人もいます。<br />
お客様と要件を詰める人もいます。<br />
プロジェクト全体を管理する人もいます。<br />
サーバやネットワークを設計する人もいます。<br />
データベースを専門にする人もいます。<br />
運用設計や監視設計を担当する人もいます。</p>


<p class="wp-block-paragraph">つまり、SEといっても、役割はかなり幅広いです。<br />
システム開発には、たとえば次のような役割があります。</p>


<ul id="bfad02d3-b17a-4877-96ce-0203cb55067d" class="wp-block-list">
	<li>業務要件を整理する人</li>


	<li>画面や機能を設計する人</li>


	<li>プログラムを書く人</li>


	<li>データベースを設計する人</li>


	<li>サーバ構成を設計する人</li>


	<li>ネットワークを設計する人</li>


	<li>監視やバックアップを設計する人</li>


	<li>性能テストを計画する人</li>


	<li>障害復旧テストを行う人</li>


	<li>本番移行を計画する人</li>


	<li>稼働後の運用を設計する人</li>
</ul>


<p class="wp-block-paragraph">この中で、プログラミングは重要な一部です。</p>


<p class="wp-block-paragraph">ただし、システム開発全体で見ると、プログラミング以外の仕事も非常に多いです。特に企業向けの業務システムでは、「作ったら終わり」ではありません。<br />
<br />
何年も使われます。<br />
利用者が増えます。<br />
データも増えます。<br />
法律や業務ルールも変わります。<br />
障害対応も発生します。</p>


<p class="wp-block-paragraph">セキュリティ対策も継続的に必要です。<br />
そのため、システム開発では、最初から運用や保守まで見据えて設計する必要があります。</p>


<h2 class="wp-block-heading"><span id="toc4">インフラエンジニア視点で見るシステム開発</span></h2>


<p class="wp-block-paragraph">インフラエンジニア、またはシステム基盤エンジニアは、システムの土台を作る役割です。</p>


<p class="wp-block-paragraph">ただし、ここでいう土台とは、単にサーバを用意することではありません。<br />
本番でシステムを安定して動かすために、次のようなことを考えます。</p>


<ul id="8ca26648-c069-4eb4-a091-de59161f3360" class="wp-block-list">
	<li>可用性：障害が起きても使い続けられるか</li>


	<li>信頼性：壊れにくく、安定して動くか</li>


	<li>性能：必要な処理速度を満たせるか</li>


	<li>拡張性：利用者やデータが増えても対応できるか</li>


	<li>運用性：監視、バックアップ、障害対応ができるか</li>


	<li>保守性：変更やメンテナンスがしやすいか</li>


	<li>移行性：旧システムから安全に切り替えられるか</li>


	<li>セキュリティ：不正アクセスや情報漏えいを防げるか</li>
</ul>


<p class="wp-block-paragraph">お客様は、画面や機能だけを求めているわけではありません。<br />
本当は、こう思っています。<br />
<br />
「業務時間中は止まらないでほしい」<br />
「遅くて使えないのは困る」<br />
「障害が起きたら早く復旧してほしい」<br />
「データは失わないでほしい」<br />
「個人情報は守ってほしい」<br />
「運用担当者が対応できる仕組みにしてほしい」<br />
「将来、利用者が増えても使い続けたい」<br />
<br />
これらは、すべてシステム基盤の設計に関係します。<br />
だからこそ、システム開発を理解するには、アプリケーションだけでなく、インフラ／基盤の視点が必要です。</p>


<h2 class="wp-block-heading"><span id="toc5">システム開発の全体工程</span></h2>


<p class="wp-block-paragraph">ここからは、システム開発が現場でどのような順番で進むのかを見ていきます。システム開発は、かなり単純化すると次の流れで進みます。<br />
<br />
プロジェクトごとに呼び方や細かい進め方は違いますが、まずは<br />
<strong>「決める → 設計する → 作る → 確認する → 切り替える → 改善する」</strong><br />
という流れをつかめばOKです。</p>


<figure id="4e2f5f87-307a-4366-b9e9-1a2f477502a2" class="wp-block-image"><a href="https://assets.st-note.com/img/1779076160-1y8O7jpUmvHZz4VIMwAbB0Le.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779076160-1y8O7jpUmvHZz4VIMwAbB0Le.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">この図を見ると分かる通り、システム開発は「プログラミング（コーディングとコンポーネントの開発）」だけで完結しません。<br />
<br />
多くの人は、システム開発というと「プログラミング」を思い浮かべます。</p>


<p class="wp-block-paragraph">もちろん、プログラミングは重要です。</p>


<p class="wp-block-paragraph">しかし実際には、その前に要件定義や設計があり、その後にテスト、移行、運用保守まで続きます。</p>


<p class="wp-block-paragraph">つまり、<strong>システム開発とは、単にコードを書く仕事ではありません。</strong></p>


<p class="wp-block-paragraph"><strong>業務を動かす仕組みを、作って終わりではなく、本番で安定して使える状態まで持っていく仕事</strong>です。</p>


<p class="wp-block-paragraph">この全体像を最初に理解しておくと、SEの仕事がかなり立体的に見えるようになります。</p>


<p class="wp-block-paragraph">業務系システム開発の工程名に置き換えると、次のようになります。</p>


<figure id="2fbaeb80-cfc9-4187-b432-c100e8086ce5" class="wp-block-image"><a href="https://assets.st-note.com/img/1779076159-n2qTjMCRgbpshQNa7Fkc9K01.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779076159-n2qTjMCRgbpshQNa7Fkc9K01.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">初心者SEは、まずこの流れを頭に入れておくとよいです。</p>


<p class="wp-block-paragraph">現場で資料名や会議名を聞いたときに、</p>


<p class="wp-block-paragraph">「ああ、これは基本設計の話だな」<br />
「これは基盤テストの話だな」<br />
「これは移行工程の話だな」</p>


<p class="wp-block-paragraph">と位置づけられるだけで、かなり理解しやすくなります。</p>


<p class="wp-block-paragraph">システム開発では、いま自分がどの工程にいるのかを意識することが大切です。</p>


<p class="wp-block-paragraph">要件定義の段階で話すべきこと。<br />
設計の段階で決めるべきこと。<br />
テストの段階で確認すべきこと。<br />
移行の段階で慎重に見るべきこと。<br />
運用保守で継続的に確認すべきこと。</p>


<p class="wp-block-paragraph">それぞれの工程には役割があります。</p>


<p class="wp-block-paragraph">この工程のつながりが見えるようになると、SEの仕事はかなり分かりやすくなります。</p>


<p class="wp-block-paragraph">そして、<strong>システム開発はアプリ開発と基盤構築が並行して進みます。</strong></p>


<p class="wp-block-paragraph">システム開発は、アプリケーション開発だけで進むわけではありません。<br />
画面や機能を作るアプリケーション開発と並行して、システム基盤の設計・構築・テストも進みます。<br />
たとえば、申請ワークフローシステムを作る場合、アプリ側では次のようなことを考えます。</p>


<ul id="5f2a7b29-ea8c-49bf-8706-b2dfb58f8af9" class="wp-block-list">
	<li>申請登録画面をどう作るか</li>


	<li>承認ルートをどう判定するか</li>


	<li>差戻しや再申請をどう扱うか</li>


	<li>承認履歴をどう表示するか</li>


	<li>メール通知をどう送るか</li>
</ul>


<p class="wp-block-paragraph">一方、基盤側では次のようなことを考えます。</p>


<ul id="383a7828-c563-448e-a0cc-23f1682fe0f4" class="wp-block-list">
	<li>Web/AP/DBサーバをどう構成するか</li>


	<li>サーバを冗長化するか</li>


	<li>ロードバランサを使うか</li>


	<li>DBをActive-Standby構成にするか</li>


	<li>バックアップを何時に取得するか</li>


	<li>障害時に何分以内で復旧するか</li>


	<li>ログをどこに出すか</li>


	<li>監視アラートを誰に通知するか</li>


	<li>セキュリティパッチをどう適用するか</li>


	<li>本番移行時にどの順番で切り替えるか</li>
</ul>


<p class="wp-block-paragraph">利用者から見えるのは、主にアプリケーションです。<br />
しかし、システムが本番で安定して動くかどうかは、基盤設計に大きく左右されます。<br />
<br />
ここを理解していないと、システム開発を「画面と機能を作る仕事」だけだと誤解してしまいます。<br />
<br />
<strong>実際には、システム開発は、アプリケーションとシステム基盤を組み合わせて、業務を動かす仕組みを作る仕事です。</strong></p>


<p class="wp-block-paragraph">ここまでで、システム開発が「プログラミングだけでは終わらない」ことは、かなり見えてきたと思います。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">ここから先が、システム開発の本当の現場です。</p>


<p class="wp-block-paragraph">RFPの曖昧な要件をどう具体化するのか。ログ保管期間ひとつで、なぜストレージコストが跳ねるのか。機能は動いているのに、なぜ運用テストで止まるのか。移行データに「存在しない日付」が入っていたら、どう扱うのか。</p>


<p class="wp-block-paragraph">こうした話は、教科書的な説明だけではなかなか見えてきません。</p>


<p class="wp-block-paragraph">後編では、各工程で初級SEがどこを見ればよいのか、現場の落とし穴を具体的に整理しています。</p>


<p class="wp-block-paragraph"><a href="https://note.com/k_s7906/n/nfe40a88bfa53">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></p>


<p class="wp-block-paragraph">&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/system-dev-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【システム開発費用の内訳】なぜ数億円かかるのか｜クラウド更改の見積もり構造</title>
		<link>https://sys-univ.com/dev/base3/</link>
					<comments>https://sys-univ.com/dev/base3/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Tue, 04 Jan 2022 03:00:57 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=152</guid>

					<description><![CDATA[はじめに システム開発の見積書を見ると、総額が数億円になっていることがあります。 「プログラムを修正するだけなのに、なぜこれほど高いのか」 システム開発に関わった経験が少ないと、こう感じるかもしれません。 システム更改で [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="8b06c868-be50-4bce-988b-f1b03d1da23f" data-pm-slice="0 0 []"><strong>はじめに</strong></p>
<p id="fc1a1148-5a45-4f39-9c07-d92392b69902">システム開発の見積書を見ると、総額が数億円になっていることがあります。</p>
<p id="762e4280-ff50-4e9a-89fc-3494f8bbe36c">「プログラムを修正するだけなのに、なぜこれほど高いのか」</p>
<p id="ac2e9a37-85b1-4b86-9866-0eac2c5eac55">システム開発に関わった経験が少ないと、こう感じるかもしれません。</p>
<p id="79a4611e-2472-4bd9-9440-433c11b2e20d">システム更改で必要になるのは、プログラムの設計や製造だけではありません。現行システムの調査、クラウド基盤の構築、データ移行、テスト、切替、プロジェクト管理など、多くの作業が発生します。</p>
<p id="a3742768-0bd6-469d-b147-cb5ea68e84b8">本記事では、架空のA銀行が実施するクラウド更改プロジェクトを例に、数億円の見積もりの内訳と、金額の妥当性を確認するための見方を解説します。</p>
<p id="aac18691-1517-44f2-a2ec-5b3b95676777">A銀行のクラウド更改で行う仕事の全体像は、次の記事で解説しています。</p>
<a href="https://sys-univ.com/dev/base2/" title="【システム開発とは何か】システム更改で学ぶ、プログラミングだけではない仕事の全体像" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/01/661447202f61355a29b111a9031b127f.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【システム開発とは何か】システム更改で学ぶ、プログラミングだけではない仕事の全体像</div><div class="blogcard-snippet internal-blogcard-snippet">システム開発はプログラミングだけではありません。A銀行のクラウドリフトを例に、現行調査、基盤設計、データ移行、テスト、運用引継ぎ、ステークホルダーや責任共有モデルまで、初心者向けに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.17</div></div></div></div></a>
<h2 id="a4d68e73-d9a5-4f84-96fa-2c927e848940"><span id="toc1">見積金額には何が含まれているのか</span></h2>
<p id="87981256-0b4b-4672-927f-1a7478306e90">システム更改の費用を理解するには、最初に「何を含む金額なのか」を確認する必要があります。</p>
<p id="034b560b-9273-4494-8219-513b9b542d8c">システムに関係する費用は、大きく次の3つに分けられます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2924" src="https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/bc871136f62e665041d17f265312ac5e.jpg 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="f8c007af-32b0-45a6-b0e5-f7942a367fe6" data-pm-slice="1 1 []">本記事では、ベンダーへ発注する①更改プロジェクトの初期費用と、稼働後に継続して発生する②本番稼働後の継続費用の両方を扱います。</p>
<p data-pm-slice="1 1 []">発注元の社員がプロジェクトへ参加する人件費や、利用部門への説明、マニュアル整備、教育などの③発注元の内部費用は対象外とします。</p>
<p id="9d925b7f-c6d6-44fd-8705-a3001bb55df5">見積金額だけを見るのではなく、対象範囲を確認することが重要です。</p>
<h2 id="a261f782-5e7e-495d-b7a7-5e590d04c917"><span id="toc2">開発期間中にもクラウド利用料が発生する</span></h2>
<p id="f4459794-1c82-46b6-9ea7-72a642147e66">今回のプロジェクト期間は1年間とします。</p>
<p id="d85615ee-7ddb-419d-ba1d-11f2f6d7be82">この1年間に利用する開発環境、テスト環境、新しい本番環境のAWS利用料は、更改プロジェクト費用に含めます。</p>
<p id="e647762b-08f6-4eb8-b435-71e8dc28eaf6">新しい本番環境は、サービス開始日に初めて作るわけではありません。事前に構築し、総合テスト、性能テスト、障害テスト、運用テスト、移行リハーサルなどで使用します。</p>
<p id="ef2f7e09-077e-48d3-853c-8f51a5cc3ac6">稼働後の運用期間を5年間とすると、新本番環境を利用する期間は実質的に約6年間になる場合があります。</p>
<ul id="62738695-6dca-4930-b53f-3ed51a688f92">
<li>
<p id="993a703f-f754-411c-912f-265915bf7a49">更改期間の1年間：更改プロジェクト費用</p>
</li>
<li>
<p id="dd4fab6f-31ed-4d1e-a12f-361bdf142610">稼働後の5年間：継続的な運用費用</p>
</li>
</ul>
<p id="171838a7-9704-44f9-a8c8-71b9653b9c7e">AWS利用料は、プロジェクト開始時から本番規模の金額が一律に発生するとは限りません。環境の構築時期、サーバー台数、稼働時間、テスト工程に応じて段階的に増えていきます。</p>
<p id="58dd72d3-4873-44bb-9629-f820e8906d02">開発環境やテスト環境も、稼働後にすべて廃止するとは限りません。規模を縮小し、保守開発用の環境として残す場合は、稼働後のAWS利用料へ引き継がれます。</p>
<p id="25a71f1a-81ff-4acd-8132-97dd47c506a8">見積書では、どの環境を、いつからいつまで、誰の契約で利用するのかを確認する必要があります。</p>
<h2 id="86b44cab-f51d-44a9-b3bb-2fa0ecdcc3fe"><span id="toc3">システム開発費用を構成する3つの要素</span></h2>
<p id="56819f96-8d0f-4e31-ab26-9e74fa44e915">システム更改では、プログラムだけでなく、設計書、テスト仕様書、移行計画書、運用手順書など、多くの成果物を作成します。</p>
<p id="f899662f-5814-4c3d-9e0e-72e6cb29ad39">システム開発費用は、こうした成果物を作成する人件費に加え、環境利用料や製品費など、主に次の3つの要素で構成されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2920" src="https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2-500x333.jpg" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2-500x333.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2-800x533.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2-300x200.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2-768x512.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/831a0ff681d277b4d9737a31acb1f6e2.jpg 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<ol id="e245732b-c9a9-4d24-8ad7-a855a5b53436" data-start="1">
<li>
<p id="6d65bba3-bd4b-467a-981b-50dad4b03c9c">人が作業するための費用</p>
</li>
<li>
<p id="e1d1917b-5394-4cbc-9575-cb1f8736c2ba">プロジェクト期間中の環境利用料</p>
</li>
<li>
<p id="56115108-98af-4b36-b64f-bbee7031791a">製品、回線、外部サービスの費用</p>
</li>
</ol>
<p id="f298a9c1-679d-4097-8531-437b5855f754">ベンダーは、これらの費用を算定する際に、契約範囲内で発生し得る不確定要素も見積もりへ織り込みます。</p>
<p id="1faa34fa-7f5d-4666-bf10-e744d4eceddc"><strong>1．人が作業するための費用</strong></p>
<p id="0f13e7ee-e10a-4fce-b474-f744bd6b1e56">システム開発では、作業量を人月で表します。</p>
<p id="402bb318-616c-4422-9355-b21debc764e0">1人月は、1人が1か月働く作業量です。</p>
<p id="373943f4-6d32-4c45-9d01-fd1591e959c5">見積金額は、作業量に人月単価を掛けて計算します。</p>
<figure id="a66e6266-4fd6-4ea8-b0cf-75a650d2ce09">
<blockquote>
<p id="f4de456b-8814-41ef-b17c-02dfa281ba8d">作業費用 ＝ 人月数 × 人月単価</p>
</blockquote><figcaption></figcaption></figure>
<p id="af16c88a-3c17-4a24-9059-25de8cfdb1b4">人月単価は、担当者の給与そのものではありません。</p>
<p id="a6083272-f787-406d-b1c6-564699df0785">企業が技術者を雇用し、継続的にサービスを提供するには、給与以外にも次のような費用が必要です。</p>
<ul id="9a6e7ac6-d71d-4c65-bb90-e28bc0f27a6c">
<li>
<p id="a76dbec2-dfc2-4063-b611-7db8ceadba33">社会保険料や福利厚生費</p>
</li>
<li>
<p id="1385a620-109b-477b-a454-3c3005e17baa">採用費や教育費</p>
</li>
<li>
<p id="d3a64fb9-dee9-469a-80b4-299210604d17">オフィスや業務設備の費用</p>
</li>
<li>
<p id="46527783-94de-47b1-8596-fe09b613c0b7">管理部門や営業部門の費用</p>
</li>
<li>
<p id="b8afa02d-77a1-46b1-8933-b541d6d98090">プロジェクト管理費</p>
</li>
<li>
<p id="8ae1f098-ab2e-45d1-ad9e-8fb115079b88">会社として確保する利益</p>
</li>
</ul>
<p id="22a3d000-f26b-4ed1-9bf2-3961e141c9a5">月130万円の人月単価であっても、担当者本人が月130万円を受け取っているわけではありません。</p>
<p id="3ac31a7e-2d29-4dc1-8ac4-f867ae631045"><strong>2．プロジェクト期間中の環境利用料</strong></p>
<p id="eb0cbd2e-55a0-4b5b-a6ee-33e9d4fe9cc0">クラウド更改では、開発環境、テスト環境、新本番環境などのAWS利用料が発生します。</p>
<p id="fb5523f3-23e6-4174-8107-99db6835d117">サーバーだけでなく、ストレージ、データベース、バックアップ、監視、ネットワーク通信なども費用の対象です。</p>
<p id="97989951-834e-422d-8642-63a29decf8a6">利用する環境数やサーバー台数が増えれば、利用料も増加します。</p>
<p id="5d7ef94d-0b5b-4aa2-a779-f28a9b005f39"><strong>3．製品、回線、外部サービスの費用</strong></p>
<p id="c3d4efa7-deec-405b-a610-3144ace8ed42">システムでは、AWS以外にも各種製品やサービスを利用します。</p>
<ul id="d8c35fce-67a6-4267-b133-2cf688722e7c">
<li>
<p id="071acc50-d489-4323-be31-7c9215b2094d">データベース製品</p>
</li>
<li>
<p id="a2b3906c-90e9-48ff-8a90-bf3a1856acbb">監視製品</p>
</li>
<li>
<p id="bc015d6b-f454-45b8-a7ad-8890ea6540f5">ジョブ管理製品</p>
</li>
<li>
<p id="a2e8852f-1132-4209-a666-1dc5b8ee1098">セキュリティ製品</p>
</li>
<li>
<p id="8061a916-254a-42d6-8ff0-a251a4e257b4">専用回線</p>
</li>
<li>
<p id="0f44dab8-d7bf-4f5f-83e8-0ce4d509cb8b">外部サービス接続</p>
</li>
<li>
<p id="9dd42a18-2666-4f7c-84e9-f2cd17b1bbff">証明書</p>
</li>
<li>
<p id="fe707821-7208-4fa2-973b-341a90616569">技術サポート</p>
</li>
</ul>
<p id="4a68db3b-f244-4fb7-b2a0-3300059fdba3">製品によっては、旧環境と新環境を並行稼働させる期間に、両方のライセンスが必要になることがあります。</p>
<p id="8c17937c-aee5-477f-9a81-908f0ecd6fc1">Oracle Databaseなどのライセンスは、製品のエディション、構成、契約内容、利用方法によって扱いが異なります。移行期間中に追加契約が必要かどうかは、契約条件を個別に確認します。</p>
<p id="366750d3-0182-4bca-ba48-333aafbee934"><strong>見積もりに織り込まれるリスク分</strong></p>
<p id="404c7692-34b4-475c-95d9-dd27a089139d">プロジェクト開始前に、すべての問題を正確に把握することは困難です。</p>
<p id="dcc35510-dd0b-4225-9fd6-e8e1d33a4443">現行システムの資料が不足している、クラウド化に伴って古いプログラムがそのままでは動かない箇所が想定より多い、データ品質に問題があるといった事象が発生する可能性があります。</p>
<p id="e1dc923f-3eed-4098-84bb-a6e65177d6b3">ベンダーは、契約範囲内で発生し得る不確定要素を見込み、各作業の工数やプロジェクト管理費などへリスク分を織り込むことがあります。</p>
<p id="e1f64d26-1f2b-4026-a389-e96dd4a53b11">見積もり漏れ、生産性不足、契約範囲内で発生した追加対応などを、ベンダー側で処理するための内部的な費用です。</p>
<p id="eefbfe8a-781c-4c46-88a3-c510f7c5df99">要件追加や仕様変更によって契約外の作業が必要になった場合は、リスク分で吸収する話ではありません。作業内容と影響を整理し、追加見積もりや変更契約として扱います。</p>
<h2 id="585d250f-7f16-4721-8c31-35cf059ed3a0"><span id="toc4">3つの要素を費用項目へ細分化する</span></h2>
<p id="043ab6e6-5b52-4b8c-ba53-d4245c42aa7c">先ほど整理した3つの要素を、A銀行のクラウド更改プロジェクトで発生する費用項目へ細分化すると、次のような見積もりになります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2930" src="https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583-500x333.jpg" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583-500x333.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583-800x533.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583-300x200.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583-768x512.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/4cb2f50350cd2694c33d882f3203d583.jpg 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="34007a9b-84eb-4905-9f09-5cb6c891c54e">3億円のうち、2億5,500万円は、人が現行調査、設計、構築、改修、移行、テスト、引継ぎを行うための費用です。全体の85％を占めています。</p>
<p id="349fed43-7ccf-4f52-bc34-65f91de286c8">残る費用は、プロジェクト期間中のAWS利用料と、製品、回線、外部サービスの費用です。各項目の見積金額には、契約範囲内で発生し得る不確定要素も織り込まれています。</p>
<p id="e448337f-36e0-49ce-99be-6bf8a76ba4da">この見積もりでは、アプリケーション対応費は5,000万円です。</p>
<p id="4b7bf1cd-32dc-4cba-98ab-cc6da4ed9885">全体の約17％に当たります。</p>
<p id="7603690f-1d2b-4c35-b5d0-8166d2128150">残りの約83％は、基盤、テスト、移行、管理、環境利用料、製品費、運用引継ぎなどです。</p>
<p id="1cc662fc-2068-4671-9c5a-f0c0fff14ced">システム開発費用の大部分が、プログラム製造以外の作業に使われていることが分かります。</p>
<h2 id="00bf5959-6b90-4189-a8cd-19bb6add2774"><span id="toc5">アプリケーション担当者は何人いるのか</span></h2>
<p id="615ee313-cf84-4cea-9107-f94b6bbe3cf5">アプリケーション対応費5,000万円を、人月単価130万円で計算します。</p>
<figure id="5c7e5685-fb5c-4c18-8b0d-5e697e9486b6">
<blockquote>
<p id="7594b353-68dd-4c20-820d-004008d1df49">5,000万円 ÷ 130万円 ＝ 約38人月</p>
</blockquote><figcaption></figcaption></figure>
<p id="0e9a6bae-44e5-4fc7-a2c1-6b15f70be0f5">プロジェクト期間を12か月とすると、1か月当たりの平均要員数は次のようになります。</p>
<figure id="cca960db-a841-4a2f-a0dc-bf79eb427064">
<blockquote>
<p id="3cefc552-1a9a-4fbc-b390-4ef55f0e6c58">38人月 ÷ 12か月 ＝ 約3.2人</p>
</blockquote><figcaption></figcaption></figure>
<p id="d7f5a040-cfb1-4706-b97d-354d6194c3e0">平均すると、アプリケーション担当者は3人程度です。</p>
<p id="7c9b40e5-1206-419d-a9bc-c2dfe53769f2">ここでいう平均3.2人は、プロジェクト期間中に常に3人程度が作業するという意味ではありません。現行調査や設計の時期は少人数で進め、プログラム改修や単体テストの時期に要員を増やし、作業の完了に合わせて減らしていきます。</p>
<p id="d11d5cd8-8a97-4d89-9eb2-f8e403e8bb87">例として、38人月を次のように配置します。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2927" src="https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/6eb3be4920369fb911751be9fe001b85.jpg 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="c19584a6-3837-41c4-87c3-de77c419fc23">この表を月別のグラフにすると、要員数が多い時期と少ない時期を把握できます。このような資料を、要員山積み表や要員山積み計画と呼びます。</p>
<figure id="6fda795b-eacc-46fc-990f-363a9e26e799"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2931" src="https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a-1536x1024.png 1536w, https://sys-univ.com/wp-content/uploads/2022/01/033258d5799e7e4a101a0fd36b64c43a.png 1800w" sizes="auto, (max-width: 500px) 100vw, 500px" /></figure>
<p id="94f3b152-1186-4dcc-b7c4-99b234d599e0">要員山積み計画は、プロジェクト内部の進捗管理だけに使う資料ではありません。</p>
<p id="1fd74a8d-565e-4243-83b9-b5fd0152b85d">すべての技術者をベンダーが自社内で確保できるとは限りません。協力会社へ作業を委託する場合は、この計画を基に必要な人数、スキル、参画時期、離任時期を調整します。</p>
<p id="5f73fa2f-8411-4dcc-967c-7a0e50eeddd7">設計工程には、業務と現行システムを理解した技術者が必要です。改修工程では、対象言語やフレームワークの経験者を確保します。テスト工程では、検証や障害分析を担当できる技術者が求められます。</p>
<p id="86f98c4e-dcd9-4fb6-96be-051e78f5c4e2">単に「3人を確保する」のではなく、どの工程に、どのスキルを持つ要員を、何人配置するのかを計画します。</p>
<p id="20cf977f-bce5-400d-af7f-354c5cd339f0">3億円のプロジェクトと聞くと、数十人のプログラマーが1年間開発している姿を想像するかもしれません。実際には、アプリケーション改修を担当する人数は限られ、基盤、移行、テスト、運用、管理などの担当者が工程ごとに参加します。</p>
<p id="2d620595-4eec-4832-9383-ec025fba34d6">アプリケーション対応費には、プログラム製造だけでなく、影響調査、設計、非互換箇所の修正、単体テストなども含まれます。純粋なコーディングに使われる工数は、38人月より少なくなります。</p>
<p id="4a953a7f-4119-41d3-b66d-3b1e369f6f1e">基盤、移行、テスト、運用、管理など、プログラミング以外の仕事を含む全体像は、冒頭で紹介した記事で詳しく解説しています。</p>
<h2 id="9ddce7b4-f799-482e-af97-b628285239c3" data-pm-slice="1 1 []"><span id="toc6">稼働後も継続的な費用がかかる</span></h2>
<p id="ce581911-d4b8-49c7-a35f-7c8fa0f782d3">更改プロジェクトが完了しても、システムに関する支払いが終わるわけではありません。</p>
<p id="6a273147-7e25-450b-b0a6-762866a72abc">稼働後は、本番環境を動かすためのクラウド利用料に加え、監視、障害対応、問い合わせ対応、製品保守、パッチ適用、機能改善などの費用が継続的に発生します。</p>
<p id="cd491c24-5034-4f3b-8fc2-0a89e718e98a">主な費用と作業内容は、次のとおりです。</p>
<p id="f4f212e6-76a6-46d9-ac80-e082bca81c2d"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2935" src="https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2-500x354.jpg" alt="" width="500" height="354" srcset="https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2-500x354.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2-800x566.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2-300x212.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2-768x543.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/899d2728183ab1b81fc27a08f1881ff2.jpg 1491w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="403fd372-7453-4b61-a210-d00a432a3390">運用保守費は、障害が発生したときだけ支払う費用ではありません。</p>
<p id="524a18de-4992-4492-b6dc-f6e915220f20">24時間365日の対応を求める場合は、監視担当者が異常を検知し、一次切り分けを行ったうえで、必要に応じてアプリケーションや基盤を担当する技術者へ連絡します。実際の体制は、複数名による当番制や、監視部門から開発ベンダーへのエスカレーションで構成されます。</p>
<p id="1c3c36b0-e2e7-4e16-bfd1-7bc46f5ba974">障害が発生していない時間も、連絡を受けられる体制を維持しなければなりません。開発ベンダーの保守要員1名分を毎月確保する契約であれば、人月単価130万円として年間1,560万円になります。</p>
<p id="dbfcabd6-ee44-4892-9048-33adc752eb85">月次報告が契約に含まれる場合は、監視結果、障害件数、問い合わせ状況、作業実績、未解決課題、翌月予定などを集計し、報告書を作成します。障害が発生しなかった月にも、監視、定期確認、報告、会議などの作業が発生します。</p>
<p id="725951ab-9b21-4731-953d-e2e12ee50e01">パッチ対応も、メーカーから提供された修正プログラムを、そのまま本番環境へ適用する作業ではありません。</p>
<p id="ceb970ed-d645-4f18-b096-a7c4f0fe3a3d">脆弱性や障害の内容を確認し、適用の必要性と緊急度を判断します。検証環境へ事前に適用し、アプリケーションや運用機能への影響を確認した後、本番作業の手順、停止時間、切り戻し方法を整理します。</p>
<p id="513a85b6-deab-4793-a727-773e311205c8">メジャーバージョンアップでは、非互換機能の調査、アプリケーション改修、総合テストが必要になることもあります。通常の運用保守契約へ含めず、別プロジェクトとして見積もる場合もあります。</p>
<p id="0911cddf-9c4c-4eac-97a9-76ec149ace97"><strong>5年間の継続費用を考える</strong></p>
<p id="ec316eab-7900-4c73-b8f5-db5e08e78d25" data-pm-slice="1 1 []">稼働後の費用は、システムの規模、構成、対応時間、保守範囲によって大きく変わります。</p>
<p id="6a8c835a-138f-4941-a8a1-711ca9da2a6b">年間費用に一律の相場はありません。ここでは規模感をつかむための説明用モデルとして、今回の更改プロジェクト費用3億円に対し、年間10％の継続費用が発生すると仮定します。</p>
<p id="bdf3fc6d-7202-4849-969a-d686118dc5be">年間の継続費用は3,000万円です。5年間では1億5,000万円となり、初期の更改プロジェクト費用3億円と合わせると、<strong>更改開始から稼働後5年間までにかかる総費用は4億5,000万円</strong>になります。</p>
<p id="035ff541-858b-40ec-bf0c-3b166ec85c86">更改費用だけを見れば3億円ですが、5年間の運用まで含めると、さらにその半分に当たる1億5,000万円が必要です。システムの予算は、構築時の金額だけではなく、稼働後に発生する費用も含めて考えなければなりません。</p>
<p id="a928dcce-5cdb-4ab9-8988-5087a1fcc879"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2938" src="https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/01/c9856d982487b20645c51ffa7490793d.jpg 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="c39c57b3-c599-482a-841d-f2399011059c">年間3,000万円のうち、開発ベンダーの保守要員1名分を毎月確保すると、年間1,560万円です。試算では、残る1,440万円、月平均120万円の中で、AWS利用料、監視、製品保守、回線、外部サービス、パッチ対応などを賄うことになります。</p>
<p id="8206a371-d15b-43e4-9bac-ce364c2e324b">この仮定では、保守要員だけで年間費用の半分を占めます。クラウド利用料や製品保守まで含めると、年間10％では不足する規模のシステムも十分にあり得ます。</p>
<p id="8db1dfe6-a478-4460-a4b4-884da79e5ca3">この金額は、一般的な相場を示すものではありません。24時間365日の対応が不要なシステムや、問い合わせ件数が少ないシステムでは費用を抑えられます。高い可用性や短い復旧時間が求められ、外部接続や対象製品が多いシステムでは、年間10％を超えることもあります。</p>
<p>オンプレミスのメーカー製品では、アップグレード権などを含む保守契約が製品価格の一定割合で設定されることがあります。クラウド更改では、そこへAWS利用料、運用監視、開発ベンダーの保守体制などが加わります。外貨建てで契約する製品やサービスでは、為替変動も考慮する必要があります。</p>
<p id="953661c5-12d1-478d-b556-b4f3a8abf6d2">システム更改の費用を考える際は、初期の3億円だけで判断するのではなく、稼働後5年間に発生する費用を含めて捉える必要があります。契約者と費用負担者、対応時間、保守範囲、パッチやバージョンアップの扱いを、見積書や契約書で確認します。</p>
<h2 id="04c0b0e1-5a95-4fe2-b57a-e27e7a6746d5"><span id="toc7">見積書で確認すべき3つの根拠</span></h2>
<p id="8dbd3c8f-3e5b-4763-a34e-a31d6a8ea1cd">見積金額が妥当かどうかを確認するには、総額だけを見ても判断できません。</p>
<p id="8cb2a37a-d612-429f-ab50-e71735248a26">更改プロジェクト費用だけでなく、稼働後のクラウド利用料や運用保守費についても、作業範囲、数量、算定根拠を確認する必要があります。</p>
<p id="8ff97e08-31cc-442e-b428-568d980cd045">見積書では、次の3点を確認します。</p>
<p id="42deeb72-72f6-48fd-9814-dbadba3593a2"><strong>1．何を実施するのか</strong></p>
<p id="e5ca1435-0348-4cef-8dcd-0307300e6e7c">最初に、見積金額に含まれる作業範囲を確認します。</p>
<p id="3962afbc-e894-4c09-accd-ecc713b31f49">「テスト一式」「基盤構築一式」「運用保守一式」とだけ記載されている場合、どこまで対応するのか分かりません。</p>
<p id="72b5565c-e813-4e61-9be3-19b5abac1e36">テストであれば、対象工程、対象機能、実施回数、障害対応、再テストなどの範囲を確認します。</p>
<p id="4946262c-61dc-4a55-8627-1cb1db169dd6">運用保守であれば、監視、障害対応、問い合わせ対応、定期作業、月次報告、パッチ対応のどこまで含むのかを確認します。</p>
<p id="8f59a5f3-ab63-4397-9b54-1d021b2b5150">24時間365日の連絡体制を維持するのか、平日日中だけ対応するのかでも費用は変わります。パッチ対応についても、情報収集と適用要否の判断だけを行うのか、事前検証、本番適用、回帰テストまで含むのかを確認します。</p>
<p id="e89b9868-6abf-41d8-9ab0-0fe171e3f106">契約書や見積書に書かれていない作業は、稼働後に追加費用となる可能性があります。</p>
<p id="081d3e48-6e02-43d2-bedc-7134b0c96607"><strong>2．数量はいくつなのか</strong></p>
<p id="6da2f4a1-3a29-4b27-b89b-7684d4dfc9f4">次に、費用の前提となる数量を確認します。</p>
<p id="a87ccab6-4660-43cf-b821-f7a44acf37b6">主な数量には、次のようなものがあります。</p>
<ul id="4a8fb002-74b6-448a-9e2a-3c44dd22c66a">
<li>
<p id="74d54818-af60-4a07-80b3-675cdb3dc666">人月数・保守要員数</p>
</li>
<li>
<p id="06c07886-6791-45ce-8d71-48accc948950">サーバー台数</p>
</li>
<li>
<p id="732c9198-ea52-41b0-878a-e7014e14de55">環境数</p>
</li>
<li>
<p id="6bc95ddb-cd02-4aff-bc75-f4794b57156a">テストケース数</p>
</li>
<li>
<p id="611c39c3-9bf3-4033-844e-4c520d4826c1">移行対象データ量</p>
</li>
<li>
<p id="3aa04ab3-97b6-499b-8fcc-79fa552eeddc">外部接続数</p>
</li>
<li>
<p id="fbbf888a-a63c-4d03-91c9-3c0cceaf7c25">ライセンス数</p>
</li>
<li>
<p id="e5d24f41-9140-4471-8879-575c2bd8f0ad">対応時間</p>
</li>
<li>
<p id="59fb23f1-7e25-4dda-bb8e-50afc85dace2">パッチ対象製品数</p>
</li>
<li>
<p id="2ce25207-5a85-4c8a-81fd-7c12bdebafd4">リリース・定期作業回数</p>
</li>
</ul>
<p id="a8f4930a-bc9b-4168-819e-19450ebd65fc">「テスト環境3面」「サーバー20台」「外部接続10本」「保守要員1名分」「月次報告12回」のように数量が示されていれば、見積金額との関係を確認できます。</p>
<p id="189ce0fc-a2b2-4ae2-b44b-203c5c807631">数量が書かれていない見積もりでは、金額が高いのか安いのかを判断できません。</p>
<p id="2191fb7a-a159-4c73-ad74-b97e513b3341"><strong>3．なぜその数量になるのか</strong></p>
<p id="94102ba1-5141-47c1-955b-4cb38af721fa">最後に、数量の算定根拠を確認します。</p>
<p id="38b36bde-d9d2-4576-b957-9fba17236eb7">サーバー20台であれば、各サーバーの役割、冗長化構成、性能要件などが根拠になります。</p>
<p id="dd113ff6-4033-4718-9f34-40ad0741c2c7">外部接続10本であれば、接続先、通信方式、認証方式、試験方法などを確認します。</p>
<p id="36978555-2fe9-4645-98fb-f3cfbb4dffe3">保守要員1名分であれば、問い合わせ対応、障害調査、定期作業、月次報告、待機時間など、どの作業を積み上げた結果なのかを確認します。</p>
<p id="71ca78a9-7e21-4cbd-968c-d46307ef9042">AWS利用料であれば、インスタンスの種類、稼働時間、ストレージ容量、バックアップ、データ転送、冗長化などの条件が根拠になります。</p>
<p id="e352715b-4759-4e46-932b-0dd437bd0b0a">パッチ対応であれば、対象製品数、適用頻度、影響調査の範囲、検証環境の有無、本番停止時間、回帰テストの範囲などを確認します。</p>
<p id="e27e11e3-c1f4-4531-8685-20b7ee43f9c1">前提条件が変わったときに、どの数量が変わり、初期費用や年間費用へどの程度影響するのかまで説明できる見積もりが、実際のプロジェクトで使える見積もりです。</p>
<h2 id="981902d5-d7f8-4417-8074-0a5efcbdaa29"><span id="toc8">まとめ</span></h2>
<p id="8edac0db-5691-4256-b06f-c81486dcbc42">システム開発費用は、プログラマーの人件費だけで構成されているわけではありません。</p>
<p id="26e1e538-f6c7-4c62-bec3-f39fdd9f717e">現行調査、プロジェクト管理、クラウド基盤、ネットワーク、製品、データ移行、テスト、切替、運用引継ぎなど、多くの作業と費用が含まれています。</p>
<p id="c2c61e8c-1251-4d8d-bdf8-36ab3cc76b72">今回の3億円の見積もりは、次の3つの要素で構成されています。</p>
<ul id="09d53122-3fdf-40a9-8306-2965d876d776">
<li>
<p id="e7b76f13-699d-44b9-abb3-b4e09aa9a390">人が作業するための費用：2億5,500万円</p>
</li>
<li>
<p id="2c187f50-7223-4965-a1bf-d0a92def48a0">プロジェクト期間中の環境利用料：2,000万円</p>
</li>
<li>
<p id="5df2d40f-b94e-472d-ad18-f824e84e6c05">製品、回線、外部サービスの費用：2,500万円</p>
</li>
</ul>
<p id="ffd91876-b92a-4526-a62e-171d48af3369">各費用には、契約範囲内で発生し得る不確定要素も織り込まれています。</p>
<p id="25174143-1208-4900-be98-2e20cbd27317">アプリケーション対応費は5,000万円で、全体の約17％です。人月単価を130万円とすると約38人月となり、1年間の平均要員数は約3.2人です。</p>
<p id="7cdd9305-5d1c-4aa9-89a5-2889f4e5f5e0">平均3.2人は、1年間を通じて同じ人数が配置されるという意味ではありません。工程ごとの要員数を要員山積み計画で可視化し、社内や協力会社と必要な人数、スキル、参画時期、離任時期を調整します。</p>
<p id="953845b7-34ff-4e05-9e07-5af28e1fe9fa">更改プロジェクトが完了した後も、クラウド利用料、運用保守費、製品保守費、回線費、外部サービス費、パッチ対応費、保守開発費が継続的に発生します。</p>
<p id="dbdc2fca-dcd3-40b6-87a7-22cef28ad209">今回の例で、稼働後の費用を更改プロジェクト費用の年10％と仮定すると、年間3,000万円、5年間で1億5,000万円です。更改から稼働後5年間までの総費用は4億5,000万円になります。</p>
<p id="9381fe7b-8689-4e9c-b055-825c0df667e1">この金額は一般的な相場ではありません。保守要員1名分を毎月確保するだけでも、人月単価130万円なら年間1,560万円です。クラウド利用料、監視、製品保守、回線、外部サービスまで含めると、年間10％では不足するシステムもあります。</p>
<p id="9934a456-99ea-4733-b903-229576cee926">初期の更改費用だけを見て予算を判断すると、稼働後に必要な費用を見落とします。システムにかかる費用は、構築から運用終了までの総費用で捉える必要があります。</p>
<p id="dd78a922-9820-45e7-956d-fd6e9fa5833b">見積もりの説明責任とは、総額を提示することではありません。</p>
<p id="3b956047-28b9-403d-b03e-97717af50218">何を実施するのか、数量はいくつなのか、なぜその数量になるのかを、金額と結び付けて説明することです。</p>
<p id="ff1e1c2c-9eb0-4e9c-80c3-9bf7b87182da">システム開発費用を理解するには、「高いか安いか」だけでなく、その金額がどの作業、数量、契約条件から構成されているのかを見る必要があります。</p>
<hr />
<p><strong>システム開発入門シリーズ</strong></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview/">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview-2/">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/base3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【RDS for Oracle】V$BHでバッファキャッシュの内訳を調査する｜X$BHの代替方法</title>
		<link>https://sys-univ.com/tec/rds-oracle-vbh-buffer-cache/</link>
					<comments>https://sys-univ.com/tec/rds-oracle-vbh-buffer-cache/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 06:35:07 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2791</guid>

					<description><![CDATA[はじめに RDS for Oracleでは、オンプレミスOracleと同じ方法でSYS.X$BHを直接参照できません。 対応する環境では、X$BHを基にしたSYS.RDS_X$BHビューを作成できます。ただし、X$固定表 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="cc626968-072b-454c-919b-4f0f9f151289"><strong>はじめに</strong></p>
<p>RDS for Oracleでは、オンプレミスOracleと同じ方法でSYS.X$BHを直接参照できません。</p>
<p id="65345b46-8adc-4916-b7e4-d23c6a564ebb">対応する環境では、X$BHを基にしたSYS.RDS_X$BHビューを作成できます。ただし、X$固定表はOracle内部の非公開オブジェクトであり、本番環境で利用する場合は、非本番環境での検証やエンジンアップグレード後の確認が必要です。</p>
<p id="63dbeb3b-6fbc-4c52-97ca-bc86c3f4e6ff">一方、調査の目的が、</p>
<blockquote>
<p>DBバッファキャッシュ上に、どのテーブルやインデックスのブロックがどの程度存在しているか確認する</p>
</blockquote>
<p id="6abc85f6-e5f3-4b36-8602-bbe09bb730ba">ことであれば、Oracleが公開している動的パフォーマンスビューV$BHを利用できます。</p>
<p id="363ec1b1-d289-4048-bef5-2610df3c35e4">V$BHはX$BHの完全な代替ではありません。LRU_FLAGやTCHなど、V$BHでは取得できない情報もあります。</p>
<p id="757cdc31-dd91-421e-a396-fa567b81b4bf">しかし、オブジェクトごとのキャッシュブロック数や概算容量を把握する目的であれば、V$BHから必要な情報を取得できます。</p>
<p id="b85e3809-f2cf-40c7-9b1e-14d8e7a32e58">本記事では、RDS for OracleでV$BHを使用してDBバッファキャッシュの内訳を調査するSQLと、結果を評価する際の注意点を解説します。</p>
<p id="5a75ea9d-5887-4a7c-ba22-7eb53c29990d">SYS.X$BHを直接参照できない理由と、SYS.RDS_X$BHを利用する際の条件については、以下の記事で整理しています。</p>
<a href="https://sys-univ.com/tec/dbbc/" title="【RDS for Oracle】オンプレの調査SQLが動かない｜X$BHを直接参照できない理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/04/56449d25b24c39117458734fb74a2ff6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/04/56449d25b24c39117458734fb74a2ff6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/04/56449d25b24c39117458734fb74a2ff6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/04/56449d25b24c39117458734fb74a2ff6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/04/56449d25b24c39117458734fb74a2ff6-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【RDS for Oracle】オンプレの調査SQLが動かない｜X$BHを直接参照できない理由</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for OracleでSYS.X$BHを直接参照できない理由を解説。SYSDBA権限の制約、RDS_X$BHの作成方法、V$BHとの使い分けや運用上の注意点を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
<h2><span id="toc1">V$BHで確認できる情報</span></h2>
<p><code>V$BH</code>は、SGA内に存在する各バッファの状態を表示する動的パフォーマンスビューです。</p>
<p>Oracle公式リファレンスでは、バッファの状態、データファイル番号、ブロック番号、データオブジェクト番号、表領域番号などを確認できるビューとして説明されています。</p>
<p><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-BH.html">V$BHの列定義｜Oracle Databaseリファレンス</a></p>
<p>オブジェクト別のキャッシュ量を調査する際、主に利用する列は次のとおりです。</p>
<table>
<thead>
<tr>
<th>列</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>FILE#</code></td>
<td>データファイル番号</td>
</tr>
<tr>
<td><code>BLOCK#</code></td>
<td>データファイル内のブロック番号</td>
</tr>
<tr>
<td><code>STATUS</code></td>
<td>バッファの状態</td>
</tr>
<tr>
<td><code>OBJD</code></td>
<td>ブロックに対応するデータオブジェクト番号</td>
</tr>
<tr>
<td><code>TS#</code></td>
<td>表領域番号</td>
</tr>
<tr>
<td><code>DIRTY</code></td>
<td>変更済みブロックかどうか</td>
</tr>
<tr>
<td><code>CON_ID</code></td>
<td>マルチテナント環境のコンテナID</td>
</tr>
</tbody>
</table>
<p>このうち、オブジェクトとの結合で中心になるのが<code>OBJD</code>です。</p>
<p><code>V$BH.OBJD</code>を<code>DBA_OBJECTS.DATA_OBJECT_ID</code>と結合することで、バッファキャッシュ上のブロックが、どのテーブル、インデックス、パーティションに属しているかを確認できます。</p>
<h2><span id="toc2">OBJECT_IDではなくDATA_OBJECT_IDで結合する</span></h2>
<p><code>V$BH</code>と<code>DBA_OBJECTS</code>を結合する際、注意したいのが結合列です。</p>
<p>次のように、<code>OBJECT_ID</code>と結合したくなるかもしれません。</p>
<pre><code class="language-sql">ON o.object_id = bh.objd
</code></pre>
<p>しかし、ここでは<code>OBJECT_ID</code>ではなく、<code>DATA_OBJECT_ID</code>を使用します。</p>
<pre><code class="language-sql">ON o.data_object_id = bh.objd
</code></pre>
<p><code>OBJECT_ID</code>は、データディクショナリ上でオブジェクトを識別する番号です。</p>
<p>一方、<code>DATA_OBJECT_ID</code>は、そのオブジェクトのデータを格納するセグメントに対応する番号です。</p>
<p><code>V$BH.OBJD</code>が保持しているのは、バッファ内のブロックに対応するデータオブジェクト番号です。そのため、<code>DBA_OBJECTS.DATA_OBJECT_ID</code>と結合します。</p>
<p>Oracle公式のバッファキャッシュ調査SQLでも、次の条件が使われています。</p>
<pre><code class="language-sql">o.data_object_id = bh.objd
</code></pre>
<p>この違いは、パーティション表や、<code>TRUNCATE</code>、<code>MOVE</code>などによってセグメントが再作成されたオブジェクトを扱う場合に重要です。</p>
<p>オブジェクトの論理的な識別子である<code>OBJECT_ID</code>が変わらなくても、物理的なセグメントに対応する<code>DATA_OBJECT_ID</code>が変化する場合があります。</p>
<p>バッファキャッシュ上のブロックを、実際のセグメントへ正しく関連付けるには、<code>DATA_OBJECT_ID</code>を使用する必要があります。</p>
<h2><span id="toc3">Oracle公式の基本SQL</span></h2>
<p>OracleのPerformance Tuning Guideでは、バッファキャッシュ上に存在するオブジェクト別のブロック数を、次のようなSQLで確認しています。</p>
<pre><code class="language-sql">SELECT
    o.object_name,
    COUNT(*) AS number_of_blocks
FROM
    dba_objects o,
    v$bh bh
WHERE
    o.data_object_id = bh.objd
    AND o.owner &lt;&gt; 'SYS'
GROUP BY
    o.object_name
ORDER BY
    COUNT(*);
</code></pre>
<p>このSQLは、<code>V$BH.OBJD</code>と<code>DBA_OBJECTS.DATA_OBJECT_ID</code>を結合し、オブジェクトごとのブロック数を集計するものです。</p>
<p>基本SQLと、バッファキャッシュの利用状況を調査する手順は、Oracle公式のチューニングガイドで確認できます。</p>
<p><a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/tgdba/tuning-database-buffer-cache.html">Tuning the Database Buffer Cache｜Oracle Database Performance Tuning Guide</a></p>
<p>基本的な目的は、このSQLで達成できます。</p>
<p>ただし、実務で結果を確認する場合は、次の情報も表示したほうが分かりやすくなります。</p>
<ul>
<li>
<p>オブジェクトの所有者</p>
</li>
<li>
<p>パーティション名</p>
</li>
<li>
<p>オブジェクト種別</p>
</li>
<li>
<p>表領域名</p>
</li>
<li>
<p>ブロックサイズ</p>
</li>
<li>
<p>キャッシュ容量の概算値</p>
</li>
</ul>
<p>これらを追加したSQLが次の例です。</p>
<h2><span id="toc4">オブジェクト別のキャッシュ容量を確認するSQL</span></h2>
<pre><code class="language-sql">SELECT
    o.owner,
    o.object_name,
    o.subobject_name,
    o.object_type,
    t.name AS tablespace_name,
    COUNT(*) AS cached_blocks,
    d.block_size,
    ROUND(
        COUNT(*) * d.block_size / 1024 / 1024,
        2
    ) AS cached_mb
FROM
    v$bh bh
    LEFT JOIN dba_objects o
        ON o.data_object_id = bh.objd
    LEFT JOIN v$tablespace t
        ON t.ts# = bh.ts#
    LEFT JOIN dba_tablespaces d
        ON d.tablespace_name = t.name
WHERE
    bh.status &lt;&gt; 'free'
GROUP BY
    o.owner,
    o.object_name,
    o.subobject_name,
    o.object_type,
    t.name,
    d.block_size
ORDER BY
    cached_mb DESC;
</code></pre>
<p>このSQLでは、<code>V$BH</code>上の使用中バッファを、データオブジェクトと表領域へ関連付けています。</p>
<p>結果は、概ね次のような形式になります。</p>
<table>
<thead>
<tr>
<th>OWNER</th>
<th>OBJECT_NAME</th>
<th>SUBOBJECT_NAME</th>
<th>OBJECT_TYPE</th>
<th>TABLESPACE_NAME</th>
<th align="right">CACHED_BLOCKS</th>
<th align="right">BLOCK_SIZE</th>
<th align="right">CACHED_MB</th>
</tr>
</thead>
<tbody>
<tr>
<td>APP</td>
<td>SALES_DATA</td>
<td>P2026</td>
<td>TABLE PARTITION</td>
<td>APP_DATA</td>
<td align="right">125000</td>
<td align="right">8192</td>
<td align="right">976.56</td>
</tr>
<tr>
<td>APP</td>
<td>IDX_SALES_01</td>
<td>P2026</td>
<td>INDEX PARTITION</td>
<td>APP_INDEX</td>
<td align="right">62000</td>
<td align="right">8192</td>
<td align="right">484.38</td>
</tr>
<tr>
<td>APP</td>
<td>CUSTOMER</td>
<td>&nbsp;</td>
<td>TABLE</td>
<td>APP_DATA</td>
<td align="right">18000</td>
<td align="right">8192</td>
<td align="right">140.63</td>
</tr>
</tbody>
</table>
<p>この結果から、どのオブジェクトのブロックがバッファキャッシュ上で大きな割合を占めているかを確認できます。</p>
<h2><span id="toc5">SQLの各項目</span></h2>
<p><strong>OWNER</strong></p>
<p>オブジェクトの所有者です。</p>
<p>異なるスキーマに同じオブジェクト名が存在する場合があるため、<code>OBJECT_NAME</code>だけではなく、<code>OWNER</code>も表示します。</p>
<p><strong>OBJECT_NAME</strong></p>
<p>テーブルやインデックスなどのオブジェクト名です。</p>
<p>パーティション表やパーティションインデックスでは、同じ<code>OBJECT_NAME</code>に対して複数のセグメントが存在します。</p>
<p><strong>SUBOBJECT_NAME</strong></p>
<p>パーティション名またはサブパーティション名です。</p>
<p>これを表示しないと、どのパーティションのブロックがキャッシュされているか分からなくなります。</p>
<p><strong>OBJECT_TYPE</strong></p>
<p>オブジェクトの種類です。</p>
<p>主に次のような値が表示されます。</p>
<ul>
<li>
<p><code>TABLE</code></p>
</li>
<li>
<p><code>INDEX</code></p>
</li>
<li>
<p><code>TABLE PARTITION</code></p>
</li>
<li>
<p><code>INDEX PARTITION</code></p>
</li>
<li>
<p><code>TABLE SUBPARTITION</code></p>
</li>
<li>
<p><code>INDEX SUBPARTITION</code></p>
</li>
</ul>
<p><strong>TABLESPACE_NAME</strong></p>
<p>オブジェクトのブロックが属している表領域名です。</p>
<p><code>V$BH.TS#</code>と<code>V$TABLESPACE.TS#</code>を結合して取得します。</p>
<p><strong>CACHED_BLOCKS</strong></p>
<p>バッファキャッシュ上に存在するブロック数です。</p>
<p><code>V$BH</code>は基本的にバッファ単位で行を返すため、<code>COUNT(*)</code>によってオブジェクトごとのブロック数を集計します。</p>
<p><strong>BLOCK_SIZE</strong></p>
<p>表領域のブロックサイズです。</p>
<p>通常はデータベース標準のブロックサイズが使われますが、非標準ブロックサイズの表領域が存在する可能性もあります。</p>
<p>そのため、固定値として8192を掛けるのではなく、<code>DBA_TABLESPACES.BLOCK_SIZE</code>を使用します。</p>
<p><strong>CACHED_MB</strong></p>
<p>キャッシュされている概算容量です。</p>
<p>計算式は次のとおりです。</p>
<pre><code class="language-text">キャッシュブロック数 × ブロックサイズ
</code></pre>
<p>SQLでは、この値を1024で2回割り、MiB相当へ換算しています。</p>
<p>ただし、この値はオブジェクトの物理サイズではありません。</p>
<p>SQLを実行した時点で、バッファキャッシュ上に存在するブロック数を容量換算した値です。</p>
<h2><span id="toc6">LEFT JOINを使用する理由</span></h2>
<p><code>V$BH</code>と<code>DBA_OBJECTS</code>、表領域関連ビューの結合には<code>LEFT JOIN</code>を使用しています。</p>
<p><code>INNER JOIN</code>を使用すると、対応するオブジェクトや表領域情報を取得できなかったバッファが、結果から除外されます。</p>
<p>通常のユーザーテーブルやインデックスだけを確認する場合は、<code>INNER JOIN</code>でも大部分の結果を取得できます。</p>
<p>しかし、バッファキャッシュには次のようなブロックが含まれる可能性があります。</p>
<ul>
<li>
<p>一時セグメント</p>
</li>
<li>
<p>Undo関連ブロック</p>
</li>
<li>
<p>内部管理用ブロック</p>
</li>
<li>
<p>オブジェクトへ単純に関連付けられないバッファ</p>
</li>
<li>
<p>取得タイミングによってディクショナリと一致しない情報</p>
</li>
</ul>
<p>そのため、まずは<code>V$BH</code>側の行を残し、オブジェクトや表領域へ関連付けられなかった行も確認できるようにしています。</p>
<p><code>OWNER</code>、<code>OBJECT_NAME</code>、<code>TABLESPACE_NAME</code>などがNULLになった行が多い場合は、不要と判断して除外するのではなく、<code>FILE#</code>、<code>BLOCK#</code>、<code>TS#</code>、<code>STATUS</code>などを追加して内容を確認します。</p>
<p>ユーザーオブジェクトだけを簡潔に確認したい場合は、<code>INNER JOIN</code>へ変更しても構いません。</p>
<h2><span id="toc7">STATUSがfreeのバッファを除外する</span></h2>
<p>今回のSQLでは、次の条件を指定しています。</p>
<pre><code class="language-sql">WHERE bh.status &lt;&gt; 'free'
</code></pre>
<p><code>V$BH.STATUS</code>には、バッファの状態が表示されます。</p>
<p>代表的な値は次のとおりです。</p>
<table>
<thead>
<tr>
<th>STATUS</th>
<th>概要</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>free</code></td>
<td>現在使用されていない</td>
</tr>
<tr>
<td><code>xcur</code></td>
<td>排他カレント</td>
</tr>
<tr>
<td><code>scur</code></td>
<td>共有カレント</td>
</tr>
<tr>
<td><code>cr</code></td>
<td>読み取り一貫性用のブロック</td>
</tr>
<tr>
<td><code>read</code></td>
<td>ディスクから読み込み中</td>
</tr>
<tr>
<td><code>mrec</code></td>
<td>メディアリカバリ中</td>
</tr>
<tr>
<td><code>irec</code></td>
<td>インスタンスリカバリ中</td>
</tr>
<tr>
<td><code>pi</code></td>
<td>RACにおける過去イメージ</td>
</tr>
</tbody>
</table>
<p>今回の目的は、現在キャッシュ上で使用されているブロックの集計です。そのため、未使用状態の<code>free</code>を除外しています。</p>
<p>障害解析やRAC関連の調査など、状態ごとの内訳が必要な場合は、<code>STATUS</code>をSELECT句とGROUP BY句へ追加して確認します。</p>
<h2><span id="toc8">キャッシュ量が多いオブジェクトは問題なのか</span></h2>
<p><code>V$BH</code>の結果を見ると、特定のテーブルやインデックスが大量のブロックを占めていることがあります。</p>
<p>しかし、</p>
<blockquote>
<p>キャッシュ量が多い<br />
＝不要なデータがキャッシュされている<br />
＝チューニングが必要</p>
</blockquote>
<p>とは限りません。</p>
<p>業務で継続的に参照されるテーブルであれば、多くのブロックがキャッシュされていることは自然です。</p>
<p>必要なブロックがバッファキャッシュに残っていれば、その後のSQLはストレージからの物理読み込みを減らせます。</p>
<p>問題になる可能性があるのは、例えば次のようなケースです。</p>
<ul>
<li>
<p>利用頻度の低い大規模表が大量に読み込まれている</p>
</li>
<li>
<p>大規模バッチの後にオンライン処理の物理読み込みが増える</p>
</li>
<li>
<p>フルスキャンが繰り返されている</p>
</li>
<li>
<p>想定していたインデックスが使用されていない</p>
</li>
<li>
<p>同じ大規模オブジェクトへ不要なアクセスが繰り返されている</p>
</li>
<li>
<p>必要なブロックが短時間でキャッシュから追い出されている</p>
</li>
</ul>
<p>したがって、<code>V$BH</code>の結果だけで良否を判断してはいけません。</p>
<h2><span id="toc9">V$BHと一緒に確認する情報</span></h2>
<p><strong>SQLと実行計画</strong></p>
<p>キャッシュ上で大きな割合を占めるオブジェクトを特定したら、そのオブジェクトへアクセスしているSQLを確認します。</p>
<ul>
<li>
<p>フルテーブルスキャンになっていないか</p>
</li>
<li>
<p>パーティションプルーニングが機能しているか</p>
</li>
<li>
<p>想定以上の行やブロックを読み込んでいないか</p>
</li>
<li>
<p>同じ処理を不必要に繰り返していないか</p>
</li>
</ul>
<p>キャッシュ量が多いという結果だけで、SQLに問題があるとは判断できません。実行計画と実行統計を組み合わせて評価します。</p>
<p><strong>物理読み込みと待機イベント</strong></p>
<p>AWRやStatspack、<code>V$SYSSTAT</code>などから、処理量に対して物理読み込みが増えていないかを確認します。</p>
<p>また、次のようなI/Oやバッファ関連の待機イベントも確認します。</p>
<ul>
<li>
<p><code>db file sequential read</code></p>
</li>
<li>
<p><code>db file scattered read</code></p>
</li>
<li>
<p><code>direct path read</code></p>
</li>
<li>
<p><code>free buffer waits</code></p>
</li>
<li>
<p><code>buffer busy waits</code></p>
</li>
<li>
<p><code>read by other session</code></p>
</li>
</ul>
<p>ただし、待機イベントが発生しているだけで、バッファキャッシュを増やすべきとは判断できません。</p>
<p>SQL、ストレージ性能、DBWRの書き出し、同時実行数など、複数の要因を確認する必要があります。</p>
<p><strong>V$DB_CACHE_ADVICE</strong></p>
<p>バッファキャッシュのサイズを変更した場合に、物理読み込みがどの程度変化すると推定されるかを確認するには、<code>V$DB_CACHE_ADVICE</code>を利用できます。</p>
<p>Oracle公式ドキュメントでは、複数の仮想的なキャッシュサイズに対する物理読み込み数やミス率の予測値を表示するビューとして説明されています。</p>
<p>ただし、これは実測値ではなく予測値です。</p>
<p>代表的な業務負荷が流れている状態で取得し、AWRや実際のレスポンスタイムと合わせて評価します。</p>
<h2><span id="toc10">V$BHの検索負荷に注意する</span></h2>
<p><code>V$BH</code>は、バッファキャッシュ内の各バッファに対応する行を保持しています。</p>
<p>バッファキャッシュが大きい環境では、<code>V$BH</code>の行数も多くなります。</p>
<p>そこへ<code>DBA_OBJECTS</code>や表領域関連ビューを結合し、全件をGROUP BYすると、SQL自体がCPUやソート領域を使用します。</p>
<p>Oracle公式ドキュメントでも、全セグメントを対象にした集計は、バッファキャッシュのサイズによって多くのソート領域を必要とする場合があると説明されています。</p>
<p>本番環境で実行する場合は、次の点に注意します。</p>
<ul>
<li>
<p>非本番環境で実行時間と負荷を確認する</p>
</li>
<li>
<p>業務ピークを避ける</p>
</li>
<li>
<p>必要に応じて対象スキーマを絞る</p>
</li>
<li>
<p>定期監視として短い間隔で実行しない</p>
</li>
<li>
<p>実行計画とTEMP使用量を確認する</p>
</li>
</ul>
<p>参照SQLだから安全とは限りません。</p>
<p>データを更新しないSELECTであっても、大量の行を走査して集計するSQLは、データベースへ負荷を与えます。</p>
<h2><span id="toc11">非マスターユーザーから参照する場合</span></h2>
<p>非マスターユーザーへ<code>V$BH</code>の参照権限を付与する場合は、RDSの管理プロシージャ<code>grant_sys_object</code>を使用します。</p>
<p>権限付与時には、シノニム名の<code>V$BH</code>ではなく、基になるSYSオブジェクト名<code>V_$BH</code>を指定します。</p>
<pre><code class="language-sql">BEGIN
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  =&gt; 'V_$BH',
        p_grantee   =&gt; 'MONITOR_USER',
        p_privilege =&gt; 'SELECT'
    );
END;
/
</code></pre>
<p>ただし、付与できるのは、マスターユーザー自身が保持している権限の範囲内です。</p>
<p>実行前に、対象環境でマスターユーザーから<code>V$BH</code>を参照できることを確認してください。</p>
<p>また、監視ユーザーへ権限を付与する場合は、必要なビューだけに限定し、広いカタログ参照権限を安易に付与しないほうが安全です。</p>
<h2><span id="toc12">X$BHとV$BHの違い</span></h2>
<p><code>V$BH</code>でオブジェクトごとのキャッシュ量を確認できますが、<code>X$BH</code>のすべての情報を取得できるわけではありません。</p>
<table>
<thead>
<tr>
<th>項目</th>
<th>X$BH／RDS_X$BH</th>
<th>V$BH</th>
</tr>
</thead>
<tbody>
<tr>
<td>オブジェクト番号</td>
<td>確認可能</td>
<td><code>OBJD</code>で確認可能</td>
</tr>
<tr>
<td>ファイル・ブロック番号</td>
<td>確認可能</td>
<td>確認可能</td>
</tr>
<tr>
<td>バッファ状態</td>
<td>確認可能</td>
<td><code>STATUS</code>で確認可能</td>
</tr>
<tr>
<td>Dirtyブロック</td>
<td>確認可能</td>
<td><code>DIRTY</code>で確認可能</td>
</tr>
<tr>
<td><code>LRU_FLAG</code></td>
<td>確認できる環境がある</td>
<td>確認不可</td>
</tr>
<tr>
<td><code>TCH</code></td>
<td>確認できる環境がある</td>
<td>確認不可</td>
</tr>
<tr>
<td>公開仕様</td>
<td>Oracle内部実装に依存</td>
<td>Oracle公式リファレンスに記載</td>
</tr>
<tr>
<td>RDSでの利用</td>
<td>RDS_X$ビューの作成が必要</td>
<td>必要な参照権限があれば利用可能</td>
</tr>
</tbody>
</table>
<p>オブジェクト別のキャッシュブロック数や概算容量を確認したいのであれば、まず<code>V$BH</code>を検討できます。</p>
<p>一方、<code>LRU_FLAG</code>や<code>TCH</code>などX$BH固有の情報が必要な場合や、Oracle Supportから固定表を使った調査を指示された場合は、対応環境で<code>RDS_X$BH</code>を作成する選択肢があります。</p>
<h2><span id="toc13">V$BHは調査の入口</span></h2>
<p><code>V$BH</code>が示すのは、SQLを実行した時点でバッファキャッシュ上に存在するブロックの状態です。直前に大規模バッチが実行されていれば、その処理で読み込まれたブロックが多く表示される可能性があります。</p>
<p>頻繁に利用されるオブジェクトであっても、DBインスタンスの再起動直後や業務開始前であれば、キャッシュブロック数は少なく表示されます。結果を評価する際は、まず取得タイミングを確認します。</p>
<ul>
<li>
<p>代表的な業務負荷が実行されている時間帯か</p>
</li>
<li>
<p>バッチ実行前か実行後か</p>
</li>
<li>
<p>DBインスタンス再起動から十分な時間が経過しているか</p>
</li>
</ul>
<p>必要に応じて複数の時間帯で結果を取得し、業務処理の実行状況やSQL統計、物理読み込み、待機イベントと対応付けて評価します。利用可能な機能やライセンス条件に応じて、AWR、Statspack、CloudWatch Database Insightsなども組み合わせます。</p>
<p>特定のオブジェクトが大量のバッファを使用しているという結果だけでは、キャッシュサイズの変更やSQLチューニングが必要とは判断できません。</p>
<p>調査では、既存SQLをそのまま再現することよりも、そのSQLで何を確認しようとしていたのかを整理することが重要です。オンプレミスで使用していた<code>SYS.X$BH</code>をRDS for Oracleから直接参照できない場合でも、目的がオブジェクト別のキャッシュブロック数を確認することであれば、公開された動的パフォーマンスビューである<code>V$BH</code>を利用できます。</p>
<p><code>LRU_FLAG</code>や<code>TCH</code>など、<code>X$BH</code>固有の情報が必要な場合は、使用しているエンジンリリースと作成可能なビューを確認したうえで、<code>SYS.RDS_X$BH</code>の利用を検討します。<code>X$</code>表はOracle内部のシステムオブジェクトであるため、非本番環境で検証し、本番環境への導入はOracle Supportのガイダンスを踏まえて判断します。</p>
<p><code>V$BH</code>は、性能問題の全体を説明するビューではありません。どのオブジェクトのブロックがバッファキャッシュ上に存在しているかを確認し、その後のSQL、実行計画、I/O、待機イベントの調査につなげる入口として位置づけます。</p>
<p>今回取り上げた<code>X$BH</code>の制約は、RDS for Oracleで変わる運用前提の一例です。SYSDBA権限、OSアクセス、物理ファイル操作、ログ取得、ストレージ管理についても、オンプレミスと同じ手順をそのまま使用できるとは限りません。</p>
<p>オンプレミスの操作を一対一で置き換えるのではなく、調査や運用の目的を整理し、RDSで提供される機能を使って手順を再構成する必要があります。</p>
<p>RDS for Oracleで変わる設計・運用上の前提と代替アプローチについては、以下の記事で整理しています。</p>
<a href="https://sys-univ.com/aws/rdsforora/" title="RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for Oracleではオンプレ運用の前提が通用しない。Storage-Full、アーカイブログ、SSH不可など、開発中に見えた9つの設計ギャップと代替アプローチを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.12</div></div></div></div></a>
<h2><span id="toc14">まとめ</span></h2>
<p>RDS for Oracleで、DBバッファキャッシュ上のオブジェクト別ブロック数を確認する場合は、<code>V$BH</code>を利用できます。</p>
<p><code>V$BH.OBJD</code>は、<code>DBA_OBJECTS.OBJECT_ID</code>ではなく、<code>DATA_OBJECT_ID</code>と結合します。</p>
<pre><code class="language-sql">ON o.data_object_id = bh.objd
</code></pre>
<p>オブジェクト別のキャッシュ容量は、キャッシュブロック数と表領域のブロックサイズから概算できます。</p>
<pre><code class="language-text">キャッシュブロック数 × ブロックサイズ
</code></pre>
<p><code>V$BH</code>は<code>X$BH</code>の完全な代替ではありませんが、どのオブジェクトのブロックがバッファキャッシュ上にどの程度存在しているかを確認する目的には利用できます。</p>
<p>キャッシュ量が多いオブジェクトが、直ちに性能問題の原因とは限りません。SQL、実行計画、物理読み込み、待機イベントなどの情報と対応付け、取得した時間帯の業務負荷も踏まえて評価する必要があります。</p>
<p>また、大規模なバッファキャッシュを全件集計するSQLは、相応のCPUやソート領域を使用する可能性があります。本番環境で実行する前に負荷を確認し、必要に応じて対象スキーマや表領域を絞ります。</p>
<p>オンプレミスの調査SQLをそのまま再現するのではなく、調査目的を起点に、RDSで利用可能な手段を組み合わせることが重要です。</p>
<div id="gtx-trans" style="position: absolute; left: -33px; top: 7741.58px;">
<div class="gtx-trans-icon"> </div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/rds-oracle-vbh-buffer-cache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>運用設計とは？運用設計書の目次サンプルと項目一覧｜基盤SE視点</title>
		<link>https://sys-univ.com/dev/opedesign/</link>
					<comments>https://sys-univ.com/dev/opedesign/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 20 Jul 2026 03:39:42 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1040</guid>

					<description><![CDATA[はじめに 大手SIerで20年以上、システム基盤SEとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。運用設計とは、本番稼働後に必要 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>はじめに</strong></p>
<p>大手SIerで20年以上、システム基盤SEとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。運用設計とは、本番稼働後に必要となる作業、判断基準、体制を整理し、それをシステムの処理方式や構成と結びつける設計です。</p>
<ul>
<li>監視対象は定義されているのに、何を異常とみなすのか決まっていない。</li>
<li>ログは出力されているのに、保持期間や削除方法が決まっていない。</li>
<li>バックアップは取得しているのに、必要な時間内にリストアできるか確認されていない。</li>
<li>ジョブネットは作られているのに、実行するスクリプトが存在しない。</li>
</ul>
<p>こうした設計不備は、重大な障害の見逃しや復旧の遅れにつながります。システムを利用するお客様だけでなく、その先にいる利用者や社会へのサービス提供を損なう事態にもなりかねません。</p>
<p>それほど重要な設計領域であるにもかかわらず、運用設計は多くのプロジェクトで軽視されてきました。</p>
<p>なぜでしょうか。100のシステムがあれば、運用の形も100通りあります。運用・保守に関する確認観点を整理したフレームワークや標準はありますが、それをそのまま適用すれば運用設計が完成するわけではありません。サービス時間、業務日付、外部連携、夜間バッチ、監視、バックアップ、障害時の判断、運用体制は、システムごとに具体化する必要があります。非機能要件だけでなく、業務運用や組織の役割分担にもまたがるため、定形の設計書に集約しにくく、見える化しづらい設計領域だといえます。</p>
<p>もう一つ、情報の偏りという問題もあります。世の中の技術情報を見渡すと、logrotateの設定方法やクラウドサービスの使い方といった処理方式寄りの解説か、ITILに基づく管理プロセスといった組織・サービス管理寄りの解説か、そのどちらかに偏っています。現場のSEが本当に苦労するのは、その中間にある領域です。運用要件をどの仕組みで実現し、どの設定値、スクリプト、ジョブ、監視条件に落とし込むのか。ここを扱った情報は、驚くほど少ないのが実情です。</p>
<p>この記事では、システム基盤から見た運用設計を中心に、共通化しやすい検討項目を<strong>「運用設計書の目次サンプル」</strong>として示します。あわせて、運用設計が処理方式設計と切り離せない理由と、運用設計が要件定義から始まり、基本設計の段階で骨格が決まることを、現場の経験から整理します。</p>
<p>基本設計の段階で何を決めるべきかは、記事の最後で紹介する解説記事で体系的に扱っています。</p>
<h2><span id="toc1">実際にあった運用設計漏れによるトラブル</span></h2>
<p>まず、運用設計漏れによって発生したトラブルの例を見てみます。</p>
<p>あるサーバでは、syslogファイルをローテーションしないまま、ログが出力され続けていました。このまま運用を続ければ、syslogファイルはパーティションの空き容量を消費し続けます。それがルート領域であれば、OSやミドルウェアが正常に動作できなくなり、ログインやプロセス起動にも支障が出る可能性があります。ログ管理設計の漏れがどのように障害へつながるのかを、図にすると次のとおりです。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2910" src="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.jpg" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-800x533.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-300x200.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-768x512.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b.jpg 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>ディスクの空き容量を監視していれば、容量が枯渇する前に検知できたかもしれません。ただ、これは監視だけの問題ではありません。空き容量の監視は、容量逼迫という状態を検知する仕組みです。根本原因は、ログの増加を前提に、保持、退避、圧縮、削除を設計していなかったことにあります。</p>
<p>ログ管理を運用設計項目として定義し、どのログを管理対象とするのか、何の目的で保存するのか、どの期間保持するのか、即時に参照できる必要があるのか、いつ外部領域へ退避するのか、いつ圧縮・削除するのか、誰が参照できるのかを決めていれば避けられたトラブルです。その運用設計を入力として、処理方式側では、logrotateを使うのかジョブで退避するのか、どのパーティションへ保存するのか、どれだけの容量が必要なのかを具体化します。</p>
<p>一見すると「検討していて当然」と思われる内容です。それでも、ログ管理を運用設計の対象として認識していないプロジェクトでは、実際に漏れます。</p>
<h2><span id="toc2">運用設計はいつやるのか｜要件定義から始まり基本設計で骨格が決まる</span></h2>
<p>運用設計のプロセスを理解するには、システム開発全体の中での位置づけを押さえる必要があります。</p>
<p>ウォーターフォール型の開発プロセスは、要件定義、設計、製造、試験、移行、保守・運用という流れで説明されることが多いと思います。このモデルでは工程の最後に「保守・運用」が置かれているため、運用に関する検討もシステムが完成してから行えばよい、という誤解が生じます。</p>
<p>最後に置かれているのは、完成したシステムを実際に維持管理する運用工程です。そのシステムをどのように運用するのかを決める運用設計は、設計工程の中にあります。</p>
<p>運用設計を設計工程として扱わないプロジェクトでは、サービス開始直前になって検討不足が表面化します。ログがローテーションされない。バックアップはあるのに戻せない。ジョブは定義されているのに実行するスクリプトがない。監視アラートは出るのに一次対応者が決まっていない。夜間処理は終了したのに、業務を開始してよいか判断できない。私はそうした現場を数多く見てきました。</p>
<p>これらは、運用開始後に考える問題ではありません。工程初期から、処理方式とセットで具体化すべき設計事項です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2819" src="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.jpg" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974.jpg 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<h2><span id="toc3">処理方式設計と運用設計は双方向でつながっている</span></h2>
<p>ここからが、この記事で最も伝えたい内容です。運用設計で最も重要なのは、処理方式設計との接続です。運用設計は単独では成立せず、処理方式設計と対になって、初めて本番で運用できる設計になります。</p>
<p>処理方式設計とは、要件をどのような仕組みで実現するかを具体化する設計です。運用設計とは、その仕組みを実際の運用の中でどのように扱うかを具体化する設計です。この2つは別の設計領域ですが、完全に分けて考えることはできません。</p>
<p>ログ管理を例に考えます。運用設計側では、管理対象とするログ、利用目的、保持期間、参照要件、退避・削除方針、アクセス権限を決めます。「syslogを1か月保持する」と運用設計で決めたとします。この決定だけでは、1か月保持は実現できません。処理方式側で、日次と週次のどちらでローテーションするのか、Linuxのlogrotateで実現するのかジョブ管理製品で退避するのか、退避先ディレクトリをどこにするのか、圧縮するのか、外部のログ管理基盤へ転送するのか、必要なディスク容量はいくらか、容量逼迫をどの条件で検知するのかを設計する必要があります。運用設計の決定が、Linuxや監視製品、ログ管理製品の処理方式設計への入力になるわけです。</p>
<p>逆方向の流れもあります。Linux設計側でログの退避先を決めたなら、その情報は運用設計側へ伝えなければなりません。ログは、要件に応じてバックアップや外部保管の対象になります。退避先が運用設計側へ伝わっていなければ、バックアップ対象やログ収集対象から漏れる可能性があります。障害調査に必要なログが残っていない、という事態はこうして生まれます。</p>
<p>運用設計側が「何を、どれくらい、何の目的で管理したいのか」を決める。処理方式設計側が「それをどの仕組みで実現するのか」を決める。運用要件が処理方式に影響し、処理方式の制約が運用設計に戻ってくる。この関係は一方向の受け渡しではなく、レビューやウォークスルーを通じて、相互に入力とフィードバックを繰り返しながら固めていくものです。どちらを先に検討するかは状況によって異なりますが、運用設計者と処理方式設計者の間で認識齟齬を残さないことが重要です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2820" src="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.jpg" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-800x600.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-300x225.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-768x576.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0.jpg 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>現場では、構築チームと運用準備チームが分かれ、ドキュメントも処理方式設計書と運用設計書に分断されることがあります。その結果、ログ保持期間を満たすためにどの設定と容量設計が必要なのか、という両者の紐付けが、設計者の頭の中にしか存在しない状態になりがちです。この紐付けを設計書、課題管理、レビューの仕組みで見える化できるかどうかが、運用設計の品質を左右します。</p>
<h2><span id="toc4">運用スクリプトは運用設計で横断的に洗い出す</span></h2>
<p>処理方式設計と運用設計の双方向連携を示す例として、運用スクリプトを考えます。</p>
<p>バックアップ要件をジョブネットで実現するとします。ジョブネットには、バックアップ取得、ログ退避、世代削除、整合性確認、後処理といった個別ジョブが登録されます。それぞれのジョブでは、実行対象となるスクリプト、コマンド、プログラム、製品機能が必要です。</p>
<p>ここで問題になるのが、必要な実行部品を誰が洗い出すのかという点です。バックアップ方式だけを設計していると、バックアップ製品の設定は完了していても、ジョブから呼び出すスクリプトや終了判定処理が漏れることがあります。ジョブネットだけを設計していると、ジョブの箱は並んでいるのに、中で何を実行するのか決まっていないことがあります。運用で必要になるスクリプトや実行処理は、運用設計の中で横断的に洗い出す必要があります。</p>
<p>運用設計で横断的に洗い出すことと、運用設計担当がすべてのスクリプトを作成することは別です。バックアップスクリプトはバックアップ方式の担当、ログ退避スクリプトはログ管理方式の担当、ジョブ制御スクリプトはジョブ設計の担当、起動停止スクリプトはOS・ミドルウェアの担当というように、実際の設計、製造、単体試験は、その仕組みを設計した担当が行うのが基本です。</p>
<p>運用設計側で行うのは横断管理です。必要なスクリプトを一覧化し、用途、呼び出し元となるジョブ・手順・他スクリプト、関連する運用作業、作成担当、完成時期、単体試験の実施有無、後続テストでの確認方法を明確にします。そして、スクリプトの設計、製造、単体試験、ジョブ登録をWBSへ反映し、結合テスト、システムテスト、運用テストに間に合わせます。</p>
<p>この横断管理がないプロジェクトでは、個別の方式設計は完了しているのに、実際の運用に必要なスクリプトだけが作られていない、という事態が起こります。サービス開始直前になって発覚するスクリプト不足やジョブネットの実行エラーの多くは、この横断管理が不足した結果です。運用設計で必要な実行部品を早期に洗い出し、処理方式の担当へ返すことが重要です。</p>
<h2><span id="toc5">運用設計の全体像</span></h2>
<p>システム運用とは、利用者へ提供しているサービスを安定して継続するために、システムを維持管理していく活動です。その運用を成立させるための設計が、運用設計です。全体像は、次の3つに分けて考えると理解しやすくなります。<img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-2876" src="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.jpg" alt="" width="500" height="354" srcset="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-800x566.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-300x212.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-768x543.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213.jpg 1491w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>業務運用設計は、業務機能や実際の業務作業と結びつく領域です。システム基盤運用設計は、サーバ、ネットワーク、ストレージ、ジョブ、監視、ログ、バックアップといった、システムを支える仕組みと強く結びつきます。全体運用設計は、ITILのプラクティスと重なる領域が多く、体制や責任分界、障害・変更管理、サービスレベル管理を扱います。この記事では、主にシステム基盤運用設計を対象とします。</p>
<p>なお、運用手順書一覧、運用スクリプト一覧、ジョブ一覧は、特定の区分だけに属するものではありません。3つの領域で必要になる成果物を横断的に洗い出し、作成担当と期限を管理する必要があります。</p>
<p>関連する工程に、運用テストがあります。運用テストでは、ここで設計した運用フロー、判断基準、承認フロー、復旧方法が実際に運用可能かを確認します。運用設計の品質が低ければ、運用テスト自体が成立しません。障害時の連絡先が分からない、問い合わせの受付方法が決まっていない、誰が業務開始可否を判断するのか分からない。こうした状態を、サービス開始後に残してはいけません。運用テストを含むテスト工程の考え方は、以下の記事で解説しています。</p>
<a href="https://sys-univ.com/dev/v-model-quality-assurance/" title="Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp 160w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-120x68.webp 120w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-320x180.webp 320w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-376x212.webp 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">Vモデルは古い開発手法の話ではなく、要件・設計で決めたことをテストで確認する品質保証の考え方です。バックアップ要件の具体例で各工程の対応関係を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
<h2><span id="toc6">システム基盤運用設計書の目次サンプル</span></h2>
<p>運用設計について調べている人が最も知りたいのは、運用設計書で検討すべき「項目」ではないでしょうか。以下に、システム基盤運用設計書の目次サンプルを示します。</p>
<table style="width: 100%; height: 581px;">
<thead>
<tr style="height: 23px;">
<th style="height: 23px;">項目</th>
<th style="height: 23px;">設計内容</th>
<th style="height: 23px;">留意事項</th>
</tr>
</thead>
<tbody>
<tr style="height: 23px;">
<td style="height: 23px;">システム運転スケジュール</td>
<td style="height: 23px;">オンライン時間帯、夜間バッチ、バックアップ、保守作業、開局前確認などの実行時間を確定する</td>
<td style="height: 23px;">日次、週次、月次、年次、特定日運用を分けて検討する。処理の競合や保守可能時間も確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">ジョブ管理</td>
<td style="height: 23px;">運転スケジュールをジョブ・ジョブネットへ落とし込み、起動条件、前後関係、異常時分岐、再実行条件を確定する</td>
<td style="height: 23px;">ジョブ異常終了だけでなく、開始遅延、終了遅延、長時間実行、後続処理への影響も考慮する</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">システム監視</td>
<td style="height: 47px;">死活、リソース、プロセス、ログ、ジョブ遅延などの監視対象と、注意・警告・異常の判定条件、通知先、一次対応を確定する</td>
<td style="height: 47px;">CPUやディスク使用率は、しきい値だけでなく継続時間、業務時間帯、繰り返し通知の抑止も検討する</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">ログ管理</td>
<td style="height: 47px;">管理対象、出力先、ログレベル、退避、転送、圧縮、保持、削除、参照権限を確定する</td>
<td style="height: 47px;">出力量を見積もり、保存先ごとの容量を算出する。障害調査・監査で必要な期間との整合も確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">バックアップ・リストア管理</td>
<td style="height: 23px;">バックアップ対象、取得時点、整合性、世代、保管先、リストア方式、復旧所要時間、復旧試験方針を確定する</td>
<td style="height: 23px;">業務データだけでなく、設定ファイル、ログ、ジョブ定義などの復旧要否も確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">起動停止</td>
<td style="height: 23px;">システム全体の起動停止対象、順序、実行方法、正常性確認、異常時の扱いを確定する</td>
<td style="height: 23px;">OS、ミドルウェア、DB、アプリケーション、監視機能の依存関係を考慮する</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">開局・閉塞</td>
<td style="height: 47px;">業務開始・終了の条件、確認項目、実施者、判断者、異常時の対応を確定する</td>
<td style="height: 47px;">ジョブ終了だけでなく、運用日付、外部連携、アプリケーション、ミドルウェア、監視再開を確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">運用日付管理</td>
<td style="height: 23px;">運用日付の切替時刻、業務日付・締め処理・夜間バッチとの関係、切替失敗時の扱いを確定する</td>
<td style="height: 23px;">日付の不整合は、締め処理、帳票、外部連携、再実行に影響する</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">異常時運用・エスカレーション</td>
<td style="height: 47px;">ジョブ異常、処理遅延、バックアップ未取得、監視アラート発生時の一次対応、通知先、判断者、顧客連絡、承認ルートを確定する</td>
<td style="height: 47px;">継続、打ち切り、スキップ、業務開始可否などの判断基準は、業務側・システム管理者との合意が必要</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">ユーザ・アカウント管理</td>
<td style="height: 23px;">ユーザ情報の受領、登録、変更、削除、棚卸、認証方式、休職・退職時の扱いを確定する</td>
<td style="height: 23px;">人事異動時期など、大量更新が集中する時期の処理能力と作業体制を確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">アクセス・特権ID管理</td>
<td style="height: 23px;">管理者権限、リモート接続、DBアクセス、ネットワークアクセス、特権IDの利用・承認・記録方法を確定する</td>
<td style="height: 23px;">操作可能な経路、端末、アカウントを限定し、証跡の取得と定期的な棚卸を行う</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">パッチ・脆弱性管理</td>
<td style="height: 23px;">パッチや脆弱性情報の入手、評価、検証、承認、適用、適用後確認、緊急時対応を確定する</td>
<td style="height: 23px;">CVSSだけでなく、対象システムへの影響、攻撃可能性、停止可能時間を考慮する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">マルウェア対策</td>
<td style="height: 23px;">パターンファイルやエンジンの更新、スキャン、検知時の隔離・駆除・報告方法を確定する</td>
<td style="height: 23px;">スキャン時間や負荷が運転スケジュールと競合しないか確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">時刻同期</td>
<td style="height: 23px;">同期先、冗長化、許容時刻差、同期状態の監視、同期異常時の対応を確定する</td>
<td style="height: 23px;">ネットワーク経路、認証、仮想環境やクラウド側の時刻同期方式との整合を確認する</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">変更・リリース管理</td>
<td style="height: 47px;">アプリケーション、設定ファイル、DB変更、ジョブ、スクリプト、クラウド設定などの変更・配布・切り戻し方法を確定する</td>
<td style="height: 47px;">承認、事前確認、バックアップ、リリース後確認、切り戻し条件、構成情報の更新まで含める</td>
</tr>
<tr style="height: 47px;">
<td style="height: 47px;">証明書・鍵・シークレット管理</td>
<td style="height: 47px;">証明書、秘密鍵、APIキー、パスワードなどの発行、保管、配布、更新、失効、棚卸方法を確定する</td>
<td style="height: 47px;">有効期限切れの事前検知、更新担当、保管場所、アクセス権限、自動更新の可否を確認する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">構成・資産管理</td>
<td style="height: 23px;">サーバ、ミドルウェア、クラウドリソース、設定、バージョン、ライセンスなどの構成情報と更新方法を確定する</td>
<td style="height: 23px;">実環境と構成管理情報の乖離を防ぎ、変更・障害調査・監査で参照できる状態を維持する</td>
</tr>
<tr style="height: 23px;">
<td style="height: 23px;">キャパシティ管理</td>
<td style="height: 23px;">CPU、メモリ、ディスク、DB、ネットワーク、処理件数などの収集、評価、予測、増強判断方法を確定する</td>
<td style="height: 23px;">平常時だけでなく、月次、年次、繁忙期、特定時間帯の傾向を確認する</td>
</tr>
</tbody>
</table>
<p>この目次は、IPAの非機能要求グレードなどの確認観点を参考にしながら、実際のプロジェクトで扱いやすい運用作業単位に整理したものです。非機能要件の項目をそのまま設計書の章立てにしても、実際の運用作業との対応が見えにくいことがあります。プロジェクト参画経験から、システム運転、監視、ログ、バックアップ、起動停止といった、実際に発生する運用作業を目次の単位にすることで、検討漏れを減らせると考えています。表の「項目」は、運用設計書の章や節を組み立てる際のたたき台として使えます。</p>
<p>ただし、設計内容だけを書いて終わりではありません。各項目について、実施主体、実施契機・頻度、正常・異常の判断条件、承認者・判断者、入出力情報、運用フロー、必要な手順書、必要なスクリプト・ジョブ、処理方式設計への申し送りも、必要に応じて整理します。要件定義で合意した内容を、どの運用設計項目へ反映するのかを確認しながら進めることが重要です。</p>
<p>ここで挙げた項目は、一般的なシステムにおける最大公約数です。すべてのシステムに同じ項目を適用すればよいわけではありません。外部公開サービスであれば、DDoS対策やWAF運用が必要になるかもしれません。クラウドネイティブなシステムであれば、オートスケーリング、マネージドサービスのメンテナンス通知、クラウドコスト管理を追加することもあります。反対に、小規模なシステムでは、複数の項目を一つの章にまとめることもあります。</p>
<p>重要なのは、テンプレートにシステムを合わせることではありません。システム運用で発生する作業と判断を洗い出し、必要な項目を追加・統合することです。</p>
<p class="font-claude-response-body break-words whitespace-normal">ここで示した運用設計の項目は、基本設計の段階で方針が決まっていることが前提です。</p>
<p class="font-claude-response-body break-words whitespace-normal">運転スケジュール、監視、ログ、バックアップ、開局判定の方針を基本設計でどう決めるのか、基盤SEが見ている設計の全体像は、以下の記事で解説しています。</p>
<p class="font-claude-response-body break-words whitespace-normal">基本設計書の目次と、各章で作成すべき成果物を1つの表で対応させたExcelファイル付きです。運用設計書目次サンプルと2点セットで、設計書の抜け漏れ確認に使えます。</p>
<a href="https://sys-univ.com/dev/basic-design-infrastructure/" title="基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</div><div class="blogcard-snippet internal-blogcard-snippet">基本設計は画面設計だけでは終わらない。ログ・バックアップ・ジョブ・監視など、本番運用を見据えた基盤設計の論点を、ファイルアップロードや夜間バッチの実例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.20</div></div></div></div></a>
<h2><span id="toc7">運用設計は誰がやるのか｜4つの役割と責務分界</span></h2>
<p>システムは構築して終わりではありません。想定した運用を実行できる状態で運用担当へ引き継いで、初めて開発プロジェクトの役割を果たしたといえます。運用設計では、作業内容だけでなく、誰が実施するのかを明確にする必要があります。</p>
<p>役割は契約形態や組織によって異なりますが、一般的には次のように整理できます。</p>
<table>
<thead>
<tr>
<th>関係者</th>
<th>主な役割</th>
</tr>
</thead>
<tbody>
<tr>
<td>システム利用者</td>
<td>システムの機能を利用し、業務を実施する。業務エラーやデータ不備の確認・修正を担う場合もある</td>
</tr>
<tr>
<td>開発・保守担当</td>
<td>アプリケーションや基盤の設計・開発・保守を行う。障害原因の調査、修正、機能追加、方式変更を担当する</td>
</tr>
<tr>
<td>運用担当</td>
<td>監視、ジョブ確認、定型作業、起動停止、一次切り分け、エスカレーションなど、日常的なシステム運用を担当する</td>
</tr>
<tr>
<td>システムオーナー・管理責任者</td>
<td>システムに対する最終的な責任を持ち、重要な判断、予算、リスク受容、業務開始可否、関係者への指示を行う</td>
</tr>
</tbody>
</table>
<p>同じ組織や担当者が複数の役割を兼ねる場合もあります。大切なのは、組織名ではなく責務を明確にすることです。監視アラートが発生したとき、誰が最初に確認するのか。原因調査は誰へ依頼するのか。業務影響は誰が判断するのか。処理を打ち切るかどうかを誰が承認するのか。ここが曖昧なままでは、連絡先一覧があっても運用は回りません。</p>
<p>また、すべての作業を自動化すればよいわけでもありません。頻度が低く、計画時間内に安全に実施できる作業であれば、手動運用を選ぶこともあります。ただし、手動で行う場合でも、実施者、実施時期、必要な権限、作業手順、正常性の確認方法、作業証跡、異常時の対応、承認・報告方法は設計する必要があります。自動化するか手動で残すかを、頻度、工数、リスク、ミスの影響、開発・保守コストから判断すること自体が、運用設計の重要な役割です。</p>
<h2><span id="toc8">まとめ｜運用設計は要件定義から始まっている</span></h2>
<p>運用設計の目的は、システム利用者、運用担当、開発・保守担当、システムオーナーが、それぞれの役割を果たしながら、システムを安定して利用・維持できる状態をつくることです。</p>
<p>運用設計は、運用フェーズに入ってから考えるものではありません。要件定義からすでに始まっており、その骨格は基本設計の段階で決まります。運転スケジュール、ジョブ、監視、ログ、バックアップ・リストア、起動停止、開局・閉塞、運用日付、異常時運用、エスカレーション、運用スクリプト。これらの方針は、システム構成や処理方式とセットで具体化する必要があります。</p>
<p>運用設計側が、何をどのように運用したいかを決める。処理方式設計側が、それをどの仕組みで実現するかを決める。処理方式上の制約が分かれば、運用設計側が運用方法や判断基準を見直す。この双方向の関係を基本設計で押さえていなければ、詳細設計以降でどれだけ頑張っても、本番直前の「必要なスクリプトがない」「ジョブネットが動かない」「バックアップから戻せない」「アラート発生後の対応者がいない」「夜間処理後に業務を開始してよいか判断できない」は防げません。</p>
<p>運用設計は、運用担当へ仕事を押しつけるための設計ではありません。本番稼働後に発生する作業、判断、障害、変更を想定し、システムの仕組みとプロジェクト計画へ反映する設計であり、処理方式と運用設計をつなぎ、本番で運用できるシステムを設計することです。</p>
<p>開発工程全体の流れから確認したい方は、以下のシステム開発入門シリーズも参考にしてください。</p>
<hr />
<p><strong>システム開発入門シリーズ</strong></p>
<div class="entry-content cf">
<p><a href="https://sys-univ.com/dev/system-dev-overview/">【前編】システム開発の流れを現場目線で理解する｜システム開発はプログラミングだけでは終わらない</a></p>
<p><a href="https://sys-univ.com/dev/system-dev-overview-2/">【後編】システム開発の流れを現場目線で理解する｜要件定義・テスト・移行・運用保守のリアル</a></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/opedesign/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【RDS for Oracle】オンプレの調査SQLが動かない｜X$BHを直接参照できない理由</title>
		<link>https://sys-univ.com/tec/dbbc/</link>
					<comments>https://sys-univ.com/tec/dbbc/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 06:32:54 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=823</guid>

					<description><![CDATA[はじめに Oracle DatabaseをオンプレミスからAmazon RDS for Oracleへ移行する際、確認すべきなのは、アプリケーションが正常に動作するかだけではありません。 性能調査、障害解析、ログ取得、セ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>はじめに</strong></p>
<p>Oracle DatabaseをオンプレミスからAmazon RDS for Oracleへ移行する際、確認すべきなのは、アプリケーションが正常に動作するかだけではありません。</p>
<p>性能調査、障害解析、ログ取得、セッション管理など、DBAが日常的に使用している調査手順が、RDS上でも同じように成立するかを確認する必要があります。</p>
<p>本記事で取り上げるのは、DBバッファキャッシュの利用状況を調査する際に使用される<code>X$BH</code>です。</p>
<p>オンプレミスOracleで使用していた<code>X$BH</code>参照SQLを、RDS for Oracleのマスターユーザーで実行すると、次のエラーが発生します。</p>
<pre><code class="language-text">ORA-00942: table or view does not exist
</code></pre>
<p>Oracle Databaseという製品自体は同じです。</p>
<p>しかし、通常のRDS for OracleではSYSとしてログインできず、SYSDBA権限も使用できません。そのため、オンプレミスと同じ方法で<code>SYS.X$BH</code>を直接参照することはできません。</p>
<p>一方、現在のRDS for Oracleには、対応する環境で<code>X$BH</code>を基にした<code>SYS.RDS_X$BH</code>ビューを作成する仕組みがあります。</p>
<p>また、調査の目的によっては、Oracleが公開している動的パフォーマンスビュー<code>V$BH</code>によって必要な情報を取得できます。</p>
<p>本記事では、RDS for Oracleで<code>SYS.X$BH</code>を直接参照できない理由と、現在利用できる代替手段を整理します。</p>
<p>RDS for Oracleでは、X$BH以外にも、SYSDBA権限、OSアクセス、ストレージ操作、ログ取得など、オンプレミスの運用前提がそのまま通用しない場面があります。</p>
<p>RDS for Oracle全体の設計ギャップと代替アプローチについては、以下の記事で整理しています。</p>
<a href="https://sys-univ.com/aws/rdsforora/" title="RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/10/d7bb56e19653eac87bd60efd95bd459f.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for Oracleではオンプレ運用の前提が通用しない。Storage-Full、アーカイブログ、SSH不可など、開発中に見えた9つの設計ギャップと代替アプローチを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.12</div></div></div></div></a>
<!-- /wp:post-content -->
<h2><span id="toc1">今回調べたいのはDBバッファキャッシュの内訳</span></h2>
<p>Oracle DatabaseのSGAには、データブロックを保持するDBバッファキャッシュがあります。</p>
<p>SQLによって読み込まれたデータブロックをメモリ上に保持しておくことで、同じブロックが再び必要になった際に、ストレージから読み込む処理を減らせます。</p>
<p>更新されたブロックについても、即座にすべてがデータファイルへ書き込まれるわけではありません。更新済みのブロックはバッファキャッシュ上に保持され、DBWRによって適切なタイミングで書き出されます。</p>
<p>このように、DBバッファキャッシュはOracle DatabaseのI/O性能に大きく関係するメモリ領域です。</p>
<p>ただし、バッファキャッシュは大きければ大きいほどよい、というものではありません。</p>
<p>DBインスタンスで利用できるメモリには上限があります。SGAに多く割り当てれば、その分だけPGAやOS、RDSの管理プロセスが利用できるメモリは少なくなります。</p>
<p>例えば、アプリケーションの機能追加によって同時接続数や処理量が増え、PGAの総使用量が増える可能性があるとします。</p>
<p>DBインスタンス全体のメモリに余裕がなければ、PGAに必要なメモリを確保するため、SGAを縮小できるか検討することになります。</p>
<p>SGAには、DBバッファキャッシュのほかにも、共有プール、ラージプール、Javaプール、REDOログバッファなどがあります。</p>
<p>その中でDBバッファキャッシュの縮小余地を検討する場合、まず確認したいのが、</p>
<blockquote>
<p>どのテーブルやインデックスのブロックが、バッファキャッシュ上にどの程度存在しているか</p>
</blockquote>
<p>という内訳です。</p>
<h2><span id="toc2">オンプレミスではX$BHを参照できる</span></h2>
<p>オンプレミスOracleでは、DBバッファキャッシュの内部状態を詳しく調べるために、<code>X$BH</code>を参照する方法があります。</p>
<p><code>X$BH</code>は、一般的なアプリケーション表や通常のデータディクショナリビューではありません。</p>
<p>Oracleが内部的に管理しているバッファヘッダーの情報を参照するための固定表です。</p>
<p>どのデータオブジェクトのブロックがバッファキャッシュ上に存在するかだけでなく、<code>LRU_FLAG</code>や<code>TCH</code>など、バッファの利用状況を分析するための詳細な情報も保持しています。</p>
<p>例えば、<code>TCH</code>はバッファへのアクセス状況を調べる際に利用される情報です。</p>
<p>Oracle公式ドキュメントでは、<code>X$BH.TCH</code>はバッファのタッチカウントとして説明されており、値が高いブロックはホットブロックの候補になるとされています。</p>
<p>一般的には、次のような流れで調査します。</p>
<ol>
	<li>
<p>SGAとPGAの使用状況を確認する</p>
</li>
	<li>
<p>DBバッファキャッシュがSGA内で占める容量を確認する</p>
</li>
	<li>
<p>X$BHとDBA_OBJECTSを結合する</p>
</li>
	<li>
<p>オブジェクトごとのキャッシュブロック数を集計する</p>
</li>
	<li>
<p>キャッシュ上で大きな割合を占めるテーブルやインデックスを確認する</p>
</li>
	<li>
<p>SQL、実行計画、物理読み込みなどの情報と照合する</p>
</li>
</ol>
<p>重要なのは、特定のオブジェクトが大量にキャッシュされているだけでは、直ちに問題とは判断できないことです。</p>
<p>業務で頻繁に参照されるテーブルであれば、多くのブロックがキャッシュされていること自体は正常です。物理読み込みを減らし、性能向上に寄与している可能性があります。</p>
<p>一方で、利用頻度の低い大規模バッチが大量のブロックを読み込み、オンライン処理で必要なブロックをキャッシュから押し出している場合には、SQLや実行計画を見直す余地があります。</p>
<p>そのため、X$BHの結果だけでチューニングの要否を判断するのではなく、AWR、Statspack、SQL統計、待機イベント、実行計画などと組み合わせて評価する必要があります。</p>
<h2><span id="toc3">同じSQLをRDSで実行するとORA-00942になる</span></h2>
<p>オンプレミスで使用しているX$BH参照SQLを、そのままRDS for Oracleのマスターユーザーで実行すると、次のエラーが発生します。</p>
<pre><code class="language-text">ORA-00942: table or view does not exist
</code></pre>
<p>このエラーだけでは、対象オブジェクトが存在しないのか、実行ユーザーに参照権限がないのかを判別できません。</p>
<p>Oracleでは、存在する表やビューであっても、実行ユーザーに必要なアクセス権限がない場合、ORA-00942が返ることがあります。</p>
<p>そのため、最初に考えられるのは、マスターユーザーに対する権限不足です。</p>
<p>しかし、<code>X$BH</code>のようなX$固定表は、通常の表やビューと同じ方法で、RDSのマスターユーザーへ参照権限を追加できるオブジェクトではありません。</p>
<p>AWSの公式ドキュメントでは、<code>SYS.X$</code>固定表はSYSだけが直接アクセスできる内部システムオブジェクトとして扱われています。通常のRDS for OracleではSYSとしてログインできないため、マスターユーザーに通常のGRANTを追加し、オンプレミスと同じ参照方法を再現することはできません。</p>
<h2><span id="toc4">RDSのマスターユーザーはSYSDBAではない</span></h2>
<p>RDS for OracleのDBインスタンスを作成すると、マスターユーザーにはDBA権限が付与されます。</p>
<p>ただし、オンプレミスでSYSDBA権限を持つユーザーと、完全に同じ操作ができるわけではありません。</p>
<p>通常のRDS for Oracleでは、利用者は<code>SYS</code>、<code>SYSTEM</code>など、Oracleがあらかじめ用意している管理ユーザーを使用できません。また、マスターユーザーにSYSDBA権限を付与することもできません。</p>
<p>Amazon RDSはマネージドサービスです。</p>
<p>バックアップ、パッチ適用、障害復旧、基盤監視などの一部をAWSが管理する代わりに、利用者が実行できるデータベース管理操作には一定の制限があります。</p>
<p>そのため、マスターユーザーにDBA権限が与えられていても、すべてのシステム権限やOracle内部オブジェクトへのアクセスが許可されるわけではありません。</p>
<p>今回参照しようとしている<code>X$BH</code>は、SYSだけが直接アクセスできるOracle内部の固定表です。</p>
<p>オンプレミスでSYSまたはSYSDBA権限を持つユーザーから参照できていても、RDSのマスターユーザーから同じ名前で直接参照することはできません。</p>
<h2><span id="toc5">grant_sys_objectでも何でも参照できるわけではない</span></h2>
<p>RDS for Oracleでは、SYSが所有する一部のオブジェクトについて、次のRDS管理パッケージを使用し、別のデータベースユーザーへ権限を付与できます。</p>
<pre><code class="language-sql">rdsadmin.rdsadmin_util.grant_sys_object
</code></pre>
<p>例えば、SYSが所有するデータディクショナリビューやパッケージに対して、<code>SELECT</code>権限や<code>EXECUTE</code>権限を付与する際に利用します。</p>
<p>ただし、このプロシージャを使用すれば、すべてのSYSオブジェクトへ自由にアクセスできるわけではありません。</p>
<p><code>grant_sys_object</code>で付与できるのは、マスターユーザー自身がロールまたは直接付与によって保持している権限に限られます。</p>
<p>マスターユーザー自身が持っていない権限を、このプロシージャによって新たに作り出すことはできません。</p>
<p>したがって、マスターユーザー自身が<code>SYS.X$BH</code>を直接参照できない環境では、<code>grant_sys_object</code>を使って他のユーザーへX$BHの参照権限を付与することもできません。</p>
<p>オンプレミスで使用しているSQLがRDSで実行できなかった場合、</p>
<pre><code class="language-text">権限が足りない
　↓
GRANTを追加する
　↓
解決する
</code></pre>
<p>という単純な流れでは解決できないことがあります。</p>
<p>RDSで許可されている機能の中から、調査目的を満たせる別のビューや、RDS固有の管理プロシージャを探す必要があります。</p>
<h2><span id="toc6">現在はSYS.RDS_X$BHを作成できる</span></h2>
<p>現在のRDS for Oracleには、対象となるX$固定表を基に、<code>SYS.RDS_X$</code>ビューを作成する仕組みがあります。</p>
<p>対応環境では、次のプロシージャを実行することで、RDS_X$ビューの作成対象として認められているX$固定表を確認できます。</p>
<pre><code class="language-sql">SELECT *
FROM TABLE(
    rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
);
</code></pre>
<p>実際に利用する際は、対象環境でこのプロシージャを実行し、その時点の一覧に<code>X$BH</code>が含まれていることを確認します。</p>
<p>対象として表示された環境では、次のプロシージャによって、X$BHを基にしたRDS_X$ビューを作成できます。</p>
<pre><code class="language-sql">EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$BH');
</code></pre>
<p>作成されるビュー名は、元のX$固定表名に<code>RDS_</code>が付いた形式です。</p>
<pre><code class="language-text">SYS.RDS_X$BH
</code></pre>
<p>作成されたRDS_X$ビューに対しては、マスターユーザーへ<code>SELECT WITH GRANT OPTION</code>が付与されます。必要に応じて、マスターユーザーから別のデータベースユーザーへ参照権限を付与できます。</p>
<h2><span id="toc7">RDS_X$ビューを利用できる環境</span></h2>
<p>AWSの公式ドキュメントでは、RDS_X$ビューを利用できる環境として、次の条件が示されています。</p>
<ul>
	<li>
<p>一度もアップグレードされていない既存DBインスタンスで、19cまたは21cの2023年10月以降の対象リリースを使用している</p>
</li>
	<li>
<p>新規に作成したDBインスタンス</p>
</li>
	<li>
<p>エンジンをアップグレードした既存DBインスタンス</p>
</li>
</ul>
<p>一度もアップグレードされていない既存インスタンスでは、19cは<code>19.0.0.0.ru-2023-10.rur-2023-10.r1</code>以降、21cは<code>21.0.0.0.ru-2023-10.rur-2023-10.r1</code>以降が対象として示されています。</p>
<p>ただし、利用条件や作成対象となるX$固定表は、今後変更される可能性があります。</p>
<p>実際に使用する際は、記事に記載されたバージョン情報だけで判断せず、次の2点を確認する必要があります。</p>
<ul>
	<li>
<p>最新のAWS公式ドキュメントを確認する</p>
</li>
	<li>
<p>対象環境で<code>list_allowed_sys_x$_views</code>を実行する</p>
</li>
</ul>
<h2><span id="toc8">RDS_X$ビューを本番で使う場合の注意点</span></h2>
<p>RDS_X$ビューを作成できるからといって、通常のデータディクショナリビューと同じ感覚で使用してよいわけではありません。</p>
<p>RDS_X$ビューの基になっているX$固定表は、Oracleの内部システムオブジェクトです。その構造や動作は、一般的な公開インターフェースとして保証されていません。</p>
<p>AWSは、特定のRDS_X$ビューを非本番環境で検証し、本番環境ではOracle Supportのガイダンスの下で作成することを推奨しています。</p>
<p>また、X$固定表の構造は、エンジンアップグレードの前後で同じであることが保証されていません。</p>
<p>RDS for Oracleでは、エンジンアップグレード時に既存のRDS_X$ビューが削除され、アップグレード後のX$固定表を基に再作成されます。その後、マスターユーザーには<code>SELECT WITH GRANT OPTION</code>が再び付与されます。</p>
<p>ただし、マスターユーザー以外のデータベースユーザーへ付与していた権限は、自動的には復元されません。アップグレード後に、必要なユーザーへ権限を再付与する必要があります。</p>
<p>RDS_X$ビューを監視や定期調査へ組み込む場合は、次の点を運用設計へ反映します。</p>
<ul>
	<li>
<p>対象のX$固定表が作成対象に含まれているか確認する</p>
</li>
	<li>
<p>非本番環境でSQLの動作と負荷を検証する</p>
</li>
	<li>
<p>エンジンアップグレード後にビューの状態を確認する</p>
</li>
	<li>
<p>マスターユーザー以外へ付与した権限を再設定する</p>
</li>
	<li>
<p>アップグレード後も必要な列が存在するか確認する</p>
</li>
	<li>
<p>列構造や挙動を公開仕様として前提にしない</p>
</li>
</ul>
<p><code>RDS_X$BH</code>を作成すれば、対象環境において<code>LRU_FLAG</code>や<code>TCH</code>など、V$BHでは確認できない情報を参照できる可能性があります。</p>
<p>ただし、X$固定表の列構造は公開仕様ではありません。特定の列が将来にわたって同じ形で存在することを前提にした監視や運用は避けるべきです。</p>
<h2><span id="toc9">X$BHを調査する3つの方法</span></h2>
<p>RDS for OracleにおけるX$BHの扱いは、次のように整理できます。</p>
<table>
<thead>
<tr>
<th>調査方法</th>
<th>RDSでの利用</th>
<th>特徴</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>SYS.X$BH</code>を直接参照</td>
<td>通常のRDS for Oracleでは不可</td>
<td>SYSだけが直接アクセスできる内部固定表</td>
</tr>
<tr>
<td><code>SYS.RDS_X$BH</code>を作成</td>
<td>対応環境で可能</td>
<td>X$BHを基にしたRDS用ビュー。非本番での検証が必要</td>
</tr>
<tr>
<td><code>V$BH</code>を参照</td>
<td>必要な参照権限があれば可能</td>
<td>Oracle公式リファレンスに記載された動的パフォーマンスビュー</td>
</tr>
</tbody>
</table>
<p>したがって、現在のRDS for Oracleについては、次のように理解する必要があります。</p>
<blockquote>
<p>通常のRDS for Oracleでは、SYS.X$BHを直接参照できない。ただし、対応環境ではSYS.RDS_X$BHを作成できる。</p>
</blockquote>
<p>「SYS.X$BHを直接参照できないこと」と、「X$BHを基にした情報を一切取得できないこと」は同じではありません。</p>
<h2><span id="toc10">それでもV$BHを知っておく理由</span></h2>
<p>ここで一つ疑問が出てきます。</p>
<p><code>RDS_X$BH</code>を作成し、対象環境で<code>LRU_FLAG</code>や<code>TCH</code>などの必要な列を参照できるのであれば、<code>V$BH</code>を使った代替調査は不要ではないか、という疑問です。</p>
<p>しかし、必ずしもそうとは限りません。</p>
<p><code>RDS_X$BH</code>は、Oracle内部の非公開オブジェクトを基にしたビューです。</p>
<p>作成対象となるX$固定表や列構造、アップグレード後の互換性を、公開仕様として前提にすることはできません。</p>
<p>また、本番環境で利用する前に、非本番環境での検証やOracle Supportへの確認が推奨されています。</p>
<p>一方、<code>V$BH</code>はOracleの公式リファレンスに記載された動的パフォーマンスビューです。</p>
<p><code>V$BH</code>からは、バッファの状態、ファイル番号、ブロック番号、データオブジェクト番号、表領域番号などを取得できます。</p>
<p>必要な参照権限を持つユーザーであれば、RDS_X$ビューを新たに作成せずに利用できます。</p>
<p>そのため、今回のように、</p>
<blockquote>
<p>バッファキャッシュ上に、どのオブジェクトのブロックが何件存在するか確認したい</p>
</blockquote>
<p>という目的であれば、まずV$BHで必要な情報を取得できるか検討するのが現実的です。</p>
<p>V$BHでは不足する情報があり、<code>LRU_FLAG</code>や<code>TCH</code>などX$BH固有の情報が調査上どうしても必要になった場合に、RDS_X$BHの作成を検討するという順序が考えられます。</p>
<p>ただし、V$BHはX$BHの完全な代替ではありません。</p>
<p>V$BHから取得できる情報と取得できない情報を区別し、調査目的に応じて使い分ける必要があります。</p>
<h2><span id="toc11">同じOracleでも運用方法まで同じとは限らない</span></h2>
<p>今回の事例で重要なのは、X$BHという一つの内部表を参照できるかどうかだけではありません。</p>
<p>RDS for Oracleでは、Oracle Databaseという同じエンジンを使用していても、管理権限や調査方法までオンプレミスと同じになるわけではありません。</p>
<p>移行前には、アプリケーションのSQLや接続方式だけでなく、次のようなDBA運用についても確認する必要があります。</p>
<ul>
	<li>
<p>性能問題が起きた際に必要な情報を取得できるか</p>
</li>
	<li>
<p>障害解析で利用しているビューやパッケージを参照できるか</p>
</li>
	<li>
<p>SYSDBAを前提とした運用手順が残っていないか</p>
</li>
	<li>
<p>Oracle内部表に依存した監視や調査を行っていないか</p>
</li>
	<li>
<p>RDS固有のプロシージャで代替できるか</p>
</li>
	<li>
<p>代替した場合に取得できなくなる情報はないか</p>
</li>
	<li>
<p>本番環境で使用する前に非本番環境で検証できるか</p>
</li>
	<li>
<p>エンジンアップグレード後も同じ手順を利用できるか</p>
</li>
	<li>
<p>アップグレード時に再設定が必要な権限はないか</p>
</li>
</ul>
<p>オンプレミスの運用手順書に記載されたSQLを、そのままRDSへ移植するだけでは不十分です。</p>
<p>重要なのは、既存のコマンドをそのまま再現することではありません。</p>
<p>そのSQLを何のために実行しているのかを整理し、RDSで利用可能な手段によって同じ調査目的を満たせるか検証することです。</p>
<p>今回の目的は、DBバッファキャッシュ上に存在するオブジェクトと、そのキャッシュブロック数を把握することでした。</p>
<p>この目的に限定すれば、Oracleが公開している動的パフォーマンスビュー<code>V$BH</code>を使って調査する方法があります。</p>
<p>一方、V$BHでは、X$BHが持つすべての内部情報を確認できるわけではありません。<code>LRU_FLAG</code>や<code>TCH</code>など、V$BHからは取得できない情報もあります。</p>
<!-- wp:paragraph -->
<p><code>V$BH</code>を使ってオブジェクトごとのキャッシュ量を確認するSQLと、<code>X$BH</code>から置き換える際の注意点については、以下の記事で詳しく解説しています。</p>
<a href="https://sys-univ.com/tec/rds-oracle-vbh-buffer-cache/" title="【RDS for Oracle】V$BHでバッファキャッシュの内訳を調査する｜X$BHの代替方法" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/668dae24cf7c9fd31ae6a1096db3c3cd-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/668dae24cf7c9fd31ae6a1096db3c3cd-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/668dae24cf7c9fd31ae6a1096db3c3cd-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/668dae24cf7c9fd31ae6a1096db3c3cd-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/668dae24cf7c9fd31ae6a1096db3c3cd-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【RDS for Oracle】V$BHでバッファキャッシュの内訳を調査する｜X$BHの代替方法</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for OracleでV$BHを使い、オブジェクト別のバッファキャッシュ量を調査する方法を解説。DATA_OBJECT_IDを使ったSQL、X$BHとの違い、結果の見方と実行時の注意点を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
<h2><span id="toc12">まとめ</span></h2>
<!-- /wp:paragraph -->
<!-- wp:paragraph /-->
<p>通常のRDS for Oracleでは、SYSまたはSYSTEMとしてログインできず、SYSDBA権限も使用できません。</p>
<p>そのため、オンプレミスと同じ方法で<code>SYS.X$BH</code>を直接参照することはできません。</p>
<p>ただし、現在のRDS for Oracleでは、対応する環境であれば、次のプロシージャを使用して<code>SYS.RDS_X$BH</code>ビューを作成できます。</p>
<pre><code class="language-sql">EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$BH');
</code></pre>
<p>したがって、RDS for OracleにおけるX$BHの利用については、次の3点を区別する必要があります。</p>
<ul>
	<li>
<p><code>SYS.X$BH</code>を直接参照できるか</p>
</li>
	<li>
<p><code>SYS.RDS_X$BH</code>を作成できる環境か</p>
</li>
	<li>
<p><code>V$BH</code>で調査目的を代替できるか</p>
</li>
</ul>
<p>RDS_X$BHを利用できる環境であっても、X$固定表はOracle内部の非公開オブジェクトです。</p>
<p>本番環境へ導入する際は、非本番環境での検証、エンジンアップグレード後の確認、他ユーザーへの権限再付与などを考慮する必要があります。</p>
<p>RDS移行では、データベースエンジンが同じであっても、オンプレミスと同じDBA権限や調査方法が提供されるとは限りません。</p>
<p>アプリケーションの互換性だけでなく、性能調査や障害解析を含む運用手順についても、移行前のPoCで確認しておく必要があります。</p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/dbbc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle 19c更改後に実行計画が変わる――パーティション削除時の統計情報更新と影響調査漏れ</title>
		<link>https://sys-univ.com/dev/oracle-19c-partition-statistics-execution-plan/</link>
					<comments>https://sys-univ.com/dev/oracle-19c-partition-statistics-execution-plan/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Wed, 22 Jul 2026 03:16:41 +0000</pubDate>
				<category><![CDATA[トラブル]]></category>
		<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2887</guid>

					<description><![CDATA[はじめに Oracle Databaseを19cへ更改した後、最初の年次処理を終えた直後から、一部SQLの性能が急激に悪化し、夜間バッチの処理時間へ影響が及びました。 SQLもアプリケーションも変えていません。統計収集ジ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">Oracle Databaseを19cへ更改した後、最初の年次処理を終えた直後から、一部SQLの性能が急激に悪化し、夜間バッチの処理時間へ影響が及びました。</p>


<p class="wp-block-paragraph">SQLもアプリケーションも変えていません。統計収集ジョブも実行していません。それにもかかわらず、実行計画だけが変わっていました。</p>


<p class="wp-block-paragraph">原因は、Oracle 19cで追加された、パーティションメンテナンス時に統計情報が更新される仕様でした。従来から実施していたパーティション削除を契機として表統計の一部だけが更新され、実行計画が変化した結果、SQL性能が悪化していました。</p>


<p class="wp-block-paragraph">この障害の本質は、Oracleの仕様そのものではありません。非互換情報の確認だけでは捉えられない「新機能による内部動作の変更」が、更改時の影響調査から漏れていたことです。同じ構図の見落としは、OracleでもAWSでもLinuxでも起こり得ます。</p>


<p class="wp-block-paragraph">本記事では、この事例を題材に、原因調査で確認した証跡、対策の設計判断、更改プロジェクトとして追加すべき影響調査と試験の観点を整理します。</p>


<h2 class="wp-block-heading"><span id="toc1">発端は更改後最初の年次処理だった</span></h2>


<p class="wp-block-paragraph">ある基幹システムでは、Oracle Databaseの更改後、最初の年次処理として保存期間を超えたデータをパーティション削除で整理していました。旧環境から長年継続している定期メンテナンスで、SQL、アプリケーション、運用手順のいずれにも性能へ影響するような変更は加えていません。</p>


<p class="wp-block-paragraph">年次処理が終了した直後から、一部SQLの応答が悪化し始めました。</p>


<p class="wp-block-paragraph">最初に疑ったのは、アプリケーション側の変更です。変更履歴を確認しても、性能劣化につながる修正は見つかりません。次に疑ったのは統計情報ですが、運用担当者が対象表へ統計収集を実行した記録もありませんでした。</p>


<p class="wp-block-paragraph">処理内容もSQLも統計収集も、利用者側は何も変えていない。それでも更改後の環境では、SQLの性能特性だけが変わっていました。</p>


<p class="wp-block-paragraph">この時点で、利用者側の変更を探す調査は行き詰まりました。残る可能性は、旧バージョンと19cの間で、Oracle内部の動作そのものが変わっていることです。調査の焦点を、アプリケーションからOracleの内部動作へ切り替えました。</p>


<h2 class="wp-block-heading"><span id="toc2">Oracle 19cへの更改で顕在化した統計情報の更新</span></h2>


<p class="wp-block-paragraph">調査を進めた結果、パーティションメンテナンス時にOracleが統計情報を更新する動作が関係していることが分かりました。</p>


<p class="wp-block-paragraph">この動作は、My Oracle Supportの次の文書でも、Oracle Database 19cにおけるパーティション表の統計情報変更として整理されています。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Partitioned Table Statistics Changed After Truncate Partition or Drop Partition Operation</strong><br />
<strong>MOS Doc ID 2970098.1</strong></p>
</blockquote>


<p class="wp-block-paragraph">Oracle Database 19cのSQL Tuning Guideにも、パーティションメンテナンスに伴う統計情報の処理が「Online Statistics Gathering for Partition Maintenance Operations」として記載されています。</p>


<p class="wp-block-paragraph">ここで区別しなければならないのは、すべてのパーティション操作で同じ統計収集処理が実行されるわけではないことです。</p>


<p class="wp-block-paragraph">パーティションメンテナンスには、次のような操作があります。</p>


<ul id="187f0994-efd6-4b79-aa41-dd56ffe3ff65" class="wp-block-list">
	<li>DROP PARTITION</li>


	<li>TRUNCATE PARTITION</li>


	<li>MOVE PARTITION</li>


	<li>MERGE PARTITION</li>


	<li>COALESCE PARTITION</li>


	<li>SPLIT PARTITION</li>
</ul>


<p class="wp-block-paragraph">MOVE PARTITIONやMERGE PARTITIONなど、データの移動やダイレクトパス書き込みを伴う処理では、操作内容に応じてオンライン統計収集が行われる場合があります。</p>


<p class="wp-block-paragraph">本事例で問題となったDROP PARTITIONでは、DBMS_STATS.GATHER_TABLE_STATSに相当する全統計収集が実行されたわけではありません。パーティション削除に合わせて、グローバル表統計のNUM_ROWSやBLOCKSなどがOracle内部で更新されました。</p>


<p class="wp-block-paragraph">運用担当者が統計収集ジョブを実行していなくても、統計情報の一部はパーティション操作によって変化します。</p>


<p class="wp-block-paragraph">「統計情報を収集していない」という運用上の認識と、「統計情報が変化していない」というデータベース上の事実は同じではありません。</p>


<p class="wp-block-paragraph">この違いを認識していなければ、性能劣化の調査でアプリケーション、SQL、負荷状況だけを追い続け、実行計画を変化させた統計情報の更新を見落とすことになります。</p>


<h2 class="wp-block-heading"><span id="toc3">なぜデータを削除した後にSQLが遅くなるのか</span></h2>


<p class="wp-block-paragraph">この動作は旧環境では発生しておらず、19cへの更改後に初めて顕在化しました。</p>


<p class="wp-block-paragraph">データを削除すれば処理対象が減るため、SQLも速くなるように思えます。</p>


<p class="wp-block-paragraph">今回の事象では、パーティション削除後にSQL性能が悪化しました。</p>


<p class="wp-block-paragraph">原因を理解するには、Oracleのオプティマイザが利用する統計情報を、表統計とカラム統計に分けて考える必要があります。</p>


<p class="wp-block-paragraph">表統計には、表全体の規模を示す情報が含まれます。代表的な項目はNUM_ROWS、BLOCKS、AVG_ROW_LENです。</p>


<p class="wp-block-paragraph">カラム統計には、列の値がどのように分布しているかを示す情報が含まれます。代表的な項目には、個別値数を示すNDV、LOW_VALUE、HIGH_VALUE、NULL数、ヒストグラムなどがあります。</p>


<p class="wp-block-paragraph">DROP PARTITIONを実行すると、削除されたパーティションを反映して、表全体の行数やブロック数を示す統計が更新されます。カラム統計やヒストグラムまで、同じタイミングで整合した状態へ再収集されるわけではありません。</p>


<p class="wp-block-paragraph">この状態では、オプティマイザが参照する統計情報に異なる時点の情報が混在します。</p>


<p class="wp-block-paragraph">表統計は、パーティション削除後の表が以前より小さくなったことを示しています。カラム統計は、削除前の値分布を前提とした状態で残っています。</p>


<p class="wp-block-paragraph">オプティマイザは、表統計とカラム統計を使って、検索条件へ該当する行数を推定します。両者の前提が一致していなければ、カーディナリティ推定が実際のデータ分布から外れる可能性があります。</p>


<p class="wp-block-paragraph">カーディナリティ推定が変わると、索引を使うか全表走査を選ぶか、Nested LoopsとHash Joinのどちらを使うか、どの表を駆動表とするかといった判断も変わります。結合順序や並列実行の選択まで変化することがあります。</p>


<p class="wp-block-paragraph">本件では、統計情報が更新されたという事実だけで性能が悪化したのではありません。</p>


<p class="wp-block-paragraph">表統計の一部だけが更新され、既存のカラム統計との前提が一致しない状態が次回の統計収集まで残った結果、<strong>カーディナリティ推定が変化し、従来とは異なる実行計画が選択</strong>されました。</p>


<p class="wp-block-paragraph">たとえば本件では、パーティション削除後にNUM_ROWSが大幅に減少した統計を基に、オプティマイザが従来とは異なるアクセスパスを選択したと推定されます。統計上は小さく見える表に対してIndex Range ScanよりFull Table Scanのコストが低いと判断されたり、結合方式がNested LoopsからHash Joinへ変わったりすることで、実業務データの実際の件数との乖離が性能劣化として現れます。</p>


<p class="wp-block-paragraph">統計情報の更新は、常に性能改善を意味するものではありません。どの統計が、どの単位で、どの範囲まで更新されたのかを確認しなければ、オプティマイザが参照している情報の状態を正しく把握できません。</p>


<h2 class="wp-block-heading"><span id="toc4">調査で確認した証跡</span></h2>


<p class="wp-block-paragraph">性能障害を説明するには、「パーティションを削除した」「統計情報が変わった」「SQLが遅くなった」という個別の事実だけでは十分ではありません。</p>


<p class="wp-block-paragraph">重要なのは、それらの出来事が<strong>同じ時間軸で発生していること</strong>を確認することです。</p>


<p class="wp-block-paragraph">今回の調査では、AWR、実行計画、統計情報の更新時刻を組み合わせ、原因と結果を時系列で整理しました。</p>


<h3 class="wp-block-heading"><span id="toc5">AWRでSQL性能の変化を確認する</span></h3>


<p class="wp-block-paragraph">最初に確認したのは、AWRに記録されたSQL性能の変化です。</p>


<p class="wp-block-paragraph">年次処理の終了後から対象SQLの負荷が増加しており、単純に実行回数が増えたのではなく、1回当たりの処理コストそのものが悪化していました。</p>


<p class="wp-block-paragraph">主に確認した項目は次のとおりです。</p>


<ul id="00373a11-2ca9-49a2-81b5-a47e0d9d0f7a" class="wp-block-list">
	<li>Elapsed Time</li>


	<li>CPU Time</li>


	<li>Buffer Gets</li>


	<li>Disk Reads</li>


	<li>Executions</li>


	<li>Rows Processed</li>
</ul>


<p class="wp-block-paragraph">これらは合計値だけでは判断できません。</p>


<p class="wp-block-paragraph">たとえばElapsed Timeが増加していても、単純に実行回数が増えただけであれば異常とは言えません。</p>


<ul id="04074422-6e2a-4076-ab92-03dc3135bc26" class="wp-block-list">
	<li>1実行当たりのElapsed Time</li>


	<li>1実行当たりのBuffer Gets</li>
</ul>


<p class="wp-block-paragraph">まで確認し、SQLそのものの性能が変化したことを確認しました。</p>


<h3 class="wp-block-heading"><span id="toc6">実行計画が変わっていないかを確認する</span></h3>


<p class="wp-block-paragraph">次に確認したのは実行計画です。</p>


<p class="wp-block-paragraph">AWRやDBA_HIST_SQLSTAT、DBA_HIST_SQL_PLANを調査すると、対象SQLでは性能悪化前後でPLAN_HASH_VALUEが変化していました。</p>


<p class="wp-block-paragraph">PLAN_HASH_VALUEが変わるということは、少なくともOracleが異なる実行計画を選択したことを意味します。</p>


<p class="wp-block-paragraph">もちろん、PLAN_HASH_VALUEだけでは原因を断定できません。</p>


<p class="wp-block-paragraph">実際には、</p>


<ul id="decc2bc5-d8f9-4394-9cd5-44850c084795" class="wp-block-list">
	<li>アクセスパス</li>


	<li>結合方式</li>


	<li>結合順序</li>


	<li>推定行数（Cardinality）</li>


	<li>実際の処理行数</li>
</ul>


<p class="wp-block-paragraph">まで確認し、オプティマイザがどの判断を変更したのかを追跡しました。</p>


<h3 class="wp-block-heading"><span id="toc7">統計情報はいつ変わったのか</span></h3>


<p class="wp-block-paragraph">最後に、統計情報そのものを確認しました。</p>


<p class="wp-block-paragraph">DBA_TAB_STATISTICSを見ると、パーティション削除を実施した時刻を境に、対象表の統計情報が更新されていました。</p>


<p class="wp-block-paragraph">確認した主な項目は次の三つです。</p>


<ul id="4d38f674-8ecb-4588-a2f3-bc769e7f94b7" class="wp-block-list">
	<li>NUM_ROWS</li>


	<li>BLOCKS</li>


	<li>LAST_ANALYZED</li>
</ul>


<p class="wp-block-paragraph">運用では統計収集ジョブを実行していないにもかかわらず、これらの値はパーティション削除のタイミングで変化していました。</p>


<p class="wp-block-paragraph">さらに、DBA_TAB_COL_STATISTICSやヒストグラム関連ビューも確認したところ、カラム統計は従来の状態を保持していました。</p>


<ul id="5448d9a1-9549-4b2b-9214-a85c9fb1f9fe" class="wp-block-list">
	<li>表統計は更新されている</li>


	<li>カラム統計は更新されていない</li>
</ul>


<p class="wp-block-paragraph">という状態になっていたことが分かります。</p>


<p class="wp-block-paragraph">この結果は、前章で説明した「表統計とカラム統計の前提が一致しない状態」が実際に発生していたことを裏付ける証拠となりました。</p>


<h3 class="wp-block-heading"><span id="toc8">時系列で整理すると原因が見えてくる</span></h3>


<p class="wp-block-paragraph">今回の調査結果を時系列で整理すると、次の流れになります。</p>


<pre class="wp-block-code"><code>年次処理でDROP PARTITION
        ↓
Oracle内部で表統計の一部が更新
        ↓
表統計とカラム統計の前提が一致しない
        ↓
オプティマイザのカーディナリティ推定が変化
        ↓
実行計画が変更される
        ↓
PLAN_HASH_VALUEの変化として観測される
        ↓
Elapsed Time・Buffer Getsが増加</code></pre>


<p class="wp-block-paragraph">この流れは、一つのビューだけを見て導いたものではありません。</p>


<p class="wp-block-paragraph">パーティション操作の実施時刻、統計情報の更新時刻、実行計画の変化、AWRに記録された性能指標を同じ時間軸へ並べることで、初めて因果関係を説明できます。</p>


<p class="wp-block-paragraph">性能障害の調査では、「実行計画が変わった」「統計情報が更新された」という個別の事実だけを示しても説得力はありません。</p>


<p class="wp-block-paragraph"><strong>複数の証跡を時系列で結び付けて初めて、性能劣化の原因を論理的に説明できます。</strong></p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<h2 class="wp-block-heading"><span id="toc9">問題はOracleではなく影響調査の範囲だった</span></h2>


<p class="wp-block-paragraph">Oracleは仕様どおりに動作していました。</p>


<p class="wp-block-paragraph">本件の問題は、パーティションメンテナンスに伴う統計情報の更新を、更改時の影響調査対象として認識できていなかったことです。</p>


<p class="wp-block-paragraph">システム更改では、多くの場合、次のような項目を重点的に確認します。</p>


<ul id="24c5748d-c711-40c3-b988-ee36dfa03298" class="wp-block-list">
	<li>非互換情報</li>


	<li>廃止機能</li>


	<li>Deprecated機能</li>


	<li>初期化パラメータの変更</li>


	<li>サポート終了機能</li>


	<li>既知の不具合</li>


	<li>SQL構文やAPIの変更</li>
</ul>


<p class="wp-block-paragraph">これらは重要な確認項目です。</p>


<p class="wp-block-paragraph">新機能については「追加機能だから既存システムには影響しないだろう」と判断され、調査対象から外れてしまうことがあります。</p>


<p class="wp-block-paragraph">今回見落としていたのは、「従来のSQLが実行できなくなる非互換」ではありませんでした。</p>


<p class="wp-block-paragraph"><strong>従来と同じSQLが正常終了したまま、Oracle内部の統計情報管理だけが変わる仕様変更</strong>です。</p>


<p class="wp-block-paragraph">このような仕様変更は、機能試験だけでは見つかりません。</p>


<p class="wp-block-paragraph">SQLは正常終了し、処理結果も正しく、エラーログも出力されません。</p>


<p class="wp-block-paragraph">実行計画や統計情報まで確認して初めて、旧バージョンとの違いが見えてきます。</p>


<p class="wp-block-paragraph">更改プロジェクトでは「新機能だから影響はない」と考えるのではなく、<strong>既存処理の内部動作を変える仕様変更はないか</strong>という観点で調査することが重要になります。</p>
<p class="PDq2pG_selectionAnchorContainer" data-start="292" data-end="376">このような影響調査は、構築フェーズに入ってから始めるものではありません。クラウドリフトでは、PoCや基本設計の段階で「何を調査対象に含めるか」が品質を大きく左右します。</p>
<p data-start="381" data-end="414"><strong data-start="381" data-end="414">設計前に確認すべき観点は、次の記事で詳しく解説しています。</strong></p>
<a href="https://sys-univ.com/dev/cloudlift/" title="【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2022/09/f912d558092953854e6389f323b666ed.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由</div><div class="blogcard-snippet internal-blogcard-snippet">クラウド移行（AWSへのクラウドリフト）で起きる手戻り・コスト超過・納期遅延は、構築中ではなくPoC不足から始まります。Auto Scaling、EFS/EBS、RDS、監視、バックアップ、ライセンスなど10の設計リスクを現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.20</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc10">技術的な対策は一つではない</span></h2>


<p class="wp-block-paragraph">本件のような事象に対して、「統計情報の更新を止めればよい」と考えるのは適切ではありません。</p>


<p class="wp-block-paragraph">問題は、パーティション削除そのものではなく、統計情報の状態が変化した結果として実行計画が変わることです。</p>


<p class="wp-block-paragraph">更改設計では</p>


<ul id="6aa751f1-260b-45c2-af4d-b4c9ccd2d2b0" class="wp-block-list">
	<li>統計情報をどのように管理するか</li>


	<li>実行計画の変化をどこまで許容するか</li>


	<li>運用でどこまで吸収するか</li>
</ul>


<p class="wp-block-paragraph">という三つの観点から設計する必要があります。</p>


<h3 class="wp-block-heading"><span id="toc11">パーティションメンテナンス後に統計情報を再収集する</span></h3>


<p class="wp-block-paragraph">最も直接的な方法は、パーティション削除後にDBMS_STATS.GATHER_TABLE_STATSを実行し、表統計とカラム統計を同じ状態へ揃えることです。</p>


<p class="wp-block-paragraph">今回の事象では、表統計だけが更新され、カラム統計との前提が一致しない状態が残ったことが実行計画変更の要因でした。</p>


<p class="wp-block-paragraph">統計情報を再収集すれば、この不整合は解消されます。</p>


<p class="wp-block-paragraph">統計情報を取得すれば必ず性能が改善するとは限りません。</p>


<p class="wp-block-paragraph">表全体を再収集するのか、対象パーティションだけで十分なのか、インクリメンタル統計を利用するのかなど、システム特性に応じた設計は必要になります。</p>


<p class="wp-block-paragraph">重要なのは、「統計情報が更新されたこと」ではなく、「統計情報の整合性をどのように維持するか」という観点で設計することです。</p>


<h3 class="wp-block-heading"><span id="toc12">実行計画そのものを安定させる</span></h3>


<p class="wp-block-paragraph">統計情報を適切に管理しても、データ量や分布は時間とともに変化します。</p>


<p class="wp-block-paragraph">業務影響が極めて大きいSQLについては、統計情報だけに依存せず、SQL Plan Baselineなどを利用して実行計画を管理する方法もあります。</p>


<p class="wp-block-paragraph">SQL Plan Baselineは、統計情報の変化そのものを止める機能ではありません。</p>


<p class="wp-block-paragraph">その代わり、十分に検証された実行計画を維持することで、予期しない計画変更による性能劣化を防ぐ役割を持ちます。</p>


<p class="wp-block-paragraph">すべてのSQLを固定する運用は現実的ではありません。</p>


<p class="wp-block-paragraph">長時間バッチや業務影響の大きいSQLなど、対象を限定して利用することが重要です。</p>


<h3 class="wp-block-heading"><span id="toc13">Oracle内部動作を変更する方法もある</span></h3>


<p class="wp-block-paragraph">Oracleには、オンライン統計収集の動作そのものを抑止する方法も存在します。</p>


<p class="wp-block-paragraph">SQL単位で抑止するのであれば、公式ドキュメントに記載されているNO_GATHER_OPTIMIZER_STATISTICSヒントが利用できます。影響範囲を特定のSQLへ限定できるため、対象処理が明確な場合には検討しやすい選択肢です。</p>


<p class="wp-block-paragraph">データベース全体で抑止する方法としては、隠しパラメータである_optimizer_gather_stats_on_loadが公開されている技術情報でも言及されています。ただし、このパラメータはパーティションメンテナンス時の統計更新だけではなく、ダイレクトパスロード時を含むオンライン統計収集全体へ影響します。</p>


<p class="wp-block-paragraph">隠しパラメータは、公開パラメータと同じ感覚で変更できるものではありません。バージョンやRelease Updateによって挙動が異なる可能性があり、適用の可否は自環境の構成を踏まえてOracle Supportへ確認した上で判断すべきです。</p>


<p class="wp-block-paragraph">今回の事象だけを止めたつもりでも、別のバルクロード処理へ新たな影響を与えることも考えられます。抑止は最初に選ぶ対策ではなく、統計の再収集や実行計画の管理で解決できない場合の最後の選択肢として、影響範囲を十分に評価して使うべきものです。</p>


<h3 class="wp-block-heading"><span id="toc14">更改設計として考えるべきこと</span></h3>


<p class="wp-block-paragraph">この事例で重要なのは、「どの対策が正しいか」を決めることではありません。</p>


<p class="wp-block-paragraph">最適解はシステムによって異なることに対し、どのようなシステムでも共通する考え方があります。</p>


<p class="wp-block-paragraph">パーティションメンテナンスによって統計情報が変化するのであれば、その変化を前提とした運用を設計することです。</p>


<p class="wp-block-paragraph">統計情報を再収集するのか、SQL Plan Baselineで重要SQLを保護するのか、あるいはOracle内部動作まで変更するのか。</p>


<p class="wp-block-paragraph">その判断は、性能要件、バッチ時間、データ量、運用体制まで含めたシステム設計として決めるべき事項です。</p>


<h2 class="wp-block-heading"><span id="toc15">更改プロジェクトで追加すべき試験と運用</span></h2>


<p class="wp-block-paragraph">今回の教訓は、Oracleのチューニングだけでは終わりません。</p>


<p class="wp-block-paragraph">本質的な問題は、更改プロジェクトの影響調査にありました。</p>


<p class="wp-block-paragraph">多くの更改プロジェクトでは、オンライン処理や通常の日次バッチを中心に性能試験を実施します。</p>


<p class="wp-block-paragraph">年次や月次にしか実行されない処理は、試験対象から外れることがあります。</p>


<p class="wp-block-paragraph">パーティション削除や履歴データの整理、大量データのアーカイブなどは、その代表例です。</p>


<p class="wp-block-paragraph">こうした処理は実行頻度が低いため、問題があっても更改直後には表面化しません。</p>


<p class="wp-block-paragraph">今回のように、更改後最初の年次処理で初めて障害として顕在化することがあります。</p>


<p class="wp-block-paragraph">更改試験では、本番データを完全に再現できないことも少なくありません。</p>


<p class="wp-block-paragraph">その場合でも、DDLの実行、統計情報の変化、実行計画の変化までは十分検証できます。</p>


<p class="wp-block-paragraph">さらに、更改後最初の年次処理や月次処理は通常運用として扱うのではなく、重点監視期間として計画しておくことが重要です。</p>


<p class="wp-block-paragraph">SQLの実行時間だけを見るのではなく、PLAN_HASH_VALUE、統計情報の更新時刻、AWRの性能指標をあらかじめ比較できる状態にしておけば、異常が発生しても原因へたどり着くまでの時間を大幅に短縮できます。</p>


<p class="wp-block-paragraph">性能障害は、発生してから調査を始めるよりも、比較するための基準値を更改前から残しておく方がはるかに効率的です。</p>
<p class="PDq2pG_selectionAnchorContainer" data-start="969" data-end="1020">PoCでは性能確認だけではなく、「更改後に何を比較するか」という観点で証跡を残しておくことが重要です。</p>
<p data-start="1025" data-end="1058"><strong data-start="1025" data-end="1058">PoCで確認すべき項目は、次の記事で詳しく整理しています。</strong></p>
<a href="https://sys-univ.com/dev/cloudlift-poc-risk-1/" title="【第2部・前編】クラウドリフトPoCで「動いた」は確認できた。しかし業務では使えなかった｜10の設計リスク① 可用性・性能・ストレージ・バックアップ・監視" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/0cbde47eb096368e8985ae1ef2528476.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【第2部・前編】クラウドリフトPoCで「動いた」は確認できた。しかし業務では使えなかった｜10の設計リスク① 可用性・性能・ストレージ・バックアップ・監視</div><div class="blogcard-snippet internal-blogcard-snippet">PoCで「動いた」は確認できた。しかし構築フェーズで業務が回らなかった。可用性・性能・ストレージ・バックアップ・監視の5領域で、見落とすと手戻りになる設計リスクを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.19</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc16">非互換情報の外側にある変更を見る</span></h2>


<p class="wp-block-paragraph">この事例は、Oracle Databaseだけに当てはまる話ではありません。</p>


<p class="wp-block-paragraph">システム基盤の更改では、新しいバージョンへ移行するたびに、ベンダーは性能、運用性、セキュリティ、自動化を目的として既定動作を見直しています。</p>


<p class="wp-block-paragraph">たとえばAmazon RDSでは、エンジンのバージョンアップに伴って、デフォルトパラメータグループの既定値が変更されることがあります。アプリケーションを変更していなくても、データベース側の既定設定が変われば、性能や動作特性へ影響する可能性があります。</p>


<p class="wp-block-paragraph">VMware vSphereでも同様です。バージョンアップに伴ってTLSの既定設定が変更され、従来は接続できていた外部システムとの通信へ影響した事例があります。システムが故障したわけではなく、製品側の既定動作が変わったことが原因でした。</p>


<p class="wp-block-paragraph">Linuxでも、カーネル更新によってメモリ管理やネットワーク関連の既定動作が変更されることがあります。アプリケーションは従来どおり動作していても、OSの内部動作が変わることで性能特性が変化するケースは珍しくありません。</p>


<p class="wp-block-paragraph">これらに共通しているのは、「何も変更していないのに動作が変わった」のではないという点です。</p>


<p class="wp-block-paragraph"><strong>利用者は変更していなくても、ベンダーは変更しています。</strong></p>


<p class="wp-block-paragraph">更改プロジェクトでは、自分たちが修正したプログラムや設定だけに目が向きがちです。</p>


<p class="wp-block-paragraph">実際には、ベンダーが変更した既定動作の方が、既存システムへ大きな影響を与えることがあります。</p>


<p class="wp-block-paragraph">更改影響調査では「非互換情報」だけを見るのではなく、「既定動作は変わっていないか」という視点を同じ重みで持つ必要があります。</p>
<p class="PDq2pG_selectionAnchorContainer" data-start="657" data-end="700">本記事のように、更改後に初めて表面化した仕様変更や設計上の見落としは少なくありません。</p>
<p data-start="705" data-end="750">クラウドリフトやシステム更改で実際に発生したトラブル事例は、次のマガジンにまとめています。</p>
<a rel="noopener" href="https://note.com/k_s7906/m/m4570946c9f86" title="クラウド移行でハマる、AWS設計・運用の落とし穴｜ナギ ＠ 氷河期SEの知見録｜note" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/4cda2f46e0e0c9711ce9cc4eda825fb8.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">クラウド移行でハマる、AWS設計・運用の落とし穴｜ナギ ＠ 氷河期SEの知見録｜note</div><div class="blogcard-snippet external-blogcard-snippet">AWSへのクラウド移行やDR設計で見落としやすい、設計・起動・再作成・運用の落とし穴を整理するマガジンです。

EC2、AMI、cloud-init、EC2Launch、Auto Scaling、EBS、CloudWatch Logs、S3、AWS Backupなどを題材に、「サーバは起動したのに使えない」「設定したはReadMore...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://note.com/k_s7906/m/m4570946c9f86" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">note.com</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc17">まとめ</span></h2>


<p class="wp-block-paragraph">今回の性能障害では、年次処理によるパーティション削除を契機として、Oracle内部で表統計の一部が更新されました。</p>


<p class="wp-block-paragraph">表統計だけが新しい状態となり、カラム統計との前提が一致しない状態が残った結果、オプティマイザのカーディナリティ推定が変化し、実行計画も変わりました。その結果として、SQL性能が低下しました。</p>


<p class="wp-block-paragraph">原因を特定できたのは、一つの情報だけを見て判断しなかったためです。</p>


<p class="wp-block-paragraph">AWRで性能変化を確認し、PLAN_HASH_VALUEで実行計画の変化を追跡し、DBA_TAB_STATISTICSで統計情報の更新時刻を確認しました。それぞれを同じ時間軸へ並べることで、初めて原因と結果を論理的に説明できました。</p>


<p class="wp-block-paragraph">Oracleは仕様どおりに動作していました。</p>


<p class="wp-block-paragraph">問題だったのは、パーティション削除に伴う統計情報の更新という仕様変更が、更改時の影響調査対象になっていなかったことです。</p>


<p class="wp-block-paragraph">更改プロジェクトで確認すべき対象は、非互換情報だけではありません。</p>


<p class="wp-block-paragraph">新機能、デフォルト設定、バックグラウンド処理、内部アルゴリズムなど、既存システムへ影響を与える可能性のある仕様変更まで含めて評価する必要があります。</p>


<p class="wp-block-paragraph">システム更改では、「正常終了した」ことだけでは十分とは言えません。</p>


<p class="wp-block-paragraph">同じSQLが正常終了していても、実行計画や性能特性まで従来と同じとは限りません。</p>


<p class="wp-block-paragraph">更改で本当に確認すべきなのは、プログラムが動くかではありません。</p>


<p class="wp-block-paragraph">設計時に置いていた前提が、バージョンアップ後も成立しているかです。</p>


<p class="wp-block-paragraph">システム更改の品質を左右するのは、コード変更量ではなく、前提条件の変化をどこまで洗い出せるかです。</p>


<h2 class="wp-block-heading"><span id="toc18">参考資料</span></h2>


<ul id="f146bb2b-5cdb-441b-8325-4f92b1091aac" class="wp-block-list">
	<li>Oracle Support, Partitioned Table Statistics Changed After Truncate Partition or Drop Partition Operation（MOS Doc ID 2970098.1）</li>


	<li>Oracle Database 19c SQL Tuning Guide（SQL Plan Management）</li>


	<li>Oracle Database 19c PL/SQL Packages and Types Reference（DBMS_STATS）</li>


	<li>Amazon RDS User Guide(DB parameter groups)</li>


	<li>VMware vSphere 8 Release Notes(Security and TLS changes)</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/oracle-19c-partition-statistics-execution-plan/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由</title>
		<link>https://sys-univ.com/dev/cloudlift/</link>
					<comments>https://sys-univ.com/dev/cloudlift/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 20 Jul 2026 01:53:54 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1329</guid>

					<description><![CDATA[「AWSに移行したのに、なぜか現場が疲弊している」「構築フェーズに入ってから、想定外のトラブルが続き、スケジュールが削られていく」 クラウドリフトでは、こうしたことが実際に起こります。 クラウドリフトは、既存システムを大 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="PDq2pG_selectionAnchorContainer wp-block-paragraph" data-start="485" data-end="550">「AWSに移行したのに、なぜか現場が疲弊している」「構築フェーズに入ってから、想定外のトラブルが続き、スケジュールが削られていく」</p>
<p data-start="552" data-end="582">クラウドリフトでは、こうしたことが実際に起こります。</p>
<p data-start="584" data-end="677">クラウドリフトは、既存システムを大きく変更せずに移す、クラウド移行の代表的な方式です。PoCや事前検証が不十分なまま進めると、本番移行後だけでなく、構築中から問題が表面化します。</p>
<p data-start="679" data-end="818">性能が出ない。別AZでEC2を起動したのに、OS内のルート情報が原因で通信できない。Auto ScalingでEC2は再作成されたのに、監視やジョブ実行対象として認識されない。EFSで共有ファイルを読み書きできたのに、複数サーバからのファイル更新や差し替えで想定外の挙動が出る。</p>
<p data-start="820" data-end="858">こうしたトラブルは、現場では「個別の設定ミス」や「確認不足」として見えます。</p>
<p data-start="860" data-end="897">しかし、プロジェクト全体で振り返ると、共通する原因が見えてきます。</p>
<p data-start="899" data-end="926"><strong data-start="899" data-end="926">クラウドリフトの失敗は、構築前に始まっている。</strong></p>
<p data-start="928" data-end="996">トラブルが表面化するのは、EC2にログインできなくなった時、RDSの制約に気づいた時、性能試験で想定したスループットが出なかった時です。</p>
<p data-start="998" data-end="1131">実際には、もっと前から始まっていることが多いです。PoCで確認すべきことを確認しないまま基本設計へ進む。クラウド上で成立するか分からない処理方式を、オンプレ時代の感覚で決める。AWSサービスの仕様、制約、課金体系、運用モデルを十分に確認しないまま、構築と試験へ進む。</p>
<p data-start="1133" data-end="1174">その積み重ねが、クラウド移行の後工程で、一つひとつ障害として表面化します。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">※この記事は、AWSへのクラウドリフトPoCについて整理する全3部作の第1部です。</p>
<p><a href="https://note.com/k_s7906/m/m4570946c9f86">これまでの記事</a>では、クラウドリフトが必要になる背景や、AWS移行で起きやすい個別トラブルを扱ってきました。 <br />
今回からは、その個別トラブルを「PoCで事前に潰すべき設計リスク」として整理していきます。</p>


<ul id="f4625bde-4b7b-4390-8b65-db249af014ef" class="wp-block-list">
	<li>第1部：技術トラブルがなぜ手戻り・コスト超過・納期遅延につながるのか、その「失敗の構造」を整理します</li>


	<li>第2部：PoCで見るべき10の設計リスクを整理します</li>


	<li>第3部：PoC結果を設計・試験・運用・見積へどう反映するかを整理します</li>
</ul>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph"><strong>この記事で分かること</strong></p>


<p class="wp-block-paragraph">クラウドリフトで発生するトラブルを、単なる個別事象としてではなく、PoC不足によって残った設計リスクとして整理します。ポイントは次の3つです。</p>


<ul id="a11a9dcb-a919-40b5-b932-874990b2e3a7" class="wp-block-list">
	<li>クラウドリフトのトラブルは、構築中に突然始まるわけではない</li>


	<li>多くの場合、構築前に確認すべき設計リスクが残っている</li>


	<li>PoCは「試しに動かすこと」ではなく、後工程の手戻りを防ぐための設計判断材料である</li>
</ul>


<p class="wp-block-paragraph">なぜクラウドリフトの失敗が「構築前」に始まっているのかを、以下で説明します。</p>


<h2 class="wp-block-heading"><span id="toc1">クラウドリフトのトラブルは「個別事象」に見える</span></h2>


<p class="wp-block-paragraph">クラウドリフトでは、さまざまなトラブルが発生します。</p>


<p class="wp-block-paragraph">たとえば、<a href="https://note.com/k_s7906/m/m4570946c9f86">これまでの記事</a>でも以下のようなテーマを扱ってきました。</p>


<ul id="96cc845e-cfc7-4bee-99c3-44f1934c7999" class="wp-block-list">
	<li><strong>アクセス・起動</strong>：AMIから起動したEC2でSSHログインできない</li>


	<li><strong>AZ障害・復旧</strong>：別AZで起動したWindowsが、OS内のルート情報により通信できない</li>


	<li><strong>可用性</strong>：Auto ScalingでEC2は再作成されたが、業務復旧まで到達しない</li>


	<li><strong>運用・ログ</strong>：CloudWatch LogsのS3エクスポートが想定通り動かない</li>


	<li><strong>バックアップ</strong>：AWS Backupの「5日保存」を「5営業日保存」と誤解する</li>


	<li><strong>ストレージ</strong>：EBSは容量拡張は比較的容易だが、縮小には再作成とデータ移行が必要になる。EFS/EBSの使い分けで性能・復旧方式が変わる</li>


	<li><strong>データベース</strong>：RDS for Oracleの制約により、オンプレOracleと同じ運用ができない</li>


	<li><strong>運用・共通</strong>：ジョブ管理や監視方式をクラウド移行後に見直す必要が出る</li>


	<li><strong>ライセンス</strong>：Microsoft製品や商用製品は、技術的に動いても、AWS上での利用がライセンスやサポート条件上認められない場合がある</li>


	<li><strong>クラウド責任分界</strong>：クラウドがストレージ障害を吸収しても、IaaS/SaaS境界の外側にあるOS領域は利用者側の責任。ログ肥大化によるOS領域枯渇が盲点になる</li>
</ul>


<p class="wp-block-paragraph">こうしたトラブルを一つひとつ見ると、個別の設定ミスや確認不足に見えます。</p>


<p class="wp-block-paragraph">SSHの設定ミス。<br />
OS内部のルート情報の見落とし。<br />
cloud-init の理解不足。<br />
バックアップ保持期間の確認不足。<br />
ストレージ方式の選定ミス。<br />
監視設計の漏れ。<br />
ライセンス確認の遅れ。</p>


<p class="wp-block-paragraph">もちろん、それぞれの直接原因はあります。</p>


<p class="wp-block-paragraph">しかし、クラウドリフト案件として見た場合、これらを単なる個別ミスとして片付けてはいけません。</p>


<p class="wp-block-paragraph">なぜなら、こうした問題の多くは、構築中に突然発生したのではなく、もっと前の段階で確認すべきことを確認しないまま進んだ結果だからです。</p>


<p class="wp-block-paragraph">問題の本質はここにあります。</p>


<p class="wp-block-paragraph"><strong>クラウドリフトで発生する個別トラブルの多くは、PoC不足による設計リスクの未解消として説明できる。</strong></p>


<h2 class="wp-block-heading"><span id="toc2">個別トラブルに見えるものの正体</span></h2>


<p class="wp-block-paragraph">クラウドリフトの怖さは、トラブルが発生した瞬間ではありません。</p>


<p class="wp-block-paragraph">本当に怖いのは、その時点ではすでに設計、構築、試験、運用設計、見積、スケジュールが進んでおり、<strong>手戻りが大きくなっていること</strong>です。</p>


<p class="wp-block-paragraph">たとえば、構築フェーズで以下のような問題が分かったとします。</p>


<ul id="dd562a2b-8f4c-4d6b-9b94-8f45a147231e" class="wp-block-list">
	<li>この運用はAWSではそのままできない</li>


	<li>このミドルウェアはAmazon Linuxでは動かない</li>


	<li>RDS for Oracleでは、オンプレOracleと同じチューニングができない</li>


	<li>EFSの性能では、業務処理のレイテンシ要件を満たせない</li>


	<li>既存のジョブ管理製品をそのまま使うと、クラウド環境での運用に合わない</li>


	<li>サーバー上のExcel帳票生成が、ライセンスやサポート上の理由でそのまま使えない</li>
</ul>


<p class="wp-block-paragraph">この時点で設計を変えようとすると、影響はかなり大きくなります。</p>


<p class="wp-block-paragraph">設計書を直すだけでは済みません。<br />
構築手順も変わります。<br />
パラメータシートも変わります。<br />
試験項目も変わります。<br />
運用手順も変わります。<br />
顧客説明も必要になります。<br />
場合によっては、見積とスケジュールも変わります。</p>


<p class="wp-block-paragraph">これがクラウドリフトの手戻りです。</p>


<p class="wp-block-paragraph">単なる技術トラブルではありません。<br />
プロジェクト全体のQCDを崩す問題になります。</p>


<h2 class="wp-block-heading"><span id="toc3">クラウドリフトで崩れるのは技術ではなくQCD</span></h2>


<p class="wp-block-paragraph">クラウドリフトで発生する問題は、最初は技術課題として見えます。</p>


<p class="wp-block-paragraph">ログインできない。<br />
通信できない。<br />
性能が出ない。<br />
バックアップが想定通りに戻せない。<br />
監視がうまく飛ばない。<br />
ライセンスが使えない。</p>


<p class="wp-block-paragraph">しかし、プロジェクトとして見ると、それは技術課題だけでは終わりません。</p>


<p class="wp-block-paragraph">実際には、次のような形でQCD全体に波及します。</p>


<ul id="9293e8cc-9962-4d3a-8966-ad94ce3a13e3" class="wp-block-list">
	<li>コスト超過</li>


	<li>スケジュール遅延</li>


	<li>品質劣化</li>


	<li>設計手戻り</li>


	<li>試験やり直し</li>


	<li>運用設計の再検討</li>


	<li>顧客説明の増加</li>


	<li>プロジェクトメンバーの疲弊</li>
</ul>


<p class="wp-block-paragraph"><strong>特に危険なのは、性能、ストレージ、DB、運用方式に関する問題です。</strong></p>


<p class="wp-block-paragraph">これらは、設定値を少し変えれば解決するとは限りません。</p>


<p class="wp-block-paragraph">たとえば、PoC不足により、EFSの性能が本番相当負荷で足りないと後から分かったとします。</p>


<p class="wp-block-paragraph">その場合、単にスループット設定を上げれば済むかもしれません。<br />
しかし、それでも性能目標に届かない場合は、ファイル配置や処理方式そのものを見直す必要が出ます。</p>


<p class="wp-block-paragraph">EFSを使う前提だったものを、EC2＋EBS構成に変える。<br />
共有ファイルの扱いを変える。<br />
アプリケーションの処理方式を変える。<br />
バックアップ方式を変える。<br />
監視項目を変える。<br />
障害時の復旧手順を変える。<br />
性能試験シナリオを作り直す。</p>


<p class="wp-block-paragraph">ここまで来ると、もはや一部設定の見直しではありません。</p>


<p class="wp-block-paragraph">基本設計からの手戻りです。</p>


<p class="wp-block-paragraph">さらにPM/PLの視点で見ると、影響は技術チームの中だけでは収まりません。</p>


<p class="wp-block-paragraph">基本設計を直す。<br />
詳細設計を直す。<br />
構築手順を直す。<br />
試験計画を見直す。<br />
性能試験の前提を変える。<br />
運用手順を作り直す。<br />
顧客へ変更理由を説明する。<br />
追加費用とスケジュール延伸を調整する。</p>


<p class="wp-block-paragraph">この連鎖が発生します。</p>


<figure id="14b4a191-6d29-404b-b761-0ecf50129a5b" class="wp-block-image"><a href="https://assets.st-note.com/img/1780706158-7SVkMI8JxUKFqQsZcHiP2p3w.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1780706158-7SVkMI8JxUKFqQsZcHiP2p3w.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">つまり、クラウドリフトの設計漏れは、技術課題として始まり、最後はQCD課題になります。</p>


<p class="wp-block-paragraph">これを構築後や試験中に初めて認識するのは、かなり危険です。</p>


<h2 class="wp-block-heading"><span id="toc4">AWSではオンプレの設計思想がそのまま通用しない</span></h2>


<p class="wp-block-paragraph">クラウドリフトは、オンプレのサーバをAWS上のEC2に置き換えるだけの作業ではありません。</p>


<p class="wp-block-paragraph">ここを誤解すると、設計漏れが増えます。</p>


<p class="wp-block-paragraph">オンプレ環境では、比較的自由に設計できたものが多くあります。</p>


<p class="wp-block-paragraph">OS設定。<br />
ミドルウェア設定。<br />
ストレージ構成。<br />
ネットワーク構成。<br />
監視方式。<br />
ジョブ管理。<br />
バックアップ方式。<br />
セキュリティ設定。<br />
HA構成。<br />
運用スクリプト。<br />
商用製品の導入。<br />
ライセンス運用。</p>


<p class="wp-block-paragraph">もちろん、オンプレにも制約はあります。</p>


<p class="wp-block-paragraph">しかし、オンプレではサーバ、ストレージ、ネットワーク機器、ミドルウェア、運用製品を組み合わせて、プロジェクト側でかなり細かく作り込めました。</p>


<p class="wp-block-paragraph">一方、AWSでは違います。</p>


<p class="wp-block-paragraph">AWSサービスの仕様があります。<br />
マネージドサービスの制約があります。<br />
課金体系があります。<br />
メンテナンスの考え方があります。<br />
責任共有モデルがあります。<br />
IAM、Security Group、CloudWatch、RDS、EFS、EBS、S3など、AWS側の設計思想があります。</p>


<p class="wp-block-paragraph">つまり、プラットフォームがAWSに変わる以上、『非機能要件の実現手段』は必ず変わります。</p>


<p class="wp-block-paragraph">正確には、こうです。</p>


<p class="wp-block-paragraph"><strong>オンプレで暗黙的に成立していた設計を、AWSのサービス仕様、制約、課金体系、運用モデルの上で再検証する必要がある。</strong></p>


<p class="wp-block-paragraph">ここをPoCで確認せずに進めると、後から詰まります。</p>


<p class="wp-block-paragraph">たとえば、オンプレではサーバが固定されている前提で、監視やジョブ管理を設計していたかもしれません。</p>


<p class="wp-block-paragraph">しかし、AWSではAuto Scalingや復旧方式によって、EC2が入れ替わる前提になる場合があります。</p>


<p class="wp-block-paragraph">この時、EC2が起動すれば終わりではありません。</p>


<p class="wp-block-paragraph">ホスト名はどうするのか。<br />
DNS登録はどうするのか。<br />
監視対象への登録はどうするのか。<br />
ジョブ実行対象としてどう認識させるのか。<br />
ログ出力先はどうするのか。<br />
障害時の運用手順はどう変わるのか。</p>


<p class="wp-block-paragraph">ここまで確認して初めて、業務復旧と言えます。</p>


<p class="wp-block-paragraph">EC2が起動しただけでは、業務復旧ではありません。</p>


<p class="wp-block-paragraph">また、クラウドリフトはクラウドネイティブ化とも違います。</p>


<p class="wp-block-paragraph">クラウドリフトの目的は、多くの場合、既存システムを大きく作り替えることではありません。<br />
オンプレで動いているシステムを、できるだけ低リスク、低コスト、短期間でクラウド上に移すことです。</p>


<p class="wp-block-paragraph">そのため、既存の設計思想や運用方式をある程度踏襲することになります。</p>


<p class="wp-block-paragraph">しかし、ここに難しさがあります。</p>


<p class="wp-block-paragraph">既存設計を踏襲したい。<br />
でも、AWSではそのまま実現できないことがある。<br />
マネージドサービスを使えば楽になる部分もある。<br />
しかし、既存運用と合わない部分もある。<br />
クラウドネイティブに寄せすぎると、アプリ改修や運用変更が増える。<br />
オンプレ方式を無理に残すと、クラウドの良さを活かせず、コストも運用も重くなる。</p>


<p class="wp-block-paragraph">このバランスを見極める必要があります。</p>


<p class="wp-block-paragraph">だからPoCが重要になります。</p>


<h2 class="wp-block-heading"><span id="toc5">それでもクラウドリフトは避けにくい</span></h2>


<p class="wp-block-paragraph">クラウドリフトは難しい。<br />
しかし、避け続けることも難しいのが現実です。</p>


<p class="wp-block-paragraph">政府系・公共系では、クラウド・バイ・デフォルトの流れがあります。<br />
民間企業でも、データセンター更改、ハードウェアEOL、OS・ミドルウェア保守切れ、オンプレ運用人材の不足、災害対策、拡張性確保、初期投資抑制といった理由から、クラウド利用を検討する場面が増えています。</p>


<figure id="7709a846-b55b-457f-a102-3cc42396b908" class="wp-block-image"><a href="https://assets.st-note.com/img/1781147181-DrxEqCR6HZzs714MKOpkhF5G.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1781147181-DrxEqCR6HZzs714MKOpkhF5G.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">だからこそ、効率よく、リスクを抑えて進める必要があります。</p>


<p class="wp-block-paragraph">そのために必要なのは、大きく3つです。</p>


<p class="wp-block-paragraph">1つ目は、実案件の事例を収集することです。<br />
AWS公式ドキュメントを読むことは大切ですが、それだけでは、既存運用との衝突、ライセンス制約、性能特性、バックアップの戻し方といった落とし穴は見えにくいです。実際に起きたトラブルの事例から学ぶことが重要です。</p>


<p class="wp-block-paragraph">2つ目は、質の高いPoCを実施することです。<br />
「EC2上でアプリが起動した」で終わるPoCでは、設計リスクは潰せません。本番相当の負荷、障害時の復旧、監視、ジョブ、バックアップまで含めて検証シナリオに落とし込んで初めて、基本設計の判断材料になります。</p>


<p class="wp-block-paragraph">3つ目は、リフト経験者を含めたチームを作ることです。<br />
基盤SEだけでは業務影響を判断しきれず、業務SEだけではAWSの制約やストレージ、ネットワークの設計リスクを判断しきれません。クラウド有識者、既存システム有識者、業務・アプリ担当、インフラ基盤・処理方式担当を巻き込み、PoCで分かったことを設計、試験、運用、見積へ反映する体制が必要です。</p>


<h2 class="wp-block-heading"><span id="toc6">PoCは「試しに動かすこと」ではない</span></h2>


<p class="wp-block-paragraph">ここまでの話を踏まえると、PoCの意味が少し変わって見えるはずです。</p>


<p class="wp-block-paragraph">PoCと聞くと、「試しに作ってみる」「動くか確認する」というイメージを持つかもしれません。</p>


<p class="wp-block-paragraph">もちろん、それも間違いではありません。</p>


<p class="wp-block-paragraph">しかし、クラウドリフトにおけるPoCをそれだけで捉えると危険です。</p>


<p class="wp-block-paragraph">PoCで確認するのは、AWSサービスが使えるかどうかだけではありません。</p>


<p class="wp-block-paragraph">既存業務の処理方式、運用方式、復旧方式、名前解決、バックアップ、監視、ジョブ、ファイル更新方式、DB運用、ライセンス、コストが、クラウド上の構成で成立するか。</p>


<p class="wp-block-paragraph">そこまで確認して初めて、PoCの結果を基本設計の判断材料にできます。</p>


<p class="wp-block-paragraph">たとえば、次のような確認だけでは不十分です。</p>


<ul id="3cfc31db-d34f-4c76-b557-6005abf7f123" class="wp-block-list">
	<li>EC2でアプリケーションが起動した</li>


	<li>EFSでファイルを読み書きできた</li>


	<li>RDSに接続できた</li>


	<li>CloudWatch Logsにログが出た</li>


	<li>AWS Backupのジョブが成功した</li>
</ul>


<p class="wp-block-paragraph">これらは大事な確認です。<br />
ただし、それだけでは「業務で使える」とは言えません。</p>


<p class="wp-block-paragraph">オンプレ時代の検証では、プロトタイプアプリケーションを作り、主要な処理を流して、基盤上でアプリケーションが動くことを確認する、という進め方もありました。</p>


<p class="wp-block-paragraph">もちろん、それ自体が無意味だったわけではありません。<br />
サーバ、OS、ミドルウェア、ネットワーク、ストレージの基本的な組み合わせを確認するうえでは、有効な検証です。</p>


<p class="wp-block-paragraph">しかし、クラウドリフトでは、それだけでは足りません。</p>


<p class="wp-block-paragraph">AWS上でアプリケーションが起動することと、クラウド上の構成で業務が安定して回ることは違います。</p>


<p class="wp-block-paragraph">EC2が起動しても、ホスト名、DNS登録、監視、ジョブ実行対象、ログ収集先、ミドルウェア起動まで回らなければ、業務復旧とは言えません。</p>


<p class="wp-block-paragraph">EFSでファイルを読み書きできても、本番相当のファイル数、ディレクトリ構造、排他制御、ファイル差し替え、バックアップ、リストアまで成立しなければ、業務で使えるとは言えません。</p>


<p class="wp-block-paragraph">CloudWatch Logsにログが出ても、運用で必要なタイミングに確認できるのか、通知すべきアラームと通知抑止すべきメッセージを整理できるのか、試験工程へ監視観点を引き継げるのかを見なければ、運用設計にはつながりません。</p>


<p class="wp-block-paragraph">バックアップジョブが成功しても、必要なデータを、必要な時間内に、整合性を保って戻せるとは限りません。</p>


<p class="wp-block-paragraph">つまり、PoCで見るべきなのは、「AWS上でとりあえず動くか」だけではありません。</p>


<p class="wp-block-paragraph">既存の機能要件・非機能要件・運用要件を、AWS上でどの方式なら現実的に満たせるのか。<br />
既存設計を踏襲するのか。<br />
マネージドサービスに置き換えるのか。<br />
商用製品を継続するのか。<br />
代替製品に変えるのか。<br />
クラウドネイティブなサービスに寄せるのか。</p>


<p class="wp-block-paragraph">この判断をするためにPoCがあります。</p>


<p class="wp-block-paragraph">では、具体的に何を判断するのでしょうか。</p>


<p class="wp-block-paragraph">その構成で基本設計に進んでよいのか。<br />
その運用方式で本番後も回せるのか。<br />
そのサービス仕様で既存要件を満たせるのか。<br />
そのコストでプロジェクト計画に収まるのか。</p>


<p class="wp-block-paragraph">こうした設計判断に使えるPoCでなければ、後工程の手戻りを防ぐことはできません。</p>


<p class="wp-block-paragraph">クラウドリフトのPoCは、単なる動作確認ではありません。</p>


<p class="wp-block-paragraph"><strong>基本設計に入る前に、クラウド上で成立する処理方式、構成方式、運用方式、復旧方式、コスト感を見極めるための設計リスク潰しです。</strong></p>


<p class="wp-block-paragraph">ここが最も重要です。</p>


<p class="wp-block-paragraph">たとえば、以下のような確認は、単なる動作確認ではありません。</p>


<ul id="71df7e68-a94d-434e-a305-312d1e2b39ec" class="wp-block-list">
	<li>RDS for Oracleで、既存DBの可用性・性能要件を満たせるか</li>


	<li>EFSで、共有ファイルの性能要件を満たせるか</li>


	<li>AWS Backupで、必要な世代管理とリストア要件を満たせるか</li>


	<li>CloudWatch中心の監視で、既存運用を置き換えられるか</li>


	<li>JP1を継続するのか、ZabbixやHinemosなどに置き換えるのか</li>


	<li>既存のセキュリティポリシーをAWS上のIAMやSecurity Groupへどう落とすのか</li>


	<li>BYOLかMarketplaceかで、ライセンス費用やサポート条件はどう変わるのか</li>


	<li>RHELを継続するのか、Amazon Linuxへ寄せるのか</li>


	<li>その場合、既存ライブラリや運用スクリプトは動くのか</li>


	<li>開発環境や試験環境の利用時間増加が、クラウド利用料にどれだけ影響するのか</li>
</ul>


<p class="wp-block-paragraph">これらはすべて、後工程で発覚すると危険な設計リスクです。</p>


<p class="wp-block-paragraph">PoCで潰すべきなのは、こういう論点です。</p>


<h2 class="wp-block-heading"><span id="toc7">なぜPoCで気づけなかったのか</span></h2>


<p class="wp-block-paragraph">クラウドリフトで怖いのは、AWSの機能を知らないことだけではありません。</p>


<p class="wp-block-paragraph">もっと怖いのは、クラウドリフト固有のリスクを洗い出す機会が、プロジェクト計画の中に十分に組み込まれていないことです。</p>


<p class="wp-block-paragraph">しかし、実際のプロジェクトではこれが簡単ではありません。</p>


<p class="wp-block-paragraph">既存システムを、AWSの仕様、制約、課金体系、運用モデルの上に再配置する。</p>


<p class="wp-block-paragraph">それがクラウドリフトです。</p>


<p class="wp-block-paragraph">だから、PoCが必要になります。</p>


<p class="wp-block-paragraph">ただし、PoCだけですべての設計リスクを見つけられるとは限りません。</p>


<p class="wp-block-paragraph">事前にシナリオを立てても、実際には想定外の問題が出ます。</p>


<p class="wp-block-paragraph">重要なのは、そこで出た問題を個別対応で終わらせないことです。</p>


<p class="wp-block-paragraph">なぜ見落としたのか。<br />
どの設計リスクに分類されるのか。<br />
次の工程へ何を引き継ぐべきか。</p>


<p class="wp-block-paragraph">ここまで整理して初めて、PoCは後工程の手戻りを防ぐ材料になります。</p>


<h2 class="wp-block-heading"><span id="toc8">まとめ：失敗はPoC不足から始まる</span></h2>


<p class="wp-block-paragraph">クラウドリフトでは、オンプレで暗黙的に成立していた設計前提が、AWS上でもそのまま成立するとは限りません。</p>


<p class="wp-block-paragraph">PoCは「試しに動かすこと」ではありません。<br />
後工程で致命傷になる設計リスクを、構築前に見つけるための作業です。</p>


<p class="wp-block-paragraph">特に、クラウドリフトPoCでは次のような観点を、単なる確認項目ではなく「手戻りを防ぐための設計リスク」として見ておく必要があります。</p>


<ol id="7151ff23-eadf-401e-8716-cd10b5e97d5e" class="wp-block-list">
	<li>可用性・信頼性</li>


	<li>性能・キャパシティ</li>


	<li>ストレージ</li>


	<li>バックアップ</li>


	<li>運用・監視</li>


	<li>ジョブ管理・アプリ配布</li>


	<li>セキュリティ・アクセス管理</li>


	<li>ライセンス・製品サポート</li>


	<li>DB・OS・ミドルウェア互換性</li>


	<li>コスト・キャパシティ管理</li>
</ol>


<p class="wp-block-paragraph">これらは、確認項目を並べれば終わるものではありません。<br />
後工程で発覚した時に、設計、試験、運用、見積へどう波及するのかまで見ておく必要があります。</p>


<p class="wp-block-paragraph">クラウドリフトの失敗は、構築前に始まっている。</p>


<p class="wp-block-paragraph">この10項目については、以下の記事で前編・後編に分けて整理しています。</p>

<div style="margin: 8px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n742f150cf39c"> <span style="font-size: 12px; color: #1d9e75;">note ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">【第2部・前編】クラウドリフトPoCで見落とすと手戻りになる10の設計リスク① 可用性・性能・ストレージ・バックアップ・監視</span> </a></div>
<div style="margin: 8px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n1755cb2f2d25"> <span style="font-size: 12px; color: #1d9e75;">note ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">【第2部・後編】クラウドリフトPoCで見落とすと手戻りになる10の設計リスク② ジョブ・セキュリティ・ライセンス・DB互換性・コスト</span> </a></div>

<p class="wp-block-paragraph">続く第3部では、PoCの結果を「結果報告」で終わらせず、設計・試験・運用・見積へどう渡すかを整理します。</p>

<p>&nbsp;</p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/cloudlift/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
