<?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://dreamparadaisu.com/tag/%E5%BF%9C%E7%94%A8/feed/" rel="self" type="application/rss+xml" />
	<link>https://dreamparadaisu.com</link>
	<description>今まで学んできたことや、新たに学んだこと、趣味を通して様々な人と共有できたらなと思いはじめた電脳日記。</description>
	<lastBuildDate>Mon, 03 Nov 2025 21:11:33 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<atom:link rel='hub' href='https://dreamparadaisu.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">180489529</site>	<item>
		<title>【PowerShell応用編】ネットワーク監視を自動化する方法｜ping不要の死活監視スクリプト</title>
		<link>https://dreamparadaisu.com/study_powershell_advance002/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=study_powershell_advance002</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Mon, 03 Nov 2025 22:00:10 +0000</pubDate>
				<category><![CDATA[インフラ/ネットワーク]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[トラブルシューティング]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[応用]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=8207</guid>

					<description><![CDATA[<p>【PowerShell応用編】ネットワーク監視を自動化する方法｜ping不要の死活監視スクリプト ネットワーク障害の早期発見やサーバ死活確認を自動化したい場合、 PowerShellを使えばシンプルに実現できます。 本記...</p>
The post <a href="https://dreamparadaisu.com/study_powershell_advance002/">【PowerShell応用編】ネットワーク監視を自動化する方法｜ping不要の死活監視スクリプト</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/study_powershell_advance001/" rel="bookmark" title="【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法">【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</a></li>
<li><a href="https://dreamparadaisu.com/com_test_connection/" rel="bookmark" title="【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法">【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_more_network/" rel="bookmark" title="高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/" rel="bookmark" title="【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法">【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法</a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<h1>【PowerShell応用編】ネットワーク監視を自動化する方法｜ping不要の死活監視スクリプト</h1>
<p>ネットワーク障害の早期発見やサーバ死活確認を自動化したい場合、<br />
PowerShellを使えばシンプルに実現できます。</p>
<p>本記事では、<strong>ICMPが禁止されている環境でも動作するPowerShell監視スクリプト</strong>を紹介します。<br />
定期実行により、Web・DB・APIサーバなどの稼働状態を自動でチェック可能です。</p>
<hr />
<h2>🧭 概要</h2>
<p>多くの企業ネットワークでは、セキュリティ上の理由から <strong>ICMP（ping）通信が遮断</strong> されています。<br />
そのため、従来の <code>ping</code> コマンドによる監視が使えないケースもあります。</p>
<p>しかし PowerShell 7 以降の <code>Test-Connection -Port</code> を使えば、<br /><strong>TCPレベルでの疎通確認</strong> が可能です。<br />
これを活用して、<strong>ping不要の自動監視スクリプト</strong>を構築していきます。</p>
<hr />
<h2>⚙️ 1. 監視対象リストの作成</h2>
<p>まず、監視対象となるホストとポートを配列として定義します。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">$targets = @(
    @{Name=&quot;Web&quot;; Host=&quot;web01&quot;; Port=443},
    @{Name=&quot;DB&quot;; Host=&quot;db01&quot;; Port=1433},
    @{Name=&quot;API&quot;; Host=&quot;api01&quot;; Port=8080}
)</pre><p></p>
<hr />
<h2>🧩 2. TCPレベルの疎通チェック</h2>
<p><code>Test-Connection -Port</code> を利用して、ポート単位で死活確認を行います。<br />
ICMPが禁止されていても、TCP通信が通れば「OK」と判定できます。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">foreach ($t in $targets) {
    $result = Test-Connection $t.Host -Port $t.Port -Quiet
    $status = if ($result) { &quot;OK&quot; } else { &quot;NG&quot; }
    Write-Output &quot;$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss') $($t.Name): $status&quot;
}</pre><p></p>
<p>出力例：</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">2025/11/01 08:30:00 Web: OK
2025/11/01 08:30:00 DB: NG
2025/11/01 08:30:00 API: OK</pre><p></p>
<hr />
<h2>📦 3. ログファイルへの出力</h2>
<p>監視結果をファイルに追記して履歴に残します。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">$logPath = &quot;C:\Scripts\NetworkMonitor.log&quot;
foreach ($t in $targets) {
    $result = Test-Connection $t.Host -Port $t.Port -Quiet
    $status = if ($result) { &quot;OK&quot; } else { &quot;NG&quot; }
    &quot;$((Get-Date).ToString('yyyy/MM/dd HH:mm:ss')),$($t.Name),$($t.Host),$($t.Port),$status&quot; | Out-File -Append -FilePath $logPath
}</pre><p></p>
<p>結果例（CSV形式）：</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">2025/11/01 08:30:00,Web,web01,443,OK
2025/11/01 08:30:00,DB,db01,1433,NG
2025/11/01 08:30:00,API,api01,8080,OK</pre><p></p>
<hr />
<h2>📬 4. メール通知を追加（オプション）</h2>
<p>障害検知時に自動メール通知する場合は<code>Send-MailMessage</code>を使います。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">if ($status -eq &quot;NG&quot;) {
    Send-MailMessage `
        -From &quot;monitor@domain.local&quot; `
        -To &quot;admin@domain.local&quot; `
        -Subject &quot;【アラート】$($t.Name) サーバ接続不可&quot; `
        -Body &quot;Host: $($t.Host) Port: $($t.Port) がNGです。&quot; `
        -SmtpServer &quot;mail.domain.local&quot;
}</pre><p></p>
<blockquote>
  💡 TeamsやSlackに通知する場合は、Webhook URLに<code>Invoke-RestMethod</code>を使えばOKです。
</blockquote>
<hr />
<h2>⏰ 5. 定期実行（Windowsタスクスケジューラ）</h2>
<p>作成したスクリプトを<code>.ps1</code>ファイルとして保存し、<br />
タスクスケジューラで自動実行を設定します。</p>
<table>
<thead>
<tr>

<th>項目</th>

<th>内容</th>
</tr>
</thead>
<tbody>
<tr>

<td>トリガー</td>

<td>1時間ごと</td>
</tr>
<tr>

<td>操作</td>

<td><code>powershell.exe -File &quot;C:\Scripts\NetworkMonitor.ps1&quot;</code></td>
</tr>
<tr>

<td>実行時の権限</td>

<td>「最上位の特権で実行」にチェック</td>
</tr>
</tbody>
</table>
<p>これで、サーバの死活状態が定期的に監視され、<br />
障害発生時は即座に検知できます。</p>
<hr />
<h2>🧠 応用：HTTPレスポンス監視</h2>
<p>Webサーバの応答確認には<code>Invoke-WebRequest</code>を使う方法も有効です。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">$response = Invoke-WebRequest &quot;https://example.com&quot; -UseBasicParsing -ErrorAction SilentlyContinue
if ($response.StatusCode -eq 200) {
    &quot;Webサーバ稼働中&quot;
} else {
    &quot;応答異常：$($response.StatusCode)&quot;
}</pre><p></p>
<blockquote>
  <code>StatusCode 200</code> が返れば正常稼働。<br>
  API監視やWebアプリ死活確認にも応用可能です。
</blockquote>
<hr />
<h2>🔗 関連記事</h2>
<ul>
<li><a href="https://dreamparadaisu.com/study_powershell_advance001/">ICMP禁止環境で疎通確認する3つの方法</a></li>
<li><a href="https://dreamparadaisu.com/com_test_connection/">Test-Connectionの基本使い方｜Pingとの違いと応用</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/">netstatで通信ポートを確認する方法</a></li>
<li><a href="https://">PowerShellでログ出力を自動化する方法（予定）</a></li>
</ul>
<hr />
<h2>🧾 まとめ</h2>
<ul>
<li><code>Test-Connection -Port</code>を使えば、ICMP禁止環境でも死活確認可能</li>
<li>ログ出力やメール通知で、自動監視をシンプルに構築可能</li>
<li>スケジューラ設定で運用自動化が実現</li>
</ul>
<blockquote>
  PowerShellは「運用監視の自動化ツール」としても強力です。<br>
  小さく始めて、徐々にログ解析・通知連携などに拡張していきましょう。
</blockquote>
<hr />		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="8207"
					data-ulike-nonce="8cabaafbc3"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_8207"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/study_powershell_advance002/">【PowerShell応用編】ネットワーク監視を自動化する方法｜ping不要の死活監視スクリプト</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/study_powershell_advance001/" rel="bookmark" title="【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法">【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</a></li>
<li><a href="https://dreamparadaisu.com/com_test_connection/" rel="bookmark" title="【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法">【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_more_network/" rel="bookmark" title="高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/" rel="bookmark" title="【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法">【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法</a></li>
</ol>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8207</post-id>	</item>
		<item>
		<title>【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</title>
		<link>https://dreamparadaisu.com/study_powershell_advance001/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=study_powershell_advance001</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 01 Nov 2025 23:59:39 +0000</pubDate>
				<category><![CDATA[インフラ/ネットワーク]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[トラブルシューティング]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[応用]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=8184</guid>

					<description><![CDATA[<p>【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法 ネットワークの疎通確認といえば「ping」。 しかし、セキュリティポリシーの厳しい環境では ICMP（ping通信）がファイアウ...</p>
The post <a href="https://dreamparadaisu.com/study_powershell_advance001/">【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/com_test_connection/" rel="bookmark" title="【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法">【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_more_network/" rel="bookmark" title="高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/" rel="bookmark" title="【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法">【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法</a></li>
<li><a href="https://dreamparadaisu.com/study_nslookup/" rel="bookmark" title="【Windowsコマンド入門】nslookupの使い方｜DNSトラブルを見抜く方法">【Windowsコマンド入門】nslookupの使い方｜DNSトラブルを見抜く方法</a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<h1>【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</h1>
<p>ネットワークの疎通確認といえば「ping」。<br />
しかし、セキュリティポリシーの厳しい環境では <strong>ICMP（ping通信）がファイアウォールで禁止</strong> されているケースも少なくありません。</p>
<p>この記事では、そんな「pingが通らない環境」で通信確認を行う方法を3つ紹介します。<br /><strong>Test-Connection -Port</strong> の活用例を中心に、実務で役立つ切り分けテクニックを解説します。</p>
<hr />
<h2>🚫 なぜpingが通らないのか？</h2>
<p>ping は ICMP（Internet Control Message Protocol）を利用して通信確認を行います。<br />
多くのFWやルータでは、セキュリティ上の理由からこのICMP通信が遮断されています。</p>
<ul>
<li>ICMPを許可すると、ネットワーク構成の推測（ポートスキャン）に悪用される恐れ</li>
<li>外部からのDoS攻撃（ICMP Flood）対策のため</li>
</ul>
<p>結果として、pingが「Request timed out」になっても、実際はTCP通信が正常に行えている場合があります。</p>
<hr />
<h2>✅ 方法①：PowerShellのTest-Connection -Portを使う</h2>
<p>PowerShell 7以降で利用可能な <code>Test-Connection -Port</code> は、<strong>TCPレベルで疎通確認</strong>を行えます。<br />
つまり、ping(ICMP)が禁止されていても、<strong>対象ポートが開いていれば通信可能</strong>です。</p>
<h3>例：Web・DB・SSHなどの確認</h3>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">Test-Connection web01 -Port 80
Test-Connection web01 -Port 443
Test-Connection db01 -Port 1433
Test-Connection server01 -Port 22</pre><p></p>
<p>結果：</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">TcpTestSucceeded : True
ComputerName     : web01
RemotePort       : 443
RoundtripTime    : 12</pre><p></p>
<table>
<thead>
<tr>

<th>項目</th>

<th>説明</th>
</tr>
</thead>
<tbody>
<tr>

<td>TcpTestSucceeded</td>

<td>Trueなら疎通成功</td>
</tr>
<tr>

<td>RemotePort</td>

<td>指定したTCPポート</td>
</tr>
<tr>

<td>RoundtripTime</td>

<td>応答時間（ms）</td>
</tr>
</tbody>
</table>
<hr />
<h2>🧩 方法②：アプリ層でのHTTP通信テスト（Invoke-WebRequest）</h2>
<p>Webサーバの応答を確認したい場合は、HTTPリクエストを送る方法もあります。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">Invoke-WebRequest https://www.google.com -UseBasicParsing</pre><p></p>
<ul>
<li>ステータスコード <code>200 OK</code> → 正常応答</li>
<li>ステータスコード <code>403 / 500</code> → Webアプリまたは認証エラー</li>
</ul>
<blockquote>
  💡 Invoke-WebRequest はAPIやWebシステムの死活確認にも活用できます。
</blockquote>
<hr />
<h2>🧠 方法③：特定ポートの開閉を確認（Test-NetConnection）</h2>
<p>もう1つの便利なコマンドが<code>Test-NetConnection</code> (Windows標準搭載)。<br />
PowerShell 5以降で利用でき、ICMPが使えない環境でもポートを指定して通信確認が可能です。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">Test-NetConnection db01 -Port 1433</pre><p></p>
<p>結果：</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">ComputerName     : db01
RemoteAddress    : 192.168.1.100
RemotePort       : 1433
TcpTestSucceeded : True</pre><p></p>
<p>→ <code>TcpTestSucceeded : True</code>で疎通成功。<br />
アプリケーション層(DBサーバやAPIサーバなど)との通信可否を簡単に判定できます。</p>
<hr />
<h2>🔍 実務での切り分けシナリオ</h2>
<table>
<thead>
<tr>

<th>症状</th>

<th>想定原因</th>

<th>確認コマンド</th>

<th>対処</th>
</tr>
</thead>
<tbody>
<tr>

<td>pingが通らないがWebは見られる</td>

<td>ICMP遮断のみ</td>

<td><code>Test-Connection -Port 443</code></td>

<td>問題なし（FW仕様）</td>
</tr>
<tr>

<td>pingもTCPも通らない</td>

<td>FWで全通信遮断</td>

<td>ネットワーク設定・ACL確認</td>

<td>通信ルール修正</td>
</tr>
<tr>

<td>ping通るがDB接続不可</td>

<td>TCPポート閉塞</td>

<td><code>Test-Connection -Port 1433</code></td>

<td>ポート開放またはサービス再起動</td>
</tr>
<tr>

<td>ICMP禁止環境で死活監視したい</td>

<td>ICMP不可だがTCP許可</td>

<td><code>Test-Connection -Port</code> + スクリプト化</td>

<td>定期監視バッチを作成</td>
</tr>
</tbody>
</table>
<hr />
<h2>💻 自動監視スクリプト例（PowerShell）</h2>
<p>以下のスクリプトをタスクスケジューラに登録しておけば、ミドルウェアの死活を定期的チェックできます。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">$targets = @(
    @{Name=&quot;Web&quot;; Host=&quot;web01&quot;; Port=443},
    @{Name=&quot;DB&quot;; Host=&quot;db01&quot;; Port=1433},
    @{Name=&quot;API&quot;; Host=&quot;api01&quot;; Port=8080}
)

foreach ($t in $targets) {
    $result = Test-Connection $t.Host -Port $t.Port -Quiet
    $status = if ($result) { &quot;OK&quot; } else { &quot;NG&quot; }
    Write-Output &quot;$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss') $($t.Name): $status&quot;
}</pre><p></p>
<p>出力例：</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">2025/11/01 08:30:00 Web: OK
2025/11/01 08:30:00 DB: NG
2025/11/01 08:30:00 API: OK</pre><p></p>
<hr />
<h2>🔗 関連記事</h2>
<ul>
<li><a href="https://dreamparadaisu.com/com_test_connection/">Test-Connectionの基本使い方｜Pingとの違いと応用</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/">netstatで通信ポートを確認する方法</a></li>
<li><a href="https://">PowerShellでネットワーク監視を自動化する方法</a></li>
</ul>
<hr />
<h2>🧾 まとめ</h2>
<p>ファイアウォールでICMPが禁止されている環境でも、<br />
PowerShellの<code>Test-Connection -Port</code>や<code>Test-NetConnection</code>を使えば、<br />
TCPレベルでの疎通確認が可能です。</p>
<blockquote>
  <strong>pingが通らない = 通信できない ではない！</strong>
<br>
  TCPポートが開いているかどうかを確認することで、正確な原因切り分けができます。
</blockquote>
<hr />		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="8184"
					data-ulike-nonce="e51d5fb393"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_8184"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/study_powershell_advance001/">【PowerShell応用編】pingが通らない？ICMP禁止環境で疎通確認する3つの方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/com_test_connection/" rel="bookmark" title="【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法">【PowerShellコマンド入門】test-connectionの使い方｜Pingとの違いと通信確認方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
<li><a href="https://dreamparadaisu.com/infla_more_network/" rel="bookmark" title="高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a></li>
<li><a href="https://dreamparadaisu.com/study_netstat/" rel="bookmark" title="【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法">【Windowsコマンド入門】netstatの使い方｜通信ポートとプロセスを確認する方法</a></li>
<li><a href="https://dreamparadaisu.com/study_nslookup/" rel="bookmark" title="【Windowsコマンド入門】nslookupの使い方｜DNSトラブルを見抜く方法">【Windowsコマンド入門】nslookupの使い方｜DNSトラブルを見抜く方法</a></li>
</ol>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8184</post-id>	</item>
		<item>
		<title>高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</title>
		<link>https://dreamparadaisu.com/infla_more_network/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=infla_more_network</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 04 Oct 2025 09:11:45 +0000</pubDate>
				<category><![CDATA[インフラ/ネットワーク]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[入門]]></category>
		<category><![CDATA[学習]]></category>
		<category><![CDATA[応用]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=8050</guid>

					<description><![CDATA[<p>高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る どうも！リョクちゃです。 これまで学んだ STP（ループ防止）、リンクアグリゲーション（帯域とL2冗長）、VRRP...</p>
The post <a href="https://dreamparadaisu.com/infla_more_network/">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/infla_subnetmask/" rel="bookmark" title="サブネットマスクとは？計算方法とセグメントの違いを図解で解説">サブネットマスクとは？計算方法とセグメントの違いを図解で解説</a></li>
<li><a href="https://dreamparadaisu.com/infla_gateway/" rel="bookmark" title="デフォルトゲートウェイとは？通信の出口と役割を理解しよう">デフォルトゲートウェイとは？通信の出口と役割を理解しよう</a></li>
<li><a href="https://dreamparadaisu.com/infla_cidr/" rel="bookmark" title="CIDRとは？/24や/26の意味・サマリゼーション・VLSMを理解する">CIDRとは？/24や/26の意味・サマリゼーション・VLSMを理解する</a></li>
<li><a href="https://dreamparadaisu.com/infla_nat/" rel="bookmark" title="NATとは？プライベートIPとグローバルIPを変換する仕組みを解説">NATとは？プライベートIPとグローバルIPを変換する仕組みを解説</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<h1>高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</h1>
<p>どうも！リョクちゃです。</p>
<p>これまで学んだ <strong>STP（ループ防止）</strong>、<strong>リンクアグリゲーション（帯域とL2冗長）</strong>、<strong>VRRP（ゲートウェイ冗長）</strong> を組み合わせることで、より実用的で強固なネットワークを設計できます。<br />
本記事では、L2・L3を跨いだ冗長化設計の基本と、実務で注意すべきポイントを解説します。</p>
<hr />
<h2>なぜ複合的な冗長設計が必要か</h2>
<p>単一の冗長技術では、以下のような課題が残ります。</p>
<ul>
<li>STPだけ → 帯域が使い切れず片系が待機状態になる</li>
<li>LAGだけ → ゲートウェイ機能が単一機器に依存する</li>
<li>VRRPだけ → L2のループや単一リンク障害に弱い</li>
</ul>
<p>これらを組み合わせることで、<strong>停止リスクを最小化しつつ帯域を最大活用</strong>できます。</p>
<hr />
<h2>設計の基本パターン</h2>
<h3>1. アクセス層（L2）での冗長化</h3>
<ul>
<li><strong>リンクアグリゲーション（LAG / EtherChannel）</strong> でスイッチ間を束ねて帯域を拡張</li>
<li><strong>STPのRootブリッジを意図的に決定</strong>し、予期しない経路の変化を防止</li>
</ul>
<figure id="attachment_mmd_8051" class="wp-block-image aligncenter"><img decoding="async" width="1024" height="1024" src="https://dreamparadaisu.com/wp-content/uploads/2025/10/68fc0a418bd4c80ae4a832dfb8cc6741.png" class="attachment-full size-full" alt="ChatGPT Image 2025年10月4日 18_03_00" loading="lazy" align="center" /></figure>
<p>&#x1f449; Rootブリッジをコアルータ側に設定するのがベストプラクティス。</p>
<hr />
<h3>2. コア層（L3）での冗長化</h3>
<ul>
<li><strong>VRRP / HSRP</strong> を利用し、デフォルトゲートウェイを冗長化</li>
<li>各VLANごとにVRRPグループを作り、Active/Standbyを振り分けることでトラフィックを分散可能</li>
</ul>
<p>例：</p>
<ul>
<li>VLAN10 → CoreSW1をMaster</li>
<li>VLAN20 → CoreSW2をMaster</li>
</ul>
<hr />
<h2>実務でのベストプラクティス</h2>
<ul>
<li><strong>RootブリッジとVRRP Masterの整合性</strong>
<br>
STPのRootとVRRPのMasterは同じスイッチにすると経路が安定。</li>
<li><p><strong>LACPを利用した安全なリンク集約</strong>
<br>
静的設定よりもLACP推奨。リンク異常検知と自動除外が効く。</p></li>
<li><p><strong>テスト環境で障害シナリオを確認</strong>
<br>
ケーブル抜きテストやMasterダウンテストを事前に実施。</p></li>
<li><p><strong>監視とログ収集を導入</strong>
<br><code>show spanning-tree</code>, <code>show etherchannel summary</code>, <code>show vrrp</code> などを監視で活用。</p></li>
</ul>
<hr />
<h2>トラブル例と対策</h2>
<table>
<thead>
<tr>

<th>トラブル例</th>

<th>原因</th>

<th>対策</th>
</tr>
</thead>
<tbody>
<tr>

<td>意図しないRootブリッジの切り替わり</td>

<td>Priority未設定</td>

<td>コア側に低いBridge Priorityを設定</td>
</tr>
<tr>

<td>VRRP切り替わり後の帯域不均衡</td>

<td>VLANごとのMaster設計不足</td>

<td>VLANごとにActive/Standbyを分散</td>
</tr>
<tr>

<td>LAG片系障害で通信不安定</td>

<td>LACP未使用</td>

<td>LACP設定を使用し異常リンクを自動切り離し</td>
</tr>
</tbody>
</table>
<hr />
<h2>まとめ</h2>
<ul>
<li>L2（STP＋LAG）とL3（VRRP）を組み合わせることで、<strong>高可用性かつ高効率なネットワーク</strong>が構築できる</li>
<li>RootブリッジとVRRP Masterの整合性を取ることが設計の要</li>
<li>障害発生時の動作をテストすることで実運用に強いネットワークを実現</li>
</ul>
<p>👉 次回は、より実務寄りの「障害シナリオと切り分けの実践」へ進みます。</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="8050"
					data-ulike-nonce="3672c22a2c"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_8050"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/infla_more_network/">高度なネットワーク冗長化設計入門：STP＋リンクアグリゲーション＋VRRPで止まらないネットワークを作る</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<h3>関連記事</h3><ol>
<li><a href="https://dreamparadaisu.com/infla_subnetmask/" rel="bookmark" title="サブネットマスクとは？計算方法とセグメントの違いを図解で解説">サブネットマスクとは？計算方法とセグメントの違いを図解で解説</a></li>
<li><a href="https://dreamparadaisu.com/infla_gateway/" rel="bookmark" title="デフォルトゲートウェイとは？通信の出口と役割を理解しよう">デフォルトゲートウェイとは？通信の出口と役割を理解しよう</a></li>
<li><a href="https://dreamparadaisu.com/infla_cidr/" rel="bookmark" title="CIDRとは？/24や/26の意味・サマリゼーション・VLSMを理解する">CIDRとは？/24や/26の意味・サマリゼーション・VLSMを理解する</a></li>
<li><a href="https://dreamparadaisu.com/infla_nat/" rel="bookmark" title="NATとは？プライベートIPとグローバルIPを変換する仕組みを解説">NATとは？プライベートIPとグローバルIPを変換する仕組みを解説</a></li>
<li><a href="https://dreamparadaisu.com/infla_rooting_trouble/" rel="bookmark" title="ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法">ルーティングトラブルシュート：ping・tracerouteで障害を切り分ける方法</a></li>
</ol>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8050</post-id>	</item>
		<item>
		<title>【VB.Net】TableLayoutPanelを配置して、動的に画面をカスタマイズしてみた</title>
		<link>https://dreamparadaisu.com/visualbasic_72/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_72</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sun, 22 Aug 2021 07:52:54 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[応用]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=2830</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、Windowsフォームアプリケーションのフォーム画面に 既に配置されたTableLayoutPanelの中に動的にコントロールを 追加し、画面をカスタマイズしていく方法を紹...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_72/">【VB.Net】TableLayoutPanelを配置して、動的に画面をカスタマイズしてみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、Windowsフォームアプリケーションのフォーム画面に</p>
<p>既に配置されたTableLayoutPanelの中に動的にコントロールを</p>
<p>追加し、画面をカスタマイズしていく方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>あらかじめコントロールを配置するのではなく、プログラムの条件によって</p>
<p>画面を変更するアプリケーションが作れるようになります。</p>
<p>&nbsp;</p>
<p>ちなみに前回の記事はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_71/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/pic_4-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/08/pic_4-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/08/pic_4-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/08/pic_4-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_71/" class="blog-card-title-link">【VB.Net】好きな場所にフォルダを作成するWindowsフォームアプリを作る</a></div><div class="blog-card-excerpt">Windowsフォームアプリケーションで好きな場所にフォルダを作成するアプリを簡単に作成してみたので紹介しています。VB.Netでフォルダ操作をする際の参考になれば嬉しいです。小さなことからコツコツと始めてみます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_71/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_71/" alt="" /></a></div><div class="blog-card-date">2021-08-12 04:31</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HED1X+9ALMR6+4QGO+5Z6WX" rel="nofollow">
<img decoding="async" class="aligncenter" src="https://www26.a8.net/svt/bgt?aid=210622101562&amp;wid=001&amp;eno=01&amp;mid=s00000022092001004000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3HED1X+9ALMR6+4QGO+5Z6WX" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>TableLayoutPanel</h1>
<p>以前にTableLayoutPanelについては下記の記事で紹介をしていました。</p>
<p>その時はTableLayoutPanelの使い方どまりでした。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_37/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/11/table_layout_23-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/11/table_layout_23-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/11/table_layout_23-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/11/table_layout_23-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_37/" class="blog-card-title-link">【VB.Net】TableLayoutPanelの使い方～画面レイアウトを工夫してみた～</a></div><div class="blog-card-excerpt">Windowsフォームアプリケーションの画面レイアウトでコンポーネントの配置が整わない、綺麗に配置できないといった悩みはありませんか？そんな時に使える、TableLayoutPanelについて例を交えて紹介しています。初学者の参考になれば。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_37/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_37/" alt="" /></a></div><div class="blog-card-date">2020-11-22 18:50</div></div></div>
<p>&nbsp;</p>
<p>今回はステップアップしたTableLayoutPanelの使い方になります。</p>
<p>&nbsp;</p>
<h2>フォーム画面の作成</h2>
<p>まず、最初に以下のフォーム画面を作成します。</p>
<figure id="attachment_mmd_2831" class="wp-block-image aligncenter"><img decoding="async" width="814" height="489" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>このフォームを使って、TableLayoutPanelのレイアウトなどを</p>
<p>動的に変更していきたいと思います。</p>
<p>&nbsp;</p>
<p>コントロールの配置については下記の表になります。</p>

<table id="tablepress-58" class="tablepress tablepress-id-58">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">TableLayoutPanel</td><td class="column-3">tlpMain</td>
</tr>
</tbody>
</table>
<!-- #tablepress-58 from cache -->
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<p>&nbsp;</p>
<h1>TableLayoutPanelの列と行を動的に追加</h1>
<p>追加したTableLayoutPanelに動的に列や行を追加するには、下記のコードで行います。</p>
<p>&nbsp;</p>
<p>列を追加する場合</p>
<div class="sp-info">TableLayoutPanel.ColumnCount = 追加したい列数</div>
<p>&nbsp;</p>
<p>行を追加する場合</p>
<div class="sp-info">TableLayoutPanel.RowCount = 追加したい行数</div>
<p>&nbsp;</p>
<p>これを使って、試しに5個の列と行を追加していきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 列と行を5個追加
Dim colAndRowNum As Integer = 5
Me.tlpMain.RowCount = colAndRowNum
Me.tlpMain.ColumnCount = colAndRowNum</pre><p>
&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2837" class="wp-block-image aligncenter"><img decoding="async" width="798" height="479" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>うーん、よくわかりませんね、追加できたかどうか。。。</p>
<p>&nbsp;</p>
<p>これをわかりやすくするために、境界線の設定を行っていきます。</p>
<p>こちらも動的に行っていきます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HE3NG+90H9GY+47FO+BXIYP" rel="nofollow">
<img decoding="async" class="aligncenter" src="https://www25.a8.net/svt/bgt?aid=210609916545&amp;wid=001&amp;eno=01&amp;mid=s00000019626002004000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3HE3NG+90H9GY+47FO+BXIYP" alt="" width="1" height="1" border="0" />
<h2>境界線の設定</h2>
<p>境界線の設定には2種類あり、</p>
<ul>

<li>TableLayoutPanelの境界線</li>

<li>TableLayoutPanelの各部屋(セル)の境界線</li>
</ul>
<p>の設定の2種類があります。</p>
<p>(これが主に使うであろう境界線の設定になります。)</p>
<p>&nbsp;</p>
<p>それぞれ</p>
<p>TableLayoutPanelの境界線</p>
<div class="sp-info">TableLayoutPanel.BorderStyle = BorderStyle.各設定したい境界線</div>
<p>設定したい境界線には3種類あります。</p>
<ul>

<li>BorderStyle.<span style="color: #ff6600">None </span> &#8216; 境界線なし</li>

<li>BorderStyle.<span style="color: #ff6600">FixedSingle </span> &#8216; 1重線の境界線</li>

<li>BorderStyle.<span style="color: #ff6600">Fixed3D </span> &#8216; 3Dの境界線</li>
</ul>
<p>デフォルトだと、Noneが割り当てられています。</p>
<p>&nbsp;</p>
<p>TableLayoutPanelの各部屋(セル)の境界線</p>
<div class="sp-info">TableLayoutPanel.CellBorderStyle =
TableLayoutPanelCellBorderStyle.各設定したい境界線</div>
<p>設定したい境界線には、7種類あります。</p>
<ul>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">None</span> &#8216; 境界線無し</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">Single</span> &#8216; 1重線の境界線</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">Inset</span> &#8216; 1重線のくぼんだ境界線</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">InsetDouble </span> &#8216; 2重線のくぼんだ境界線</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">Outset</span> &#8216; 1重線の浮出した境界線</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">OutsetDouble</span> &#8216; 2重線の浮出した境界線</li>

<li>TableLayoutPanelCellBorderStyle.<span style="color: #ff6600">OutsetPartial</span> &#8216; 浮出した部分を含む1重線の境界線</li>
</ul>
<p>先ほど追加した列と行数に対して、下記のように設定します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 追加した行や列がわかりやすいように境界線のスタイルを設定
Me.tlpMain.BorderStyle = BorderStyle.FixedSingle
Me.tlpMain.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset</pre><p>
&nbsp;</p>
<p>今回は、TableLayoutPanelのBorderStyleには1重線の境界線</p>
<p>TableLayoutPanelの各部屋の境界線には1重線のくぼんだ境界線を設定しています。</p>
<p>&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2838" class="wp-block-image aligncenter"><img decoding="async" width="800" height="482" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>わかりやすくはなりましたが、各部屋のサイズが微妙ですね。</p>
<p>&nbsp;</p>
<h2>TableLayoutPanelの各部屋のサイズの設定</h2>
<p>各部屋のサイズが微妙なので、こちらも動的に設定してみます。</p>
<p>サイズを設定するには、行と列にそれぞれ行う必要があります。</p>
<p>&nbsp;</p>
<p>列の場合</p>
<div class="sp-info">TableLayoutPanel.ColumnStyles.Insert(設定する列数,
New ColumnStyle(SizeType.設定するサイズのモード))</div>
<p>&nbsp;</p>
<p>行の場合</p>
<div class="sp-info">TableLayoutPanel.RowStyles.Insert(設定する行数,
New RowStyle(SizeType.設定するサイズのモード)</div>
<div></div>
<div>設定するサイズのモードには、3種類あります。</div>
<ul>

<li>SizeType.<span style="color: #ff6600">AutoSize </span> &#8216; 他の行や列と猟奇を共有するように自動的に設定</li>

<li>SizeType.<span style="color: #ff6600">Absolute </span> &#8216; 行または列のサイズは、正確なピクセル数に設定</li>

<li>SizeType.<span style="color: #ff6600">Percent </span> &#8216; 行または列のサイズは、親コンテナのパーセントとして設定</li>
</ul>
<p>&nbsp;</p>
<p>サイズモードの設定によって、<span class="marker">サイズの指定などがオプションとして付加できたりします</span>。</p>
<p>&nbsp;</p>
<p>例えば、SizeType.Percentにすると、</p>
<p><strong><span class="marker-under">New RowStyle(SizeType.Percent, width)</span></strong>となります。</p>
<p>widthにサイズを指定することができます。</p>
<p>&nbsp;</p>
<p>ここでは下記のようにコードを書いてみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 追加した列と行のサイズを変更
For col As Integer = 0 To Me.tlpMain.ColumnCount
    Me.tlpMain.ColumnStyles.Insert(col, New ColumnStyle(SizeType.Percent, 50))
Next col

For row As Integer = 0 To Me.tlpMain.RowCount
    Me.tlpMain.RowStyles.Insert(row, New RowStyle(SizeType.Percent, 50))
Next row</pre><p>
それぞれ列と行ごとにサイズの設定をしています。</p>
<p>&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2841" class="wp-block-image aligncenter"><img decoding="async" width="797" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>綺麗になりました。</p>
<p>ちゃんと5行5列に区切ることができています。</p>
<p>&nbsp;</p>
<p>これを全体に表示するには、Dockプロパティを設定します。</p>
<p>こちらも動的に行っていきます。</p>
<h2>フォームへドッキング</h2>
<p>Dockプロパティを設定するには、</p>
<div class="sp-info">TableLayoutPanel.Dock = DockStyle.ドッキングモード</div>
<p>ドッキングモードには、6種類あります。</p>
<p>&nbsp;</p>
<ul>

<li><span style="color: #ff6600">None </span> &#8216; なし</li>

<li><span style="color: #ff6600">Top </span> &#8216; 格納する側のコントロールの上端にドッキング</li>

<li><span style="color: #ff6600">Bottom </span> &#8216; 格納する側のコントロールの下端にドッキング</li>

<li><span style="color: #ff6600">Left </span> &#8216; 格納する側のコントロールの左端にドッキング</li>

<li><span style="color: #ff6600">Right </span> &#8216; 格納する側のコントロールの右端にドッキング</li>

<li><span style="color: #ff6600">Fill </span> &#8216; 格納する側のコントロールの四辺にドッキング且つ適切なサイズに自動調整</li>
</ul>
<p>&nbsp;</p>
<p>今回はFillにして、フォーム全体にドッキングし、適切なサイズに自動で調整をさせます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' TableLayoutPanelをフォームにドッキングする。
Me.tlpMain.Dock = DockStyle.Fill</pre><p>
&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2842" class="wp-block-image aligncenter"><img decoding="async" width="801" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>見やすくなりました。</p>
<p>&nbsp;</p>
<p>それでは、ここからいよいよコントロールを動的に追加していきます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+112G4H" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www23.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006226000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www19.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+112G4H" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>TableLayoutPanelに動的にコントロールを追加</h1>
<p>よく使うであろうコントロールをここでは動的に追加していく方法を紹介します。</p>
<p>&nbsp;</p>
<p>TableLayoutPanelにコントロールを追加するには、</p>
<div class="sp-info">TableLayoutPanel.Controls.Add(追加したいコントロール、列番号、行番号)</div>
<div>追加するコントロールは<span class="red-under">事前に、変数としてインスタンスを生成しておく必要</span>があります。</div>
<h2>ラベル(Label)</h2>
<p>ラベルを追加するには、</p>
<div class="sp-info">Dim 変数名 As New Label</div>
<p>とし、</p>
<div class="sp-info">TableLayoutPanel.Controls.Add(作成した変数名, 列番号, 行番号)</div>
<p>となります。</p>
<p>&nbsp;</p>
<p>例として、2列目の1行目にボタンを追加します。</p>
<p>わかりやすいように、作成したラベルには&#8221;こんにちは&#8221;と表示させています。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' ラベルを2列目の1行目に配置
Dim lblControl As New Label
lblControl.Text = "こんにちは"
Me.tlpMain.Controls.Add(lblControl, 1, 0)</pre><p>
ここで<span class="red-under">行番号と列番号の始まりは1からではなく、0からになるので注意が必要</span>です。</p>
<p>&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2844" class="wp-block-image aligncenter"><img decoding="async" width="798" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>追加することができました。</p>
<p>&nbsp;</p>
<h2>ボタン(Button)</h2>
<p>ボタンを追加するには、</p>
<div class="sp-info">Dim 変数名 As New Button</div>
<p>として、インスタンス化しておく必要があります。</p>
<p>&nbsp;</p>
<p>これも例として、</p>
<p>2列目の2行目に追加してみます。</p>
<p>わかりやすいようにテキストには&#8221;押してみて&#8221;と表示させてみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' ボタンを2列目の2行目にを配置
Dim btnControl As New Button
btnControl.Text = "押してみて"
Me.tlpMain.Controls.Add(btnControl, 1, 1)</pre><p>
&nbsp;</p>
<p>実行すると</p>
<figure id="attachment_mmd_2845" class="wp-block-image aligncenter"><img decoding="async" width="800" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>テキストボックス(TextBox)</h2>
<p>テキストボックスを追加するには、</p>
<div class="sp-info">Dim 変数名 As New TextBox</div>
<p>&nbsp;</p>
<p>例として、</p>
<p>3列目の1行目に追加してみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' テキストボックスを3列目の1行目に配置
Dim tbxControl As New TextBox
Me.tlpMain.Controls.Add(tbxControl, 2, 0)</pre><p>
&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2846" class="wp-block-image aligncenter"><img decoding="async" width="801" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>チェックボックス(CheckBox)</h2>
<p>チェックボックスを追加するには、</p>
<div class="sp-info">Dim 変数名 As New CheckBox</div>
<p>&nbsp;</p>
<p>例として、</p>
<p>3列目の4行目に追加してみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' チェックボックスを3列目の4行目に配置
Dim cbxControl As New CheckBox
cbxControl.Text = "チェックしてみて"
Me.tlpMain.Controls.Add(cbxControl, 2, 3)</pre><p>
&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2847" class="wp-block-image aligncenter"><img decoding="async" width="801" height="480" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_9.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>ラジオボタン(RadioButton)</h2>
<p>ラジオボタンを追加するには、</p>
<div class="sp-info">Dim 変数名 As New RadioButton</div>
<p>&nbsp;</p>
<p>例として、</p>
<p>4列目の4行目に追加してみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' ラジオボタンを4列目の4行目に配置
Dim rbtControl As New RadioButton
rbtControl.Text = "Apple"
Me.tlpMain.Controls.Add(rbtControl, 3, 3)</pre><p>
&nbsp;</p>
<p>これを実行すると、</p>
<figure id="attachment_mmd_2848" class="wp-block-image aligncenter"><img decoding="async" width="801" height="480" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/table_10.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>このようにして各種コントロールを動的に追加することもできます。</p>
<p>&nbsp;</p>
<p>動的に追加したコントロールでイベントを発生させて処理を行いたい場合については、</p>
<p>次回以降の記事で触れていこうと思います。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>TableLayoutPanelに動的にコントロールを追加する方法について紹介しました。</p>
<p>プログラム実行中に画面をカスタマイズしたい、そんなときにおススメです。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/13 06:25時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/13 06:25時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/13 06:25時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="2830"
					data-ulike-nonce="72770587d6"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2830"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_72/">【VB.Net】TableLayoutPanelを配置して、動的に画面をカスタマイズしてみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2830</post-id>	</item>
	</channel>
</rss>
