<?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>Visual Studio | Kemmy&#039;s Blog</title>
	<atom:link href="https://www.kemmy-it.com/category/ide/visual-studio/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kemmy-it.com</link>
	<description>データベースやプログラミング言語等の基本的事項を、図や表を使ってアウトプットしています。</description>
	<lastBuildDate>Sat, 13 Dec 2025 01:07:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.kemmy-it.com/wp-content/uploads/2024/09/Kemmy_vga-150x150.png</url>
	<title>Visual Studio | Kemmy&#039;s Blog</title>
	<link>https://www.kemmy-it.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Visual Studio 2022】が起動しない！　原因と対処法を徹底解説【初心者向け】</title>
		<link>https://www.kemmy-it.com/2025/11/01/visual_studio_fail_boot/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sat, 01 Nov 2025 12:02:06 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=6538</guid>

					<description><![CDATA[目次 はじめにVisual Studio 2022が起動する仕組みVisual Studio 2022 が起動しないときにまず行うべき診断ライセンスキャッシュの確認SafeMode で起動できるか確認する起動ログを確認す [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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></li><li><a href="#toc2" tabindex="0">Visual Studio 2022が起動する仕組み</a></li><li><a href="#toc3" tabindex="0">Visual Studio 2022 が起動しないときにまず行うべき診断</a><ol><li><a href="#toc4" tabindex="0">ライセンスキャッシュの確認</a></li><li><a href="#toc5" tabindex="0">SafeMode で起動できるか確認する</a></li><li><a href="#toc6" tabindex="0">起動ログを確認する</a></li><li><a href="#toc7" tabindex="0">TEMP環境変数の確認</a></li></ol></li><li><a href="#toc8" tabindex="0">Visual Studio 2022 が起動しない原因と対処方法</a><ol><li><a href="#toc9" tabindex="0">ライセンスキャッシュ破損</a><ol><li><a href="#toc10" tabindex="0">ライセンスキャッシュが破損した場合の症状</a></li><li><a href="#toc11" tabindex="0">対処方法</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><li><a href="#toc15" tabindex="0">対処方法</a></li></ol></li><li><a href="#toc16" tabindex="0">アップデート失敗</a><ol><li><a href="#toc17" tabindex="0">アップデート失敗時の症状</a></li><li><a href="#toc18" tabindex="0">対処方法</a></li></ol></li><li><a href="#toc19" tabindex="0">TEMP環境変数の誤設定</a><ol><li><a href="#toc20" tabindex="0">よくある誤設定</a></li></ol></li></ol></li><li><a href="#toc21" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p class="wp-block-paragraph">Visual Studio 2022を使っていると、ある日突然「起動しない」「スタート画面が表示されない」といったトラブルに遭遇することがあります。</p>



<p class="wp-block-paragraph">本ブログでは、Visual Studio 2022が起動しなくなった場合の対処法を、分かり易く紹介します。</p>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">Visual Studio 2022が起動する仕組み</span></h2>



<p class="wp-block-paragraph">まずトラブルの原因を特定するため、Visual Studio 2022 の起動プロセスを説明します。</p>



<ol class="wp-block-list">
<li><strong>devenv.exe の起動</strong><br>Visual Studio の実行ファイル（devenv.exe ）が起動され、Visual Studio 2022の初期化が始まる。<br><br></li>



<li><strong>ライセンスの検証</strong><br>「%LOCALAPPDATA%\Microsoft\VSCommon\OnlineLicensing」 にあるキャッシュを参照し、ライセンスの有効性を確認する。
<ul class="wp-block-list">
<li><strong>%LOCALAPPDATA%</strong><br>C:\Users\ユーザ名\AppData\Local　を示す。<br><br></li>
</ul>
</li>



<li><strong>拡張機能の読み込み</strong><br>ReSharperなどの拡張機能が順次読み込まれる。SafeModeでは読み込みをスキップ可能。<br><br></li>



<li><strong>ユーザー設定の復元<br></strong>%APPDATA%\Microsoft\VisualStudio に保存された設定ファイルを読み込み、前回の状態を復元する。
<ul class="wp-block-list">
<li>C:\Users\ユーザ名\AppData\Roaming　を示す。<br><br></li>
</ul>
</li>



<li><strong>ワークロードの初期化</strong><br>C#や.NETなど、インストール済みのワークロードに応じて必要なコンポーネントを初期化する。<br><br></li>



<li><strong>スタートウィンドウの表示</strong><br>最近開いたプロジェクトやテンプレートが表示され、ユーザー操作が可能になる。</li>
</ol>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="linkcard"><div class="lkc-external-wrap"><a rel="noopener" class="lkc-link no_icon" href="https://amzn.to/4nBFQdj" data-lkc-id="95" target="_blank"><div class="lkc-card"><div class="lkc-info"><div class="lkc-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=amzn.to" alt="" width="16" height="16" /></div><div class="lkc-domain">amzn.to</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Famzn.to%2F4nBFQdj?w=200" width="170px" height="200px" alt="" /></figure><div class="lkc-title">改訂新版　Visual Studio パーフェクトガイド</div><div class="lkc-excerpt">本書は、初めて開発を行う人に向けに最新の「Visual Studio 2022」の活用方法を解説した入門書です。本書を読めば、.NET MAUI／Blazorによるマルチプラットフォーム開発、単体テストフレームワークを用いたソフトウェアテスト、Run To Clickによるデバッグ技法、行ステージングによるソースコード管理など開発に必要なVisual Studioの活用法がわかります。</div></div><div class="clear"></div></div></a></div></div>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc3">Visual Studio 2022 が起動しないときにまず行うべき診断</span></h2>



<h3 class="wp-block-heading"><span id="toc4">ライセンスキャッシュの確認</span></h3>



<p class="wp-block-paragraph">%LOCALAPPDATA%\Microsoft\VSCommon\OnlineLicensing　フォルダ内の「<code>default.metadata</code>」 が NULL 埋めされていたら破損。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">SafeMode で起動できるか確認する</span></h3>



<p class="wp-block-paragraph">ファイ名を指定して実行（「ウィンドウズキー＋W」）で、「devenv.exe /SafeMode」コマンドが実行できるか確認する。</p>



<p class="wp-block-paragraph">拡張機能を読み込まないで起動するので、起動できた場合は拡張機能が原因の可能性が大きい。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="384" src="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003-1024x384.png" alt="" class="wp-image-4115" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003-1024x384.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003-768x288.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003-1536x576.png 1536w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-003.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">起動ログを確認する</span></h3>



<p class="wp-block-paragraph">「devenv.exe /log」で起動後、ログファイル「%APPDATA%\Microsoft\VisualStudio\Version\ActivityLog.xml」内のエラー内容（例：ライセンス検証失敗、拡張機能クラッシュ）を確認する。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">TEMP環境変数の確認</span></h3>



<p class="wp-block-paragraph">セミコロン付きや無効なパスがあると起動に失敗します。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="linkcard"><div class="lkc-external-wrap"><a rel="noopener" class="lkc-link no_icon" href="https://amzn.to/43DRIo6" data-lkc-id="96" target="_blank"><div class="lkc-card"><div class="lkc-info"><div class="lkc-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=amzn.to" alt="" width="16" height="16" /></div><div class="lkc-domain">amzn.to</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Famzn.to%2F43DRIo6?w=200" width="170px" height="200px" alt="" /></figure><div class="lkc-title">Visual Studioパーフェクトガイド 単行本</div><div class="lkc-excerpt">本書はIDEに焦点を当てた書籍です。IDEは豊富な機能が揃っているため、C#を用いてUnityでゲーム開発を行う場合やクロスプラットフォーム開発を行う際,IDE(Visual Studio)を使うのはデファクトスタンダードになっています。本書は新人エンジニアに向けて,豊富な機能が揃ったIDEが裏で何をやっているかをわかりやすく解説した書籍を目指します。</div></div><div class="clear"></div></div></a></div></div>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc8">Visual Studio 2022 が起動しない原因と対処方法</span></h2>



<h3 class="wp-block-heading"><span id="toc9">ライセンスキャッシュ破損</span></h3>



<p class="wp-block-paragraph">Visual Studio は、起動時のライセンスを、毎回オンラインで確認するのではなく、以下のフォルダにあるキャッシュファイル default.metadata 等を参照します。</p>



<pre class="wp-block-code bash"><code>%LOCALAPPDATA%\Microsoft\VSCommon\OnlineLicensing</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc10">ライセンスキャッシュが破損した場合の症状</span></h4>



<ul class="wp-block-list">
<li>Visual Studio が起動直後にクラッシュ</li>



<li>スタート画面が表示されず、プロセスが即終了</li>



<li>ログに「License validation task failed unexpectedly」などのエラーが記録される</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc11">対処方法</span></h4>



<p class="wp-block-paragraph">以下のようにして、キャッシュのリセットを実行します。</p>



<p class="wp-block-paragraph"><strong>「%LOCALAPPDATA%\Microsoft\VSCommon\OnlineLicensing」のフォルダ名称を　「OnlineLicensing_bkup」等の名称に変更し、Visual Studio を再起動。</strong>こうする事で、新しいキャッシュが自動生成される。<br>※この操作はライセンス情報の再取得を促すもので、ライセンス自体が無効になるわけではありません。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="384" src="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001-1024x384.png" alt="" class="wp-image-4112" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001-1024x384.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001-768x288.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001-1536x576.png 1536w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-001.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc12">拡張機能の不具合</span></h3>



<h4 class="wp-block-heading"><span id="toc13">拡張機能が不具合時の症状</span></h4>



<ul class="wp-block-list">
<li>スプラッシュ画面が表示された直後に強制終了</li>



<li>スタートウィンドウが表示されず、プロセスが消える</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc14">拡張機能の不具合かどうかの確認方法</span></h4>



<ul class="wp-block-list">
<li><strong>SafeModeで起動してみる</strong></li>
</ul>



<pre class="wp-block-code"><code>devenv.exe /SafeMode</code></pre>



<p class="wp-block-paragraph">SafeModeでは拡張機能が読み込まれない為、このモードで起動できる場合は拡張機能が原因の可能性が高いと言えます。<br></p>



<ul class="wp-block-list">
<li><strong>起動ログを確認する</strong><br>「%APPDATA%\Microsoft\VisualStudio\17.0\ActivityLog.xml」に以下のような記述がある場合、拡張機能がクラッシュの原因です</li>
</ul>



<pre class="wp-block-code plaintext"><code>Extension 'ReSharper' failed to load.
Exception: System.NullReferenceException...</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc15">対処方法</span></h4>



<ul class="wp-block-list">
<li>SafeModeで起動して、拡張機能を無効化 又は、削除
<ul class="wp-block-list">
<li>SafeModeで起動（「ファイル名を指定して実行」で、<code>devenv.exe /SafeMode</code>）</li>



<li>メニュー → [拡張機能] → [拡張機能の管理]</li>



<li>問題のある拡張機能（例：ReSharper）を「無効化」または「アンインストール」<br><br></li>
</ul>
</li>



<li>Visual Studio Installer で修復（拡張機能の不整合も含めて再構成される）
<ul class="wp-block-list">
<li>スタートメニュー → Visual Studio Installer → 対象バージョン → 修復</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="linkcard"><div class="lkc-external-wrap"><a rel="noopener" class="lkc-link no_icon" href="https://amzn.to/47BtsUT" data-lkc-id="97" target="_blank"><div class="lkc-card"><div class="lkc-info"><div class="lkc-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=amzn.to" alt="" width="16" height="16" /></div><div class="lkc-domain">amzn.to</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Famzn.to%2F47BtsUT?w=200" width="170px" height="200px" alt="" /></figure><div class="lkc-title">Kindle Paperwhite (16GB) 7インチディスプレイ</div><div class="lkc-excerpt">レビュー：読書が楽しくなるガジェット。スマホで読むのとは違います。カラー版もありますが、カラーの書籍って雑誌を除くとそんなにないのでPaperwhiteで十分だと個人的には思います。</div></div><div class="clear"></div></div></a></div></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc16">アップデート失敗</span></h3>



<p class="wp-block-paragraph">アップデート失敗は、構成ファイルの破損やネットワーク不具合、インストーラーの不整合などが原因で発生します。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc17">アップデート失敗時の症状</span></h4>



<p class="wp-block-paragraph">以下の様に、症状は多岐に渡る。</p>



<ul class="wp-block-list">
<li><strong>Visual Studioが起動しない</strong>
<ul class="wp-block-list">
<li>スプラッシュ画面が表示された直後にクラッシュ</li>



<li>プロセス（<code>devenv.exe</code>）が一瞬で終了する<br><br></li>
</ul>
</li>



<li><strong>Visual Studio Installer自体が起動しない</strong><br><br></li>



<li><strong>SafeModeでも起動しない</strong><br><br></li>



<li><strong>特定のワークロードが消えている</strong><br><br></li>



<li><strong>IntelliSenseが動作しない</strong><br><br></li>



<li><strong>ツールウィンドウが表示されない</strong><br><br></li>



<li><strong>起動ログ（ActivityLog.xml）に下記のような構成エラーが記録される</strong></li>
</ul>



<pre class="wp-block-code plaintext"><code>Package 'Microsoft.VisualStudio.Shell.Connected' failed to load</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>Visual Studio Installerでの症状</strong>
<ul class="wp-block-list">
<li>「修復」ボタンがグレーアウトしている</li>



<li>インストール済みの構成が表示されない</li>



<li>「アップデートに失敗しました」などのポップアップが出る</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc18">対処方法</span></h4>



<ul class="wp-block-list">
<li><strong>Visual Studio Installer で修復を試す</strong>
<ul class="wp-block-list">
<li>スタートメニューから「Visual Studio Installer」を起動</li>



<li>対象のバージョン（例：Visual Studio 2022）を選択</li>



<li>「修復」ボタンをクリック</li>



<li>修復完了後、再起動して確認<br><br></li>
</ul>
</li>



<li><strong>Installer自体が起動しない、修復できない場合は、Microsoft公式の「InstallCleanup.exe」ツールを使ってインストール情報を完全に削除します。</strong>
<ul class="wp-block-list">
<li>管理者権限でコマンドプロンプトを起動</li>



<li>以下のコマンドを実行</li>
</ul>
</li>
</ul>



<pre class="wp-block-code bash"><code>"C:\Program Files (x86)\Microsoft Visual Studio\Installer\InstallCleanup.exe" -i 17</code></pre>



<p class="wp-block-paragraph">※ <code>-i 17</code> は Visual Studio 2022 のバージョン指定<br>　クリーンアップ完了後、Visual Studio 2022 を再インストール<br></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>アップデートが「ダウンロードできない」「接続できない」といったネットワーク系のエラーで失敗する場合</strong>
<ul class="wp-block-list">
<li><code>C:\Windows\System32\drivers\etc\hosts</code> を管理者権限で開く</li>



<li>「93.184.215.201 download.visualstudio.microsoft.com」　を追記
<ul class="wp-block-list">
<li><code>93.184.215.201</code> は、米国の CDN（コンテンツ配信ネットワーク）やホスティングサービスが使用する IP アドレスのひとつで、特に <a href="https://example.com/">example.com</a> というテスト用ドメインのホスト先。本来の Microsoft の更新サーバーではなく、接続テストや一時的な回避策として使われることがあるだけで、恒久的な解決策ではありません。</li>
</ul>
</li>



<li>コマンドプロンプトで、「ipconfig /flushdns」を実行</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="384" src="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005-1024x384.png" alt="" class="wp-image-4117" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005-1024x384.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005-768x288.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005-1536x576.png 1536w, https://www.kemmy-it.com/wp-content/uploads/2025/02/01_blg-005.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc19">TEMP環境変数の誤設定</span></h3>



<h4 class="wp-block-heading"><span id="toc20">よくある誤設定</span></h4>



<ul class="wp-block-list">
<li><strong><code>TEMP=C:\Temp;</code>（末尾にセミコロン）</strong>
<ul class="wp-block-list">
<li>パスが無効と認識され、起動失敗<br><br></li>
</ul>
</li>



<li><strong><code>TEMP=</code>（空欄）</strong>
<ul class="wp-block-list">
<li>一時ファイルが保存できず、クラッシュ<br><br></li>
</ul>
</li>



<li><strong><code>TEMP=D:\フォルダ名</code>（存在しないパス）</strong>
<ul class="wp-block-list">
<li>ファイル書き込みエラーで起動不能<br><br></li>
</ul>
</li>



<li><strong><code>TEMP</code> がネットワークドライブ</strong>
<ul class="wp-block-list">
<li>アクセス遅延や失敗で起動不能になることも<br></li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="linkcard"><div class="lkc-external-wrap"><a rel="noopener" class="lkc-link no_icon" href="https://amzn.to/3WzBCIf" data-lkc-id="99" target="_blank"><div class="lkc-card"><div class="lkc-info"><div class="lkc-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=amzn.to" alt="" width="16" height="16" /></div><div class="lkc-domain">amzn.to</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Famzn.to%2F3WzBCIf?w=200" width="170px" height="200px" alt="" /></figure><div class="lkc-title">New Amazon Kindle Colorsoft | 16GBストレージ、防水、7インチカラーディスプレイ</div><div class="lkc-excerpt">booxなどのandroid搭載の電子ペーパー端末と迷いましたが、お風呂で使いたかったので結局はこの商品にしました。電子ペーパーはページ送り時の読み込みが遅いと言う印象がありましたが個人的には全然問題ありませんでした。カラーの発色は淡いですが、こんなもので良いだろうと言う感想です。</div></div><div class="clear"></div></div></a></div></div>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc21">まとめ</span></h2>



<p class="wp-block-paragraph">Visual Studio が突然起動しなくても慌てる必要はありません。C#等のソースはIDEとは別フォルダとして保存されているので、最悪 他のIDE（VSCode）でも使用が可能です。</p>



<p class="wp-block-paragraph">先ずは起動のプロセスを理解し、起動しなくなった原因を突きとめるために診断を行う事です。そして、その診断に基づいた適切な処置を実行する事で再起動する事が可能となります。</p>



<p class="wp-block-paragraph"></p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022】C#開発に最適化する徹底ガイド</title>
		<link>https://www.kemmy-it.com/2025/07/19/visual_studio_c_optimization/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sat, 19 Jul 2025 05:18:19 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5165</guid>

					<description><![CDATA[本ブログではVisual Studio 2022をC#向けに、徹底的に最適化する手順を紹介します。初期セットアップから拡張機能、パフォーマンス改善、デバッグ効率化まで、実践的な内容を網羅します。 目次 Visual St [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">本ブログではVisual Studio 2022をC#向けに、徹底的に最適化する手順を紹介します。初期セットアップから拡張機能、パフォーマンス改善、デバッグ効率化まで、実践的な内容を網羅します。</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 開発環境の条件</a></li><li><a href="#toc2" tabindex="0">Visual Studio 2022 インストールの見直し</a><ol><li><a href="#toc3" tabindex="0">Visual Studioインストール時のワークロード</a></li><li><a href="#toc4" tabindex="0">ユニットテストツール（MSTest V2/xUnit）</a></li><li><a href="#toc5" tabindex="0">Gitによるソース管理</a></li><li><a href="#toc6" tabindex="0">Azure開発</a></li><li><a href="#toc7" tabindex="0">モバイル開発（.NET MAUI）</a></li><li><a href="#toc8" tabindex="0">エディタの設定調整</a><ol><li><a href="#toc9" tabindex="0">コーディングスタイルの統一（EditorConfig）</a></li><li><a href="#toc10" tabindex="0"> Live Share（リアルタイム共同編集）</a></li><li><a href="#toc11" tabindex="0">コード分析と警告</a></li></ol></li><li><a href="#toc12" tabindex="0">拡張機能で機能強化</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></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 開発環境の条件</span></h2>



<p class="wp-block-paragraph"><strong>C#による多様なアプリケーション開発に対応できる万能な環境</strong>を整えます。</p>



<p class="wp-block-paragraph">プロジェクトの種類に応じて必要最小限を選ぶのもOKですが、最初は広めに入れておくと将来的にスムーズに対応できます。</p>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">Visual Studio 2022 インストールの見直し</span></h2>



<h3 class="wp-block-heading"><span id="toc3">Visual Studioインストール時のワークロード</span></h3>



<p class="wp-block-paragraph">以下のワークロードをインストールする事で、デスクトップアプリとWebアプリの開発に対応できます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="845" height="114" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Kankyo.png" alt="" class="wp-image-5173" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Kankyo.png 845w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Kankyo-300x40.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Kankyo-768x104.png 768w" sizes="(max-width: 845px) 100vw, 845px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>.NETデスクトップ開発<br>Windows FormsやWPFなどのデスクトップアプリケーションを開発するために必要なツール群が含まれます。<br>WinForms Designer や XAML Designer、ローカルデバッグ環境 がセットアップされるため、GUIアプリ開発を行う場合は必須です。</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ASP.NETとWeb開発<br>Webアプリ（ASP.NET Core, MVC, Razor Pagesなど）を開発する際に必要です。<br>Visual Studio 2022にはBlazor（WebAssembly）開発機能も含まれており、サーバー／クライアント両方をC#で書ける最新開発スタイルをサポートしています。</li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">ユニットテストツール（MSTest V2/xUnit）</span></h3>



<p class="wp-block-paragraph">テストツールを使うことで、<strong>バグの少ない・変更に強い・保守しやすいコード</strong>を実現できます。</p>



<ul class="wp-block-list">
<li><strong>MSTest V2の使用</strong><br>必要なパッケージのインストール方法や具体的な使用方法は「<a href="https://www.kemmy-it.com/2025/05/10/visual_studio_unittest_mstest/"><strong>MSTest V2</strong>によるユニットテスト</a>」を参照下さい。</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>xUnitの使用</strong><br><strong>MSTest V2</strong>と同様、必要なパッケージのインストール方法や具体的な使用方法は「<a href="https://www.kemmy-it.com/2025/05/10/visual_studio_unittest_mstest/"><strong>MSTest V2</strong>によるユニットテスト</a>」を参照下さい。</li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">Gitによるソース管理</span></h3>



<p class="wp-block-paragraph">バージョン毎のソース管理や複数人によるプロジェクト作成時には、ソースの管理ツールは欠かせません。一般的に使用されている「Git」及び「GitHub」は必須と言えます。</p>



<p class="wp-block-paragraph">使用にあたっては、下記リンク先のブログを参考にしてください。</p>



<ul class="wp-block-list">
<li></li>
</ul>



<ul class="wp-block-list">
<li><a href="https://www.kemmy-it.com/2025/05/19/visual_studio_git/">C#ソース管理　Gitローカル編</a></li>
</ul>



<ul class="wp-block-list">
<li><a href="https://www.kemmy-it.com/2025/05/26/visual_studio_github/">C#ソース管理　GitHubリモート編</a></li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">Azure開発</span></h3>



<p class="wp-block-paragraph">近年、クラウドネイティブな開発がますます重要視されています。その中心にあるのが、Microsoft Azure。Visual Studio 2022を使えば、ローカルのC#プロジェクトからシームレスにクラウドへ展開することが可能です。</p>



<p class="wp-block-paragraph">Azure開発 を行うのであれば、Visual Studio インストーラーを起動し、ワークロードから <strong>「Azure 開発」</strong>をインストールしておきましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="415" height="115" src="https://www.kemmy-it.com/wp-content/uploads/2025/07/02_VS_Kankyo.png" alt="" class="wp-image-5618" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/07/02_VS_Kankyo.png 415w, https://www.kemmy-it.com/wp-content/uploads/2025/07/02_VS_Kankyo-300x83.png 300w" sizes="(max-width: 415px) 100vw, 415px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">モバイル開発（.NET MAUI）</span></h3>



<p class="wp-block-paragraph">「スマホアプリ開発って難しそう…？」と思っている人が多いかもしれませんが、Visual Studio と .NET MAUI を使えば、C#の知識だけで iOS・Android・Windows に対応したモバイルアプリを一つのコードで開発できます。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">以前は、<strong>Xamarin（ザマリン）</strong>を使用して作成していましたが、Microsoftは <strong>2024年5月1日をもって サポートを終了</strong> しました。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">.NET MAUI（Multi-platform App UI）は<strong>Xamarinの後継で</strong>、iOS・Android・Windowsのクロスプラットフォーム開発が可能です。</p>



<p class="wp-block-paragraph">モバイル開発を行うのであれば、<strong>「.NET マルチプラットフォーム アプリの UI 開発」</strong>ワークロードのインストールしておきましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="422" height="112" src="https://www.kemmy-it.com/wp-content/uploads/2025/07/03_VS_Kankyo.png" alt="" class="wp-image-5620" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/07/03_VS_Kankyo.png 422w, https://www.kemmy-it.com/wp-content/uploads/2025/07/03_VS_Kankyo-300x80.png 300w" sizes="(max-width: 422px) 100vw, 422px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc8">エディタの設定調整</span></h3>



<p class="wp-block-paragraph">複数人で共同作業を行う場合、エディタや開発環境の設定を工夫することで<strong>作業効率や品質の統一</strong>がぐっと向上します。以下は Visual Studio（または他のエディタでも応用可能）でのおすすめ設定です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc9">コーディングスタイルの統一（EditorConfig）</span></h4>



<ul class="wp-block-list">
<li><strong>.editorconfig ファイルを導入</strong>
<ul class="wp-block-list">
<li>インデント（スペース/タブ）、最大行長、命名規則などをプロジェクト単位で統一できます。</li>



<li>Visual Studio は <code>.editorconfig</code> を自動で読み込むので、個人の設定に関係なく統一が保たれます。</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc10"> Live Share（リアルタイム共同編集）</span></h4>



<ul class="wp-block-list">
<li>Visual Studio には「<strong>Live Share</strong>」機能があり、他のメンバーと<strong>リアルタイムでコードを共有・共同編集</strong>できます。</li>
</ul>



<ul class="wp-block-list">
<li>画面共有やチャット、コメントも可能。</li>



<li>デバッグセッションも共有できるので、ペアプロにも最適！</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc11">コード分析と警告</span></h4>



<ul class="wp-block-list">
<li><strong>StyleCop / Roslyn Analyzer / ReSharper</strong> を導入すると、
<ul class="wp-block-list">
<li>コーディングルールの違反を<strong>自動で警告・修正提案</strong></li>



<li>チームでの品質維持につながる</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li></li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc12">拡張機能で機能強化</span></h3>



<p class="wp-block-paragraph">Visual Studio Marketplaceから拡張機能をインストールすることで、機能を大幅に拡張できます。</p>



<ul class="wp-block-list">
<li><strong>Roslynator</strong>：C#コードの解析・リファクタ支援</li>



<li><strong>CodeMaid</strong>：コードの整形とクリーンアップ</li>



<li><strong>Visual Studio IntelliCode</strong>：AIによるコード補完の精度向上</li>



<li><strong>GitHub Extension for Visual Studio</strong>：GitHub連携を強化</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc13">パフォーマンスの最適化</span></h3>



<p class="wp-block-paragraph">Visual Studioは非常に高機能なため、設定次第で起動やビルド時間が変わります。</p>



<ul class="wp-block-list">
<li><code>ツール &gt; オプション &gt; プロジェクトとソリューション &gt; ビルドと実行</code>
<ul class="wp-block-list">
<li>「詳細なビルド出力を抑制」してログ負荷を軽減</li>
</ul>
</li>



<li>不要な拡張機能やワークロードはアンインストール</li>



<li>SSDにプロジェクトファイルを配置</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc14">デバッグ機能の強化</span></h3>



<p class="wp-block-paragraph">デバッグはC#開発において重要な工程です。</p>



<ul class="wp-block-list">
<li><code>ウィンドウ &gt; 自動</code>, <code>ローカル</code>, <code>ウォッチ</code>, <code>即時ウィンドウ</code> を活用</li>



<li>条件付きブレークポイント、ログポイントの使用</li>



<li><code>デバッグ &gt; オプション &gt; 全般</code> で「ソース サーバー サポート」を有効化すると、シンボル読み込みが高速化</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc15">まとめ</span></h2>



<p class="wp-block-paragraph">Visual Studio 2022は、正しく最適化することでC#開発において非常に高い生産性を実現できます。</p>



<p class="wp-block-paragraph">開発効率を高めるためには、初期インストールから日々のデバッグ、チーム開発に至るまで、細かい設定を積み重ねていくことが重要です。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門】非同期コードのデバッグ方法を徹底解説　「例外処理・ブレークポイント編」</title>
		<link>https://www.kemmy-it.com/2025/06/28/visual_studio_debug_async01/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sat, 28 Jun 2025 06:08:03 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5575</guid>

					<description><![CDATA[C#の非同期プログラミング（async/await）は、UIの応答性を保ったり、バックグラウンド処理を効率化する際に非常に役立ちます。 しかし、非同期コードのデバッグは慣れるまではやや難解に感じるかもしれません。 今回は [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">C#の非同期プログラミング（async/await）は、UIの応答性を保ったり、バックグラウンド処理を効率化する際に非常に役立ちます。</p>



<p class="wp-block-paragraph">しかし、<strong>非同期コードのデバッグは慣れるまではやや難解</strong>に感じるかもしれません。</p>



<p class="wp-block-paragraph">今回はコンソールアプリを例にして、<strong>非同期処理（async/await）のデバッグ方法「例外処理・ブレークポイント」について具体的に</strong>紹介します。</p>



<ul class="wp-block-list">
<li><strong>対象者</strong>
<ul class="wp-block-list">
<li>コンソールアプリで async/await を使い始めた初〜中級者</li>



<li>非同期処理の例外やブレークポイント操作を学びたい方</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 同期/非同期メソッドのデバッグの違い</a></li><li><a href="#toc2" tabindex="0">非同期プログラム（コンソールアプリ）のデバッグ方法</a><ol><li><a href="#toc3" tabindex="0">ブレークポイントの使い方</a></li><li><a href="#toc4" tabindex="0">非同期処理での例外の捕捉</a></li><li><a href="#toc5" tabindex="0">非同期例外のデバッグTips</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><ol><li><a href="#toc9" tabindex="0">呼び出し履歴（コールスタック）の使い方</a></li></ol></li></ol></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 同期/非同期メソッドのデバッグの違い</span></h2>



<p class="wp-block-paragraph">同期メソッドと非同期メソッドの主な違いを下表にまとまめしたが、非同期メソッドの最大の注意点は「<strong>await の前後で処理の流れが途切れるように見える</strong>」ことです。</p>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>観点</th><th>同期メソッド</th><th>非同期メソッド<br>（async/await）</th></tr></thead><tbody><tr><td>1</td><td>実行の流れ</td><td style="text-align:left">順次的に進行</td><td style="text-align:left">タスクを分割してスレッドを解放</td></tr><tr><td>2</td><td>ブレークの挙動</td><td style="text-align:left">単純な流れを追える</td><td style="text-align:left">await 前後でスレッドが切り替わる可能性あり</td></tr><tr><td>3</td><td>コールスタックの見え方</td><td style="text-align:left">そのまま見える</td><td style="text-align:left"><code>async</code> の内部状態が特殊な構造になる</td></tr><tr><td>4</td><td>ステップ実行の動き</td><td style="text-align:left">直線的に進む</td><td style="text-align:left"><code>await</code> 後はジャンプしたように見える場合あり</td></tr></tbody></table></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">非同期プログラム（コンソールアプリ）のデバッグ方法</span></h2>



<p class="wp-block-paragraph">下記のサンプルプログラムは非同期に HTTP リクエストを送信し、外部の Web API（<code>https://jsonplaceholder.typicode.com/posts/1</code>）からデータを取得。そのレスポンスをコンソールに表示するサンプルです。</p>



<p class="wp-block-paragraph">このURLは「投稿（posts）」の中の <strong>IDが1の投稿データ</strong> を取得します。アクセスすると、以下のようなJSON形式のデータが返ってきます。</p>



<p class="wp-block-paragraph">{<br>&#8220;userId&#8221;: 1,<br>&#8220;id&#8221;: 1,<br>&#8220;title&#8221;: &#8220;sunt aut facere repellat provident occaecati excepturi optio reprehenderit&#8221;,<br>&#8220;body&#8221;: &#8220;quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto&#8221;<br>}</p>



<p class="wp-block-paragraph">※ここではスレッドの切り替わりを確認する為に、await の前後にスレッドIDを表示する命令を挿入しています。</p>



<pre class="wp-block-code"><code>using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string&#91;] args)
    {
        Console.WriteLine("処理開始");
        try
        {
Console.WriteLine($"Main開始スレッドID: {Thread.CurrentThread.ManagedThreadId}");
            var result = await FetchDataAsync("https://jsonplaceholder.typicode.com/posts/1");
Console.WriteLine($"Main終了スレッドID: {Thread.CurrentThread.ManagedThreadId}");
            Console.WriteLine("取得結果:");
            Console.WriteLine(result);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"エラー発生: {ex.Message}");
        }
        Console.WriteLine("処理終了");
    }

    static async Task&lt;string&gt; FetchDataAsync(string url)
    {
        using var httpClient = new HttpClient();
Console.WriteLine($"GetAsync実行前ID: {Thread.CurrentThread.ManagedThreadId}");
        var response = await httpClient.GetAsync(url);
Console.WriteLine($"GetAsync実行ID: {Thread.CurrentThread.ManagedThreadId}");
        response.EnsureSuccessStatusCode(); // ステータスコードがエラーなら例外を発生
        return await response.Content.ReadAsStringAsync();
    }
}</code></pre>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc3">ブレークポイントの使い方</span></h3>



<ul class="wp-block-list">
<li><code>await</code> の<strong>前後</strong>両方にブレークポイントを置くのが基本。
<ul class="wp-block-list">
<li>処理（スレッド）の切り替わりを追いやすいくなります。</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">上記サンプルプログラムを実行すると以下のようになります。</p>



<p class="wp-block-paragraph">「httpClient.GetAsync(url);」　命令実行後にスレッドが切り替わっているのが分かります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="982" height="287" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_debug_async.png" alt="" class="wp-image-5591" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_debug_async.png 982w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_debug_async-300x88.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_debug_async-768x224.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">非同期処理での例外の捕捉</span></h3>



<p class="wp-block-paragraph">非同期メソッド内で発生した例外は、通常の <code>try-catch</code> で捕捉できますが、<strong>例外が発生する場所までステップイン</strong>しないと、内部の詳細が見えにくいことがあります。</p>



<p class="wp-block-paragraph">今回は「ネットワークエラー」を発生させて、例外が発生した瞬間にブレークできるよう以下の設定を行います。</p>



<ul class="wp-block-list">
<li>設定方法
<ul class="wp-block-list">
<li>メニューの「デバッグ」→「ウィンドウ」→「例外設定」で、<code>System.Net.Http.HttpRequestException</code> をチェック</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">他の例外でも、対象となる例外設定にチェックを入れると例外が発生した瞬間にブレークできるようになります。</p>



<p class="wp-block-paragraph">サンプルプログラムで使用しているURLを存在しないURLに変更して実行してみると、「response.EnsureSuccessStatusCode(); // ステータスコードがエラーなら例外を発生」の箇所でブレークします。<span style="font-size: revert;"></span></p>



<figure class="wp-block-image size-full"><img decoding="async" width="946" height="365" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_debug_async.png" alt="" class="wp-image-5593" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_debug_async.png 946w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_debug_async-300x116.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_debug_async-768x296.png 768w" sizes="(max-width: 946px) 100vw, 946px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>デバッグのポイント
<ul class="wp-block-list">
<li>ブレークポイントの設定箇所
<ul class="wp-block-list">
<li>「await httpClient.GetAsync(url);」の前後</li>



<li>catch (Exception ex) の中</li>
</ul>
</li>



<li>ウォッチする変数
<ul class="wp-block-list">
<li>url： 正しく設定されているか？</li>



<li>response：null になる可能性があるか？</li>



<li>ex.Message：実際のエラーメッセージを確認</li>
</ul>
</li>
</ul>
</li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">非同期例外のデバッグTips</span></h3>



<ul class="wp-block-list">
<li><code>wait</code> での例外は<strong>メソッド外に伝播</strong>するので、<strong><code>try-catch</code> を呼び出し元にも必ず書く</strong></li>



<li>テータスコードが 404 や 500 のような「正常なHTTPレスポンス」は <code>GetAsync()</code> で例外を投げませんが、<code><strong>EnsureSuccessStatusCode()</strong></code> で例外になる</li>



<li>存在しないホスト名などは DNS で即座に例外となるため、<strong>確実に例外デバッグが行えます</strong></li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">ログ出力による追跡</span></h3>



<ul class="wp-block-list">
<li>デバッグログを挟むことで、<strong>await 前後の流れ</strong>や問題の特定がしやすくなります。</li>



<li>本格的には <code>Serilog</code> や <code>NLog</code> を使ってログをファイル出力するのもおすすめです。</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■Serilog や NLog の使用方法は下記ブログを参照下さい</p>



<ul class="wp-block-list">
<li>Serilog：<a href="https://www.kemmy-it.com/2025/06/08/visual_studio_debug_serilog01/">【C# デバッグ入門】Serilogの使用方法を徹底解説</a></li>
</ul>



<ul class="wp-block-list">
<li>NLog ：<a href="https://www.kemmy-it.com/2025/06/07/visual_studio_debug_nlog01/">【C#デバッグ入門】NLog の使用方法を徹底開発</a></li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">ステップ実行と動作の巻き戻し</span></h3>



<ul class="wp-block-list">
<li>ステップ実行
<ul class="wp-block-list">
<li><code>F10</code>：ステップオーバー</li>



<li><code>F11</code>：ステップイン（async関数内に入れる）</li>



<li><code>Shift + F11</code>：ステップアウト</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"><strong>注意点</strong>：<code>await</code> をステップインすると、生成されたステートマシン（裏側のコード）に入ることがあり、慣れないうちは混乱します。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>動作の巻き戻し
<ul class="wp-block-list">
<li>ブレーク時のブレークポイントをクリックしたまま、実行を戻したい場所までドラッグして放す</li>



<li>黄色い⇒が表示され、そこからステップ実行が可能となる。但し、<strong>状態を完全に巻き戻すわけではない</strong>ので注意が必要。</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">下記は、①でブレークした状態を②まで実行を巻き戻した例。②からステップ実行実行が可能となる。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1000" height="220" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_debug_async.png" alt="" class="wp-image-5599" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_debug_async.png 1000w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_debug_async-300x66.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_debug_async-768x169.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li></li>
</ul>



<h3 class="wp-block-heading"><span id="toc8">呼び出し履歴（コールスタック）の活用</span></h3>



<p class="wp-block-paragraph">非同期コードでは<strong>スタックの流れが分かりづらくなる</strong>ため、コールスタックを活用する事も重要です。</p>



<ul class="wp-block-list">
<li>どの<code>await</code>から来たか（呼び出し元）を追える
<ul class="wp-block-list">
<li><code>Main → FetchDataAsync → ParseJsonAsync</code> のように<strong>非同期でも呼び出し経路を視覚化</strong>できる</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>非同期メソッド間の流れが分断されない
<ul class="wp-block-list">
<li>途中の<code>await</code>で中断されても、再開された処理の<strong>文脈が残っている</strong></li>



<li>「このawaitの後に、なぜここに来たのか？」を確認できる</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>例外が発生した場所と、呼び出し元を一度に確認できる</strong>
<ul class="wp-block-list">
<li>非同期処理中に例外が発生したとき、<strong>どの関数から呼ばれ、最終的にどこで例外がスローされたか</strong>がすぐに分かる</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc9">呼び出し履歴（コールスタック）の使い方</span></h4>



<ol class="wp-block-list">
<li>非同期メソッド内でブレークポイント停止</li>



<li>メニュー → [デバッグ] → [ウィンドウ] → <strong>コールスタック</strong>（または <code>Ctrl + Alt + C</code>）</li>



<li>一番下が起点、一番上が現在の位置</li>



<li>各メソッドをダブルクリックすると、ソースにジャンプ可能</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="799" height="312" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_debug_async.png" alt="" class="wp-image-5601" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_debug_async.png 799w, https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_debug_async-300x117.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_debug_async-768x300.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc10">まとめ</span></h2>



<p class="wp-block-paragraph">非同期処理でも以下の点を押さえておけば効率的なデバッグが可能です。</p>



<ul class="wp-block-list">
<li><code>await</code> の前後にブレークポイント</li>



<li>ウォッチやクイックウォッチで変数確認</li>



<li>ステップ実行（F10/F11）で処理を追う</li>



<li>例外ウィンドウでエラーの瞬間を補足</li>



<li>呼び出し履歴（コールスタック）を活用</li>
</ul>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門 】「例外設定」機能を徹底解説</title>
		<link>https://www.kemmy-it.com/2025/06/12/visual_studio_debug_exception01/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Wed, 11 Jun 2025 21:21:33 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5305</guid>

					<description><![CDATA[本ブログでは初学者向けに、デバッグに役立つ「例外設定」機能を紹介します。 例外がキャッチされてるのに原因が分からない…？そんな悩みを解決するのが、Visual Studio の「例外設定」機能です。C# プログラマ向けに [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">本ブログでは初学者向けに、デバッグに役立つ<strong><span class="marker-under-red">「例外設定」機能</span></strong>を紹介します。</p>



<p class="wp-block-paragraph"><strong>例外がキャッチされてるのに原因が分からない…？</strong><br>そんな悩みを解決するのが、Visual Studio の<strong>「例外設定」機能</strong>です。C# プログラマ向けに、Visual Studio の「例外設定」機能の基本から活用テクまでわかりやすく紹介します。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 C#「 例外設定」とは？</a><ol><li><a href="#toc2" tabindex="0">Visual Studio C#「 例外設定」の使い方</a></li><li><a href="#toc3" tabindex="0">Visual Studio C# でチェックを推奨する主なCLR例外</a></li></ol></li><li><a href="#toc4" tabindex="0">「Visual Studio C#」カスタム例外</a><ol><li><a href="#toc5" tabindex="0">カスタム例外を活用するメリット</a></li><li><a href="#toc6" tabindex="0">カスタム例外を使用すべき状況</a></li><li><a href="#toc7" tabindex="0">Visual Studio C#「カスタム例外」の作成手順</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 C#「 例外設定」とは？</span></h2>



<p class="wp-block-paragraph"><strong>例外設定ウィンドウ</strong>では、以下のようなことができます。</p>



<ul class="wp-block-list">
<li><strong>特定の例外が発生した瞬間（スローされた瞬間）に中断</strong>（<code style="background-color: rgb(255, 255, 255); font-size: 18px;">try-catch</code> で捕捉されていても）</li>



<li><strong>例外の種類ごとに中断の有無を設定</strong></li>



<li><strong>独自に定義したカスタム例外も追加可能</strong></li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc2">Visual Studio C#「 例外設定」の使い方</span></h3>



<ol class="wp-block-list">
<li><strong>[デバッグ] &gt; [ウィンドウ] &gt; [例外設定]</strong> を選択</li>



<li>表示されたウィンドウで例えば
<ul class="wp-block-list">
<li>Common Language Exception の<code>System.</code>DivideByZeroException（0割り) にチェックを入れる</li>
</ul>
</li>



<li>これで、その例外がスローされた瞬間に Visual Studio が中断してくれます</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="743" height="218" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Excption-1.png" alt="" class="wp-image-5456" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Excption-1.png 743w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Excption-1-300x88.png 300w" sizes="(max-width: 743px) 100vw, 743px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■簡単な具体例</p>



<p class="wp-block-paragraph">通常は <code>catch</code> に入って処理が続きますが、<strong><span class="marker-under-red">例外設定で <code>DivideByZeroException</code> にチェックを入れておくと、例外発生の行で中断</span></strong>してくれます。これにより、<strong><span class="marker-under-red">例外の発生箇所を正確に特定</span></strong>できます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="463" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Excption-1024x463.png" alt="" class="wp-image-5457" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Excption-1024x463.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Excption-300x136.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Excption-768x347.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Excption.png 1086w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc3">Visual Studio C# でチェックを推奨する主なCLR例外</span></h3>



<ul class="wp-block-list">
<li><code>System.NullReferenceException</code>（ヌル参照例外）</li>



<li><code>System.AccessViolationException</code>（メモリアクセス違反）</li>



<li><code>System.DivideByZeroException</code>（ゼロ除算例外）</li>



<li><code>System.InvalidOperationException</code>（無効な操作）</li>



<li><code>System.IndexOutOfRangeException</code>（配列の範囲外アクセス）</li>



<li><code>System.StackOverflowException</code>（スタックオーバーフロー）</li>



<li><code>System.OutOfMemoryException</code>（メモリ不足）</li>



<li><code>System.ArgumentException</code>（無効な引数）</li>



<li><code>System.ArgumentNullException</code>（ヌル引数）</li>



<li><code>System.ArgumentOutOfRangeException</code>（範囲外の引数）</li>



<li><code>System.IO.IOException</code>（入出力エラー）</li>



<li><code>System.FormatException</code>（フォーマットエラー）</li>



<li><code>System.TypeInitializationException</code>（型の初期化エラー）</li>
</ul>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>CLR例外</strong>
<ul class="wp-block-list">
<li>.NET の <strong>Common Language Runtime (CLR)</strong> によって管理される例外。これは、C# や VB.NET などの .NET 言語で発生する例外を統一的に処理するための仕組です。</li>
</ul>
</li>



<li>上記の推奨するCLR例外の中には標準でチェックが入っている場合もあります。</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc4">「Visual Studio C#」カスタム例外</span></h2>



<p class="wp-block-paragraph">C# では<strong><span class="marker-under-red">特定のエラー状況</span></strong>を、標準の <code>Exception</code> クラスを継承する事で<strong><span class="marker-under-red">自作の例外</span></strong>として定義する事も可能です。</p>



<p class="wp-block-paragraph">自作の例外（例：<code>MyCustomException</code>）は、例外設定ウィンドウの「＋」ボタンから追加すれば、<strong>CLR</strong>と同様に中断対象にできます。</p>



<p class="wp-block-paragraph">※名前空間を定義している場合は、名前空間名を付けて追加する</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">カスタム例外を活用するメリット</span></h3>



<ul class="wp-block-list">
<li><strong>広範囲に try-catch を使っているコード</strong>でも、例外の発生箇所を特定しやすくなる</li>



<li><strong>非同期処理や外部ライブラリの例外</strong>も追いやすくなる</li>



<li><strong>「マイコードのみ」設定</strong>と組み合わせると、ユーザーコードに限定して中断可能となる</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">カスタム例外を使用すべき状況</span></h3>



<ul class="wp-block-list">
<li><strong>ドメイン固有のエラーを表現したい</strong>
<ul class="wp-block-list">
<li>例：銀行システムで「残高不足」を表す <code>InsufficientFundsException</code></li>



<li>例：ECサイトで「在庫切れ」を表す <code>OutOfStockException</code></li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>特定のエラーに対して専用の処理をしたい</strong>
<ul class="wp-block-list">
<li>例：<code>FileProcessingException</code> を作成し、ファイル関連のエラーを一括管理</li>



<li>例：<code>InvalidUserInputException</code> を作成し、ユーザー入力エラーを適切に処理</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>標準の例外では意味が曖昧な場合</strong>
<ul class="wp-block-list">
<li><code>ArgumentException</code> ではなく <code>InvalidPasswordException</code> など、より明確なエラー名を付けることで可読性向上</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>エラー情報を追加したい</strong>
<ul class="wp-block-list">
<li>例：<code>DatabaseConnectionException</code> に <code>ConnectionString</code> を保持し、ログ出力時に詳細情報を提供</li>
</ul>
</li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">Visual Studio C#「カスタム例外」の作成手順</span></h3>



<p class="wp-block-paragraph">カスタム例外のサンプルとしてファイルが存在しない場合に、catch で補足するのではなく、例外をスローした行で実行を中断する設定を紹介します。</p>



<ul class="wp-block-list">
<li><strong>ソースコード</strong>
<ul class="wp-block-list">
<li>Exceptionクラスを継承したカスタム例外「FileMissingException」を作成
<ul class="wp-block-list">
<li><code>FilePath</code> プロパティ を追加し、例外発生時に 問題のあるファイルのパスを保持</li>



<li>コンストラクタで <code>message</code> と <code>filePath</code> を受け取り、<code>base(message)</code> で親クラスの <code>Exception</code> にメッセージを渡す</li>
</ul>
</li>



<li><strong>処理部分</strong>
<ul class="wp-block-list">
<li>ファイルが存在するかを確認し、ファイルがなかったら「FileMissingException」例外をスローする</li>



<li>「FileMissingException」例外はcatchでも補足</li>
</ul>
</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="974" height="636" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Excption.png" alt="" class="wp-image-5462" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Excption.png 974w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Excption-300x196.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Excption-768x501.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>例外設定にカスタム例外「FileMissingException」を追加</strong>
<ul class="wp-block-list">
<li>[デバッグ] &gt; [ウィンドウ] &gt; [例外設定] で例外設定画面を表示</li>



<li>今回は、①の「Common Language Runtime Exceptions」を選択</li>



<li>②の追加「＋」がクリックできるようになるのでクリック</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="528" height="232" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Excption.png" alt="" class="wp-image-5463" style="width:595px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Excption.png 528w, https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Excption-300x132.png 300w" sizes="(max-width: 528px) 100vw, 528px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>入力欄にカスタム例外の名称を入力（namespaceを定義している場合はnamespace名を付加）</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="551" height="234" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Excption.png" alt="" class="wp-image-5464" style="width:592px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Excption.png 551w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Excption-300x127.png 300w" sizes="(max-width: 551px) 100vw, 551px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="593" height="227" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Excption.png" alt="" class="wp-image-5465" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Excption.png 593w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Excption-300x115.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>Debugモードで実行すると、例外のスローで実行が中断する</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1022" height="640" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Excption.png" alt="" class="wp-image-5466" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Excption.png 1022w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Excption-300x188.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Excption-768x481.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>Debugモードなしで実行すると、catchで補足される</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="969" height="637" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Excption.png" alt="" class="wp-image-5471" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Excption.png 969w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Excption-300x197.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Excption-768x505.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門 】Serilogの使用方法を徹底解説</title>
		<link>https://www.kemmy-it.com/2025/06/08/visual_studio_debug_serilog01/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 09:20:08 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5380</guid>

					<description><![CDATA[前回はNLogの使用方法を紹介しましたが、今回はSerilogです。 Serilogも広く使用されており、NLog と同様にログレベル（Verbose, Debug, Information など）の切り分け・ログファイ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">前回は<strong><a href="https://www.kemmy-it.com/2025/06/07/visual_studio_debug_nlog01/">NLogの使用方法</a>を紹</strong>介しましたが、今回は<strong>Serilog</strong>です。</p>



<p class="wp-block-paragraph">Serilogも広く使用されており、NLog と同様にログレベル（Verbose, Debug, Information など）の切り分け・ログファイルの出力先・出力形式のカスタマイズなどが簡単に設定できるログライブラリです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>使用環境</strong>
<ul class="wp-block-list">
<li>Windows 10 Pro 2009 ビルド19045.5854</li>



<li>Visual Studio 2020 Version 17.14.2 </li>



<li>Serilog 4.3.0</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 C# Serilogを使用した本格的なデバッグログ管理</a><ol><li><a href="#toc2" tabindex="0">Visual Studio C# Serilogの主な用途</a></li><li><a href="#toc3" tabindex="0">Visual Studio C# Serilogのログ出力形式</a></li><li><a href="#toc4" tabindex="0">Visual Studio C# Serilogのログレベル一覧（レベルの低い順）</a></li><li><a href="#toc5" tabindex="0">Visual Studio C# Serilogの使用手順</a><ol><li><a href="#toc6" tabindex="0">NuGet Serilogパッケージのインストール</a></li></ol></li><li><a href="#toc7" tabindex="0">Visual Studio C# Serilogの初期設定</a><ol><li><a href="#toc8" tabindex="0">ログ出力先の設定例</a></li><li><a href="#toc9" tabindex="0">ファイル出力設定の主な設定項目一覧</a></li></ol></li><li><a href="#toc10" tabindex="0">Visual Studio C# JSONファイルによるSerilogの設定</a><ol><li><a href="#toc11" tabindex="0">設定手順</a></li></ol></li></ol></li><li><a href="#toc12" tabindex="0">Visual Studio C#　Serilog 動作確認</a><ol><li><a href="#toc13" tabindex="0">Visual Studio C# コード内でSerilogを設定した場合</a></li><li><a href="#toc14" tabindex="0">Visual Studio C# JsonファイルでSerilogを設定した場合</a></li></ol></li><li><a href="#toc15" tabindex="0">Visual Studio C# Serilog まとめ（NLogと比較して）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 C# Serilogを使用した本格的なデバッグログ管理</span></h2>



<h3 class="wp-block-heading"><span id="toc2">Visual Studio C# Serilogの主な用途</span></h3>



<ol class="wp-block-list">
<li><strong>デバッグ</strong>
<ul class="wp-block-list">
<li>Log.Debug()を使って変数の値や処理の流れを記録し、問題の特定を容易にする</li>
</ul>
</li>



<li><strong>エラートラッキング</strong>
<ul class="wp-block-list">
<li>Log.Error()やLog.Fatal()を使ってエラーメッセージやスタックトレースを記録し、原因を分析する</li>
</ul>
</li>



<li><strong>ユーザーアクションの記録</strong>
<ul class="wp-block-list">
<li>ログインやデータ更新の履歴を<code>Log.Information()</code>で記録し、監査やトラブルシューティングに役立てる</li>
</ul>
</li>



<li><strong>パフォーマンス監視</strong>
<ul class="wp-block-list">
<li>アプリケーションの処理時間を測定し、ボトルネックを特定する</li>
</ul>
</li>
</ol>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc3">Visual Studio C# Serilogのログ出力形式</span></h3>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>出力先</th><th>ファイル形式</th><th>用　途</th></tr></thead><tbody><tr><td>１</td><td>コンソール</td><td>標準出力（テキスト）</td><td style="text-align:left">開発時のデバッグ、リアルタイム監視</td></tr><tr><td>2</td><td>ファイル</td><td style="text-align:left">.txt .log .json .csv .xml</td><td style="text-align:left">ログの保存・分析・長期記録</td></tr><tr><td>３</td><td>データベース</td><td style="text-align:left">SQLテーブル</td><td style="text-align:left">監査ログ・履歴管理・検索性向上</td></tr><tr><td>４</td><td>クラウド</td><td style="text-align:left">JSON, XML, Parquet</td><td style="text-align:left">分析・可視化、クラウドサービス連携</td></tr><tr><td>５</td><td>イベントログ</td><td style="text-align:left">Windows Event Log</td><td style="text-align:left">システム監視、セキュリティログ</td></tr><tr><td>６</td><td>メッセージキュー</td><td style="text-align:left">Kafka, RabbitMQ</td><td style="text-align:left">分散システムのログ管理</td></tr><tr><td>７</td><td>リモートサーバ</td><td style="text-align:left">Syslog, HTTP API</td><td style="text-align:left">集中管理、ログ集約</td></tr><tr><td>８</td><td>メール通知</td><td style="text-align:left">HTML, Plain Text</td><td style="text-align:left">重要なエラー通知</td></tr><tr><td>９</td><td>チャットツール</td><td style="text-align:left">Slack, Tearms, Discord</td><td style="text-align:left">運用チームへの即時通知</td></tr></tbody></table></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">Visual Studio C# Serilogのログレベル一覧（レベルの低い順）</span></h3>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>順位</th><th>レベル</th><th>機　能</th></tr></thead><tbody><tr><td>1</td><td>Verbose</td><td style="text-align:left">最も詳細なログレベル。すべての動作を記録</td></tr><tr><td>2</td><td>Debug</td><td style="text-align:left">開発・トラブルシュート用</td></tr><tr><td>3</td><td>Information</td><td style="text-align:left">主要なイベント（起動、終了、処理完了など）を記録</td></tr><tr><td>4</td><td>Warning</td><td style="text-align:left">警告（問題の可能性あり）</td></tr><tr><td>5</td><td>Error</td><td style="text-align:left">エラー（処理が失敗した場合、例外情報も含む）</td></tr><tr><td>6</td><td>Fatal</td><td style="text-align:left">致命的なエラー（アプリケーションがクラッシュするような重大な問題）</td></tr></tbody></table></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">Visual Studio C# Serilogの使用手順</span></h3>



<h4 class="wp-block-heading"><span id="toc6">NuGet Serilogパッケージのインストール</span></h4>



<ul class="wp-block-list">
<li>ソリューションエクスプローラー画面の「プロジェクト」を右クリック→「ＮuＧetパッケージの管理」画面から下記のパッケージをインストールします。
<ul class="wp-block-list">
<li><strong>Serilog</strong>　4.3.0</li>



<li><strong>Serilog.Sinks.Console</strong>　6.0.0</li>



<li><strong>Serilog.Sinks.Debug</strong>　3.0.0</li>



<li><strong>Serilog.Sinks.File</strong>　7.0.0 </li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■パッケージのインストール結果</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="784" height="374" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Serilog_install.png" alt="" class="wp-image-5384" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Serilog_install.png 784w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Serilog_install-300x143.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Serilog_install-768x366.png 768w" sizes="(max-width: 784px) 100vw, 784px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">Visual Studio C# Serilogの初期設定</span></h3>



<p class="wp-block-paragraph">アプリケーションの開始時、通常は<code>「Main」</code>やアプリケーションの初期化時にSerilogを設定します。</p>



<p class="wp-block-paragraph">■設定例</p>



<pre class="wp-block-code"><code> public Form1()
{
    InitializeComponent();
    // フォームを画面の中央に表示
    this.StartPosition = FormStartPosition.CenterScreen;

    //---------------------------------------------------------------------------------
    // Serilogの初期設定
    //---------------------------------------------------------------------------------

    // LoggerConfiguration インスタンスの作成
    Log.Logger = new LoggerConfiguration()

    // 出力先の設定　コンソール/デバッグウィンドウ/ログファイル
    .WriteTo.Console()
    .WriteTo.Debug()

    //rollingInterval: RollingInterval.Day ログファイルを日ごとに作成
　　//ログファイルにはWarningレベル以上のログが記録される
    .WriteTo.File(@"C:\temp\Serilog\serilog_code.txt", 
                restrictedToMinimumLevel: LogEventLevel.Warning, 
                rollingInterval: RollingInterval.Day)

    //コンソール・デバッグウィンドウには、Debugレベル以上のログが記録される
    .MinimumLevel.Debug()
    .CreateLogger();

}</code></pre>



<ul class="wp-block-list">
<li>出力先の設定
<ul class="wp-block-list">
<li>本設定では、コンソールとデバッグウィンドウ及びログファイル</li>
</ul>
</li>



<li>出力レベルの設定
<ul class="wp-block-list">
<li>両方のウィンドウにはDebugレベル以上のメッセージを出力（.MinimumLevel.Debug()）</li>



<li>ログファイルにはWarningレベル以上のメッセージを出力（restrictedToMinimumLevel: LogEventLevel.Warning,）</li>
</ul>
</li>



<li>ログファイルの作成周期
<ul class="wp-block-list">
<li>一日ごとに別ファイルとして作成（rollingInterval: RollingInterval.Day）</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc8">ログ出力先の設定例</span></h4>



<ul class="wp-block-list">
<li><strong>コンソール</strong>
<ul class="wp-block-list">
<li>.WriteTo.Console()</li>
</ul>
</li>



<li><strong>デバッグウィンドウ</strong>
<ul class="wp-block-list">
<li> .WriteTo.Debug()　</li>
</ul>
</li>



<li><strong>ファイル出力</strong>
<ul class="wp-block-list">
<li>.WriteTo.File(@&#8221;C:\temp\Serilog.txt&#8221;, restrictedToMinimumLevel: LogEventLevel.Warning, <br>                         rollingInterval: RollingInterval.Day)</li>
</ul>
</li>



<li><strong>SQL Server</strong>
<ul class="wp-block-list">
<li>.WriteTo.MSSqlServer(&#8220;Server=myServer;Database=myDB;User Id=myUser;Password=myPassword;&#8221;, &#8220;Logs&#8221;)</li>
</ul>
</li>



<li><strong>Elasticsearch</strong>
<ul class="wp-block-list">
<li>.WriteTo.Elasticsearch(new Serilog.Sinks.Elasticsearch.ElasticsearchSinkOptions(new Uri(&#8220;http://localhost:9200&#8221;)))</li>
</ul>
</li>



<li><strong>Syslog（Linux向け）</strong>
<ul class="wp-block-list">
<li>.WriteTo.Syslog()</li>
</ul>
</li>



<li><strong>メール通知</strong>
<ul class="wp-block-list">
<li>.WriteTo.Email(new EmailConnectionInfo{FromEmail = &#8220;noreply@example.com&#8221;,ToEmail = &#8220;admin@example.com&#8221;,MailServer = &#8220;smtp.example.com&#8221;})</li>
</ul>
</li>



<li><strong>Slack通知</strong>
<ul class="wp-block-list">
<li>.WriteTo.Slack(&#8220;https://hooks.slack.com/services/your/webhook/url&#8221;)</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc9">ファイル出力設定の主な設定項目一覧</span></h4>



<p class="wp-block-paragraph">ファイル出力設定では、さまざまなオプションを指定できます。以下に、主な設定項目を一覧にまとめました。</p>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>設定項目</th><th>説　明</th><th>設定例</th></tr></thead><tbody><tr><td>１</td><td>Path</td><td style="text-align:left">ログファイルの保存場所</td><td style="text-align:left">&#8220;C:/logs/Serilog.txt&#8221;</td></tr><tr><td>2</td><td>rollingInterval</td><td style="text-align:left">ローテーション間隔</td><td style="text-align:left">RollingInterval.Day</td></tr><tr><td>3</td><td>retaindFileCour</td><td style="text-align:left">保持するログファイルの最大数</td><td style="text-align:left">7（7日分）</td></tr><tr><td>4</td><td>fileSizeLimitByte</td><td style="text-align:left">ログファイルの最大サイズ</td><td style="text-align:left">10485760（10MB）</td></tr><tr><td>5</td><td>buffered</td><td style="text-align:left">書き込みのバッファリング</td><td style="text-align:left">true（バッファリング有効）</td></tr><tr><td>6</td><td>flushToDiskInterval</td><td style="text-align:left">ディスクへの書き込み間隔</td><td style="text-align:left">TimeSpan.FromSeconds(5)</td></tr><tr><td>7</td><td>outputTemplate</td><td style="text-align:left">ログのフォーマット</td><td style="text-align:left">{Timestamp:yyyy-MM-dd}</td></tr><tr><td>8</td><td>fotmatter</td><td style="text-align:left">JSON形式等のフォーマット指定</td><td style="text-align:left">new CompactJsonFotmatter()</td></tr><tr><td>9</td><td>restrictedToMinimumLevel</td><td style="text-align:left">出力する最低ログレベル</td><td style="text-align:left">LogEventLevel.Warning</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■設定例</strong></p>



<ul class="wp-block-list">
<li>下記設定では、<strong>1日ごとにログファイルを作成し、最大7日分保持</strong>、<strong>10MBを超えたら新しいファイルを作成</strong>するようになっています。</li>



<li>また、<strong>Warning以上のログのみ記録</strong>され、<strong>バッファリングを有効化</strong>してパフォーマンスを向上させています。</li>
</ul>



<pre class="wp-block-code"><code>Log.Logger = new LoggerConfiguration()
    .WriteTo.File("logs/log.txt",
        rollingInterval: RollingInterval.Day,　　// 日毎にログファイルを作成
        retainedFileCountLimit: 7,　　　　　　　 // ７日文のログを保持
        fileSizeLimitBytes: 10485760,　　　　　　// 10MBを超えたら新しいファイルを作成
        buffered: true,　　　　　　　　　　　　　// <strong>バッファリングを有効化</strong>
        flushToDiskInterval: TimeSpan.FromSeconds(5),　// <strong>ディスクへの書き込み間隔 5秒</strong>
        outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} &#91;{Level}] {Message}{NewLine}{Exception}",　 
　　　　　　　　//<strong> ログの表示例　2025-06-08 12:33:20 &#91;Error] データベース接続エラー</strong>
　　　　　　　　// <strong>{NewLine}{Exception}：例外が発生した場合、詳細なスタックトレースを表示</strong>
        restrictedToMinimumLevel: LogEventLevel.Warning)　// <strong>Warning以上のログのみ記録</strong>
    .CreateLogger();</code></pre>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc10">Visual Studio C# JSONファイルによるSerilogの設定</span></h3>



<ul class="wp-block-list">
<li><strong>設定をJSONファイルで管理する利点</strong>
<ul class="wp-block-list">
<li>ソースコードを変更せずにログの設定が可能となる</li>



<li>環境ごとに異なる設定を利用する事ができる（例：serilog.dev.json、serilog.prod.json等）</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"><strong>上記だけでも利便性は相当に高いと言えます。</strong></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■serilog.jsonの例</strong></p>



<p class="wp-block-paragraph">この設定では、<strong>コンソールにはＤebugレベル以上</strong>、<strong>ファイルにはWarningレベル以上</strong>のログを出力するようにしています。</p>



<pre class="wp-block-code"><code>{
  "Serilog": {
    "Using": &#91; "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "MinimumLevel": "Debug",
    "WriteTo": &#91;
      {
        "Name": "Console",
        "Args": { "restrictedToMinimumLevel": "Debug" }
      },
      {
        "Name": "File",
        "Args": {
          "path": "C:/temp/Serilog/serilog_json.txt",
          "rollingInterval": "Day",
          "restrictedToMinimumLevel": "Warning"
        }
      }
    ],
    "Enrich": &#91; "WithMachineName", "WithThreadId" ]
  }
}</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc11">設定手順</span></h4>



<ul class="wp-block-list">
<li><strong><code>serilog.json</code>の作成</strong>
<ul class="wp-block-list">
<li>プロジェクトのルートディレクトリ（<code>bin</code>フォルダの外）に作成します<br>内容は上記通り。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="693" height="173" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Serilog_json.png" alt="" class="wp-image-5393" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Serilog_json.png 693w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Serilog_json-300x75.png 300w" sizes="(max-width: 693px) 100vw, 693px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>JSON設定の読み込み</strong>
<ul class="wp-block-list">
<li>C#のコードでJSONファイルを読み込むには下記のパッケージが必要となるので、NuGetパッケージからインストールします。
<ul class="wp-block-list">
<li><strong>Microsoft.Extensions.Configuration.Json </strong></li>



<li><strong>Serilog.Settings.Configuration</strong></li>
</ul>
</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="829" height="546" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Serilog_json-2.png" alt="" class="wp-image-5395" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Serilog_json-2.png 829w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Serilog_json-2-300x198.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Serilog_json-2-768x506.png 768w" sizes="(max-width: 829px) 100vw, 829px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>serilog.jsonファイルのプロパティ設定</strong>
<ul class="wp-block-list">
<li>ファイルを「右クリック」→「プロパティ」でプロパティを表示し、下記項目を設定
<ul class="wp-block-list">
<li>ビルドアクション：コンテンツ</li>



<li>出力ディレクトリコピー：新しい場合はコピーする</li>
</ul>
</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>プロパティの設定の意味</strong>
<ul class="wp-block-list">
<li>ビルド時に設定ファイルを&nbsp;<code>bin</code>&nbsp;フォルダへコピー</li>



<li>実行時に&nbsp;<code>serilog.json</code>&nbsp;を参照できる（アプリが正しくログ出力できる）</li>



<li>ファイルが変更された場合のみコピーされるため、不要な更新を防ぐ</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="363" height="404" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Serilog_json.png" alt="" class="wp-image-5402" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Serilog_json.png 363w, https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Serilog_json-270x300.png 270w" sizes="(max-width: 363px) 100vw, 363px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc12">Visual Studio C#　Serilog 動作確認</span></h2>



<p class="wp-block-paragraph">Serilogの「コード内」設定と「JSONファイル」設定も、下記の簡単なプログラムコードを実行して検証します。</p>



<ul class="wp-block-list">
<li>設定した条件
<ul class="wp-block-list">
<li>コンソール画面には、Debugレベル以上のエラーを出力する</li>



<li>ログファイルには、Warningレベル以上のエラーを出力する</li>
</ul>
</li>
</ul>



<pre class="wp-block-code"><code>using Serilog;
using Serilog.Events;

//---------------------------------------------------------------------------------
// Serilogの初期設定
//---------------------------------------------------------------------------------
try
{ 
    // LoggerConfiguration インスタンスの作成
    Log.Logger = new LoggerConfiguration()

    // 出力先の設定　コンソール/デバッグウィンドウ/ログファイル
    .WriteTo.Console()
    .WriteTo.Debug()

    //rollingInterval: RollingInterval.Day ログファイルを日ごとに作成
    .WriteTo.File(@"C:\temp\Serilog\serilog_code.txt",
            restrictedToMinimumLevel: LogEventLevel.Warning,
            rollingInterval: RollingInterval.Day)

    //Debug 以上のログレベルのログが記録される
    .MinimumLevel.Debug()
    .CreateLogger();

    Log.Information("Information：コード内の、Serilog設定が適用されました。Fileには表示されない。");
    Log.Verbose("Verbose：ログに表示されないメッセージ。Fileには表示されない。");
    Log.Debug("Debug：プログラムが開始しました。");
    Log.Warning("Warning：警告エラーメッセージ");

    for (int i = 0; i &lt; 10; i++)
    {
        int doubled = i * 2;
        //logger.Info($"NLog ループ {i}：2 倍の値 = {doubled}");
        Log.Debug($"ループ {i}：2倍の値 = {doubled}" + " Fileには表示されない。");
    }

    // 故意に例外を発生させるためのコード
    int val_1 = 10;
    int val_2 = 0;
    int result = val_1 / val_2;
}
catch (Exception ex)
{
    // 例外が発生した場合
    Log.Error(ex, "Error：アプリケーションでエラーが発生しました");
    Log.Fatal(ex, "Fatal：アプリケーションで致命的なエラーが発生しました");
}
finally
{
    // アプリケーション終了時のログ
    Log.Information("プログラムが終了しました");
}</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc13">Visual Studio C# コード内でSerilogを設定した場合</span></h3>



<p class="wp-block-paragraph">下記の出力結果を見ると、想定通りに動作した事が確認できました。</p>



<p class="wp-block-paragraph">■コンソール画面への出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="979" height="512" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Serilog_json-1.png" alt="" class="wp-image-5410" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Serilog_json-1.png 979w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Serilog_json-1-300x157.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Serilog_json-1-768x402.png 768w" sizes="(max-width: 979px) 100vw, 979px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■ログファイルへの出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="871" height="285" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Serilog_json-1.png" alt="" class="wp-image-5406" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Serilog_json-1.png 871w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Serilog_json-1-300x98.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Serilog_json-1-768x251.png 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc14">Visual Studio C# JsonファイルでSerilogを設定した場合</span></h3>



<p class="wp-block-paragraph">■コンソール画面への出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="979" height="512" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Serilog_json.png" alt="" class="wp-image-5408" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Serilog_json.png 979w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Serilog_json-300x157.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Serilog_json-768x402.png 768w" sizes="(max-width: 979px) 100vw, 979px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■ログファイルへの出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="875" height="290" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Serilog_json.png" alt="" class="wp-image-5409" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Serilog_json.png 875w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Serilog_json-300x99.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Serilog_json-768x255.png 768w" sizes="(max-width: 875px) 100vw, 875px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc15">Visual Studio C# Serilog まとめ（NLogと比較して）</span></h2>



<p class="wp-block-paragraph">NLogとSerilogはどちらもC#のログ記録ライブラリとして広く使われていますが、それぞれに<strong>優れた点</strong>と<strong>デメリット</strong>があります。</p>



<p class="wp-block-paragraph">一般的に、<strong>NLogはレガシーシステムや高パフォーマンスを求めるアプリケーション</strong>で使われることが多く、<strong>Serilogはクラウド環境や構造化ログを活用するプロジェクト</strong>で人気があります。</p>



<p class="wp-block-paragraph">最近では、<strong>Serilogの採用が増えている</strong>傾向があるようですが、用途によって適したライブラリを選択する事が重要です。</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<div style="height:185px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門 】NLogの使用方法を徹底解説</title>
		<link>https://www.kemmy-it.com/2025/06/07/visual_studio_debug_nlog01/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sat, 07 Jun 2025 05:21:24 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5333</guid>

					<description><![CDATA[本ブログでは初学者向けに、NLogの使用方法を紹介します。 NLog は柔軟で高機能な .NET 用のログライブラリです。ログレベル（Info, Debug, Error など）の切り分け、ログファイルの出力先や形式のカ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">本ブログでは初学者向けに、<strong><span class="marker-under-red">NLogの使用方法を</span></strong>紹介します。</p>



<p class="wp-block-paragraph">NLog は柔軟で高機能な .NET 用のログライブラリです。ログレベル（Info, Debug, Error など）の切り分け、ログファイルの出力先や形式のカスタマイズなどが簡単に設定できる便利なツールです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>使用環境</strong>
<ul class="wp-block-list">
<li>Windows 10 Pro 2009 ビルド19045.5854</li>



<li>Visual Studio 2020 Version 17.14.2 </li>



<li>NLog 5.5 </li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 C#　NLogを使用した本格的なログ管理</a><ol><li><a href="#toc2" tabindex="0">NLogの使用方法</a><ol><li><a href="#toc3" tabindex="0">NuGet パッケージからインストール</a></li></ol></li><li><a href="#toc4" tabindex="0">NLog.config ファイルの作成</a></li><li><a href="#toc5" tabindex="0">NLog.config ファイルの構成</a></li><li><a href="#toc6" tabindex="0">変数 &lt;variable&gt;の設定方法</a></li><li><a href="#toc7" tabindex="0">ターゲット &lt;targets&gt;の設定方法</a></li><li><a href="#toc8" tabindex="0">ルール&lt;rules&gt;の設定方法</a></li></ol></li><li><a href="#toc9" tabindex="0">Visual Studio C#　NLog　動作確認 </a></li><li><a href="#toc10" tabindex="0">「Visual Studio C#」 NLog まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 C#　NLogを使用した本格的なログ管理</span></h2>



<ul class="wp-block-list">
<li><strong>NLogの主な用途</strong>
<ul class="wp-block-list">
<li><strong>デバッグ</strong>：開発時の挙動を把握し、エラーを素早く特定</li>



<li><strong>エラートラッキング</strong>：アプリの異常動作を記録し、問題分析に役立つ</li>



<li><strong>パフォーマンス監視</strong>：処理時間の記録やシステム負荷の検出</li>



<li><strong>運用ログ管理</strong>：ファイル、データベース、クラウドなど様々な場所へログ保存</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>ログ出力形式</strong></li>
</ul>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>出力先</th><th>ファイル形式</th><th>特　徴</th></tr></thead><tbody><tr><td>1</td><td>ファイル</td><td style="text-align:left">.txt, .log, .csv</td><td style="text-align:left">一般的なテキストログで解析し易い</td></tr><tr><td>2</td><td>JSON</td><td style="text-align:left">.Json</td><td style="text-align:left">構造化データのログ。外部ツールとの連携向き</td></tr><tr><td>3</td><td>XML</td><td style="text-align:left">.xml</td><td style="text-align:left">可読性とデータ整合性のバランスが良い</td></tr><tr><td>4</td><td>イベントログ</td><td style="text-align:left">ー</td><td style="text-align:left">Windowsのイベントビューアにログ記録</td></tr><tr><td>５</td><td>データベース</td><td>SQL Server, MySQL など</td><td style="text-align:left">集中的にログ管理したい場合に便利</td></tr><tr><td>6</td><td>クラウド</td><td style="text-align:left">AzureやＡWS など</td><td style="text-align:left">クラウド上でリアルタイム監視</td></tr></tbody></table></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc2">NLogの使用方法</span></h3>



<h4 class="wp-block-heading"><span id="toc3">NuGet パッケージからインストール</span></h4>



<ul class="wp-block-list">
<li>ソリューションエクスプローラー画面の「プロジェクト」を右クリック→「ＮuＧetパッケージの管理」画面から下記のパッケージをインストールする。
<ul class="wp-block-list">
<li><strong>NLog</strong>　5.5.0</li>



<li><strong>NLog.Schema</strong>　5.5.0</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>NLog.Schema</strong>
<ul class="wp-block-list">
<li>XML スキーマを提供し、設定ミスを防ぐ</li>



<li>設定ファイルの構造をチェックし、誤ったタグや属性の使用を防止</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■パッケージのインストール結果</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="790" height="262" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_log-3.png" alt="" class="wp-image-5343" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_log-3.png 790w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_log-3-300x99.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_log-3-768x255.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">NLog.config ファイルの作成</span></h3>



<ul class="wp-block-list">
<li><strong>NLog.configファイル</strong> <strong>とは</strong>
<ul class="wp-block-list">
<li>ログの出力方法（出力先・レベル・書式など）を XML 形式で定義し、アプリケーションのログ動作の制御を記述する</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「NLog.config」ファイル をプロジェクトのルートフォルダに作成</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="604" height="169" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Newdebug_log.png" alt="" class="wp-image-5344" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Newdebug_log.png 604w, https://www.kemmy-it.com/wp-content/uploads/2025/06/04_VS_Newdebug_log-300x84.png 300w" sizes="(max-width: 604px) 100vw, 604px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ファイルに下記内容（サンプル）をコピー</li>
</ul>



<pre class="wp-block-code"><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;

&lt;!-- 変数の設定 --&gt;
  &lt;variable name="logdir" value="c:\temp\nlog"/&gt;

&lt;!-- ターゲットの設定 --&gt;
  &lt;targets&gt;
   &lt;target xsi:type="File" name="filelog" fileName="${logdir}/logs/${shortdate}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" /&gt;
   &lt;target xsi:type="Console" name="consolelog"
	layout="${longdate} ${uppercase:${level}} ${message}" /&gt;
  &lt;/targets&gt;

&lt;!-- ルールの設定 --&gt;
  &lt;rules&gt;
    &lt;logger name="*" minlevel="Info" writeTo="filelog,consolelog" /&gt;
  &lt;/rules&gt;
&lt;/nlog&gt;
</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>NLog.configファイルを「右クリック」→「プロパティ」でプロパティ画面を表示し、下記項目を設定
<ul class="wp-block-list">
<li>ビルドアクション：コンテンツ</li>



<li>出力ディレクトリコピー：新しい場合はコピーする</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>プロパティの設定の意味</strong>
<ul class="wp-block-list">
<li>ビルド時に設定ファイルを <code>bin</code> フォルダへコピー</li>



<li>実行時に <code>NLog.config</code> を参照できる（アプリが正しくログ出力できる）</li>



<li>ファイルが変更された場合のみコピーされるため、不要な更新を防ぐ</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="371" height="444" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_log.png" alt="" class="wp-image-5346" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_log.png 371w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_log-251x300.png 251w" sizes="(max-width: 371px) 100vw, 371px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">NLog.config ファイルの構成</span></h3>



<p class="wp-block-paragraph">「NLog.config」ファイルは、以下の３つの主要なセクションから構成されています。</p>



<ul class="wp-block-list">
<li><strong>変数 &lt;variable&gt;</strong></li>



<li><strong>ターゲット &lt;targets&gt; → ログの出力先</strong></li>



<li><strong>ルール &lt;rules&gt; → どのログレベルをどこに記録するか</strong></li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">変数 &lt;variable&gt;の設定方法</span></h3>



<p class="wp-block-paragraph">設定ファイル（NLog.config）内でよく使う値を変数として定義し、再使用するための機能。<br>ログの出力先フォルダ名やファイル名などを変数化することで、メンテナンス性・可読性が向上する。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■基本構文</p>



<pre class="wp-block-code"><code>&lt;variable name="変数名" value="値"/&gt;</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■具体例</p>



<ul class="wp-block-list">
<li>下記の様に定義した変数は、NLog.configファイル内で ${logDir} のように参照できます。</li>
</ul>



<pre class="wp-block-code"><code>&lt;variable name="logDir" value="logs" /&gt;</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■よく使用する変数パターン</p>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>変数名</th><th>用　途　例</th></tr></thead><tbody><tr><td>１</td><td>logDir</td><td style="text-align:left">ログの出力先ディレクトリ</td></tr><tr><td>２</td><td>appName</td><td style="text-align:left">アプリケーション名（ファイル名に使用）</td></tr><tr><td>３</td><td>logLevel</td><td style="text-align:left">出力ログのレベルに応じたファイル名などに応用可</td></tr></tbody></table></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">ターゲット &lt;targets&gt;の設定方法</span></h3>



<p class="wp-block-paragraph">ターゲットは、「ログの出力先（どこにログを書き出すか）」を定義するセクションです。</p>



<p class="wp-block-paragraph">ログの出力先はファイル、コンソール、データベース、メール、デバッグウィンドウなど多岐にわたり、それらを「ターゲット」と呼びます。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■基本構文</strong></p>



<p class="wp-block-paragraph">下記は、「xsi:type=&#8221;File&#8221;」で出力先をファイルとし、「fileTarget」という識別名で、log.txt ファイルに　ログを出力するターゲットを定義しています。</p>



<ul class="wp-block-list">
<li>type：出力先</li>



<li>name：定義した本&lt;targets&gt;の識別名</li>



<li>fileName：出力先が、&#8221;File&#8221; の場合のログファイル名称</li>
</ul>



<pre class="wp-block-code"><code>  &lt;targets&gt;
    &lt;target xsi:type="File" name="fileTarget" fileName="log.txt" /&gt;
  &lt;/targets&gt;</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■よく使われるターゲット（出力先）の種類</strong></p>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>種別（xsi:type）</th><th>説　明</th></tr></thead><tbody><tr><td>１</td><td>File</td><td style="text-align:left">ログをファイルに書き出す</td></tr><tr><td>２</td><td>Console</td><td style="text-align:left">コンソールにログを出力（.NET コンソールアプリ向け）</td></tr><tr><td>３</td><td>Debug</td><td style="text-align:left">Visual Studio の「出力ウィンドウ」にログを出力</td></tr><tr><td>４</td><td>Trace</td><td style="text-align:left">System.Diagnostics.Trace.WriteLine に出力</td></tr><tr><td>５</td><td>EventLog</td><td style="text-align:left">Windows のイベントログに出力</td></tr><tr><td>６</td><td>Mail</td><td style="text-align:left">メールでログを送信（SMTP設定必要）</td></tr><tr><td>７</td><td>Null</td><td style="text-align:left">出力を捨てる（開発時のテスト用）</td></tr></tbody></table></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■具体例（File）</strong></p>



<ul class="wp-block-list">
<li>変数&lt;variable&gt;との関係も併せて説明</li>
</ul>



<pre class="wp-block-code"><code>&lt;variable name="logDir" value="logs" /&gt;</code></pre>



<pre class="wp-block-code"><code>&lt;targets&gt;
  &lt;target xsi:type="File"
          name="fileTarget"
          fileName="${logDir}/app.log"
          layout="${longdate}|${level}|${logger}|${message}" /&gt;
&lt;/targets&gt;</code></pre>



<ul class="wp-block-list">
<li>fileName：出力ファイル名（変数値を使用したので出力先は、&#8221;logs/app.log&#8221; となる）<br>${logDir}を使用する事で、ログの出力先を一括で変更できる。</li>



<li>layout： ログの出力フォーマット（テンプレート文字列）</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>Fileの出力例</strong></li>
</ul>



<pre class="wp-block-code"><code>2025-06-05 20:00:00.0000|INFO|MyApp.Main|アプリ起動</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■具体例（Debug）</strong></p>



<p class="wp-block-paragraph">Visual Studio の「出力ウィンドウ」にログが表示されるので、開発中の動作確認に便利です。</p>



<pre class="wp-block-code"><code>&lt;targets&gt;
  &lt;target xsi:type="Debug"
          name="debugTarget"
          layout="${longdate}|${message}" /&gt;
&lt;/targets&gt;</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>■layout のカスタマイズ</strong></p>



<p class="wp-block-paragraph">layout 属性では、以下のような変数を使ってログ出力内容を柔軟に構成できます。</p>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>№</th><th>変数</th><th>内　容</th></tr></thead><tbody><tr><td>１</td><td>${longdate}</td><td style="text-align:left">日時（yyyy-MM-dd HH:mm:ss.ffff）</td></tr><tr><td>２</td><td>${level}</td><td style="text-align:left">ログレベル（INFO, DEBUG など）</td></tr><tr><td>３</td><td>${logger}</td><td style="text-align:left">ロガー名（通常はクラス名）</td></tr><tr><td>４</td><td>${message}</td><td style="text-align:left">実際のログメッセージ</td></tr><tr><td>５</td><td>${exception}</td><td style="text-align:left">例外内容（あれば）</td></tr></tbody></table></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc8">ルール&lt;rules&gt;の設定方法</span></h3>



<p class="wp-block-paragraph">&lt;rules&gt;は<strong>どのログレベルをどこに記録するか</strong> を定義します。</p>



<p class="wp-block-paragraph"><strong>■基本構文</strong></p>



<p class="wp-block-paragraph">下記のサンプルは、後で「writeTo」を説明する為に&lt;targets&gt;も含めています。</p>



<pre class="wp-block-code"><code>&lt;targets&gt;
    &lt;target xsi:type="File" name="filelog" fileName="${logdir}/logs/${shortdate}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" /&gt;
	
	&lt;target xsi:type="Console" name="consolelog"
		layout="${longdate} ${uppercase:${level}} ${message}" /&gt;      
&lt;/targets&gt;

&lt;rules&gt;
    &lt;logger name="*" minlevel="Info" writeTo="filelog,consolelog" /&gt;
&lt;/rules&gt;</code></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>name</strong>
<ul class="wp-block-list">
<li>&lt;targets&gt;で指定するnameの名称を指定する。name=&#8221;*&#8221; は、全ての&lt;targets&gt;に適用</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>minlevel</strong>
<ul class="wp-block-list">
<li>どのレベル以上のログを記録するかを指定
<ul class="wp-block-list">
<li>minlevel=&#8221;Info&#8221;は、”Info”,”Warn”,&#8221;Error&#8221;,&#8221;Fatal&#8221;レベルを出力する。</li>
</ul>
</li>
</ul>
</li>
</ul>



<figure class="wp-block-flexible-table-block-table"><table class=""><thead><tr><th>順位</th><th>レベル</th><th>機　能</th></tr></thead><tbody><tr><td>1</td><td>Trace</td><td style="text-align:left">さらに詳細な内部ログ（通常は不要）</td></tr><tr><td>2</td><td>Debug</td><td style="text-align:left">開発・トラブルシュート用。ほぼすべての情報を出力。</td></tr><tr><td>3</td><td>Info</td><td style="text-align:left">通常の動作情報</td></tr><tr><td>4</td><td>Warn</td><td style="text-align:left">警告（問題の可能性あり）</td></tr><tr><td>5</td><td>Error</td><td style="text-align:left">エラー（処理に問題あり）</td></tr><tr><td>6</td><td>Fatal</td><td style="text-align:left">致命的なエラー（即時対応が必要）</td></tr></tbody></table></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>writeTo</strong>
<ul class="wp-block-list">
<li> <strong>ログの出力先を指定</strong> する為、&lt;target&gt;で定義されている name の名称を指定します。サンプルでは、&#8221;filelog,consolelog&#8221; と指定している為、ログファイルとコンソールの両方に出力します。</li>
</ul>
</li>
</ul>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc9">Visual Studio C#　NLog　動作確認 </span></h2>



<p class="wp-block-paragraph">本ブログで使用した「NLog.config」を使用して、実際に以下の簡単なコンソールアプリをReleaseモードで動かしてみました。</p>



<pre class="wp-block-code"><code>// See https://aka.ms/new-console-template for more information

using NLog;

namespace Console_Test
{
    class Program
    {
        // ロガーを定義（クラススコープで静的に）
        private static readonly Logger logger = LogManager.GetCurrentClassLogger();

        static void Main(string&#91;] args)
        {
            try
            {
                logger.Trace("Trace：トレースログ　ログに表示されない。");
                logger.Debug("Debug：デバッグログ　ログに表示されない。");
                logger.Info("Info：テストプログラムが開始しました。");
                logger.Warn("Warn：警告エラーメッセージ");

                for (int i = 0; i &lt; 10; i++)
                {
                    int doubled = i * 2;
                    logger.Info($"NLog ループ {i}：2 倍の値 = {doubled}");
                }

                // 故意に例外を発生させるためのコード
                int val_1 = 10;
                int val_2 = 0;
                int result = val_1 / val_2; 
            }
            catch (Exception ex)
            {
                // 例外が発生した場合はエラーログを記録
                logger.Error(ex, "Error：アプリケーションでエラーが発生しました");
                logger.Fatal(ex, "Fatal：アプリケーションで致命的なエラーが発生しました");
            }
            finally
            {
                // アプリケーション終了時のログ
                logger.Info("アプリケーション終了が終了しました");
            }  
        }
    }
}
</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">下記の出力結果を見ると、想定通りに動作した事が確認できました。</p>



<ul class="wp-block-list">
<li>TraceとDebugレベルのメッセージは表示されない</li>



<li>コンソールとログファイルの両方に出力された</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■コンソール画面への出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="828" height="368" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_log.png" alt="" class="wp-image-5356" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_log.png 828w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_log-300x133.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_log-768x341.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■ログファイルへの出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="764" height="447" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_log.png" alt="" class="wp-image-5357" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_log.png 764w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_log-300x176.png 300w" sizes="(max-width: 764px) 100vw, 764px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc10">「Visual Studio C#」 NLog まとめ</span></h2>



<p class="wp-block-paragraph">NLogはXML設定ファイルを使った構成が得意でリリース後にログ設定を変更し易い為、長期運用されるシステムでの使用が今後も続くでしょう。</p>



<p class="wp-block-paragraph">NLogと同様にC#のログ記録ライブラリとして広く使われているライブラリに、Serilogがあります。こちらは<strong>Serilogはクラウド環境や構造化ログを活用するプロジェクト</strong>で人気があります。</p>



<p class="wp-block-paragraph">最近では、<strong>Serilogの採用が増えている</strong>傾向があるようですが、用途によって適したライブラリを選択する事が重要です。</p>



<p class="wp-block-paragraph">Serilogについては「<a href="https://www.kemmy-it.com/2025/06/08/visual_studio_debug_serilog01/">Serilogの使用方法を徹底解説</a>」を御覧ください。</p>



<div style="height:185px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門 】変数値の確認方法を徹底解説</title>
		<link>https://www.kemmy-it.com/2025/06/04/visual_studio_debug_value01-2/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 11:09:14 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5243</guid>

					<description><![CDATA[本ブログでは初学者向けに、デバッグ時の変数値を画面上で確認方法を紹介します。 変数値の確認方法は使用場面や目的に合わせて様々な方法があります。適切な方法を使用する事で効率的なデバッグが可能となります。 ※デバッグ時はDe [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">本ブログでは初学者向けに、デバッグ時の<strong><span class="marker-under-red">変数値を画面上で確認方法</span></strong>を紹介します。</p>



<p class="wp-block-paragraph">変数値の確認方法は使用場面や目的に合わせて様々な方法があります。適切な方法を使用する事で効率的なデバッグが可能となります。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">※デバッグ時はDebugモードで実行して下さい。</span></strong><br>※Visual Studio 2020  Version 17.14.2 を使用</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 C# ブレーク時に値を確認する方法</a><ol><li><a href="#toc2" tabindex="0">マウスホバーで確認</a></li><li><a href="#toc3" tabindex="0">QuickWatch（クイックウォッチ）</a></li><li><a href="#toc4" tabindex="0">ローカルウィンドウ（スコープ内変数値の確認）</a></li><li><a href="#toc5" tabindex="0">Watchウィンドウ（任意の式・変数を登録）</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">Console.WriteLine() で出力</a></li><li><a href="#toc11" tabindex="0">System.Diagnostics.Debug.WriteLine()</a></li><li><a href="#toc12" tabindex="0">Trace.WriteLine()</a></li></ol></li><li><a href="#toc13" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 C# ブレーク時に値を確認する方法</span></h2>



<h3 class="wp-block-heading"><span id="toc2">マウスホバーで確認</span></h3>



<p class="wp-block-paragraph">変数にマウスを合わせると現在の値をポップアップで表示してくれます。下記の例では、変数「Txt_a」の値は&#8221;10&#8243;。コレクションやオブジェクトの場合、展開して内容も確認できます。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>変数や式の現在値をすばやく確認したい</li>



<li>プロパティやフィールドの中身をドリルダウンで展開して確認したい</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>変数値確認手順</strong>
<ul class="wp-block-list">
<li>変数にマウスを合わせる</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="791" height="147" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Newdebug_Valeu.png" alt="" class="wp-image-5248" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Newdebug_Valeu.png 791w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Newdebug_Valeu-300x56.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/01_VS_Newdebug_Valeu-768x143.png 768w" sizes="(max-width: 791px) 100vw, 791px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>ポップアップのピン止め</strong>
<ul class="wp-block-list">
<li>ポップアップ左側の▷をクリックすると、ポップアップをピン止めする事が可能です。ピン止めしておけば、次回実行時の値もそのままで確認できます。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="799" height="127" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Newdebug_Valeu.png" alt="" class="wp-image-5249" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Newdebug_Valeu.png 799w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Newdebug_Valeu-300x48.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/02_VS_Newdebug_Valeu-768x122.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc3">QuickWatch（クイックウォッチ）</span></h3>



<p class="wp-block-paragraph">デバッグ中に変数や式の評価結果を一時的に詳しく確認できるウィンドウです。特に複雑な式やオブジェクトの内容をじっくり調べたいときに便利なウィンドウです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>構造体・クラスなど複雑なオブジェクトの中身を展開表示で確認</li>



<li>条件式やプロパティチェーンなどの式を即時評価</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>QuickWatch を開く手順</strong>
<ul class="wp-block-list">
<li>①変数や式を選択して右クリック →「クイックウォッチ」</li>



<li>②メニュー [デバッグ] → [ウィンドウ] → [クイックウォッチ…]　等</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">①の関数呼び出しを選択　→　「右クリック」→「クイックウォッチ」で結果が表示</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="357" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Newdebug_Valeu-1024x357.png" alt="" class="wp-image-5271" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Newdebug_Valeu-1024x357.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Newdebug_Valeu-300x105.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Newdebug_Valeu-768x268.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/08_VS_Newdebug_Valeu.png 1041w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">ローカルウィンドウ（スコープ内変数値の確認）</span></h3>



<p class="wp-block-paragraph">現在のスコープ内で定義されているすべてのローカル変数を一覧で確認できるウィンドウです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>現在スコープ内の変数を一括で確認したい</li>



<li>ループ中・条件分岐中の変数の動きを追跡</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>ウィンドウ表示手順</strong>
<ul class="wp-block-list">
<li>ブレーク中　→　メニュー「デバッグ」→「ウィンドウ」→「ローカル」</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="371" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_Valeu-1024x371.png" alt="" class="wp-image-5251" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_Valeu-1024x371.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_Valeu-300x109.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_Valeu-768x278.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/03_VS_Newdebug_Valeu.png 1040w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">Watchウィンドウ（任意の式・変数を登録）</span></h3>



<p class="wp-block-paragraph">監視したい変数や式を追加し、値の変化を継続して監視できるウィンドウです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>重要な変数やオブジェクトの集中監視</li>



<li>値の変化を逐次確認</li>



<li>スコープをまたいでの監視</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong><strong>ウィンドウ表示手順</strong></strong>
<ul class="wp-block-list">
<li>ブレーク中　→　メニュー「デバッグ」→「ウィンドウ」→「ウォッチ」→「ウォッチ1～4」</li>



<li>①ウォッチしたい変数を入力</li>



<li>②ウォッチウィンドウの切り替え</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="358" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_Valeu-1024x358.png" alt="" class="wp-image-5253" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_Valeu-1024x358.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_Valeu-300x105.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_Valeu-768x268.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/05_VS_Newdebug_Valeu.png 1030w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">自動変数ウィンドウ（最近使われた変数）</span></h3>



<p class="wp-block-paragraph">現在および直前の行で使われている変数を自動で表示するウィンドウです。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>カーソルのある行付近で「使用」「代入」「参照」された変数の確認</li>



<li>「関係のない変数」の表示にデバッグ作業を妨げられたくない 等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong><strong><strong>ウィンドウ表示手順</strong></strong></strong>
<ul class="wp-block-list">
<li>ブレーク中 　→　メニュー「デバッグ」→「ウィンドウ」→「自動変数」</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■現在ブレーク中の変数「b」と直前の変数「a」が表示されています。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="355" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_Valeu-1024x355.png" alt="" class="wp-image-5262" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_Valeu-1024x355.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_Valeu-300x104.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_Valeu-768x267.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/06_VS_Newdebug_Valeu.png 1037w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">イミディエイトウィンドウ（その場で式を評価）</span></h3>



<p class="wp-block-paragraph">対話的にコマンドや式を入力できるウィンドウです。C# の式やメソッド呼び出し、変数参照などをリアルタイムで実行して結果を確認したり、値の変更やオブジェクト操作も可能です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>デバッグ中に任意の変数やプロパティの現在の値を確認</li>



<li>変数の値をその場で変更して動作確認が可能</li>



<li>計算式（例：a + b、list.Count &gt; 0など）の評価　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong><strong><strong>ウィンドウ表示手順</strong></strong></strong>
<ul class="wp-block-list">
<li>ブレーク中　→　メニュー[デバッグ]  → [ウィンドウ] → [イミディエイト]</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">イミディエイトウィンドウでは ? をつけなくても構いませんが、</p>



<ul class="wp-block-list">
<li>結果を見たい → ? をつける</li>



<li>単に処理・代入だけしたい → つけない</li>
</ul>



<p class="wp-block-paragraph">というルールで使い分けると良いでしょう。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="335" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_Valeu-1024x335.png" alt="" class="wp-image-5266" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_Valeu-1024x335.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_Valeu-300x98.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_Valeu-768x251.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/07_VS_Newdebug_Valeu.png 1036w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc8">コマンドウィンドウ</span></h3>



<p class="wp-block-paragraph">デバッグ中や開発中に Visual Studio のコマンドやデバッグ機能を実行するための特別なインターフェースです。</p>



<p class="wp-block-paragraph">デバッグ中の変数値の確認やコード操作をコマンド形式で実行できます。コマンドを使わず変数値の確認用として使用するならば、イミディエイトウィンドウで十分でしょう。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>現在の変数値の表示やメソッド呼び出しを実行（イミディエイトウィンドウと似た使い方）</li>



<li>コードの検索・移動、マクロ実行</li>



<li>Build.Solution や Debug.Start などの IDE コマンドを直接実行</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong><strong><strong>ウィンドウ表示手順</strong></strong></strong>
<ul class="wp-block-list">
<li>メニュー「表示」→「その他のウィンドウ」→「コマンドウィンドウ」</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■コマンド「Debug.Start」でデバッグを開始し、変数の値を確認</p>



<figure class="wp-block-image size-full"><img decoding="async" width="941" height="290" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/15_VS_Newdebug_Valeu.png" alt="" class="wp-image-5291" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/15_VS_Newdebug_Valeu.png 941w, https://www.kemmy-it.com/wp-content/uploads/2025/06/15_VS_Newdebug_Valeu-300x92.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/15_VS_Newdebug_Valeu-768x237.png 768w" sizes="(max-width: 941px) 100vw, 941px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc9">プログラム動作中に値を確認する方法</span></h2>



<h3 class="wp-block-heading"><span id="toc10">Console.WriteLine() で出力</span></h3>



<p class="wp-block-paragraph">Console.WriteLine() は、C# において標準出力（通常はコンソール画面）に文字列や数値などを出力するためのメソッドです。</p>



<p class="wp-block-paragraph">開発中のデバッグやログ出力、ユーザーへの情報表示など幅広く使われます。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>デバッグ出力</li>



<li>開発初期段階での簡易ログ記録　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>表示の仕方</strong>
<ul class="wp-block-list">
<li>Console.WriteLine(値または文字列);</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■下記はループを100回繰り返し、ループカウンタの２倍の値をConsole.WriteLine()で出力しています</p>



<figure class="wp-block-image size-full"><img decoding="async" width="736" height="225" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/16_VS_Newdebug_Valeu.png" alt="" class="wp-image-5296" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/16_VS_Newdebug_Valeu.png 736w, https://www.kemmy-it.com/wp-content/uploads/2025/06/16_VS_Newdebug_Valeu-300x92.png 300w" sizes="(max-width: 736px) 100vw, 736px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■Console.WriteLine()の出力結果</p>



<figure class="wp-block-image size-full"><img decoding="async" width="745" height="252" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/17_VS_Newdebug_Valeu.png" alt="" class="wp-image-5297" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/17_VS_Newdebug_Valeu.png 745w, https://www.kemmy-it.com/wp-content/uploads/2025/06/17_VS_Newdebug_Valeu-300x101.png 300w" sizes="(max-width: 745px) 100vw, 745px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc11">System.Diagnostics.Debug.WriteLine()</span></h3>



<p class="wp-block-paragraph">デバッグ中に出力ウィンドウへメッセージを表示するために使用します。</p>



<p class="wp-block-paragraph">Console.WriteLine() と異なり、GUIアプリケーションや WinForms、WPF のような環境でもコンソールを開かずに出力確認が可能です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>デバッグログとして変数値や処理の流れを等を出力</li>



<li>条件分岐や例外の追跡　等</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>表示の仕方</strong>（Debug.WriteLine() の出力は「出力ウィンドウ」に表示）
<ul class="wp-block-list">
<li>アプリを「デバッグモード」で実行（F5）</li>



<li>メニュー → 表示 → 出力（または Ctrl + Alt + O）　等</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■System.Diagnostics.Debug.WriteLine()のコード</p>



<figure class="wp-block-image size-full"><img decoding="async" width="975" height="379" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/09_VS_Newdebug_Valeu.png" alt="" class="wp-image-5278" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/09_VS_Newdebug_Valeu.png 975w, https://www.kemmy-it.com/wp-content/uploads/2025/06/09_VS_Newdebug_Valeu-300x117.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/09_VS_Newdebug_Valeu-768x299.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■「デバッグ実行」で、出力ウィンドウへメッセージを出力</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="360" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/10_VS_Newdebug_Valeu-1024x360.png" alt="" class="wp-image-5279" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/10_VS_Newdebug_Valeu-1024x360.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/10_VS_Newdebug_Valeu-300x105.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/10_VS_Newdebug_Valeu-768x270.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/10_VS_Newdebug_Valeu.png 1031w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc12">Trace.WriteLine()</span></h3>



<p class="wp-block-paragraph">デバッグモード/リリースモードの両方で、出力ウィンドウにメッセージを表示します。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>システム全体の挙動をトレース（追跡）</li>



<li>リリースビルドでもトレースしたい</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>出力ウィンドウ（デフォルト）</strong>
<ul class="wp-block-list">
<li>アプリを「デバッグモード」で実行（F5）</li>



<li>メニュー → 表示 → 出力（または Ctrl + Alt + O）　等</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■Releaceモードでビルド</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="424" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/11_VS_Newdebug_Valeu-1024x424.png" alt="" class="wp-image-5283" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/11_VS_Newdebug_Valeu-1024x424.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/11_VS_Newdebug_Valeu-300x124.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/11_VS_Newdebug_Valeu-768x318.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/11_VS_Newdebug_Valeu.png 1069w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">■デバッグ実行</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="424" src="https://www.kemmy-it.com/wp-content/uploads/2025/06/12_VS_Newdebug_Valeu-1024x424.png" alt="" class="wp-image-5284" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/06/12_VS_Newdebug_Valeu-1024x424.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/06/12_VS_Newdebug_Valeu-300x124.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/06/12_VS_Newdebug_Valeu-768x318.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/06/12_VS_Newdebug_Valeu.png 1069w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc13">まとめ</span></h2>



<p class="wp-block-paragraph">デバッグ時の<strong><span class="marker-under-red">変数値を画面上で確認する方法</span></strong>を色々と紹介してきましたが、これらの方法は、「いつ」「どこで」「何のために」変数の値を確認したいかという目的に応じて、選び分けることが大切です。</p>



<ul class="wp-block-list">
<li>特定の変数や式を継続的に追跡したい → ウォッチ／自動／ローカルウィンドウ</li>



<li>画面で直接見たい → Console.WriteLine(), Debug.WriteLine(), Trace.WriteLine()</li>



<li>実行中にその場で調べたい → イミディエイトウィンドウやウォッチウィンドウ</li>
</ul>



<p class="wp-block-paragraph">Visual Studioは可視化・監視だけでなく、実行中にその値を変更することまで可能です。これを活用できるようになると、バグの発見・解決スピードが格段に向上し、より安定したアプリケーション開発が行えるようになるでしょう。</p>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022 C# デバッグ入門 】ブレークポイントの使い方を徹底解説</title>
		<link>https://www.kemmy-it.com/2025/05/31/visual_studio_debug_break01-2/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Sat, 31 May 2025 07:01:51 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5182</guid>

					<description><![CDATA[本ブログでは初学者向けに、ブレークポイントの設定方法について紹介します。 ブレークポイントの設定には様々な方法が有り、使用場面に合わせて適切な方法を使用する事で効率的なデバッグが可能となります。 ※デバッグ時はDebug [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">本ブログでは初学者向けに、ブレークポイントの設定方法について紹介します。</p>



<p class="wp-block-paragraph">ブレークポイントの設定には様々な方法が有り、使用場面に合わせて適切な方法を使用する事で効率的なデバッグが可能となります。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">※デバッグ時はDebugモードで実行して下さい。</span></strong><br>※Visual Studio 2020  Version 17.14.2 を使用</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 C# ブレークポイントの基本設定</a><ol><li><a href="#toc2" tabindex="0">特定の行で必ず停止したい場合</a></li></ol></li><li><a href="#toc3" tabindex="0">条件付きブレークポイント</a><ol><li><a href="#toc4" tabindex="0">特定の条件に合致した場合にのみ停止</a></li></ol></li><li><a href="#toc5" tabindex="0">ヒットカウント付きブレークポイント</a><ol><li><a href="#toc6" tabindex="0">ループ処理等で停止条件を複数指定できる</a></li></ol></li><li><a href="#toc7" tabindex="0">アクション付きブレークポイント</a><ol><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></ol></li><li><a href="#toc11" tabindex="0">他のブレークポイントにヒットした場合のみ停止</a><ol><li><a href="#toc12" tabindex="0">他の指定したブレークポイントで停止したら有効となる</a></li></ol></li><li><a href="#toc13" tabindex="0">関数ブレークポイント</a><ol><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></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 C# ブレークポイントの基本設定</span></h2>



<h3 class="wp-block-heading"><span id="toc2">特定の行で必ず停止したい場合</span></h3>



<p class="wp-block-paragraph">この行が実行される都度 必ず停止する設定。（<span class="bold-red">●</span>が表示される）</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>プログラムがどのように実行されるか、1行ずつ確認したい</li>



<li>その時点での変数やオブジェクトの内容を確認したい</li>



<li>決まった場所で発生する例外直前の状態を観察したい　等 ext.　</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>行の左側をクリックするかF9を押下</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="821" height="306" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Newdebug_Break-1.png" alt="" class="wp-image-5189" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Newdebug_Break-1.png 821w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Newdebug_Break-1-300x112.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Newdebug_Break-1-768x286.png 768w" sizes="(max-width: 821px) 100vw, 821px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc3">条件付きブレークポイント</span></h2>



<h3 class="wp-block-heading"><span id="toc4">特定の条件に合致した場合にのみ停止</span></h3>



<p class="wp-block-paragraph">「特定の条件のときだけ止めたい」という場合は、<strong>条件付きブレークポイント</strong>が便利。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>ループ中、○○回目でブレークしたい</li>



<li>エラーが起きそうな特定の入力のときだけ確認したい　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>ブレーポイントを設定後、「設定」をクリック<br>※ブレークポイントの赤丸にカーソルを合わせると、「設定」「無効にする」が表示される</li>



<li>「条件」をチェックし「例:x==5」の欄に「i==50」を入力して条件を確定させる</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="822" height="172" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Newdebug_Break.png" alt="" class="wp-image-5191" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Newdebug_Break.png 822w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Newdebug_Break-300x63.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Newdebug_Break-768x161.png 768w" sizes="(max-width: 822px) 100vw, 822px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>条件の設定</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="844" height="302" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Newdebug_Break.png" alt="" class="wp-image-5192" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Newdebug_Break.png 844w, https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Newdebug_Break-300x107.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Newdebug_Break-768x275.png 768w" sizes="(max-width: 844px) 100vw, 844px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ブレークポイントの形が「条件付き」の形になる</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="817" height="129" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Newdebug_Break.png" alt="" class="wp-image-5193" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Newdebug_Break.png 817w, https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Newdebug_Break-300x47.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Newdebug_Break-768x121.png 768w" sizes="(max-width: 817px) 100vw, 817px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc5">ヒットカウント付きブレークポイント</span></h2>



<h3 class="wp-block-heading"><span id="toc6">ループ処理等で停止条件を複数指定できる</span></h3>



<p class="wp-block-paragraph">通常のブレークポイントは「毎回」停止しますがヒットカウント付きにすると、</p>



<ul class="wp-block-list">
<li>10回目だけ止める</li>



<li>50回目以降は毎回止める</li>



<li>3回目ごとに止める</li>
</ul>



<p class="wp-block-paragraph">といった制御が可能になる。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>大量ループの内、○○○○番目だけを停止したい</li>



<li>「3回目に必ず失敗する」など特定パターンを再現するために使う</li>



<li>同じ関数が複数回呼ばれるケースで、５回目だけ調査したい　　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>「条件」をチェックし「ヒットカウント」を選択</li>



<li>①の条件を選択</li>



<li>② ①の条件に対応する数値を入力</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="295" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Newdebug_Break-1024x295.png" alt="" class="wp-image-5209" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Newdebug_Break-1024x295.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Newdebug_Break-300x86.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Newdebug_Break-768x221.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Newdebug_Break.png 1087w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc7">アクション付きブレークポイント</span></h2>



<h3 class="wp-block-heading"><span id="toc8">プログラムを停止しないで出力ウィンドウにメッセージを表示</span></h3>



<p class="wp-block-paragraph">「アクション付きブレークポイント」は「ログ代わり」として活用できます。Console.WriteLine を入れずに確認したいときや、デバッグ中に処理を止めたくない場合に有効。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>毎回止めずに変数の状態ログを取りたい</li>



<li>ソースコードを書き換えずに、一時的にログを仕込んで調査したい場合</li>



<li>再現の難しいバグに対して、処理フローや変数値の流れを記録したい　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>ブレークポイント設定後 　→　「設定」でアクションをチェック</li>



<li>メッセージ表示欄に表示したいメッセージを入力</li>



<li>コード実行のチェックは外さない（外すと実行が停止する）</li>



<li>「閉じる」をクリックして確定</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="821" height="304" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Newdebug_Break.png" alt="" class="wp-image-5201" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Newdebug_Break.png 821w, https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Newdebug_Break-300x111.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Newdebug_Break-768x284.png 768w" sizes="(max-width: 821px) 100vw, 821px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc9">一度ヒットしたブレークポイントの無効化</span></h2>



<h3 class="wp-block-heading"><span id="toc10">ブレークポイントが一度だけ発動したら自動で無効化</span></h3>



<p class="wp-block-paragraph">最初の一度だけブレークし２回目以降はブレークしない機能。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>主な用途</strong>
<ul class="wp-block-list">
<li>初回だけ変数や状態を確認したい</li>



<li>テストデータの初回通過時だけ追いたい</li>



<li>再現性のあるバグに対して初回のみの挙動に注目して調査したい　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>ブレークポイント設定後 　→　「設定」で「一度ヒットしたブレークポイントを無効にする」をチェック</li>



<li>「閉じる」をクリックして確定</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="822" height="248" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Newdebug_Break.png" alt="" class="wp-image-5203" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Newdebug_Break.png 822w, https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Newdebug_Break-300x91.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Newdebug_Break-768x232.png 768w" sizes="(max-width: 822px) 100vw, 822px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc11">他のブレークポイントにヒットした場合のみ停止</span></h2>



<h3 class="wp-block-heading"><span id="toc12">他の指定したブレークポイントで停止したら有効となる</span></h3>



<p class="wp-block-paragraph">これは、<strong>指定した「別のブレークポイント(A)」が先にヒットした場合に限って、現在のブレークポイント(B)を有効にする</strong>という設定。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>ある関数を経由して別の処理が呼ばれたときだけ調べたい</li>



<li>複数の経路から呼ばれる共通処理で、特定経路のみ追いたい</li>



<li>特定の分岐を通ったあとの挙動だけ調査したい　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>別のブレークポイント(A)を設定</li>



<li>Aで停止した後で停止したいコードにブレークポイントを設定</li>



<li>「設定」で「次のブレークポイントにヒットした場合のみ有効にします」をチェック</li>



<li>次のブレークポイントにAを選択</li>



<li>「閉じる」をクリックして確定</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="831" height="328" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Newdebug_Break.png" alt="" class="wp-image-5205" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Newdebug_Break.png 831w, https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Newdebug_Break-300x118.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Newdebug_Break-768x303.png 768w" sizes="(max-width: 831px) 100vw, 831px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc13">関数ブレークポイント</span></h2>



<h3 class="wp-block-heading"><span id="toc14">指定した関数名の関数が呼び出されたら停止</span></h3>



<p class="wp-block-paragraph">関数名を指定してその関数に入ったときにブレークする機能。コード上で場所を探す必要がなく、対象関数の呼び出しを瞬時に捕まえることができる。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>呼び出し元が不明な関数を調べたい</li>



<li>オーバーロード関数の特定引数を追いたい</li>



<li>コードのリファクタリング時の影響調査　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>メニュー「デバック」→「ウィンドウ」→「ブレークポイント」でブレークポイントウィンドウを表示</li>



<li>メニュー「デバック」→「ブレークポイントの作成」→「関数のブレークポイント」</li>



<li>表示された入力ボックスに「関数名」やブレーク条件を入力して「OK」<br>→　「ブレークポイントウィンド」に関数名が表示される</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="664" height="180" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Newdebug_Break.png" alt="" class="wp-image-5212" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Newdebug_Break.png 664w, https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Newdebug_Break-300x81.png 300w" sizes="(max-width: 664px) 100vw, 664px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>関数のブレークポイント指定画面を表示</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="749" height="400" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Newdebug_Break.png" alt="" class="wp-image-5213" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Newdebug_Break.png 749w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Newdebug_Break-300x160.png 300w" sizes="(max-width: 749px) 100vw, 749px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ブレークする関数名とブレークの条件を指定</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="790" height="246" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Newdebug_Break.png" alt="" class="wp-image-5214" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Newdebug_Break.png 790w, https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Newdebug_Break-300x93.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Newdebug_Break-768x239.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ブレークポイントウィンドウに「ブレーク関数名称」とブレーク条件が表示される</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="850" height="295" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Newdebug_Break.png" alt="" class="wp-image-5215" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Newdebug_Break.png 850w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Newdebug_Break-300x104.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Newdebug_Break-768x267.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc15">ブレークポイントの無効化/有効化</span></h2>



<h3 class="wp-block-heading"><span id="toc16">ブレークポイントを一時無効にして再度有効にする</span></h3>



<p class="wp-block-paragraph"><strong>一時的にブレークポイントの動作をオン／オフ</strong>できる便利なデバッグ機能。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>用途例</strong>
<ul class="wp-block-list">
<li>複数のブレークポイントを切り替えて検証したい</li>



<li>デバッグの条件ごとに無効化したり有効にしたい　等 etc.</li>
</ul>
</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>設定手順</strong>
<ul class="wp-block-list">
<li>マウスをブレークポイントの赤丸に合わせ「無効にする」を選択<br>→　ブレークポイントが「無効」の形になり、条件が合致しても停止しなくなる</li>



<li>再度有効にしたい場合は、ブレークポイントにポインタを合わせ「有効にする」を選択</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="828" height="132" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Newdebug_Break.png" alt="" class="wp-image-5194" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Newdebug_Break.png 828w, https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Newdebug_Break-300x48.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Newdebug_Break-768x122.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ブレークポイントが「無効」の形になる</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="824" height="120" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Newdebug_Break.png" alt="" class="wp-image-5195" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Newdebug_Break.png 824w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Newdebug_Break-300x44.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Newdebug_Break-768x112.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>有効にする</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="826" height="122" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Newdebug_Break.png" alt="" class="wp-image-5196" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Newdebug_Break.png 826w, https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Newdebug_Break-300x44.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Newdebug_Break-768x113.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022】Git/GitHubを使用したソース管理（GitHubリモート編）</title>
		<link>https://www.kemmy-it.com/2025/05/26/visual_studio_github/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Mon, 26 May 2025 12:26:58 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=5067</guid>

					<description><![CDATA[前回はGitローカル編というタイトルで個人のソースコード管理について紹介しました。今回はチーム開発におけるソースコード管理について紹介します。 前回同様、Udemyで人気の「ピーコックアンダーソン氏」が作成した「Visu [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">前回は<a href="https://www.kemmy-it.com/2025/05/19/visual_studio_git/" data-type="link" data-id="https://www.kemmy-it.com/2025/05/19/visual_studio_git/">Gitローカル編</a>というタイトルで個人のソースコード管理について紹介しました。今回はチーム開発におけるソースコード管理について紹介します。</p>



<p class="wp-block-paragraph">前回同様、Udemyで人気の「ピーコックアンダーソン氏」が作成した「<a href="https://toyota-bodyjp.udemy.com/course/vsgithub/">VisualStudioでGit＆GitHubを使ってソースコードを管理する方法【C#】</a>」を参考にし、私見を交えながらの説明です。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 GitHubの役割</a></li><li><a href="#toc2" tabindex="0">GitHubを利用した開発の手順</a><ol><li><a href="#toc3" tabindex="0">GitHubに自分のアカウント登録する</a></li><li><a href="#toc4" tabindex="0">GitHubへのソースコード登録</a><ol><li><a href="#toc5" tabindex="0">GitHub リモートリポジトリの作成</a></li><li><a href="#toc6" tabindex="0">Visual&nbsp;Studioのアカウントを複数持っている場合</a></li><li><a href="#toc7" tabindex="0">GitHubでのリポジトリとソースの確認</a></li></ol></li></ol></li><li><a href="#toc8" tabindex="0">GitHub リモートリポジトリへのメンバー招待</a><ol><li><a href="#toc9" tabindex="0">招待者側の作業</a></li><li><a href="#toc10" tabindex="0">招待される（Kemmy-it）側の作業</a></li><li><a href="#toc11" tabindex="0">GitHub リモートリポジトリからのソースコード取得</a></li><li><a href="#toc12" tabindex="0">GitHub リモートリポジトリへのソースコード変更の反映</a></li><li><a href="#toc13" tabindex="0">他メンバーの変更内容を取得する</a></li><li><a href="#toc14" tabindex="0">競合の解決方法</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 GitHubの役割</span></h2>



<p class="wp-block-paragraph">GitHubはチーム開発におけるソースコード管理に適したサービスで、クラウド上でソースコードを管理・共有できるシステムです。</p>



<p class="wp-block-paragraph">各個人のソースコードをGitHubで管理する事により以下の事が可能となります。</p>



<ol class="wp-block-list">
<li><strong>チーム内各個人のソースコード履歴管理ができる（誰が・いつ・何を変更したか）</strong></li>



<li><strong>チームによる開発がスムーズに行える</strong></li>



<li><strong>クラウド上でソースコードを安全に保存できる</strong></li>



<li><strong>Web上でコードを閲覧・レビュー・コメントできる</strong></li>
</ol>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1017" height="277" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02.png" alt="" class="wp-image-5021" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02.png 1017w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02-300x82.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02-768x209.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">GitHubを利用した開発の手順</span></h2>



<h3 class="wp-block-heading"><span id="toc3">GitHubに自分のアカウント登録する</span></h3>



<ul class="wp-block-list">
<li>GitHub登録画面を表示<br><a href="https://github.co.jp/">開発者のためのプラットフォーム</a></li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「GitHubに登録する」ボタンをクリックして以下を入力
<ul class="wp-block-list">
<li>メールアドレス</li>



<li>パスワード</li>



<li>ユーザー名</li>



<li>あなたの国/地域</li>
</ul>
</li>



<li>質問に回答してロボットでない事を証明</li>



<li>「Create account」ボタンをクリック</li>



<li>Codeの入力
<ul class="wp-block-list">
<li>登録したメールアドレスに届いているメールを見てCodeを入力する</li>
</ul>
</li>



<li>「GitHubへのサインイン」<br>下記の「サインイン」画面が自動表示されるので必要事項を入力して「Sign in」をクリック</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="375" height="604" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_GitHub-1.png" alt="" class="wp-image-5078" style="width:282px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_GitHub-1.png 375w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_GitHub-1-186x300.png 186w" sizes="(max-width: 375px) 100vw, 375px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>GitHubのダッシュボードが表示されればアカウントの作成は完了</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="289" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_GitHub-1-1024x289.png" alt="" class="wp-image-5087" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_GitHub-1-1024x289.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_GitHub-1-300x85.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_GitHub-1-768x217.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_GitHub-1.png 1238w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc4">GitHubへのソースコード登録</span></h3>



<ul class="wp-block-list">
<li>下記の「加算」「減算」を行うC#プログラムを登録する</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="439" height="220" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_GitHub.png" alt="" class="wp-image-5084" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_GitHub.png 439w, https://www.kemmy-it.com/wp-content/uploads/2025/05/05_GitHub-300x150.png 300w" sizes="(max-width: 439px) 100vw, 439px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc5">GitHub リモートリポジトリの作成</span></h4>



<ul class="wp-block-list">
<li>メニュー「Git」→「Gitリポジトリの作成」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="650" height="209" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_GitHub.png" alt="" class="wp-image-5085" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_GitHub.png 650w, https://www.kemmy-it.com/wp-content/uploads/2025/05/06_GitHub-300x96.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「GitHub」を選択</li>



<li>アカウントで「GitHub」のアカウントを指定する
<ul class="wp-block-list">
<li>「GitHub」へのサインイン画面が表示されるのでサインインする</li>



<li>リポジトリ名は変更しても良いがこのままとする</li>



<li>表示範囲を「Private」にする
<ul class="wp-block-list">
<li>作成者と指定したメンバーのみが使用可能となる</li>



<li>「public」はインターネット上のユーザーがアクセス可能</li>



<li>「Internal」は同じEnterprise内の全メンバーがアクセス可能<br>無料版のでは利用できない</li>
</ul>
</li>
</ul>
</li>



<li>「作成とプッシュ」をクリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="850" height="650" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_GitHub.png" alt="" class="wp-image-5088" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_GitHub.png 850w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_GitHub-300x229.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_GitHub-768x587.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>メッセージも表示されますが、画面左下の「準備完了」をクリックしても「作成とプッシュ」が成功した事を確認できます</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="471" height="134" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_GitHub.png" alt="" class="wp-image-5090" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_GitHub.png 471w, https://www.kemmy-it.com/wp-content/uploads/2025/05/08_GitHub-300x85.png 300w" sizes="(max-width: 471px) 100vw, 471px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc6">Visual&nbsp;Studioのアカウントを複数持っている場合</span></h4>



<p class="wp-block-paragraph">私の場合「作成とプッシュ」をクリックすると、下記のメッセージボックスが表示されました。使用したい「アカウント」を選択して「Continue」をクリックすると処理は続行できましたが、原因として考えられるのは、</p>



<ul class="wp-block-list">
<li><strong>Visual&nbsp;Studioに複数アカウントが登録されている</strong></li>



<li><strong>Visual&nbsp;StudioとGitHubアカウントのリンクが不一致又は不完全</strong></li>
</ul>



<p class="wp-block-paragraph">Visual Studioのアカウントを調べてみると、「Kemmy-Git」とは別のアカウントで使用していました。Visual Studioを複数のアカウントで使用していたのが原因だったようです。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="418" height="385" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_GitHub.png" alt="" class="wp-image-5091" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_GitHub.png 418w, https://www.kemmy-it.com/wp-content/uploads/2025/05/09_GitHub-300x276.png 300w" sizes="(max-width: 418px) 100vw, 418px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc7">GitHubでのリポジトリとソースの確認</span></h4>



<p class="wp-block-paragraph">GitHubにサインインしてみると、「GitHub_Test_A」というリポジトリが「Private」で作成されており、「Form1.cs」のコードもプッシュされている事が確認できます。</p>



<ul class="wp-block-list">
<li>リポジトリ「GitHub_Test_A」</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="767" height="343" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_GitHub.png" alt="" class="wp-image-5093" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_GitHub.png 767w, https://www.kemmy-it.com/wp-content/uploads/2025/05/10_GitHub-300x134.png 300w" sizes="(max-width: 767px) 100vw, 767px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>公開範囲は「Private」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="945" height="363" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_GitHub.png" alt="" class="wp-image-5094" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_GitHub.png 945w, https://www.kemmy-it.com/wp-content/uploads/2025/05/11_GitHub-300x115.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/11_GitHub-768x295.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ソースの内容も確認できる</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="778" height="696" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_GitHub.png" alt="" class="wp-image-5095" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_GitHub.png 778w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_GitHub-300x268.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_GitHub-768x687.png 768w" sizes="(max-width: 778px) 100vw, 778px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc8">GitHub リモートリポジトリへのメンバー招待</span></h2>



<p class="wp-block-paragraph">本PCでC#プロジェクトを作成しGitHubのリモートリポジトリを作成しましたが、他のメンバーがGitHubからリポジトリ「GitHub_Test_A」を取り込む手順を紹介します。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc9">招待者側の作業</span></h3>



<ul class="wp-block-list">
<li>自分のアカウントでGitHubに入り、Settings タブの「Collaborators」クリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="896" height="313" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_GitHub.png" alt="" class="wp-image-5101" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_GitHub.png 896w, https://www.kemmy-it.com/wp-content/uploads/2025/05/13_GitHub-300x105.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/13_GitHub-768x268.png 768w" sizes="(max-width: 896px) 100vw, 896px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>Manage access の項目で、「Add people」をクリック</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="568" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-1024x568.png" alt="" class="wp-image-5103" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-1024x568.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-300x167.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-768x426.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-120x68.png 120w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub-160x90.png 160w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_GitHub.png 1133w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>検索欄に招待したいメンバーのアカウントを入力すると候補者が表示される</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="648" height="344" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_GitHub-1.png" alt="" class="wp-image-5106" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_GitHub-1.png 648w, https://www.kemmy-it.com/wp-content/uploads/2025/05/15_GitHub-1-300x159.png 300w" sizes="(max-width: 648px) 100vw, 648px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>メンバーを選択して「Add Kemmy-it」をクリックすると、「Kemmy-it」通知が届く</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="649" height="197" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_GitHub.png" alt="" class="wp-image-5107" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_GitHub.png 649w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_GitHub-300x91.png 300w" sizes="(max-width: 649px) 100vw, 649px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「 Kemmy-it」からの回答待ち状態</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="790" height="269" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/17_GitHub.png" alt="" class="wp-image-5109" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/17_GitHub.png 790w, https://www.kemmy-it.com/wp-content/uploads/2025/05/17_GitHub-300x102.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/17_GitHub-768x262.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc10">招待される（Kemmy-it）側の作業</span></h3>



<ul class="wp-block-list">
<li>通知を開く</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="851" height="292" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_GitHub.png" alt="" class="wp-image-5113" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_GitHub.png 851w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_GitHub-300x103.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_GitHub-768x264.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>ケミー-Gitからの招待通知を確認</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="852" height="423" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/102_GitHub.png" alt="" class="wp-image-5114" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/102_GitHub.png 852w, https://www.kemmy-it.com/wp-content/uploads/2025/05/102_GitHub-300x149.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/102_GitHub-768x381.png 768w" sizes="(max-width: 852px) 100vw, 852px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>通知を開いて「招待を承諾する」をクリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="538" height="495" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/103_GitHub.png" alt="" class="wp-image-5115" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/103_GitHub.png 538w, https://www.kemmy-it.com/wp-content/uploads/2025/05/103_GitHub-300x276.png 300w" sizes="(max-width: 538px) 100vw, 538px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>招待された「Kemmy-it」のGitHub上で、リポジトリ「GitHub-Test_A」が参照できるようになる</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="845" height="525" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/104_GitHub.png" alt="" class="wp-image-5116" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/104_GitHub.png 845w, https://www.kemmy-it.com/wp-content/uploads/2025/05/104_GitHub-300x186.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/104_GitHub-768x477.png 768w" sizes="(max-width: 845px) 100vw, 845px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc11">GitHub リモートリポジトリからのソースコード取得</span></h3>



<p class="wp-block-paragraph">招待された「Kemmy-it」のローカルPCには、「GitHub_Test_A」のソースがないので、GitHubからソースを取得します。</p>



<ul class="wp-block-list">
<li>Visual Sutudio 2022 を起動し「リポジトリのクローン」をクリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1012" height="288" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/105_GitHub.png" alt="" class="wp-image-5118" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/105_GitHub.png 1012w, https://www.kemmy-it.com/wp-content/uploads/2025/05/105_GitHub-300x85.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/105_GitHub-768x219.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">GitHubのどこから、ローカルPCのどこへクローンするかの設定を行います</p>



<ul class="wp-block-list">
<li>①「GiuHub」を選択</li>



<li>②自身のアカウント（招待された側）である事を確認</li>



<li>③クローンするリポジトリのURLを指定</li>



<li>④ローカルPCのクローンするフォルダを指定</li>



<li>⑤「クローン」ボタンをクリック</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="812" height="580" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/106_GitHub.png" alt="" class="wp-image-5119" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/106_GitHub.png 812w, https://www.kemmy-it.com/wp-content/uploads/2025/05/106_GitHub-300x214.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/106_GitHub-768x549.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>コンテンツに鍵マークの付いたリポジトリをローカルPCにクローンできました</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="369" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/107_GitHub-1024x369.png" alt="" class="wp-image-5121" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/107_GitHub-1024x369.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/107_GitHub-300x108.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/107_GitHub-768x277.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/107_GitHub.png 1069w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc12">GitHub リモートリポジトリへのソースコード変更の反映</span></h3>



<p class="wp-block-paragraph">Gitローカル環境ではソースを変更した後「コミット」すれば変更は反映されましたが、GitHubのリモートリポジトリに変更を適用させるには<span class="marker-under-red"><strong>更に「プ</strong></span><strong><span class="marker-under-red">ッシュ」</span></strong>という作業が必要です。</p>



<ul class="wp-block-list">
<li>ローカルリポジトリのソース変更（messageBox を追加）</li>



<li>メニュー「表示」→「Git変更」→「すべてをコミット」でコミット</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="852" height="505" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/109_GitHub.png" alt="" class="wp-image-5126" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/109_GitHub.png 852w, https://www.kemmy-it.com/wp-content/uploads/2025/05/109_GitHub-300x178.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/109_GitHub-768x455.png 768w" sizes="(max-width: 852px) 100vw, 852px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>メニュー「Git」→「ブランチの管理」を表示し「プッシュ」　</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="885" height="365" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/110_GitHub.png" alt="" class="wp-image-5129" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/110_GitHub.png 885w, https://www.kemmy-it.com/wp-content/uploads/2025/05/110_GitHub-300x124.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/110_GitHub-768x317.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>GitHubリモートリポジトリのソース内容に
<ul class="wp-block-list">
<li>「MessageBoxの追加」で変更したソースが反映されている</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="941" height="374" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/111_GitHub.png" alt="" class="wp-image-5130" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/111_GitHub.png 941w, https://www.kemmy-it.com/wp-content/uploads/2025/05/111_GitHub-300x119.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/111_GitHub-768x305.png 768w" sizes="(max-width: 941px) 100vw, 941px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>同期</strong>
<ul class="wp-block-list">
<li>「プッシュ」の右側にある「同期」は、「プル」と「プッシュ」を連続して実行する機能</li>
</ul>
</li>
</ul>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc13">他メンバーの変更内容を取得する</span></h3>



<p class="wp-block-paragraph">上記の変更内容を「Kemmy-it」が、自分のローカル環境に取り込む手順を紹介します。他のメンバーがソースを変更しているか確認「フェッチ」してから取り込み「プル」します。</p>



<ul class="wp-block-list">
<li>「Kemmy-it」側でVisual studio 2022を起動し「GitHub_Test_A」リポジトリを開く</li>



<li>メニュー「Git」→「ブランチの管理」でブランチの管理画面を表示</li>



<li>「フェッチ」をクリックしてソースに変更があるか確認<br>変更があると下記のように、受信(1)となり「MessageBoxの追加」の変更がある事が分かります</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="385" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/112_GitHub.png" alt="" class="wp-image-5132" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/112_GitHub.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/112_GitHub-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/112_GitHub-768x289.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>自分「Kemmy-it」のソースに変更内容を反映させる為、「プル」をクリックします<br>リポジトリが更新されたというメッセージと、「MessageBoxの追加」のコミットが「master」に反映された事が分かります</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="385" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/113_GitHub.png" alt="" class="wp-image-5133" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/113_GitHub.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/113_GitHub-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/113_GitHub-768x289.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「Kemmy-it」のソースを確認すると「MessageBox」のソースが追加されています。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="385" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/114_GitHub.png" alt="" class="wp-image-5134" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/114_GitHub.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/114_GitHub-300x113.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/114_GitHub-768x289.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<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>Kemmy-itのソースコードを下記の様に変更して、プッシュしておきます。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="843" height="266" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/115_GitHub.png" alt="" class="wp-image-5138" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/115_GitHub.png 843w, https://www.kemmy-it.com/wp-content/uploads/2025/05/115_GitHub-300x95.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/115_GitHub-768x242.png 768w" sizes="(max-width: 843px) 100vw, 843px" /></figure>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="785" height="243" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/116_GitHub.png" alt="" class="wp-image-5139" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/116_GitHub.png 785w, https://www.kemmy-it.com/wp-content/uploads/2025/05/116_GitHub-300x93.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/116_GitHub-768x238.png 768w" sizes="(max-width: 785px) 100vw, 785px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>Kemmy-Git側のソースコードを下記の様に変更し、コミットします</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="836" height="230" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/117_GitHub.png" alt="" class="wp-image-5143" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/117_GitHub.png 836w, https://www.kemmy-it.com/wp-content/uploads/2025/05/117_GitHub-300x83.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/117_GitHub-768x211.png 768w" sizes="(max-width: 836px) 100vw, 836px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「メッセージボックスのテキスト変更」がコミットされました。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="859" height="249" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/118_GitHub.png" alt="" class="wp-image-5144" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/118_GitHub.png 859w, https://www.kemmy-it.com/wp-content/uploads/2025/05/118_GitHub-300x87.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/118_GitHub-768x223.png 768w" sizes="(max-width: 859px) 100vw, 859px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>そのままプッシュすると下記のエラーがでます。<br>「ローカルブランチ」が「リモートブランチ」の背後にあるため、リモートリポジトリにプッシュできません。プッシュする前にプルすることによりブランチを更新して下さい。</li>
</ul>



<p class="wp-block-paragraph">つまり、自分がプルした後に「リモートブランチ」に変更がされている為、プルしてからプッシュして下さいという意味です。「キャンセル」でエラーを閉じます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="425" height="150" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/119_GitHub.png" alt="" class="wp-image-5146" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/119_GitHub.png 425w, https://www.kemmy-it.com/wp-content/uploads/2025/05/119_GitHub-300x106.png 300w" sizes="(max-width: 425px) 100vw, 425px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">それでは、プルしてみます。</p>



<p class="wp-block-paragraph">プルすると、「GitHub_Test_A」リポジトリで競合が発生しました。競合を解決してから結果をコミットして下さい。というエラーが表示されます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="884" height="361" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/120_GitHub.png" alt="" class="wp-image-5148" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/120_GitHub.png 884w, https://www.kemmy-it.com/wp-content/uploads/2025/05/120_GitHub-300x123.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/120_GitHub-768x314.png 768w" sizes="(max-width: 884px) 100vw, 884px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">競合が解決していない箇所を調べます。「競合を解決」のリンクをクリックすると、Git変更画面に[両方変更]というクラスが表示されるので、そのクラスをクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="944" height="317" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/121_GitHub.png" alt="" class="wp-image-5150" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/121_GitHub.png 944w, https://www.kemmy-it.com/wp-content/uploads/2025/05/121_GitHub-300x101.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/121_GitHub-768x258.png 768w" sizes="(max-width: 944px) 100vw, 944px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">GitHub側と、自分の変更内容が表示されるので、</p>



<ul class="wp-block-list">
<li>①正しい変更をチェックする（両方でも良いがチェックの早いコードが上になる）</li>



<li>②選択の結果を確認して</li>



<li>③マージする</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="934" height="508" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/122_GitHub.png" alt="" class="wp-image-5151" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/122_GitHub.png 934w, https://www.kemmy-it.com/wp-content/uploads/2025/05/122_GitHub-300x163.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/122_GitHub-768x418.png 768w" sizes="(max-width: 934px) 100vw, 934px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">マージされた結果を確認したら、「すべてをコミット」</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="256" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/123_GitHub-1024x256.png" alt="" class="wp-image-5152" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/123_GitHub-1024x256.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/123_GitHub-300x75.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/123_GitHub-768x192.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/123_GitHub.png 1056w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">「コミット」しただけなので、GitHub上のソースは変更されていません。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="961" height="370" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/124_GitHub.png" alt="" class="wp-image-5153" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/124_GitHub.png 961w, https://www.kemmy-it.com/wp-content/uploads/2025/05/124_GitHub-300x116.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/124_GitHub-768x296.png 768w" sizes="(max-width: 961px) 100vw, 961px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">その後、「競合をマージした結果」を「プッシュ」すると、変更内容がGitHubに反映されます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="961" height="370" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/125_GitHub.png" alt="" class="wp-image-5154" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/125_GitHub.png 961w, https://www.kemmy-it.com/wp-content/uploads/2025/05/125_GitHub-300x116.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/125_GitHub-768x296.png 768w" sizes="(max-width: 961px) 100vw, 961px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">【参考文献】</p>



<figure class="wp-block-image size-full is-resized"><a rel=" noopener" href="https://www.udemy.com/course/vsgithub/?utm_source=adwords&amp;utm_medium=udemyads&amp;utm_campaign=Search_DSA_Beta_Prof_la.JA_cc.JP&amp;campaigntype=Search&amp;portfolio=Japan&amp;language=JA&amp;product=Course&amp;test=&amp;audience=DSA&amp;topic=&amp;priority=Beta&amp;utm_content=deal4584&amp;utm_term=_._ag_167497668918_._ad_711539479618_._kw__._de_c_._dm__._pl__._ti_dsa-2344929247843_._li_9053261_._pd__._&amp;matchtype=&amp;gad_source=1&amp;gad_campaignid=21648487903&amp;gbraid=0AAAAADROdO2doticash1QVh9AdyB6_TMu&amp;gclid=CjwKCAjwravBBhBjEiwAIr30VDVeNJ_aCJSo3QuDEZG0_N-FcoTewUjDGZjKGwLiLM8QS5NJp3VoPRoCdkoQAvD_BwE&amp;couponCode=CP130525JP" target="_blank"><img decoding="async" width="748" height="122" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git.png" alt="" class="wp-image-5055" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git.png 748w, https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git-300x49.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></a></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Visual Studio 2022)】Git/GitHubを使用したソース管理（Gitローカル編）</title>
		<link>https://www.kemmy-it.com/2025/05/19/visual_studio_git/</link>
		
		<dc:creator><![CDATA[Kemmy]]></dc:creator>
		<pubDate>Mon, 19 May 2025 13:02:15 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.kemmy-it.com/?p=4961</guid>

					<description><![CDATA[Git（ギット）は、オープンソースの分散型バージョン管理システムです。 ソフトウェア開発の現場で広く使われており、コードやファイルの変更履歴を管理し、複数人での共同開発を効率化します。 本ブログは、Udemyで人気の「ピ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Git</strong>（ギット）は、オープンソースの<strong>分散型バージョン管理システム</strong>です。</p>



<p class="wp-block-paragraph">ソフトウェア開発の現場で広く使われており、コードやファイルの<strong>変更履歴を管理</strong>し、複数人での共同開発を効率化します。</p>



<p class="wp-block-paragraph">本ブログは、Udemyで人気の「ピーコックアンダーソン氏」が作成した、「<a href="https://toyota-bodyjp.udemy.com/course/vsgithub/">VisualStudioでGit＆GitHubを使ってソースコードを管理する方法【C#】</a>」を参考にし、自分なりにGitを操作した手順と少しの考察を紹介します。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail 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">Visual Studio 2022 Gitによるバージョン管理の基本手順</a></li><li><a href="#toc2" tabindex="0">Gitのインストールと初期設定</a><ol><li><a href="#toc3" tabindex="0">Gitのインストール</a></li></ol></li><li><a href="#toc4" tabindex="0">ローカルリポジトリ　Git使用手順</a><ol><li><a href="#toc5" tabindex="0">ローカル Gitリポジトリの作成</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><ol><li><a href="#toc10" tabindex="0">コミットの内容確認</a></li></ol></li><li><a href="#toc11" tabindex="0">コミット後の取り消し</a><ol><li><a href="#toc12" tabindex="0">「Bの二乗」のコードを残したままコミット取り消す</a></li><li><a href="#toc13" tabindex="0">「Bの二乗」のコードも削除してコミット取り消し</a></li></ol></li></ol></li><li><a href="#toc14" tabindex="0">ブランチの利用</a><ol><li><a href="#toc15" tabindex="0">ブランチの目的</a></li><li><a href="#toc16" tabindex="0">ブランチの作成</a></li><li><a href="#toc17" tabindex="0">ブランチのコード変更とmasterの状態</a></li><li><a href="#toc18" tabindex="0">ブランチの統合</a><ol><li><a href="#toc19" tabindex="0">フォームの統合</a></li></ol></li><li><a href="#toc20" tabindex="0">ローカルブランチの削除</a><ol><li><a href="#toc21" tabindex="0">ブランチ「Git_Test_A_3」の削除</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio 2022 Gitによるバージョン管理の基本手順</span></h2>



<ol class="wp-block-list">
<li><strong>ローカルリポジトリの作成</strong><br>各自のパソコン内に、ソースとソースの変更履歴を保存する領域（ローカルリポジトリ）を作成する<br><br></li>



<li><strong>変更履歴のコミット</strong><br>変更履歴をローカルリポジトリ内のに記録（コミット）する<br><br></li>



<li><strong>ブランチの作成（必要な場合）</strong><br>新機能を追加する場合等、変更履歴の流れを分岐させ、上手くいけばブランチを統合（マージ）し、うまくいかない場合はブランチを切り捨てる<br><br></li>



<li><strong>各自のリポジトリを同期する</strong>
<ul class="wp-block-list">
<li>GitHub上に各自がアクセスできる「リモートリポジトリ」を作成</li>



<li>各自が「リモートリポジトリ」へ変更をプッシュし、且つ「リモートリポジトリ」からプルしてローカルリポジトリを同期させる<br><br></li>
</ul>
</li>



<li><strong>リベースやリバートで履歴を整理する</strong>
<ul class="wp-block-list">
<li><strong>リベース</strong>
<ul class="wp-block-list">
<li>変更履歴を直線的に保つためコミット履歴を再整理します。</li>
</ul>
</li>



<li><strong>リバート</strong>
<ul class="wp-block-list">
<li>新しいコミットを追加することで履歴を「逆転」させ、特定の変更を無効にします。リセットとは異なり「逆転」前の履歴も保持されます。<br><br></li>
</ul>
</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="1017" height="277" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02.png" alt="" class="wp-image-5021" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02.png 1017w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02-300x82.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/01_VS_Git02-768x209.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc2">Gitのインストールと初期設定</span></h2>



<h3 class="wp-block-heading"><span id="toc3">Gitのインストール</span></h3>



<ul class="wp-block-list">
<li><strong>Visual Studio を「コードなしで続行」</strong></li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="890" height="625" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Git.png" alt="" class="wp-image-4972" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Git.png 890w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Git-300x211.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/02_VS_Git-768x539.png 768w" sizes="(max-width: 890px) 100vw, 890px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>メニューの「ツール」→「ツールと機能を取得」</strong></li>



<li><strong>「個別コンポーネント」タブで Git を検索し「Git for Windows」にチェック</strong></li>



<li><strong>「変更ボタン」をクリックしてインストール</strong></li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="512" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Git-1-1024x512.png" alt="" class="wp-image-4977" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Git-1-1024x512.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Git-1-300x150.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Git-1-768x384.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/03_VS_Git-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>Gitのインストール確認</strong><br>コマンドプロンプトで、「git &#8211;version」と入力しバージョン番号が表示されればOK</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="997" height="348" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/04_VS_Git.png" alt="" class="wp-image-4978" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/04_VS_Git.png 997w, https://www.kemmy-it.com/wp-content/uploads/2025/05/04_VS_Git-300x105.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/04_VS_Git-768x268.png 768w" sizes="(max-width: 997px) 100vw, 997px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc4">ローカルリポジトリ　Git使用手順</span></h2>



<ul class="wp-block-list">
<li><strong>使用環境</strong>
<ul class="wp-block-list">
<li>Windows 10 Pro　2009</li>



<li>Visual Studio Community 2022　17.14.0 </li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>簡単なC# Windows Formアプリ「Git_Test_A」(.NET Windows)を作成して手順を説明します</strong>
<ul class="wp-block-list">
<li><strong>サンプルプログラム</strong><br>入力欄A、Bに数値を入力し「加算」又は「減算」ボタンをクリックしたら結果を「回答欄」に表示</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="477" height="226" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Git.png" alt="" class="wp-image-4983" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Git.png 477w, https://www.kemmy-it.com/wp-content/uploads/2025/05/05_VS_Git-300x142.png 300w" sizes="(max-width: 477px) 100vw, 477px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc5">ローカル Gitリポジトリの作成</span></h3>



<ul class="wp-block-list">
<li>メニュー「Git」→「Gitリポジトリの作成」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="909" height="450" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Git.png" alt="" class="wp-image-4985" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Git.png 909w, https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Git-300x149.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/06_VS_Git-768x380.png 768w" sizes="(max-width: 909px) 100vw, 909px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「ローカルのみ」を選択し「作成」ボタンをクリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="849" height="650" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Git.png" alt="" class="wp-image-4986" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Git.png 849w, https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Git-300x230.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/08_VS_Git-768x588.png 768w" sizes="(max-width: 849px) 100vw, 849px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>画面左下の「NuGetパッケージをクリック」して「正常に作成されました」のメッセージが表示されれは作成は成功</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="910" height="226" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Git.png" alt="" class="wp-image-4984" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Git.png 910w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Git-300x75.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/07_VS_Git-768x191.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>Gitに管理されている項目には、キーマークが付く</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="621" height="341" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Git.png" alt="" class="wp-image-4987" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Git.png 621w, https://www.kemmy-it.com/wp-content/uploads/2025/05/09_VS_Git-300x165.png 300w" sizes="(max-width: 621px) 100vw, 621px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc6">変更内容の確認</span></h3>



<ul class="wp-block-list">
<li>ソースを変更したコンテンツには&#x2714;マークが付いて変更の差分を確認できる
<ul class="wp-block-list">
<li>掛け算のコードを追加</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="657" height="434" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Git.png" alt="" class="wp-image-4988" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Git.png 657w, https://www.kemmy-it.com/wp-content/uploads/2025/05/10_VS_Git-300x198.png 300w" sizes="(max-width: 657px) 100vw, 657px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>差分の表示</strong><br>変更されたコンテンツを右クリック⇀「Git」→「未変更のものと比較」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="683" height="510" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Git-1.png" alt="" class="wp-image-4990" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Git-1.png 683w, https://www.kemmy-it.com/wp-content/uploads/2025/05/11_VS_Git-1-300x224.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>左側が変更前、右側が変更後</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="956" height="242" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Git.png" alt="" class="wp-image-4991" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Git.png 956w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Git-300x76.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/12_VS_Git-768x194.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc7">コミット前の変更内容取り消し</span></h3>



<ul class="wp-block-list">
<li>サンプルプログラムに「Aの二乗」を追加したが、不要なので変更を取り消す
<ul class="wp-block-list">
<li>取り消し前</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="229" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Git-1024x229.png" alt="" class="wp-image-4996" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Git-1024x229.png 1024w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Git-300x67.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Git-768x172.png 768w, https://www.kemmy-it.com/wp-content/uploads/2025/05/16_VS_Git.png 1049w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>①「Form1.cs」を右クリック ⇀ ②「Git」→「変更を元に戻す」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="749" height="391" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/17_VS_Git.png" alt="" class="wp-image-4997" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/17_VS_Git.png 749w, https://www.kemmy-it.com/wp-content/uploads/2025/05/17_VS_Git-300x157.png 300w" sizes="(max-width: 749px) 100vw, 749px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><strong>取り消し後</strong><br>変更コンテンツの&#x2714;マークも消えている</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="806" height="314" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/18_VS_Git.png" alt="" class="wp-image-4998" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/18_VS_Git.png 806w, https://www.kemmy-it.com/wp-content/uploads/2025/05/18_VS_Git-300x117.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/18_VS_Git-768x299.png 768w" sizes="(max-width: 806px) 100vw, 806px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc8">変更内容の確定　コミット</span></h3>



<ul class="wp-block-list">
<li>メニュー①「表示」→②「Git変更」</li>



<li>③に変更されたコンテンツが表示されるので確認</li>



<li>④に変更内容を入力</li>



<li>⑤「全てをコミット」ボタンでコミット</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="824" height="400" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Git.png" alt="" class="wp-image-4992" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Git.png 824w, https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Git-300x146.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/13_VS_Git-768x373.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc9">コミットの確認</span></h3>



<ul class="wp-block-list">
<li>メニュー①「表示」→②「Gitリポジトリ」をクリック<br>③のコミットの履歴が表示される。プロジェクトを作成してから「掛け算の追加」と「割り算の追加」がコミットされているのが確認できる。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="990" height="307" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Git.png" alt="" class="wp-image-4994" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Git.png 990w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Git-300x93.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/14_VS_Git-768x238.png 768w" sizes="(max-width: 990px) 100vw, 990px" /></figure>



<div style="height:61px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc10">コミットの内容確認</span></h4>



<p class="wp-block-paragraph">コミットの履歴で、「割り算の追加」の青い〇をクリックすると、変更内容が確認できる。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="903" height="299" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Git.png" alt="" class="wp-image-4995" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Git.png 903w, https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Git-300x99.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/15_VS_Git-768x254.png 768w" sizes="(max-width: 903px) 100vw, 903px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc11">コミット後の取り消し</span></h3>



<p class="wp-block-paragraph">サンプルプログラムに「Aの二乗」と「Bの二乗」をコミットした後、「Aの二乗」までに戻りたい場合</p>



<ul class="wp-block-list">
<li>メニュー「表示」→「Gitリポジトリ」で現在のコミット状態を表示</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="887" height="245" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/19_VS_Git.png" alt="" class="wp-image-5001" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/19_VS_Git.png 887w, https://www.kemmy-it.com/wp-content/uploads/2025/05/19_VS_Git-300x83.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/19_VS_Git-768x212.png 768w" sizes="(max-width: 887px) 100vw, 887px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc12">「Bの二乗」のコードを残したままコミット取り消す</span></h4>



<ul class="wp-block-list">
<li>「Aの二乗」を右クリック⇀「リセット」→「変更を保持」</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="724" height="273" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/20_VS_Git.png" alt="" class="wp-image-5002" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/20_VS_Git.png 724w, https://www.kemmy-it.com/wp-content/uploads/2025/05/20_VS_Git-300x113.png 300w" sizes="(max-width: 724px) 100vw, 724px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「Bの二乗」のコミットは消えたがソース変更の&#x2714;は付いており、「Forms.cs」を確認すると「Bの二乗」のコードは残っている。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="883" height="252" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/21_VS_Git.png" alt="" class="wp-image-5003" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/21_VS_Git.png 883w, https://www.kemmy-it.com/wp-content/uploads/2025/05/21_VS_Git-300x86.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/21_VS_Git-768x219.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="656" height="312" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/22_VS_Git.png" alt="" class="wp-image-5004" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/22_VS_Git.png 656w, https://www.kemmy-it.com/wp-content/uploads/2025/05/22_VS_Git-300x143.png 300w" sizes="(max-width: 656px) 100vw, 656px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc13">「Bの二乗」のコードも削除してコミット取り消し</span></h4>



<ul class="wp-block-list">
<li>再度「Bの二乗」をコミット</li>



<li>「Aの二乗」リポジトリを右クリック⇀「リセット」→「変更を削除」</li>
</ul>



<p class="wp-block-paragraph">「Bの二乗」のコミット・ソース変更の&#x2714;・「Bの二乗」のコードが全て削除された。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="929" height="278" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/23_VS_Git.png" alt="" class="wp-image-5005" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/23_VS_Git.png 929w, https://www.kemmy-it.com/wp-content/uploads/2025/05/23_VS_Git-300x90.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/23_VS_Git-768x230.png 768w" sizes="(max-width: 929px) 100vw, 929px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><span id="toc14">ブランチの利用</span></h2>



<h3 class="wp-block-heading"><span id="toc15">ブランチの目的</span></h3>



<p class="wp-block-paragraph">ブランチは「master（本流）」に影響を与えずに、枝分かれして作業する為に作成します。主な目的は、</p>



<ol class="wp-block-list">
<li><strong>機能追加や修正を独立して行う</strong></li>



<li><strong>バグ修正やホットフィックス</strong></li>



<li><strong>同時に異なる機能や修正を開発する</strong></li>



<li><strong>長期的なプロジェクト管理</strong></li>



<li><strong>実験的な機能をテスト</strong>　etc.</li>
</ol>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc16">ブランチの作成</span></h3>



<p class="wp-block-paragraph">最初は「master」しかないので、「master」からの分岐になります。</p>



<ul class="wp-block-list">
<li><strong>作成手順</strong>
<ul class="wp-block-list">
<li>①「master」のどのコミットからブランチするのか指定</li>



<li>②メニュー「Git」→「新しいブランチ」→「新しいブランチの作成」→ ダイアログ表示</li>



<li>③「ブランチ名」を入力</li>



<li>④「ブランチのチェックアウト」のチェックを確認
<ul class="wp-block-list">
<li>「ブランチのチェックアウト」のチェックが入っていないとブランチ作成後、新しいブランチに分岐できない</li>
</ul>
</li>



<li>⑤「作成」をクリック</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="733" height="476" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/24_VS_Git02.png" alt="" class="wp-image-5026" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/24_VS_Git02.png 733w, https://www.kemmy-it.com/wp-content/uploads/2025/05/24_VS_Git02-300x195.png 300w" sizes="(max-width: 733px) 100vw, 733px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">コミット「割り算の追加」からブランチ「Git_Test_A_2」が作成されました。現在どのブランチを操作しているかは、画面右下からも確認できます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="879" height="376" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/25_VS_Git01.png" alt="" class="wp-image-5027" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/25_VS_Git01.png 879w, https://www.kemmy-it.com/wp-content/uploads/2025/05/25_VS_Git01-300x128.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/25_VS_Git01-768x329.png 768w" sizes="(max-width: 879px) 100vw, 879px" /></figure>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc17">ブランチのコード変更とmasterの状態</span></h3>



<p class="wp-block-paragraph">ブランチ「Git_Test_A_2」のコードを変更し、「master」に影響がない事を確認します。</p>



<ul class="wp-block-list">
<li>各計算ボタンをクリックした時に「ブランチ名」を表示する変更を加え、コミット</li>
</ul>



<p class="wp-block-paragraph">■ブランチ「Git_Test_A_2」のコード</p>



<figure class="wp-block-image size-full"><img decoding="async" width="958" height="465" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git.png" alt="" class="wp-image-5036" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git.png 958w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-300x146.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-768x373.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「master」にはブランチ「Git_Test_A_2」のコード内容が反映されていない。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1018" height="535" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/28_VS_Git.png" alt="" class="wp-image-5031" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/28_VS_Git.png 1018w, https://www.kemmy-it.com/wp-content/uploads/2025/05/28_VS_Git-300x158.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/28_VS_Git-768x404.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc18">ブランチの統合</span></h3>



<p class="wp-block-paragraph"><strong>ブランチの統合例として、以下の要件で統合してみます。</strong></p>



<ol class="wp-block-list">
<li>ブランチ「Git_Test_A_2」の「割り算の追加」からブランチ「Git_Test_A_３」を作成</li>



<li>ブランチ「Git_Test_A_３」の各演算に「ブランチ「Git_Test_A_３」実行」のメッセージボックスを追加</li>



<li>ブランチ「Git_Test_A_2」にブランチ「Git_Test_A_３」を統合する</li>
</ol>



<p class="wp-block-paragraph">■ブランチ「Git_Test_A_３」</p>



<figure class="wp-block-image size-full"><img decoding="async" width="958" height="505" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/100_VS_Git.png" alt="" class="wp-image-5039" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/100_VS_Git.png 958w, https://www.kemmy-it.com/wp-content/uploads/2025/05/100_VS_Git-300x158.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/100_VS_Git-768x405.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>「ブランチ「Git_Test_A_３」加算実行」のメッセージボックスを追加</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="958" height="505" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-1.png" alt="" class="wp-image-5040" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-1.png 958w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-1-300x158.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/101_VS_Git-1-768x405.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>ブランチの統合手順</strong></p>



<ul class="wp-block-list">
<li>①統合先のブランチ「Git_Test_A_2」を表示</li>



<li>②統合するブランチ「Git_Test_A_3」をリポジトリ画面で右クリック</li>



<li>③「’Git_Test_A_3’を’Git_Test_A_2’にマージする」をクリック</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="965" height="450" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/30_VS_Git.png" alt="" class="wp-image-5035" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/30_VS_Git.png 965w, https://www.kemmy-it.com/wp-content/uploads/2025/05/30_VS_Git-300x140.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/30_VS_Git-768x358.png 768w" sizes="(max-width: 965px) 100vw, 965px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">ブランチ「Git_Test_A_3」でコミットした変更が、「Git_Test_A_２」に表示され、統合された。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="958" height="505" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/103_VS_Git.png" alt="" class="wp-image-5041" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/103_VS_Git.png 958w, https://www.kemmy-it.com/wp-content/uploads/2025/05/103_VS_Git-300x158.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/103_VS_Git-768x405.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">ブランチ「Git_Test_A_2」ソースコード。「Git_Test_A_3」で追加したコードが統合されている。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="959" height="504" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/104_VS_Git.png" alt="" class="wp-image-5042" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/104_VS_Git.png 959w, https://www.kemmy-it.com/wp-content/uploads/2025/05/104_VS_Git-300x158.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/104_VS_Git-768x404.png 768w" sizes="(max-width: 959px) 100vw, 959px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc19">フォームの統合</span></h4>



<p class="wp-block-paragraph">フォームの統合は可能ですが、マージの競合が発生し解決する事が難しい場合もあります。その理由としては、</p>



<ul class="wp-block-list">
<li><strong>フォームの構造が異なる</strong>
<ul class="wp-block-list">
<li>マージ時に<code>.Designer.cs</code>ファイルの<strong>自動生成コード</strong>が破損しているケースが多い</li>
</ul>
</li>



<li><strong>手動編集が混在</strong>
<ul class="wp-block-list">
<li>WinFormsのデザイナからではなく、手動でコードを変更した場合に競合が発生しやすい</li>
</ul>
</li>



<li><strong>Visual Studioのキャッシュ問題</strong></li>



<li><strong><code>.Designer.cs</code>ファイルは自動生成コードのため、手動での解決が難しい</strong></li>
</ul>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">※私の場合、他のプログラムで「GitHub Copilot」の力を借りて何とか統合する事ができました。</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><span id="toc20">ローカルブランチの削除</span></h3>



<ul class="wp-block-list">
<li><strong>ブランチ削除の前提</strong>
<ul class="wp-block-list">
<li><strong>現在使用していないブランチ</strong>であること（チェックアウトしていない）。</li>



<li><strong>マージが完了している</strong>こと（削除後に復元が困難なため）。</li>



<li><strong>ローカルとリモート</strong>では異なる操作が必要です</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><span id="toc21">ブランチ「Git_Test_A_3」の削除</span></h4>



<ul class="wp-block-list">
<li><strong>手順</strong>
<ul class="wp-block-list">
<li><strong>ブランチ管理ウィンドウ</strong>を表示します。</li>



<li><strong>削除したいブランチを右クリック</strong></li>



<li><strong>[削除] を選択</strong></li>



<li><strong>確認ダイアログが表示</strong>されるので、「OK」をクリックします。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="916" height="471" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/105_VS_Git.png" alt="" class="wp-image-5046" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/105_VS_Git.png 916w, https://www.kemmy-it.com/wp-content/uploads/2025/05/105_VS_Git-300x154.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/105_VS_Git-768x395.png 768w" sizes="(max-width: 916px) 100vw, 916px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="916" height="471" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/106_VS_Git.png" alt="" class="wp-image-5047" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/106_VS_Git.png 916w, https://www.kemmy-it.com/wp-content/uploads/2025/05/106_VS_Git-300x154.png 300w, https://www.kemmy-it.com/wp-content/uploads/2025/05/106_VS_Git-768x395.png 768w" sizes="(max-width: 916px) 100vw, 916px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">【参考文献】</p>



<figure class="wp-block-image size-full is-resized"><a rel=" noopener" href="https://www.udemy.com/course/vsgithub/?utm_source=adwords&amp;utm_medium=udemyads&amp;utm_campaign=Search_DSA_Beta_Prof_la.JA_cc.JP&amp;campaigntype=Search&amp;portfolio=Japan&amp;language=JA&amp;product=Course&amp;test=&amp;audience=DSA&amp;topic=&amp;priority=Beta&amp;utm_content=deal4584&amp;utm_term=_._ag_167497668918_._ad_711539479618_._kw__._de_c_._dm__._pl__._ti_dsa-2344929247843_._li_9053261_._pd__._&amp;matchtype=&amp;gad_source=1&amp;gad_campaignid=21648487903&amp;gbraid=0AAAAADROdO2doticash1QVh9AdyB6_TMu&amp;gclid=CjwKCAjwravBBhBjEiwAIr30VDVeNJ_aCJSo3QuDEZG0_N-FcoTewUjDGZjKGwLiLM8QS5NJp3VoPRoCdkoQAvD_BwE&amp;couponCode=CP130525JP" target="_blank"><img decoding="async" width="748" height="122" src="https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git.png" alt="" class="wp-image-5055" style="width:840px;height:auto" srcset="https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git.png 748w, https://www.kemmy-it.com/wp-content/uploads/2025/05/200_VS_Git-300x49.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></a></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">次回、<a href="https://www.kemmy-it.com/2025/05/26/visual_studio_github/" data-type="link" data-id="https://www.kemmy-it.com/2025/05/26/visual_studio_github/">GitHubリモート編</a>をお届けします。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
