<?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>システム開発 | ナギ｜システム基盤エンジニアの知見録</title>
	<atom:link href="https://sys-univ.com/category/dev/feed/" rel="self" type="application/rss+xml" />
	<link>https://sys-univ.com</link>
	<description>大手SIer20年超｜要件定義から設計・構築・試験・移行・運用まで、実務で使える知見を発信</description>
	<lastBuildDate>Tue, 27 Oct 2026 09:05:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</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/category/dev/feed/"/>
	<item>
		<title>情シスの仕事とは？ 新任担当者向けに役割・SIerとの分担・必要なスキルを解説</title>
		<link>https://sys-univ.com/dev/corporate-it-guide/</link>
					<comments>https://sys-univ.com/dev/corporate-it-guide/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 07:08:44 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3534</guid>

					<description><![CDATA[情報システム部門（情シス）に配属されたら、誰と、何を、どこまで調整するのでしょうか。最初は、自分の仕事の範囲がつかみにくいものです。 システムを導入する企業を、この記事では「発注側」と呼びます。発注側が外部のSIer（シ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">情報システム部門（情シス）に配属されたら、誰と、何を、どこまで調整するのでしょうか。最初は、自分の仕事の範囲がつかみにくいものです。</p>


<p class="wp-block-paragraph">システムを導入する企業を、この記事では「発注側」と呼びます。発注側が外部の<strong>SIer（システムインテグレーター）</strong>に設計・開発などを依頼しても、情シスの仕事がなくなるわけではありません。</p>


<p class="wp-block-paragraph">私は大手SIerで20年以上、データベースの設計・構築からシステム基盤の統括、プロジェクトマネジメントまで携わってきました。その中で、発注側の役割が曖昧なまま仕事が進み、プロジェクトが行き詰まる場面を何度も見てきました。</p>


<p class="wp-block-paragraph">「技術のことは詳しいSIerにお任せします」。技術的な設計や実装を専門家に委ねるのは自然です。しかし、<strong>自社の業務で何を実現するか、誰が合意するか、導入後に成果が出たか</strong>まで委ねることはできません。</p>


<p class="wp-block-paragraph">これは担当者を批判したいという話ではありません。情シスの役割や発注側としての判断を体系的に教わる機会がなく、何を確認すればよいのか分からないまま現場に立つこともあると感じています。だからこそ、実務で役立つ入門記事を書こうと考えました。</p>


<p class="wp-block-paragraph">これから情シスになる方、配属されたばかりの方に向けて、組織内の立ち位置、関係者、システム開発・運用の仕事を順番に説明します。後半では、主任クラスを目指す際に役立つ具体的な確認観点も紹介します。</p>



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">なぜ企業に情シスが必要なのか？</a><ol><li><a href="#toc2" tabindex="0">システムを作ることが目的ではない</a></li><li><a href="#toc3" tabindex="0">経営、業務、ITをつなぐ窓口になる</a></li></ol></li><li><a href="#toc4" tabindex="0">情シスの仕事内容と、社内外の関係者との役割分担</a><ol><li><a href="#toc5" tabindex="0">まずは3つの仕事を押さえる</a></li><li><a href="#toc6" tabindex="0">情シス内部の組織構造も知っておこう</a></li><li><a href="#toc7" tabindex="0">情シス担当者の周囲に、誰がいるのか</a></li><li><a href="#toc8" tabindex="0">【実体験】仕事が進む発注者は、決める人が明確だった</a></li></ol></li><li><a href="#toc9" tabindex="0">企画・開発・運用で、情シスは何をするのか？</a><ol><li><a href="#toc10" tabindex="0">発注側は「何を実現するか」を決める</a></li><li><a href="#toc11" tabindex="0">【実体験】RFPの一行から、設計上の論点を引き出す</a></li></ol></li><li><a href="#toc12" tabindex="0">ある失敗ケースで考える、誰が何を確認すべきだったのか</a><ol><li><a href="#toc13" tabindex="0">取引先との連携で起きたこと</a></li><li><a href="#toc14" tabindex="0">欠けていた活動と、本来すべき活動</a></li></ol></li><li><a href="#toc15" tabindex="0">開発が終わってからが本番。運用と導入効果はどう評価する？</a><ol><li><a href="#toc16" tabindex="0">「作れたか」と「成果が出たか」は別の評価</a></li><li><a href="#toc17" tabindex="0">導入前にKPIと測定方法を決めておく</a></li><li><a href="#toc18" tabindex="0">ROIは「便益」と「費用」を同じ期間で比較する</a></li><li><a href="#toc19" tabindex="0">安定運用・障害対応・次の更改にも責任がある</a></li></ol></li><li><a href="#toc20" tabindex="0">若手・主任クラスの情シス担当者が身につけたい実務能力</a><ol><li><a href="#toc21" tabindex="0">① 自担当システムの構成と費用を説明できる</a></li><li><a href="#toc22" tabindex="0">② プロジェクト計画書をレビューできる</a></li><li><a href="#toc23" tabindex="0">③ Vモデルを理解し、品質の確認方法に目を向けられる</a></li><li><a href="#toc24" tabindex="0">④ 会議体の目的・参加者・決定権限を見抜く</a><ol><li><a href="#toc25" tabindex="0">【実体験】全体統括は、すべての詳細調整を引き受ける仕事ではない</a></li></ol></li><li><a href="#toc26" tabindex="0">⑤ 導入効果を自分の言葉で報告できる</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ：情シスは、ITを業務の成果につなげる仕事</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">なぜ企業に情シスが必要なのか？</span></h2>


<h3 class="wp-block-heading"><span id="toc2">システムを作ることが目的ではない</span></h3>


<p class="wp-block-paragraph">企業は、売上の拡大、納期の短縮、品質の安定、コストの削減など、事業上の目標を持っています。その実現には、業務の進め方を見直し、情報を適切に使える状態にすることが必要です。</p>


<p class="wp-block-paragraph">例えば「納期を守れる会社にしたい」という目標があるなら、受注・調達・製造・出荷の状況を把握できていないことが課題かもしれません。必要なのは、いきなり新しいシステムを購入することではなく、どの情報を誰がいつ必要とするのかを整理することです。その結果として、既存システムの改修やSaaSの導入が選択肢になります。</p>


<p class="wp-block-paragraph">流れは、<strong>経営・事業の目標 → 業務課題 → 業務の改善 → IT施策 → 効果の確認</strong>です。情シスは、この流れをITの側面から支える組織です。</p>

<div id="attachment_3548" style="width: 1930px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-3548" class="wp-image-3548 size-full" src="https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d.png" alt="" width="1920" height="640" srcset="https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d.png 1920w, https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d-500x167.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d-800x267.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d-300x100.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d-768x256.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/bfd02ef123d33ad8cc651c08967cf77d-1536x512.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /><p id="caption-attachment-3548" class="wp-caption-text">図　情シスが支える基本の流れ</p></div>


<h3 class="wp-block-heading"><span id="toc3">経営、業務、ITをつなぐ窓口になる</span></h3>


<p class="wp-block-paragraph">経営層は投資の目的や優先順位を考えます。業務部門は現場の仕事と制約を知っています。SIerは技術的な実現方法を考え、設計・開発を担います。</p>


<p class="wp-block-paragraph">しかし、これらの情報を別々に持ったままでは、投資目的とシステムの仕様がずれたり、現場で使われない仕組みが出来上がったりします。情シスは、<strong>事業の目的をITの取り組みにつなぎ、導入後も目的を達成できたかを確かめる</strong>役割を持ちます。</p>


<p class="wp-block-paragraph">なお、企業によっては情シス自身が開発や運用を行い、別の企業では外部委託を中心とするなど、担当範囲は異なります。この記事では、業務システムの企画・開発・運用を社内外の関係者と進める情シス担当者を中心に説明します。</p>


<h2 class="wp-block-heading"><span id="toc4">情シスの仕事内容と、社内外の関係者との役割分担</span></h2>


<h3 class="wp-block-heading"><span id="toc5">まずは3つの仕事を押さえる</span></h3>


<p class="wp-block-paragraph">情シスの仕事は、大きく次の3つに分けられます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>仕事の領域</th>
<th>具体的な活動</th>
<th>新任担当者がまず知るべきこと</th>
</tr>
</thead>
<tbody>
<tr>
<td>IT戦略・システム企画</td>
<td>IT投資計画、製品・サービス選定、業務改善の企画</td>
<td>なぜ導入するのか、誰が予算と方針を決めるのか</td>
</tr>
<tr>
<td>開発・導入・運用</td>
<td>要件整理、ベンダ管理、設計レビュー、受け入れ、障害対応</td>
<td>自分が何を判断し、何をベンダに委ねるのか</td>
</tr>
<tr>
<td>社内サポート・IT管理</td>
<td>問い合わせ、端末・アカウント・ライセンス管理、セキュリティ対応</td>
<td>利用者の困りごととシステム全体への影響を把握すること</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">近年はクラウド・SaaSの組み合わせ、外部サービスとのデータ連携、情報セキュリティ、生成AIの利用ルールなども重要になっています。「自社で全部作る」だけでなく、「選び、つなぎ、継続して使う」仕事が増えています。</p>


<h3 class="wp-block-heading"><span id="toc6">情シス内部の組織構造も知っておこう</span></h3>


<p class="wp-block-paragraph">情シスの中でも、役職による判断権限と、業務領域による担当分担があります。例えば、次のような体制です。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<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>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">これとは別に、企画・開発、運用・保守、社内IT支援などの担当グループが置かれることもあります。企業規模によっては兼務も珍しくありません。<strong>若手は担当するシステムと業務を理解するところから始め、主任クラスでは担当領域を横断して課題や判断をつなぐこと</strong>が期待されます。</p>


<h3 class="wp-block-heading"><span id="toc7">情シス担当者の周囲に、誰がいるのか</span></h3>


<p class="wp-block-paragraph">新任担当者は、まず社内外の関係者を整理してください。情シスはすべてを一人で決める部署ではありません。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>関係者</th>
<th>主な役割</th>
<th>情シス担当者との接点</th>
</tr>
</thead>
<tbody>
<tr>
<td>経営層・事業責任者</td>
<td>投資目的・予算・事業上の優先順位を判断</td>
<td>投資の根拠、重大な判断事項を報告する</td>
</tr>
<tr>
<td>情シスの管理者・責任者</td>
<td>担当範囲、要員、部門としての判断・承認</td>
<td>方針の確認、課題の上申、意思決定の依頼</td>
</tr>
<tr>
<td>業務部門・システム利用者</td>
<td>業務要件を示し、業務仕様を確定・受け入れる</td>
<td>現行業務を確認し、変更案や試験結果をすり合わせる</td>
</tr>
<tr>
<td>SIer・導入ベンダ</td>
<td>技術方式の検討、設計・実装、技術試験、保守支援</td>
<td>仕様・見積り・進捗・品質・障害対応を協議する</td>
</tr>
<tr>
<td>取引先・外部サービス</td>
<td>データ連携、取引条件、外部サービスの提供</td>
<td>業務責任者と協力して接続条件や変更可否を確認する</td>
</tr>
</tbody>
</table>
</figure>


<div id="attachment_3552" style="width: 1682px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-3552" class="wp-image-3552 size-full" src="https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222.png" alt="" width="1672" height="941" srcset="https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222.png 1672w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/10/52c7a8d7e580930b769703ea7d8ee222-752x423.png 752w" sizes="(max-width: 1672px) 100vw, 1672px" /><p id="caption-attachment-3552" class="wp-caption-text">図　新任情シス担当者の組織内の位置と社内外の関係者</p></div>

<p class="wp-block-paragraph">担当者の仕事は「すべての関係者を指揮すること」ではありません。<strong>情報を集め、論点を整理し、権限のある人が判断できる状態を作ること</strong>です。ベンダへ技術的な詳細を任せても、判断の所在を曖昧にしないことが大切です。</p>


<h3 class="wp-block-heading"><span id="toc8">【実体験】仕事が進む発注者は、決める人が明確だった</span></h3>


<p class="wp-block-paragraph">私が関わったプロジェクトの中には、発注側がキックオフMTGを自ら仕切り、業務仕様を決める責任者を当初から明確にしている案件がありました。業務ごとに課長級の責任者が判断し、SIerは論点の整理や技術的な選択肢の提示で支援する、という役割分担です。</p>


<p class="wp-block-paragraph">反対に、発注側の業務部門間で意見が割れた際、ベンダが合意形成まで引き受けてしまうと、あとから「そういう意味で承認したのではない」という行き違いが起こります。<strong>業務部門間の合意形成は発注側が主導する。技術的な実現方法はSIerが主体的に設計する。</strong> この線引きは、最初の会議で確認しておきたいことの一つです。</p>


<h2 class="wp-block-heading"><span id="toc9">企画・開発・運用で、情シスは何をするのか？</span></h2>


<p class="wp-block-paragraph">情シスは、システム開発の特定の工程だけに関わるわけではありません。企画から導入、運用、効果の確認まで、仕事がつながっています。</p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>段階</th>
<th>情シスが確認・推進すること</th>
<th>SIerに期待すること</th>
</tr>
</thead>
<tbody>
<tr>
<td>企画・調達</td>
<td>導入目的、対象業務、予算、関係者、RFP（提案依頼書）、評価基準</td>
<td>技術的な実現性、概算費用、制約・リスクの提示</td>
</tr>
<tr>
<td>要件定義</td>
<td>業務要件・非機能要件、業務責任者の合意、優先順位</td>
<td>要求の具体化、技術的な論点整理</td>
</tr>
<tr>
<td>設計・開発</td>
<td>重要な仕様のレビュー、変更影響の確認、課題の判断</td>
<td>技術方式・詳細設計・実装・内部品質の確保</td>
</tr>
<tr>
<td>試験・導入</td>
<td>試験方針のレビュー、業務受け入れ、移行判定、利用者への周知</td>
<td>技術試験、不具合解消、移行の準備と実施支援</td>
</tr>
<tr>
<td>運用・改善</td>
<td>障害の業務影響、運用費、改善要望、導入効果</td>
<td>契約に基づく運用・保守、原因分析、改善提案</td>
</tr>
</tbody>
</table>
</figure>


<div id="attachment_3554" style="width: 1610px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-3554" class="wp-image-3554 size-full" src="https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394.png" alt="" width="1600" height="900" srcset="https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394.png 1600w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/10/41489ff0f1325166c639870cdd43d394-752x423.png 752w" sizes="(max-width: 1600px) 100vw, 1600px" /><p id="caption-attachment-3554" class="wp-caption-text">図　発注側とSIerが工程ごとに担う作業</p></div>

<p>システム開発は、新しい機能を作る仕事だけではありません。既存システムを新しい環境へ移行する「システム更改」でも、現行調査、設計、試験、データ移行、運用引継ぎなど、多くの作業が発生します。</p>
<p>具体的な開発プロジェクトの進め方は、次の記事「システム更改で学ぶ、プログラミングだけではない仕事の全体像」で紹介しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>
<h3 class="wp-block-heading"><span id="toc10">発注側は「何を実現するか」を決める</span></h3>


<p class="wp-block-paragraph">業務要件や優先順位は発注側が決めます。一方、実現するための技術方式や物理設計は、SIerが専門家として主体的に検討・設計します。発注側は、その内容が自社の要求に合っているかを理解して承認します。</p>


<p class="wp-block-paragraph">例えば、データベースの索引をどう設計するかまで情シスが指定する必要はありません。しかし、必要な性能や運用条件が満たされるか、費用にどのような影響があるかは確認すべきです。技術方式が業務や投資判断に大きく関わるなら、SIerが代替案を説明し、発注側と合意して進めます。</p>


<p class="wp-block-paragraph"><strong>任せることと、丸投げすることは違います。</strong></p>


<h3 class="wp-block-heading"><span id="toc11">【実体験】RFPの一行から、設計上の論点を引き出す</span></h3>


<p class="wp-block-paragraph">以前、RFPに「オンライン受付は夕方で終了するが、必要に応じて延長できること」とだけ書かれていたことがあります。</p>


<p class="wp-block-paragraph">SIerとして確認したいのは、延長をいつまでに申し込むのか、誰が承認するのか、延長範囲はシステム全体か処理単位か、延長対象外の接続はどう扱うのか、といった点です。帳票作成などの非同期処理が終了時刻をまたいだらどうするのかも確認が必要です。</p>


<p class="wp-block-paragraph">私は質問表で条件を一つずつ確認し、パッケージの標準機能で実現できるか、追加開発が必要かを整理しました。他社パッケージの対応状況も検討材料にしつつ、発注側には「本当に必須か」「代替案を認められるか」を質問しました。</p>


<p class="wp-block-paragraph">入札で質問・回答が参加各社に公開される場合、こうした質問は、発注側が自らの要求を具体化する機会にもなります。<strong>ベンダからの質問が多いことは、必ずしも悪い兆候ではありません。曖昧な要求を放置して進める方が危険です。</strong></p>


<h2 class="wp-block-heading"><span id="toc12">ある失敗ケースで考える、誰が何を確認すべきだったのか</span></h2>


<p class="wp-block-paragraph">ここまで説明した役割が欠けると、何が起こるでしょうか。問題を見つけやすいよう、<strong>あえて単純化した極端な例</strong>で考えてみます。実際の個別案件を紹介するものではありません。</p>


<p class="wp-block-paragraph">経験者にとっては初歩的な確認漏れに見える内容ですが、開発を初めて担当する人には、そもそも何を確認すべきか分からないこともあります。まず「誰が、どの段階で気づけたか」を意識して読んでみてください。</p>


<h3 class="wp-block-heading"><span id="toc13">取引先との連携で起きたこと</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">さて、<strong>どの役割を果たしていれば、もっと早い段階で発見できたでしょうか。</strong></p>


<h3 class="wp-block-heading"><span id="toc14">欠けていた活動と、本来すべき活動</span></h3>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>活動</th>
<th>このケースで欠けていたこと</th>
<th>本来すべきこと</th>
<th>主な担当</th>
</tr>
</thead>
<tbody>
<tr>
<td>業務要件の確認</td>
<td>連携ファイルの形式だけを見て、運用上の条件を拾わなかった</td>
<td>現行運用担当・業務部門・取引先に再送時の取り決めを確認</td>
<td>発注側が情報収集、SIerが確認観点を提示</td>
</tr>
<tr>
<td>技術検討・設計</td>
<td>標準機能との差異と重複防止方式を詰めなかった</td>
<td>連携の正常系・異常系を設計し、方式を評価</td>
<td>SIer</td>
</tr>
<tr>
<td>試験計画</td>
<td>通常送受信だけを確認対象にした</td>
<td>再送・重複・通信障害などを試験項目に入れる</td>
<td>SIerが計画・試験、発注側が方針をレビュー</td>
</tr>
<tr>
<td>外部調整</td>
<td>取引先との運用変更可否が未決定</td>
<td>変更する条件と合意責任者を明確にする</td>
<td>発注側の業務責任者</td>
</tr>
<tr>
<td>課題・リスク管理</td>
<td>未確認事項が放置された</td>
<td>担当・期限・影響・判断先を管理する</td>
<td>双方</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">これは発注側だけの失敗でも、SIerだけの失敗でもありません。<strong>専門家が確認すべき技術的論点と、発注側が把握・判断すべき業務条件が結び付かなかったこと</strong>にあります。</p>


<p class="wp-block-paragraph">また、対応には品質（Quality）・費用（Cost）・納期（Delivery）、いわゆるQCDの観点が必要です。追加開発するか、取引先と条件を見直すか、安全に管理できる範囲で暫定対応するか。SIerが影響と選択肢を提示し、発注側が事業上の優先順位を踏まえて判断します。</p>


<p class="wp-block-paragraph">この例から学んでほしいのは、極端な失敗そのものではなく、<strong>要件と試験の対応を追い、抜けている確認事項に気づく視点</strong>です。後半のVモデルの説明にもつながります。</p>
<p>今回のケースは、問題点を分かりやすくするために単純化した例ですが、上流工程で確認すべき事項を残したまま進めると、後工程で手戻りが発生するという構造は、実際のプロジェクトにも共通します。</p>
<p>別の例として、AWSへのクラウド移行で事前検証（PoC）が不足し、設計上のリスクが構築・試験段階で表面化する問題を次の記事「クラウドリフトの失敗は構築前に始まっている」で解説しています。</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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/34014ea8103fa5e3a36e14fd6df22125-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/34014ea8103fa5e3a36e14fd6df22125-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/34014ea8103fa5e3a36e14fd6df22125-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/34014ea8103fa5e3a36e14fd6df22125-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/34014ea8103fa5e3a36e14fd6df22125-376x212.png 376w" sizes="(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 loading="lazy" decoding="async" 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" /></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.20</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc15">開発が終わってからが本番。運用と導入効果はどう評価する？</span></h2>


<p class="wp-block-paragraph">システムが予定どおり完成し、ベンダによる試験を通過したら成功でしょうか。情シスの評価は、そこで終わりません。</p>


<h3 class="wp-block-heading"><span id="toc16">「作れたか」と「成果が出たか」は別の評価</span></h3>


<p class="wp-block-paragraph">開発段階では、必要な品質を確保できたか、予算と納期を守れたかというQCDが重要です。一方、導入後には、業務が実際に改善したか、投資に見合う便益が生まれたかを確かめる必要があります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>観点</th>
<th>主な問い</th>
<th>確認する時期・担当</th>
</tr>
</thead>
<tbody>
<tr>
<td>開発のQCD</td>
<td>約束した機能・性能を、求めた品質・費用・時期で実現できたか</td>
<td>開発中〜受け入れ時。発注側とSIerで確認</td>
</tr>
<tr>
<td>運用品質</td>
<td>安定して使え、障害時に業務を継続・復旧できるか</td>
<td>稼働後。情シスと運用・保守担当</td>
</tr>
<tr>
<td>導入効果・ROI</td>
<td>業務時間、誤処理、売上などが改善し、投資に見合ったか</td>
<td>稼働後。情シスが業務部門・経理等と評価を主導</td>
</tr>
</tbody>
</table>
</figure>


<div id="attachment_3558" style="width: 1610px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3558" class="wp-image-3558 size-full" src="https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1.png" alt="" width="1600" height="900" srcset="https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1.png 1600w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/10/434e533229540c2c6c6cb91f49674ab1-752x423.png 752w" sizes="(max-width: 1600px) 100vw, 1600px" /><p id="caption-attachment-3558" class="wp-caption-text">図　QCDと導入効果ROI</p></div>

<p class="wp-block-paragraph">SIerはシステムが要求に沿って稼働しているかを検証できます。しかし、部門の実際の工数や取引の改善、事業上の収益への影響を、SIerだけで測ることはできません。業務の成果を測る責任は発注側にあります。</p>


<h3 class="wp-block-heading"><span id="toc17">導入前にKPIと測定方法を決めておく</span></h3>


<p class="wp-block-paragraph">例えば、受注処理の効率化が導入目的なら、稼働前後で「処理件数」「担当者の作業時間」「手戻り件数」などを比較します。</p>


<p class="wp-block-paragraph">仮に月400時間かかっていた処理が、導入後280時間になれば、月120時間、年間1,440時間の削減です。時間当たり3,000円で換算すると、年間432万円分の工数に相当します。</p>


<p class="wp-block-paragraph">ただし、<strong>432万円がそのまま会社の現金支出削減になるとは限りません。</strong> 実際に残業代や外注費が減る場合もあれば、空いた時間を別の業務に振り向ける場合もあるからです。後者は生産性向上という効果ですが、費用削減と同じものとして扱ってはいけません。</p>


<p class="wp-block-paragraph">このため、KPIは企画段階で決め、測定方法、導入前の数値、導入後の測定時期、データを持つ部署まで定めておきます。導入後に慌てて効果を測ろうとしても、比較する基準が残っていないことがあります。</p>


<h3 class="wp-block-heading"><span id="toc18">ROIは「便益」と「費用」を同じ期間で比較する</span></h3>


<p class="wp-block-paragraph">ROI（Return on Investment、投資利益率）は、投資に対してどれだけの利益が得られたかを見る指標です。簡易的には、<strong>ROI＝（便益－費用）÷費用×100％</strong>で計算できます。比較期間と費用・便益の範囲をそろえることが前提です。</p>


<p class="wp-block-paragraph">先ほどの年間432万円は、削減した作業時間の<strong>金額換算例</strong>でした。ここからは、それとは別に、実際に外注費などの支出を減らせると仮定した試算を示します。</p>


<p class="wp-block-paragraph">初期投資900万円、削減できる費用が年間480万円、新しいシステムの運用費が年間80万円の場合、年間の差引便益は400万円です。単純な投資回収期間は、<strong>900万円÷400万円＝2.25年（約2年3か月）</strong>となります。</p>


<p class="wp-block-paragraph">同じ条件を3年間で評価すると、次のようになります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>3年間の評価項目</th>
<th style="text-align: right;">金額</th>
</tr>
</thead>
<tbody>
<tr>
<td>便益（480万円×3年）</td>
<td style="text-align: right;">1,440万円</td>
</tr>
<tr>
<td>初期投資</td>
<td style="text-align: right;">900万円</td>
</tr>
<tr>
<td>運用費（80万円×3年）</td>
<td style="text-align: right;">240万円</td>
</tr>
<tr>
<td>総費用（初期投資＋運用費）</td>
<td style="text-align: right;">1,140万円</td>
</tr>
<tr>
<td>差引便益（便益－総費用）</td>
<td style="text-align: right;">300万円</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">したがって、<strong>3年間の簡易ROI＝300万円÷1,140万円×100≒26.3％</strong>です。これは物価変動や資金の時間価値、税金、追加改修費用などを考慮しない説明用の試算です。</p>


<p class="wp-block-paragraph">実務ではクラウド利用料、保守契約、ライセンス更新、追加改修、利用部門の負担なども評価対象に含めます。また、内部統制の強化や顧客サービスの改善など、金額にしにくい効果は、ROIと併せて別のKPIで評価します。</p>


<h3 class="wp-block-heading"><span id="toc19">安定運用・障害対応・次の更改にも責任がある</span></h3>


<p class="wp-block-paragraph">稼働後の監視、バックアップ、障害復旧、更新作業などは、契約によってSIerや運用ベンダが担うことも多い仕事です。それでも情シスには、障害の業務影響を把握し、復旧の優先順位を決め、関係者に連絡し、改善の必要性を判断する役割があります。</p>


<p class="wp-block-paragraph">導入後の効果が低ければ、運用を見直すのか、追加改善するのかを検討します。老朽化による「守りの更改」だけでなく、新しい事業のために仕組みを変える「攻めの更改」もあります。システムを知るベンダとは、稼働後もパートナーとして適切に連携しておきたいところです。</p>


<h2 class="wp-block-heading"><span id="toc20">若手・主任クラスの情シス担当者が身につけたい実務能力</span></h2>


<p class="wp-block-paragraph">「業務を理解する」「関係者と円滑にコミュニケーションする」といった心得だけでは、日々の仕事で何をすればよいか分かりません。そこで、現場でベンダの窓口を担う若手が、主任クラスを目指す際の具体的な到達目標を示します。<strong>自担当システムの全体像を説明でき、計画書や報告書にある重要な抜けに気づけること</strong>が、一つの目安です。</p>


<h3 class="wp-block-heading"><span id="toc21">① 自担当システムの構成と費用を説明できる</span></h3>


<p class="wp-block-paragraph">まず、担当システムがどの業務を支え、どのシステムと連携しているかを説明できるようにします。主要なサーバ・クラウドサービス、データベース、ネットワーク、認証、外部連携先を、構成図で指し示せる水準が目標です。</p>


<p class="wp-block-paragraph">また、障害が起きるとどの部署や取引先に影響するか、バックアップや復旧の仕組みはどうなっているかも押さえます。自分が全装置の設定をできる必要はありませんが、<strong>どこが止まれば何が止まるのか</strong>を説明できることが大切です。</p>


<p class="wp-block-paragraph">費用面では、初期開発費だけでなく、保守費、クラウド利用料、ライセンス、回線、外注費などの構造を理解します。「今の費用は何に対して払っているのか」「利用量が増えたらどこが増額するのか」が分かれば、更新や追加投資の相談にも参加できます。</p>


<h3 class="wp-block-heading"><span id="toc22">② プロジェクト計画書をレビューできる</span></h3>


<p class="wp-block-paragraph">ベンダから計画書を受け取ったとき、「専門家が作ったから問題ない」と受け取るのではなく、次の点を確認します。</p>


<p class="wp-block-paragraph">以下の10の観点は、PMI（Project Management Institute）の「PMBOKガイド」第6版※に示された<strong>10の知識エリア</strong>を参考に、情シス担当者が計画書をレビューするときのチェックポイントとして整理したものです。PMBOKを覚えることが目的ではなく、<strong>管理上の確認漏れに気づけるようになること</strong>が目的です。</p>
<p>※最新版は<a href="https://www.pmi.org/standards/pmbok">こちら</a></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>管理の観点</th>
<th>主任クラスを目指す担当者のチェックポイント</th>
</tr>
</thead>
<tbody>
<tr>
<td>① 統合・変更管理</td>
<td>全体計画と各社の計画がつながっているか。変更の申請・影響評価・承認方法はあるか</td>
</tr>
<tr>
<td>② スコープ</td>
<td>対象業務、対象外、成果物、発注側とSIerの作業境界が明確か</td>
</tr>
<tr>
<td>③ スケジュール</td>
<td>主要な節目、他部署・他社との依存関係、受け入れ期間は明確か</td>
</tr>
<tr>
<td>④ コスト</td>
<td>予算、見積り前提、追加費用が発生する条件が明確か</td>
</tr>
<tr>
<td>⑤ 品質</td>
<td>機能・非機能要件の確認方法、レビュー・試験計画、合否判定基準は明確か</td>
</tr>
<tr>
<td>⑥ 資源・体制</td>
<td>必要な要員、スキル、担当責任者、要員不足時の対応は決まっているか</td>
</tr>
<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>
</figure>


<p class="wp-block-paragraph"><strong>10の観点が一冊の計画書にすべて詳しく書かれているとは限りません。</strong> 体制図、品質計画書、課題・リスク管理表などの関連資料も合わせて確認します。大切なのは、各観点について、確認先の文書や担当者を把握し、必要な質問ができることです。</p>


<h3 class="wp-block-heading"><span id="toc23">③ Vモデルを理解し、品質の確認方法に目を向けられる</span></h3>


<p class="wp-block-paragraph">Vモデルは、要件・設計の各段階と、それを検証する試験の対応を考えるための代表的なモデルです。詳細な開発手順が異なるプロジェクトでも、<strong>「その要求は、どの試験で確かめるのか」</strong>という問いは役立ちます。</p>


<p class="wp-block-paragraph">情シスの担当者がまず見るべきなのは、RFPや要件定義書に、機能だけでなく非機能要件が書かれているかという点です。非機能要件には、例えば性能、可用性、セキュリティ、バックアップ、障害時の復旧、運用条件などがあります。</p>
<p>非機能要件の中でも、セキュリティは発注側とSIerの認識を合わせておきたい重要な領域です。「セキュリティを強化する」といった抽象的な要求ではなく、どのリスクに、どこまで対応する必要があるのかを明確にすることが求められます。</p>
<p>具体的な検討方法は、次の記事「セキュリティ要件定義の進め方｜リスクアセスメントから対策・残存リスクを決める方法」で解説しています。</p>

<a href="https://sys-univ.com/dev/security/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/09/a730f6ed9dc0d4e45d16222f81050c32-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/09/a730f6ed9dc0d4e45d16222f81050c32-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/a730f6ed9dc0d4e45d16222f81050c32-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/a730f6ed9dc0d4e45d16222f81050c32-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/a730f6ed9dc0d4e45d16222f81050c32-376x212.png 376w" sizes="(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">セキュリティ要件定義を、RFPや上位基準を起点に、リスクアセスメント、差異評価、対策、残存リスクまで具体化する方法を解説。脅威・脆弱性の分析、関係者との合意、変更時の再アセスメントまで実務例で整理します。</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 loading="lazy" decoding="async" 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" /></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.09.17</div></div></div></div></a>


<p class="wp-block-paragraph">次に、基本設計の内容が要件を反映しているか、<strong>基本設計に対応するシステム試験などで、必要な動作を検証できるか</strong>を確認します。正常系だけでなく、異常系、ピーク時の性能、障害復旧、外部連携の例外処理まで視野に入れます。今回の重複登録のケースは、まさにこの確認が欠けた例です。</p>


<p class="wp-block-paragraph">個々の詳細なテストケースを情シスがすべて作る必要はありません。しかし、<strong>重要な機能・非機能要件に対して、どの試験で何をもって合格とするのか</strong>を説明してもらえることは、品質レビューの基本です。発注側による受け入れ試験は、技術試験の繰り返しではなく、実際の業務が成立するかを判断する場です。</p>

<div id="attachment_3560" style="width: 1610px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3560" class="wp-image-3560 size-full" src="https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a.png" alt="" width="1600" height="900" srcset="https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a.png 1600w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/10/1752a9b8b1671bd6dc6c69cde6a8037a-752x423.png 752w" sizes="(max-width: 1600px) 100vw, 1600px" /><p id="caption-attachment-3560" class="wp-caption-text">図　Vモデルと要件試験の対応</p></div>

<p>重要なのは、試験項目の数だけを見ることではなく、要件や設計で決めた内容を、対応する試験で確認できるかという視点です。</p>
<p>この考え方については、次の記事「Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方」で詳しく取り上げています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>


<h3 class="wp-block-heading"><span id="toc24">④ 会議体の目的・参加者・決定権限を見抜く</span></h3>


<p class="wp-block-paragraph">プロジェクト計画書に「週次定例会を実施」と書かれていても、それだけでは足りません。その会議が報告のためなのか、課題を解決する場なのか、正式に意思決定する場なのかを確認します。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>会議体の例</th>
<th>目的</th>
<th>特に確認したいこと</th>
</tr>
</thead>
<tbody>
<tr>
<td>進捗定例会</td>
<td>進捗・遅延・次の作業の確認</td>
<td>遅延時の対応責任者、判断が必要な事項の上申先</td>
</tr>
<tr>
<td>課題・リスク会議</td>
<td>未解決事項と重大リスクの管理</td>
<td>担当・期限・影響、解決できない場合の判断者</td>
</tr>
<tr>
<td>業務仕様の調整会議</td>
<td>部門をまたぐ要求や運用の合意</td>
<td>業務責任者が参加し、決定権限が明確か</td>
</tr>
<tr>
<td>品質・移行判定会議</td>
<td>工程完了、受け入れ、切替可否の判断</td>
<td>判定基準、証跡、承認者、持ち越し条件</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">ここで目を配りたいのは、<strong>「何を決める会議か」「決められる人が出席しているか」「決められないときは誰に上げるか」</strong>の3点です。会議が多くても、意思決定の経路が曖昧では意味がありません。</p>


<h4 class="wp-block-heading"><span id="toc25">【実体験】全体統括は、すべての詳細調整を引き受ける仕事ではない</span></h4>


<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>


<h3 class="wp-block-heading"><span id="toc26">⑤ 導入効果を自分の言葉で報告できる</span></h3>


<p class="wp-block-paragraph">最後は、開発したシステムを「使った成果」で説明する力です。稼働後のKPIは改善したか、運用費に見合う効果があるか、どこに次の改善余地があるか。業務部門と計画値・実績値・差異の原因を確認し、<strong>改善の選択肢と次のアクションを添えて情シス管理者に報告できる</strong>水準を目指します。</p>


<p class="wp-block-paragraph">主任クラスに期待されるのは、すべてを一人で解決することではありません。<strong>構成・コスト・品質・関係者・導入効果をつないで、プロジェクトや運用の全体像を説明できること</strong>です。そこまで視野が広がれば、ベンダとの協議も、計画書のレビューも、単なる報告の受け手から一段進んだ仕事になります。</p>


<h2 class="wp-block-heading"><span id="toc27">まとめ：情シスは、ITを業務の成果につなげる仕事</span></h2>


<p class="wp-block-paragraph">情シスは、システムを発注するだけの部署ではありません。経営や業務の目的を理解し、関係部署とSIerをつなぎ、開発中の判断や品質確認を行い、導入後の効果まで確かめる役割を担います。</p>


<p class="wp-block-paragraph">新任担当者は、まず自分の周囲の関係者、担当システムの構成、費用、判断権限を把握してください。そのうえで、ベンダの計画書や試験方針を読み、「何を根拠に大丈夫と判断するのか」を質問できるようになることを目指しましょう。</p>


<p class="wp-block-paragraph"><strong>技術は専門家に任せる。しかし、業務上の判断と導入成果の確認まで丸投げしない。</strong> これが、SIerの立場から新任情シス担当者に最も伝えたいことです。</p>

<p>&nbsp;</p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/corporate-it-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracleのインデックス設計とは？付与判断・設計指針・性能試験の進め方を実例で解説</title>
		<link>https://sys-univ.com/dev/oracle-index-design/</link>
					<comments>https://sys-univ.com/dev/oracle-index-design/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 02:59:59 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3518</guid>

					<description><![CDATA[インデックスは、性能試験で遅いSQLが見つかってから追加すればよい。設計工程でそう割り切り、ほとんど検討しないまま単体性能試験を迎えるプロジェクトは少なくありません。大規模システムでこれをやると、膨大なSQLの中からボト [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>インデックスは、性能試験で遅いSQLが見つかってから追加すればよい。設計工程でそう割り切り、ほとんど検討しないまま単体性能試験を迎えるプロジェクトは少なくありません。大規模システムでこれをやると、膨大なSQLの中からボトルネックを探し、インデックスを設計し直す作業が試験工程に集中します。</p>
<p>とはいえ、SQLもデータ件数も固まっていない段階で、最適なインデックスを決めることはできません。必要なのは、設計段階で最低限の候補を抽出し、性能試験で効果を確かめながら見直す進め方です。</p>
<p>本記事では、業務側の設計がまだ本格的に動き出していない時期に、システム基盤側でインデックス設計を巻き取り、設計指針・実施要領・検討表を整えて業務チームへ展開した事例を紹介します。技術解説はOracle Database 19cを基準にしています。</p>
<blockquote>
<p>事例中に登場する「1万件」「3％」などの各種数値は架空の値です。案件で作業量を絞るために置いた仮の一次選別ルールであり、Oracle 19cの推奨値や実測結果ではありません。</p>
</blockquote>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. インデックス設計とは？「作る・作らない」を根拠付きで決める</a><ol><li><a href="#toc2" tabindex="0">インデックスがあれば速くなる、とは限らない</a></li><li><a href="#toc3" tabindex="0">インデックス設計は物理設計とアプリケーション設計の接点</a></li></ol></li><li><a href="#toc4" tabindex="0">2. なぜ単体性能試験の前にインデックス設計が必要なのか</a><ol><li><a href="#toc5" tabindex="0">「性能は基盤がやるもの」という空気</a></li><li><a href="#toc6" tabindex="0">押し付け合いになる作業を、先に巻き取る</a></li><li><a href="#toc7" tabindex="0">何を材料に先行したか</a></li></ol></li><li><a href="#toc8" tabindex="0">3. 設計指針はどう作るか――判断基準と成果物を基盤側で定義する</a><ol><li><a href="#toc9" tabindex="0">指針・実施要領・検討表・定義書を分ける</a></li><li><a href="#toc10" tabindex="0">ルールは一次選別用の仮基準として置く</a></li><li><a href="#toc11" tabindex="0">「例外」と「判断保留」の入口も決めておく</a></li></ol></li><li><a href="#toc12" tabindex="0">4. SQLマップからインデックス付与候補を抽出する手順</a><ol><li><a href="#toc13" tabindex="0">手順1：SQLマップ上の管理IDと対象SQLを一覧化する</a></li><li><a href="#toc14" tabindex="0">手順2：一次候補を機械的に絞り込む</a></li><li><a href="#toc15" tabindex="0">手順3：選択性を仮計算する</a></li><li><a href="#toc16" tabindex="0">手順4：複合インデックスの列順と、索引が使われない書き方を確認する</a></li><li><a href="#toc17" tabindex="0">手順5：「不要」の理由まで記録する</a></li></ol></li><li><a href="#toc18" tabindex="0">5. 実務事例：先行設計で「作らない」判断も残す</a><ol><li><a href="#toc19" tabindex="0">業務領域ごとに付与判断が分かれた</a></li><li><a href="#toc20" tabindex="0">中間一致・後方一致は、通常の選別とは切り分けた</a></li><li><a href="#toc21" tabindex="0">設計に使った資料の「時点」を残して引き継ぐ</a></li></ol></li><li><a href="#toc22" tabindex="0">6. 業務グループへ展開する――説明会・修正・引き継ぎ</a><ol><li><a href="#toc23" tabindex="0">説明会で手順をそろえる</a></li><li><a href="#toc24" tabindex="0">たたき台を出すと、指摘が出てくる</a></li><li><a href="#toc25" tabindex="0">誰が何を更新するかまで決める</a></li></ol></li><li><a href="#toc26" tabindex="0">7. Oracle 19cでは、設計したインデックスをどう検証するか</a><ol><li><a href="#toc27" tabindex="0">机上見積と実機の結果を分けて見る</a></li><li><a href="#toc28" tabindex="0">DBMS_XPLANで実行計画と実績値を見る</a></li><li><a href="#toc29" tabindex="0">統計情報とカーディナリティを確認する</a></li><li><a href="#toc30" tabindex="0">Invisible IndexとAutomatic Indexingの使いどころ</a></li></ol></li><li><a href="#toc31" tabindex="0">8. まとめ：インデックス設計は「試験前に仮説を作る仕事」</a><ol><li><a href="#toc32" tabindex="0">所感</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">1. インデックス設計とは？「作る・作らない」を根拠付きで決める</span></h2>
<h3><span id="toc2">インデックスがあれば速くなる、とは限らない</span></h3>
<p>インデックスは、特定の検索条件に対して対象行を効率よく見つけるためのデータ構造です。Oracleで一般的なB-treeインデックスは、等価検索や範囲検索で有力なアクセスパスになります。</p>
<p>ただし、表の大部分を読むSQLでは、インデックス経由の行アクセスがかえって高コストになることがあります。インデックスはINSERT・UPDATE・DELETEのたびに維持されるので、増やすほど書き込み負荷と格納領域も増えます。</p>
<p>設計すべきなのは「どの列に索引を張るか」だけではありません。対象SQL、選択性、データ量、更新頻度、結合や並び替えの条件、既存索引との重複まで含めて、付与する理由と付与しない理由を説明できる状態にすることです。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>検討項目</th>
<th>確認したいこと</th>
<th>判断への影響</th>
</tr>
</thead>
<tbody>
<tr>
<td>SQLの使われ方</td>
<td>WHERE、JOIN、ORDER BY、実行頻度</td>
<td>対象となる列と列順を考える</td>
</tr>
<tr>
<td>データ量</td>
<td>現在件数、試験時件数、将来の増加</td>
<td>全表走査と索引アクセスを比較する</td>
</tr>
<tr>
<td>絞り込み</td>
<td>想定ヒット件数、値の分布、偏り</td>
<td>索引の選択性を見積もる</td>
</tr>
<tr>
<td>更新特性</td>
<td>更新頻度、更新される列、バッチ量</td>
<td>追加索引の維持コストを評価する</td>
</tr>
<tr>
<td>既存定義</td>
<td>PK、ユニーク制約、既存索引</td>
<td>重複した索引を避ける</td>
</tr>
<tr>
<td>外部キー</td>
<td>子表の外部キー列、親表の削除・主キー更新</td>
<td>子表のロック競合を避ける</td>
</tr>
<tr>
<td>業務要件</td>
<td>応答時間、夜間バッチの処理時間</td>
<td>検証の優先順位を付ける</td>
</tr>
</tbody>
</table>
</div>
<h3><span id="toc3">インデックス設計は物理設計とアプリケーション設計の接点</span></h3>
<p>インデックスの判断には、DBAや基盤SEが持つDBの知識だけでなく、業務チームが把握しているSQL・検索条件・データ分布が必要です。設計書を一人で眺めて完結する作業ではありません。</p>
<p>データベース物理設計の全体像は、次の記事で紹介しています。インデックス設計は、その中でもSQLの処理特性に強く依存する領域です。</p>

<a href="https://sys-univ.com/dev/db-physical-design/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f.png 1672w" sizes="(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 19cで解説。大手SIer20年超の基盤SEが、実案件の物理設計書・課題管理表をもとに、暫定見積、PROCESSES算定、Data Guard設計の実例を紹介します。</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 loading="lazy" decoding="async" 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" /></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.10.21</div></div></div></div></a>
<p>&nbsp;</p>
<h2><span id="toc4">2. なぜ単体性能試験の前にインデックス設計が必要なのか</span></h2>
<h3><span id="toc5">「性能は基盤がやるもの」という空気</span></h3>
<p>このプロジェクトでは、設計が始まって間もない時期で、業務チームは画面や機能の設計に追われていました。インデックス設計どころではありません。加えて、性能は基盤の担当という空気がありました。</p>
<p>性能を基盤に預けたまま工程が進めば、そのツケは性能試験でまとめて返ってきます。単体性能試験では、ある程度のインデックスを付与した状態から性能を確認し、必要に応じて見直すのが現実的です。索引がほとんどない状態で大量のSQLを一斉に試験へ流せば、遅いSQLが多数出て、切り分けだけで工程が埋まります。</p>
<p>当時の設計指針にも、この考え方を明記していました。机上だけで正確に判断するのは難しい。ただ、インデックスをまったく作らずに試験すると、ボトルネックの特定が膨大になる。最低限のインデックス設計を先に行い、試験工程のSQLトレース等で見直す、という方針です。</p>
<h3><span id="toc6">押し付け合いになる作業を、先に巻き取る</span></h3>
<p>担当が曖昧な作業は、どこのプロジェクトでも押し付け合いになり、誰も手を付けないまま期限を迎えます。インデックス設計はその典型です。</p>
<p>私はインデックス設計を基盤側で引き受けると宣言しました。作業を引き取るだけではなく、判断基準と進め方も基盤側で決める。その方針を示して、先行設計に着手しました。</p>
<p>開発プロセスを知らない人には、性能は基盤がやるものに見えていたようです。リーダークラスの中には、面倒な作業を基盤側が引き受けて助かった、と感じた人もいたように思います。私の見方は逆で、ここを握れば性能試験までの進め方を自分で組み立てられます。経験としても悪くないと考えました。</p>
<h3><span id="toc7">何を材料に先行したか</span></h3>
<p>先行設計の材料は、SQLマップ、エンティティ定義書、想定レコード件数です。SQLは、プロトタイプアプリを作っていた業務チームと組んで集めました。完成したアプリケーションがなくても、主要な検索のパターンはプロトタイプの段階でかなり見えてきます。</p>
<p>ここで意識したのは、基盤側が業務の最終判断まで奪わないことです。私が作ろうとしたのは、業務側が後から検討を引き継げる共通の土台でした。</p>
<h2><span id="toc8">3. 設計指針はどう作るか――判断基準と成果物を基盤側で定義する</span></h2>
<h3><span id="toc9">指針・実施要領・検討表・定義書を分ける</span></h3>
<p>用意した成果物は、役割を明確に分けました。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>成果物</th>
<th>役割</th>
<th>主に記録すること</th>
</tr>
</thead>
<tbody>
<tr>
<td>インデックス設計指針</td>
<td>設計判断の原則をそろえる</td>
<td>索引種別、件数・ヒット率の目安、付与時の注意点</td>
</tr>
<tr>
<td>インデックス設計実施要領</td>
<td>作業手順をそろえる</td>
<td>SQL抽出、一次候補選別、定義書の作成方法</td>
</tr>
<tr>
<td>インデックス付与検討表</td>
<td>SQLごとの判断を残す</td>
<td>SQLマップ上の管理ID、参照表、除外理由、付与要否、見直し事項</td>
</tr>
<tr>
<td>インデックス定義書</td>
<td>実装可能な形にする</td>
<td>索引名、対象表、対象列・順序、索引種別、一意性、目的</td>
</tr>
<tr>
<td>付与分析資料</td>
<td>難しい候補を掘り下げる</td>
<td>選択性、複合索引の列順、代替案と検証課題</td>
</tr>
</tbody>
</table>
</div>
<p>この分け方の利点は、指針を変更したとき、どのSQLのどの判断に影響するかを追跡できることです。最終的なCREATE INDEX文だけを成果物にすると、「なぜ作ったのか」「なぜ作らなかったのか」が残りません。</p>
<h3><span id="toc10">ルールは一次選別用の仮基準として置く</span></h3>
<p>指針には、候補を効率よく絞り込むための具体的な目安を入れました。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>当時の仮基準</th>
<th>設計上の狙い</th>
<th>Oracle 19cでの位置づけ</th>
</tr>
</thead>
<tbody>
<tr>
<td>1万件未満の表は一次候補から除外</td>
<td>小規模表の検討負荷を減らす</td>
<td>固定基準ではない。行長、ブロック数、アクセス頻度も確認</td>
</tr>
<tr>
<td>想定ヒット件数が表全体の3％以内</td>
<td>選択性の高い検索を優先</td>
<td>固定基準ではない。統計情報、Clustering Factor、実行計画で判断</td>
</tr>
<tr>
<td>非PK索引は原則5本以内</td>
<td>DML負荷と管理負荷を抑える</td>
<td>製品上限ではなく、案件内の設計抑制ルール</td>
</tr>
<tr>
<td>複合索引の構成列は原則10列以内</td>
<td>索引の肥大化を抑える</td>
<td>設計上の目安。必要な列と列順はSQL別に検証</td>
</tr>
<tr>
<td>複雑なJOIN・副問合せは「要注意」</td>
<td>机上判定が難しいSQLを明示</td>
<td>不要という意味ではなく、実行計画による検証対象</td>
</tr>
</tbody>
</table>
</div>
<p>「1万件」「3％」「5本」「10列」は、Oracle製品の仕様上限でも、一般に正しい性能境界でもありません。限られた時間で検討の優先順位を付けるための基準です。Oracle 19cのオプティマイザは、統計情報、値の分布、I/Oコストなどからアクセスパスを選びます。しきい値だけで採否を確定させないことが前提です。</p>
<h3><span id="toc11">「例外」と「判断保留」の入口も決めておく</span></h3>
<p>指針を機械的に適用すると、重要なSQLを見落とします。小さい表でも呼び出し回数が多ければ問題になり得ますし、JOINを含むSQLこそ性能の主要因になる場合があります。</p>
<p>実務で作る規約には、「原則」と同じくらい「例外の入口」が必要です。一次選別で除外したSQLも、不要と確定したのか、情報不足で判断保留なのか、実機試験へ回したのかを区別して残します。</p>
<h2><span id="toc12">4. SQLマップからインデックス付与候補を抽出する手順</span></h2>
<h3><span id="toc13">手順1：SQLマップ上の管理IDと対象SQLを一覧化する</span></h3>
<p>実施要領では、SQLマップの名前空間と、select・insert・update・deleteに相当するSQLの管理IDを抽出し、付与検討表に転記する手順を定めました。ここでの管理IDはアプリケーション設計資料上の識別子であり、Oracleの<code>V$SQL.SQL_ID</code>とは別物です。</p>
<p>現在のプロジェクトなら、アプリケーションのSQL定義、ORMの生成SQL、SQL実行ログなども情報源になります。最初に押さえるべきは、SQLが「どの業務機能で使われるか」「どの表を参照・更新するか」を追跡できる状態にすることです。</p>
<h3><span id="toc14">手順2：一次候補を機械的に絞り込む</span></h3>
<p>当時の実施要領では、次の順番でSQLを選別しました。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>判定順</th>
<th>確認内容</th>
<th>当時の一次選別</th>
<th>現在の実務での扱い</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>SQL種別</td>
<td>動的SQL・単純INSERTは一次候補から外す</td>
<td>動的SQLでも頻出条件があれば分析対象。INSERT…SELECTのSELECT側も確認</td>
</tr>
<tr>
<td>2</td>
<td>JOIN・副問合せの有無</td>
<td>複雑なSQLは「要注意」として後工程へ</td>
<td>重要SQLなら早期から実行計画を確認</td>
</tr>
<tr>
<td>3</td>
<td>主キーによる絞り込み</td>
<td>PKで十分なら追加不要候補</td>
<td>PK索引で十分か、実行計画と取得行数で確認</td>
</tr>
<tr>
<td>4</td>
<td>テーブル件数</td>
<td>1万件未満は一次候補から外す</td>
<td>件数不明なら保留とし、追加調査へ</td>
</tr>
<tr>
<td>5</td>
<td>想定ヒット件数</td>
<td>3％を超える場合は一次候補から外す</td>
<td>選択性の仮評価。頻度・Clustering Factorも考慮</td>
</tr>
<tr>
<td>6</td>
<td>最終判断</td>
<td>残ったSQLを一次候補とする</td>
<td>SQLをまたいで索引統合・DML影響を検討</td>
</tr>
</tbody>
</table>
</div>
<p>この方法の良いところは、すべてのSQLを同じ深さで分析しないことです。数の多いSQLから一次候補を機械的に選び、判断の難しいSQLと性能上重要なSQLへ検討工数を集中できます。</p>
<p>動的SQLやJOINを含むSQLでも、実行頻度が高いもの、業務上の応答時間が厳しいものは早い段階から実行計画を確認します。</p>
<h3><span id="toc15">手順3：選択性を仮計算する</span></h3>
<p>想定100万行の表をCUSTOMER_IDで検索し、結果が500行と見積もられる場合、選択性は次のとおりです。</p>
<pre><code>500行 ÷ 1,000,000行 × 100 = 0.05％
</code></pre>
<p>当時の基準なら一次候補に残ります。ここから「必ず索引を作る」とは決めません。値の偏り、索引から表へ戻るアクセスの回数、SQLの実行頻度、更新時の負荷、似た索引の有無を確認します。</p>
<p>逆に、100万行中20万行を取得する検索（20％）でも、索引だけで必要な列を取得できるケースや、複数条件の組み合わせで効果が出るケースがあります。数字は候補を絞るための入口で、最終判定ではありません。</p>
<h3><span id="toc16">手順4：複合インデックスの列順と、索引が使われない書き方を確認する</span></h3>
<pre><code class="language-sql">-- 説明用のSQL。実案件のSQLではありません。
SELECT ORDER_ID, ORDER_DATE, STATUS
FROM   ORDER_HEADER
WHERE  CUSTOMER_ID = :customer_id
AND    ORDER_DATE &gt;= :date_from
AND    ORDER_DATE &lt;  :date_to;
</code></pre>
<p>このSQLでは、CUSTOMER_IDの等価条件とORDER_DATEの範囲条件が候補になります。(CUSTOMER_ID, ORDER_DATE)の複合索引を比較対象にできますが、列順は他のSQLでの使われ方や値の分布も踏まえて決めます。</p>
<p>同じ表にCUSTOMER_ID単独、(CUSTOMER_ID, ORDER_DATE)、(CUSTOMER_ID, ORDER_DATE, STATUS)を無計画に重複作成しないことも大切です。Oracle 19cには先頭列を省略した場合のスキップ・スキャンもあるので、「先頭列がないと絶対に使われない」という古いルールをそのまま当てはめるのも適切ではありません。</p>
<p>索引を作っても、SQLの書き方で使われないケースもこの段階で拾っておきます。代表的なのは次の2つです。</p>
<ul>
<li><strong>列への関数適用</strong>：<code>WHERE TRUNC(ORDER_DATE) = :d</code> のように列を関数で包むと、ORDER_DATEの通常の索引を使った効率的な範囲検索が難しくなります。日付の範囲条件に書き換えるか、関数ベース索引を検討します。</li>
<li><strong>暗黙の型変換</strong>：VARCHAR2の列を数値のバインド変数と比較すると、列側にTO_NUMBERが適用され、索引が使われなくなります。SQL規約とバインド変数の型定義で防ぎます。</li>
</ul>
<p>もう一つ、Oracleで見落とされやすいのが<strong>外部キー列の索引</strong>です。子表の外部キー列に索引がないと、親表の行削除や主キー更新の際に子表に表レベルのロック（TMロック）がかかり、子表への同時更新が待たされることがあります。検索条件に出てこない列でも、親表を削除・更新する処理があれば付与を検討します。</p>
<h3><span id="toc17">手順5：「不要」の理由まで記録する</span></h3>
<p>インデックスを付与しない場合も、判断の根拠を残します。付与検討表の記入イメージは次のとおりです。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>SQL管理ID（例）</th>
<th>機能</th>
<th>主な条件</th>
<th>一次判定</th>
<th>理由</th>
<th>次工程での確認</th>
</tr>
</thead>
<tbody>
<tr>
<td>SEL001</td>
<td>詳細照会</td>
<td>ORDER_ID = :id</td>
<td>追加不要候補</td>
<td>PK等価検索で十分と想定</td>
<td>想定行数と実行計画</td>
</tr>
<tr>
<td>SEL002</td>
<td>一覧照会</td>
<td>CUSTOMER_ID = :id</td>
<td>付与候補</td>
<td>大量表を少数行に絞り込む</td>
<td>索引有無の応答時間・I/O比較</td>
</tr>
<tr>
<td>SEL003</td>
<td>複合検索</td>
<td>JOIN＋期間条件</td>
<td>判断保留</td>
<td>JOIN順序と対象件数が未確定</td>
<td>データ整備後の実行計画</td>
</tr>
<tr>
<td>UPD001</td>
<td>状態更新</td>
<td>ORDER_ID = :id</td>
<td>追加不要候補</td>
<td>PK利用。索引追加による更新負荷も懸念</td>
<td>同時更新・バッチ時間</td>
</tr>
</tbody>
</table>
</div>
<p>※この表の管理ID・表名・SQL条件は説明用の例です。</p>
<h2><span id="toc18">5. 実務事例：先行設計で「作らない」判断も残す</span></h2>
<h3><span id="toc19">業務領域ごとに付与判断が分かれた</span></h3>
<p>業務グループが本格的に設計へ取りかかる前に、私は開発が先行する業務領域について、基盤側でインデックスを設計しました。結果は次のとおりです。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>業務領域　　</th>
<th>先行設計での判断</th>
<th>ポイント</th>
</tr>
</thead>
<tbody>
<tr>
<td>業務A</td>
<td>3テーブルにインデックスを付与</td>
<td>中間一致・後方一致検索への対応を含め、業務側に引き継ぎ</td>
</tr>
<tr>
<td>業務B</td>
<td>8テーブルにインデックスを付与</td>
<td>カーディナリティの想定が変われば再検討を依頼</td>
</tr>
<tr>
<td>業務C</td>
<td>付与なし</td>
<td>対象テーブルの想定件数がいずれも1万件未満で、一次候補条件に該当しなかった</td>
</tr>
</tbody>
</table>
</div>
<p>「3」「8」はインデックスの本数ではなく、インデックスを付与したテーブルの数です。業務Cでは当時の一次選別基準に該当する表がなく、後工程の再評価対象として判断を記録しました。</p>
<p>すべての業務領域に同じように索引を作るのではなく、候補を抽出し、作らない場合も理由を残して後から見直せるようにする。先行設計で狙ったのはそこです。</p>
<h3><span id="toc20">中間一致・後方一致は、通常の選別とは切り分けた</span></h3>
<p>業務Aには、中間一致・後方一致検索の性能課題がありました。通常のB-tree索引は <code>LIKE 'ABC%'</code> のような前方一致には有効な場合がありますが、<code>LIKE '%ABC'</code> や <code>LIKE '%ABC%'</code> では、範囲スキャンで効率よく絞り込めません。</p>
<p>なお、LIKE検索では、インデックスの利用可否だけでなく、検索条件の解釈にも注意が必要です。</p>
<p>過去に私が担当したプロジェクトでは、Oracleの不具合により、全角アンダースコア「＿」がワイルドカードとして扱われ、想定外の大量ヒットが発生しました。</p>
<p>実機検証による原因調査から、LIKECの検証、SQL改修・運用回避の判断、再発防止までの経緯は、次の記事で解説しています。</p>

<a href="https://sys-univ.com/dev/oracle-like-fullwidth-underscore/" title="OracleのLIKE検索でほぼ全件ヒット？全角アンダースコアの不具合とSQL改修・再発防止の実例" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c.png 1672w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">OracleのLIKE検索でほぼ全件ヒット？全角アンダースコアの不具合とSQL改修・再発防止の実例</div><div class="blogcard-snippet internal-blogcard-snippet">Oracle LIKE検索で全角アンダースコア「＿」がワイルドカード化した障害事例。ORA-01424とLIKECの検証、パッチと運用回避の対策比較、保守サポートと根拠をそろえた判断を解説。19cでは全角は通常文字、半角%・_を文字として探す場合はESCAPEを使用。</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 loading="lazy" decoding="async" 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" /></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.10.21</div></div></div></div></a>
<p>この検索は一次選別の流れには乗せず、中間一致・後方一致に対応する索引を個別に設計し、定義書と分析資料に設計理由を残して業務側へ引き継ぎました。現在の案件で同じ要件が出た場合は、Oracle Textなどの適用可否も含め、検索要件、運用負担、ライセンス条件を合わせて評価します。</p>
<h3><span id="toc21">設計に使った資料の「時点」を残して引き継ぐ</span></h3>
<p>先行設計で気をつけたのは、使った情報が必ずしも最新ではないことです。SQLマップ、エンティティ定義書、想定レコード件数は、それぞれ異なる時点の資料でした。列のカーディナリティも、一部は想定を置いて判断しています。</p>
<p>業務グループへの引き継ぎでは、設計に使った各資料の時点と前提条件を明記し、最新資料との差異やカーディナリティの見込み違いがあれば再評価するよう依頼しました。基盤側で設計を先行させることと、業務側の検証を省略することは別の話です。</p>
<p>入力となる件数やSQLが変われば、同じ判断表でも結論は変わります。使用した資料の版と判断日を残すことは、インデックス名を決めることと同じくらい重要です。</p>
<h2><span id="toc22">6. 業務グループへ展開する――説明会・修正・引き継ぎ</span></h2>
<h3><span id="toc23">説明会で手順をそろえる</span></h3>
<p>一部の業務領域を基盤側で先行設計できても、プロジェクト全体のSQLを基盤チームが把握し続けるのは現実的ではありません。SQLの機能要件や業務データの分布を一番よく知っているのは、各業務グループです。</p>
<p>そこで、業務GLとインデックス設計担当者を集めて説明会を開き、設計指針、実施要領、付与検討表、定義書の作り方を一通り説明しました。インデックスの一般的な仕組みではなく、SQLマップのどこを見て、どの条件で候補を絞り、検討表や定義書に何を記録するのか。基盤側の先行設計を実例として見せ、業務グループでも同じ手順を踏めるようにしました。</p>
<h3><span id="toc24">たたき台を出すと、指摘が出てくる</span></h3>
<p>説明会では、作成した指針や検討結果について指摘が出ました。自分たちではなかなか手を付けないのに、たたき台には意見が出る。正直に言えば、カチンときたのも事実です。</p>
<p>ただ、指摘を受けてあるSQLの判定を「必要」から「不要」に改め、実施要領にも作業手順の説明を追記しています。白紙の段階では出てこなかった業務側の知見が、たたき台を出したことで初めて表に出てきたわけです。最終的に同じ基準で合意できたので、結果としては良かったと思っています。</p>
<p>指摘を反映した版を共通の設計資料として配布し、業務側の検討へ引き継ぎました。</p>
<h3><span id="toc25">誰が何を更新するかまで決める</span></h3>
<p>引き継ぎでは、役割も整理しました。基盤・DBAは指針と技術上の制約、共通レビュー、実行計画の技術支援を持つ。業務・アプリケーション担当は、SQLとデータ件数の更新、候補抽出、定義書の作成を持つ。性能試験担当は、試験条件と実績値、SQLトレースや実行計画の取得を持つ。GLは役割分担と改訂ルールの周知、判断保留の解消を持つ。</p>
<p>肩書きはプロジェクトによって変わります。決めておくべきなのは、設計の根拠となった情報が更新されたとき、誰が再判定するかです。</p>
<h2><span id="toc26">7. Oracle 19cでは、設計したインデックスをどう検証するか</span></h2>
<h3><span id="toc27">机上見積と実機の結果を分けて見る</span></h3>
<p>インデックスの最終的な有効性は、実行計画と実行統計で確認します。見る対象は検索時間だけではありません。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr>
<th>検証観点</th>
<th>具体的に見るもの</th>
</tr>
</thead>
<tbody>
<tr>
<td>選択性</td>
<td>想定行数と実際の取得行数、値の偏り</td>
</tr>
<tr>
<td>アクセスパス</td>
<td>INDEX RANGE SCAN、TABLE ACCESS FULLなど</td>
</tr>
<tr>
<td>実行統計</td>
<td>経過時間、Buffers、Reads、実行回数</td>
</tr>
<tr>
<td>推定精度</td>
<td>E-RowsとA-Rowsの乖離</td>
</tr>
<tr>
<td>索引の構造</td>
<td>DISTINCT_KEYS、CLUSTERING_FACTORなど</td>
</tr>
<tr>
<td>更新性能</td>
<td>INSERT／UPDATE／DELETEやバッチ処理への影響</td>
</tr>
<tr>
<td>再現性</td>
<td>統計情報、テストデータ、SQL、バインド条件の一致</td>
</tr>
</tbody>
</table>
</div>
<p>データ量、統計情報、バインド変数、SQLの条件をそろえ、索引がある場合とない場合を比較します。差が出ても索引だけが原因とは限らないので、実行計画の変化を必ず確認します。</p>
<h3><span id="toc28">DBMS_XPLANで実行計画と実績値を見る</span></h3>
<p>Oracle 19cでは、DBMS_XPLAN.DISPLAY_CURSORで実際に実行したSQLの計画を確認できます。行数やBuffersの実績値を取るには、対象SQLにGATHER_PLAN_STATISTICSヒントを付けるのが影響範囲が狭く扱いやすい方法です。セッション全体で <code>statistics_level = ALL</code> にする方法もありますが、そのセッションのすべてのSQLに計測負荷がかかります。</p>
<pre><code class="language-sql">-- 説明用の手順例。実案件の実測結果ではありません。検証環境で実行してください。
SELECT /*+ GATHER_PLAN_STATISTICS */
       ORDER_ID, ORDER_DATE, STATUS
FROM   ORDER_HEADER
WHERE  CUSTOMER_ID = :customer_id
AND    ORDER_DATE &gt;= :date_from
AND    ORDER_DATE &lt;  :date_to;

SELECT *
FROM   TABLE(DBMS_XPLAN.DISPLAY_CURSOR(
         sql_id          =&gt; :target_sql_id,
         cursor_child_no =&gt; NULL,
         format          =&gt; 'ALLSTATS LAST'));
</code></pre>
<p>DBMS_XPLANの参照には、動的パフォーマンスビューへのアクセス権限が必要です。検索1回だけで判断せず、代表的なバインド値、データ量、実行頻度で確認します。</p>
<h3><span id="toc29">統計情報とカーディナリティを確認する</span></h3>
<p>インデックスを作っても、オプティマイザが使うとは限りません。特定の値にアクセスが集中する列では、平均的な選択性と実態が一致しないことがあります。</p>
<pre><code class="language-sql">SELECT table_name, num_rows, blocks, last_analyzed
FROM   user_tables
WHERE  table_name = 'ORDER_HEADER';

SELECT index_name, blevel, leaf_blocks,
       distinct_keys, clustering_factor, last_analyzed
FROM   user_indexes
WHERE  table_name = 'ORDER_HEADER';
</code></pre>
<p>統計情報が古い場合は、検証条件を整えたうえでDBMS_STATSによる収集を検討します。収集前後で実行計画が変わる可能性があるので、性能検証の途中で無計画に統計情報を更新しないようにします。</p>
<h3><span id="toc30">Invisible IndexとAutomatic Indexingの使いどころ</span></h3>
<p>Oracle 19cのInvisible Indexは、索引をオプティマイザから見えなくする機能です。検証用セッションで <code>ALTER SESSION SET OPTIMIZER_USE_INVISIBLE_INDEXES = TRUE;</code> とすれば、他のセッションに影響を与えずに、その索引がある場合の実行計画を確認できます。ただし、Invisible IndexもDMLのたびに維持されます。参照側の比較には使えますが、更新負荷の検証は別に必要です。</p>
<p>自動インデックス作成機能（Automatic Indexing）は、Oracle 19cの通常のEnterprise Edition（EE）だけでは利用できません。OracleのLicensing Informationでは、Exadata上のEnterprise Edition on Engineered Systems（EE-ES）や対象のExadata Database Serviceで利用可能とされています。Autonomous Databaseでも提供されています。導入を検討する際は、製品・サービスと契約上の利用条件を確認します。</p>
<p>特定の機能を使うことがゴールではありません。設計時の仮説を計測で更新し、その理由を記録することがゴールです。</p>
<h2><span id="toc31">8. まとめ：インデックス設計は「試験前に仮説を作る仕事」</span></h2>
<p>インデックス設計は、すべてのSQLを完成させ、十分な試験データを揃えてから始める作業ではありません。大規模開発では、業務チームの設計進捗や資料の不足に関係なく、単体性能試験の準備期限が来ます。</p>
<p>今回の事例では、基盤側でSQLマップ・エンティティ定義・想定件数から一次候補を抽出し、設計指針、実施要領、付与検討表、インデックス定義書を用意しました。先行設計の結果は、資料の時点と前提を明記して業務チームへ引き継ぎ、説明会での指摘を受けて判定と手順を直しています。最終的な有効性は、Oracle 19cの実行計画と実績値で確かめる前提です。</p>
<h3><span id="toc32">所感</span></h3>
<p>振り返ると、一番の収穫は、試験に入る時点で「なぜこの索引があり、なぜこの表にはないのか」を説明できる状態を作れたことです。単体性能試験で遅いSQLが出ても、付与検討表を見れば、当時の前提と判断理由に戻れます。前提が変わっていれば判断を更新し、変わっていなければ実行計画を見て原因を絞り込む。手戻りをゼロにはできなくても、手戻りの範囲は小さくできます。</p>
<p>指針も最初から完成していたわけではなく、説明会の指摘を受けて判定と手順を直しました。完璧な規約を目指して止まるより、たたき台を出して業務側の知見を取り込み、同じ版を全員で使う。大規模開発のインデックス設計は、この進め方が現実的だと考えています。</p>
<hr />
<p><strong>参考資料（Oracle公式）</strong></p>
<ul>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/index.html" target="_blank">Oracle Database 19c SQL Tuning Guide</a></li>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/query-optimizer-concepts.html" target="_blank">Query Optimizer Concepts：選択性・カーディナリティ</a></li>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/optimizer-statistics-concepts.html" target="_blank">Optimizer Statistics Concepts：Clustering Factorなど</a></li>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_XPLAN.html" target="_blank">DBMS_XPLAN：DISPLAY_CURSOR</a></li>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-indexes.html" target="_blank">Managing Indexes：Invisible Indexなど</a></li>
<li><a rel="noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html" target="_blank">Database Licensing Information：Automatic Indexingの利用条件</a></li>
</ul>
<p><strong>関連記事</strong></p>

<a href="https://sys-univ.com/dev/db-physical-design/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f.png 1672w" sizes="(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 19cで解説。大手SIer20年超の基盤SEが、実案件の物理設計書・課題管理表をもとに、暫定見積、PROCESSES算定、Data Guard設計の実例を紹介します。</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 loading="lazy" decoding="async" 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" /></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.10.21</div></div></div></div></a>

<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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>
<div style="border: 2px solid #1D9E75; border-radius: 8px; padding: 10px 14px; margin: 16px 0; background: #f3fbf8;">
<p style="margin: 0 0 4px; font-weight: bold; color: #1d9e75;">この記事の裏側をnoteに書きました</p>
<p style="margin: 0 0 6px;">「性能は基盤でしょ」という空気の中で、押し付け合いになっていたインデックス設計をなぜ引き受けたのか。その経緯と立ち回りは、noteの体験記にまとめています。</p>
<p style="margin: 0;"><a rel="noopener" style="color: #1d9e75; font-weight: bold;" href="https://note.com/k_s7906/n/nb36fa31acbfc" target="_blank">「性能は基盤でしょ」――誰もやらないインデックス設計を引き受け、主導権を握った話 →</a></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/oracle-index-design/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-376x212.png 376w" sizes="(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 loading="lazy" decoding="async" 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" /></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.25</div></div></div></div></a>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">データベースエンジニアとは</a></li><li><a href="#toc2" tabindex="0">アプリケーションの特性から物理構成を設計する</a></li><li><a href="#toc3" tabindex="0">DBAが押さえるべきシステム移行の三要素</a></li><li><a href="#toc4" tabindex="0">マネージドサービスでも設計は残る</a></li><li><a href="#toc5" tabindex="0">データベースは構築後も変化し続ける</a></li><li><a href="#toc6" tabindex="0">性能問題はデータベースだけでは解決できない</a></li><li><a href="#toc7" tabindex="0">権限とロールはアプリケーションと切り離せない</a></li><li><a href="#toc8" tabindex="0">監査ログは出せばよいわけではない</a></li><li><a href="#toc9" tabindex="0">冗長化しても業務を継続できるとは限らない</a></li><li><a href="#toc10" tabindex="0">バックアップがあっても復旧できるとは限らない</a></li><li><a href="#toc11" tabindex="0">RDSの復元は元のインスタンスを巻き戻す処理ではない</a></li><li><a href="#toc12" tabindex="0">データベース製品によって、アーキテクチャと設計上の判断は変わる</a></li><li><a href="#toc13" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<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>
<p>こうしたデータベースの物理設計では、設定値を決めること以上に、<strong>何を検討し、どのような根拠で判断するか</strong>が重要です。</p>
<p>具体的な設計項目や進め方については、実際のプロジェクトの容量見積や課題管理の事例をもとに次の記事で詳しく解説しています。</p>

<a href="https://sys-univ.com/dev/db-physical-design/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/10/f8d6d335027302b6a0a0636e1df7f27f.png 1672w" sizes="(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 19cで解説。大手SIer20年超の基盤SEが、実案件の物理設計書・課題管理表をもとに、暫定見積、PROCESSES算定、Data Guard設計の実例を紹介します。</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 loading="lazy" decoding="async" 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" /></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.10.21</div></div></div></div></a>
<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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-376x212.png 376w" sizes="(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 loading="lazy" decoding="async" 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" /></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.30</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>
<p>このLIKE検索の問題については、実際の障害対応をもとに、原因調査から対策の比較、保守サポートとの技術的な確認、SQL規約による再発防止までを次の記事で詳しく解説しています。</p>

<a href="https://sys-univ.com/dev/oracle-like-fullwidth-underscore/" title="OracleのLIKE検索でほぼ全件ヒット？全角アンダースコアの不具合とSQL改修・再発防止の実例" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/10/958c099a51bb2729a6588f08bd14d17c.png 1672w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">OracleのLIKE検索でほぼ全件ヒット？全角アンダースコアの不具合とSQL改修・再発防止の実例</div><div class="blogcard-snippet internal-blogcard-snippet">Oracle LIKE検索で全角アンダースコア「＿」がワイルドカード化した障害事例。ORA-01424とLIKECの検証、パッチと運用回避の対策比較、保守サポートと根拠をそろえた判断を解説。19cでは全角は通常文字、半角%・_を文字として探す場合はESCAPEを使用。</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 loading="lazy" decoding="async" 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" /></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.10.21</div></div></div></div></a>
<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 loading="lazy" 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">システム開発では、データベースエンジニアだけで仕事が完結することはありません。 アプリケーション、ネットワーク、システム基盤など、それぞれの担当が連携してシステム全体を作ります。</p>
<p id="2297d0fc-61f1-410b-9d3e-ae6f6f580cea"><strong>アプリケーションエンジニアの仕事</strong><br />
業務要件を仕様へ落とし込み、設計・実装・テスト・障害対応まで担当するアプリケーションエンジニアの仕事を解説しています。</p>

<a href="https://sys-univ.com/dev/application-engineer/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf.jpg 1672w" sizes="(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">アプリケーションエンジニアの仕事内容を、SIerでの実務経験をもとに解説。曖昧な要望を仕様へ変換する設計、画面・帳票・バッチ・API、テスト、性能問題、障害対応まで、担当範囲と責任を具体例で整理します。</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 loading="lazy" decoding="async" 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" /></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.05</div></div></div></div></a>
<p id="a49450ff-9ad9-426c-8aa1-e3a095ad9b6d"><strong>ネットワークエンジニアの仕事<br />
</strong>通信経路、ルーティング、通信制御、冗長化、外部ネットワーク接続、障害時の切り分けなど、ネットワークエンジニアの仕事を解説しています。</p>

<a href="https://sys-univ.com/dev/dev-network-engineer/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/c77c568738dbd613fcd1672710f63809-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/c77c568738dbd613fcd1672710f63809-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/c77c568738dbd613fcd1672710f63809-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/c77c568738dbd613fcd1672710f63809-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/c77c568738dbd613fcd1672710f63809-376x212.png 376w" sizes="(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">ネットワークエンジニアの仕事内容を、通信経路、VLAN、ルーティング、ファイアウォール、冗長化、外部ネットワーク接続、障害切り分け、AWSまで実務経験をもとに解説します。</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 loading="lazy" decoding="async" 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" /></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.11</div></div></div></div></a>
<div id="gtx-trans" style="position: absolute; left: -13px; top: 7235.48px;">
<div class="gtx-trans-icon"> </div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/database-engineer-dba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>データベースの物理設計とは？設計項目・進め方・容量見積の実務をOracle 19cで解説</title>
		<link>https://sys-univ.com/dev/db-physical-design/</link>
					<comments>https://sys-univ.com/dev/db-physical-design/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 05:08:01 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3495</guid>

					<description><![CDATA[データベースの物理設計と聞いて、具体的に何を検討し、どのような根拠で設計値を決めればよいのか、迷うシステムエンジニアは少なくないのではないでしょうか。 実際のプロジェクトでは、Oracleのデフォルト設定をほぼそのまま使 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">データベースの物理設計と聞いて、具体的に何を検討し、どのような根拠で設計値を決めればよいのか、迷うシステムエンジニアは少なくないのではないでしょうか。</p>
<p>実際のプロジェクトでは、Oracleのデフォルト設定をほぼそのまま使用し、表領域の初期容量を決めて自動拡張を有効にするだけで、データベースを構築しているケースも見受けられます。しかし、データが格納でき、システムが正常に動作することと、性能・可用性・運用性まで考慮した物理設計ができていることは別です。</p>
<p>物理設計で重要なのは、設定値そのものではなく、業務特性やデータ量、アクセス傾向、将来の増加量などを把握し、<strong>何を検討し、どのような根拠で判断し、どう検証するか</strong>というプロセスです。</p>
<p>本記事では、実際のプロジェクトで使用した物理設計書、課題管理表、容量見積Excelをもとに、データベースの物理設計で押さえるべき検討項目と、設計を進めるための具体的なアプローチを解説します。技術解説にはOracle Database 19cを使用し、容量見積や接続数の算定、性能・運用面での設計判断を実例とともに紹介します。</p>
<p>なお、実務事例は過去のプロジェクト資料を匿名化・再構成したものであり、掲載する設定値は案件固有のものです。個々の数値を正解として示すのではなく、<strong>自分のプロジェクトで適切な設計値にたどり着くための考え方</strong>を伝えることを目的としています。</p>



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">データベースの物理設計とは？</a><ol><li><a href="#toc2" tabindex="0">概念設計・論理設計・物理設計の違い</a></li><li><a href="#toc3" tabindex="0">物理設計は誰が担当するのか</a></li></ol></li><li><a href="#toc4" tabindex="0">データベース物理設計でやること・設計項目一覧</a><ol><li><a href="#toc5" tabindex="0">物理設計の主要設計項目と成果物</a></li><li><a href="#toc6" tabindex="0">物理設計の進め方と依存関係</a></li></ol></li><li><a href="#toc7" tabindex="0">Oracle 19cの物理設計で具体的に決めること</a><ol><li><a href="#toc8" tabindex="0">最初に決めるソフトウェア構成とライセンス</a></li><li><a href="#toc9" tabindex="0">CDB/PDB構成と設計単位</a></li><li><a href="#toc10" tabindex="0">データベース作成時に決める重要項目</a></li><li><a href="#toc11" tabindex="0">表領域とストレージの設計</a></li><li><a href="#toc12" tabindex="0">REDOログ・アーカイブログ・可用性の設計</a></li><li><a href="#toc13" tabindex="0">メモリ・初期化パラメータの設計</a></li><li><a href="#toc14" tabindex="0">その他の物理設計項目</a></li></ol></li><li><a href="#toc15" tabindex="0">テーブルサイズ・表領域容量の見積方法と実務ノウハウ</a><ol><li><a href="#toc16" tabindex="0">容量見積に必要な情報と基本的な計算方法</a></li><li><a href="#toc17" tabindex="0">必要な情報が揃わないときの暫定見積</a></li><li><a href="#toc18" tabindex="0">索引・LOBの容量見積</a></li><li><a href="#toc19" tabindex="0">表領域・ストレージ容量への積み上げ</a></li><li><a href="#toc20" tabindex="0">概算→補正→実測で容量見積の精度を上げる</a></li></ol></li><li><a href="#toc21" tabindex="0">物理設計で実際に発生した課題と解決方法</a><ol><li><a href="#toc22" tabindex="0">端末数・同時アクセス数からPROCESSESを決めてはいけない</a></li><li><a href="#toc23" tabindex="0">Data Guardと夜間バッチのREDOをどう設計するか</a></li><li><a href="#toc24" tabindex="0">設計の前提条件が変わったときの対応</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ｜データベースの物理設計で重要なこと</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">データベースの物理設計とは？</span></h2>


<p class="wp-block-paragraph">データベースの物理設計とは、論理設計で定義されたデータを、実際のデータベース環境にどのように格納し、安定して稼働させるかを具体化する工程です。</p>


<p class="wp-block-paragraph">表領域やデータファイル、メモリ、REDOログ、バックアップなどを設計し、性能・容量・可用性・運用性に関する要件を実現します。</p>


<h3 class="wp-block-heading"><span id="toc2">概念設計・論理設計・物理設計の違い</span></h3>


<p class="wp-block-paragraph">データベース設計は、大きく概念設計・論理設計・物理設計の3段階に分けられます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>設計工程</th>
<th>主な内容</th>
<th>成果物の例</th>
</tr>
</thead>
<tbody>
<tr>
<td>概念設計</td>
<td>業務に必要な情報とその関連を整理する</td>
<td>概念ER図</td>
</tr>
<tr>
<td>論理設計</td>
<td>テーブル、カラム、主キー、外部キーなどを定義する</td>
<td>論理ER図、テーブル定義書</td>
</tr>
<tr>
<td>物理設計</td>
<td>DB製品の仕様や非機能要件に合わせて格納方式と稼働環境を具体化する</td>
<td>物理設計書、パラメータ一覧、容量見積書</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">例えば、注文データを5年間保存するシステムを考えます。</p>


<p class="wp-block-paragraph">論理設計では注文テーブルの項目やキー、テーブル間の関連を定義します。</p>


<p class="wp-block-paragraph">一方、物理設計では、初期データ120万件、年間増加30万件という条件から5年後の件数を270万件と見積もり、必要な表領域容量、データファイルの拡張方法、バックアップ方針などを決めます。</p>


<p class="wp-block-paragraph">つまり、論理設計が「どのようなデータを管理するか」を決める工程であるのに対し、物理設計は「そのデータをどのような構成で稼働・管理するか」を具体化する工程です。</p>


<h3 class="wp-block-heading"><span id="toc3">物理設計は誰が担当するのか</span></h3>


<p class="wp-block-paragraph">物理設計は、インフラエンジニア、DBA、アプリケーション担当者が連携して進めます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>担当</th>
<th>主な設計範囲</th>
</tr>
</thead>
<tbody>
<tr>
<td>インフラエンジニア</td>
<td>サーバ、OS、ストレージ、DB構成、可用性、バックアップ基盤</td>
</tr>
<tr>
<td>DBA</td>
<td>表領域、初期化パラメータ、REDOログ、メモリ、権限、DB運用</td>
</tr>
<tr>
<td>アプリケーション担当</td>
<td>テーブル構造、索引、パーティショニング、SQLアクセス特性</td>
</tr>
<tr>
<td>パッケージ・ミドルウェアベンダー</td>
<td>製品固有のDB要件、専用スキーマ、必要テーブル、接続方式</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">担当領域の違いや連携については、以下の記事で詳しく解説しています。</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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7fd644122c90897b53c2b78aa79a1438-376x212.png 376w" sizes="(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 loading="lazy" decoding="async" 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" /></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.25</div></div></div></div></a>


<p class="wp-block-paragraph">実際のプロジェクトでは、この担当範囲の境界で情報が不足することがあります。</p>


<p class="wp-block-paragraph">私が携わった案件でも、ミドルウェア製品が使用するセッション管理用テーブルについて、製品ベンダーに仕様を確認してからスキーマや表領域を決定しました。また、帳票データの型がBLOBなのかCLOBなのかについて、関係者間で認識が異なっていたこともありました。</p>


<p class="wp-block-paragraph">物理設計では担当者間の役割分担を明確にするとともに、必要な情報の提供元も確認する必要があります。</p>


<p class="wp-block-paragraph">本記事では、インフラエンジニア・DBAの立場から行う物理設計に焦点を当て、Oracle Database 19cを例に解説します。</p>


<h2 class="wp-block-heading"><span id="toc4">データベース物理設計でやること・設計項目一覧</span></h2>


<p class="wp-block-paragraph">物理設計では、ソフトウェア構成、表領域、初期化パラメータ、可用性、通信、運用、セキュリティなどを決定します。</p>


<p class="wp-block-paragraph">実務で使用した物理設計書の章立ても参考にしながら、Oracle 19cで検討する設計項目と成果物、実務上の進め方を整理します。</p>


<h3 class="wp-block-heading"><span id="toc5">物理設計の主要設計項目と成果物</span></h3>


<p class="wp-block-paragraph"><strong>【実務事例：物理設計書の章立てから必要項目を把握する】</strong></p>


<p class="wp-block-paragraph">実際の物理設計書は全10章で構成されていました。次の表は、その章立てを手がかりに、Oracle 19cの物理設計で確認すべき項目を整理したものです。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>実際の物理設計書の章立て</th>
<th>Oracle 19cでの主な検討項目</th>
<th>本記事での扱い</th>
</tr>
</thead>
<tbody>
<tr>
<td>第1章 ソフトウェア構成</td>
<td>エディション、ライセンス、RU・パッチ方針</td>
<td>H2-3</td>
</tr>
<tr>
<td>第2章 インスタンス設計</td>
<td>CDB/PDB、インスタンス、DBブロックサイズ、キャラクタセット</td>
<td>H2-3</td>
</tr>
<tr>
<td>第3章 表領域設計</td>
<td>SYSTEM等の表領域、業務表領域、データファイル</td>
<td>H2-3・H2-4</td>
</tr>
<tr>
<td>第4章 REDOログ設計</td>
<td>オンラインREDO、スタンバイREDO、アーカイブログ</td>
<td>H2-3・H2-5</td>
</tr>
<tr>
<td>第5章 制御ファイル設計</td>
<td>制御ファイルの多重化・配置・復旧</td>
<td>H2-3で要点</td>
</tr>
<tr>
<td>第6章 通信設計</td>
<td>リスナー、サービス、接続方式</td>
<td>H2-3で要点</td>
</tr>
<tr>
<td>第7章 初期化パラメータ設計</td>
<td>メモリ、PROCESSES、SESSIONS、UNDO</td>
<td>H2-3・H2-5</td>
</tr>
<tr>
<td>第8章 ユーザ設計</td>
<td>スキーマ、ロール、プロファイル、最小権限</td>
<td>H2-3で要点</td>
</tr>
<tr>
<td>第9章 運用設計</td>
<td>RMAN、ログ管理、統計情報、性能監視、PDB間のリソース管理</td>
<td>H2-3で要点</td>
</tr>
<tr>
<td>第10章 セキュリティ設計</td>
<td>Unified Auditing、暗号化、アクセス制御</td>
<td>H2-3で要点</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">OS・ストレージやHugePages、ASMなどは、設計書の章立てとは別に、基盤設計側との責任分界を決めて確認します。表は設計項目の把握に使い、実際の成果物の構成はプロジェクトごとに合意します。</p>


<p class="wp-block-paragraph">最初にエディション・ライセンスとCDB/PDBの設計単位を確定し、後続の表領域やメモリ設計の制約条件を整理します。</p>


<p class="wp-block-paragraph"><strong>物理設計の主な成果物</strong></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>成果物</th>
<th>主な内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>データベース詳細設計書（物理設計書）</td>
<td>DB構成、表領域、REDO、通信、運用等の設計方針</td>
</tr>
<tr>
<td>環境定義書</td>
<td>環境ごとの設定値、サーバ・ソフトウェア構成等</td>
</tr>
<tr>
<td>初期化パラメータ一覧</td>
<td>パラメータ値、設定理由、適用範囲</td>
</tr>
<tr>
<td>容量見積書</td>
<td>テーブル、索引、LOB、表領域等の容量</td>
</tr>
<tr>
<td>設計課題管理表</td>
<td>未確定事項、対応方針、担当、期限</td>
</tr>
<tr>
<td>設計進捗管理表</td>
<td>設計・レビュー・完了の状況</td>
</tr>
</tbody>
</table>
</figure>


<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">その後、成果物を「データベース詳細設計書」と「環境定義書」の2つとする方針で合意しています。</p>


<p class="wp-block-paragraph">さらに設計途中で、統一テンプレートが提供され次第、差し替える方針が決まりました。</p>


<p class="wp-block-paragraph">この経験から、物理設計では内容の検討に入る前に、成果物の名称、記載範囲、使用するテンプレート、レビュー方法を関係者と合意することが重要だと考えています。</p>


<h3 class="wp-block-heading"><span id="toc6">物理設計の進め方と依存関係</span></h3>


<p class="wp-block-paragraph">物理設計の実務では、最初に必要な情報がすべて揃うとは限りません。</p>


<p class="wp-block-paragraph">実案件の課題管理表にも、システム特性、テーブル定義、データ件数、同時接続数、LOB容量、バッチ処理量などの情報を関係者へ依頼した記録が多数残っています。</p>


<p class="wp-block-paragraph"><strong>設計項目と必要情報の依存関係</strong></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>必要な入力情報</th>
<th>影響する設計項目</th>
<th>本記事の解説</th>
</tr>
</thead>
<tbody>
<tr>
<td>システム特性・アクセス傾向</td>
<td>DBブロックサイズ、性能設計</td>
<td>H2-3</td>
</tr>
<tr>
<td>テーブル定義・件数・増加率</td>
<td>表領域、データファイル容量</td>
<td>H2-4</td>
</tr>
<tr>
<td>LOBの型・件数・平均サイズ</td>
<td>LOB格納方式、容量見積</td>
<td>H2-4</td>
</tr>
<tr>
<td>同時接続数・接続プール</td>
<td>PROCESSES、SESSIONS</td>
<td>H2-3・H2-5</td>
</tr>
<tr>
<td>トランザクション量・バッチ処理量</td>
<td>UNDO、REDO、アーカイブ</td>
<td>H2-3・H2-5</td>
</tr>
<tr>
<td>運用フロー・ログ保持期間</td>
<td>バックアップ、ログ管理</td>
<td>H2-3で要点</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph"><strong>【実務事例：設計FIXの延期】</strong></p>


<p class="wp-block-paragraph">実案件の課題管理表では、1月中旬から課題が起票されていました。</p>


<p class="wp-block-paragraph">物理設計書のFIXは当初2月末を予定していましたが、容量見積に必要なデータを2月中に提供できないことが判明し、3月末へ延期されています。</p>


<p class="wp-block-paragraph">一方、データが揃うまで設計を止めたわけではありません。未確定の情報には暫定値を置いて設計を進め、資料の受領後に見直しました。具体的な方法は後述の容量見積の章で解説します。</p>


<p class="wp-block-paragraph"><strong>物理設計を進める6つのステップ</strong></p>


<p class="wp-block-paragraph"><strong>⓪ 成果物とフォーマットを合意する</strong></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"><strong>② 基本構成を決める</strong></p>


<p class="wp-block-paragraph">Oracleのエディションとライセンス、CDB/PDB構成、可用性構成、OS・ストレージ方式などを決定します。</p>


<p class="wp-block-paragraph"><strong>③ 未確定事項を管理しながら詳細設計を進める</strong></p>


<p class="wp-block-paragraph">表領域、容量、REDOログ、メモリ、初期化パラメータなどを設計し、未確定事項には暫定値と根拠を記録します。</p>


<p class="wp-block-paragraph"><strong>④ 設計レビューを実施し、課題を解決する</strong></p>


<p class="wp-block-paragraph">関係者から提供された情報やレビュー結果を設計書に反映し、未解決課題の影響範囲と確定条件を明らかにします。</p>


<p class="wp-block-paragraph"><strong>⑤ 構築・試験で設計を検証する</strong></p>


<p class="wp-block-paragraph">構築時に設定値を確認し、移行リハーサルや性能試験で容量、接続数、REDO生成量などを検証します。</p>


<p class="wp-block-paragraph">次章では、これらの設計項目について、Oracle Database 19cを例に具体的な判断とその根拠を解説します。</p>


<h2 class="wp-block-heading"><span id="toc7">Oracle 19cの物理設計で具体的に決めること</span></h2>


<p class="wp-block-paragraph">Oracle Database 19cを例に、物理設計で決定する主要な項目と、その判断基準を解説します。単なる設定項目の紹介ではなく、実際の設計判断を具体例とともに示します。</p>


<h3 class="wp-block-heading"><span id="toc8">最初に決めるソフトウェア構成とライセンス</span></h3>


<p class="wp-block-paragraph">物理設計では、まずOracleのエディションと利用できる機能を確認します。</p>


<p class="wp-block-paragraph">Oracle 19cのStandard Edition 2（SE2）ではRACとData Guardを利用できません。また、Enterprise Edition（EE）でも追加ライセンスが必要な機能があります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>機能</th>
<th>Oracle 19cでの主な利用条件</th>
</tr>
</thead>
<tbody>
<tr>
<td>RAC</td>
<td>EE＋RACオプション</td>
</tr>
<tr>
<td>Data Guard</td>
<td>EEで利用可能</td>
</tr>
<tr>
<td>Active Data Guard</td>
<td>EE＋Active Data Guardオプション</td>
</tr>
<tr>
<td>Partitioning</td>
<td>EE＋Partitioningオプション</td>
</tr>
<tr>
<td>TDE</td>
<td>EE＋Advanced Securityオプション</td>
</tr>
<tr>
<td>AWR・ASH</td>
<td>Diagnostics Packの利用権が必要</td>
</tr>
<tr>
<td>STATSPACK</td>
<td>Diagnostics Packなしで利用可能</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">※実際の利用条件は、契約、導入形態、クラウドサービスなどによって異なります。</p>


<p class="wp-block-paragraph"><strong>【設計判断例：Data Guardによる待機系の参照利用】</strong></p>


<p class="wp-block-paragraph">障害対策としてData Guardを採用し、待機系を帳票検索にも利用したい場合を考えます。</p>


<p class="wp-block-paragraph">フィジカル・スタンバイを読み取り専用で開くだけなら基本Data Guardでも可能ですが、REDOの適用を継続しながら参照処理を実行するには、Active Data Guardオプションが必要です。</p>


<p class="wp-block-paragraph">また、Diagnostics Packを契約しない場合は、<code>CONTROL_MANAGEMENT_PACK_ACCESS</code>を<code>NONE</code>に設定して、有償の診断・チューニング機能を誤使用しないようにします。性能監視にはSTATSPACKなどを採用します。</p>


<p class="wp-block-paragraph">このように、<strong>技術的に実現できる構成と、契約上利用できる構成は区別</strong>しなければなりません。</p>


<p class="wp-block-paragraph">Oracle 19cでは、採用するRelease Update（RU）やパッチ適用方針も物理設計時に決定します。</p>


<h3 class="wp-block-heading"><span id="toc9">CDB/PDB構成と設計単位</span></h3>


<p class="wp-block-paragraph">Oracle 19cでは、CDB（Container Database）とPDB（Pluggable Database）によるマルチテナント構成を基本として設計します。</p>


<p class="wp-block-paragraph">19cでは非CDB構成も利用できますが非推奨であり、21c以降ではサポートされません。将来のアップグレードを考慮すれば、CDB/PDB構成が基本的な選択となります。</p>


<p class="wp-block-paragraph"><strong>【設計判断例：PDB数とライセンス】</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは、SE2・EEともにMultitenantオプションを追加契約せず、1つのCDBにユーザー作成PDBを最大3個まで配置できます。</p>


<p class="wp-block-paragraph">例えば、3つの業務データベースを統合する場合、ライセンス上は1つのCDBに3つのPDBを構成できます。</p>


<p class="wp-block-paragraph">一方、4つ以上を統合する場合には、Multitenantオプションの利用条件などを確認する必要があります。</p>


<p class="wp-block-paragraph">ただし、3個まで配置できるからといって、必ず統合するべきではありません。業務ごとの可用性、負荷特性、リソース競合、運用体制を踏まえて決定します。</p>


<p class="wp-block-paragraph"><strong>OS・インスタンス・CDB・PDBの設計境界</strong></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>設計単位</th>
<th>主な設計項目</th>
</tr>
</thead>
<tbody>
<tr>
<td>OS・Grid Infrastructure</td>
<td>HugePages、カーネルパラメータ、ASM、リスナー</td>
</tr>
<tr>
<td>インスタンス</td>
<td>SGA、PGA、PROCESSES</td>
</tr>
<tr>
<td>CDB全体</td>
<td>標準ブロックサイズ、CDBのキャラクタセット、オンラインREDO、制御ファイル、ARCHIVELOG、Data Guard、Flashback Database</td>
</tr>
<tr>
<td>PDBごと</td>
<td>SYSTEM、SYSAUX、TEMP、業務表領域、ローカルUNDOモードでのUNDO、アプリ用サービス、ローカルユーザ・ロール</td>
</tr>
<tr>
<td>複数階層</td>
<td>初期化パラメータ、監査、バックアップ・リカバリ、リソース管理</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">PDB内で変更できる初期化パラメータは限定されています。次のSQLで変更可能なパラメータを確認できます。</p>


<pre class="wp-block-code"><code>SELECT name, ispdb_modifiable
FROM v$parameter
WHERE ispdb_modifiable = 'TRUE'
ORDER BY name;
</code></pre>


<p class="wp-block-paragraph">RAC構成では、1つのCDBを複数のインスタンスで稼働させます。そのため、SGAなどの資源はインスタンス単位で管理する必要があります。</p>


<h3 class="wp-block-heading"><span id="toc10">データベース作成時に決める重要項目</span></h3>


<p class="wp-block-paragraph">DBブロックサイズとキャラクタセットは、作成後の変更が容易ではないため、慎重に決定します。</p>


<p class="wp-block-paragraph"><strong>【実務事例：8KBと16KBをどう選ぶか】</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは一般的な8KBを基準に検討します。実際に担当した案件では、標準ブロックサイズに16KBを採用しました。判断材料として記録されていたのは次の3点です。</p>


<ul class="wp-block-list">
	<li>DSS系のシステム特性</li>
	<li>行連鎖の発生を抑える</li>
	<li>テーブルフルスキャン時のI/Oコストを低減する</li>
</ul>


<p class="wp-block-paragraph">16KBを採用するかどうかは、これらをそのまま結論にせず、対象システムの行長とI/O・更新特性から判断します。</p>


<p class="wp-block-paragraph"><strong>① フルスキャンのI/O</strong></p>


<p class="wp-block-paragraph">Oracleの<code>DB_FILE_MULTIBLOCK_READ_COUNT</code>は、シーケンシャルスキャンで1回のI/Oに読み込む最大ブロック数を指定します。</p>


<p class="wp-block-paragraph">19cの既定値はプラットフォームに応じて決まり、多くの環境で最大約1MBの効率的な読み込みに対応するよう自動設定されます。</p>


<p class="wp-block-paragraph">そのため、8KBから16KBに変更しても、マルチブロック読み込みの総バイト数が単純に2倍になるわけではありません。</p>


<p class="wp-block-paragraph">フルスキャンが多いという理由だけでは、16KBを採用する十分な根拠にはなりません。</p>


<p class="wp-block-paragraph"><strong>② 行連鎖</strong></p>


<p class="wp-block-paragraph">レコード長が大きい場合には、大きなブロックを採用することで、行連鎖の発生を抑えられる可能性があります。</p>


<p class="wp-block-paragraph">一方、平均行長が十分小さければ、16KBを採用する理由としては弱くなります。</p>


<p class="wp-block-paragraph">移行元のOracleが存在する場合は、<code>DBA_TABLES.AVG_ROW_LEN</code>などを確認し、実データの特性を把握します。</p>


<p class="wp-block-paragraph"><strong>③ 更新処理とブロック競合</strong></p>


<p class="wp-block-paragraph">ブロックサイズを大きくすると、1ブロックに格納できる行数も増えます。</p>


<p class="wp-block-paragraph">更新が集中するOLTP系処理では、アクセスが同じブロックに集中する可能性があるため、ブロック競合やバッファキャッシュ効率への影響も評価する必要があります。</p>


<p class="wp-block-paragraph">したがって、19cでは8KBを基準とし、16KBを採用する場合は代表的なSQLによる性能検証と、実際の行長・アクセス特性を根拠に決定します。</p>


<p class="wp-block-paragraph"><strong>キャラクタセットの選択</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは、CDBのキャラクタセットとしてAL32UTF8を基本に検討します。</p>


<p class="wp-block-paragraph">AL32UTF8のCDBには、条件を満たせば異なるキャラクタセットのPDBを収容できます。ただし、文字コード互換性やLOBアクセスの制約は確認が必要です。</p>


<p class="wp-block-paragraph">CLOBの内部表現と容量への影響については、次章の容量見積で詳しく説明します。</p>


<h3 class="wp-block-heading"><span id="toc11">表領域とストレージの設計</span></h3>


<p class="wp-block-paragraph">Oracle 19cでは、SYSTEM、SYSAUX、TEMPなどの表領域がCDBルートと各PDBに存在します。ローカルUNDOモードではPDBごとにUNDO表領域を管理します。</p>


<p class="wp-block-paragraph">通常のローカル管理表領域では、ASSMによる空き領域管理とAUTOALLOCATEによるエクステント自動割り当てを基本とします。</p>


<p class="wp-block-paragraph">エクステントサイズを明示的に管理する要件があればUNIFORMも選択できますが、既定の方式から変更する理由を設計書に残します。</p>


<p class="wp-block-paragraph"><strong>【実務事例：表領域を大・小に分けた見積】</strong></p>


<p class="wp-block-paragraph">実際の案件では、テーブルサイズや定義レコード長をもとに、表領域を大・小に分けて見積もっていました。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>区分</th>
<th style="text-align: right;">実務事例のExcel見積</th>
</tr>
</thead>
<tbody>
<tr>
<td>大区分</td>
<td style="text-align: right;">約68,646MB</td>
</tr>
<tr>
<td>小区分</td>
<td style="text-align: right;">約24,785MB</td>
</tr>
<tr>
<td>合計</td>
<td style="text-align: right;">約93,431MB</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">この案件では大きなテーブルと小さなテーブルで固定エクステントのサイズを変えていました。ただし、表領域の分類と固定エクステントの採用は別の判断です。</p>


<p class="wp-block-paragraph">Oracle 19cではAUTOALLOCATEを基本とし、固定サイズのUNIFORMを指定する場合は、その必要性を個別に検証します。</p>


<p class="wp-block-paragraph">表領域を分けるかどうかも、単に大きさで決めるのではなく、保存期間、容量監視、バックアップ、リカバリ、移行などの運用要件で判断します。</p>


<p class="wp-block-paragraph"><strong>【設計判断例：240GBの表領域をどう構成するか】</strong></p>


<p class="wp-block-paragraph">実務事例の容量見積では、テーブル格納表領域を240GBとしています（内訳と見積条件は次章で説明します）。これはファイル構成の考え方を示すための入力値です。</p>


<p class="wp-block-paragraph">Oracle 19cの8KBブロック環境で240GBを構成する場合、SMALLFILEとBIGFILEの2つの選択肢があります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>比較項目</th>
<th>SMALLFILE</th>
<th>BIGFILE</th>
</tr>
</thead>
<tbody>
<tr>
<td>ファイル数</td>
<td>複数</td>
<td>1つ</td>
</tr>
<tr>
<td>8KB時の1ファイル上限</td>
<td>約32GB</td>
<td>約32TB</td>
</tr>
<tr>
<td>240GBの構成例</td>
<td>30GB×8ファイル</td>
<td>240GB×1ファイル</td>
</tr>
<tr>
<td>主な考慮点</td>
<td>ファイル数と管理</td>
<td>大容量ファイルのバックアップ・復旧</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">SMALLFILEの場合、240GBなら最低8ファイル必要です。運用方針に応じて10ファイル程度に分ける構成も考えられます。</p>


<p class="wp-block-paragraph">一方、BIGFILEなら1ファイルで構成できます。</p>


<p class="wp-block-paragraph">ただし、BIGFILEでは大きなデータファイルをどのようにバックアップ・復旧するかが重要になります。</p>


<p class="wp-block-paragraph">RMANでは<code>SECTION SIZE</code>を指定したマルチセクション・バックアップを利用でき、1つの大きなデータファイルを複数セクションに分け、並列にバックアップできます。</p>


<p class="wp-block-paragraph">例えば、CDBルートに接続したRMANからPDB1のAPP_DATA表領域をバックアップする場合は、次のように指定します。</p>


<pre class="wp-block-code"><code>BACKUP
  SECTION SIZE 8G
  TABLESPACE PDB1:APP_DATA;
</code></pre>


<p class="wp-block-paragraph">※バックアップの並列度は、RMANのチャネル設定などにも依存します。PDBに直接接続する場合は、そのPDB内の表領域名を指定します。</p>


<p class="wp-block-paragraph">このように、必要容量だけでなく、バックアップ時間、リカバリ方式、ASMやOMFの利用方針を踏まえてファイル構成を決定します。</p>


<h3 class="wp-block-heading"><span id="toc12">REDOログ・アーカイブログ・可用性の設計</span></h3>


<p class="wp-block-paragraph">REDOログの設計では、サイズ、グループ数、多重化、アーカイブ方式を決めます。</p>


<p class="wp-block-paragraph"><strong>【設計判断例：REDOログサイズの決定】</strong></p>


<p class="wp-block-paragraph">例えば、ピーク時のREDO生成量が毎分20MBで、ログスイッチ間隔の目安を30分とした場合、</p>


<p class="wp-block-paragraph">20MB×30分＝600MB</p>


<p class="wp-block-paragraph">となります。</p>


<p class="wp-block-paragraph">この値をREDOログサイズの初期検討値とし、実際の負荷や運用要件に応じて調整します。</p>


<p class="wp-block-paragraph"><strong>REDO生成量はどのように把握するか</strong></p>


<p class="wp-block-paragraph">移行元のOracleが存在する場合は、AWRまたはSTATSPACKの<code>redo size</code>などを確認します。</p>


<p class="wp-block-paragraph">また、<code>V$LOG_HISTORY</code>からログスイッチの頻度を確認できます。ログサイズと組み合わせることで、概算の生成量を推定できますが、ピーク時の厳密なREDO生成量を求めるには、統計情報や実測による確認が必要です。</p>


<p class="wp-block-paragraph">さらに、<code>V$INSTANCE_RECOVERY</code>の<code>OPTIMAL_LOGFILE_SIZE</code>列も参考になります。</p>


<pre class="wp-block-code"><code>SELECT
  optimal_logfile_size,
  target_mttr,
  estimated_mttr
FROM v$instance_recovery;
</code></pre>


<p class="wp-block-paragraph"><code>OPTIMAL_LOGFILE_SIZE</code>は、<code>FAST_START_MTTR_TARGET</code>などの設定に基づくREDOログサイズの目安です。<code>FAST_START_MTTR_TARGET</code>を有効に設定している場合に算出され、設定条件によってはNULLとなるため、その場合はREDO生成量やログスイッチ頻度から判断します。</p>


<p class="wp-block-paragraph"><strong>REDOログのグループ数はどう決めるか</strong></p>


<p class="wp-block-paragraph">REDOログは、ログスイッチによって次のグループへ切り替わります。</p>


<p class="wp-block-paragraph">ロググループを再利用するまでに、必要なチェックポイント処理やアーカイブが完了していなければ、更新処理が待たされる可能性があります。</p>


<p class="wp-block-paragraph">したがって、グループ数は単に最小構成にするのではなく、ピーク時のログスイッチ間隔とアーカイブ・チェックポイント処理の時間を踏まえて決定します。</p>


<p class="wp-block-paragraph">特に大量バッチが存在するシステムでは、ピーク時にロググループが不足しないか検証する必要があります。</p>


<p class="wp-block-paragraph">なお、Oracle 19cのクラッシュリカバリ時間は、主に<code>FAST_START_MTTR_TARGET</code>などによって制御します。REDOログサイズだけで復旧時間が決まるわけではありません。</p>


<p class="wp-block-paragraph">アーカイブの生成間隔を制御する必要があれば、<code>ARCHIVE_LAG_TARGET</code>も検討します。</p>


<p class="wp-block-paragraph"><strong>Data Guardを利用する場合</strong></p>


<p class="wp-block-paragraph">Data GuardではMaximum AvailabilityやMaximum Performanceなどの保護モードを、データ損失の許容範囲と性能・可用性要件に応じて選択します。</p>


<p class="wp-block-paragraph">スタンバイREDOログは、各REDOスレッドに対してオンラインREDOと同じサイズを基本とし、オンラインREDOより1グループ多く用意します。</p>


<p class="wp-block-paragraph">例えば、オンラインREDOが3グループであれば、スタンバイREDOは4グループとします。</p>


<p class="wp-block-paragraph">Data Guardにおける大量バッチのREDO転送・適用性能の課題については、後述の実案件の章で説明します。</p>


<h3 class="wp-block-heading"><span id="toc13">メモリ・初期化パラメータの設計</span></h3>


<p class="wp-block-paragraph">Oracleのメモリ設計では、SGA・PGAに加えて、プロセス数とセッション数を検討します。</p>


<p class="wp-block-paragraph">LinuxでHugePagesを利用する場合は、AMM（<code>MEMORY_TARGET</code>）と併用できないため、ASMMなどを採用します。</p>


<p class="wp-block-paragraph"><strong>【設計判断例：PROCESSESの初期見積】</strong></p>


<p class="wp-block-paragraph">例えば、次の構成を想定します。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>接続・プロセスの要素</th>
<th style="text-align: right;">想定数</th>
</tr>
</thead>
<tbody>
<tr>
<td>APサーバ4台×接続プール最大50</td>
<td style="text-align: right;">200</td>
</tr>
<tr>
<td>バッチ用</td>
<td style="text-align: right;">30</td>
</tr>
<tr>
<td>管理・保守用</td>
<td style="text-align: right;">20</td>
</tr>
<tr>
<td>Oracleバックグラウンドプロセス等</td>
<td style="text-align: right;">50</td>
</tr>
<tr>
<td>合計</td>
<td style="text-align: right;">300</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">この場合、<code>PROCESSES=300</code>を初期検討値とできます。</p>


<p class="wp-block-paragraph">ただし、これは説明用の仮定であり、PDB数、有効機能、並列実行、バックグラウンドプロセスの数によって必要値が変わります。</p>


<p class="wp-block-paragraph">検証環境では<code>V$PROCESS</code>などを利用して実際のプロセス数を確認し、余裕を含めて見直します。</p>


<p class="wp-block-paragraph">また、APサーバのローリング再起動時には、古い接続プールと新しい接続プールが一時的に併存する可能性があります。このような通常運用以外のピークも考慮する必要があります。</p>


<p class="wp-block-paragraph"><strong>SESSIONSはPROCESSESから派生する</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは、<code>SESSIONS</code>の既定値は原則として次の式から算出されます。</p>


<p class="wp-block-paragraph"><code>SESSIONS＝1.5×PROCESSES＋22</code></p>


<p class="wp-block-paragraph">例えば<code>PROCESSES=300</code>なら、計算上の既定値は472です。</p>


<p class="wp-block-paragraph">ただし、<code>PROCESSES</code>と<code>SESSIONS</code>は同一の設定ではありません。PDB単位のセッション制限も含め、アプリケーションの接続方式に合わせて設計します。</p>


<p class="wp-block-paragraph">実際の案件で、端末数・同時アクセス数とDB接続数をどう区別したかは、後述の課題事例で説明します。</p>


<h3 class="wp-block-heading"><span id="toc14">その他の物理設計項目</span></h3>


<p class="wp-block-paragraph"><strong>基盤・運用関連の設計</strong></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<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>Unified Auditing、暗号化、アクセス制御</td>
</tr>
<tr>
<td>バックアップ</td>
<td>RMAN、保持期間、復旧方式</td>
</tr>
<tr>
<td>統計情報</td>
<td>収集方法、実行タイミング</td>
</tr>
<tr>
<td>性能監視</td>
<td>AWR、STATSPACK、監視項目</td>
</tr>
<tr>
<td>リソース管理</td>
<td>PDB間のCPU・セッション等の制御</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">Oracle 19cではUnified Auditingの混合モードが既定の構成です。新規設計では、従来型監査への依存を避け、純粋なUnified Auditingへの移行も検討します。</p>


<p class="wp-block-paragraph"><strong>アプリケーション寄りの物理設計</strong></p>


<p class="wp-block-paragraph">索引、パーティショニング、非正規化なども広義の物理設計に含まれます。</p>


<p class="wp-block-paragraph">これらはDBAとアプリケーション担当者が連携して設計します。</p>


<p class="wp-block-paragraph">また、Amazon RDS for OracleなどのマネージドDBでは、OS、ストレージ、ファイル管理などについて、オンプレミスとは設計できる範囲が異なります。利用するサービスに応じて、設計対象と責任分界点を整理する必要があります。</p>


<h2 class="wp-block-heading"><span id="toc15">テーブルサイズ・表領域容量の見積方法と実務ノウハウ</span></h2>


<p class="wp-block-paragraph">データベースの物理設計で特に難しいのが、容量見積です。物理設計の段階ではテーブル定義やデータ件数が確定していないことも多く、そのような状況でもストレージ容量を決めなければなりません。</p>


<p class="wp-block-paragraph">ここでは、実際の大規模システムで使用した容量見積Excelと課題管理表をもとに、Oracle Database 19cでも活用できる見積の進め方を解説します。</p>


<h3 class="wp-block-heading"><span id="toc16">容量見積に必要な情報と基本的な計算方法</span></h3>


<p class="wp-block-paragraph">テーブル容量の見積では、次の情報を確認します。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>項目</th>
<th>確認内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>テーブル定義</td>
<td>列、データ型、定義長</td>
</tr>
<tr>
<td>平均レコード長</td>
<td>1行に格納される平均データ量</td>
</tr>
<tr>
<td>初期件数</td>
<td>稼働開始時の件数</td>
</tr>
<tr>
<td>年間増加件数</td>
<td>1年間に増加する件数</td>
</tr>
<tr>
<td>保存期間</td>
<td>データの保持年数</td>
</tr>
<tr>
<td>索引・LOB</td>
<td>テーブル本体以外に必要な容量</td>
</tr>
<tr>
<td>拡張余裕</td>
<td>将来増加と見積誤差への備え</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">基本的な計算式は以下のとおりです。</p>


<p class="wp-block-paragraph">将来件数＝初期件数＋年間増加件数×見積年数</p>


<p class="wp-block-paragraph">テーブルデータ量＝将来件数×平均レコード長</p>


<p class="wp-block-paragraph">冒頭で例に挙げた注文テーブル（初期件数120万件、年間増加30万件、見積期間5年で、5年後に270万件）に、平均レコード長420バイトを当てはめると、次のようになります。</p>


<p class="wp-block-paragraph">420バイト×270万件＝1,134,000,000バイト</p>


<p class="wp-block-paragraph">したがって、データ本体の概算は約1.1GBです。</p>


<p class="wp-block-paragraph">ただし、Oracleの実際の格納容量には、ブロック管理領域、PCTFREE、エクステント割り当てなどの影響があります。</p>


<p class="wp-block-paragraph"><strong>定義レコード長と平均レコード長は区別する</strong></p>


<p class="wp-block-paragraph">実案件では、エンティティ定義書から取得した定義上のレコード長を使って概算していました。</p>


<p class="wp-block-paragraph">この方法は実データがなくても計算できますが、VARCHAR2などの可変長項目では、定義上の最大長が実際の平均長より大きくなる場合があります。</p>


<p class="wp-block-paragraph">移行元のOracle Databaseが利用できる場合は、DBA_TABLES.NUM_ROWSとAVG_ROW_LENを参照すると、実態に近い見積が可能です。AVG_ROW_LENには行オーバーヘッドも含まれます。</p>


<p class="wp-block-paragraph">ただし、統計情報が古ければ信頼性が低下します。また、行外LOBのデータ本体は平均行長だけでは評価できないため、別途容量を見積もる必要があります。</p>


<h3 class="wp-block-heading"><span id="toc17">必要な情報が揃わないときの暫定見積</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">実際には以前に提供されていたエンティティ定義書を利用して見積を開始し、その後に件数や増加率の情報を取得して修正を進めました。定義書の項目長に未記入が見つかり、資料を再確認した経緯もあります。</p>


<p class="wp-block-paragraph"><strong>【実務事例：105テーブルを暫定見積】</strong></p>


<p class="wp-block-paragraph">実案件の容量見積Excelでは、件数が把握できるテーブルは5年後の推定件数から容量を計算し、初期件数が不明なテーブルには暫定容量を設定しました。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>項目</th>
<th style="text-align: right;">事例の見積</th>
</tr>
</thead>
<tbody>
<tr>
<td>暫定扱いのテーブル数</td>
<td style="text-align: right;">105</td>
</tr>
<tr>
<td>1テーブルの暫定容量</td>
<td style="text-align: right;">100MB</td>
</tr>
<tr>
<td>暫定容量合計</td>
<td style="text-align: right;">10,500MB</td>
</tr>
<tr>
<td>Excel上の集計容量</td>
<td style="text-align: right;">約93,431MB</td>
</tr>
<tr>
<td>暫定容量の割合</td>
<td style="text-align: right;">約11.2％</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">※元資料のMB表記を使用。100MBは実際の案件固有の暫定値であり、Oracle 19cの推奨値ではありません。</p>


<p class="wp-block-paragraph">全体の約11％を暫定値が占めていました。</p>


<p class="wp-block-paragraph">仮に、この105テーブルの実際の平均容量が300MBだった場合、必要容量は31,500MBとなります。</p>


<p class="wp-block-paragraph">当初見積10,500MBとの差は21,000MBです。</p>


<p class="wp-block-paragraph">つまり、未確定部分の見積条件によって、ストレージ容量が大きく変わる可能性があります。</p>


<p class="wp-block-paragraph">そのため、暫定値については少なくとも以下を記録しておきます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>管理項目</th>
<th>記載例</th>
</tr>
</thead>
<tbody>
<tr>
<td>未確定事項</td>
<td>初期データ件数</td>
</tr>
<tr>
<td>暫定容量</td>
<td>100MB</td>
</tr>
<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>
</figure>


<p class="wp-block-paragraph">重要なのは、情報不足を理由に設計を止めるのではなく、合理的な前提を置いて設計を進め、後から検証・修正できるようにしておくことです。</p>


<p class="wp-block-paragraph">暫定値は正解ではありません。未確定であることを明示し、関係者と合意して使用する必要があります。</p>


<h3 class="wp-block-heading"><span id="toc18">索引・LOBの容量見積</span></h3>


<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">（240GB－80GB）×25％＝40GB</p>


<p class="wp-block-paragraph">240GBはテーブル格納表領域全体、80GBはLOBを含むテーブルの見積容量です。</p>


<p class="wp-block-paragraph">この計算では、LOBを除いた160GBを基準に25％を掛けています。</p>


<p class="wp-block-paragraph">なお、160GBには非LOBテーブルのデータ量120GBに加え、表領域設計上の余裕40GBも含まれるため、索引の見積にも実質的に余裕を見込んでいます。</p>


<p class="wp-block-paragraph">この25％は案件固有の暫定係数であり、Oracle 19cの標準的な割合ではありません。</p>


<p class="wp-block-paragraph">索引定義が確定した後は、キー長、索引本数、データ件数などをもとに再見積します。既存テーブルであれば、DBMS_SPACE.CREATE_INDEX_COSTを利用する方法もあります。ただし、対象テーブルの統計情報が適切に収集されていることが前提です。</p>


<p class="wp-block-paragraph"><strong>LOB容量は文字コードと格納方式に注意する</strong></p>


<p class="wp-block-paragraph">実案件では、帳票データを格納するCLOBの容量見積で問題が発生しました。</p>


<p class="wp-block-paragraph">当初の見積には、以下の2つの問題がありました。</p>


<ul class="wp-block-list">
	<li>見積に使用した帳票枚数が、実際にLOBへ格納されるデータ件数を正しく表していなかった。</li>
	<li>すべてのLOBが行外格納されるという前提で計算していた。</li>
</ul>


<p class="wp-block-paragraph">このため、LOB容量の再見積が必要になりました。</p>


<p class="wp-block-paragraph">Oracle 19cでCLOB容量を見積もる場合は、文字コードによる内部表現の違いも考慮します。</p>


<p class="wp-block-paragraph">例えば、AL32UTF8環境では、CLOBの可変長文字データはUCS2互換の内部形式で格納されます。</p>


<p class="wp-block-paragraph">基本多言語面の文字を例にすると、次の違いがあります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>文字の種類</th>
<th>UTF-8</th>
<th>UCS2互換の内部表現</th>
</tr>
</thead>
<tbody>
<tr>
<td>ASCII文字「A」</td>
<td>1バイト</td>
<td>2バイト</td>
</tr>
<tr>
<td>ひらがな「あ」</td>
<td>3バイト</td>
<td>2バイト</td>
</tr>
<tr>
<td>漢字「漢」</td>
<td>3バイト</td>
<td>2バイト</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">つまり、ASCII中心の帳票では元のUTF-8データより大きく、日本語中心では小さくなる場合があります。</p>


<p class="wp-block-paragraph">ただし、補助文字、管理領域、LOB格納方式などの影響があるため、この比率をそのまま最終容量に使用してはいけません。</p>


<p class="wp-block-paragraph"><strong>行内格納と行外格納の違い</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは、ENABLE STORAGE IN ROWが有効な場合、管理情報を含めておおむね4,000バイト以下のLOBを行内に格納できます。</p>


<p class="wp-block-paragraph">1文字が内部的に2バイトとなる文字を中心に考えれば、おおむね2,000文字弱が目安になります。ただし、これは厳密な文字数上限ではありません。</p>


<p class="wp-block-paragraph">4,000バイトを超えるLOBは行外格納となり、別途LOBセグメントの容量を考慮する必要があります。</p>


<p class="wp-block-paragraph">また、BasicFilesでは小さなLOBの行外格納に最低1チャンクが必要となる場合がありますが、SecureFilesでは格納方式が異なります。</p>


<p class="wp-block-paragraph">Oracle 19cではSecureFilesを基本に検討し、圧縮・重複排除・暗号化を利用する場合は、Advanced CompressionやAdvanced Securityのライセンス条件も確認します。</p>


<p class="wp-block-paragraph">LOBの容量は単純な「件数×元ファイルサイズ」では求められません。実際のデータ形式と格納特性を確認したうえで見積もる必要があります。</p>


<h3 class="wp-block-heading"><span id="toc19">表領域・ストレージ容量への積み上げ</span></h3>


<p class="wp-block-paragraph">テーブル・索引・LOBの容量を見積もった後は、表領域およびストレージ全体の必要容量を決めます。</p>


<p class="wp-block-paragraph"><strong>【実務事例：テーブル格納表領域の設計】</strong></p>


<p class="wp-block-paragraph">最終物理設計書には、次の容量が記録されています。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>見積項目</th>
<th style="text-align: right;">容量</th>
</tr>
</thead>
<tbody>
<tr>
<td>LOBを含まないテーブル</td>
<td style="text-align: right;">120GB</td>
</tr>
<tr>
<td>LOBを含むテーブル</td>
<td style="text-align: right;">80GB</td>
</tr>
<tr>
<td>合計</td>
<td style="text-align: right;">200GB</td>
</tr>
<tr>
<td>設計上の余裕</td>
<td style="text-align: right;">40GB</td>
</tr>
<tr>
<td>テーブル格納表領域</td>
<td style="text-align: right;">240GB</td>
</tr>
<tr>
<td>索引表領域</td>
<td style="text-align: right;">40GB</td>
</tr>
<tr>
<td>合計</td>
<td style="text-align: right;">280GB</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">なお、前述のExcel約93,431MBは、見積ツール上の大・小区分の集計値です。</p>


<p class="wp-block-paragraph">最終物理設計書では、非LOBテーブルを約200テーブル×平均600MBとして120GBに見積もり、さらに帳票データなどのLOBを含むテーブルに80GBを計上しています。</p>


<p class="wp-block-paragraph">両者は同じ条件で算出した値ではなく、Excel集計から最終値へ至ったすべての再計算過程も確認できないため、93GBと200GBを直接比較することはできません。</p>


<p class="wp-block-paragraph">実務では、このように見積条件や対象範囲が変わることがあるため、見積値だけでなく、算出時点・対象範囲・前提条件を一緒に管理することが重要です。</p>


<p class="wp-block-paragraph"><strong>データファイルのサイズと拡張方針を決める</strong></p>


<p class="wp-block-paragraph">Oracle 19cでは、必要容量を踏まえて次の項目を設計します。</p>


<ul class="wp-block-list">
	<li>初期データファイルサイズ</li>
	<li>AUTOEXTENDの使用有無</li>
	<li>NEXTによる拡張増分</li>
	<li>MAXSIZEによる上限</li>
</ul>


<p class="wp-block-paragraph">AUTOEXTENDを有効にしていても、ストレージの空き容量が不足すれば拡張できません。</p>


<p class="wp-block-paragraph">そのため、データファイルの上限と物理ストレージの空き容量を合わせて管理します。</p>


<p class="wp-block-paragraph"><strong>ストレージの冗長化も考慮する</strong></p>


<p class="wp-block-paragraph">ASMでNORMAL REDUNDANCYを採用する場合、通常のデータファイルは2重化されます。</p>


<p class="wp-block-paragraph">例えば280GBの論理容量を同じASMディスクグループに配置すると、ミラーリングを含めて、概算560GB相当の物理容量が必要です。</p>


<p class="wp-block-paragraph">さらに、ASMの管理領域や障害時の再ミラーリングに必要な余裕も考慮します。ストレージ装置側で冗長化する場合は、その方式に応じて計算します。</p>


<p class="wp-block-paragraph"><strong>その他の領域も忘れずに見積もる</strong></p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>領域</th>
<th>主な見積根拠</th>
</tr>
</thead>
<tbody>
<tr>
<td>TEMP・UNDO</td>
<td>ソート・更新負荷、UNDO保持要件</td>
</tr>
<tr>
<td>REDOログ</td>
<td>更新量、ログ切り替え、可用性構成</td>
</tr>
<tr>
<td>アーカイブログ・FRA</td>
<td>REDO生成量、保持期間、バックアップ方式</td>
</tr>
<tr>
<td>バックアップ領域</td>
<td>データ容量、保存世代、バックアップ方式</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">特にアーカイブログは、テーブルの総容量ではなく更新処理量の影響を大きく受けます。</p>


<p class="wp-block-paragraph">設計時には容量監視の方針も決めます。DBA_TABLESPACE_USAGE_METRICSなどを利用し、使用率だけでなく、自動拡張可能量、ストレージの空き容量、増加速度も監視します。</p>


<h3 class="wp-block-heading"><span id="toc20">概算→補正→実測で容量見積の精度を上げる</span></h3>


<p class="wp-block-paragraph">容量見積は一度で完成するものではありません。実務では、次の3段階で精度を高めます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>段階</th>
<th>方法</th>
<th>目的</th>
</tr>
</thead>
<tbody>
<tr>
<td>① 概算</td>
<td>Excelによる件数・レコード長からの算出</td>
<td>必要容量の全体像を把握</td>
</tr>
<tr>
<td>② 補正</td>
<td>DBMS_SPACE.CREATE_TABLE_COST</td>
<td>Oracleの格納特性を考慮</td>
</tr>
<tr>
<td>③ 実測</td>
<td>移行リハーサル・性能試験</td>
<td>実際の使用容量と比較</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph"><strong>第1段階：概算</strong></p>


<p class="wp-block-paragraph">前述のように、基本設計・詳細設計の初期段階では、わかっている件数とレコード長から概算し、未確定部分は暫定値で補います。</p>


<p class="wp-block-paragraph"><strong>第2段階：Oracleの標準機能で補正</strong></p>


<p class="wp-block-paragraph">Oracle 19cではDBMS_SPACE.CREATE_TABLE_COSTを利用して、平均行サイズと想定件数からテーブル容量を推定できます。</p>


<p class="wp-block-paragraph">例えば、平均行サイズ420バイト、270万件の場合は次のように指定します。</p>


<pre class="wp-block-code"><code>SET SERVEROUTPUT ON
DECLARE
  v_used_bytes  NUMBER;
  v_alloc_bytes NUMBER;
BEGIN
  DBMS_SPACE.CREATE_TABLE_COST(
    tablespace_name =&gt; 'APP_DATA',
    avg_row_size    =&gt; 420,
    row_count       =&gt; 2700000,
    pct_free        =&gt; 10,
    used_bytes      =&gt; v_used_bytes,
    alloc_bytes     =&gt; v_alloc_bytes
  );
  DBMS_OUTPUT.PUT_LINE(
    'USED_BYTES=' || v_used_bytes
  );
  DBMS_OUTPUT.PUT_LINE(
    'ALLOC_BYTES=' || v_alloc_bytes
  );
END;
/
</code></pre>


<p class="wp-block-paragraph">※ APP_DATAは説明用の表領域名です。実際には対象PDB内の表領域を指定します。</p>


<p class="wp-block-paragraph">Oracle公式マニュアルでは、以下のように説明されています。</p>


<ul class="wp-block-list">
	<li>USED_BYTES：データが使用する容量。ブロック管理情報やPCTFREEなどのオーバーヘッドを含む。</li>
	<li>ALLOC_BYTES：表領域のエクステント割り当て特性を考慮した容量。</li>
</ul>


<p class="wp-block-paragraph">ただし、索引や行外LOBの容量まで自動的に求まるわけではありません。</p>


<p class="wp-block-paragraph">このSQLはOracle 19c実機での確認用です。実行環境で得た値とExcelの概算値を比較し、必要に応じて見積モデルを補正します。</p>


<p class="wp-block-paragraph"><strong>第3段階：移行リハーサル・性能試験で実測</strong></p>


<p class="wp-block-paragraph">実際のデータを投入した後は、DBA_SEGMENTSでテーブル・索引・LOBの割当容量を確認します。</p>


<p class="wp-block-paragraph">PDB内に接続してDBA_SEGMENTSを確認する方法のほか、CDBルートからCDB_SEGMENTSをCON_ID付きで確認する方法もあります。</p>


<p class="wp-block-paragraph">さらに、DBMS_SPACE.SPACE_USAGEによるセグメント内の空き領域、性能試験時のUNDO・TEMP使用量、REDO生成量などを確認します。</p>


<p class="wp-block-paragraph">DBA_SEGMENTS.BYTESは割当済み容量であり、純粋な業務データ量ではありません。そのため、見積と比較する際には、何を測定した容量なのかを揃える必要があります。</p>


<p class="wp-block-paragraph">こうして概算から実測までの差異を確認し、その理由を設計書に反映すれば、今回の容量設計だけでなく、次のプロジェクトでも活用できるノウハウとして蓄積できます。</p>


<h2 class="wp-block-heading"><span id="toc21">物理設計で実際に発生した課題と解決方法</span></h2>


<p class="wp-block-paragraph">物理設計では、教科書どおりの手順だけでは設計値を決められないことがあります。</p>


<p class="wp-block-paragraph">ここでは実際の課題管理表と物理設計書をもとに、同時接続数、Data Guard、設計変更の3つの事例を紹介します。各数値は設定値の推奨例ではなく、入力情報をどのように解釈して判断したかを示す材料です。</p>


<h3 class="wp-block-heading"><span id="toc22">端末数・同時アクセス数からPROCESSESを決めてはいけない</span></h3>


<p class="wp-block-paragraph"><code>PROCESSES</code>の設計では、利用端末数、同時アクセス数、DBへの最大接続数を区別する必要があります。</p>


<p class="wp-block-paragraph"><strong>【実務事例：400台・250接続・30同時アクセス】</strong></p>


<p class="wp-block-paragraph">実案件の課題管理表には、次の回答が記録されていました。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>項目</th>
<th style="text-align: right;">回答値</th>
<th>主に関係する設計</th>
</tr>
</thead>
<tbody>
<tr>
<td>総端末数</td>
<td style="text-align: right;">400台</td>
<td>システムの利用規模</td>
</tr>
<tr>
<td>同時接続可能台数</td>
<td style="text-align: right;">250台</td>
<td>アプリケーション接続数</td>
</tr>
<tr>
<td>同時アクセス台数</td>
<td style="text-align: right;">30台</td>
<td>同時実行負荷、CPU・PGA等</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">250台が同時接続可能でも、実際に処理を実行する台数が30台程度なら、接続数とアクティブな処理量を分けて考える必要があります。</p>


<p class="wp-block-paragraph">さらに、DBには利用者向けシステム以外からも接続が発生します。</p>


<p class="wp-block-paragraph">実際の物理設計書では、接続元ごとの上限を次のように積み上げていました。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>接続元</th>
<th style="text-align: right;">最大想定接続数</th>
</tr>
</thead>
<tbody>
<tr>
<td>Webアプリケーション基盤・業務利用者向け</td>
<td style="text-align: right;">250</td>
</tr>
<tr>
<td>Webアプリケーション基盤・別系統</td>
<td style="text-align: right;">50</td>
</tr>
<tr>
<td>C#アプリケーション</td>
<td style="text-align: right;">40</td>
</tr>
<tr>
<td>バッチサーバ</td>
<td style="text-align: right;">20</td>
</tr>
<tr>
<td>運用管理</td>
<td style="text-align: right;">10</td>
</tr>
<tr>
<td><strong>合計</strong></td>
<td style="text-align: right;"><strong>370</strong></td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">250はDB全体の最大接続数ではなく、一つの接続元の上限でした。</p>


<p class="wp-block-paragraph">これに、案件の環境で確認したバックグラウンドプロセス約40と、Data Guard関連の想定10を加えています。</p>


<p class="wp-block-paragraph">370＋40＋10＝420</p>


<p class="wp-block-paragraph">最終的には約19％の余裕を見込み、<code>PROCESSES=500</code>を採用しました。</p>


<p class="wp-block-paragraph">また、<code>SESSIONS</code>は既定の計算式から772としました。</p>


<p class="wp-block-paragraph"><code>1.5×500＋22＝772</code></p>


<p class="wp-block-paragraph">Oracle 19cでもこの算出式を利用できます。ただし、CDB/PDB構成や有効機能でバックグラウンドプロセス数が変わるため、事例の50を固定値とせず、対象環境の<code>V$PROCESS</code>などで実数を確認します。</p>


<p class="wp-block-paragraph">重要なのは、<strong>最大接続数と同時実行負荷は別の設計指標</strong>であることです。</p>


<h3 class="wp-block-heading"><span id="toc23">Data Guardと夜間バッチのREDOをどう設計するか</span></h3>


<p class="wp-block-paragraph">Data Guardでは、スタンバイの用途によって設計が変わります。</p>


<p class="wp-block-paragraph">障害時の切替先として利用するのか、日常的な参照処理に利用するのかによって、適切な構成を選択します。</p>


<p class="wp-block-paragraph"><strong>【実務事例：参照用DBにロジカル・スタンバイを採用】</strong></p>


<p class="wp-block-paragraph">実際の案件では、本番DBとは別に、利用者がSQLによる参照処理を行うDBを用意していました。</p>


<p class="wp-block-paragraph">この参照用DBにはData Guardのロジカル・スタンバイを採用しました。Oracle 19cで同様の要件を設計する際には、後述する他の参照用DB構成とも比較して選択します。</p>


<p class="wp-block-paragraph">ロジカル・スタンバイでは、DBをオープンしたままSQL Applyによって変更を反映できます。</p>


<p class="wp-block-paragraph">ただし、フィジカル・スタンバイのREDO Applyとは異なり、REDOから論理的な変更を再構成し、SQLを実行して反映します。</p>


<p class="wp-block-paragraph">そのため、大量の更新を伴うバッチでは、REDOを受信する速度だけでなく、SQL Applyの処理性能が同期完了時間を左右します。</p>


<p class="wp-block-paragraph">また、更新対象の行を効率的に特定できるよう、主キーや一意キーの有無も重要です。適切なキーがない表では、更新や削除の適用時にフルスキャンが発生し、性能が低下する可能性があります。</p>


<p class="wp-block-paragraph">ロジカル・スタンバイでは、更新行を識別するためのサプリメンタル・ロギングも必要となり、REDO生成量に影響します。</p>


<p class="wp-block-paragraph">加えて、すべてのデータ型や表構成をSQL Applyで扱えるわけではありません。対象外の表は<code>DBA_LOGSTDBY_UNSUPPORTED</code>などで確認できます。</p>


<p class="wp-block-paragraph"><strong>夜間バッチ終了時点までの反映をSCNで確認する</strong></p>


<p class="wp-block-paragraph">この案件では、参照用DBへの反映を日次で実施していました。</p>


<p class="wp-block-paragraph">物理設計書に記載された手順は、次のとおりです。</p>


<ol class="wp-block-list">
	<li>夜間バッチ終了後、プライマリでログスイッチする。</li>
	<li>アーカイブログの最終SCNを取得する。</li>
	<li>スタンバイ側でREDO適用を開始する。</li>
	<li>適用済みSCNが目標SCNに到達したことを確認する。</li>
	<li>REDO適用を停止する。</li>
</ol>


<p class="wp-block-paragraph">ここでいうSCNは、夜間バッチ終了時点までの更新が反映されたかを確認する基準です。</p>


<p class="wp-block-paragraph">単にREDOが届いたことではなく、<strong>目標SCNまでSQL Applyが完了したこと</strong>を確認する運用でした。</p>


<p class="wp-block-paragraph"><strong>FORCE LOGGINGと大量バッチの問題</strong></p>


<p class="wp-block-paragraph">実案件の夜間バッチでは、中間ファイルを作成し、JavaプログラムまたはSQL*Loaderを使ってDBへデータを格納していました。</p>


<p class="wp-block-paragraph">ダイレクト・パス・インサートなどの大量投入処理では、NOLOGGINGによってREDO生成量を抑制できる場合があります。</p>


<p class="wp-block-paragraph">しかし、必要なREDOが生成されないと、スタンバイ側で投入データを正しく再現できない可能性があります。</p>


<p class="wp-block-paragraph">このため、この案件ではData Guardとの整合性を考慮し、FORCE LOGGINGを有効にしました。</p>


<p class="wp-block-paragraph">一方、FORCE LOGGINGやサプリメンタル・ロギングにより、REDO量、アーカイブログ容量、転送負荷が増える可能性があります。</p>


<p class="wp-block-paragraph"><strong>【実務事例：1日約100万件を基準にREDO量を算出】</strong></p>


<p class="wp-block-paragraph">課題管理表では、年次の大量処理として、1日約100万件を想定していました。</p>


<p class="wp-block-paragraph">REDO量は、現行システムで同等の処理を実行した際のアラートログをもとに算出し、アーカイブログの保存期間は1週間としました。</p>


<p class="wp-block-paragraph">アラートログのログスイッチ情報を利用した見積は概算ですが、実績に基づく設計値を得るための方法です。</p>


<p class="wp-block-paragraph">Oracle 19cでは、利用権のあるAWRやSTATSPACKの<code>redo size</code>、実際のバッチ試験などを組み合わせて検証します。</p>


<p class="wp-block-paragraph"><strong>【実務事例：ネットワーク転送負荷の判断】</strong></p>


<p class="wp-block-paragraph">REDO転送については、業務用と運用用のネットワークが分離されていないことが懸念事項となりました。</p>


<p class="wp-block-paragraph">この案件では「問題ないレベルと思われる」という定性的な判断で課題を完了しましたが、REDO転送量と回線帯域を比較した定量的な根拠は記録されていません。</p>


<p class="wp-block-paragraph">19cで同様のシステムを設計するなら、次の項目を確認します。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>確認項目</th>
<th>設計上の目的</th>
</tr>
</thead>
<tbody>
<tr>
<td>ピーク時のREDO生成速度</td>
<td>必要な転送帯域の算出</td>
</tr>
<tr>
<td>実効ネットワーク帯域</td>
<td>他業務との競合を含めた余裕の確認</td>
</tr>
<tr>
<td>REDO転送遅延</td>
<td>スタンバイへの到達時間の確認</td>
</tr>
<tr>
<td>SQL Applyの処理速度</td>
<td>日次同期の所要時間の確認</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">特に、大量バッチ後のSQL Applyの所要時間は実測し、同期の完了時刻に間に合うかを確認します。</p>


<p class="wp-block-paragraph">なお、19cで参照用DBを構成する場合は、ロジカル・スタンバイに加え、フィジカル・スタンバイとActive Data Guard、GoldenGateなどの論理レプリケーションも比較対象となります。要件、ライセンス、対応データ型、同期方式を踏まえて選択します（前述のライセンスの設計判断例を参照）。</p>


<h3 class="wp-block-heading"><span id="toc24">設計の前提条件が変わったときの対応</span></h3>


<p class="wp-block-paragraph">物理設計では、設定値や構成が後から変更されることがあります。</p>


<p class="wp-block-paragraph">重要なのは、変更後の値だけでなく、変更理由と検証すべき事項を残すことです。</p>


<p class="wp-block-paragraph"><strong>【実務事例：UNDOを20GBから10GBへ変更】</strong></p>


<p class="wp-block-paragraph">課題管理表には、UNDO表領域を20GBから10GBへ変更した記録があります。</p>


<p class="wp-block-paragraph">理由は、システム全体の容量を考慮したためです。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>管理項目</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>変更前</td>
<td>UNDO表領域20GB</td>
</tr>
<tr>
<td>変更後</td>
<td>UNDO表領域10GB</td>
</tr>
<tr>
<td>事例の変更理由</td>
<td>全体の容量を考慮</td>
</tr>
<tr>
<td>確認すべきリスク</td>
<td>UNDO不足、長時間SQLへの影響</td>
</tr>
<tr>
<td>19cでの検証方法</td>
<td><code>V$UNDOSTAT</code>等による使用量の確認</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">この事例は、個別の表領域に求められる容量だけでなく、ストレージ全体の制約も設計値に影響することを示しています。</p>


<p class="wp-block-paragraph">19cでは<code>V$UNDOSTAT</code>などを確認し、必要なUNDO保持期間を満たせるか検証します。</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"><strong>LOBの再見積では格納方式や運用方針も見直す</strong></p>


<p class="wp-block-paragraph">LOB容量を再見積した際には、専用表領域を設けず、テーブルと同じ表領域へ格納する方向も検討されました。</p>


<p class="wp-block-paragraph">また、帳票データのパージ方針は、容量を再見積した後に判断することになっていました。</p>


<p class="wp-block-paragraph">このように、前提条件が変われば、単なる設定値だけでなく、表領域構成や保存・削除方式まで見直す必要があります。</p>


<p class="wp-block-paragraph">課題管理表は、未確定事項を管理するだけでなく、<strong>設計判断の根拠と変更の経緯を残すための成果物</strong>として活用します。</p>


<h2 class="wp-block-heading"><span id="toc25">まとめ｜データベースの物理設計で重要なこと</span></h2>


<p class="wp-block-paragraph">データベースの物理設計は、表領域や初期化パラメータの設定値を埋める作業ではありません。性能・容量・可用性・運用性の要件を踏まえ、根拠を持って設計判断を積み重ねる工程です。</p>


<p class="wp-block-paragraph">本記事では、Oracle Database 19cを例に、主な設計項目、容量見積の方法、実際のプロジェクトで発生した課題を紹介しました。</p>


<p class="wp-block-paragraph">Oracle 19cでは、エディションとライセンス、CDB/PDBの設計単位を最初に確認し、その制約を踏まえて表領域やメモリなどを設計します。</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">例えば、別案件の設計書に16KBのDBブロックサイズや固定エクステントが記載されていても、その値を流用せず、平均行長、アクセス特性、運用要件を確認します。フルスキャンの多さだけでは大きなブロックを選ぶ十分な根拠にはならず、代表的なSQLでの検証が必要です。</p>


<p class="wp-block-paragraph">物理設計の品質を左右するのは、設定値そのものだけではありません。<strong>なぜその値を選んだのか、どの情報を根拠にしたのかを説明できること</strong>が、構築・試験・運用まで通用する設計につながります。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph"><strong>参考資料｜Oracle Database 19c公式マニュアル</strong></p>


<ul class="wp-block-list">
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html">Licensing Information</a> — エディション、オプション、管理パックの利用条件</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SPACE.html">DBMS_SPACE</a> — CREATE_TABLE_COSTなどの容量見積機能</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/DBA_TABLES.html">DBA_TABLES</a> — テーブル統計情報（列定義の詳細はALL_TABLESを参照）</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/physical-database-limits.html">Physical Database Limits</a> — SMALLFILE／BIGFILE等の物理的上限</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/FAST_START_MTTR_TARGET.html">FAST_START_MTTR_TARGET</a> — クラッシュリカバリ時間の目標</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/SESSIONS.html">SESSIONS</a> — セッション数とPROCESSESの関係</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/DB_FILE_MULTIBLOCK_READ_COUNT.html">DB_FILE_MULTIBLOCK_READ_COUNT</a> — マルチブロック読み込み</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-guard-logical-standby-databases.html">Managing a Logical Standby Database</a> — SQL Applyの処理方式と運用</li>
	<li><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backing-up-database.html">Backing Up the Database</a> — RMANのSECTION SIZEとマルチセクション・バックアップ</li>
</ul>


<p class="wp-block-paragraph"><strong>関連記事</strong></p>


<ul class="wp-block-list">
	<li><a href="https://sys-univ.com/dev/oracle-19c-partition-statistics-execution-plan/">Oracle 19c更改後に実行計画が変わる――パーティション削除時の統計情報更新と影響調査漏れ</a></li>
	<li><a href="https://sys-univ.com/dev/performance-test/">性能テストの進め方｜負荷モデル・テストデータ・評価方法を実務で解説</a></li>
	<li><a href="https://sys-univ.com/dev/opedesign/">運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</a></li>
	<li><a href="https://sys-univ.com/aws/rdsforora/">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</a></li>
	<li><a href="https://sys-univ.com/dev/security/">セキュリティ要件定義の進め方｜リスクアセスメントから対策・残存リスクを決める方法</a></li>
</ul>

<p>&nbsp;</p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/db-physical-design/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>品質評価の落とし穴｜設計レビューは基準内でも、次工程へ進めなかった理由</title>
		<link>https://sys-univ.com/dev/design-quality-evaluation-pitfalls/</link>
					<comments>https://sys-univ.com/dev/design-quality-evaluation-pitfalls/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Wed, 30 Sep 2026 08:10:22 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3439</guid>

					<description><![CDATA[はじめに 設計工程のレビューが完了し、品質指標も社内基準の範囲内でした。 普通に考えれば、そのまま次工程へ進めそうです。 しかし、このプロジェクトではすぐには進めませんでした。 理由は、全体の数値には現れにくい「偏り」が [&#8230;]]]></description>
										<content:encoded><![CDATA[

<p class="wp-block-paragraph"><strong>はじめに</strong></p>
<p>設計工程のレビューが完了し、品質指標も社内基準の範囲内でした。</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>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. レビュー指摘件数だけでは、設計品質は判断できない</a></li><li><a href="#toc2" tabindex="0">2. まず全体値を見る。ただし、ここでは結論を出さない</a></li><li><a href="#toc3" tabindex="0">3. 設計工程の品質評価では「平均」より違和感を見る</a><ol><li><a href="#toc4" tabindex="0">指摘が「0件」の成果物も確認する</a></li></ol></li><li><a href="#toc5" tabindex="0">4. 指摘件数より「何を指摘されたか」を見る</a></li><li><a href="#toc6" tabindex="0">5. 認証系だけ指摘が多い。まず何を疑ったか</a><ol><li><a href="#toc7" tabindex="0">機能そのものの難易度</a></li><li><a href="#toc8" tabindex="0">要件が十分に固まっているか</a></li><li><a href="#toc9" tabindex="0">担当者の理解・経験</a></li><li><a href="#toc10" tabindex="0">レビュアー側の知識</a></li><li><a href="#toc11" tabindex="0">機能の外側まで視野を広げる</a></li></ol></li><li><a href="#toc12" tabindex="0">6. 原因は「書き方」ではなく、要件と責任分界にあった</a></li><li><a href="#toc13" tabindex="0">7. 基準内でも、原因が見つかれば設計へ戻す</a><ol><li><a href="#toc14" tabindex="0">不足していた仕様を確認する</a></li><li><a href="#toc15" tabindex="0">プロジェクトの経緯と運用を知る有識者にも確認する</a></li><li><a href="#toc16" tabindex="0">他機能へ横展開する</a></li></ol></li><li><a href="#toc17" tabindex="0">8. 数字の良し悪しの前に、「何を計った数字か」を確認する</a></li><li><a href="#toc18" tabindex="0">9. 品質評価の目的は「次工程へ進める根拠」を作ること</a></li><li><a href="#toc19" tabindex="0">関連記事</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. レビュー指摘件数だけでは、設計品質は判断できない</span></h2>


<p class="wp-block-paragraph">あるプロジェクトで、複数機能を合わせた設計書115ページに対し、レビュー指摘が36件出ました。</p>


<p class="wp-block-paragraph">この36件という数字だけを見て、</p>


<p class="wp-block-paragraph">「36件もある。品質が悪い」</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">36件が多いか少ないかは、対象範囲によって意味が変わります。</p>


<p class="wp-block-paragraph">1機能の小さな設計書で36件なら多く見えるかもしれません。一方、大規模なサブシステム全体で36件なら、むしろ少なく見えることもあります。</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">全36件のうち17件。全体の約47％です。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">認証機能だけ、何か違う。</p>
</blockquote>


<p class="wp-block-paragraph">この違和感をそのままにせず、原因を確認するところから品質評価が始まります。</p>


<h2 class="wp-block-heading"><span id="toc2">2. まず全体値を見る。ただし、ここでは結論を出さない</span></h2>


<p class="wp-block-paragraph">設計レビューが終わったら、まず全体の数字を確認します。</p>


<p class="wp-block-paragraph">次のような結果でした。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>項目</th>
<th>実績</th>
</tr>
</thead>
<tbody>
<tr>
<td>設計書規模</td>
<td>115ページ</td>
</tr>
<tr>
<td>レビュー指摘</td>
<td>36件</td>
</tr>
<tr>
<td>エラー摘出密度</td>
<td>約31件／100ページ</td>
</tr>
<tr>
<td>レビュー時間</td>
<td>約650分</td>
</tr>
<tr>
<td>レビュー密度</td>
<td>約5.7分／ページ</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">当時のプロジェクトでは、こうした値を社内標準の品質基準と比較していました。</p>


<p class="wp-block-paragraph">ここでいうエラー摘出密度は、<strong>100ページ当たりの指摘件数</strong>です。</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>結論を出す数字ではなく、次にどこを見るかを決める入口</strong>です。</p>


<p class="wp-block-paragraph">例えば、レビュー指摘が多くても、その大部分が誤字や表現修正なら、設計そのものの品質が悪いとは限りません。</p>


<p class="wp-block-paragraph">一方、指摘件数が少なくても、その中に重大な設計漏れが含まれていれば話は別です。</p>


<p class="wp-block-paragraph"><strong>30件の軽微な記述修正と、1件の重大な設計漏れでは意味が違います。</strong></p>


<p class="wp-block-paragraph">だから、全体値を確認した次は、その数字を分解して見ます。</p>
<p>今回のケースで行った流れを整理すると、次のようになります。</p>

<div id="attachment_3450" style="width: 1682px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3450" class="wp-image-3450 size-full" src="https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1.png" alt="" width="1672" height="941" srcset="https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1.png 1672w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/bce397644ac290edde61fede5b940971-1-376x212.png 376w" sizes="(max-width: 1672px) 100vw, 1672px" /><p id="caption-attachment-3450" class="wp-caption-text">図：設計工程における品質評価の流れ。基準値の確認だけで終わらず、偏り・重要度・原因を確認し、必要に応じて設計へ戻す</p></div>


<p>この流れの中で、最初に重要になるのが「偏り」です。全体平均だけでは見えない違和感を、機能別に分解して確認します。</p>
<h2 class="wp-block-heading"><span id="toc3">3. 設計工程の品質評価では「平均」より違和感を見る</span></h2>


<p class="wp-block-paragraph">先ほど示した36件を機能別に分けると、内訳は次のようになります。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>機能</th>
<th>指摘件数</th>
</tr>
</thead>
<tbody>
<tr>
<td>認証系</td>
<td>17</td>
</tr>
<tr>
<td>マスタ連携系</td>
<td>7</td>
</tr>
<tr>
<td>バッチ系</td>
<td>5</td>
</tr>
<tr>
<td>その他</td>
<td>7</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">認証系だけで全体の約半数を占めており、偏りがはっきり見えます。</p>


<p class="wp-block-paragraph">ここで見るべきなのは、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>なぜ、この機能だけ突出したのか</strong></p>
</blockquote>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">品質評価では、こうした偏りをかなり重視します。</p>


<p class="wp-block-paragraph">特定機能に指摘が集中している、特定種類の指摘だけ突出している、規模の割に指摘が多い。こうした数字には、何らかの理由があります。</p>


<p class="wp-block-paragraph">今回の認証系機能でも、17件のうち大半が「説明不足」「記述上の不備」でした。</p>


<p class="wp-block-paragraph">一見すると、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">設計者の文章力の問題ではないか</p>
</blockquote>


<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="toc4">指摘が「0件」の成果物も確認する</span></h3>


<p class="wp-block-paragraph">逆方向の偏りもあります。</p>


<p class="wp-block-paragraph"><strong>指摘が少なすぎるケースです。</strong></p>


<p class="wp-block-paragraph">ある程度の規模や複雑さがある成果物でレビュー指摘が0件だった場合、私は「品質が高かった」とすぐには受け取りません。</p>


<p class="wp-block-paragraph">むしろ、一度確認します。</p>


<p class="wp-block-paragraph">もちろん、小規模な定型機能なら0件でも不思議ではありません。</p>


<p class="wp-block-paragraph">しかし、ある程度の規模があり、新規設計や条件分岐、外部連携などを含むのに0件であれば、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">本当に十分なレビューが行われたのか？</p>
</blockquote>


<p class="wp-block-paragraph">を疑います。</p>


<p class="wp-block-paragraph">実際のプロジェクトでも、指摘が多い機能だけを確認していたわけではありません。<strong>規模の割に指摘が少ない機能や、指摘が0件だった機能も確認対象にしていました。</strong></p>


<p class="wp-block-paragraph">0件には、</p>


<ul class="wp-block-list">
	<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"><strong>説明しにくい数字、違和感のある数字です。</strong></p>


<p class="wp-block-paragraph">多すぎる場合も見る。少なすぎる場合も見る。</p>


<p class="wp-block-paragraph">全体平均の中に埋もれた違和感を拾うことが、品質評価の最初の重要な作業です。</p>


<h2 class="wp-block-heading"><span id="toc5">4. 指摘件数より「何を指摘されたか」を見る</span></h2>


<p class="wp-block-paragraph">レビュー結果を見るときは、指摘件数だけでなく、<strong>その指摘がどの程度の影響を持つものか</strong>を確認します。</p>


<p class="wp-block-paragraph">例えば、同じ10件でも、</p>


<ul class="wp-block-list">
	<li>誤字脱字や表現の修正が10件</li>


	<li>処理条件の漏れや設計誤りが10件</li>
</ul>


<p class="wp-block-paragraph">では、品質上の意味はまったく違います。</p>


<p class="wp-block-paragraph">私が品質評価をするときは、指摘内容を重要度で分けて見ます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<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>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">この分類で重要なのは、<strong>件数の多寡だけで工程完了を判断しないこと</strong>です。</p>


<p class="wp-block-paragraph">軽微な指摘だけであれば、修正を確認できた時点で問題にしません。</p>


<p class="wp-block-paragraph">一方で、重要度「大」に相当する設計漏れや設計誤りが残っているなら、たとえ指摘件数が1件でも、そのまま工程完了とはしません。</p>


<p class="wp-block-paragraph">重要度の高い指摘が見つかった時点で、同じ原因による漏れが他機能にもないか、横展開の確認も必要になります。</p>


<p class="wp-block-paragraph">つまり、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>「何件あったか」より、「何が残っているか」の方が重要です。</strong></p>
</blockquote>


<p class="wp-block-paragraph">先ほどの認証系機能でも、指摘の大半は説明不足や記述上の不備で、重要度としては「小」〜「中」が中心でした。</p>


<p class="wp-block-paragraph">認証方式そのものを大量に間違えていたわけではありません。</p>


<p class="wp-block-paragraph">それでも、同じ種類の指摘が一つの機能に集中している以上、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">なぜ、この機能だけ設計内容を明確に書けなかったのか</p>
</blockquote>


<p class="wp-block-paragraph">は確認する必要があります。</p>


<p class="wp-block-paragraph">次章では、この認証系機能について、実際にどこを疑い、原因をどう絞っていったのかを見ていきます。</p>


<h2 class="wp-block-heading"><span id="toc6">5. 認証系だけ指摘が多い。まず何を疑ったか</span></h2>


<p class="wp-block-paragraph">認証系機能では、他の機能より指摘が明らかに多く出ていました。</p>


<p class="wp-block-paragraph">こういうとき、私はいきなり</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">担当者のスキルが足りない</p>
</blockquote>


<p class="wp-block-paragraph">とは考えません。</p>


<p class="wp-block-paragraph"><strong>まず機能単体で見える構造を確認し、次に人を見て、それでも説明できなければ機能の外側にある構造へ視野を広げます。</strong></p>


<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">認証や外部連携のように、複数システムをまたぎ、条件分岐も多い機能は、単純な機能より設計上の確認事項が増えます。</p>


<p class="wp-block-paragraph">当時のプロジェクトでも、認証まわりは経験者が限られており、他機能より確認すべき前提が多い領域でした。</p>


<h3 class="wp-block-heading"><span id="toc8">要件が十分に固まっているか</span></h3>


<p class="wp-block-paragraph">次に見るのが要件です。</p>


<p class="wp-block-paragraph">設計者が正しく理解していても、要件そのものに不足があれば、設計書に明確に落とし込むことはできません。</p>


<p class="wp-block-paragraph">ここでは、要件定義書や過去の打ち合わせ内容を見直し、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">そもそも設計者が判断できるだけの情報が揃っていたか</p>
</blockquote>


<p class="wp-block-paragraph">を確認します。</p>


<h3 class="wp-block-heading"><span id="toc9">担当者の理解・経験</span></h3>


<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="toc10">レビュアー側の知識</span></h3>


<p class="wp-block-paragraph">設計者だけでなく、レビューする側も確認します。</p>


<p class="wp-block-paragraph">レビュアーがその機能の前提や過去の経緯を知らなければ、レビュー回数を増やしても重要な観点を拾えないことがあります。</p>


<h3 class="wp-block-heading"><span id="toc11">機能の外側まで視野を広げる</span></h3>


<p class="wp-block-paragraph">個人や単一機能だけでは説明できない場合は、認証基盤側と個別機能側の責任分界も確認します。</p>


<p class="wp-block-paragraph">認証や外部連携では、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">どこまでを認証基盤側で決め、どこからを個別機能側で決めるのか</p>
</blockquote>


<p class="wp-block-paragraph">が曖昧だと、誰も設計しない領域が生まれます。</p>


<p class="wp-block-paragraph">この観点は、単純な設計書レビューだけでは見落としやすい部分です。</p>


<p class="wp-block-paragraph">ここまで確認して初めて、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">指摘が多かった理由は何だったのか</p>
</blockquote>


<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="toc12">6. 原因は「書き方」ではなく、要件と責任分界にあった</span></h2>


<p class="wp-block-paragraph">認証系機能では、「説明不足」「記述上の不備」が多く出ていました。</p>


<p class="wp-block-paragraph">表面だけを見ると、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">設計者が分かりやすく書けていない</p>
</blockquote>


<p class="wp-block-paragraph">という問題に見えます。</p>


<p class="wp-block-paragraph">しかし、設計内容を追っていくと、原因はそれだけではありませんでした。</p>


<p class="wp-block-paragraph">当時の要件では、外部の認証基盤から利用者IDを受け取り、そのIDが認証用のテーブルに存在する利用者だけをシステムへ通す、というところまでは決まっていました。</p>


<p class="wp-block-paragraph">ところが、その先が十分に詰められていませんでした。</p>


<p class="wp-block-paragraph">例えば、</p>


<ul class="wp-block-list">
	<li>その利用者は参照だけできるのか</li>


	<li>更新もできるのか</li>


	<li>管理者権限を持つのか</li>


	<li>担当業務だけを利用できるのか</li>


	<li>こうした権限情報をどこで管理するのか</li>
</ul>


<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">例えば、認証基盤側は利用者IDが正しいことまでを保証し、その利用者に「参照のみ」「更新可能」「管理者」といった権限を与えるのは個別機能側なのか。それとも権限情報そのものを認証基盤側で管理するのか。</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>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">「この場合はどうするのか」<br />
「この権限はどこで判断するのか」<br />
「この条件では認証エラーなのか、権限エラーなのか」</p>
</blockquote>


<p class="wp-block-paragraph">といった部分が設計書上で曖昧になっていました。</p>


<p class="wp-block-paragraph">この関係は、次のように整理できます。</p>


<p class="wp-block-paragraph"><strong>要件が不足している</strong><br />
↓<br />
<strong>認証基盤側と個別機能側の責任分界が曖昧になる</strong><br />
↓<br />
<strong>設計者が一意に仕様を決められない</strong><br />
↓<br />
<strong>設計書の記述が曖昧になる</strong><br />
↓<br />
<strong>レビューで説明不足として表面化する</strong></p>


<p class="wp-block-paragraph">ここで重要なのは、レビューで見えた「説明不足」をそのまま原因だと考えないことです。</p>


<p class="wp-block-paragraph"><strong>説明不足は原因ではなく、上流の問題が設計書に現れた結果だった</strong>わけです。</p>


<p class="wp-block-paragraph">もしここで、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">設計書をもっと分かりやすく書くこと</p>
</blockquote>


<p class="wp-block-paragraph">だけを対策にしていたら、根本的な問題は残ったままです。</p>


<p class="wp-block-paragraph">今回のケースでは、この原因を確認した時点で、次工程へそのまま流すのではなく、設計の前提を見直す必要があると判断しました。</p>


<h2 class="wp-block-heading"><span id="toc13">7. 基準内でも、原因が見つかれば設計へ戻す</span></h2>


<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="toc14">不足していた仕様を確認する</span></h3>


<p class="wp-block-paragraph">最初に行ったのは、曖昧だった仕様の再確認です。</p>


<p class="wp-block-paragraph">認証そのものだけでなく、</p>


<ul class="wp-block-list">
	<li>利用者にどの権限を与えるのか</li>


	<li>どこまでを認証基盤側で持つのか</li>


	<li>どこからを個別機能側で判断するのか</li>
</ul>


<p class="wp-block-paragraph">といった、設計の前提を整理し直しました。</p>


<p class="wp-block-paragraph">私の現場では、こうした仕様不足を見つけたとき、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>今ここで決めずに後工程へ送ると、設計変更や製造修正として追加工数が発生するか</strong></p>
</blockquote>


<p class="wp-block-paragraph">も判断材料にします。</p>


<p class="wp-block-paragraph">今回の内容は、後工程へ持ち越せば手戻りにつながる可能性が高いため、この工程で確認すべき事項と判断しました。</p>


<h3 class="wp-block-heading"><span id="toc15">プロジェクトの経緯と運用を知る有識者にも確認する</span></h3>


<p class="wp-block-paragraph">次に、有識者を加えて確認しました。</p>


<p class="wp-block-paragraph">ここでいう有識者は、単に認証技術に詳しい人ではありません。</p>


<p class="wp-block-paragraph">重視したのは、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>そのプロジェクトで、なぜ現在の設計になったのかを知り、既存システムが実際にどう運用されているかも理解している人</strong></p>
</blockquote>


<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>


<h3 class="wp-block-heading"><span id="toc16">他機能へ横展開する</span></h3>


<p class="wp-block-paragraph">認証系機能で問題が見つかったからといって、その機能だけを修正して終わりにはしません。</p>


<p class="wp-block-paragraph">まず、要件不足やシステム間の責任分界という観点で、同じ問題が他機能にもないかを確認しました。</p>


<p class="wp-block-paragraph">例えば、</p>


<ul class="wp-block-list">
	<li>設計者が判断できない未確定条件が残っていないか</li>


	<li>他システムとの責任分界が曖昧になっていないか</li>
</ul>


<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>


<ul class="wp-block-list">
	<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"><strong>そのシステムが実際にどう使われてきたかを知る人だからこそ見つけられた設計上の不足です。</strong></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">そして、今回見つかった問題はその場限りで終わらせず、次回以降のレビューでも使えるよう、</p>


<ul class="wp-block-list">
	<li>未確定条件が残っていないか</li>


	<li>他システムとの責任分界が明確か</li>
</ul>


<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">修正後の再確認では、今回問題となった観点について追加の修正指摘は出ませんでした。</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">数字の偏りから原因が見つかったのであれば、<strong>基準内かどうかより、その原因を放置しないことを優先します。</strong></p>


<h2 class="wp-block-heading"><span id="toc17">8. 数字の良し悪しの前に、「何を計った数字か」を確認する</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>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">レビュー時間が不足していたのではないか</p>
</blockquote>


<p class="wp-block-paragraph">と考えたくなります。</p>


<p class="wp-block-paragraph">しかし実態を確認すると、設計書レビューだけでなく、事前の横並び確認や整理にもかなり時間を使っていました。一方、それらの時間すべてが管理ツール上のレビュー時間として計上されていたわけではありません。</p>


<p class="wp-block-paragraph">つまり、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">レビューが少なかった</p>
</blockquote>


<p class="wp-block-paragraph">のではなく、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>数字に含まれている作業範囲が、実際に行った品質確認の全量ではなかった</strong></p>
</blockquote>


<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">レビュー密度が低くても、横並び確認や有識者レビューまで含めて十分な確認をしているのであれば、その実態も合わせて評価します。</p>


<p class="wp-block-paragraph">時間の多寡と、レビュー観点の質は別の問題です。</p>


<p class="wp-block-paragraph">成果物ごとの指摘件数も同じです。先ほど触れたように、規模や難易度に対して極端な値になっていれば、その理由を確認します。</p>


<p class="wp-block-paragraph">生産性についても、高く見えていても、工数の計上範囲や外部支援の有無によって意味が変わります。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>数字が良いか悪いかではなく、その数字が実態を正しく表しているかを見る。</strong></p>
</blockquote>


<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">例えば、横並び確認、有識者レビュー、修正後の再確認などです。</p>


<p class="wp-block-paragraph">「参考値」は逃げ道ではなく、<strong>別の根拠で補完することを前提にした扱い</strong>です。</p>


<h2 class="wp-block-heading"><span id="toc18">9. 品質評価の目的は「次工程へ進める根拠」を作ること</span></h2>


<p class="wp-block-paragraph">設計工程の品質評価は、</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">基準値に入ったから合格</p>
</blockquote>


<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>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>「なぜ、この設計成果物を次工程へ渡してよいのか」を説明できる状態にすることです。</strong></p>
</blockquote>


<p class="wp-block-paragraph">今回のケースを口頭で説明するなら、骨子はこうなります。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">全体の品質指標は基準範囲内だったが、認証系機能への指摘集中が見つかった。原因を確認すると、要件と責任分界に不足があったため設計へ戻した。さらに有識者を交えて他機能も確認し、必要な修正と再確認を行ったうえで、次工程へ進める状態になった。</p>
</blockquote>


<p class="wp-block-paragraph">実務では、この判断を口頭で説明して終わりにはできません。</p>


<p class="wp-block-paragraph">顧客やプロジェクトマネージャー、PMOなど、第三者が後から見ても、</p>


<ul class="wp-block-list">
	<li>どの数字に着目したのか</li>


	<li>なぜ追加確認が必要と判断したのか</li>


	<li>どんな品質強化を行ったのか</li>


	<li>何を根拠に次工程へ進めると判断したのか</li>
</ul>


<p class="wp-block-paragraph">を追える形にしておく必要があります。</p>


<p class="wp-block-paragraph">第8章で触れたように、レビュー密度などを「参考値」とした場合も同じです。</p>


<p class="wp-block-paragraph">なぜその数字をそのまま評価に使えないのか。<br />
その代わりに何を確認し、品質を担保したのか。</p>


<p class="wp-block-paragraph"><strong>ここまでを整理して初めて、第三者にも品質判断の根拠を説明できる状態になります。</strong></p>


<p class="wp-block-paragraph">ここから先は、「品質をどう判断するか」ではなく、<strong>その判断をどう資料にするか</strong>の話です。</p>


<p class="wp-block-paragraph">実務編では、実際の品質評価で使用してきた考え方をベースに、架空プロジェクトのデータを使って、</p>


<ul class="wp-block-list">
	<li>レビュー実施状況表</li>


	<li>エラー分析表</li>


	<li>横展開用チェックリスト</li>


	<li>品質・生産性報告書</li>
</ul>


<p class="wp-block-paragraph">をどのように作るか、具体的に整理します。</p>


<p class="wp-block-paragraph"><strong>本記事が「何を見て、どう判断するか」なら、実務編は「その判断を第三者に説明できる成果物へどう落とすか」です。</strong></p>


<p class="wp-block-paragraph">※実務編は近日公開予定です。</p>
<h2><span id="toc19">関連記事</span></h2>
<p>設計工程の品質評価では、レビュー結果だけを見るのではなく、<strong>要件が十分に具体化されているか、設計した内容を後工程でどう確認するか</strong>までつなげて考える必要があります。</p>
<p>今回の記事で扱った「要件不足」「責任分界」「次工程へ進める根拠」と関係する内容は、以下の記事でも詳しく整理しています。</p>
<p><strong>要件定義とは？RFP・見積前提から認識差を潰す実務を解説</strong><br />
要件定義書に書かれた要求をそのまま設計へ渡すのではなく、設計・構築・テストできる粒度まで具体化する考え方を、責任分界や実際の手戻り事例とともに整理しています。</p>

<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</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 loading="lazy" decoding="async" 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" /></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.12</div></div></div></div></a>
<p><strong>Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</strong><br />
要件や設計で決めた内容を、どのテスト工程で確認するのか。設計成果物とテストを対応づけて、後工程まで含めて品質を作り込む考え方を解説しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>
<p><strong>機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</strong><br />
機能が正しく動くだけでは、本番で使えるシステムとは限りません。性能・可用性・運用性・セキュリティなど、設計時に見落としやすい非機能要件の考え方を整理しています。</p>

<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa.jpg 1672w" sizes="(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">「機能が動く」と「本番で使える」は違う。機能要件と非機能要件の違いを、購入申請システムの具体例と現場の失敗パターンから整理します。</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 loading="lazy" decoding="async" 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" /></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>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/design-quality-evaluation-pitfalls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</title>
		<link>https://sys-univ.com/dev/v-model-quality-assurance/</link>
					<comments>https://sys-univ.com/dev/v-model-quality-assurance/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 02:41:49 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1882</guid>

					<description><![CDATA[※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。 はじめに 「Vモデルってウォーターフォール時代の話でしょ？」 こう話すエンジニアに、現場でたびたび出会います。アジャイルやスクラムが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。</p>
<p class="wp-block-heading"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">「Vモデルってウォーターフォール時代の話でしょ？」</p>


<p class="wp-block-paragraph">こう話すエンジニアに、現場でたびたび出会います。アジャイルやスクラムが当たり前になった今、Vモデルは時代遅れだと思われがちです。しかし、これは大きな誤解です。</p>


<p class="wp-block-paragraph">Vモデルは特定の開発手法の話ではありません。<strong>要件定義や設計で決めたことを、対応するテストで確認する</strong>という、品質保証の基本的な考え方です。この考え方を持てているかどうかが、システム開発の品質を大きく左右します。</p>


<p class="wp-block-paragraph">この記事では、システム基盤開発を例にとりながら、Vモデルの本質をテスト工程の視点から解説します。教科書的な図の説明ではなく、現場でどう使うかに焦点を当てています。</p>



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Vモデルとは何か</a></li><li><a href="#toc2" tabindex="0">なぜ段階的なテストが必要なのか</a></li><li><a href="#toc3" tabindex="0">バックアップ4時間以内という要件を例に考える</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Vモデルとは何か</span></h2>


<p class="wp-block-paragraph">Vモデルとは、開発工程とテスト工程を対応づけて考えるモデルです。</p>


<p class="wp-block-paragraph">名前の由来は見た目の形にあります。左側に開発工程が並び、右側にテスト工程が並ぶ。その形がアルファベットの「V」に見えることから、Vモデルと呼ばれています。</p>


<p class="wp-block-paragraph">ただし、大事なのは形ではありません。本質は次の一文に集約されます。</p>


<p class="wp-block-paragraph"><strong>「ある工程で決めたことは、対応するテスト工程で確認する」</strong></p>


<p class="wp-block-paragraph">このイメージを図にすると、次のようになります。</p>


<figure id="40955f93-5a6b-4757-b4c8-400c817d9ebd" class="wp-block-image"><a href="https://assets.st-note.com/img/1779342169-CWk0uRZEONXJmFDnvVlr8tjG.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779342169-CWk0uRZEONXJmFDnvVlr8tjG.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">ただし、工程の名称や対応関係はプロジェクトごとに異なります。ここで示すのはあくまで一例です。その前提で、システム基盤の開発に当てはめると次のような対応関係になります。</p>


<ul id="5b36c14c-333e-4bd4-8384-5c53156acc36" class="wp-block-list">
	<li>環境定義（実際の設定値・パラメータ）→ 単体テスト</li>


	<li>詳細設計（製品ごとの設計内容）→ 結合テスト1（基盤に閉じた接続確認）</li>


	<li>基本設計（処理方式・システム構成・採用製品）→ 結合テスト2（プロトタイプアプリを用いた確認）</li>


	<li>要件定義・運用設計（可用性・性能・セキュリティ・運用要件など）<br />
→ システムテスト・運用テスト・受入テスト</li>
</ul>


<p class="wp-block-paragraph">結合テストを2段階に分けているのは、確認の観点が異なるからであり、教科書的なVモデルをそのまま当てはめたものではなく、基盤開発の成果物粒度に合わせた整理です。</p>


<p class="wp-block-paragraph">結合テスト1は基盤に閉じた機器間・システム間の接続確認です。結合テスト2はプロトタイプの業務アプリケーションを使い、基本設計で定めた処理方式や構成が実際に機能するかを確認します。基本設計の内容を検証するには、アプリが一部でも動く状態でないと確認できないため、この段階にアプリが入ってきます。</p>


<p class="wp-block-paragraph">システムテストは「総合テスト」とも呼ばれ、基盤とアプリケーションが合流して行う最終的な全体検証です。プロジェクトによっては、運用テストや受入テストがシステムテストの一部として扱われることもあれば、システムテスト後の別工程として実施されることもあります。なお、運用テストは手順・承認フローの確認、受入テストはお客様がシステムを本番として受け入れるかの判断が目的であり、両者は異なります。</p>


<p class="wp-block-paragraph">この対応関係が崩れると、品質の抜け漏れが発生します。「要件定義で決めたのにテストしていない」「テストしたが根拠となる設計が存在しない」。そういう状況を防ぐための考え方が、Vモデルです。</p>


<h2 class="wp-block-heading"><span id="toc2">なぜ段階的なテストが必要なのか</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"><strong>問題1：原因の特定に時間がかかる</strong></p>


<p class="wp-block-paragraph">想定どおりに動作しなかった場合、どこが悪いのかを特定するのが困難になります。ネットワークの設定ミスなのか、サーバのパラメータが間違っているのか、アプリケーションの処理が悪いのか。複数の要素が絡み合うため、原因の切り分けに膨大な時間がかかります。</p>


<p class="wp-block-paragraph">本来であれば、単体テストで「このサーバの設定値は正しいか」を確認し、結合テストで「このサーバとあのサーバは正常に通信できるか」を確認する。問題が発生したときに、どの段階のどの要素が原因かを絞り込みやすい状態を作っておくことが重要です。</p>


<p class="wp-block-paragraph"><strong>問題2：たまたま動いて終わってしまう</strong></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>問題3：テスト項目が後から書けない</strong></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>


<figure id="70582d66-3417-46cc-9221-f5841750b367" class="wp-block-image"><a href="https://assets.st-note.com/img/1779345872-uVb52GTPpMrdYWFnvE1UgHkc.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779345872-uVb52GTPpMrdYWFnvE1UgHkc.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：どの工程で適切に不具合を摘出できたか、どこですり抜けたかを可視化するイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">品質報告の場では、T型マトリックスという管理表が使われることがあります。</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>


<h2 class="wp-block-heading"><span id="toc3">バックアップ4時間以内という要件を例に考える</span></h2>


<p class="wp-block-paragraph">ここで、具体的な例を見てみましょう。お客様と次のような非機能要件を合意したとします。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>DBおよびログのバックアップ時間は4時間以内とする</strong></p>
</blockquote>


<p class="wp-block-paragraph">一見すると、シンプルな要件に見えます。しかし、この要件を実現し、テストで確認するためには、複数の工程にわたる設計が必要です。</p>


<p class="wp-block-paragraph"><strong>要件定義の段階</strong></p>


<p class="wp-block-paragraph">この段階では「4時間以内」という目標を合意します。具体的な方式はまだ決まっていません。重要なのは、この数字が「何の性能要件か」を明確にしておくことです。性能・拡張性の要件であり、後工程のシステムテストで確認する項目です。</p>


<p class="wp-block-paragraph"><strong>基本設計の段階</strong></p>


<p class="wp-block-paragraph">要件を実現するための方式を決めます。</p>


<ul id="d3ae3679-d9c6-47e1-bb1c-a9755fe9ff11" class="wp-block-list">
	<li>バックアップ対象は何か（DBのみか、ログも含むか）</li>


	<li>取得先はどこか（サーバ内ディスクか、共有ストレージか、クラウドストレージか）</li>


	<li>取得経路はどうするか（専用VLANを用意するか、本番ネットワークを使うか）</li>


	<li>本番処理と同じ時間帯に実行しても問題ないか</li>
</ul>


<p class="wp-block-paragraph">これらを決めることで、システム構成と採用製品が固まります。</p>


<p class="wp-block-paragraph"><strong>詳細設計の段階</strong></p>


<p class="wp-block-paragraph">採用する製品やミドルウェアを前提に、具体的な処理内容を決めます。</p>


<ul id="18fb1ea4-a6bc-42c9-8269-8d65d47ceea5" class="wp-block-list">
	<li>バックアップジョブをどう構成するか</li>


	<li>どの順番で取得するか</li>


	<li>圧縮・暗号化はするか</li>


	<li>エラー時の再実行ロジックはどうするか</li>


	<li>失敗時の通知先はどこか</li>
</ul>


<p class="wp-block-paragraph"><strong>環境定義の段階</strong></p>


<p class="wp-block-paragraph">実際のパラメータを確定します。</p>


<ul id="20ec8437-9a5e-4981-a91b-372f8be3521c" class="wp-block-list">
	<li>バックアップ対象のフォルダパス・ファイルパス</li>


	<li>保存先のパス</li>


	<li>実行スケジュール</li>


	<li>保持世代数</li>


	<li>タイムアウト値</li>
</ul>


<p class="wp-block-paragraph"><strong>テストの段階</strong></p>


<p class="wp-block-paragraph">ここまで設計が積み上がって初めて、テスト項目が具体的に書けます。</p>


<ul id="a1b075bf-67ed-4755-9f75-88f55ffbff16" class="wp-block-list">
	<li>本当に4時間以内に完了するか</li>


	<li>対象ファイルに漏れはないか</li>


	<li>バックアップ失敗時にアラートが上がるか</li>


	<li>リストアできるか</li>


	<li>本番相当のデータ量でも時間内に終わるか</li>
</ul>


<p class="wp-block-paragraph">Vモデルを理解していないと、「要件に4時間以内と書いてある」「バックアップジョブは作った」「テストで何となく動いた」で終わってしまいます。しかし現場では、それでは足りません。</p>


<p class="wp-block-paragraph">ここまでは、Vモデルの基本的な考え方を整理しました。<br />
以降では、現場でこの考え方をどう使うか、工程ごとの留意点、よくある失敗パターン、運用テストの位置づけまで踏み込んで整理します。</p>

<div style="margin: 16px 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/n5dffd09153a8"> <span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">工程ごとの留意点・よくある失敗パターン・運用テストの位置づけの解説はこちら →</span> </a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/v-model-quality-assurance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>セキュリティ要件定義の進め方｜リスクアセスメントから対策・残存リスクを決める方法</title>
		<link>https://sys-univ.com/dev/security/</link>
					<comments>https://sys-univ.com/dev/security/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 09:05:24 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3333</guid>

					<description><![CDATA[はじめに セキュリティ要件を検討するとき、暗号化する、MFAを導入する、アクセス経路を制限する、ログを取得するといった、具体的な対策から考え始めてしまうことがあります。 もちろん、これらは重要なセキュリティ対策です。しか [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>はじめに</strong></p>
<p>セキュリティ要件を検討するとき、暗号化する、MFAを導入する、アクセス経路を制限する、ログを取得するといった、<strong>具体的な対策から考え始めてしまう</strong>ことがあります。</p>
<p>もちろん、これらは重要なセキュリティ対策です。しかし、対策そのものを先に並べても、</p>
<blockquote>
<p>なぜ、この対策が必要なのか<br />
どこまで対策する必要があるのか<br />
なぜ、この対策は実施しないのか</p>
</blockquote>
<p>までは決まりません。</p>
<p>同じ「個人情報を扱うシステム」でも、インターネットへ公開するシステムと閉域網だけで利用するシステムでは、想定する攻撃経路が異なります。24時間停止できない基幹システムと、数時間停止しても業務影響が小さい情報提供サイトでは、可用性に対する要求も変わります。</p>
<p>暗号化やMFAといった対策が一般的に有効だからといって、すべてのシステムに同じ方式・同じ水準で実装すればよいわけではありません。</p>
<p>必要なのは、最初に、</p>
<blockquote>
<p><strong>何を守るのか</strong><br />
<strong>何が起こり得るのか</strong><br />
<strong>その結果、どの程度の影響があるのか</strong></p>
</blockquote>
<p>を明らかにすることです。</p>
<p>その中心になるのが、<strong>リスクアセスメント</strong>です。</p>
<p>本記事では、セキュリティ全体の評価・確認を広く「セキュリティアセスメント」と呼び、その中核となる<strong>リスクアセスメント</strong>を、脅威・脆弱性・影響からリスクを分析・評価するプロセスとして扱います。</p>
<p>具体的には、次の4ステップでセキュリティ要件を導きます。</p>
<p><div id="attachment_3397" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3397" class="wp-image-3397 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3397" class="wp-caption-text">図　セキュリティ要件を導く4ステップ</p></div></p>
<ol type="1">
<li>脅威を分析する</li>
<li>脆弱性・設定不備・統制不足を分析する</li>
<li>リスクを分析・評価する</li>
<li>リスク対応を決め、必要な対策へ落とす</li>
</ol>
<p>このうち、<strong>STEP1〜3がリスクアセスメント</strong>です。STEP4では、その評価結果をもとにリスクを低減・回避・移転・保有のどれで扱うかを決め、必要なセキュリティ対策へ落とします。</p>
<blockquote>
<p><strong>リスクアセスメント<br />
→ リスク対応<br />
→ セキュリティ要件</strong></p>
</blockquote>
<p>という順序です。</p>
<p>4ステップに入る前には、何を評価対象にするのか、誰がどのセキュリティコントロールを担うのかを明確にするため、<strong>対象範囲と責任分界</strong>を整理します。要件を決めたあとも、構成変更や新しい脅威に応じてリスクを見直します。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="176" data-end="208"><strong data-start="176" data-end="208">ここで「セキュリティ要件定義」の位置づけを確認しておく必要があります。</strong></p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="334" data-end="410">本記事では、<strong data-start="340" data-end="400">RFPや提案書、見積前提、顧客のセキュリティ標準、業界基準など、一定の上位要求が既にインプットとして存在すること</strong>を前提としています。</p>
<p dir="auto" data-start="415" data-end="530">ただし、これらの要求は、そのまま実装できる粒度まで具体化されているとは限りません。「強固な認証を行う」「通信を暗号化する」「災害時の業務継続を検討する」といった要求を、対象システムの構成やリスクに合わせて具体化する必要があります。</p>
<p dir="auto" data-start="535" data-end="621"><strong data-start="544" data-end="618">本記事で扱うのは、こうした上位要求を入力として、リスクアセスメントを行い、個々のセキュリティ要件、責任分界、上位基準との差異、残存リスクまで具体化していく工程</strong>です。</p>
<p dir="auto" data-start="556" data-end="639"><strong data-start="556" data-end="639">RFP・上位要求<br data-start="566" data-end="569" /><br />
→ 提案段階で主要な実現可能性を検討<br data-start="589" data-end="592" /><br />
→ 要件定義で要求・差異・責任分界を具体化<br data-start="615" data-end="618" /><br />
→ 基本設計以降で実装方式を具体化</strong></p>
<p dir="auto" data-start="644" data-end="665">という流れを前提に、以降の説明を進めます。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="133" data-end="152">要件定義と設計の役割も分けて考えます。</p>
<p dir="auto" data-start="157" data-end="224"><strong data-start="157" data-end="224">要件定義で決めるのは「どのリスクに、どこまで対応するか」です。基本設計以降では、その要求をどの方式で実現するかを具体化します。</strong></p>
<p dir="auto" data-start="229" data-end="288"><strong data-start="229" data-end="288">具体的な対策を先に選ぶのではなく、リスクアセスメントによってリスクを明らかにし、その結果から必要な対策を導く。</strong></p>
<p dir="auto" data-start="293" data-end="321">これが、本記事で説明するセキュリティ要件定義の基本です。</p>
<p dir="auto" data-start="326" data-end="458">要件定義全体の位置づけや、RFP・提案内容・見積前提との関係は、次の記事で整理しています。</p>

<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</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 loading="lazy" decoding="async" 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" /></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.12</div></div></div></div></a>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">4ステップの前に、セキュリティ対策の範囲と責任分界を決める</a><ol><li><a href="#toc2" tabindex="0">システム構成を俯瞰して対象を決める</a></li><li><a href="#toc3" tabindex="0">クラウドでは「誰が構築するか」より「どの層で、誰がコントロールするか」を見る</a></li></ol></li><li><a href="#toc4" tabindex="0">リスクアセスメントで理解しておく「資産・脅威・脆弱性・リスク」</a><ol><li><a href="#toc5" tabindex="0">守る対象は機密性だけではない</a></li><li><a href="#toc6" tabindex="0">脅威と脆弱性を混同しない</a></li><li><a href="#toc7" tabindex="0">リスクは「脅威＋弱点＋影響」で考える</a></li></ol></li><li><a href="#toc8" tabindex="0">セキュリティアセスメントはどこまでやればよいのか</a><ol><li><a href="#toc9" tabindex="0">ゼロから項目を考えない</a></li></ol></li><li><a href="#toc10" tabindex="0">セキュリティ対策を導く4ステップ</a><ol><li><a href="#toc11" tabindex="0">STEP1　脅威を分析する</a><ol><li><a href="#toc12" tabindex="0">構成要素 × 脅威で検討漏れを減らす</a></li><li><a href="#toc13" tabindex="0">外部者だけでなく内部者・第三者も見る</a></li></ol></li><li><a href="#toc14" tabindex="0">STEP2　脆弱性・設定不備・統制不足を分析する</a><ol><li><a href="#toc15" tabindex="0">機能が存在しているだけでは十分ではない</a></li><li><a href="#toc16" tabindex="0">クラウドでは設定不備の観点が増える</a></li></ol></li><li><a href="#toc17" tabindex="0">STEP3　リスクを分析・評価する</a><ol><li><a href="#toc18" tabindex="0">現行対策を考慮して評価する</a></li><li><a href="#toc19" tabindex="0">発生可能性が低く、影響度が大きいリスク</a></li></ol></li><li><a href="#toc20" tabindex="0">STEP4　リスク対応を決め、セキュリティ対策へ落とす</a><ol><li><a href="#toc21" tabindex="0">リスク対応を決めて、初めて具体的な対策を選ぶ</a></li></ol></li></ol></li><li><a href="#toc22" tabindex="0">上位基準がある案件では「差異」をリスクとして評価する</a><ol><li><a href="#toc23" tabindex="0">差異は7段階で評価する</a></li><li><a href="#toc24" tabindex="0">RFPの「検討する」という要求も、実現可能性を評価して結論を出す</a></li><li><a href="#toc25" tabindex="0">同じ方式を採用できなくても、そこで検討を終わらせない</a></li><li><a href="#toc26" tabindex="0">「方式」ではなく、その対策が何を守ろうとしているのかを見る</a></li><li><a href="#toc27" tabindex="0">「準拠している」と書くことの方が危険な場合がある</a></li></ol></li><li><a href="#toc28" tabindex="0">2026年、AI・ゼロデイ時代にリスクアセスメントはどう変わるか</a><ol><li><a href="#toc29" tabindex="0">AIが攻撃工程そのものを高速化する</a></li><li><a href="#toc30" tabindex="0">脆弱性を「発見する側」でも速度が上がっている</a></li><li><a href="#toc31" tabindex="0">未知の脆弱性はアセスメントシートに列挙できない</a></li><li><a href="#toc32" tabindex="0">「侵入させない」だけではなく「侵入された後」まで設計する</a></li></ol></li><li><a href="#toc33" tabindex="0">実施しない対策と残存リスクの扱いを決める</a><ol><li><a href="#toc34" tabindex="0">残存リスクは「対策しなかったリスク」だけではない</a></li><li><a href="#toc35" tabindex="0">「バックアップがある」と「災害対策先で安全に業務継続できる」は違う</a></li><li><a href="#toc36" tabindex="0">上位基準との差異があれば、残存リスクまで明確にする</a></li><li><a href="#toc37" tabindex="0">「×」や「対象外」だけでは、設計判断を残したことにならない</a></li><li><a href="#toc38" tabindex="0">「実施しない」を技術者だけで決めない</a></li><li><a href="#toc39" tabindex="0">事故後に「なぜ実施しなかったのか」を説明できるか</a></li></ol></li><li><a href="#toc40" tabindex="0">アセスメント結果を設計・見積・RFPへ引き継ぐ</a><ol><li><a href="#toc41" tabindex="0">STEP4で導いた要件を後工程の条件へ変換する</a></li><li><a href="#toc42" tabindex="0">セキュリティ要件は見積条件でもある</a></li><li><a href="#toc43" tabindex="0">RFPへ渡すなら「対策」だけでなく「要求の背景」も残す</a></li><li><a href="#toc44" tabindex="0">未確定事項を「決まったこと」にしない</a></li></ol></li><li><a href="#toc45" tabindex="0">セキュリティアセスメントは一度実施して終わりではない</a><ol><li><a href="#toc46" tabindex="0">代替コントロールの前提が崩れれば、差異評価も変わる</a></li><li><a href="#toc47" tabindex="0">システム変更は、リスクの変更でもある</a></li><li><a href="#toc48" tabindex="0">脆弱性の「深刻度」だけでなく、実際に悪用されているかを見る</a></li><li><a href="#toc49" tabindex="0">脆弱性管理では「何日で判断し、何日で適用するか」も設計する</a></li><li><a href="#toc50" tabindex="0">再アセスメントする契機を決めておく</a></li></ol></li><li><a href="#toc51" tabindex="0">まとめ｜セキュリティ要件は、リスクから必要な対策を導く</a></li><li><a href="#toc52" tabindex="0">実務で使うためのアセスメントシートと差異評価</a></li><li><a href="#toc53" tabindex="0">参考資料</a></li></ol>
    </div>
  </div>

<h2 id="4ステップの前にセキュリティ対策の範囲と責任分界を決める"><span id="toc1">4ステップの前に、セキュリティ対策の範囲と責任分界を決める</span></h2>
<p>リスクアセスメントを始める前に、まず<strong>セキュリティ対策の対象範囲と責任分界</strong>を整理します。</p>
<p>どこまでを評価対象にするのか、誰がどのセキュリティコントロールを担うのかが曖昧なままだと、その後に脅威や脆弱性を洗い出しても検討漏れが生じます。</p>
<p>これは、後述するリスクアセスメントの前提条件を決める作業です。その前提を整理したうえで、「何を守るのか」「何から守るのか」を明確にしていきます。</p>
<h3 id="システム構成を俯瞰して対象を決める"><span id="toc2">システム構成を俯瞰して対象を決める</span></h3>
<p>Webシステムであれば、アプリケーションやサーバだけが対象ではありません。</p>
<p>利用端末、運用管理端末、ネットワーク、外部接続先、認証基盤、バックアップ、CI/CD、SaaSなど、対象システムに関係する構成要素を確認します。業務上重要な情報を紙で扱うのであれば、それも情報資産として評価対象になり得ます。</p>
<p>要件定義の段階では、詳細な物理構成図まで作る必要はありません。</p>
<p>主要な構成要素と接続関係、信頼境界、外部との接点が分かる程度の概念図を用意し、まだ決まっていない部分は想定であることを明記します。</p>
<p><div id="attachment_3394" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3394" class="wp-image-3394 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png" alt="主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム概念図の例" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3394" class="wp-caption-text">図　主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム構成例</p></div></p>
<p>この図のように、利用者からWeb/AP、DB、バックアップ、外部接続先までの経路だけでなく、運用管理端末からの管理経路も見えるようにしておくと、後の脅威分析で「どこから、どこへ到達できるのか」を考えやすくなります。</p>
<p>早い段階で実装方式まで固定しすぎると、後続の設計自由度を狭めます。</p>
<p>要件定義では、リスクを判断するために必要な粒度まで構成を見えるようにすることが目的です。</p>
<h3 id="クラウドでは誰が構築するかよりどの層で誰がコントロールするかを見る"><span id="toc3">クラウドでは「誰が構築するか」より「どの層で、誰がコントロールするか」を見る</span></h3>
<p>クラウドでは、マネージドサービスだから利用者側のセキュリティ検討対象外、とは考えられません。</p>
<p>クラウド事業者が物理設備やサービス基盤を管理していても、IAM権限、データ、ネットワーク公開範囲、暗号化設定、ログ、アプリケーションなどは利用者側に残ることがあります。</p>
<p>確認したいのは、</p>
<blockquote>
<p>このサービスを誰が作るのか</p>
</blockquote>
<p>だけではなく、</p>
<blockquote>
<p><strong>このリスクを、どの層で、誰がコントロールするのか</strong></p>
</blockquote>
<p>です。</p>
<p>例えば、外部からの攻撃を共通のCDNやWAF、ネットワーク基盤で十分に防御できるのであれば、同じ対策を個別システムごとに重複して実装する必要はありません。反対に、共通基盤では実現できない、あるいは構成上利用できない対策については、個別システム側で代替コントロールを検討します。</p>
<p>複数ベンダや共通基盤が関係する案件では、この責任分界が特に重要です。</p>
<p>端末は別ベンダ、ネットワークは共通基盤、アプリケーションは自チームという構成なら、セキュリティ要件ごとに実施主体が変わります。</p>
<p>責任分界が曖昧なままだと、</p>
<blockquote>
<p>相手が対応すると思っていた</p>
</blockquote>
<p>という「責任の空白」が生まれます。</p>
<p>アセスメントの開始時点で大まかな責任範囲を整理し、個々の対策を検討するときにも、必要に応じて担当主体を残しておきます。</p>
<h2 id="リスクアセスメントで理解しておく資産脅威脆弱性リスク"><span id="toc4">リスクアセスメントで理解しておく「資産・脅威・脆弱性・リスク」</span></h2>
<p>対象範囲と責任分界を整理したら、リスクアセスメントで使う基本用語を確認します。</p>
<h3 id="守る対象は機密性だけではない"><span id="toc5">守る対象は機密性だけではない</span></h3>
<p>情報セキュリティでは、機密性（Confidentiality）、完全性（Integrity）、可用性（Availability）の3つを基本的な観点として扱います。<strong data-start="455" data-end="490">この3つは、それぞれの英語の頭文字を取ってCIAと呼ばれます。</strong></p>
<p>これは、<strong>情報を守るには「漏れないこと」だけでは不十分だからです。</strong> 情報や処理結果が正しく保たれ、必要なときに利用できることまで含めて考える必要があります。</p>
<ul>
<li><strong>機密性</strong>：許可されていない人に情報を見せない</li>
<li><strong>完全性</strong>：情報や処理結果を不正に変更・破壊されない</li>
<li><strong>可用性</strong>：必要なときにシステムや情報を利用できる</li>
</ul>
<p>例えば、情報が外部へ漏れていなくても、不正に書き換えられていれば安全とはいえません。内容が正しくても、攻撃や障害によって必要なときに利用できなければ、業務を継続できません。</p>
<p>リスクアセスメントでは、この3つのうち<strong>何が失われるのか</strong>を見ながら、脅威と影響を整理します。</p>
<p>個人情報の漏洩は機密性の問題です。データの不正書き換えは完全性、DoS攻撃によるサービス停止は可用性に関係します。</p>
<p>災害や設備破壊も、可用性設計だけの話とは限りません。悪意ある破壊行為によってサービスを停止させるケースを含めれば、セキュリティの観点でも評価対象になります。</p>
<p>可用性とセキュリティを別々の非機能要求として整理する場合でも、実際のリスクは重なります。分類の境界より、<strong>どの事象によって何が失われるのか</strong>を見る方が重要です。</p>
<h3 id="脅威と脆弱性を混同しない"><span id="toc6">脅威と脆弱性を混同しない</span></h3>
<p>脅威は、情報資産へ悪影響を与える可能性がある事象や主体です。</p>
<p>例えば、不正アクセス、マルウェア、内部不正、DoS攻撃、災害、機器の破壊などが該当します。</p>
<p><strong>脆弱性は、脅威に利用される可能性のあるシステム・設定・運用上の弱点です。</strong></p>
<p>「機密性が低いこと」が脆弱性なのではありません。</p>
<p>例えば、</p>
<blockquote>
<p>外部の攻撃者が管理画面へ不正アクセスする</p>
</blockquote>
<p>という脅威に対して、</p>
<blockquote>
<p>MFAが設定されていない<br />
管理画面がインターネットから直接到達可能<br />
管理者権限が過大</p>
</blockquote>
<p>といった状態は、攻撃を成立させやすくする脆弱性・統制不足です。</p>
<p>ここでいう脆弱性は、ソフトウェアそのものの欠陥だけを指すわけではありません。</p>
<p>ソフトウェアの脆弱性には、<strong>CVE（Common Vulnerabilities and Exposures）<strong>という共通の識別番号が付与されて公表されるものがあります。CVEは脆弱性そのものの重大度を表す点数ではなく、既知の脆弱性を識別するための番号です。深刻度の評価には、0.0〜10.0で表す</strong>CVSS</strong>などが使われます。</p>
<p>セキュリティアセスメントでは、</p>
<p><strong>既知のソフトウェア脆弱性<br />
＋設定不備<br />
＋管理・運用上の統制不足</strong></p>
<p>まで見ます。</p>
<h3 id="リスクは脅威弱点影響で考える"><span id="toc7">リスクは「脅威＋弱点＋影響」で考える</span></h3>
<p>脅威や脆弱性を単独で並べても、対策の優先順位は決まりません。</p>
<p>例えば、管理画面にMFAがないという弱点があったとしても、その管理画面が外部から到達できるのか、どの情報へアクセスできるのか、侵害されたときにどの程度の影響が出るのかによってリスクは変わります。</p>
<p>実務では、</p>
<blockquote>
<p><strong>誰が、どこから、どの弱点を利用して、何を起こし、業務や情報資産にどのような影響を与えるのか</strong></p>
</blockquote>
<p>というシナリオとして整理すると、対策へつなげやすくなります。</p>
<p><div id="attachment_3396" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3396" class="wp-image-3396 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e.png 1536w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3396" class="wp-caption-text">図　脅威からリスク対応までの評価フローイメージ</p></div></p>
<p>同じ脅威でも、実際に起きたときの影響によってリスクは変わります。</p>
<p>例えば、インターネット上ですでに公開している情報が第三者に閲覧されても、機密性の観点では大きな損失にはつながりません。反対に、顧客の個人情報や認証情報が漏洩すれば、顧客への被害、法令対応、信用低下など大きな影響が生じる可能性があります。</p>
<p>重要なのは、<strong>情報が重要そうだから一律に強い対策をするのではなく、その情報が漏れた、改ざんされた、利用できなくなったときに何が起こるのか</strong>を考えることです。</p>
<p>リスクの大きさは、発生可能性と影響度の2軸などを使って評価します。評価尺度や判定基準は組織やプロジェクトによって異なります。</p>
<p>対策を実施してもリスクが完全にゼロになるとは限りません。この「対策後にも残るリスク」が<strong>残存リスク</strong>です。残存リスクについては後半で具体例とともに説明します。</p>
<p>具体的な評価方法はSTEP3で説明します。</p>
<h2 id="セキュリティアセスメントはどこまでやればよいのか"><span id="toc8">セキュリティアセスメントはどこまでやればよいのか</span></h2>
<p>すべてのシステムに、同じ深さのアセスメントを行う必要はありません。</p>
<p>アセスメントの深さは、システム規模だけでなく、<strong>扱う情報の重要度、外部公開の有無、停止が許容できる時間、特権IDの有無、外部システムとの接続、法令・業界基準</strong>などによって変わります。</p>
<p>例えば、社内向けの小規模な情報提供システムと、顧客の個人情報を扱い24時間稼働する外部公開システムでは、求められるアセスメントの深さは異なります。</p>
<p>後者では、構成要素や接続経路を細かく分け、管理経路や可用性、バックアップ、特権権限まで含めて評価する必要があります。前者では、重要な資産と主要な攻撃経路に絞って評価する方が現実的な場合もあります。</p>
<p>アセスメントそのものにも、品質、時間、コストのバランスがあります。重要なのは、すべてを同じ粒度で調べることではなく、<strong>そのシステムで大きな影響につながるリスクを見落とさない粒度を選ぶこと</strong>です。</p>
<p>このあと例にするのは、<strong>顧客情報を保持し、インターネットへ公開するWebシステム</strong>です。小規模な社内ツールよりも、外部からの攻撃経路、内部者の権限、データ保護、復旧などを広く見る必要があるケースとして扱います。</p>
<h3 id="ゼロから項目を考えない"><span id="toc9">ゼロから項目を考えない</span></h3>
<p>実務では、白紙から脅威や対策を洗い出すより、組織内で実績のあるアセスメントシートや公的なガイドラインをベースラインとして使う方が効率的です。</p>
<p>ただし、過去のシートをそのままコピーして終わりにはしません。</p>
<p>クラウド管理プレーン、SaaS、API、CI/CD、サプライチェーンなど、対象システム固有の構成や現在の脅威に合わせて観点を追加します。</p>
<p>実績のあるシートを再利用する価値は、対策例が並んでいることだけではありません。</p>
<p><strong>「どの構成要素に対して、どの脅威を見るのか」という分析軸を再利用できること</strong>に大きな価値があります。</p>
<p>対策には技術的対策だけでなく、物理的対策、組織的な統制、運用手順、教育などもあります。すべてをシステム機能で解決しようとせず、リスクに対して適切な手段を組み合わせます。</p>
<h2 id="セキュリティ対策を導く4ステップ"><span id="toc10">セキュリティ対策を導く4ステップ</span></h2>
<p>セキュリティ対策の範囲と責任分界を決め、アセスメントの深さを決めたら、具体的なリスクアセスメントへ進みます。</p>
<p>中心となるのは、はじめにで述べた次の4ステップです。</p>
<p><div id="attachment_3397-2" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3397-2" class="wp-image-3397 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3397-2" class="wp-caption-text">（再掲）図　セキュリティ要件を導く4ステップ</p></div></p>
<ol type="1">
<li>脅威を分析する</li>
<li>脆弱性・設定不備・統制不足を分析する</li>
<li>リスクを分析・評価する</li>
<li>リスク対応を決め、必要な対策へ落とす</li>
</ol>
<p>ここで重要なのは、最初からWAF、MFA、暗号化といった対策を並べないことです。</p>
<p>まず何が起こり得るのかを考え、その事象を成立させる弱点を確認し、発生した場合のリスクを評価します。その結果として必要な対策を決めます。</p>
<p><strong>対策からリスクを考えるのではなく、リスクから対策を導く。</strong></p>
<p>これが4ステップをこの順番で行う理由です。</p>
<p>以降では、<strong>顧客情報を保持する外部公開Webシステム</strong>を一つの例として、4ステップを順番に追っていきます。</p>
<p><div id="attachment_3394-2" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3394-2" class="wp-image-3394 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png" alt="主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム概念図の例" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3394-2" class="wp-caption-text">（再掲）図　主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム構成例</p></div></p>
<p>この図を、以降のSTEP1〜4で共通して使います。利用者からの通常経路だけでなく、運用管理端末からの管理経路、バックアップ、外部接続先までをアセスメント対象として見ます。</p>
<h3 id="step1-脅威を分析する"><span id="toc11">STEP1　脅威を分析する</span></h3>
<p>最初に、対象となる資産やシステムに対して、どのような脅威が存在するのかを洗い出します。</p>
<p>今回のWebシステムで守るべき重要な資産の一つは顧客情報です。</p>
<p>ここで、</p>
<blockquote>
<p>不正アクセス</p>
</blockquote>
<p>とだけ書いても、何を設計すればよいのか分かりません。</p>
<p>もう少し具体化して、</p>
<blockquote>
<p><strong>外部の攻撃者がWebシステムへ侵入し、顧客情報を参照・持ち出す</strong></p>
</blockquote>
<p>という攻撃シナリオとして考えます。</p>
<p>外部からの攻撃だけではありません。</p>
<p>正規の権限を持つ内部者についても、</p>
<blockquote>
<p><strong>内部者が運用管理端末から必要以上の権限を利用し、顧客情報を取得する</strong></p>
</blockquote>
<p>というシナリオが成立する可能性があります。</p>
<p>同じ「情報流出」でも、外部攻撃者による侵入と、内部者による不正利用では攻撃経路が異なるため、必要な対策も変わります。</p>
<h4 id="構成要素--脅威で検討漏れを減らす"><span id="toc12">構成要素 × 脅威で検討漏れを減らす</span></h4>
<p>脅威を網羅的に考えるために、実務で有効なのが<strong>構成要素と脅威を掛け合わせる方法</strong>です。</p>
<p>私が実際に利用していたアセスメントでも、脅威だけを一覧にするのではなく、サーバ、利用端末、運用管理端末、ネットワークなどの構成要素ごとに確認していました。</p>
<p>例えば、次のように考えます。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr class="header">
<th>構成要素</th>
<th>不正アクセスのシナリオ</th>
<th>情報流出のシナリオ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Web／AP</td>
<td>管理機能への不正ログイン</td>
<td>アプリケーション経由での顧客情報取得</td>
</tr>
<tr class="even">
<td>DB</td>
<td>DB管理権限の不正利用</td>
<td>DBデータの持ち出し</td>
</tr>
<tr class="odd">
<td>利用端末</td>
<td>他利用者の権限を使った操作</td>
<td>ダウンロードしたファイルの持ち出し</td>
</tr>
<tr class="even">
<td>運用管理端末</td>
<td>特権IDの不正利用</td>
<td>管理作業を利用した情報取得</td>
</tr>
<tr class="odd">
<td>ネットワーク</td>
<td>不正端末からの接続</td>
<td>通信の盗聴</td>
</tr>
</tbody>
</table>
</div>
<p>この表は、対策の要否を判定する表ではありません。</p>
<p><strong>「この構成要素について、この脅威を検討したか」を確認するための分析軸</strong>です。</p>
<p>例えばサーバ上の情報流出だけを考えていると、正規の操作で利用端末へダウンロードされたデータが持ち出されるシナリオを見落とす可能性があります。</p>
<p>実績のあるアセスメントシートを使う価値も、対策例が大量に書かれていることだけではありません。</p>
<p><strong>どの構成要素に対して、どの種類の脅威を見るのかという分析軸が既に整理されていること</strong>に価値があります。</p>
<h4 id="外部者だけでなく内部者第三者も見る"><span id="toc13">外部者だけでなく内部者・第三者も見る</span></h4>
<p>不正アクセスや情報流出では、外部攻撃者だけを想定すると検討が偏ります。</p>
<p>今回のWebシステムでも、</p>
<blockquote>
<p>外部攻撃者がインターネット経由で侵入する</p>
</blockquote>
<p>シナリオだけでなく、</p>
<blockquote>
<p>正規権限を持つ内部者が、その権限を不正に利用する</p>
</blockquote>
<p>シナリオを見る必要があります。</p>
<p>外部攻撃を防ぐネットワーク制御は、正規の経路からアクセスする内部者には効かない場合があります。</p>
<p>また、情報漏洩は悪意のある内部者だけが原因になるわけではありません。誤送付、誤操作、端末や書類の持ち出しなど、人的・運用上のミスからも発生します。</p>
<p><a rel="noopener" href="https://www.ppc.go.jp/news/press/2026/260707/" target="_blank">令和7年度（2025年度）個人情報保護委員会年次報告</a>では、行政機関等の漏えい等事案の発生原因について、誤交付、誤送付、誤廃棄、紛失といったヒューマンエラーが、国の行政機関等で54.8％、地方公共団体等で69.0％を占めています。</p>
<p>さらに、社員だけでなく、運用委託先や外部サービス事業者など正規の権限を持つ第三者、関係者を装って施設へ入り込む人物、利用者をだまして認証情報を取得するソーシャルエンジニアリングも考える必要があります。</p>
<p><strong>セキュリティ対策は、ファイアウォールや認証といったシステム上の対策だけでは完結しません。入退室管理、権限付与・剥奪、操作記録、教育、承認手続きなど、人と運用を含めて考えます。</strong></p>
<p>STEP1の目的は、脅威名を数多く挙げることではありません。</p>
<p><strong>誰が、どこから、どの資産に、どのような影響を与える可能性があるのかをシナリオとして整理すること</strong>です。</p>
<h3 id="step2-脆弱性設定不備統制不足を分析する"><span id="toc14">STEP2　脆弱性・設定不備・統制不足を分析する</span></h3>
<p>次に、STEP1で整理したシナリオを成立させる弱点を確認します。</p>
<p>今回の、</p>
<blockquote>
<p>外部攻撃者がWebシステムへ侵入し、顧客情報を取得する</p>
</blockquote>
<p>というシナリオを考えてみます。</p>
<p>例えば、</p>
<ul>
<li>管理機能へインターネットから到達できる</li>
<li>MFAが設定されていない</li>
<li>一つの管理者IDに必要以上の権限がある</li>
</ul>
<p>といった状態があれば、攻撃シナリオを成立させやすくなります。</p>
<p>内部者による情報持ち出しであれば、</p>
<ul>
<li>運用管理者に必要以上の参照権限がある</li>
<li>操作ログを取得していない</li>
<li>重要な操作を後から追跡できない</li>
</ul>
<p>といった統制不足が問題になります。</p>
<p>ここでいう「脆弱性」は、ソフトウェアそのものの欠陥だけを意味しません。</p>
<p>先ほど説明したように、既知のソフトウェア脆弱性にはCVEという識別番号が付くものがあります。実務では、それらの既知脆弱性に加えて、</p>
<p><strong>ソフトウェアの脆弱性<br />
＋設定不備<br />
＋管理・運用上の統制不足</strong></p>
<p>まで見ます。</p>
<p>例えばソフトウェア脆弱性についても、CVSSが高いから機械的にパッチを当てるのではなく、対象システムでその脆弱性が実際に悪用可能か、対象機能を利用しているか、外部から到達できるか、既存の対策があるかまで確認してリスクを評価します。</p>
<h4 id="機能が存在しているだけでは十分ではない"><span id="toc15">機能が存在しているだけでは十分ではない</span></h4>
<p>例えば操作ログを取得する機能があっても、必要な操作が記録されていなければ意味がありません。</p>
<p>ログを取得していても、異常を検知する必要があるのに誰も確認していなければ、早期発見には使えません。</p>
<p>アクセス権を適切に設定していても、異動や退職に伴う権限の棚卸しが行われなければ、時間の経過とともに不要な権限が残ります。</p>
<p>セキュリティ対策では、</p>
<blockquote>
<p>機能があるか</p>
</blockquote>
<p>だけでなく、</p>
<blockquote>
<p><strong>その機能によって必要な統制が実際に成立しているか</strong></p>
</blockquote>
<p>まで確認します。</p>
<h4 id="クラウドでは設定不備の観点が増える"><span id="toc16">クラウドでは設定不備の観点が増える</span></h4>
<p>クラウドでは、クラウド事業者が基盤を管理していても、利用者が設定するセキュリティ項目は数多く残っています。</p>
<p>今回のWebシステムをAWS上に構築するなら、IAMの権限、ネットワーク公開範囲、暗号化、ログ取得などは利用者側の設計対象になります。</p>
<p>クラウドサービス自体にソフトウェア脆弱性がなくても、利用者側の設定によって攻撃経路が作られる可能性があります。</p>
<p>代表的なのがIAMなどの権限設定です。「最小権限にする」だけではなく、<strong>誰に（Principal）、どの操作を（Action）、どのリソースまで（Resource）、どの条件で（Condition）許可しているのか</strong>を確認します。さらに、ロールを引き受けられる主体、認証情報の扱い、重要操作のログまで含めて見ます。</p>
<p>権限が過大であれば、一つの認証情報や実行環境が侵害されたときに、攻撃者が到達できる範囲も広がります。</p>
<p>オンプレミス向けの古いアセスメントシートをそのまま流用すると、OSやネットワーク機器は細かく確認しているのに、IAMやクラウド管理コンソールのような<strong>管理プレーン側の観点が抜ける</strong>ことがあります。</p>
<p>実績のあるシートはベースラインとして使いながら、対象システムの構成に合わせて更新する必要があります。</p>
<h3 id="step3-リスクを分析評価する"><span id="toc17">STEP3　リスクを分析・評価する</span></h3>
<p>ここまでで、今回のシナリオは次のように整理できます。</p>
<blockquote>
<p><strong>資産</strong>：顧客情報<br />
<strong>脅威</strong>：外部攻撃者による不正アクセス<br />
<strong>脆弱性・統制不足</strong>：管理機能へ外部から到達可能、MFA未設定、権限過大<br />
<strong>想定される事象</strong>：管理者権限を不正利用され、顧客情報が取得される<br />
<strong>リスク</strong>：顧客情報の漏洩</p>
</blockquote>
<p>ここから、そのリスクがどの程度重要なのかを評価します。</p>
<p>基本となるのが、<strong>発生可能性</strong>と<strong>影響度</strong>です。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr class="header">
<th>想定リスク</th>
<th style="text-align: right;">発生可能性</th>
<th style="text-align: right;">影響度</th>
<th style="text-align: right;">リスク評価</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>管理機能への侵入による顧客情報の大量漏洩</td>
<td style="text-align: right;">中</td>
<td style="text-align: right;">高</td>
<td style="text-align: right;">高</td>
</tr>
<tr class="even">
<td>リージョン障害によるサービスの長期停止</td>
<td style="text-align: right;">低</td>
<td style="text-align: right;">高</td>
<td style="text-align: right;">中※</td>
</tr>
<tr class="odd">
<td>公開情報ページの短時間停止</td>
<td style="text-align: right;">中</td>
<td style="text-align: right;">低</td>
<td style="text-align: right;">低</td>
</tr>
</tbody>
</table>
</div>
<p>※発生可能性と影響度からリスク評価を決める基準は、組織やプロジェクトによって異なります。</p>
<p>この表で重要なのは、High／Middle／Lowという文字そのものではありません。</p>
<p><strong>なぜその評価になったのかを説明できること</strong>です。</p>
<h4 id="現行対策を考慮して評価する"><span id="toc18">現行対策を考慮して評価する</span></h4>
<p>次に、STEP1で挙げたもう一つのシナリオである、<strong>内部者による顧客情報の持ち出し</strong>を考えてみます。</p>
<p>仮に運用管理端末が自由に利用できるのであれば、発生可能性は高く評価されるかもしれません。</p>
<p>しかし、</p>
<ul>
<li>運用管理端末が限定されている</li>
<li>利用者が限定されている</li>
<li>操作記録を取得している</li>
</ul>
<p>といった現行対策が既に存在するのであれば、その効果を考慮します。</p>
<p>ここを無視すると、アセスメントシート上では常に最悪条件でリスクを評価することになり、必要以上の対策を導きやすくなります。</p>
<p>反対に、</p>
<blockquote>
<p>対策があるから安全</p>
</blockquote>
<p>と評価するだけでも不十分です。</p>
<p>その対策によって、</p>
<blockquote>
<p>発生可能性がどこまで下がったのか<br />
発生した場合の影響は変わるのか<br />
まだ何が残っているのか</p>
</blockquote>
<p>を見る必要があります。</p>
<h4 id="発生可能性が低く影響度が大きいリスク"><span id="toc19">発生可能性が低く、影響度が大きいリスク</span></h4>
<p>実務で判断が難しいのが、</p>
<blockquote>
<p>発生可能性は低いが、発生すれば影響が非常に大きい</p>
</blockquote>
<p>リスクです。</p>
<p>例えばリージョン全体の長期停止や、バックアップを含むデータの完全喪失などです。</p>
<p>この場合、</p>
<blockquote>
<p>発生可能性が低いから対策しない</p>
</blockquote>
<p>とも、</p>
<blockquote>
<p>影響が甚大だから最大限の対策を必ず行う</p>
</blockquote>
<p>とも機械的には決められません。</p>
<p>ただし、対策水準をゼロから自由に決めるわけではありません。まず、RFPや適用基準、顧客標準などの上位要求を確認します。</p>
<p>そのうえで、上位要求だけでは決まらない部分について、システムの重要度、復旧可能性、既存対策、追加対策によって得られるリスク低減効果や費用を踏まえて判断します。上位要求どおりに実現できない場合は、その差異によって何ができなくなり、どのリスクが残るのかまで評価します。</p>
<p>STEP4では、こうした評価結果をもとに、そのリスクを低減・回避・移転・保有のどれで扱うかを決めます。リージョン障害のような可用性リスクについては、後述する残存リスクの節で具体例を示します。</p>
<h3 id="step4-リスク対応を決めセキュリティ対策へ落とす"><span id="toc20">STEP4　リスク対応を決め、セキュリティ対策へ落とす</span></h3>
<p>リスクを評価したら、そのリスクをどのように扱うかを決めます。</p>
<p>代表的なリスク対応は、低減、回避、移転、保有の4種類です。</p>
<p id="低減"><strong>低減</strong></p>
<p>セキュリティ対策を実施し、リスクの発生可能性や影響度を小さくします。</p>
<p>今回の、</p>
<blockquote>
<p>外部から管理機能へ侵入され、顧客情報を取得される</p>
</blockquote>
<p>というリスクであれば、アクセス経路の限定、MFA、最小権限化、操作ログ取得などが候補になります。</p>
<p id="回避"><strong>回避</strong></p>
<p>リスクを発生させる活動自体をやめます。</p>
<p>例えば、インターネット公開によるリスクが許容できないため、サービスをインターネットへ公開しないという判断です。</p>
<p>インターネット公開を続けながらWAFなどを利用するのであれば、リスクそのものは残るため「低減」です。</p>
<p id="移転"><strong>移転</strong></p>
<p>契約や保険などによって、リスクによる金銭的な影響の一部を第三者へ移します。</p>
<p>ただし、保険へ加入したり外部事業者を利用したりしても、<strong>事故発生時の顧客や監督機関への説明責任まで移転できるわけではありません。</strong></p>
<p>クラウドサービスを利用する場合も、単純に「クラウド事業者へリスクを移転した」と考えるのではなく、<strong>事業者が担う範囲と利用者に残る範囲を責任分界に沿って切り分けます。</strong></p>
<p>基盤設備の管理などクラウド事業者が担うリスクもあれば、IAM、データ、アプリケーション、利用者側の設定など、利用者に残るリスクもあります。</p>
<p id="保有"><strong>保有</strong></p>
<p>リスクが残ることを理解したうえで、追加対策を行わず受け入れます。</p>
<p>これは、</p>
<blockquote>
<p>対策し忘れた</p>
</blockquote>
<p>こととは全く異なります。</p>
<p>リスクを認識し、既存対策、発生可能性、影響度、追加対策による効果や費用を評価したうえで、</p>
<blockquote>
<p>この水準の残存リスクなら許容する</p>
</blockquote>
<p>と判断することです。</p>
<p>例えば、DMZに配置したWebサーバが一般に公開されている情報だけを提供し、機密情報を保持せず、内部システムへの接続経路も持たないとします。さらに、侵害された場合でも初期状態から再構築できるようにしていれば、情報漏洩や内部システムへの横展開による影響は限定できます。</p>
<p>それでも、Webページの改ざんや一時的なサービス停止といったリスクは残ります。追加対策によるリスク低減効果と構築・運用コストを比較した結果、そこまでの対策は行わず、この残存リスクを保有する判断もあり得ます。</p>
<p><strong>リスクを保有するとは、「侵害されても構わない」と考えることではありません。侵害された場合の影響を把握し、既存対策で影響を限定したうえで、追加対策までは行わないと判断することです。</strong></p>
<p>この判断は技術者だけで完結させず、残るリスクを前提にどの方式で進めるのかを関係者で確認します。</p>
<h4 id="リスク対応を決めて初めて具体的な対策を選ぶ"><span id="toc21">リスク対応を決めて、初めて具体的な対策を選ぶ</span></h4>
<p>ここが4ステップの最終地点です。</p>
<p>今回のWebシステムについて、</p>
<blockquote>
<p>顧客情報漏洩のリスクを「低減」する</p>
</blockquote>
<p>と決めただけでは、まだ設計は終わっていません。</p>
<p>次に、</p>
<blockquote>
<p>どのリスクを<br />
どのコントロールによって<br />
どこまで下げるのか</p>
</blockquote>
<p>を決めます。</p>
<p>例えば、</p>
<ul>
<li>管理機能へのアクセス経路を限定する</li>
<li>管理者認証にMFAを要求する</li>
<li>管理者権限を必要最小限にする</li>
<li>重要操作を記録・監視する</li>
</ul>
<p>といったセキュリティ要件が導かれます。</p>
<p>AWSを利用するのであれば、ここで初めてIAMやSecurity Groupなどの具体的なサービスや機能が実装候補として登場します。</p>
<p>順番は、</p>
<blockquote>
<p>AWSにこの機能がある<br />
↓<br />
使っておこう</p>
</blockquote>
<p>ではありません。</p>
<blockquote>
<p>リスクを評価する<br />
↓<br />
リスク対応を決める<br />
↓<br />
必要なセキュリティコントロールを決める<br />
↓<br />
それを実現する方式・サービスを選ぶ</p>
</blockquote>
<p>です。</p>
<p><strong>AWSやサードパーティが提供する機能は、セキュリティ対策を実現するための手段です。機能を使うこと自体が目的ではありません。</strong></p>
<p>同じリスクでも、AWSネイティブの機能、サードパーティ製品、共通ネットワーク側の対策、運用統制など、複数の実現方式があります。重要なのは製品名ではなく、<strong>必要なセキュリティコントロールを満たし、責任分界や運用まで含めて成立すること</strong>です。</p>
<p>セキュリティ製品やクラウドサービスは、リスクアセスメントの出発点ではなく、<strong>設計判断の結果として選ばれるもの</strong>です。</p>
<h2 id="上位基準がある案件では差異をリスクとして評価する"><span id="toc22">上位基準がある案件では「差異」をリスクとして評価する</span></h2>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="108" data-end="180">本記事で想定する案件では、法令や業界基準、組織のセキュリティ標準、顧客の標準仕様、上位システムの要求など、既に一定の上位基準が与えられています。</p>
<p dir="auto" data-start="185" data-end="312">ただし、これらはすべて同じ扱いではありません。<strong data-start="208" data-end="248">法令や契約上の義務は、リスクが低いという理由だけで不適用にはできません。</strong> 業界基準、顧客標準、組織内部の標準についても、差異を認める場合には、正式な例外承認や関係者との合意が必要になることがあります。</p>
<p dir="auto" data-start="317" data-end="388">まず、<strong data-start="326" data-end="381">その要求が何を根拠としているのか、変更や例外が認められるのか、認められる場合にはどの手続きが必要なのか</strong>を確認します。</p>
<p dir="auto" data-start="393" data-end="457">そのうえで重要なのが、<strong data-start="404" data-end="450">上位基準があるからといって、対象システムのリスクアセスメントが不要になるわけではない</strong>という点です。</p>
<p dir="auto" data-start="462" data-end="465">まず、</p>
<blockquote data-start="470" data-end="505">
<p dir="auto" data-start="472" data-end="505"><strong data-start="472" data-end="505">このシステムには、どのような脅威・脆弱性・リスクがあるのか</strong></p>
</blockquote>
<p dir="auto" data-start="510" data-end="517">を評価します。</p>
<p dir="auto" data-start="522" data-end="561">次に、上位基準が要求する対策と、本システムで採用する実現方式が異なる場合には、</p>
<blockquote data-start="566" data-end="607">
<p dir="auto" data-start="568" data-end="607"><strong data-start="568" data-end="607">その差異によって、新たなリスクが生じないか、既存のリスクが増加しないか</strong></p>
</blockquote>
<p dir="auto" data-start="612" data-end="619">を評価します。</p>
<p dir="auto" data-start="624" data-end="629">考え方は、</p>
<blockquote data-start="634" data-end="681">
<p dir="auto" data-start="636" data-end="681"><strong data-start="636" data-end="681">対象システムのリスクアセスメント<br data-start="654" data-end="657" /><br />
＋<br data-start="662" data-end="665" /><br />
上位基準との差異評価</strong></p>
</blockquote>
<p dir="auto" data-start="686" data-end="689">です。</p>
<p dir="auto" data-start="694" data-end="784">上位基準を単純に「準拠／非準拠」で確認するのではなく、<strong data-start="721" data-end="776">対象システム固有のリスクを評価したうえで、基準との差異がリスクにどのような影響を与えるのかまで確認する</strong>ことが重要です。</p>
<p dir="auto" data-start="694" data-end="784">○×チェックするだけでは、この差異によるリスク評価が抜けてしまいます。</p>
<h3 id="差異は7段階で評価する"><span id="toc23">差異は7段階で評価する</span></h3>
<p>上位基準で要求されている方式を、そのまま採用できないことがあります。</p>
<p>端末を複数システムで共用している、認証基盤を共通化している、ネットワークや端末を別の組織・ベンダが管理している、既存システムとの接続方式を変更できない、といった制約があるからです。</p>
<p>私が実際の案件で使っていたシートでも、単純な「準拠／非準拠」だけではなく、<strong>上位基準との差異の有無と、その差異に対する評価を別に管理していました。</strong></p>
<p>評価の流れを図にすると、次のようになります。</p>
<p><div id="attachment_3402" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3402" class="wp-image-3402 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c.png 1448w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3402" class="wp-caption-text">図　上位基準と本システムの差異を評価する流れ</p></div></p>
<p>&nbsp;</p>
<p>この形にすると、「基準と違う」という事実を、セキュリティ要件定義上の判断へ変換できます。</p>
<h3 id="rfpの検討するという要求も実現可能性を評価して結論を出す"><span id="toc24">RFPの「検討する」という要求も、実現可能性を評価して結論を出す</span></h3>
<p>RFPでは、実現方式や実現可能性が確定していない要求について、</p>
<blockquote>
<p>監査ログの長期保管を検討する</p>
</blockquote>
<p>のように、「実現すること」ではなく「検討すること」と記載される場合があります。</p>
<p>この場合、提案段階で複数案を比較し、要件定義で実施範囲を確定します。例えば、</p>
<ul>
<li>すべてのログを長期間オンラインで検索できる状態にする</li>
<li>直近分だけをオンラインで保持し、古いログは低コストの保管領域へ移す</li>
<li>認証や特権操作など、監査上重要なログだけを長期保管する</li>
</ul>
<p>といった方式を比較できます。</p>
<p>保管期間を長くし、すべてのログを即時検索できるようにすれば調査性は高まりますが、保存容量、検索基盤、運用コストも増えます。逆に保管範囲を絞りすぎれば、インシデント発生時に必要な証跡が残っていない可能性があります。</p>
<p>そこで、法令・契約・上位基準で必須となる保存期間を確認したうえで、<strong>どのログを、どの期間、どの状態で保持すれば必要な調査・監査を成立させられるか</strong>を評価します。</p>
<p>検討の結果、例えば「認証・特権操作・重要データへのアクセスログは長期保管し、大量に出力されるデバッグログは短期間とする」といった結論にすることがあります。</p>
<p>これは「検討しなかった」のではありません。複数案の効果とコストを比較し、要求の目的を満たす範囲を要件として確定した、という提案・要件定義上の判断です。</p>
<h3 id="同じ方式を採用できなくてもそこで検討を終わらせない"><span id="toc25">同じ方式を採用できなくても、そこで検討を終わらせない</span></h3>
<p>例えば、上位基準で、</p>
<blockquote>
<p>ログの改ざんを即時に検知し、異常があれば通知する</p>
</blockquote>
<p>という要求があったとします。</p>
<p>対象システムでも同じ仕組みを導入したいところですが、端末を他システムと共用しており、その端末は別の組織やベンダの管理下にあるとします。</p>
<p>上位基準と同じ改ざん検知を実現するには、端末側へのエージェント導入や設定変更が必要ですが、自システムの判断だけでは変更できません。</p>
<p>このような場合に、</p>
<blockquote>
<p>上位基準と同じ方式を実現できないので非準拠</p>
</blockquote>
<p>として終わらせてはいけません。</p>
<p>確認するのは、</p>
<blockquote>
<p><strong>同じ方式を採用できないことで、何のリスクが増えるのか</strong></p>
</blockquote>
<p>です。</p>
<p>この例なら、ログが改ざんされた場合の発見が遅れ、不正操作の追跡やインシデント発生時の原因究明が困難になる可能性があります。</p>
<p>そこで、</p>
<ul>
<li>管理作業を行える経路や端末を限定する</li>
<li>管理者の操作を記録する</li>
<li>通常とは異なる時間帯などの操作を検知する</li>
<li>インシデント発生後に操作内容を追跡できる状態にする</li>
</ul>
<p>といった別のコントロールによって、増加するリスクをどこまで低減できるかを評価します。</p>
<p>ただし、代替コントロールを入れたからといって、上位基準との差異そのものが消えるわけではありません。</p>
<p>即時検知の範囲や検知精度などに違いが残るのであれば、それを<strong>残存リスク</strong>として明確にします。</p>
<p>最終的には、</p>
<blockquote>
<p>代替コントロールを実施したうえで、この残存リスクを許容できるか</p>
</blockquote>
<p>を判断します。</p>
<h3 id="方式ではなくその対策が何を守ろうとしているのかを見る"><span id="toc26">「方式」ではなく、その対策が何を守ろうとしているのかを見る</span></h3>
<p>上位基準には、具体的なセキュリティ方式まで指定されている場合があります。</p>
<p>例えば、</p>
<blockquote>
<p>生体認証を使用する</p>
</blockquote>
<p>という要求があるとします。</p>
<p>ここで確認したいのは、</p>
<blockquote>
<p>生体認証を導入しているか</p>
</blockquote>
<p>だけではありません。</p>
<p>なぜ生体認証を要求しているのかまで遡ります。</p>
<p>目的が、</p>
<blockquote>
<p>本人以外による認証突破の可能性を下げる</p>
</blockquote>
<p>ことであれば、本システムが既に共通認証基盤を経由し、利用端末やアクセス経路も限定されている場合、生体認証をさらに追加したときに<strong>どの程度の追加的なリスク低減効果が得られるのか</strong>を評価します。</p>
<p>追加効果が大きければ採用すべきでしょう。</p>
<p>既存の認証・端末・経路制御によって対象リスクが十分に低減されており、生体認証を加えてもリスク低減効果が限定的なのであれば、採用しないという判断もあり得ます。</p>
<p>ただし、</p>
<blockquote>
<p>別の認証方式があるから同等だろう</p>
</blockquote>
<p>と根拠なく判断することもできません。</p>
<p>比較するのは、認証方式の名称や機能数ではありません。</p>
<p><strong>どの攻撃シナリオに対して、どの程度リスクを低減できるのか</strong>です。</p>
<p>上位基準があっても、STEP1〜4で説明してきたリスクアセスメントの考え方は変わりません。</p>
<h3 id="準拠していると書くことの方が危険な場合がある"><span id="toc27">「準拠している」と書くことの方が危険な場合がある</span></h3>
<p>上位基準と異なる方式を採用すること自体が、直ちに問題になるわけではありません。</p>
<p>システム構成や責任分界が異なれば、同じ対策をそのまま適用できないことはあります。</p>
<p>むしろ問題なのは、</p>
<blockquote>
<p><strong>実際には差異があるのに、その差を評価しないまま「上位基準に準拠している」と扱うこと</strong></p>
</blockquote>
<p>です。</p>
<p>差異を明確にしておけば、</p>
<blockquote>
<p>なぜ同じ方式にできなかったのか<br />
何のリスクが増えるのか<br />
どの代替コントロールを採用したのか<br />
それでも何が残るのか<br />
その前提で、どの方式で進めると合意したのか</p>
</blockquote>
<p>を説明できます。</p>
<p>差異を認識していなければ、その説明自体ができません。</p>
<p><strong>セキュリティ標準への準拠とは、書かれている対策を機械的にコピーすることではありません。基準が求めるリスク低減の目的を理解し、本システムとの差異を評価したうえで、必要な対策と残存リスクを明確にすることが重要です。</strong></p>
<p>また、ここで行った差異評価は永久に有効なものではありません。上位基準が改定されることもあれば、「端末を限定している」「操作を記録している」といった代替コントロールの前提が運用中に崩れることもあります。</p>
<p><strong>差異評価は合意して終わりではなく、基準の改定と代替コントロールの実効性を継続的に確認する必要があります。</strong></p>
<p>この点は、後述する継続的なリスクアセスメントでも改めて扱います。</p>
<h2 id="2026年aiゼロデイ時代にリスクアセスメントはどう変わるか"><span id="toc28">2026年、AI・ゼロデイ時代にリスクアセスメントはどう変わるか</span></h2>
<p>ここまで説明してきたリスクアセスメントの考え方は、AIが普及する以前から使われてきたものです。</p>
<p>では、AIによって脆弱性の発見や攻撃作業が高速化している2026年現在、セキュリティ要件定義や設計の考え方そのものを大きく変える必要があるのでしょうか。</p>
<p>結論は、<strong>基本的な原則は変わりません。</strong></p>
<p>変化しているのは、</p>
<blockquote>
<p><strong>脆弱性を発見する速度、攻撃へ利用する速度、攻撃を並列化できる規模</strong></p>
</blockquote>
<p>です。</p>
<p>「侵入される可能性を前提に多層防御する」という考え方をAIが生み出したわけではありません。</p>
<p>ゼロデイ攻撃、ランサムウェア、サプライチェーン攻撃などを考えれば、以前から「既知の脆弱性をすべて修正すれば安全になる」という前提は成立していませんでした。</p>
<p>AIは、この前提をさらに厳しいものにしています。</p>
<h3 id="aiが攻撃工程そのものを高速化する"><span id="toc29">AIが攻撃工程そのものを高速化する</span></h3>
<p>2025年11月、Anthropicは「GTG-1002」と名付けたサイバースパイ活動について<a rel="noopener" href="https://www.anthropic.com/news/disrupting-AI-espionage" target="_blank">報告しました</a>。</p>
<p>Anthropicによれば、攻撃者はClaude Codeを利用し、偵察、脆弱性探索、攻撃試行、認証情報の取得、データ分析など複数の工程をAIに実行させていました。同社は、攻撃作業の80〜90％をAIが実行し、人間は重要な判断に関与していたと分析しています。</p>
<p>ただし、これは「AIが人間なしで高度な攻撃を完結させた」という意味ではありません。Anthropic自身も、Claudeが誤った情報を返す場面があり、人間による検証が必要だったと報告しています。<a rel="noopener" href="https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" target="_blank">外部研究者からも</a>、AIが従来にない攻撃手法そのものを発明したとまでは確認できないという慎重な見方が出ています。</p>
<p>ここで重要なのは「何％が自律だったか」ではありません。</p>
<p><strong>AIが攻撃を完全に自律化したというより、人間が時間をかけて行っていた偵察、脆弱性探索、攻撃試行、結果分析などを高速化・省力化した点</strong>です。</p>
<p>人間の作業時間が制約になっていた工程を短時間で繰り返せるようになれば、従来より多くの対象を並行して探索できます。</p>
<h3 id="脆弱性を発見する側でも速度が上がっている"><span id="toc30">脆弱性を「発見する側」でも速度が上がっている</span></h3>
<p>AIによる変化は攻撃側だけではありません。</p>
<p>2026年2月、AnthropicはClaude Opus 4.6を利用したOSSの脆弱性調査で、<a rel="noopener" href="https://www.anthropic.com/research/zero-days" target="_blank"><strong>500件を超える高深刻度の脆弱性を発見・検証した</strong></a>と報告しました。</p>
<p>主要なOSSの中には、異常な入力を大量に自動投入して不具合を探すファジングなどの自動検査を、長年継続して受けてきたものがあります。それでもAIを使った解析によって新たな脆弱性が発見されました。</p>
<p>重要なのは手法名そのものではなく、<strong>従来の自動検査とは異なる方法でもコードを調べられるようになり、脆弱性探索の速度と範囲が広がっていること</strong>です。</p>
<p>ここで「500件すべてがゼロデイだった」と読むべきではありません。</p>
<p>Anthropicは、報告前に各バグを検証し、初期の調査では自社のセキュリティ研究者が脆弱性を確認してパッチを作成し、件数が増えた後は外部の人間のセキュリティ研究者も検証とパッチ開発に加わったと説明しています。</p>
<p>AIが候補を大量に発見できても、内容の確認、修正、テスト、リリースには人間や開発チームの作業が残ります。</p>
<p>発見量が増えるほど、</p>
<blockquote>
<p>発見する<br />
↓<br />
検証する<br />
↓<br />
修正する<br />
↓<br />
テストする<br />
↓<br />
本番へ適用する</p>
</blockquote>
<p>という防御側の処理能力がボトルネックになります。</p>
<p>Anthropicも、従来の90日程度の脆弱性開示・修正サイクルが、LLMによる発見量と速度に対して維持しにくくなる可能性を指摘しています。</p>
<p>発見と公開の速度が上がるのであれば、<strong>緊急パッチの影響判断や適用までのリードタイムを、運用開始前に決めておく重要性も高まります。</strong></p>
<p>CVSSの数値だけでなく、実際の悪用実績や自システムでの利用状況、攻撃経路、パッチ適用の影響などを踏まえて判断します。具体的な判断基準と意思決定プロセスは、後半の脆弱性管理で説明します。</p>
<h3 id="未知の脆弱性はアセスメントシートに列挙できない"><span id="toc31">未知の脆弱性はアセスメントシートに列挙できない</span></h3>
<p>ここで、この記事のSTEP1が効いてきます。</p>
<p>未知の脆弱性を、</p>
<blockquote>
<p>CVE-XXXX-XXXX</p>
</blockquote>
<p>のようにアセスメントシートへ事前に書くことはできません。</p>
<p>しかし、<strong>未知の脆弱性が悪用された場合に、どのような攻撃経路が成立するか</strong>は考えることができます。</p>
<p>ここまで例として使ってきた顧客情報を保持するWebシステムなら、次のような攻撃経路を考えます。</p>
<p><div id="attachment_3404" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3404" class="wp-image-3404 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3404" class="wp-caption-text">図　侵入から情報持ち出しまでの攻撃経路と、各段階に配置する防御ポイント</p></div></p>
<p>&nbsp;</p>
<p>最初の侵入を完全に防げなかった場合でも、攻撃経路の途中で止めることはできます。</p>
<p>侵入後に不要な管理権限まで取得されないよう最小権限化し、認証情報を取得されても権限昇格や横展開が容易に成立しないよう、通信経路や信頼関係を制限します。</p>
<p>DBへ到達する段階では、<strong>通信経路と権限の両方を絞ります。</strong></p>
<p>例えば、Web/APとDBの間だけ必要な通信を許可するネットワークセグメントを設け、利用者側のネットワークからDBへ直接到達できないようにします。運用管理についても、管理用LANや踏み台などの管理経路からだけアクセスできる端末・サーバを分離します。</p>
<p>さらに、アプリケーションや管理者に与えるDB権限を必要最小限にし、不審なアクセスや重要操作を検知・記録します。DBの権限と監査ログについては、次の記事で具体例を紹介しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>バックアップも、本番環境が侵害されたときに同じ権限や攻撃経路から破壊されないよう分離します。</p>
<p><strong>攻撃シナリオの途中に複数の防御ポイントを置く</strong>ことが、未知の脆弱性を前提にした設計につながります。</p>
<h3 id="侵入させないだけではなく侵入された後まで設計する"><span id="toc32">「侵入させない」だけではなく「侵入された後」まで設計する</span></h3>
<p>セキュリティ対策というと、</p>
<blockquote>
<p>攻撃をどう防ぐか</p>
</blockquote>
<p>に目が向きやすくなります。</p>
<p>しかし未知の脆弱性を完全になくせないのであれば、予防だけでは設計が完結しません。</p>
<p>考える範囲を、</p>
<blockquote>
<p><strong>予防</strong><br />
↓<br />
<strong>検知</strong><br />
↓<br />
<strong>封じ込め</strong><br />
↓<br />
<strong>復旧</strong></p>
</blockquote>
<p>まで広げます。</p>
<p>例えばWebサーバへの侵入そのものを防げなかったとしても、権限昇格を防ぎ、横展開を制限し、異常操作を検知し、影響範囲を特定して安全な状態へ戻せれば、最終的な事業影響を小さくできます。</p>
<p>この考え方自体は2026年になって突然登場したものではありません。<a rel="noopener" href="https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" target="_blank">NIST Cybersecurity Framework 2.0</a>でも、サイバーセキュリティリスクへの対応をGovern、Identify、Protect、Detect、Respond、Recoverの6機能で整理し、ライフサイクル全体でリスクを管理する考え方を示しています。</p>
<p>AIによって変わったのは原則ではなく、<strong>各段階を攻撃者が通過する速度が上がる可能性</strong>です。</p>
<p>AI対応をうたう製品を追加する前に、まず攻撃シナリオのどの段階を止め、どこで検知し、どの状態まで復旧する必要があるのかを決めます。</p>
<p>AI Agentも同じです。AIだから特別な対策を足すのではなく、<strong>そのAgentがどの認証情報を使い、どのAPIを実行でき、どのリソースまで到達できるのか</strong>を確認し、必要な権限だけを与えます。AWS IAMでAI Agentへ与える権限の考え方は、次の記事で詳しく整理しています。</p>

<a href="https://sys-univ.com/tec/ai-agent-aws-security/" title="AI AgentのIAM権限はどこまで届くか｜OpenAI・Hugging Face侵害から考えるAWSセキュリティ設計" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">AI AgentのIAM権限はどこまで届くか｜OpenAI・Hugging Face侵害から考えるAWSセキュリティ設計</div><div class="blogcard-snippet internal-blogcard-snippet">OpenAI・Hugging Face侵害を一次資料から検証し、AI Agentに与えるIAM権限、Workload Identity、ネットワーク境界、Read Only権限、検知・停止設計をAWSのセキュリティ要件として整理します。</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 loading="lazy" decoding="async" 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" /></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.09.07</div></div></div></div></a>
<p>未知の脆弱性をすべて事前に把握できないからこそ、個々の脆弱性一覧だけではなく、<strong>資産・攻撃シナリオ・攻撃経路を基準にリスクを考える重要性が高まっています。</strong></p>
<p>次に問題になるのが、<strong>どこまで対策し、何を残存リスクとして扱うのか</strong>です。</p>
<h2 id="実施しない対策と残存リスクの扱いを決める"><span id="toc33">実施しない対策と残存リスクの扱いを決める</span></h2>
<p>ここまで、脅威と脆弱性からリスクを評価し、そのリスクに応じて必要なセキュリティ対策を導く方法を説明してきました。</p>
<p>リスクアセスメントの結果として考えられる対策を、すべて実施するわけではありません。</p>
<p>対策を実施してもリスクを完全にゼロにできない場合があります。追加対策によって得られるリスク低減効果に対して、構築費や運用負荷が大きすぎる場合もあります。</p>
<p>最後に必要になるのが、</p>
<blockquote>
<p><strong>どこまで対策し、何を残存リスクとして扱うのか</strong></p>
</blockquote>
<p>という判断です。</p>
<p>これは、対策を考えることと同じくらい重要なセキュリティ要件定義です。</p>
<h3 id="残存リスクは対策しなかったリスクだけではない"><span id="toc34">残存リスクは「対策しなかったリスク」だけではない</span></h3>
<p>残存リスクという言葉は、</p>
<blockquote>
<p>対策を実施しなかったために残ったリスク</p>
</blockquote>
<p>という意味に捉えられがちですが、それだけではありません。</p>
<p>対策を実施しても、リスクが完全になくなるとは限りません。</p>
<p>例えば、管理画面へのアクセスを管理ネットワークに限定し、MFAを導入し、管理者権限を必要最小限にして、操作ログも記録したとします。</p>
<p>これによって外部からの不正アクセスや、認証情報を盗まれた場合のリスクは大きく下げられます。</p>
<p>しかし、DBAのように業務上強い権限を持つ管理者であれば、正規の権限を利用して意図的にデータを取得する可能性まで完全になくすことは困難です。</p>
<p>そこで、</p>
<ul>
<li>特権IDの利用者や利用時間を限定する</li>
<li>重要操作を記録する</li>
<li>誰が、いつ、どのデータへアクセスしたのか追跡できるようにする</li>
<li>監査ログを管理対象のDBとは別の基盤へ転送する</li>
<li>必要に応じて承認手続きや操作監視を組み合わせる</li>
</ul>
<p>といった統制を行います。</p>
<p>ログを取得していても、そのログを同じDBA権限で消せるのであれば、証跡として十分とはいえません。<strong>管理者自身が容易に改ざん・削除できない場所へ証跡を残す</strong>ことも重要です。</p>
<p>それでも、正規権限を持つ内部者による不正利用の可能性がゼロになるわけではありません。</p>
<p><strong>対策を実施したあとにも残っているリスクが、残存リスクです。</strong></p>
<p>ここは、STEP4で説明した「保有」と区別しておきます。</p>
<p>「保有」はリスクへの対応方針です。残存リスクは、低減策を実施した場合にも存在します。</p>
<blockquote>
<p>リスクを低減する<br />
↓<br />
対策後のリスクを再評価する<br />
↓<br />
それでも残るリスクを把握する<br />
↓<br />
そのリスクを前提に、どの方式・運用で進めるかを判断する</p>
</blockquote>
<p>という流れになります。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="369" data-end="518">ここまでは、主に情報漏洩や不正利用といった<strong data-start="390" data-end="397">機密性</strong>に関する残存リスクを例にしてきました。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="369" data-end="518">しかし、情報セキュリティは機密性・完全性・可用性（CIA）の3つで考えます。<strong data-start="459" data-end="518">大規模障害や災害によって、必要なときにシステムを利用できなくなることも、可用性に関するセキュリティリスクです。</strong></p>
<p dir="auto" data-start="523" data-end="567">次に、CIAのうち<strong data-start="532" data-end="548">可用性に関する残存リスク</strong>の例として、リージョン障害を考えます。</p>
<h3 id="バックアップがあると災害対策先で業務継続できるは違う"><span id="toc35">「バックアップがある」と「災害対策先で安全に業務継続できる」は違う</span></h3>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="260" data-end="319">別リージョンへデータや復旧資材を保管していても、<strong data-start="284" data-end="319">それだけで災害対策先から安全に業務を再開できるとは限りません。</strong></p>
<p dir="auto" data-start="321" data-end="457">DRでは可用性を回復することが目的になりますが、復旧先でも機密性や完全性を維持する必要があります。データを復旧できても、アクセス制御が効かず誰でも参照できる状態になったり、認証を省略しなければ利用できなかったりするのであれば、セキュリティ要件を満たした復旧とはいえません。</p>
<p dir="auto" data-start="459" data-end="532">例えば、セカンダリリージョンにWeb/AP、DB、バックアップを用意できても、<strong data-start="498" data-end="524">認証基盤がプライマリリージョンに依存している</strong>場合があります。</p>
<p dir="auto" data-start="534" data-end="565">AWSでCognitoを認証基盤として利用しているケースなら、</p>
<blockquote data-start="567" data-end="688">
<p dir="auto" data-start="569" data-end="688">セカンダリリージョンでWeb/APやDBは起動できる<br data-start="595" data-end="598" /><br />
↓<br data-start="601" data-end="604" /><br />
しかしログイン時の認証はプライマリリージョン側のCognitoに依存している<br data-start="644" data-end="647" /><br />
↓<br data-start="650" data-end="653" /><br />
プライマリリージョンが利用できなければ、正常な認証経路が成立しない</p>
</blockquote>
<p dir="auto" data-start="690" data-end="703">ということが起こり得ます。</p>
<p dir="auto" data-start="705" data-end="711">この状態で、</p>
<blockquote data-start="713" data-end="732">
<p dir="auto" data-start="715" data-end="732">認証を迂回してサービスだけ起動する</p>
</blockquote>
<p dir="auto" data-start="734" data-end="797">という対応をすれば可用性だけは回復できるかもしれませんが、<strong data-start="763" data-end="791">今度は認証・認可が成立せず、機密性を損なうリスク</strong>が生じます。</p>
<p dir="auto" data-start="799" data-end="811">DRで確認すべきなのは、</p>
<blockquote data-start="813" data-end="834">
<p dir="auto" data-start="815" data-end="834"><strong data-start="815" data-end="834">バックアップデータが存在するか</strong></p>
</blockquote>
<p dir="auto" data-start="836" data-end="843">だけではなく、</p>
<blockquote data-start="845" data-end="906">
<p dir="auto" data-start="847" data-end="906"><strong data-start="847" data-end="906">認証、DNS、鍵管理、外部接続、アクセス制御などを含め、一連の業務経路がセキュリティを維持した状態で成立するか</strong></p>
</blockquote>
<p dir="auto" data-start="908" data-end="911">です。</p>
<h3 id="上位基準との差異があれば残存リスクまで明確にする"><span id="toc36">上位基準との差異があれば、残存リスクまで明確にする</span></h3>
<p>前節で説明した差異評価も、最終的には同じところへ行き着きます。</p>
<p>上位基準と同じ方式を採用できなかった場合、</p>
<blockquote>
<p>差異がある</p>
</blockquote>
<p>と確認するだけでは不十分です。</p>
<p>差異によって増えるリスクを評価し、代替コントロールを実施したうえで、それでも何が残るのかを確認します。</p>
<p>例えば、上位基準と同じリアルタイムの検知方式を採用できず、別の監視や操作記録によってリスクを低減したとします。</p>
<p>代替コントロールによってリスクが下がっても、上位基準とまったく同じ検知能力になるとは限りません。</p>
<p>そこで、</p>
<blockquote>
<p><strong>代替コントロールを実施した結果、何のリスクがどの程度残るのか</strong></p>
</blockquote>
<p>まで明確にします。</p>
<p>ここまで整理して初めて、</p>
<blockquote>
<p>この差異を前提に、この方式で進めてよいか</p>
</blockquote>
<p>を判断できます。</p>
<h3 id="や対象外だけでは設計判断を残したことにならない"><span id="toc37">「×」や「対象外」だけでは、設計判断を残したことにならない</span></h3>
<p>セキュリティの確認表では、対策ごとに「○」「×」「対象外」と記録することがあります。</p>
<p>しかし、</p>
<blockquote>
<p>対策A：×</p>
</blockquote>
<p>だけでは、なぜ実施しなかったのか分かりません。</p>
<p>リスクを見落としていたのか。</p>
<p>追加対策による効果が小さいと判断したのか。</p>
<p>費用とのバランスを評価した結果なのか。</p>
<p>代替コントロールによって十分に低減できているのか。</p>
<p>その違いは、記号だけでは残りません。</p>
<p>「対象外」も同じです。</p>
<p>対象外は、本来、</p>
<blockquote>
<p>このシステムでは当該リスクが成立しない<br />
この構成要素には適用されない<br />
別の組織やシステムが責任を持つ範囲である</p>
</blockquote>
<p>など、<strong>評価した結果として適用対象から外した</strong>ことを意味します。</p>
<p>対象外にしたことと、リスクを認識したうえで追加対策を実施せず保有したことは別の判断です。</p>
<p>どちらの場合も、後から判断を再現できるように理由を残します。</p>
<h3 id="実施しないを技術者だけで決めない"><span id="toc38">「実施しない」を技術者だけで決めない</span></h3>
<p>残るリスクをどう扱うかは、セキュリティ担当者やシステム設計者だけで完結する判断ではありません。</p>
<p>例えば、DBAの不正利用リスクに対して、特権ID管理、二重承認、常時監視などを追加すれば、さらにリスクを下げられる可能性があります。</p>
<p>しかし、追加対策には費用と運用負荷が伴います。技術者は、</p>
<blockquote>
<p>現在の対策でどこまでリスクが下がっているか<br />
追加対策で何が改善するか<br />
それでも何が残るか</p>
</blockquote>
<p>を説明できます。</p>
<p>そのうえで、システムの重要性、業務影響、費用を踏まえ、<strong>残るリスクを前提にどの方式で進めるのかを、適切な責任者を含む関係者で決めます。</strong></p>
<p>理想的には、残存リスクとその扱いを成果物に明示し、受容主体まで残せるのが分かりやすい形です。</p>
<p>ただし、実務では必ずしもそうならないことがあります。</p>
<blockquote>
<p><strong>実務Tips：残存リスクは、必ずしも「受容」と明記されるとは限らない</strong></p>
</blockquote>
<p>私の経験では、発注者側が「このリスクを受容する」という表現や、リスクが顕在化した場合の結果を成果物へ明記することを避けるケースがありました。特に大規模案件や公共系の案件では、そのような場面もありました。</p>
<p>会議では、</p>
<blockquote>
<p>ここまでは対策する<br />
ここから先は実現しない<br />
このリスクは残る<br />
その前提でこの方式を採用する</p>
</blockquote>
<p>という議論が実際に行われていることがあります。</p>
<p>その場合、「残存リスクを受容した」と強い表現で書けなくても、</p>
<blockquote>
<p><strong>何が制約なのか</strong><br />
<strong>何が実現できないのか</strong><br />
<strong>その結果、何が起こり得るのか</strong><br />
<strong>どの代替策を採るのか</strong><br />
<strong>その前提でどの方式で進めると確認したのか</strong></p>
</blockquote>
<p>を、可能な範囲で記録に残します。</p>
<p>議事録は納品成果物に含まれない場合もありますが、会議後に関係者へ正式に共有される重要なプロジェクト記録です。計画時には想定していなかった緊急会議であっても、そこで何を説明し、何を確認したのかを議事録に残しておけば、後から判断経緯を追跡できます。</p>
<p>例えば、</p>
<blockquote>
<p>「○○の制約により△△は実施しない。代替策として□□を採用し、本方式で進めることを確認した。」</p>
</blockquote>
<p>という残し方です。</p>
<p>議事録が契約上の承認文書になるかどうかは案件の文書管理ルールによります。それでも、<strong>「説明した」「制約を共有した」「その前提で方式を確認した」という判断経緯を後から確認できる状態にしておく</strong>ことには大きな意味があります。</p>
<h3 id="事故後になぜ実施しなかったのかを説明できるか"><span id="toc39">事故後に「なぜ実施しなかったのか」を説明できるか</span></h3>
<p>セキュリティ事故が起きたあとに、</p>
<blockquote>
<p>「なぜ、この対策を実施していなかったのか」</p>
</blockquote>
<p>と問われることがあります。</p>
<p>そのとき、</p>
<blockquote>
<p>リスクを認識したうえで、既存対策と追加対策の効果を評価し、<strong>その残存リスクを前提にこの方式で進めることを関係者間で合意していた</strong></p>
</blockquote>
<p>と説明できる状態と、</p>
<blockquote>
<p>なぜ「×」になっているのか分からない</p>
</blockquote>
<p>状態では、大きな違いがあります。</p>
<p><strong>セキュリティ要件定義の品質は、実施した対策の数だけでは決まりません。</strong></p>
<p>必要な対策を導くこと。</p>
<p>実施しない対策についても判断理由を明確にすること。</p>
<p>対策後に残るリスクを把握すること。</p>
<p>そして、その残存リスクを前提に、どの方針で進めると決まったのかを追跡できるようにすること。</p>
<p>ここまで行って、リスクアセスメントによるセキュリティ要件の判断が一度閉じます。</p>
<hr />
<p>ここからは、決めたセキュリティ要件をプロジェクトの後工程でどう扱うかです。</p>
<h2 id="アセスメント結果を設計見積rfpへ引き継ぐ"><span id="toc40">アセスメント結果を設計・見積・RFPへ引き継ぐ</span></h2>
<p>前半で触れた要件定義と設計の境界を、後工程へ渡す観点から整理します。</p>
<p>要件定義では、リスク評価をもとに<strong>必要なリスク低減水準や満たすべきセキュリティ要求を決めます。</strong> 基本設計以降では、その要求を満たすネットワーク構成、認証方式、製品、クラウドサービス、運用方式を具体化します。基本設計で何を具体化するのかは、<a href="https://sys-univ.com/dev/basic-design-infrastructure/">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</a>でも詳しく整理しています。</p>
<p>この境界を意識しないと、要件が粗すぎて見積前提が揃わないか、逆に要件定義で方式まで固定しすぎて設計の選択肢を失います。</p>
<p>また、セキュリティ要件は厳しく設定すればよいわけではありません。必要な権限を絞りながら、システムとして成立する実装方式へ落とす必要があります。</p>
<p>例えばECS/Fargateでコンテナを非rootで実行する設計にすると、共有VolumeのUID/GIDやファイル権限まで整合させなければ、アプリケーションやログ収集が<code>Permission denied</code>で動かなくなることがあります。<a href="https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/">Fluent BitがPermission deniedでログを読めない｜ECS/Fargate共有VolumeのUID/GID設計</a>では、最小権限を実装レベルまで落としたときに何を設計する必要があるかを具体例で整理しています。</p>
<h3 id="step4で導いた要件を後工程の条件へ変換する"><span id="toc41">STEP4で導いた要件を後工程の条件へ変換する</span></h3>
<p>STEP4で導いたセキュリティ要件は、アセスメントシートの中に閉じ込めず、設計・見積・調達の条件へ変換して渡します。</p>
<p>ここで重要なのは、対策項目をもう一度並べることではありません。<strong>どのリスクをどこまで下げるための要求なのかという設計根拠を、後工程でも追跡できる状態にすること</strong>です。</p>
<h3 id="セキュリティ要件は見積条件でもある"><span id="toc42">セキュリティ要件は見積条件でもある</span></h3>
<p>セキュリティ要件をどこまで求めるかによって、構築費と運用費は変わります。</p>
<p>例えば、</p>
<blockquote>
<p>ログを保存する</p>
</blockquote>
<p>という要求と、</p>
<blockquote>
<p>セキュリティ上重要な操作を集中管理し、一定期間保存し、不審な操作を検知する</p>
</blockquote>
<p>という要求では、必要になる仕組みも運用も違います。</p>
<p>可用性についても、バックアップから復旧できればよいのか、別拠点や別リージョンへの切替まで求めるのかによって費用は大きく変わります。</p>
<p>要件定義で、</p>
<blockquote>
<p>高いセキュリティを確保すること</p>
</blockquote>
<p>とだけ書いても、見積条件にはなりません。</p>
<p><strong>費用に影響するセキュリティ要求は、ベンダが同じ前提で見積もれる粒度まで明確にする必要があります。</strong></p>
<p>同時に、実装方式まで不必要に固定しないことも重要です。</p>
<p>認証強度や監視範囲、保存期間など、費用やシステム構成へ大きく影響する要求は要件として定める。それをどの製品やクラウドサービスで実現するかは、設計に選択肢を残せるのであれば固定しない。</p>
<p><strong>見積可能な粒度まで要求を具体化しながら、実装方式まで不必要に縛らないこと</strong>がポイントです。</p>
<h3 id="rfpへ渡すなら対策だけでなく要求の背景も残す"><span id="toc43">RFPへ渡すなら「対策」だけでなく「要求の背景」も残す</span></h3>
<p>冒頭で説明したRFPは、本記事の要件定義へ入るための入力でした。工程ごとに調達を分ける案件では、要件定義の成果が<strong>次工程のRFPや見積条件</strong>になります。</p>
<p>要件定義と基本設計以降で契約や担当ベンダが変わる案件では、アセスメント結果を次工程へ渡せる形にしておく必要があります。</p>
<p>このとき、</p>
<blockquote>
<p>MFAを実装すること</p>
</blockquote>
<p>だけを渡すより、</p>
<blockquote>
<p>管理機能への不正アクセスによる顧客情報漏洩リスクを低減するため、管理者認証にはMFAを要求する</p>
</blockquote>
<p>と、要求の背景まで追跡できる方が設計しやすくなります。</p>
<p>後工程で方式変更が必要になった場合にも、</p>
<blockquote>
<p>MFAという方式を守れるか</p>
</blockquote>
<p>だけではなく、</p>
<blockquote>
<p>元々低減しようとしていたリスクを、変更後の方式でも十分に低減できるか</p>
</blockquote>
<p>という判断に戻れるからです。</p>
<p>要件定義工程と基本設計以降を別に調達する案件では、この粒度がそのまま次工程の入札条件になります。</p>
<p>要求が粗すぎれば、ある応札者は24時間監視まで含め、別の応札者はログ保存だけを想定するなど、見積前提がばらつきます。価格差が方式差なのか、単なる前提差なのか分からなくなり、比較そのものが難しくなります。</p>
<p>細かく書きすぎて製品名や実装方式まで固定すると、応札側がより適切な方式を提案できる余地を奪います。</p>
<p><strong>RFPでは、応札者が同じ要求水準を見積もれる具体性と、設計提案を可能にする自由度の両方が必要です。</strong></p>
<p>要求の背景にあるリスクを残しておけば、この2つを両立させやすくなります。</p>
<h3 id="未確定事項を決まったことにしない"><span id="toc44">未確定事項を「決まったこと」にしない</span></h3>
<p>要件定義ですべての実装方式まで決められるとは限りません。</p>
<p>詳細な製品仕様や他システムとの調整結果を見なければ判断できない項目もあります。</p>
<p>その場合、無理に○や×を付けて確定させるより、</p>
<blockquote>
<p>要件として必要なこと<br />
現時点で決まっていること<br />
基本設計以降で継続して検討すること</p>
</blockquote>
<p>を分けておきます。</p>
<p>未確定事項を未確定のまま明示することは、設計品質が低いことを意味しません。</p>
<p><strong>判断に必要な情報がまだ揃っていないことを明確にし、誰がどの工程で判断するのかを後工程へ渡す方が安全です。</strong></p>
<p>アセスメント結果は、セキュリティ部門だけが保管する資料ではありません。</p>
<p>設計条件、見積条件、調達条件へ変換されて初めて、プロジェクト全体で使えるセキュリティ要件になります。</p>
<h2 id="セキュリティアセスメントは一度実施して終わりではない"><span id="toc45">セキュリティアセスメントは一度実施して終わりではない</span></h2>
<p>要件定義でリスクアセスメントを実施し、必要な対策と残存リスクの扱いを決めても、その評価がシステム廃止まで有効なわけではありません。</p>
<p>システム構成も脅威も変化します。</p>
<p>特に確認しなければならないのが、</p>
<blockquote>
<p><strong>評価した当時の前提が、現在も成立しているか</strong></p>
</blockquote>
<p>です。</p>
<h3 id="代替コントロールの前提が崩れれば差異評価も変わる"><span id="toc46">代替コントロールの前提が崩れれば、差異評価も変わる</span></h3>
<p>上位基準との差異評価では、同じ方式を採用できない場合に、別のコントロールでリスクを低減する方法を説明しました。</p>
<p>例えば、</p>
<blockquote>
<p>利用できる管理端末を限定している<br />
管理操作を記録している</p>
</blockquote>
<p>ことを前提に、上位基準との差異による残存リスクを許容したとします。</p>
<p>その後の運用変更によって、管理端末が増えたり、操作ログの監視が実施されなくなったりすれば、当初の差異評価を支えていた前提が崩れます。</p>
<p>評価表に書かれた結論が同じでも、実際のリスクは既に変わっています。</p>
<p>上位基準自体が改定される場合もあります。</p>
<p><strong>差異評価では、差異そのものだけでなく、代替コントロールが現在も有効に機能しているかを継続して確認する必要があります。</strong></p>
<h3 id="システム変更はリスクの変更でもある"><span id="toc47">システム変更は、リスクの変更でもある</span></h3>
<p>機能追加や構成変更でもリスクは変化します。</p>
<p>例えば、当初は社内ネットワークからだけ利用していたシステムを、インターネットから利用できるように変更すれば、同じアプリケーションでも脅威への露出が変わります。</p>
<p>外部SaaSとのAPI連携を追加すれば、新しい通信経路、認証情報、責任分界が生まれます。</p>
<p>IAM権限を変更したり、運用端末を追加したりした場合も、以前とは異なる攻撃経路が成立する可能性があります。</p>
<p>設計変更を、</p>
<blockquote>
<p>機能が動くか</p>
</blockquote>
<p>だけで確認するのではなく、</p>
<blockquote>
<p><strong>既存のリスク評価に影響しないか</strong></p>
</blockquote>
<p>まで確認します。</p>
<p>リスクアセスメントは、要件定義時に一度作って保管する資料ではありません。システムや外部環境が変われば、前提となるリスクも変わるため、必要に応じて見直します。具体的な見直しの契機は後述します。</p>
<h3 id="脆弱性の深刻度だけでなく実際に悪用されているかを見る"><span id="toc48">脆弱性の「深刻度」だけでなく、実際に悪用されているかを見る</span></h3>
<p>運用開始後には、多数の脆弱性情報が継続的に公開されます。</p>
<p>すべての脆弱性を同じ速度で修正することは、現実には困難です。</p>
<p>CVSSなどの深刻度は重要な判断材料ですが、それだけで対応順位を決める必要はありません。</p>
<p>CISAは、実際の攻撃で悪用された脆弱性を<a rel="noopener" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" target="_blank">Known Exploited Vulnerabilities（KEV）Catalog</a>として継続的に管理・公開しており、組織の脆弱性管理における優先順位付けの入力としてKEVを利用するよう案内しています。</p>
<p>例えば、</p>
<blockquote>
<p>CVSSは高いが、自システムでは該当機能を使用しておらず外部からも到達できない脆弱性</p>
</blockquote>
<p>と、</p>
<blockquote>
<p>深刻度だけを見れば同程度でも、実際の攻撃で悪用されており、自システムが外部へ公開している機能に存在する脆弱性</p>
</blockquote>
<p>では、対応優先度が同じとは限りません。</p>
<p>ここでも見るのは、</p>
<blockquote>
<p>脆弱性の点数</p>
</blockquote>
<p>だけではありません。</p>
<p><strong>その脆弱性が、自システムのどの資産に対して、どの攻撃シナリオを成立させるのか</strong>です。</p>
<p>KEVに掲載されているから無条件に自システムの最優先になるわけでもありません。対象製品を利用しているか、脆弱な機能が有効か、攻撃経路が存在するかといった、自システム側の条件と組み合わせて判断します。</p>
<h3 id="脆弱性管理では何日で判断し何日で適用するかも設計する"><span id="toc49">脆弱性管理では「何日で判断し、何日で適用するか」も設計する</span></h3>
<p>AI節では、脆弱性を発見する量と速度が上がれば、人間側の検証・修正・適用能力がボトルネックになる可能性について触れました。</p>
<p>この問題は、運用開始後に初めて考えるものではありません。運用開始後の監視・ログ・バックアップ・判断体制まで含めた設計については、次の記事で説明した論点ともつながります。</p>

<a href="https://sys-univ.com/dev/opedesign/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-376x212.jpg 376w" sizes="(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">運用設計とは何かをシステム基盤エンジニアの実務目線で解説します。運用設計書の目次サンプルと検討項目一覧を示し、監視・ログ・バックアップ・ジョブ管理、誰がやるのか、要件定義・基本設計との関係、処理方式設計との双方向連携を整理します。</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 loading="lazy" decoding="async" 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" /></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.14</div></div></div></div></a>
<p>重大な脆弱性が見つかったとき、CVSSの数値だけで「9.0以上なら即適用」のように機械的に決めるのではなく、例えば次の観点をあらかじめ判断基準として決めておきます。</p>
<ul>
<li>CVSSなどの脆弱性の深刻度</li>
<li>実際の攻撃で悪用されているか</li>
<li>脆弱性の対象となる製品・サービス・機能を自システムで利用しているか</li>
<li>外部から到達可能か、攻撃経路が成立するか</li>
<li>WAF、アクセス制御、ネットワーク分離など既存対策でどこまで抑えられているか</li>
<li>パッチ適用による停止や互換性への影響</li>
<li>すぐ適用できない場合の代替コントロールがあるか</li>
</ul>
<p>こうした情報をもとに、セキュリティ、基盤、アプリケーション、運用などの有識者で評価し、</p>
<blockquote>
<p>緊急で適用する<br />
通常の保守タイミングで適用する<br />
代替対策で一時的にリスクを下げる<br />
自システムには影響しないと判断する</p>
</blockquote>
<p>といった対応方針を決めます。</p>
<p>さらに、</p>
<blockquote>
<p>重大な脆弱性は何時間・何日以内に影響判断するのか<br />
緊急適用が必要な場合、何日以内を目標にするのか<br />
システム停止を誰が承認するのか<br />
適用できない場合、誰が代替策と残存リスクを判断するのか</p>
</blockquote>
<p>まで運用として決めておくと、脆弱性が公表されてから毎回ゼロから相談する必要がありません。</p>
<p>ここでは責任分界も重要です。OSやミドルウェアの脆弱性について、影響調査、適用判断、パッチ作業のどこまでを保守ベンダ、運用委託先、利用者側が担うのかを決めていなければ、緊急時に判断が止まります。</p>
<p>パッチを急いで適用すれば、変更による障害リスクも高まります。十分な検証を優先しすぎれば、既に悪用されている脆弱性を長期間残すことになります。</p>
<p>ここにも、<strong>セキュリティと安定運用のトレードオフ</strong>があります。</p>
<p>重要なのは、脆弱性の点数だけを見るのではなく、<strong>その脆弱性が自システムでどのリスクを成立させるのかを評価し、判断基準と意思決定プロセスを事前に決めておくこと</strong>です。</p>
<h3 id="再アセスメントする契機を決めておく"><span id="toc50">再アセスメントする契機を決めておく</span></h3>
<p>毎日すべてのリスクを最初から評価し直す必要はありません。</p>
<p>再評価の契機は、大きく3種類に整理できます。</p>
<p><strong>1つ目はシステム側の変化です。</strong> 構成やインターネット公開範囲を変更した、外部サービスや接続先を追加した、IAMや管理経路を変更した、新しいAPIを公開した、保持するデータを変更した、といった場合です。</p>
<p><strong>2つ目は外部環境の変化です。</strong> 上位基準やセキュリティ標準が改定された、重大な脆弱性が発見された、実際の攻撃で悪用されていることが確認された、といった変化が該当します。</p>
<p><strong>3つ目は評価の前提そのものの変化です。</strong> 代替コントロールの運用方法や実効性が変わった、セキュリティインシデントが発生して従来の想定が不十分だと分かった、といった場合です。</p>
<p><div id="attachment_3406" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3406" class="wp-image-3406 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02.png 1536w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3406" class="wp-caption-text">図　システム・外部環境・前提条件の変化を契機に再アセスメントし、要件・設計・運用を更新する循環イメージ</p></div></p>
<p>&nbsp;</p>
<p>実務では、仕様変更が入ったときに、変更対象のプログラムだけを見るのではありません。</p>
<p>変更管理委員会などで、</p>
<blockquote>
<p><strong>変更内容<br />
→ 影響する構成要素・関連チーム<br />
→ 変化する脅威・脆弱性<br />
→ リスク再評価<br />
→ 必要な要件・設計・運用・テストの見直し</strong></p>
</blockquote>
<p>まで確認します。</p>
<p>例えば、外部接続の追加であれば、ネットワークチームだけでなく、認証、IAM、ログ監視、運用手順、障害時の切り分けまで影響する可能性があります。セキュリティに影響する変更であれば、関連するリスクアセスメントも見直します。</p>
<p>何かが変わるたびにアセスメントシート全体を作り直すのではなく、<strong>変化によって影響を受ける資産、脅威、攻撃シナリオ、既存対策、残存リスクを見直す</strong>という考え方です。</p>
<p>ウォーターフォール型の大規模開発では、後工程になるほど要件、設計、試験、運用手順など複数の成果物へ影響が波及するため、変更時の見直しは大きな作業になります。前工程へ戻るコストが大きいからこそ、変更管理の中にセキュリティ影響確認を組み込んでおく必要があります。</p>
<p>アジャイル開発でも原理は同じです。大きな工程へまとめて戻るのではなく、機能追加や変更のサイクルごとにセキュリティ影響を確認し、必要に応じてリスク評価や対策を更新します。</p>
<p><strong>開発手法にかかわらず、変更によって以前のリスク評価の前提が変わっていないかを確認することが重要です。</strong></p>
<p>セキュリティアセスメントは単なる成果物ではなく、<strong>システムの変化に対してセキュリティ判断を更新するための基準</strong>として使うものです。</p>
<h2 id="まとめセキュリティ要件はリスクから必要な対策を導く"><span id="toc51">まとめ｜セキュリティ要件は、リスクから必要な対策を導く</span></h2>
<p>セキュリティ要件は、暗号化、MFA、WAF、ログ管理といった具体的な対策を先に選んで決めるものではありません。</p>
<p>RFP、顧客標準、業界基準などの上位要求を入力として、まず対象範囲と責任分界を整理し、</p>
<blockquote>
<p><strong>脅威を分析する</strong><br />
↓<br />
<strong>脆弱性・設定不備・統制不足を分析する</strong><br />
↓<br />
<strong>リスクを分析・評価する</strong><br />
↓<br />
<strong>リスク対応を決め、必要な対策へ落とす</strong></p>
</blockquote>
<p>という流れでセキュリティ要件を導きます。</p>
<p>脅威を検討するときには、構成要素と脅威を掛け合わせ、外部攻撃者だけでなく、内部者、委託先、人的ミス、物理的な侵入まで見ます。</p>
<p>上位基準がある案件でも、基準への○×判定だけでは終わりません。</p>
<blockquote>
<p><strong>上位基準の要求</strong><br />
↓<br />
<strong>本システムの実現方式</strong><br />
↓<br />
<strong>差異</strong><br />
↓<br />
<strong>差異によって増えるリスク</strong><br />
↓<br />
<strong>代替コントロール</strong><br />
↓<br />
<strong>残存リスク</strong><br />
↓<br />
<strong>合意</strong></p>
</blockquote>
<p>まで評価します。</p>
<p>AIによって脆弱性の発見や攻撃作業の速度が上がっても、この順序は変わりません。</p>
<p>未知の脆弱性をすべて事前に列挙することはできないため、個々のCVEだけを見るのではなく、資産と攻撃シナリオを基準に、侵入後の権限昇格、横展開、情報取得まで含めて考えます。</p>
<p>必要な対策を実施しても、リスクを完全にゼロにはできません。</p>
<p>最後に必要なのは、</p>
<blockquote>
<p><strong>何を実施し、何を実施しないのか。</strong><br />
<strong>その結果、何のリスクが残るのか。</strong><br />
<strong>その前提で、どの方式・運用で進めると決まったのか。</strong></p>
</blockquote>
<p>を説明できる状態にすることです。</p>
<p>理想的には残存リスクの受容主体まで明文化します。実務上それが難しい場合でも、制約、代替策、残るリスク、判断経緯を成果物や議事録などで追跡できる状態にしておくことが重要です。</p>
<p>そして、そこで判断を終わらせません。</p>
<p>要件定義で決めた内容を設計、見積、次工程のRFP、運用へ引き継ぎ、システム構成や脅威、上位基準、代替コントロールの前提が変われば、リスクを再評価します。</p>
<p>公的なガイドラインや組織標準、過去のアセスメントシートは、検討漏れを防ぐための重要な材料です。ただし、それ自体が対象システムの答えになるわけではありません。</p>
<p>セキュリティ要件定義で本当に必要なのは、</p>
<blockquote>
<p><strong>何を守るのかを明確にし、脅威と弱点からリスクを評価し、そのシステムに必要な対策と残るリスクの扱いを判断すること</strong></p>
</blockquote>
<p>です。</p>
<p>この判断過程まで説明できて初めて、セキュリティ要件が<strong>設計根拠を持った要求</strong>になります。</p>
<hr />
<h2 id="実務で使うためのアセスメントシートと差異評価"><span id="toc52">実務で使うためのアセスメントシートと差異評価</span></h2>
<p>ここまでで、セキュリティ対策をリスクから導き、実施しない対策と残存リスクまで判断する考え方を説明しました。</p>
<p>実際の案件でこの方法を回すには、判断結果を残すためのアセスメントシートと、上位基準との差異・代替コントロール・残存リスクを記録する型が必要になります。</p>
<p>今後公開予定の実務編では、<strong>リスクアセスメントシートと差異評価シートの具体的な記入方法、差異ステータスの判定、判断理由・残存リスクの書き方、顧客説明資料への落とし込み方</strong>を、実務で使える形にまとめます。</p>
<h2 id="参考資料"><span id="toc53">参考資料</span></h2>
<ul>
<li>Anthropic, “Disrupting the first reported AI-orchestrated cyber espionage campaign”<br />

<a rel="noopener" href="https://www.anthropic.com/news/disrupting-AI-espionage" title="Disrupting the first reported AI-orchestrated cyber espionage campaign" 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 loading="lazy" decoding="async" src="https://www.anthropic.com/api/opengraph-illustration?name=Object%20Lock&#038;backgroundColor=fig" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Disrupting the first reported AI-orchestrated cyber espionage campaign</div><div class="blogcard-snippet external-blogcard-snippet">A report describing an a highly sophisticated AI-led cyberattack</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.anthropic.com/news/disrupting-AI-espionage" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.anthropic.com</div></div></div></div></a></li>
<li>Ars Technica, “Researchers question Anthropic claim that AI-assisted attack was 90% autonomous”<br />

<a rel="noopener" href="https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" title="Researchers question Anthropic claim that AI-assisted attack was 90% autonomous" 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 loading="lazy" decoding="async" src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/ac4c29262ba3b0e9c9c3e362bd432eea.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Researchers question Anthropic claim that AI-assisted attack was 90% autonomous</div><div class="blogcard-snippet external-blogcard-snippet">The results of AI-assisted hacking aren&#039;t as impressive as many might have us believe.</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">arstechnica.com</div></div></div></div></a></li>
<li>Anthropic, “Evaluating and mitigating the growing risk of LLM-discovered 0-days”<br />

<a rel="noopener" href="https://www.anthropic.com/research/zero-days" title="LLM-discovered 0 days" 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 loading="lazy" decoding="async" src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/8229b1ae7d5d156bf4e2b787d0ccc3a0.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">LLM-discovered 0 days</div><div class="blogcard-snippet external-blogcard-snippet">AI models can now find high-severity vulnerabilities at scale. This is a moment to empower defenders. We&#039;re now using ClReadMore...</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.anthropic.com/research/zero-days" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.anthropic.com</div></div></div></div></a></li>
<li>NIST, “The NIST Cybersecurity Framework (CSF) 2.0”<br />

<a rel="noopener" href="https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" title="The NIST Cybersecurity Framework (CSF) 2.0" 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 loading="lazy" decoding="async" src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/c917091b3739f63eb6354d4ba48e9639.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">The NIST Cybersecurity Framework (CSF) 2.0</div><div class="blogcard-snippet external-blogcard-snippet">The NIST Cybersecurity Framework (CSF) 2.0 provides guidance to industry, government agencies, and other organizations tReadMore...</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.nist.gov</div></div></div></div></a></li>
<li>CISA, “Known Exploited Vulnerabilities Catalog”<br />

<a rel="noopener" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" title="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" 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 loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.cisa.gov%2Fknown-exploited-vulnerabilities-catalog?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://www.cisa.gov/known-exploited-vulnerabilities-catalog</div><div class="blogcard-snippet external-blogcard-snippet"></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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.cisa.gov/known-exploited-vulnerabilities-catalog" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.cisa.gov</div></div></div></div></a></li>
<li>個人情報保護委員会, 「令和7年度（2025年度）個人情報保護委員会年次報告」<br />

<a rel="noopener" href="https://www.ppc.go.jp/news/press/2026/260707/" title="&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;&#12288;&#20196;&#21644;&#65303;&#24180;&#24230;&#24180;&#27425;&#22577;&#21578;&#12398;&#20844;&#34920;&#12395;&#12388;&#12356;&#12390;&#65288;&#20196;&#21644;&#65304;&#24180;&#65303;&#26376;&#65303;&#26085;&#65289; &#65372;&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;" 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 loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.ppc.go.jp%2Fnews%2Fpress%2F2026%2F260707%2F?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;&#12288;&#20196;&#21644;&#65303;&#24180;&#24230;&#24180;&#27425;&#22577;&#21578;&#12398;&#20844;&#34920;&#12395;&#12388;&#12356;&#12390;&#65288;&#20196;&#21644;&#65304;&#24180;&#65303;&#26376;&#65303;&#26085;&#65289; &#65372;&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;</div><div class="blogcard-snippet external-blogcard-snippet">個人情報保護委員会のホームページです。令和７年度個人情報保護委員会年次報告の概要等の公表について掲載しています。</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.ppc.go.jp/news/press/2026/260707/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.ppc.go.jp</div></div></div></div></a></li>
<li>AWS, “Shared responsibility &#8211; Security Pillar”<br />

<a rel="noopener" href="https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/security-pillar/shared-responsibility.html" title="&#36012;&#20219;&#20849;&#26377; - &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12398;&#26609;" 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 loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.aws.amazon.com%2Fja_jp%2Fwellarchitected%2Flatest%2Fsecurity-pillar%2Fshared-responsibility.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#36012;&#20219;&#20849;&#26377; - &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12398;&#26609;</div><div class="blogcard-snippet external-blogcard-snippet">セキュリティとコンプライアンスに関して、AWS とお客様の間で責任を共有します。この共有モデルにより、ホストオペレーティングシステムや仮想化レイヤーからサービスが運用されている施設の物理的なセキュリティに至るまで、さまざまなコンポーネントを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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/security-pillar/shared-responsibility.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.aws.amazon.com</div></div></div></div></a></li>
<li>IPA, “システム構築の上流工程強化（非機能要求グレード）紹介ページ”<br />

<a rel="noopener" href="https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html" title="システム構築の上流工程強化（非機能要求グレード）紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構" 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 loading="lazy" decoding="async" src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/106c80e94e5936d7a98ee8247f6cfc94.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">システム構築の上流工程強化（非機能要求グレード）紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構</div><div class="blogcard-snippet external-blogcard-snippet">情報処理推進機構（IPA）の「システム構築の上流工程強化（非機能要求グレード）紹介ページ」に関する情報です。</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.ipa.go.jp</div></div></div></div></a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</title>
		<link>https://sys-univ.com/dev/detailed-design-overview/</link>
					<comments>https://sys-univ.com/dev/detailed-design-overview/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 20 Aug 2026 06:17:15 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2635</guid>

					<description><![CDATA[この記事は「詳細設計で決めること」全3回シリーズの第1部です。 本シリーズでは、詳細設計を「構築・テスト・運用できる形」に落とし込む工程として、全3回に分けて整理しています。 【第1部】この記事 詳細設計とは何を決める工 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>この記事は「詳細設計で決めること」全3回シリーズの第1部です。</strong></p>
<p>本シリーズでは、詳細設計を「構築・テスト・運用できる形」に落とし込む工程として、全3回に分けて整理しています。</p>
<ul>
	<li>
<p><strong>【第1部】この記事</strong><br />
詳細設計とは何を決める工程か／パラメータ表で終わらせないための設計の考え方</p>
</li>
	<li>
<p><a href="https://sys-univ.com/dev/detailed-design-part1-os-db-job/">【第2部】OS・Web/APサーバ・DB・ジョブの詳細設計</a><br />
OS／Web・APサーバ／DB／ジョブの4領域</p>
</li>
	<li>
<p><a href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/">【第3部】監視・ログ・バックアップ・セキュリティの詳細設計</a><br />
監視／ログ／バックアップ・リストア／セキュリティ／運用スクリプトの5領域</p>
</li>
</ul>
<p>第2部・第3部では、各記事の後半にあたる詳細解説をnote（有料）で公開しています。</p>
<p><strong>はじめに</strong></p>
<p>基本設計では、要件をシステム構成、処理方式、運用方式に落とし込みます。</p>
<p>では、詳細設計では何をするのでしょうか。</p>
<p>詳細設計と聞くと、サーバのパラメータを決める、ミドルウェアの設定値を書く、クラウドサービスの設定項目を埋める、といったイメージを持つ人もいるかもしれません。</p>
<p>もちろん、それらは詳細設計の重要な要素です。</p>
<p>しかし、詳細設計は、単にパラメータ表を埋める工程ではありません。</p>
<p>基本設計で決めた方式を、実際に構築・設定・テスト・運用できる粒度まで落とし込む工程です。</p>
<p class="isSelectedEnd">たとえば、基本設計で「ログを1か月保持する」と決めたなら、詳細設計では、どのログファイルを対象にするのか、どのディレクトリに出力するのか、どの周期でローテーションするのか、圧縮するのか、何世代残すのか、バックアップ対象に含めるのか、容量監視をどうするのかまで具体化します。</p>
<p class="isSelectedEnd">基本設計で「7時までに業務を開局する」と決めたなら、詳細設計では、その運用要件をジョブ、スクリプト、監視、起動停止、開局前チェックに落とします。</p>
<p class="isSelectedEnd">どのジョブを何時に起動するのか。<br />
どのスクリプトを実行するのか。<br />
どの戻り値を正常とするのか。<br />
終了遅延をどう検知するのか。<br />
開局前チェックで何を確認するのか。<br />
どの監視を再開するのか。</p>
<p class="isSelectedEnd">これは一見すると運用設計の話に見えます。</p>
<p class="isSelectedEnd">しかし、詳細設計では、この運用要件を実際の製品設定、ジョブ定義、スクリプト仕様、監視設定、手順書の粒度に落とします。</p>
<p class="isSelectedEnd">ここで落とし込みが甘いと、運用試験や本番移行前に手戻りが発生します。</p>
<p class="isSelectedEnd">つまり、詳細設計とは、基本設計で決めた方針を、OS、ミドルウェア、DB、ジョブ、監視、バックアップ、クラウドサービス、運用スクリプト、手順、試験観点へ展開する工程です。</p>
<p class="isSelectedEnd">構築担当者が設定値を判断しなければならない。<br />
テスト担当者が期待値を確認できない。<br />
運用スクリプトが作られていない。<br />
ジョブは定義されているが、異常時の分岐が分からない。<br />
監視項目はあるが、閾値や通知先が決まっていない。<br />
バックアップは設定されているが、リストア手順がない。</p>
<p class="isSelectedEnd">こうした問題は、詳細設計の時点で「構築できる粒度」「テストできる粒度」「運用できる粒度」まで落とし込めていないことから起きます。</p>
<p class="isSelectedEnd">この記事では、基盤SEの目線で、詳細設計で何を具体化するのかを整理します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">この記事で確認する視点</a></li><li><a href="#toc2" tabindex="0">詳細設計は基本設計の続きである</a></li><li><a href="#toc3" tabindex="0">詳細設計とパラメータ設計・環境定義</a></li><li><a href="#toc4" tabindex="0">詳細設計は品質保証ストーリーの一部である</a></li><li><a href="#toc5" tabindex="0">詳細設計で見るべきなのは「設定値」ではなく「接続性」である</a></li><li><a href="#toc6" tabindex="0">詳細設計は製品・ミドルウェア単位で分かれやすい</a></li><li><a href="#toc7" tabindex="0">「第一部まとめ｜詳細設計の本質」</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">この記事で確認する視点</span></h2>
<p class="isSelectedEnd">詳細設計書を見るときは、設定値そのものだけを追ってはいけません。</p>
<p class="isSelectedEnd">この記事では、詳細設計を確認する時の視点として、次の観点を整理します。<br />
各章の末尾では、その領域ごとの確認観点を3つに絞って整理します。</p>
<ul data-spread="false">
	<li>この設定値は、基本設計のどの方針を受けているのか</li>
	<li>なぜこの値でよいと言えるのか</li>
	<li>構築担当者が、この設計書を見て同じ設定を再現できるか</li>
	<li>テスト担当者が、期待値を判断できるか</li>
	<li>運用担当者が、障害時に使える設計になっているか</li>
	<li>監視、ログ、バックアップ、ジョブ、スクリプト、手順書とつながっているか</li>
	<li>この設計で品質を確保できると説明できるか</li>
</ul>
<p class="isSelectedEnd">詳細設計は、設定値を埋める作業ではありません。</p>
<p class="isSelectedEnd">基本設計で決めた方式を、構築、テスト、運用、保守に接続し、「なぜこの設計でよいのか」を説明できる状態にする工程です。</p>
<p>この視点で見ると、詳細設計書は単なるパラメータ表ではなく、構築・テスト・運用を成立させるための設計資料として見えるようになります。</p>


<h2 class="wp-block-heading"><span id="toc2">詳細設計は基本設計の続きである</span></h2>


<p class="wp-block-paragraph">詳細設計は、基本設計と切り離された工程ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた内容を、実際に構築・設定できるレベルに落とし込むのが詳細設計です。</p>


<p class="wp-block-paragraph">基本設計では、たとえば次のようなことを決めます。</p>


<ul id="9f39a30f-e887-4d15-a1e8-6bba27dda93a" class="wp-block-list">
	<li>システム構成</li>


	<li>処理方式</li>


	<li>サーバ構成</li>


	<li>ネットワーク構成</li>


	<li>DB構成</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">たとえば、基本設計で「Web/AP/DBの3層構成」と決めたなら、詳細設計では、各サーバのホスト名、IPアドレス、OS設定、導入ミドルウェア、待ち受けポート、接続先、タイムアウト、ログ出力先、起動停止順序を決めます。</p>


<p class="wp-block-paragraph">基本設計で「監視する」と決めたなら、詳細設計では、監視対象、監視方式、監視間隔、閾値、検知条件、通知先、抑止条件、一次対応手順まで落とします。</p>


<p class="wp-block-paragraph">基本設計で「バックアップを取得する」と決めたなら、詳細設計では、対象ファイル、対象DB、取得コマンド、実行ジョブ、取得時刻、世代数、保管先、削除条件、リストア手順、戻し先、確認方法まで落とします。</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="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">パラメータ設計は、その中でも、OS、ミドルウェア、DB、ジョブ管理製品、監視製品、バックアップ製品、クラウドサービスなどの設定値を具体化する作業です。</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">OS、Web/APサーバ、DB、ジョブ管理、監視、バックアップ製品、クラウドサービスには、膨大な設定項目があります。これらをすべて個別に妥当性検証することは、現実的ではありません。</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>


<h2 class="wp-block-heading"><span id="toc4">詳細設計は品質保証ストーリーの一部である</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">なぜこの値なのか。<br />
なぜデフォルト値でよいのか。<br />
なぜこの監視項目で足りるのか。<br />
なぜこの試験で確認できたと言えるのか。<br />
なぜこの構成で性能要件を満たすと判断したのか。</p>


<p class="wp-block-paragraph">このとき、詳細設計書に設定値だけが並んでいても説明できません。</p>


<p class="wp-block-paragraph">必要なのは、次の接続です。</p>


<ul id="39bb756f-5806-4ba7-90eb-bd16074ea7dd" class="wp-block-list">
	<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>


<p class="wp-block-paragraph">だからこそ、詳細設計では、次の項目を重点的に設計します。</p>


<ul id="de11d93f-e406-478b-9714-1d7b75358ff6" class="wp-block-list">
	<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">テストは、見えない全パターンを無限に洗い出すものではありません。要件定義、基本設計、詳細設計で決めた内容に対して、Vモデルに沿って確認観点を展開するものです。</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="toc5">詳細設計で見るべきなのは「設定値」ではなく「接続性」である</span></h2>


<p class="wp-block-paragraph">詳細設計というと、どうしても設定値に目が行きます。</p>


<p class="wp-block-paragraph">OSのパラメータ。<br />
ApacheやTomcatの設定。<br />
DBの初期化パラメータ。<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>


<ul id="7a1d5e0c-cdca-4deb-93ab-52af06482cf2" class="wp-block-list">
	<li>基本設計：ログを1か月保持する</li>


	<li>詳細設計：logrotate設定、退避先、圧縮有無、世代数</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">ログ保持期間は決まっているが、ローテーション設定がない。<br />
ログ出力先は決まっているが、容量監視がない。<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>


<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>


<ul id="20bfa6c2-64a6-4731-90cd-ab2b3b5fb308" class="wp-block-list">
	<li>OS詳細設計書</li>


	<li>Webサーバ詳細設計書</li>


	<li>APサーバ詳細設計書</li>


	<li>DB詳細設計書</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">構築担当者は、OSを設定し、Webサーバを設定し、APサーバを設定し、DBを設定し、ジョブ管理製品にジョブを登録し、監視製品に監視項目を設定します。</p>


<p class="wp-block-paragraph">そのため、詳細設計も自然と製品・ミドルウェア・クラウドサービス単位になります。</p>


<p class="wp-block-paragraph">ただし、ここで注意が必要です。</p>


<p class="wp-block-paragraph">製品単位で詳細設計書を分けると、設計対象を管理しやすくなる一方で、処理方式としてのつながりが見えにくくなることがあります。</p>


<p class="wp-block-paragraph">たとえば、バックアップ方式は、DB詳細設計、ストレージ詳細設計、ジョブ詳細設計、監視詳細設計、運用スクリプト設計にまたがります。</p>


<p class="wp-block-paragraph">ログ方式は、OS詳細設計、ミドルウェア詳細設計、監視詳細設計、バックアップ詳細設計にまたがります。</p>


<p class="wp-block-paragraph">ジョブ方式は、ジョブ管理製品の詳細設計だけでなく、実行スクリプト、ログ出力、異常終了時の通知、運用手順、運転スケジュールにまたがります。</p>


<p class="wp-block-paragraph">つまり、詳細設計では、製品単位で分けることと、処理方式として横断的につなぐことの両方が必要です。</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">ここから先は、基盤SEが実際に詳細設計で具体化する領域を、OS、Web/AP、DB、ジョブ、監視、ログ、バックアップ、セキュリティ、運用スクリプトに分けて見ていきます。</p>


<p class="wp-block-paragraph">特に、<strong>ジョブ管理規約とスクリプトの戻り値設計、正常系だけで終わらせない単体試験、特権IDや本番作業統制の考え方は、現場でトラブルを起こしやすいポイント</strong>です。</p>


<p class="wp-block-paragraph">詳細設計を「設定表作成」で終わらせず、構築・テスト・運用で使える成果物にするための具体論を整理します。</p>


<p class="wp-block-paragraph">この先、後編①ではOS・Web/AP・DB・ジョブを、後編②では監視・ログ・バックアップ・セキュリティ・運用スクリプトを扱います。</p>


<p class="wp-block-paragraph">&#8211; OS詳細設計で見るべき観点<br />
&#8211; Web/APサーバ詳細設計で性能・運用とつなげる考え方<br />
&#8211; DB詳細設計で性能・バックアップ・セキュリティをどう見るか<br />
&#8211; ジョブ詳細設計で事故りやすい戻り値設計<br />
&#8211; ジョブ管理規約とスクリプトのコーディング規約をそろえる理由<br />
&#8211; 監視・ログ・バックアップ設計で後工程に漏れを出さない見方<br />
&#8211; セキュリティ詳細設計を技術設定だけで終わらせない考え方<br />
&#8211; 運用スクリプトの設計・試験で見落としやすいポイント<br />
&#8211; 詳細設計でやってはいけないこと</p>


<h2 class="wp-block-heading"><span id="toc7">「第一部まとめ｜詳細設計の本質」</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">その本質を踏まえて、詳細設計でやってはいけないことを4つ整理します。</p>


<p class="wp-block-paragraph"><strong>基本設計とのつながりを見ない<br />
</strong>詳細設計は、基本設計で決めた方式を具体化する工程です。基本設計との対応が見えない詳細設計は、ただの設定メモになります。</p>


<p class="wp-block-paragraph"><strong>製品パラメータを埋めるだけで終わる<br />
</strong>詳細設計では設定値を決めますが、それだけでは不十分です。構築、テスト、運用、障害対応までつながる粒度で設計します。</p>


<p class="wp-block-paragraph"><strong>設定値の理由を書かない<br />
</strong>なぜその値にしたのかが分からないと、レビューも保守もできません。推奨値なのか、性能要件から決めたのか、製品制約なのか、運用要件なのかを残します。</p>


<p class="wp-block-paragraph"><strong>全パラメータを保証したつもりになる<br />
</strong>詳細設計は、すべての製品パラメータやすべての組み合わせ挙動を案件ごとに完全検証する工程ではありません。要件・方式・リスクに影響する項目を重点的に設計し、標準構成やデフォルト値に依拠する範囲を明確にします。</p>


<p class="wp-block-paragraph">第2部ではOS・Web/AP・DB・ジョブ、第3部では監視・ログ・バックアップ・セキュリティ・運用スクリプトの注意点を整理します。</p>


<p class="wp-block-paragraph">扱う論点の多くは、「知っているか、知らないか」で後工程の品質が大きく変わるものです。設計書の体裁は整っているのに、システムテストや本番移行前に手戻りが発生する。その原因の多くは、詳細設計のこの段階で見落とされています。</p>
<div style="border: 1px solid #d9e8ff; border-radius: 8px; padding: 18px 20px; margin: 28px 0; background: #f8fbff;">
<p style="font-size: 13px; color: #336699; margin: 0 0 8px;">続けて読む</p>
<p style="font-size: 16px; font-weight: bold; color: #333; margin: 0 0 12px;">詳細設計で決めること 全3回シリーズ</p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-overview/"> 【第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方 </a></p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-part1-os-db-job/"> 【第2部】OS・Web/APサーバ・DB・ジョブの詳細設計｜基盤SEが決めるべき設計項目 </a></p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/"> 【第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点 </a></p>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/detailed-design-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fluent BitがPermission deniedでログを読めない｜ECS/Fargate共有VolumeのUID/GID設計</title>
		<link>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/</link>
					<comments>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 09:35:01 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3198</guid>

					<description><![CDATA[はじめに ECS/FargateでTomcatとFluent Bitを別コンテナとして起動し、同じVolumeを共有してログを収集する構成を作りました。 Tomcatが共有Volumeへログを書き込み、Fluent Bi [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="5fc6e5e0-fb23-4233-a997-2bcc20f52f3f" data-pm-slice="0 0 []"><strong>はじめに<br />
</strong><br />
ECS/FargateでTomcatとFluent Bitを別コンテナとして起動し、同じVolumeを共有してログを収集する構成を作りました。</p>
<p id="9648fe8f-8d5b-428e-8169-c54a39a78e42">Tomcatが共有Volumeへログを書き込み、Fluent Bitが同じVolumeをマウントしてログを読み取る構成です。</p>
<p id="9c5ed8a8-6f4e-4820-a3ef-3505e9dd7323">最初に発生したのはTomcat側のPermission deniedでした。その問題を解消してTomcatが正常にログを書けるようになると、今度はFluent Bit側で次のエラーが発生しました。</p>
<pre id="82f9231a-1dc6-4a73-80ab-6ed50cc1232a"><code>[error] [input:tail:tail.0]
cannot open /var/log/tomcat/app01/catalina.2030-09-18.log

[error] [plugins/in_tail/tail_file.c:888 errno=13]
Permission denied
</code></pre>
<p id="3a0fd474-3301-4118-8fb8-5db604e5a1e7">GCログでも同様です。</p>
<pre id="04a3d5a3-d837-4ad3-8e90-0a8578392c4a"><code>[error] [input:tail:tail.2]
cannot open /var/log/tomcat/app01/GC_log....txt

[error] [plugins/in_tail/tail_file.c:888 errno=13]
Permission denied
</code></pre>
<p id="8c686dc1-2dfd-4c6d-92f7-221dcd095d90">Tomcat自身はログを書けています。それなのに、同じVolumeを参照するFluent Bitはログを読めません。</p>
<p id="c3a8dc29-403d-467f-b26a-ad644df67624">今回の問題は、Tomcat単体では解決していても、<strong>ECSタスク全体では権限設計が成立していなかった</strong>ことにありました。</p>
<p id="5a926af7-441f-4533-a861-e59afa69caf8">前回の</p>

<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/" title="ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由" 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 loading="lazy" decoding="async" width="320" height="180" src="https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-752x423.png 752w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由</div><div class="blogcard-snippet internal-blogcard-snippet">ECS/Fargateで非rootコンテナを実行した際、Dockerfileでchown済みのログディレクトリがPermission deniedになった実例をもとに、空のデータVolume（Empty Volume）とbind mount、VOLUMEの仕様、対策、設計レビュー、事前PoCで確認すべき点を解説します。</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 loading="lazy" decoding="async" 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" /></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.14</div></div></div></div></a>
<p>では「ビルド時と実行時」を分けて考えました。今回はその続きとして、「コンテナ単体とECSタスク全体」を分けて考えます。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">今回の構成｜Tomcatが書き、Fluent Bitが読む</a></li><li><a href="#toc2" tabindex="0">発端はTomcat側のPermission deniedだった</a></li><li><a href="#toc3" tabindex="0">Tomcatは書けるようになった。しかしFluent Bitは読めなかった</a></li><li><a href="#toc4" tabindex="0">chmod 777で原因を権限問題に絞り込んだ</a></li><li><a href="#toc5" tabindex="0">直接原因と設計上の原因は分けて考える</a><ol><li><a href="#toc6" tabindex="0">技術的な直接原因</a></li><li><a href="#toc7" tabindex="0">設計上の原因</a></li></ol></li><li><a href="#toc8" tabindex="0">共有VolumeではUID/GIDをコンテナ間インターフェースとして考える</a></li><li><a href="#toc9" tabindex="0">setgidで新規ログのgroupを引き継ぐ</a></li><li><a href="#toc10" tabindex="0">umaskで新規ログのmodeを制御する</a></li><li><a href="#toc11" tabindex="0">Volumeの初期権限を直すだけでは足りない</a></li><li><a href="#toc12" tabindex="0">恒久対策として考えられる構成</a><ol><li><a href="#toc13" tabindex="0">1. 権限設定用コンテナでVolumeを初期化する</a></li><li><a href="#toc14" tabindex="0">2. Tomcatを非rootで実行する</a></li><li><a href="#toc15" tabindex="0">3. Tomcat側でumaskを設定する</a></li><li><a href="#toc16" tabindex="0">4. Fluent Bitを共有GIDから読み取れる状態にする</a></li><li><a href="#toc17" tabindex="0">5. Fluent Bit側は可能ならread-onlyでマウントする</a></li><li><a href="#toc18" tabindex="0">6. 新しいログが生成された後まで確認する</a></li></ol></li><li><a href="#toc19" tabindex="0">この構成は各環境で検証が必要</a></li><li><a href="#toc20" tabindex="0">ECS/Fargateで共有Volumeを使うときの確認項目</a></li><li><a href="#toc21" tabindex="0">まとめ：共有Volumeはコンテナ間インターフェースとして設計する</a></li></ol>
    </div>
  </div>

<h2 id="39f92fb2-7283-46ee-9b4f-a88ff64d5bd3"><span id="toc1">今回の構成｜Tomcatが書き、Fluent Bitが読む</span></h2>
<p class="isSelectedEnd">今回の構成を単純化すると、Tomcatが共有Volumeへログを書き込み、Fluent Bitが同じVolumeをマウントしてログを読み取る構成です。</p>
<p><div id="attachment_3416" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3416" class="wp-image-3416 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3416" class="wp-caption-text">図：ECS/Fargateの共有Volume構成（Tomcat → Fluent Bit）</p></div></p>
<p class="isSelectedEnd">TomcatはWriterとして、共有Volume上の<code dir="ltr">/var/log/tomcat/app01/</code>へ<code dir="ltr">catalina.2030-09-18.log</code>やGCログを書き込みます。Fluent BitはReaderとして同じVolumeを参照し、<code dir="ltr">in_tail</code>でこれらのログファイルを監視します。</p>
<p class="isSelectedEnd">両コンテナが直接データを受け渡しているのではなく、<strong>共有Volume上のログファイルがTomcatとFluent Bitの間のインターフェース</strong>になっています。</p>
<p class="isSelectedEnd">本記事で扱うのは、Fluent Bitの<code dir="ltr">in_tail</code>で共有Volume上のファイルを直接監視する構成です。アプリケーションの標準出力を<code dir="ltr">awsfirelens</code>ログドライバ経由でFluent Bitへ渡すFireLensの一般的な構成とは異なります。</p>
<p>また、公式の<code dir="ltr">aws-for-fluent-bit</code>イメージをデフォルトのrootユーザーで実行している場合、本記事で扱うような読み取り権限の問題は通常表面化しません。今回の環境ではFluent Bitを非rootユーザーで実行していたため、共有Volume上のファイル権限が問題になりました。</p>
<h2 id="3ea86439-4020-4e07-b307-d33f04d836c8"><span id="toc2">発端はTomcat側のPermission deniedだった</span></h2>
<p id="e1bb26ef-840f-4579-ab41-06c526826a71">今回、最初に問題になったのはFluent Bitではありません。</p>
<p id="28f8b72e-be2c-4ee4-9dea-3f3f0bad9d83">Tomcat側でGCログを作成できず、Javaの起動そのものが失敗していました。</p>
<pre id="836ec7a2-ad52-4bdf-b276-2eab12662abb"><code>Error opening log file
'/var/log/tomcat/app01/GC_log....txt':
Permission denied

Initialization of output
'file=/var/log/tomcat/app01/GC_log....txt' failed.

Error: Could not create the Java Virtual Machine.
</code></pre>
<p id="c748d671-be08-46e0-b6e2-9ad95d9b0d77">Dockerfileでは対象ディレクトリへchownしていましたが、Fargateタスク起動時に同じパスへVolumeをマウントしていたため、イメージ作成時に設定したディレクトリではなく、実行時にマウントされたVolume側のファイルシステムが見えていました。</p>
<p id="40636595-4c7c-4a78-ad7a-46e6bd27833e">この仕組みについては、先ほど示した<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/">前回</a>の記事で詳しく整理しています。</p>
<p id="c3b8c4dc-5577-4d09-9d59-c4a07f8122d8">本記事では、その問題を解消した<strong>後に発生した問題</strong>を扱います。</p>
<h2 id="8f29331b-fc94-49f2-8877-8fe736dd554f"><span id="toc3">Tomcatは書けるようになった。しかしFluent Bitは読めなかった</span></h2>
<p id="aa74750b-498d-4f09-8f3e-348300e81213">Tomcat側では、Volumeがマウントされた後に対象ディレクトリのowner/groupとpermissionを変更することで、ログを書き込める状態にしました。</p>
<p id="63b24e02-220b-4b2a-935d-bda2e4ea600f">これによってTomcatは正常に起動します。</p>
<p id="fae902ba-7712-43e7-963e-4c322a0d2237">ところが、次にFluent Bitでerrno=13が発生しました。</p>
<p id="66ce63ab-f2fa-4a7c-aa51-99354620861f">Linuxのerrno=13はEACCES、アクセス拒否です。</p>
<p id="b16ccc75-b294-40be-9f91-e9a59819b503">ここで重要なのは、</p>
<p id="b9b0eb80-778b-4395-925f-7ae5a7a31f50"><strong>Tomcatがログを書けることと、Fluent Bitがそのログを読めることは別の権限要件</strong></p>
<p id="7c3dcb82-4db3-4620-b871-df050655bdf5">だという点です。</p>
<p id="b0659908-da4d-4338-92b8-4d2be223d317">例えばTomcatが所有者であるログファイルなら、owner権限によってTomcat自身は問題なく書き込めます。</p>
<p id="2755838c-957b-4fe8-bed0-c8216e2efa24">Fluent Bitが別UIDで実行されている場合、そのファイルのgroupまたはotherに読み取り権限がなければアクセスできません。</p>
<p id="4874443f-328a-4919-a747-ef56ad6e18ee">さらにファイル自身のrだけでは足りません。</p>
<p id="368e1fd1-adae-400c-b2a5-5458b3853a59">Fluent Bitが対象ファイルへ到達するためには、<strong>ルートから対象ファイルまで、パス上に存在するすべてのディレクトリにx権限が必要</strong>です。</p>
<p id="3f8fe455-dbc8-4a39-89a5-32a9d9c24cdb">例えば、</p>
<pre id="caa4f965-bc56-4dda-8a04-a4e87fc16e6e"><code>/
└─ var
   └─ log
      └─ tomcat
         └─ app01
            └─ catalina.2030-09-18.log
</code></pre>
<p id="79109715-a431-4556-941f-65100e570a16">であれば、/var、/var/log、/var/log/tomcat、/var/log/tomcat/app01を順に辿れる必要があります。</p>
<p id="37fcfe56-6e4b-4b14-b0df-2587c2e177a4">さらに、*.logのようなワイルドカードでファイルを探索する場合は、ディレクトリエントリを列挙するためのr権限も考慮する必要があります。</p>
<p id="33062554-e7ef-43b8-a1b9-6d436a4d4501">確認すべきなのは、</p>
<pre id="f246d788-6b9a-4274-8692-7ba07abc039f"><code>ファイルのread権限
        ＋
パス上の全ディレクトリのtraverse権限
        ＋
Fluent Bit自身のUID/GID
</code></pre>
<p id="bb1a45f2-a1b5-4776-8c35-d00086fa28ad">です。</p>
<p id="3acca8f7-05d9-4bb6-b622-a3f5e54ff59d">なお、Volumeをマウントしているパスより上位のディレクトリは、各コンテナイメージ側のファイルシステムです。同じVolumeを共有していても、その上位階層まで同じ状態になるわけではありません。</p>
<h2 id="6b39b218-8974-4629-be66-fce95a717261"><span id="toc4">chmod 777で原因を権限問題に絞り込んだ</span></h2>
<p id="91020fa4-edb8-4aa5-840d-77a52cfcec2d">切り分けとして、対象ログのpermissionを一時的に緩める確認を行いました。</p>
<p id="73fe1859-8b76-4db1-b139-af0c0fc250eb">777にするとFluent Bitからログを監視できるようになったため、</p>
<ul id="12ddeaf1-d60e-401d-a5d7-8761b2e5548d">
<li>
<p id="04eb1893-b83b-415e-b7eb-06913c776fa9">Fluent Bitのtail設定</p>
</li>
<li>
<p id="8d063b91-f912-4945-b94b-6f7b0b2bfbfe">対象ログのパス</p>
</li>
<li>
<p id="1cc9bea7-5e4e-42b9-853f-c165d93f3cda">Volumeの共有そのもの</p>
</li>
</ul>
<p id="07f6bb37-b39d-4368-8975-7fec5b854962">ではなく、ファイルシステム上のアクセス権限が原因であることを確認できました。</p>
<p id="cb271790-fbe6-4691-a2ad-7b6fde57b836">もちろん、</p>
<pre id="b430ad22-892e-4fa7-89d8-e42a61efe77b"><code>chmod -R 777 /var/log/tomcat/app01
</code></pre>
<p id="d2b91129-75e7-4e5a-aee7-48275319d2c4">を恒久対策にはしません。</p>
<p id="f9424cbe-0f14-44fd-888e-980b838c4478">777は、原因を切り分けるための確認方法です。</p>
<p id="32939cc4-681e-421b-bbf7-8ddea68986b5">さらにchmod -R 775のようにディレクトリと通常ファイルへ同じmodeを再帰的に設定する方法も避けます。通常のログファイルに実行ビットを付与する必要はないためです。</p>
<p id="0dac8fdc-47aa-4492-b24c-9e2053e9b0e2">恒久対策では、ディレクトリとファイルの権限を分けて考えます。</p>
<h2 id="e75a115d-6948-4528-abf1-01a46aa59fd7"><span id="toc5">直接原因と設計上の原因は分けて考える</span></h2>
<p id="89df5522-243e-41dc-8956-2dbfecf6568a">今回の問題には、二つの原因があります。</p>
<h3 id="1aaf5a0b-8173-42b2-ad2b-71bae4d62057"><span id="toc6">技術的な直接原因</span></h3>
<p id="506d6e64-50f2-4894-ac78-7528a6eac1e3">Tomcatが生成したログファイルのowner/groupとmodeが、Fluent Bit側の読み取り条件を満たしていませんでした。</p>
<p id="d7690f9e-2af7-4305-8e2d-6cc00872c19e">Tomcatから見れば書き込めるファイルでも、別UID/GIDで動作するFluent Bitから見れば読み取れない状態です。</p>
<h3 id="cefcc138-93e1-4311-888d-c0173a42b29b"><span id="toc7">設計上の原因</span></h3>
<p id="eb903bf1-5c7b-4e7f-bd83-d98dc1554eac">Tomcatがログを書けることを権限設計のゴールにしてしまい、共有Volumeを利用するFluent Bitまで含めたアクセス要件になっていませんでした。</p>
<p id="ae4c6f92-d4a0-4373-8801-d5d677864312">本来の要件は、</p>
<pre id="0cd44622-49d7-483d-a6f0-5251ac4b1a14"><code>Tomcatが書ける
</code></pre>
<p id="b6ee8b00-fad0-44e1-a1d2-52870bc17b8d">ではなく、</p>
<pre id="3fecfdcf-ace7-4cd2-825c-ad982c2699d5"><code>Tomcatがログを書く
        ↓
Fluent Bitがそのログを継続して読む
</code></pre>
<p id="77108a82-036a-457d-8808-b697c163a016">です。</p>
<p id="1e7c1ffe-39bc-4d48-ac72-0c3172fe199c">ここをコンテナ単体ではなく、ECSタスク全体の要件として扱う必要があります。</p>
<h2 id="d3e417b2-26c4-47e5-a07c-c7b5679f9951"><span id="toc8">共有VolumeではUID/GIDをコンテナ間インターフェースとして考える</span></h2>
<p id="5caa8f14-78c0-4b48-a0cc-73360017b004">一つの解決方法として、TomcatとFluent Bitが共有するGIDを決める設計が考えられます。</p>
<p id="19a30d93-05ba-4a06-a320-8be690e41cd0">例えば、</p>
<pre id="88da91f8-c0a8-41a1-8310-1a9aebb076b4"><code>Tomcat
UID = 1071
GID = 3000

Fluent Bit
UID = xxxx
GID = 3000
</code></pre>
<p id="75711c20-88aa-4c25-83d3-b7cd46598295">とします。</p>
<p id="76e563ca-eb45-462b-84c9-ab678bbf0ca9">共有Volumeのログディレクトリを、</p>
<pre id="99659b33-cb0d-443a-b001-37e6d3fdd5ea"><code>owner = 1071
group = 3000
</code></pre>
<p id="a0b8aad8-a7e7-4e18-844b-e0d5a10e1b74">とすれば、</p>
<ul id="306986f6-568f-49a5-a913-6d19fc3edbb6">
<li>
<p id="e40676d7-a220-4476-a36a-53d1b91fab38">Tomcatはownerとしてログを生成する</p>
</li>
<li>
<p id="8f421e44-2d9f-42db-9e0d-d14f2c34b7ae">Fluent Bitはgroupとしてログを読む</p>
</li>
</ul>
<p id="20e27a8f-4064-42c1-98e1-7367b6c915a2">という役割分担ができます。</p>
<p id="523a511b-ae1d-4964-bc85-c189ae8201a5">重要なのは、3000という数値そのものではありません。</p>
<p id="81b6c83c-7396-4275-bb16-ad74eba60862"><strong>共有Volumeを境界として、WriterとReader双方から成立するUID/GIDを決めること</strong>です。</p>
<p id="d2b55031-f721-4f39-a966-d5ec368f9711">ECSのタスク定義では、Linuxコンテナの実行ユーザーをuserで指定できます。</p>
<p id="eb904391-7133-470a-aff8-ab5ec1fc5121">Fluent Bitを共有GIDで実行する場合、例えば設計上は、</p>
<pre id="c8407075-b31c-454f-88d5-6571512df0fe"><code>"user": "2000:3000"
</code></pre>
<p id="02b12102-e97b-469b-85c9-efbe169b25a0">のようにUIDとプライマリGIDを指定する方法があります。</p>
<p id="1987565b-3fbf-404c-8efd-80ad60c981a1">ECSには、Kubernetesのように、プロセスへ補助グループを追加する supplementalGroups 相当の仕組みはありません。Volumeのgroup所有権を自動調整する仕組みについても、bind mountでは提供されていません。</p>
<p id="9023212a-92eb-4f47-ac99-05a4cfb550a1">必要に応じて、</p>
<ul id="298e420c-3cf9-43ed-b739-592e98f2f76c">
<li>
<p id="baeffa3f-6535-4d93-8270-a0852384db84">タスク定義のuser</p>
</li>
<li>
<p id="c1c1e13b-12b3-4c26-ab64-e373de7d21ec">Fluent Bitのカスタムイメージ</p>
</li>
<li>
<p id="b700a967-606b-4ef2-a926-9c396fad5f73">イメージ内のuser/group定義</p>
</li>
</ul>
<p id="17901a18-b68e-49d7-9b62-0ebee102ad46">などを使って実行UID/GIDを設計する必要があります。</p>
<p id="55b00d45-3614-4e17-8e8d-34c481f6dad7">実環境では、設定値を見るだけではなく、</p>
<pre id="ce236e12-55c3-4582-9f72-aa2e1f0f6952"><code>id
</code></pre>
<p id="56169d5a-f510-44fe-8533-38a5fb54d8fc">で実際にプロセスがどのUID/GID/groupsで動作しているか確認することが重要です。</p>
<p id="e41fad2a-62a6-4f93-b661-4d41979de91d">また、タスク定義でuserを指定すると、コンテナのentrypoint自体もそのユーザーで実行されます。イメージのentrypointがroot権限を前提としたディレクトリ操作などを行っている場合は、別の起動エラーを起こす可能性があるため、その点も確認します。</p>
<h2 id="aee11230-bd0a-40d5-a7f2-b1bfcdc3a7d0"><span id="toc9">setgidで新規ログのgroupを引き継ぐ</span></h2>
<p id="fb4ca864-4f59-4be7-99db-79998b08ec6a">共有Volumeのディレクトリを最初に、</p>
<pre id="bc1cae32-b442-4e9b-8e9e-8de07ffd4ca0"><code>owner = 1071
group = 3000
</code></pre>
<p id="be120e79-1f71-41a0-8627-923896c6aed4">としても、それだけでは十分ではありません。</p>
<p id="ccf1c1fb-06ae-43ac-9fb6-b25db17f94bc">Tomcatがその後に新しいログファイルを作成すると、新規ファイルのgroupが期待した値にならない可能性があります。</p>
<p id="c9f1c659-8b3d-4d36-a3c8-e2c244eb7308">そこで利用できるのが、ディレクトリのsetgidビットです。</p>
<p id="d13e454f-b8d9-4770-a822-f84c3136ca2f">例えば、</p>
<pre id="9b42879a-1944-4a0b-9c26-aa39262f8a49"><code>chown 1071:3000 /var/log/tomcat/app01
chmod 2750 /var/log/tomcat/app01
</code></pre>
<p id="dbbfd489-1cfc-4a74-a32f-79f5f0e0540a">とします。</p>
<p id="b20f8a1d-da0b-41e6-82a9-acf9b2f58524">先頭の2がsetgidです。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="935" data-end="1001">setgidを設定したディレクトリ配下で新しくファイルを作成すると、ファイルのgroupは親ディレクトリのgroupを引き継ぎます。</p>
<p dir="auto" data-start="1006" data-end="1178"><strong data-start="1006" data-end="1065">新しくサブディレクトリが作成された場合も、通常は親ディレクトリのgroupとsetgidビットを引き継ぎます。</strong> 例えば親ディレクトリにsetgidを設定し、Tomcat側の<code data-start="1096" data-end="1103">umask</code>を<code data-start="1104" data-end="1110">0027</code>としている場合、新規サブディレクトリは基本的に<code data-start="1133" data-end="1138">750</code>となり、共有groupに所属するReader側からもパスを辿れる構成にできます。</p>
<p dir="auto" data-start="1183" data-end="1277">そのため、Tomcatが日付別などのサブディレクトリを作成して、その配下にログを出力する構成でも、setgidとumaskを組み合わせることでgroupとアクセス権を維持しやすくなります。</p>
<p dir="auto" data-start="1282" data-end="1378">ただし、アプリケーション自身がディレクトリのmodeやgroupを明示的に変更する場合は、その設定が優先されるため、実際に生成されたディレクトリのowner/group/modeを確認します。</p>
<p id="ae950b06-b152-46de-8b64-1b37dd112656">概念的には、</p>
<pre id="ac2f73eb-fe06-4a05-896d-e3e51ee055cf"><code>/var/log/tomcat/app01
owner = 1071
group = 3000
setgid
        │
        │ Tomcatが新規作成
        ▼
catalina.2030-09-18.log
group = 3000
</code></pre>
<p id="5c1f1081-bddd-4f29-b9c6-d101008a23bc">となります。</p>
<p id="a51660d9-2222-4162-bebc-eab14d49ac04">これによって、日付が変わって新しいログファイルが作成された場合でも、共有GIDを維持しやすくなります。</p>
<h2 id="5e2608c9-a349-42a5-aefe-456e1380049a"><span id="toc10">umaskで新規ログのmodeを制御する</span></h2>
<p id="bab28eef-8d7a-4542-b9c2-54899604d55f">groupが正しくても、ファイルにgroupの読み取り権限がなければFluent Bitは読めません。</p>
<p id="147dccc2-732d-4896-94bf-33f06e018dd9">そこで次に考えるのがumaskです。</p>
<p id="356e4af0-e71f-4983-bc7a-f329bde0be67">Linuxで一般的なファイルが新規作成される場合、最終的なmodeにはプロセスのumaskが影響します。</p>
<p id="a43d12c4-f8ef-40f3-a40b-5e42050d45f9">例えば、</p>
<pre id="e6263633-8971-4cc2-bd61-2d66c1ef5d75"><code>umask 0027
</code></pre>
<p id="9cf1aa38-cb5a-451c-b0d9-947a7289787a">であれば、通常ファイルは基本的に、</p>
<pre id="5a21b257-b63b-46a3-8021-e67d14b2697b"><code>640
rw-r-----
</code></pre>
<p id="ecc110fc-72f3-46d8-98ac-008f7a196286">となります。</p>
<p id="057a1509-69f6-4c90-86d7-5f4ffd7e1f81">これなら、</p>
<pre id="480f6520-2e0b-4d64-b4f9-377e9b36c5eb"><code>owner = Tomcat
group = Fluent Bitと共有するgroup
</code></pre>
<p id="f8c0fca6-234a-497b-b5c8-9ae7c1333a17">という構成において、</p>
<pre id="df499f3d-c8f1-4de3-ad94-0b563cd3bcb4"><code>Tomcat      → read / write
Fluent Bit  → read
others      → accessなし
</code></pre>
<p id="b184eca1-9a98-40b4-ae73-4eef96c646a7">というアクセス制御ができます。</p>
<p id="e8a44480-223e-4db1-b0db-1d984ff25331">考え方としては、</p>
<pre id="aeb2401e-9d9e-4a5a-9316-3c9f94c5e4e6"><code>setgid
  ↓
誰のgroupになるか

umask
  ↓
そのgroupに何を許可するか
</code></pre>
<p id="0df2ae87-bbf7-46d3-9f5c-80eaf314aba6">です。</p>
<p id="f0498899-15fc-4b8d-ae69-819fb775a31d">共有Volumeでは、この二つをセットで考えると整理しやすくなります。</p>
<p id="7b68524b-ef47-450e-aadd-e6003f78729a">なお、アプリケーション自身が明示的にpermissionを変更する場合など、umaskだけでは決まらないケースもあります。実際に生成されたファイルのowner/group/modeは必ず確認します。</p>
<h2 id="48732a5e-ac9f-48cf-8771-eccd59711182"><span id="toc11">Volumeの初期権限を直すだけでは足りない</span></h2>
<p id="8f5514cf-716c-420b-9b55-e6110c72a063">既存記事では、権限設定用コンテナを先行起動してVolumeを初期化する方式を扱いました。</p>
<p id="3783de1f-f2e3-489d-800f-0a24093d6142">ECSにはKubernetesのような専用のinit container機能はありませんが、</p>
<pre id="49e00a27-d395-49ae-918e-767f67be2f56"><code>権限設定用コンテナ
        ↓ SUCCESS
Tomcat / Fluent Bit
</code></pre>
<p id="775828ce-dfd0-4c62-b036-50f0ce0cab14">という依存関係を作ることができます。</p>
<p id="a15915a8-f763-44e4-97b5-556d2c288fc2">SUCCESSやCOMPLETEを依存条件として使う場合、依存先コンテナをessentialコンテナにはできません。権限設定用コンテナはessential: falseとして定義する必要があります。</p>
<p id="783ad2b1-4a9c-4664-8a51-41da15a19351">この方式そのものについては既存記事で詳しく説明しているため、本記事では繰り返しません。</p>
<p id="bfe7f9c9-1d13-4ac7-87f6-1cdbca967c01">今回重要なのは、その<strong>次</strong>です。</p>
<p id="fdd12768-ee11-4c4a-b82f-57d2dfae5dee">権限設定用コンテナが変更できるのは、基本的にタスク起動時点のVolumeの状態です。</p>
<p id="2d1ec9bc-d1ca-4c14-907d-7ef693616794">その後にTomcatが作成するログファイルについては、</p>
<ul id="d5ab40c7-0358-4110-8f4e-18ef17f65596">
<li>
<p id="8f918c69-b307-4960-8878-5599a64582c7">TomcatのUID</p>
</li>
<li>
<p id="aed8e301-0840-4045-9362-1ad3af792c8c">TomcatのGID</p>
</li>
<li>
<p id="e710d6fc-cd87-4e3a-8e8a-daf31a5046c5">親ディレクトリのsetgid</p>
</li>
<li>
<p id="c3db5184-3080-443d-98d4-884cb2fbf4b0">プロセスのumask</p>
</li>
<li>
<p id="a108fb78-beec-4114-b634-387c5004796b">アプリケーション自身のファイル生成方法</p>
</li>
</ul>
<p id="40cef107-ba8c-45a4-8938-df8e0dff96f2">などによってowner/group/modeが決まります。</p>
<pre id="db3c5dfb-dfa1-46fa-a785-7ea9cc7d9ec3"><code>Volume初期化
    ↓
正しい権限になった
    ↓
完了
</code></pre>
<p id="f47a0bc2-e44c-426c-8640-a9b52f4558ac">ではありません。</p>
<pre id="ca3421ed-9cd5-44b8-903a-cc889cd4a5f5"><code>Volume初期化
    ↓
Tomcat起動
    ↓
ログ新規生成
    ↓
Fluent Bitから読み取り
    ↓
翌日のログ新規生成
    ↓
引き続き読み取り
</code></pre>
<p id="cd572505-62e3-45e0-bf21-c641e8b2b206">まで成立して、初めてタスク全体として権限設計が成立します。</p>
<h2 id="1e8dc7dd-add3-4cd4-ad81-7366228b8be5"><span id="toc12">恒久対策として考えられる構成</span></h2>
<p id="ffeb0022-bf2f-46a9-834c-c5c71eb801fd">今回確認した事象とLinuxの権限の仕組みから整理すると、恒久対策としては次の構成が考えられます。</p>
<h3 id="ae365a94-34ba-4fea-b8ef-c4e85f400261"><span id="toc13">1. 権限設定用コンテナでVolumeを初期化する</span></h3>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="341" data-end="469">権限設定用コンテナでは、TomcatやFluent Bitと同じ共有Volumeを、権限変更用のマウントポイントとして<code data-start="400" data-end="406">/mnt</code>へマウントする想定です。<strong data-start="418" data-end="469">同じVolumeでも、コンテナごとに<code data-start="438" data-end="453">containerPath</code>は異なるパスを指定できます。</strong></p>
<p dir="auto" data-start="474" data-end="553">そのため、Tomcatからは<code data-start="488" data-end="512">/var/log/tomcat/app01/</code>として見えるVolumeを、権限設定用コンテナでは<code data-start="537" data-end="543">/mnt</code>として操作できます。</p>
<p dir="auto" data-start="558" data-end="562">例えば、</p>
<div class="relative w-full mt-4 mb-1">
<div class="">
<div class="contents">
<div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl">
<div class="relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback">
<div class="relative">
<div class="h-full min-h-0 min-w-0">
<div class="h-full min-h-0 min-w-0">
<div class="">
<div class="relative">
<div class="">
<div class="relative z-0 flex max-w-full">
<div id="code-block-viewer" class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr">
<div class="cm-scroller">
<pre class="cm-content q9tKkq_readonly m-0"><code><span class="ͼl">chown</span> <span class="ͼj">1071</span>:3000 /mnt
<span class="ͼl">chmod</span> <span class="ͼj">2750</span> /mnt</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="">
<div>とします。</div>
<div>
<p id="57b6bf8c-1c07-4b6b-b19a-b8370e85302d">2750はあくまで一例です。</p>
<p>必要なアクセス要件に応じてmodeを決めます。</p>
<p id="cb809d46-5b8e-4cc0-b2e3-3cdea26c6393">複数階層を初期化する場合も、ディレクトリと通常ファイルを分けて設定します。</p>
<p id="50bd43d4-ac36-4c62-9d48-7e52aeae342d">例えば、</p>
<div class="code-block-container">
<pre id="22fa3a14-e17f-474b-af23-481907c2ba72" data-name="preCode"><code class="hljs rust" data-name="code">find /mnt -<span class="hljs-class"><span class="hljs-keyword">type</span> <span class="hljs-title">d</span></span> -exec chmod <span class="hljs-number">2750</span> {} +
find /mnt -<span class="hljs-class"><span class="hljs-keyword">type</span> <span class="hljs-title">f</span></span> -exec chmod <span class="hljs-number">640</span> {} +</code></pre>
<div class="a-button__inner" data-v-6d7b4d65="">のように扱えば、ログファイルへ不要な実行ビットを付与せずに済みます。</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<h3 id="17c76e39-92b7-450a-814d-37519215fb18"><span id="toc14">2. Tomcatを非rootで実行する</span></h3>
<p id="923a0d3b-76ac-4f4f-8d53-f99b62cc4d19">Volumeの初期化を別コンテナへ分離すれば、Tomcat自身を権限変更のためにrootで実行する必要はありません。</p>
<p id="203f40aa-46a5-463b-bff9-8bb68297194f">Tomcatはアプリケーション実行用のUID/GIDで起動します。</p>
<h3 id="002b12c1-cf7f-4c12-9aa2-ed9cac9fe368"><span id="toc15">3. Tomcat側でumaskを設定する</span></h3>
<p id="8d7c2a39-13ec-4a27-91d7-18fd677bda96">例えば、</p>
<pre id="dfeb8931-8a26-47d2-8adc-35e6e62d5479"><code>umask 0027
</code></pre>
<p id="ec6916f0-cb4b-4585-bfe4-b7f189d3f750">としてからTomcatを起動します。</p>
<p id="599a95a6-3004-4f88-a124-607154a551ac">これにより、Tomcatが新しく作成するログファイルについて、共有groupから読み取り可能なmodeにすることを狙います。</p>
<h3 id="2ee0eba0-15ef-4cb6-a25f-0031b3edd5d9"><span id="toc16">4. Fluent Bitを共有GIDから読み取れる状態にする</span></h3>
<p id="0c4bc7a2-21d1-4c1e-bb95-b90219f142c9">Fluent Bit側も、共有Volume上のログを読み取れるUID/GIDで実行します。</p>
<p id="26cae69c-100d-4756-a00a-73675e7aa234">タスク定義のuserを利用する場合は、例えば、</p>
<pre id="72bb39a6-36cc-4a9f-8447-88cbea8cd06b"><code>"user": "2000:3000"
</code></pre>
<p id="f9491f3d-1324-4af3-93db-b221ae80b58c">のような指定が候補になります。</p>
<p id="b58f5923-9c7c-448d-a027-7138ae93b092">実際に使用するUID/GIDは、利用しているFluent Bitイメージやその実行方式に合わせて決めます。</p>
<h3 id="e36eaad7-44fb-42a6-8eb0-7e9e7b269514"><span id="toc17">5. Fluent Bit側は可能ならread-onlyでマウントする</span></h3>
<p id="204c2ad1-bd0b-4f75-9eb0-ba860a663ec6">Fluent Bitはログを読むだけであれば、共有ログVolumeをread-onlyでマウントする方が役割を明確にできます。</p>
<pre id="10013fa7-6305-4543-9c9d-e1cc81fe61f9"><code>{
  "sourceVolume": "tomcat-logs",
  "containerPath": "/var/log/tomcat/app01",
  "readOnly": true
}
</code></pre>
<p id="1bf2b111-1bbe-481e-b153-cfd05c076447">Fluent BitのDBファイルなど書き込みが必要なファイルは、共有ログVolumeとは別の書き込み可能な場所へ配置する必要があります。</p>
<h3 id="a8ed1fca-9b41-4f4e-ade6-bec70e9d9ca0"><span id="toc18">6. 新しいログが生成された後まで確認する</span></h3>
<p id="10261414-0798-443a-805b-78800af0488a">起動直後のファイルだけではなく、Tomcatが新しくログを作成した後に、</p>
<pre id="e2defeac-a372-4d9d-a74e-aab9f45f1269"><code>ls -ld /var/log/tomcat/app01
ls -l /var/log/tomcat/app01
id
</code></pre>
<p id="2514e1cb-a2aa-4a78-a4e4-8c8ca091529a">などで、</p>
<ul id="fec6c1c9-dc10-40b7-a1f1-4c5da5f95816">
<li>
<p id="eb2576ee-92c3-4167-a0cc-ffa450152565">owner</p>
</li>
<li>
<p id="044df3cd-2289-4de9-94cb-a1e0e8138d15">group</p>
</li>
<li>
<p id="a905fc2e-1d30-4946-b8d0-4e0be84b342c">mode</p>
</li>
<li>
<p id="209aa1c8-c99e-41d2-a302-70c4a70a9db5">TomcatのUID/GID</p>
</li>
<li>
<p id="749d50e5-c3f7-443b-b4fb-3c3a997be434">Fluent BitのUID/GID</p>
</li>
</ul>
<p id="1f02449a-61b8-4cd0-b84e-e69df135e40c">を確認します。</p>
<p id="8f93a687-5fc2-425b-a7b8-afecbc41f5ec">特に日付が変わってcatalina.YYYY-MM-DD.logが新しく生成された後や、GCログが新しいファイルへ切り替わった後にもFluent Bitが継続して読み取れることを確認します。</p>
<h2 id="6a833d64-ab34-494b-940a-8a36971ad4d1"><span id="toc19">この構成は各環境で検証が必要</span></h2>
<p id="8b1c6362-2ea7-49f5-b22a-58ad012e4c29">ここまでの構成は、今回確認した事象とLinuxのファイル権限の仕組みから整理した恒久対策案です。</p>
<p id="8963a324-f06b-4c34-8404-2d25cd045008">実際に必要となる設定は、</p>
<ul id="bcd707de-4864-4183-a88f-b4ee42883a25">
<li>
<p id="6019b458-4293-4653-b789-557e754c1ef8">使用するコンテナイメージ</p>
</li>
<li>
<p id="51dff3d7-1452-4690-9ba5-536f5ed2c70e">Tomcat/JDKのバージョン</p>
</li>
<li>
<p id="05b86abf-5032-4ef9-a66f-02d836f39499">ログの生成方式</p>
</li>
<li>
<p id="1f404818-6f88-40ab-ae22-d5eb9eb8bc38">Fluent Bitの実行UID/GID</p>
</li>
<li>
<p id="39fbf6f2-6e6b-4b7c-874d-b806b64108f9">Fluent Bitのin_tail設定</p>
</li>
<li>
<p id="360cd4a1-b320-4833-b5b6-606739e80173">Volumeのマウントポイント</p>
</li>
</ul>
<p id="5a3ab633-3ed0-4839-a977-dc8455e8f2f1">などによって変わります。</p>
<p id="6a5c1536-f071-4a3e-a17b-196150d1f4aa">本記事のUID/GIDやmodeをそのまま適用するのではなく、<strong>各環境で実際に生成されたファイルのowner/group/modeと、各コンテナの実行UID/GIDを確認したうえで検証してください。</strong></p>
<h2 id="72d330b1-da69-4a6e-8d55-76a8d27e87bc"><span id="toc20">ECS/Fargateで共有Volumeを使うときの確認項目</span></h2>
<p id="c732a93e-0c31-4176-9f11-0900a633cb3b">共有Volumeの権限問題を確認する際は、Writer側だけを見るのではなく、実行UID/GID、Volumeとファイルの権限、その後のファイル生成まで順に確認します。今回の事象を踏まえて、確認項目を以下に整理しました。</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>項番</th>
<th>確認項目</th>
<th>確認内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>WriterのUID/GID</td>
<td>ログを生成するコンテナを誰で実行するか</td>
</tr>
<tr>
<td>2</td>
<td>ReaderのUID/GID</td>
<td>ログを読むコンテナを誰で実行するか</td>
</tr>
<tr>
<td>3</td>
<td>実行時の<code>id</code></td>
<td>設定値ではなく、実際のUID/GID/groupsを確認する</td>
</tr>
<tr>
<td>4</td>
<td>Volumeのowner/group</td>
<td>マウント後の所有者・グループを確認する</td>
</tr>
<tr>
<td>5</td>
<td>ディレクトリ権限</td>
<td>Readerがパス上の各ディレクトリを辿り、必要に応じて列挙できるか</td>
</tr>
<tr>
<td>6</td>
<td>ファイル権限</td>
<td>Readerが実際のログファイルを読み取れるか</td>
</tr>
<tr>
<td>7</td>
<td>setgid</td>
<td>新規ファイルへ共有groupを引き継げるか</td>
</tr>
<tr>
<td>8</td>
<td>umask</td>
<td>新規ファイルに必要なgroup権限が付くか</td>
</tr>
<tr>
<td>9</td>
<td>新規ログ生成</td>
<td>日付切替やGCログ切替後も権限が維持されるか</td>
</tr>
<tr>
<td>10</td>
<td>起動順序</td>
<td>Volume初期化完了後に各コンテナが起動するか</td>
</tr>
<tr>
<td>11</td>
<td>root権限</td>
<td>権限初期化など、rootが必要な処理だけに限定できているか</td>
</tr>
<tr>
<td>12</td>
<td>read-only</td>
<td>Reader側から不要な書き込みを防止できるか</td>
</tr>
<tr>
<td>13</td>
<td>タスク再作成</td>
<td>新しいFargateタスクでも同じ状態を再現できるか</td>
</tr>
</tbody>
</table>
</figure>
<p id="a687798a-ca62-4ae2-a22c-022699d1a8fb">特に、起動時のVolumeのowner/groupが正しくても、その後に生成されるログのgroupとmodeがReaderの要件を満たすとは限りません。setgidとumask、新規ログ生成後の確認までを一連のテストとして扱うことが重要です。</p>
<h2 id="9ed9757d-d4f6-4ea5-aa66-9808f032622f"><span id="toc21">まとめ：共有Volumeはコンテナ間インターフェースとして設計する</span></h2>
<p id="22218c02-40b9-45b7-b058-3f59af54ea21">今回、Tomcatからログを書けるようになった時点では、権限問題を解決できたと思っていました。実際には、同じVolumeを利用するFluent Bitからログを読めず、タスク全体としてはまだ成立していませんでした。</p>
<p id="afb8b7a0-8fee-48bf-b3e4-1000c8a7170d">共有Volumeでは、マウント直後のowner/groupとpermissionを整えるだけでは不十分です。その後に生成されるファイルのgroupをどう引き継ぐか（setgid）、どのmodeで作成するか（umask）、Reader側のUID/GIDから読み取れるか、そしてログが新しく作り直された後も読み続けられるかまで確認する必要があります。</p>
<p id="b621282c-837a-448e-97da-36d47fac903c">TomcatとFluent Bitのように複数コンテナでVolumeを共有する場合、Volumeは単なる保存領域ではなく、コンテナ間でデータを受け渡すインターフェースになります。Writerが書けることではなく、Readerが継続して読めることが要件です。</p>
<p id="e4568da3-1aae-4c63-8501-c6ded112a086"><strong>コンテナ単体では正しい設定でも、ECSタスク全体では正しいとは限りません。</strong></p>
<hr id="d30c189c-ad11-4740-9123-7f1ea31c792b" />
<p id="16f455c4-af47-41de-bb4f-c4c3b8c314b5"><span style="font-size: 20px;">関連記事</span></p>
<p id="9e91710f-1903-4ece-8da4-72234df721c8">本記事の前段となった事象です。</p>
<p id="7ad6b663-6964-4d83-8203-4b99b5217cb0">DockerfileでchownしたディレクトリへECS/FargateのEmpty Volumeをマウントすると、なぜ設定したはずの権限が見えなくなるのか。ビルド時のファイルシステムと実行時のVolumeを分けて整理しています。</p>

<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/" title="ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由" 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 loading="lazy" decoding="async" width="320" height="180" src="https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-240x135.png 240w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-640x360.png 640w, https://sys-univ.com/wp-content/uploads/2026/08/5f2272883f1f19f228ad9dc0e58a281b-752x423.png 752w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由</div><div class="blogcard-snippet internal-blogcard-snippet">ECS/Fargateで非rootコンテナを実行した際、Dockerfileでchown済みのログディレクトリがPermission deniedになった実例をもとに、空のデータVolume（Empty Volume）とbind mount、VOLUMEの仕様、対策、設計レビュー、事前PoCで確認すべき点を解説します。</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 loading="lazy" decoding="async" 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" /></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.14</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</title>
		<link>https://sys-univ.com/dev/opedesign/</link>
					<comments>https://sys-univ.com/dev/opedesign/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:39:42 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1040</guid>

					<description><![CDATA[はじめに 大手SIerで20年以上、システム基盤エンジニアとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。 運用設計とは、本番稼働 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="e3f9d207-0676-4910-aba6-3b5a997ee710" data-pm-slice="0 0 []"><strong>はじめに</strong></p>
<p id="aa2339a9-1bae-4ab5-9f99-e400c8f0d90c">大手SIerで20年以上、システム基盤エンジニアとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。</p>
<p id="458ecb94-ff9e-4686-b73d-e1907de8eaef">運用設計とは、本番稼働後に必要となる作業、判断基準、体制を整理し、それをシステムの処理方式や構成と結びつける設計です。</p>
<ul id="fc41343c-8f38-48eb-8d3a-e601774b5294">
<li>
<p id="27714832-103c-4bcd-8c28-b5f74a3a8ded">監視対象は定義されているのに、何を異常とみなすのか決まっていない。</p>
</li>
<li>
<p id="1da93718-2a31-442b-b2b4-efcae508a4e4">ログは出力されているのに、保持期間や削除方法が決まっていない。</p>
</li>
<li>
<p id="656b1a12-2b99-4a86-8964-c12c0dda6064">バックアップは取得しているのに、必要な時間内にリストアできるか確認されていない。</p>
</li>
<li>
<p id="6701f869-b5a0-431d-9769-27dd3c03c396">ジョブネットは作られているのに、実行するスクリプトが存在しない。</p>
</li>
</ul>
<p id="6069f190-484b-4b44-b78f-eb7cb6f77e1d">こうした設計不備は、重大な障害の見逃しや復旧の遅れにつながります。システムを利用するお客様だけでなく、その先にいる利用者や社会へのサービス提供を損なう事態にもなりかねません。</p>
<p id="6f382857-21a0-482e-9b01-73fb6c1d5316">それほど重要な設計領域であるにもかかわらず、運用設計は多くのプロジェクトで軽視されてきました。</p>
<p id="bf2bcc0d-f477-4cb1-b445-49985eb6cba3">なぜでしょうか。</p>
<p id="efd12ae4-c022-49b3-b433-81c0c428470a">100のシステムがあれば、運用の形も100通りあります。運用・保守に関する確認観点を整理したフレームワークや標準はありますが、それをそのまま適用すれば運用設計が完成するわけではありません。</p>
<p id="95344c22-0432-46cf-90d5-d32edca3e9e4">サービス時間、業務日付、外部連携、夜間バッチ、監視、バックアップ、障害時の判断、運用体制は、システムごとに具体化する必要があります。</p>
<p id="b1015e32-1efe-4d0d-a878-97930889c1a8">非機能要件だけでなく、業務運用や組織の役割分担にもまたがるため、定型の設計書に集約しにくく、見える化しづらい設計領域だといえます。</p>
<p id="4529424a-a1a1-4d72-9dcc-988f25c845bb">もう一つ、情報の偏りという問題もあります。</p>
<p id="ebb4480a-e5c6-43d5-8e74-29546c3cc42d">世の中の技術情報を見渡すと、logrotateの設定方法やクラウドサービスの使い方といった処理方式寄りの解説か、ITILに基づく管理プロセスといった組織・サービス管理寄りの解説か、そのどちらかに偏っています。現場のSEが本当に苦労するのは、その中間にある領域です。</p>
<p id="42acb837-8490-472f-87a6-66f21e9672b6">運用要件をどの仕組みで実現し、どの設定値、スクリプト、ジョブ、監視条件に落とし込むのか。ここを扱った情報は、驚くほど少ないのが実情です。</p>
<p id="33a4078e-8ee6-4fc9-92de-7db81ce047cb">この記事では、システム基盤から見た運用設計を中心に、共通化しやすい検討項目を<strong>「運用設計書の目次サンプル」</strong>として示します。</p>
<p id="9e95b363-5d24-4146-b841-14c8fd371324">あわせて、運用設計が処理方式設計と切り離せない理由と、運用設計が要件定義から始まり、基本設計の段階で骨格が決まることを、現場の経験から整理します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">実際にあった運用設計漏れによるトラブル</a></li><li><a href="#toc2" tabindex="0">運用設計はいつやるのか｜要件定義から始まり基本設計で骨格が決まる</a></li><li><a href="#toc3" tabindex="0">処理方式設計と運用設計は双方向でつながっている</a></li><li><a href="#toc4" tabindex="0">運用スクリプトは運用設計で横断的に洗い出す</a></li><li><a href="#toc5" tabindex="0">運用設計の全体像</a></li><li><a href="#toc6" tabindex="0">システム基盤運用設計書の目次サンプル</a></li><li><a href="#toc7" tabindex="0">運用設計は誰がやるのか｜4つの役割と責務分界</a></li><li><a href="#toc8" tabindex="0">まとめ｜運用設計は要件定義から始まっている</a></li></ol>
    </div>
  </div>

<h2 id="d98b9154-87e5-497b-b34f-691bc12ec1af"><span id="toc1">実際にあった運用設計漏れによるトラブル</span></h2>
<p id="ff2cab21-7332-41f9-9622-c21ab28db787">まず、運用設計漏れによって発生したトラブルの例を見てみます。</p>
<p id="adfe03f6-c30c-46ed-984e-7e1c9d53cb42">あるサーバでは、syslogファイルをローテーションしないまま、ログが出力され続けていました。</p>
<p id="2bea0022-8fec-42a4-9901-60ff73e03ef8">このまま運用を続ければ、syslogファイルはパーティションの空き容量を消費し続けます。それがルート領域であれば、OSやミドルウェアが正常に動作できなくなり、ログインやプロセス起動にも支障が出る可能性があります。</p>
<p id="50c38d56-e220-4205-8fc2-55c8bb645bf7">ログ管理設計の漏れがどのように障害へつながるのかを、図にすると次のとおりです。</p>
<figure id="19315dff-6cba-4fc9-bc36-90ec6d42080a"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3088" src="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b.png 1536w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption></figcaption></figure>
<p id="52b26d50-dc71-4801-b27f-37e364b26a0e">ディスクの空き容量を監視していれば、容量が枯渇する前に検知できたかもしれません。</p>
<p id="a3d782fe-dd34-458d-9567-7763d8bcd5a9">ただ、これは監視だけの問題ではありません。空き容量の監視は、容量逼迫という状態を検知する仕組みです。</p>
<p id="0c700396-5656-4445-a49e-e957f6fa4910">根本原因は、ログの増加を前提に、保持、退避、圧縮、削除を設計していなかったことにあります。</p>
<p id="b7fd5b16-549d-47b8-a8f6-ae40e437c8fa">ログ管理を運用設計項目として定義し、</p>
<ul id="8336a99c-17ee-439f-92ac-6a637caf10d8">
<li>
<p id="f782642a-16af-4f16-b3de-b87cd9d55a1e">どのログを管理対象とするのか、</p>
</li>
<li>
<p id="80300a08-1250-4d81-a272-520e87105375">何の目的で保存するのか、</p>
</li>
<li>
<p id="b325c1ac-a620-48c1-948d-b9ef42515ad2">どの期間保持するのか、</p>
</li>
<li>
<p id="42a1ce9a-c360-4a45-8e7e-04cbbccba730">即時に参照できる必要があるのか、</p>
</li>
<li>
<p id="54d0c770-e03d-4e03-9bf6-3f0a28e02792">いつ外部領域へ退避するのか、</p>
</li>
<li>
<p id="77f9448f-4114-4186-a7b9-c68328d1f518">いつ圧縮・削除するのか、</p>
</li>
<li>
<p id="7782d857-ccf1-45b9-a5b4-cb582a115fa4">誰が参照できるのか</p>
</li>
</ul>
<p id="07025643-f798-496f-9c51-ea27a15a2ce7">これらを決めていれば避けられたトラブルです。</p>
<p id="158cb9cd-c7f8-40b9-b67e-8569cd5d07cf">その運用設計を入力として、処理方式側では、logrotateを使うのかジョブで退避するのか、どのパーティションへ保存するのか、どれだけの容量が必要なのかを具体化します。</p>
<p id="964d4a3e-f7be-4de2-940e-1a9910f9397d">一見すると「検討していて当然」と思われる内容です。それでも、ログ管理を運用設計の対象として認識していないプロジェクトでは、実際に漏れます。</p>
<h2 id="61dca466-858c-42f8-9c28-1c8f2e07e362"><span id="toc2">運用設計はいつやるのか｜要件定義から始まり基本設計で骨格が決まる</span></h2>
<p id="3929b092-4527-4495-9b94-ea52282edf5f">運用設計のプロセスを理解するには、システム開発全体の中での位置づけを押さえる必要があります。</p>
<p id="b7f670c2-7675-46d2-afbf-c2744e1ef6e4">ウォーターフォール型の開発プロセスは、要件定義、設計、製造、試験、移行、保守・運用という流れで説明されることが多いと思います。</p>
<p id="a80f6c13-55cd-4b0d-a8cd-cfbbe80d4156">このモデルでは工程の最後に「保守・運用」が置かれているため、運用に関する検討もシステムが完成してから行えばよい、という誤解が生じます。</p>
<p id="47117c33-a32a-4d82-a708-57dc6a6f579f">最後に置かれているのは、完成したシステムを実際に維持管理する運用工程です。そのシステムをどのように運用するのかを決める運用設計は、設計工程の中にあります。</p>
<p id="71806233-ecea-4deb-b6aa-c01ebf37614e">運用設計を設計工程として扱わないプロジェクトでは、サービス開始直前になって検討不足が表面化します。</p>
<ul id="a04d94e9-ddf3-4703-8e25-dbba99c8510b">
<li>
<p id="fc8fc8f6-daac-454c-b397-105246760fb9">ログがローテーションされない。</p>
</li>
<li>
<p id="ed3054c9-f9cc-44f4-8d16-e2316d4d433c">バックアップはあるのに戻せない。</p>
</li>
<li>
<p id="f8e28fef-a6c5-4272-aab5-ef60d9fc7bc8">ジョブは定義されているのに実行するスクリプトがない。</p>
</li>
<li>
<p id="7f2f07ec-8da9-4820-b52a-c5d1764a4982">監視アラートは出るのに一次対応者が決まっていない。</p>
</li>
<li>
<p id="2496075a-2509-4b7a-a609-9aaa3d579ba1">夜間処理は終了したのに、業務を開始してよいか判断できない。</p>
</li>
</ul>
<p id="820e02c1-4dce-4459-b987-a48498160349">私はそうした現場を数多く見てきました。</p>
<p id="a149c48b-6cd3-4353-9c70-53272bd1dbd2">これらは、運用開始後に考える問題ではありません。工程初期から、処理方式とセットで具体化すべき設計事項です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3087" src="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h2 id="63d5bba2-522a-4b81-a959-d89d61d91085"><span id="toc3">処理方式設計と運用設計は双方向でつながっている</span></h2>
<p id="dee88b64-64f7-425d-8ea4-5d78d931afa6">ここからが、この記事で最も伝えたい内容です。</p>
<p id="df036e8f-8a9b-4afc-be76-cbc5d6c71ad3">運用設計で最も重要なのは、処理方式設計との接続です。<br />
運用設計は単独では成立せず、処理方式設計と対になって、初めて本番で運用できる設計になります。</p>
<p id="451258f1-c4e1-44b1-aff5-ea4f100ddca2">処理方式設計とは、要件をどのような仕組みで実現するかを具体化する設計です。運用設計とは、その仕組みを実際の運用の中でどのように扱うかを具体化する設計です。</p>
<p id="ffb6b292-3ef5-4c20-9ad5-f8b39b519cf8">この2つは別の設計領域ですが、完全に分けて考えることはできません。</p>
<p id="4d5278e5-4217-4f10-8360-4a58149603af">ログ管理を例に考えます。</p>
<p id="b3e593d8-5024-4514-8ebb-576044ddb0ea">運用設計側では、管理対象とするログ、利用目的、保持期間、参照要件、退避・削除方針、アクセス権限を決めます。</p>
<p id="803cbf2c-12b3-453c-98a0-6d2a9467d3e3">「syslogを1か月保持する」と運用設計で決めたとします。この決定だけでは、1か月保持は実現できません。</p>
<ul id="0262699a-e710-4600-b078-46acad01f5c7">
<li>
<p id="05003cde-8b8b-479f-8911-ae054d771fe9">処理方式側で、</p>
</li>
<li>
<p id="956baff9-cafe-4676-b049-ec106fa5157f">日次と週次のどちらでローテーションするのか、</p>
</li>
<li>
<p id="235620a8-9fc5-4b53-9d32-c4fdf257e852">Linuxのlogrotateで実現するのか</p>
</li>
<li>
<p id="0d21d906-5784-4a9e-a04b-2c5c58e7ad1a">ジョブ管理製品で退避するのか、</p>
</li>
<li>
<p id="2742d562-8f0b-437e-9cb8-61e51ad8eb41">退避先ディレクトリをどこにするのか、</p>
</li>
<li>
<p id="1c64fd1f-f85e-4746-aa99-285c0212583f">圧縮するのか、</p>
</li>
<li>
<p id="a1bd212a-99db-406a-9981-b9499310691d">外部のログ管理基盤へ転送するのか、</p>
</li>
<li>
<p id="a3fe4af9-783b-4d5b-89a9-352ce46e4261">必要なディスク容量はいくらか、</p>
</li>
<li>
<p id="16a7cb6b-6608-44f9-9f4d-c71d75dd1582">容量逼迫をどの条件で検知するのか</p>
</li>
</ul>
<p id="ca5cd914-d29b-47d3-a67d-839535f9ee9a">これらを設計する必要があります。運用設計の決定が、Linuxや監視製品、ログ管理製品の処理方式設計への入力になるわけです。</p>
<p id="a5c90fa5-31f5-4c29-af37-672774ce7b53">逆方向の流れもあります。Linux設計側でログの退避先を決めたなら、その情報は運用設計側へ伝えなければなりません。</p>
<p id="8050fd1a-6363-45ca-96c8-39a394142d9b">ログは、要件に応じてバックアップや外部保管の対象になります。退避先が運用設計側へ伝わっていなければ、バックアップ対象やログ収集対象から漏れる可能性があります。</p>
<p id="b240e7b7-7722-4da9-a8ca-7d05ae606e58">障害調査に必要なログが残っていない、という事態はこうして生まれます。</p>
<p id="4285aa4d-ecbe-4246-8a3f-b1ff3bd81f34">運用設計側が「何を、どれくらい、何の目的で管理したいのか」を決める。処理方式設計側が「それをどの仕組みで実現するのか」を決める。運用要件が処理方式に影響し、処理方式の制約が運用設計に戻ってくる。</p>
<p id="c296273e-0b39-4b6c-8ddf-504e53685e6c">この関係は一方向の受け渡しではなく、レビューやウォークスルーを通じて、相互に入力とフィードバックを繰り返しながら固めていくものです。</p>
<p id="6fb33042-44be-4f6b-817d-9faa349444e4">どちらを先に検討するかは状況によって異なりますが、運用設計者と処理方式設計者の間で認識齟齬を残さないことが重要です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3086" src="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0.png 1448w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p id="b3058153-6f2a-4e9e-82b2-3beef6d9694b">現場では、構築チームと運用準備チームが分かれ、ドキュメントも処理方式設計書と運用設計書に分断されることがあります。</p>
<p id="ddeed669-a848-4a36-84d9-2be3d3cf86fa">その結果、ログ保持期間を満たすためにどの設定と容量設計が必要なのか、という両者の紐付けが、設計者の頭の中にしか存在しない状態になりがちです。</p>
<p id="8e74ff27-685f-4723-ad2b-164850fadeae">この紐付けを設計書、課題管理、レビューの仕組みで見える化できるかどうかが、運用設計の品質を左右します。</p>
<h2 id="7bf23986-114b-4526-baf4-7a36e3260d36"><span id="toc4">運用スクリプトは運用設計で横断的に洗い出す</span></h2>
<p id="fd8576a9-fada-4a8d-be44-0769eb03c11b">処理方式設計と運用設計の双方向連携を示す例として、運用スクリプトを考えます。</p>
<p id="03e14e6e-e367-49d7-9f51-b5f03615cd76">バックアップ要件をジョブネットで実現するとします。</p>
<ul id="a1362b90-31f4-4aa2-9473-8a5f8ceeefd5">
<li>
<p id="4449dc37-239a-4cd6-8a76-4157640ae9d3">ジョブネットには、</p>
</li>
<li>
<p id="bf69330a-d7a8-4aa8-ab82-f5f6a94e12a2">バックアップ取得、</p>
</li>
<li>
<p id="1e6874ef-bee0-4e88-894d-bef3a8bce981">ログ退避、</p>
</li>
<li>
<p id="fa09f135-b9e4-4db7-bfb1-fce3f3d9b8a6">世代削除、</p>
</li>
<li>
<p id="b35d1567-971f-4cf8-8b97-533f10cca4b8">整合性確認、</p>
</li>
<li>
<p id="9497e1b8-612e-4098-9401-df730bd2de1e">後処理</p>
</li>
</ul>
<p id="f6a253a4-6dad-4be9-b9b4-8de1cea4a6a8">といった個別ジョブが登録されます。それぞれのジョブでは、実行対象となるスクリプト、コマンド、プログラム、製品機能が必要です。</p>
<p id="25c57b13-abf1-4311-82e7-95136ab0ecd6">ここで問題になるのが、必要な実行部品を誰が洗い出すのかという点です。</p>
<p id="af9d77b7-4df1-4c02-81ee-1f2d5af7eabf">バックアップ方式だけを設計していると、バックアップ製品の設定は完了していても、ジョブから呼び出すスクリプトや終了判定処理が漏れることがあります。</p>
<p id="05544696-0378-4a4f-a503-a806deedaa06">ジョブネットだけを設計していると、ジョブの箱は並んでいるのに、中で何を実行するのか決まっていないことがあります。</p>
<p id="71363cdb-7d26-4be8-b724-7c6d868d22f7">運用で必要になるスクリプトや実行処理は、運用設計の中で横断的に洗い出す必要があります。</p>
<p id="94f4b498-4ff0-4e1b-91fc-cf79c9b52c6a">運用設計で横断的に洗い出すことと、運用設計担当がすべてのスクリプトを作成することは別です。</p>
<p id="310946b2-4edb-46c5-a772-abd5551b01f1">バックアップスクリプトはバックアップ方式の担当、ログ退避スクリプトはログ管理方式の担当、ジョブ制御スクリプトはジョブ設計の担当、起動停止スクリプトはOS・ミドルウェアの担当というように、実際の設計、製造、単体試験は、その仕組みを設計した担当が行うのが基本です。</p>
<p id="3ce37a64-3810-429f-adc3-5db6de913757">運用設計側で行うのは横断管理です。</p>
<p id="5b35a5fb-7895-4fde-b12f-237c3f949623">必要なスクリプトを一覧化し、</p>
<ul id="9abdf658-e15c-485c-ae60-b761b1de4626">
<li>
<p id="72757a06-8b2a-4f1a-a5f6-7b7935ee553d">用途、</p>
</li>
<li>
<p id="389606b1-4da7-4c05-a1b1-eecfc2f24cbc">呼び出し元となるジョブ・手順・他スクリプト、</p>
</li>
<li>
<p id="1bf9f970-8e2b-4cda-a6a2-7a221d641ec7">関連する運用作業、</p>
</li>
<li>
<p id="97970160-941d-44c9-816b-8f0d6b67dc79">作成担当、</p>
</li>
<li>
<p id="eb5386fb-04fb-4710-97a0-160c604802b6">完成時期、</p>
</li>
<li>
<p id="f79c7c83-8e6b-4e12-b0d7-f3e992f0f4d8">後続テストでの確認方法</p>
</li>
</ul>
<p id="e32effd0-ac57-4ec5-8651-84a0c1e91fa2">それらを明確にします。そして、スクリプトの設計、製造、単体試験、ジョブ登録をWBSへ反映し、結合テスト、システムテスト、運用テストに間に合わせます。</p>
<p id="1053c8ab-3bcd-428b-bd8a-60204be9b298">この横断管理がないプロジェクトでは、個別の方式設計は完了しているのに、実際の運用に必要なスクリプトだけが作られていない、という事態が起こります。</p>
<p id="349c8941-b196-4325-8468-df7c785ff4d5">サービス開始直前になって発覚するスクリプト不足やジョブネットの実行エラーの多くは、この横断管理が不足した結果です。</p>
<p id="8dae74ea-9bc1-4e5d-84d0-680bd2c1cce5">運用設計で必要な実行部品を早期に洗い出し、処理方式の担当へ返すことが重要です。</p>
<h2 id="c73ec5dc-4c03-47b4-bfe7-6c20f9e24290"><span id="toc5">運用設計の全体像</span></h2>
<p id="2a48dea4-2cdf-4e3e-ab2d-c52d5574833c">システム運用とは、利用者へ提供しているサービスを安定して継続するために、システムを維持管理していく活動です。その運用を成立させるための設計が、運用設計です。全体像は、次の3つに分けて考えると理解しやすくなります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3085" src="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.png" alt="" width="500" height="354" srcset="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-800x566.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-300x212.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-768x543.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213.png 1491w" sizes="(max-width: 500px) 100vw, 500px" />業務運用設計は、業務機能や実際の業務作業と結びつく領域です。</p>
<p id="ba907b90-8735-4722-8512-4d5e99eb010e">システム基盤運用設計は、サーバ、ネットワーク、ストレージ、ジョブ、監視、ログ、バックアップといった、システムを支える仕組みと強く結びつきます。</p>
<p id="28bd916d-0916-4b9e-b5d2-edaa1b95dc3a">全体運用設計は、ITILのプラクティスと重なる領域が多く、体制や責任分界、障害・変更管理、サービスレベル管理を扱います。この記事では、主にシステム基盤運用設計を対象とします。</p>
<p id="e960c4f7-8c8c-4bec-9b5c-d1605eb7aaf9">なお、運用手順書一覧、運用スクリプト一覧、ジョブ一覧は、特定の区分だけに属するものではありません。3つの領域で必要になる成果物を横断的に洗い出し、作成担当と期限を管理する必要があります。</p>
<p id="311c0222-3458-419a-979c-46d4d8d769fa">関連する工程に、運用テストがあります。</p>
<p id="b2f5fed1-fe6a-429e-94d9-25a9c1219c12">運用テストでは、ここで設計した運用フロー、判断基準、承認フロー、復旧方法が実際に運用可能かを確認します。</p>
<p id="da69795d-48a9-4d3e-87fd-4f9e308e8ea9">運用設計の品質が低ければ、運用テスト自体が成立しません。</p>
<p id="d3a72fb3-c60c-45e9-b655-16f1ee7272b1">障害時の連絡先が分からない、問い合わせの受付方法が決まっていない、誰が業務開始可否を判断するのか分からない。こうした状態を、サービス開始後に残してはいけません。</p>
<p id="3134e7c0-30bb-4ee8-ab81-e83cf37a06dc">運用テストを含むテスト工程の考え方は、以下の記事で解説しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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 id="995db2cf-c627-49c1-bfbf-0f64e00ddd9b"><span id="toc6">システム基盤運用設計書の目次サンプル</span></h2>
<p id="7af51830-2502-4c8a-969b-f58e35a41a10">運用設計について調べている人が最も知りたいのは、運用設計書で検討すべき「項目」ではないでしょうか。以下に、システム基盤運用設計書の目次サンプルを示します。</p>
<div style="overflow-x: auto; margin: 24px 0;">
<table style="width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.8; border: 1px solid #b8b8b8;">
<thead>
<tr style="background: #eef3f8;">
<th style="width: 5.7363%; padding: 8px; border: 1px solid #b8b8b8; text-align: center;">No.</th>
<th style="width: 14.8973%; padding: 8px; border: 1px solid #b8b8b8; text-align: center;">項目</th>
<th style="padding: 8px; border: 1px solid #b8b8b8; width: 37.1575%; text-align: center;">設計内容</th>
<th style="padding: 8px; border: 1px solid #b8b8b8; width: 42.2089%; text-align: center;">留意事項</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">1</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">システム運転スケジュール</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">オンライン時間帯、夜間バッチ、バックアップ、保守作業、開局前確認などの実行時間を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">日次、週次、月次、年次、特定日運用を分けて検討する。処理の競合や保守可能時間も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">2</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ジョブ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">運転スケジュールをジョブ・ジョブネットへ落とし込み、起動条件、前後関係、異常時分岐、再実行条件を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ジョブ異常終了だけでなく、開始遅延、終了遅延、長時間実行、後続処理への影響も考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">3</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">システム監視</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">死活、リソース、プロセス、ログ、ジョブ遅延などの監視対象と、注意・警告・異常の判定条件、通知先、一次対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">CPUやディスク使用率は、しきい値だけでなく継続時間、業務時間帯、繰り返し通知の抑止も検討する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">4</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ログ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">管理対象、出力先、ログレベル、退避、転送、圧縮、保持、削除、参照権限を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">出力量を見積もり、保存先ごとの容量を算出する。障害調査・監査で必要な期間との整合も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">5</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">バックアップ・リストア管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">バックアップ対象、取得時点、整合性、世代、保管先、リストア方式、復旧所要時間、復旧試験方針を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">業務データだけでなく、設定ファイル、ログ、ジョブ定義などの復旧要否も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">6</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">起動停止</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">システム全体の起動停止対象、順序、実行方法、正常性確認、異常時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">OS、ミドルウェア、DB、アプリケーション、監視機能の依存関係を考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">7</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">開局・閉塞</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">業務開始・終了の条件、確認項目、実施者、判断者、異常時の対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ジョブ終了だけでなく、運用日付、外部連携、アプリケーション、ミドルウェア、監視再開を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">8</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">運用日付管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">運用日付の切替時刻、業務日付・締め処理・夜間バッチとの関係、切替失敗時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">日付の不整合は、締め処理、帳票、外部連携、再実行に影響する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">9</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">異常時運用・エスカレーション</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">ジョブ異常、処理遅延、バックアップ未取得、監視アラート発生時の一次対応、通知先、判断者、顧客連絡、承認ルートを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">継続、打ち切り、スキップ、業務開始可否などの判断基準は、業務側・システム管理者との合意が必要</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">10</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ユーザ・アカウント管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">ユーザ情報の受領、登録、変更、削除、棚卸、認証方式、休職・退職時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">人事異動時期など、大量更新が集中する時期の処理能力と作業体制を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">11</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">アクセス・特権ID管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">管理者権限、リモート接続、DBアクセス、ネットワークアクセス、特権IDの利用・承認・記録方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">操作可能な経路、端末、アカウントを限定し、証跡の取得と定期的な棚卸を行う</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">12</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">パッチ・脆弱性管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">パッチや脆弱性情報の入手、評価、検証、承認、適用、適用後確認、緊急時対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">CVSSだけでなく、対象システムへの影響、攻撃可能性、停止可能時間を考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">13</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">マルウェア対策</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">パターンファイルやエンジンの更新、スキャン、検知時の隔離・駆除・報告方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">スキャン時間や負荷が運転スケジュールと競合しないか確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">14</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">時刻同期</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">同期先、冗長化、許容時刻差、同期状態の監視、同期異常時の対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ネットワーク経路、認証、仮想環境やクラウド側の時刻同期方式との整合を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">15</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">変更・リリース管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">アプリケーション、設定ファイル、DB変更、ジョブ、スクリプト、クラウド設定などの変更・配布・切り戻し方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">承認、事前確認、バックアップ、リリース後確認、切り戻し条件、構成情報の更新まで含める</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">16</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">証明書・鍵・シークレット管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">証明書、秘密鍵、APIキー、パスワードなどの発行、保管、配布、更新、失効、棚卸方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">有効期限切れの事前検知、更新担当、保管場所、アクセス権限、自動更新の可否を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">17</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">構成・資産管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">サーバ、ミドルウェア、クラウドリソース、設定、バージョン、ライセンスなどの構成情報と更新方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">実環境と構成管理情報の乖離を防ぎ、変更・障害調査・監査で参照できる状態を維持する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">18</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">キャパシティ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">CPU、メモリ、ディスク、DB、ネットワーク、処理件数などの収集、評価、予測、増強判断方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">平常時だけでなく、月次、年次、繁忙期、特定時間帯の傾向を確認する</td>
</tr>
</tbody>
</table>
</div>
<p id="ccdd30e4-b7d5-4fad-af5d-67cc71c8b866">この目次は、IPAの非機能要求グレードなどの確認観点を参考にしながら、実際のプロジェクトで扱いやすい運用作業単位に整理したものです。</p>
<p id="7a8efe3d-a6cc-48eb-9eba-c12435638634">非機能要件の項目をそのまま設計書の章立てにしても、実際の運用作業との対応が見えにくいことがあります。</p>
<p id="f4060c5a-4222-436f-acc4-41eb38fe1feb">プロジェクト参画経験から、システム運転、監視、ログ、バックアップ、起動停止といった、実際に発生する運用作業を目次の単位にすることで、検討漏れを減らせると考えています。</p>
<p id="8daa486c-4646-4072-b0d8-8a4fe4a84f73">表の「項目」は、運用設計書の章や節を組み立てる際のたたき台として使えます。</p>
<p id="15de7982-8331-4cab-8a62-17c21fb7eba3">ただし、設計内容だけを書いて終わりではありません。</p>
<p id="c0d487c0-1006-4166-bf56-fe8bc6ea1126">各項目について、実施主体、実施契機・頻度、正常・異常の判断条件、承認者・判断者、入出力情報、運用フロー、必要な手順書、必要なスクリプト・ジョブ、処理方式設計への申し送りも、必要に応じて整理します。</p>
<p id="9c9cb515-363b-4c77-8b58-d9130e16953f">要件定義で合意した内容を、どの運用設計項目へ反映するのかを確認しながら進めることが重要です。</p>
<p>ここで挙げた項目は、一般的なシステムにおける最大公約数です。</p>
<p id="89f662ae-565f-45bb-bd30-a08ed31284cc">すべてのシステムに同じ項目を適用すればよいわけではありません。外部公開サービスであれば、DDoS対策やWAF運用が必要になるかもしれません。</p>
<p id="4be1aeeb-9c99-4e15-8e1f-4d6f40cd8abe">クラウドネイティブなシステムであれば、オートスケーリング、マネージドサービスのメンテナンス通知、クラウドコスト管理を追加することもあります。</p>
<p id="d40e2fec-7c3d-4fa1-8c27-92bc7f29a3f7">反対に、小規模なシステムでは、複数の項目を一つの章にまとめることもあります。</p>
<p id="b7e72788-7c7f-437f-9c3f-88ee6d283675">重要なのは、テンプレートにシステムを合わせることではありません。システム運用で発生する作業と判断を洗い出し、必要な項目を追加・統合することです。</p>
<p id="c52adaa4-2af2-4d3a-926e-ca63849423cc">ここで示した運用設計の項目は、基本設計の段階で方針が決まっていることが前提です。</p>
<p id="6a7c7ff3-5935-425c-8e2b-9c13b472fe39">運転スケジュール、監視、ログ、バックアップ、開局判定の方針を基本設計でどう決めるのか、基盤SEが見ている設計の全体像は、以下の記事で解説しています。</p>
<p id="2d797b38-e171-494b-b9f6-2c9c27c02da4">基本設計書の目次と、各章で作成すべき成果物を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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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 id="1c3db3a4-135d-4528-b65e-9292f67d2501"><span id="toc7">運用設計は誰がやるのか｜4つの役割と責務分界</span></h2>
<p id="f172e31d-6f47-4a48-b535-aad02d070eb1">システムは構築して終わりではありません。</p>
<p id="acc5585f-3c43-424a-90c4-becb1ea98672">想定した運用を実行できる状態で運用担当へ引き継いで、初めて開発プロジェクトの役割を果たしたといえます。運用設計では、作業内容だけでなく、誰が実施するのかを明確にする必要があります。</p>
<p id="1e5855de-93fc-43ca-9a81-dcbf9c2582e7">役割は契約形態や組織によって異なりますが、一般的には次のように整理できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3083" src="https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6.png 1672w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p id="b67005d4-6429-43f0-9545-a37bc61ce534">同じ組織や担当者が複数の役割を兼ねる場合もあります。</p>
<p id="ca996da5-f2bf-4898-8632-2c24d7ad32c4">大切なのは、組織名ではなく責務を明確にすることです。監視アラートが発生したとき、誰が最初に確認するのか。原因調査は誰へ依頼するのか。業務影響は誰が判断するのか。処理を打ち切るかどうかを誰が承認するのか。</p>
<p id="943857df-840a-4c0b-8007-d5e7b2259211">ここが曖昧なままでは、連絡先一覧があっても運用は回りません。</p>
<p id="8edd85a2-876a-4e7b-b7a7-5541aef15c43">また、すべての作業を自動化すればよいわけでもありません。</p>
<p id="0b2aa755-3fda-4a20-b53b-8a46673e5986">頻度が低く、計画時間内に安全に実施できる作業であれば、手動運用を選ぶこともあります。</p>
<p id="a49faec2-994b-4af0-88b5-06e9eec3702c">ただし、手動で行う場合でも、実施者、実施時期、必要な権限、作業手順、正常性の確認方法、作業証跡、異常時の対応、承認・報告方法は設計する必要があります。</p>
<p id="523b343c-2b7e-46d5-bae8-ee6a74ed9f17">自動化するか手動で残すかを、頻度、工数、リスク、ミスの影響、開発・保守コストから判断すること自体が、運用設計の重要な役割です。</p>
<h2 id="53f124df-c94a-4bbe-accf-cba390b1df13"><span id="toc8">まとめ｜運用設計は要件定義から始まっている</span></h2>
<p id="6733dd99-7557-493a-b629-f0a14b12674d">運用設計の目的は、システム利用者、運用担当、開発・保守担当、システムオーナーが、それぞれの役割を果たしながら、システムを安定して利用・維持できる状態をつくることです。</p>
<p id="d1c10711-dc5c-42a6-bab2-c5e0626c9828">運用設計は、運用フェーズに入ってから考えるものではありません。要件定義からすでに始まっており、その骨格は基本設計の段階で決まります。</p>
<p id="6caf39a6-84ec-49c7-9af8-ac1bb8766402">運転スケジュール、ジョブ、監視、ログ、バックアップ・リストア、起動停止、開局・閉塞、運用日付、異常時運用、エスカレーション、運用スクリプト。</p>
<p id="a54bb1b6-cd0e-41bb-a5e7-c19dea009e1c">これらの方針は、システム構成や処理方式とセットで具体化する必要があります。</p>
<p id="eba0e57c-0511-48da-86e9-1ee231ffbc3a">運用設計側が、何をどのように運用したいかを決める。</p>
<p id="c7c5f1c3-b0fb-493b-917b-e91a12cee440">処理方式設計側が、それをどの仕組みで実現するかを決める。処理方式上の制約が分かれば、運用設計側が運用方法や判断基準を見直す。</p>
<p id="b880fbd5-051a-4afa-a08a-9aef4475ffac">この双方向の関係を基本設計で押さえていなければ、詳細設計以降でどれだけ頑張っても、本番直前の</p>
<p>「必要なスクリプトがない」<br />
「ジョブネットが動かない」<br />
「バックアップから戻せない」<br />
「アラート発生後の対応者がいない」<br />
「夜間処理後に業務を開始してよいか判断できない」</p>
<p id="d2bb0519-3792-4bc1-b92a-49d5cdc57075">は防げません。</p>
<p id="11faaa9a-3eb9-463c-a38e-7fd2eabbbb09">運用設計は、運用担当へ仕事を押しつけるための設計ではありません。</p>
<p id="3b4cab76-08a9-4f9f-9e6f-3df56454193f">本番稼働後に発生する作業、判断、障害、変更を想定し、システムの仕組みとプロジェクト計画へ反映する設計であり、処理方式と運用設計をつなぎ、本番で運用できるシステムを設計することです。</p>
<hr id="22b77849-0c98-48a6-a37e-6fda83f9a5f2" />
<p id="c663d7d3-f7f2-47c9-898a-39733319d0b4"><strong>関連記事</p>
<p></strong>運用設計は、単独で完結する工程ではありません。要件定義で決めた内容を基本設計・詳細設計へ落とし込み、さらにテストや運用へつなげていく必要があります。<br />
運用設計の前提となる要件の考え方から、要件定義、基本設計、詳細設計、テストまでのつながりを確認したい方は、以下の記事もあわせてご覧ください。</p>
<p id="cf907ed1-8039-43bb-9f66-3216336a1322"><strong>機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</strong><br />
要件定義で整理する「機能要件」と「非機能要件」の違いを、実務で使える視点から解説しています。</p>

<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa.jpg 1672w" sizes="(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">「機能が動く」と「本番で使える」は違う。機能要件と非機能要件の違いを、購入申請システムの具体例と現場の失敗パターンから整理します。</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 loading="lazy" decoding="async" 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" /></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>
<p><strong>要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務<br />
</strong>RFP・質問回答・提案書・見積前提を起点に、認識差を潰しながらスコープと責任分界を確定する要件定義の実務を解説しています。</p>

<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</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 loading="lazy" decoding="async" 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" /></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.12</div></div></div></div></a>
<p id="23d672cb-aa11-4646-8e6a-cfccf7fe9767"><strong>基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</strong><br />
要件定義で決めた内容を、システム全体の構成や方式へ落とし込む基本設計について解説しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>
<p id="1905a602-c433-4c79-9516-793d50462e85"><strong>詳細設計で決めること｜基本設計を「構築・テスト・運用できる形」に落とし込む工程</strong><br />
基本設計で決めた方式を、実際に構築できる設定値や設計内容まで具体化する工程を解説しています。</p>

<a href="https://sys-univ.com/dev/detailed-design-overview/" title="【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">詳細設計とは、基本設計で決めた方式を構築・テスト・運用できる粒度に落とし込む工程です。OS、ミドルウェア、DB、ジョブ、監視、バックアップなどを、単なるパラメータ表ではなく品質保証ストーリーとして設計する考え方を基盤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 loading="lazy" decoding="async" 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" /></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.20</div></div></div></div></a>
<p id="b312fc36-2f96-43cc-9a71-321c77c71180"><strong>Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</strong><br />
要件定義・基本設計・詳細設計の内容が、後工程のテストとどう対応するのかを整理しています。</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 loading="lazy" decoding="async" 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="" 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="(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 loading="lazy" decoding="async" 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" /></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>
<p id="de9934e4-cfac-4941-ba43-a0bf92ffee7c">開発工程全体の流れから確認したい方は、以下の記事も参考にしてください。</p>
<p id="7f44d1f6-bb2b-4710-a151-b06c7a61cd1e"><strong>システム開発の流れを現場目線で理解する【前編】</strong></p>

<a href="https://sys-univ.com/dev/system-dev-overview/" 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 loading="lazy" decoding="async" width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-376x212.png 376w" sizes="(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">システム開発は、アプリケーションだけで成立するものではありません。システム基盤、性能・可用性などの非機能、テスト、移行、運用がどのようにつながって一つのシステムを成立させるのかを、現場目線で整理します。</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 loading="lazy" decoding="async" 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" /></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.26</div></div></div></div></a>
<p id="938170c5-5f76-47be-8d33-93e190ae7797"><strong>システム開発の各工程や設計・テスト・運用に関する記事は、以下のカテゴリにまとめています。</strong></p>

<a href="https://sys-univ.com/category/dev/" 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 loading="lazy" decoding="async" src="https://sys-univ.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class=" internal-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発</div><div class="blogcard-snippet internal-blogcard-snippet"><p>システム開発に関する開発プロセス、プロジェクトマネージメントの解説</p>
</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 loading="lazy" decoding="async" 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" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div></div></div></a>
<div id="gtx-trans" style="position: absolute; left: 292px; top: 94px;">
<div class="gtx-trans-icon"> </div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/opedesign/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
