<?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>vscode - まったり勉強ノート</title>
	<atom:link href="https://www.mattari-benkyo-note.com/tag/vscode/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mattari-benkyo-note.com</link>
	<description>shuの日々の勉強まとめ</description>
	<lastBuildDate>Sun, 05 Jan 2025 12:02:50 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
<site xmlns="com-wordpress:feed-additions:1">189243286</site>	<item>
		<title>AIを使ったソフトウェア開発の書籍まとめ(2025/1版)</title>
		<link>https://www.mattari-benkyo-note.com/2025/01/06/ai_software_dev_book_review/</link>
					<comments>https://www.mattari-benkyo-note.com/2025/01/06/ai_software_dev_book_review/#respond</comments>
		
		<dc:creator><![CDATA[Shuji Suzuki (shu)]]></dc:creator>
		<pubDate>Sun, 05 Jan 2025 23:30:00 +0000</pubDate>
				<category><![CDATA[書評]]></category>
		<category><![CDATA[langchain]]></category>
		<category><![CDATA[llm]]></category>
		<category><![CDATA[vscode]]></category>
		<category><![CDATA[書籍]]></category>
		<guid isPermaLink="false">https://www.mattari-benkyo-note.com/?p=3121</guid>

					<description><![CDATA[<p>あけましておめでとうございます。今年も読んだ本や勉強したことのまとめを記事にして、少しでも皆さんのお役にたてればと思っていますので、よろしくお願いいたします。 さて、新年一発目の記事はAIを使ったソフトウェア開発の本を3 [&#8230;]</p>
<p>The post <a href="https://www.mattari-benkyo-note.com/2025/01/06/ai_software_dev_book_review/">AIを使ったソフトウェア開発の書籍まとめ(2025/1版)</a> first appeared on <a href="https://www.mattari-benkyo-note.com">まったり勉強ノート</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>あけましておめでとうございます。今年も読んだ本や勉強したことのまとめを記事にして、少しでも皆さんのお役にたてればと思っていますので、よろしくお願いいたします。</p>



<p>さて、新年一発目の記事はAIを使ったソフトウェア開発の本を3冊読んだのでまとめて紹介しようと思います。</p>



<p>2024年はAIの実応用が様々な分野で出始めてきた印象を持っています。その中でもソフトウェア開発は、使い方のノウハウや各種ツールがいろいろリリースされて、これからどんどんAIを使ってソフトウェア開発がされていくんだろうなと誰もが思っているかと思います。</p>



<p>ただ、みなさん、実際にAIを使ってソフトウェア開発をどれくらいしているでしょうか？私も昨年末までは簡単にはGitHub Copilotを仕事や趣味で簡単に使っている程度でAIを使いこなしてソフトウェア開発をしている！と自信を持っていえる状態ではありませんでした。</p>



<p>このため、年末年始の休みはいい機会ということで、AIを活用したソフトウェア開発について学べる本をいくつか読みました。今回は読んだ本のうち３冊をまとめて紹介しようと思います。</p>



<h2 class="wp-block-heading">生成AI時代の新プログラミング実践ガイド Pythonで学ぶGPTとCopilotの活用ベストプラクティス</h2>


		<div class="pochipp-box"
			data-id="3118"
			data-img="l"
			data-lyt-pc="dflt"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="none"
			 data-cvkey="7299040b"		>
							<div class="pochipp-box__image">
					<a href="https://www.amazon.co.jp/dp/B0CTT8QKHR?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						<img decoding="async" src="https://m.media-amazon.com/images/I/51+2RXGDUBL._SL500_.jpg" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://www.amazon.co.jp/dp/B0CTT8QKHR?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						生成AI時代の新プログラミング実践ガイド Pythonで学ぶGPTとCopilotの活用ベストプラクティス					</a>
				</div>

									<div class="pochipp-box__info">著:松本直樹</div>
				
				
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://www.amazon.co.jp/dp/B0CTT8QKHR?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazon					</span>
									</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://hb.afl.rakuten.co.jp/hgc/39c5c75e.b3799909.39c5c75f.e5fd5e7d/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17725382%2F%3Frafcid%3Dwsc_i_is_1074984852215714305&#038;m=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17725382%2F%3Frafcid%3Dwsc_i_is_1074984852215714305" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場					</span>
									</a>
			</div>
											</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<p>GitHub Copilot以外にもChatGPTやOpenAI API、LangChainなど、幅広いAI活用法について紹介している本で、GitHub Copilot部分に関しては実際にwebアプリケーション開発の例なんかも載っていてわりと活用イメージをすぐに持てる本です。</p>



<p>この本の特徴を簡単にまとめると以下の通りです。</p>



<ul class="wp-block-list">
<li><strong>GitHub Copilot以外の内容も充実</strong><br>ChatGPTやOpenAI API、LangChainなどの使い方も説明されていて、AI全般に関する知識を獲得できます。ただ、GitHub Copilotだけを詳しく知りたいと思っている場合は思っていたものと違うという印象をもつかもしれません。</li>



<li><strong>GitHub CopilotとChatGPTを使った開発例がいい</strong><br>例としてGitHub Copilotの簡単な機能紹介だけではなく、ChatGPTを使った要件定義から、実際にCopilotでコードを書き上げる流れまで一連のプロセスが１章分かけて分かりやすく紹介されていました。この部分は読めばすぐにでもChatGPTとGitHub Copilotを使った開発の手順がイメージできたので、個人的に非常に良かったです。</li>
</ul>



<h2 class="wp-block-heading">コード×AI ー ソフトウェア開発者のための生成AI実践入門</h2>


		<div class="pochipp-box"
			data-id="3119"
			data-img="l"
			data-lyt-pc="dflt"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="none"
			 data-cvkey="718a271a"		>
							<div class="pochipp-box__image">
					<a href="https://www.amazon.co.jp/dp/B0DFW57CGY?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						<img decoding="async" src="https://m.media-amazon.com/images/I/41WkhXQZRJL._SL500_.jpg" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://www.amazon.co.jp/dp/B0DFW57CGY?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						コード×AIーソフトウェア開発者のための生成AI実践入門					</a>
				</div>

									<div class="pochipp-box__info">著:服部 佑樹</div>
				
				
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://www.amazon.co.jp/dp/B0DFW57CGY?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazon					</span>
									</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://hb.afl.rakuten.co.jp/hgc/39c5c75e.b3799909.39c5c75f.e5fd5e7d/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17974210%2F%3Frafcid%3Dwsc_i_is_1074984852215714305&#038;m=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17974210%2F%3Frafcid%3Dwsc_i_is_1074984852215714305" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場					</span>
									</a>
			</div>
											</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<p>先ほどの本（「生成AI時代の新プログラミング実践ガイド」）が「ChatGPTとGitHub Copilotを使ってすぐに開発する手順」が分かりやすくまとまっていたのに対して、こちらの本は「AIとは何か」「ソフトウェア開発にどう活かすか」という <strong>概念的な解説</strong> が多い印象でした。</p>



<p>この本の特徴を簡単にまとめると以下の通りです。</p>



<ul class="wp-block-list">
<li><strong>特定のツールに依存しない汎用的な説明</strong><br>Promptの改善の仕方など、概念ベースの解説が多いため、すぐに知識が陳腐化してしまうリスクは少なそうです。一方で、具体的なツールの使い方に重点を置いていないため、「これを読んですぐにAI開発ができる！」という即効性はあまり感じませんでした。</li>



<li><strong>実践するには練習が必要</strong><br>提示されているPrompt例はあくまでベースであり、こういう時どうすればいいのかについての深い言及は少なめな印象でした。このため、ただ読むだけでは活かせない知識が多く、この本で得た知識を使いこなすにはしばらくいろいろ手を動かしてみる必要があると思いました。</li>
</ul>



<h2 class="wp-block-heading">AIエディタCursor完全ガイド　やりたいことを伝えるだけでできる新世代プログラミング</h2>


		<div class="pochipp-box"
			data-id="3120"
			data-img="l"
			data-lyt-pc="dflt"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="none"
			 data-cvkey="2ef32272"		>
							<div class="pochipp-box__image">
					<a href="https://www.amazon.co.jp/dp/B0DDSQZ58S?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						<img loading="lazy" decoding="async" src="https://m.media-amazon.com/images/I/51Chd-sJSbL._SL500_.jpg" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://www.amazon.co.jp/dp/B0DDSQZ58S?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" rel="nofollow noopener" target="_blank">
						AIエディタCursor完全ガイド ―やりたいことを伝えるだけでできる新世代プログラミング―					</a>
				</div>

									<div class="pochipp-box__info">著:木下雄一朗</div>
				
				
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://www.amazon.co.jp/dp/B0DDSQZ58S?tag=shu65-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazon					</span>
									</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://hb.afl.rakuten.co.jp/hgc/39c5c75e.b3799909.39c5c75f.e5fd5e7d/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17953394%2F%3Frafcid%3Dwsc_i_is_1074984852215714305&#038;m=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F17953394%2F%3Frafcid%3Dwsc_i_is_1074984852215714305" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場					</span>
									</a>
			</div>
											</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<p>普段VSCodeを使っている身として、「最近よくきくCursorって、使い心地はどうなんだろう？」と気になり手に取った一冊です。この本は初心者でも分かりやすく、実践的な使い方が豊富に紹介されているので、「こんなことまでできるのか！」を体感しながら読める内容でした。</p>



<p>この本の特徴を簡単にまとめると以下の通りです。</p>



<ul class="wp-block-list">
<li><strong>エディタとしてのCursor活用例が充実</strong><br>単純な画像変換やPDF結合など、ちょっとしたスクリプトでできそうな作業から、iOSアプリ開発にまで踏み込んだ事例が取り上げられており、やりたいことに合わせてCursorを使いこなすイメージがつかみやすかったです。</li>



<li><strong>すぐに試してみたくなる</strong><br>手順が丁寧かつ実用的なため、読みながら「すぐにでもこれを試してみたい！」と思えるものが多く、Cursorでいろいろ試しながら読み進めていました。</li>
</ul>



<h2 class="wp-block-heading">こういう人にお勧め</h2>



<p>今回読んだ3冊は、意図せず全然違う３冊でした。それぞれどういう人にお勧めかを簡単にまとめると</p>



<ol class="wp-block-list">
<li><strong>すぐに開発に導入してみたいなら</strong><br>「<a href="https://amzn.to/3PlsXFI" target="_blank" rel="noopener" title="生成AI時代の新プログラミング実践ガイド">生成AI時代の新プログラミング実践ガイド</a>」が、ChatGPTとGitHub Copilotを連携させてコード生成まで行う流れを具体的に解説してくれるので、実践的な入門書として最適に感じました。</li>



<li><strong>概念から学びたいなら</strong><br>「<a href="https://amzn.to/40vW7sl" target="_blank" rel="noopener" title="コード×AI ー ソフトウェア開発者のための生成AI実践入門">コード×AI ー ソフトウェア開発者のための生成AI実践入門</a>」は、AI全般の仕組みやPromptの考え方など基礎がしっかり学べます。ただし、即戦力というよりは理解を深めるための本といった印象です。</li>



<li><strong>新しいAIエディタを試してみたいなら</strong><br>「<a href="https://amzn.to/41WHCic" target="_blank" rel="noopener" title="AIエディタCursor完全ガイド">AIエディタCursor完全ガイド</a>」は、Cursorというエディタの便利機能を豊富な事例とともに紹介してくれるので、今までVSCodeなどを使っていた方にも新鮮な発見がありそうです。</li>
</ol>



<h2 class="wp-block-heading">終わりに</h2>



<p>それぞれの本を読んだことで、AIを開発に取り入れる際のイメージが具体的になりました。ツールやフレームワークの選択肢は多く、一長一短がありますが、まずは自分が取り組んでいるプロジェクトや学習スタイルに合ったものを試してみるのが大切だと思いました。これからもAIを活用したソフトウェア開発の動向や事例を追いかけつつ、積極的に活用していきたいと考えています。</p>



<p>またこれまでもいろいろ本の紹介記事を書いていますので、他にも興味がある本がありましたら是非読んで見てください。</p><p>The post <a href="https://www.mattari-benkyo-note.com/2025/01/06/ai_software_dev_book_review/">AIを使ったソフトウェア開発の書籍まとめ(2025/1版)</a> first appeared on <a href="https://www.mattari-benkyo-note.com">まったり勉強ノート</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattari-benkyo-note.com/2025/01/06/ai_software_dev_book_review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3121</post-id>	</item>
		<item>
		<title>Visual Studio Codeを使ってCUDAのコードを書く</title>
		<link>https://www.mattari-benkyo-note.com/2022/12/20/cuda-vscode/</link>
					<comments>https://www.mattari-benkyo-note.com/2022/12/20/cuda-vscode/#respond</comments>
		
		<dc:creator><![CDATA[Shuji Suzuki (shu)]]></dc:creator>
		<pubDate>Mon, 19 Dec 2022 22:23:43 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://www.mattari-benkyo-note.com/?p=1458</guid>

					<description><![CDATA[<p>はじめに 最近、久しぶりにCUDAでコードを書きそうな状況になってきました。このため、ここ数日CUDAの開発環境の準備をしているところです。その際、周りの人が結構Visual Studio Code (VSCode) を [&#8230;]</p>
<p>The post <a href="https://www.mattari-benkyo-note.com/2022/12/20/cuda-vscode/">Visual Studio Codeを使ってCUDAのコードを書く</a> first appeared on <a href="https://www.mattari-benkyo-note.com">まったり勉強ノート</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="wp-block-heading">はじめに</h1>



<p>最近、久しぶりにCUDAでコードを書きそうな状況になってきました。このため、ここ数日CUDAの開発環境の準備をしているところです。その際、周りの人が結構Visual Studio Code (VSCode) を使っていろいろな言語のコードを書いているという話を聞いたことを思い出し、私自身、まだVSCodeを使ったことなかったので、せっかくならCUDAの開発をVSCodeを使ってやってみるかーと思ってCUDAをVSCodeを使って書くための準備を開始しした次第です。 </p>



<p>そして、VSCodeが何もわからない状態からCUDAのコードをある程度VSCodeを使って書くところまでできたので、今回調べたことをまとめたものを記事にしました。</p>



<p>前提として、CUDAのセットアップは終わっている状態であると仮定して説明をします。また、開発環境はWindows11のマシンでVSCodeを起動して、VSCodeからリモートのUbuntusマシンに接続して開発することを想定して説明します。</p>



<p>今回のVSCodeの設定をして、CUDAの簡単なコード作成したものをGitHubに以下のところにあげてあります。コード全体を見たいという方は見てみてください。</p>



<p><a href="https://github.com/shu65/cuda_vscode_sample">https://github.com/shu65/cuda_vscode_sample</a></p>



<h1 class="wp-block-heading">Visual Studio Codeインストール</h1>



<p>まずは以下のURLからVSCodeの本家のサイトからVSCodeのインストーラーを自分の環境に合わせてダウンロードしてください。</p>



<p><a href="https://code.visualstudio.com/">https://code.visualstudio.com/</a></p>



<p>その後、インストーラーを実行してVSCodeをインストールしてください。</p>



<h1 class="wp-block-heading">Visual Studio CodeのExtensionsインストール</h1>



<p>CUDAを開発するにあたり最低限必要なextensionを入れます。まず、VSCodeのExtensionsのビューを開きます。ビューは以下のボタンをクリックするか <code>Ctrl</code> + <code>Shift</code> + <code>x</code> で開くことができます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/extension.png" alt="" class="wp-image-1459" width="115" height="326" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/extension.png 207w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/extension-106x300.png 106w" sizes="auto, (max-width: 115px) 100vw, 115px" /><figcaption class="wp-element-caption">VSCode Extension</figcaption></figure></div>


<p>Extensionsのビューを開いたら以下の二つのものを検索して[Install]ボタンを押します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/C-1024x299.png" alt="" class="wp-image-1460" width="511" height="149" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/C-1024x299.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/C-300x88.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/C-768x225.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/C.png 1026w" sizes="auto, (max-width: 511px) 100vw, 511px" /><figcaption class="wp-element-caption">C/C++</figcaption></figure></div>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/CUDA-1024x234.png" alt="" class="wp-image-1461" width="521" height="119"/><figcaption class="wp-element-caption">Nsight Visual Studio Code Edition</figcaption></figure></div>


<p>C/C++ のほうは名前の通り、C/C++のコードを書くためのextensionで、Nsight Visual Studio Code EditionはCUDAのdebuggerをVSCodeを使ってGUIで操作するためのものになっています。</p>



<h1 class="wp-block-heading">CUDA開発で必要なVisual Studio Codeの設定ファイルを作る</h1>



<h2 class="wp-block-heading">c_cpp_properties.jsonの作成と編集</h2>



<p><code>c_cpp_properties.json</code> はコード補完や各種C++に関する設定を書くファイルです。VSCodeのウインドウの上部にある[View]→[Command Pallet]を選択するか<code>Ctrl</code> + <code>Shift</code> + <code>p</code> というショートカットキーで以下のような入力がでてきます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="163" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/ctrl_shift_p-1024x163.png" alt="" class="wp-image-1464" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/ctrl_shift_p-1024x163.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/ctrl_shift_p-300x48.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/ctrl_shift_p-768x122.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/ctrl_shift_p.png 1249w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Command Pallet</figcaption></figure></div>


<p>ここで[C/C++: Edit Configurations]を選択するとデフォルトの <code>c_cpp_properties.json</code> を<code>.vscode</code> というディレクトリ下に作ってくれます。</p>



<p>C++のコードであれば基本はデフォルトのままでもよいですが、CUDAのコードの開発の場合はインクルードパスにCUDAのディレクトリを追記します。具体的には以下のようにします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-file="sub_c_cpp_properties.json " data-lang="JSON"><code>            &quot;includePath&quot;: [
                &quot;${workspaceFolder}/**&quot;,
                &quot;/usr/local/cuda/include&quot;
            ],</code></pre></div>



<p>ただし、WindowsにCUDAを入れている方やLinux系でもインストール時のパスの指定などが違うと上記のパスにincludeディレクトリがない可能性があるので注意してください。</p>



<h2 class="wp-block-heading">tasks.jsonの作成と編集</h2>



<p>次にビルドを簡単に実行できるように <code>tasks.json</code> を準備します。VSCodeの場合、taskでコンパイラを叩いて実行する例をよくみます。ただ、この形式だとVSCodeを使わないでビルドする方法が謎だったので、今回はよくあるMakefileを用意して<code>make</code>コマンドでビルドすることにします。</p>



<p>Makefileは以下のものを予めディレクトリに追加しておきます。</p>



<p><a href="https://github.com/shu65/cuda_vscode_sample/blob/main/Makefile">https://github.com/shu65/cuda_vscode_sample/blob/main/Makefile</a></p>



<p><code>c_cpp_properties.json</code> と同様にVSCodeのウインドウの上部にある[View]→[Command Pallet]を選択するか<code>Ctrl</code> + <code>Shift</code> + <code>p</code> を叩きます。</p>



<p>そして[Tasks: Configure Task]を選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="233" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/config_task-1024x233.png" alt="" class="wp-image-1465" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/config_task-1024x233.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/config_task-300x68.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/config_task-768x175.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/config_task.png 1220w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Command Pallet (taskファイル作成)</figcaption></figure></div>


<p>次に以下のように[Create tasksjsonfile from template]を選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="671" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task1-1024x671.png" alt="" class="wp-image-1466" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task1-1024x671.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task1-300x197.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task1-768x503.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task1.png 1234w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Create tasks.jsonの選択</figcaption></figure></div>


<p>その後、[Others]を選択してファイルを作ります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="233" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task2-1024x233.png" alt="" class="wp-image-1467" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task2-1024x233.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task2-300x68.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task2-768x175.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/create_task2.png 1243w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>


<p>これで<code>tasks.json</code>を<code>.vscode</code> 下に作ってくれます。あとは以下のようにmakeを叩くtaskを追加します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-file="sub_tasks.json" data-lang="JSON"><code>        {
            &quot;label&quot;: &quot;make&quot;,
            &quot;type&quot;: &quot;shell&quot;,
            &quot;command&quot;: &quot;make&quot;,
            &quot;args&quot;: [],
            &quot;problemMatcher&quot;: [],
            &quot;group&quot;: {
                &quot;kind&quot;: &quot;build&quot;,
                &quot;isDefault&quot;: true
            }
        }</code></pre></div>



<p>これで<code>Ctrl</code> + <code>Shift</code> + <code>b</code> で上記のmakeを実行するtaskを実行できます。</p>



<h2 class="wp-block-heading">launch.jsonの作成と編集</h2>



<p>最後に<code>launch.json</code> の作成と必要な部分の編集についてです。</p>



<p><code>launch.json</code> を作成する際は、ウインドウ上部の[Run]→[Add Configuration&#8230;]を選択するか<code>Ctrl</code> + <code>Shift</code> + <code>p</code> を叩いて、以下のように[Debug: Add Configuration&#8230;]を選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="226" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch1-1024x226.png" alt="" class="wp-image-1468" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch1-1024x226.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch1-300x66.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch1-768x169.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch1.png 1224w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">lanch.jsonの作成</figcaption></figure></div>


<p>次に[CUDA C++ (CUDA-GDB)]を選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="226" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch2-1024x226.png" alt="" class="wp-image-1469" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch2-1024x226.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch2-300x66.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch2-768x170.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/lanch2.png 1203w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">CUDA C++(CUDA-GDB)の選択</figcaption></figure></div>


<p>そしてprogramの部分を以下のように変更します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-file="sub_lanch.json" data-lang="JSON"><code> &quot;program&quot;: &quot;${workspaceFolder}/main&quot;</code></pre></div>



<p>実行ファイル名はMakefileで<code>main</code> という名前を指定していたので、それをそのまま書いています。この部分はプロジェクトごとに変わると思うので注意してください。</p>



<p><code>launch.json</code>の修正が完了したら<code>F5</code> で<code>cuda-gdb</code> を使ったデバッグを実行できます。</p>



<h1 class="wp-block-heading">Visual Studio CodeでCUDAのDebuggerを試す</h1>



<p>ここまででCUDA開発する最低限の設定ができました。ここからは<code>cuda-gdb</code> の使い方に関して少し説明します。基本的な使い方はC++ の<code>gdb</code> を使ったデバッグと同じだと思いますが、<code>cuda-gdb</code>を使うとCUDAはカーネル関数内の各スレッドの変数の状況も見ることができます。ただ、デバッガーで注目しているスレッドを切り替える方法を見つけるのに苦労したので、同じように苦労する人が減ることを願ってその部分だけここでは説明します。</p>



<p>デバッグするコードはこちらのリポジトリにあるもので説明します。</p>



<p><a href="https://github.com/shu65/cuda_vscode_sample">https://github.com/shu65/cuda_vscode_sample</a></p>



<p>ちなみにドキュメントのほうにはここに詳しく書いてあります。</p>



<p><a href="https://docs.nvidia.com/nsight-visual-studio-code-edition/cuda-inspect-state/index.html#abstract">https://docs.nvidia.com/nsight-visual-studio-code-edition/cuda-inspect-state/index.html#abstract</a></p>



<p>まず、CUDAカーネルの関数のデバッグをするときはコンパイル時に以下のように<code>-G</code> を付けてコンパイルしておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-file="nvcc-G.bash" data-lang="Bash"><code>nvcc -c -g -G src/main.cu -o src/main.o </code></pre></div>



<p>そして、ブレイクポイントを指定したい行番号の左隣をクリックしてブレイクポイントを指定します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="221" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/breakpoint-1-1024x221.png" alt="" class="wp-image-1471" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/breakpoint-1-1024x221.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/breakpoint-1-300x65.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/breakpoint-1-768x166.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/breakpoint-1.png 1037w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">breakpoint</figcaption></figure>



<p>これで指定された位置でプログラムの実行が止まるようになります。</p>



<p>準備ができたら<code>F5</code> でデバッガーを使って実行します。すると以下のようにブレイクポイントの地点でとまります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="208" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/cuda-gdb_stop-1024x208.png" alt="" class="wp-image-1472" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/cuda-gdb_stop-1024x208.png 1024w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/cuda-gdb_stop-300x61.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/cuda-gdb_stop-768x156.png 768w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/cuda-gdb_stop.png 1104w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">cuda-gdb 停止</figcaption></figure>



<p>ちなみにデバッガーを起動したタイミングではblockとスレッドのインデックスがそれぞれ<code>（0, 0, 0）(0, 0, 0)</code>のスレッドの情報が表示されています。現在どのスレッドが見えているかは右下のこの部分に表示されています。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="599" height="127" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread-1.png" alt="" class="wp-image-1474" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread-1.png 599w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread-1-300x64.png 300w" sizes="auto, (max-width: 599px) 100vw, 599px" /><figcaption class="wp-element-caption">block thread</figcaption></figure></div>


<p>見たいスレッドを切り替える場合は<code>Ctrl</code> + <code>Shift</code> + <code>p</code> でコマンドパレットを開いて[CUDA: Change CUDA debug focus]を選択するか、上の図のスレッドのインデックス部分をクリックすると以下のような入力が出てきます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="861" height="207" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread2.png" alt="" class="wp-image-1475" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread2.png 861w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread2-300x72.png 300w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread2-768x185.png 768w" sizes="auto, (max-width: 861px) 100vw, 861px" /><figcaption class="wp-element-caption">block thread指定</figcaption></figure>



<p>ここに以下のように<code>block (X, Y, Z) thread (X, Y, Z)</code> の形式で見たいスレッドのインデックスを入力してエンターを押します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="756" height="172" src="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread3.png" alt="" class="wp-image-1476" srcset="https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread3.png 756w, https://www.mattari-benkyo-note.com/wp-content/uploads/2022/12/block-thread3-300x68.png 300w" sizes="auto, (max-width: 756px) 100vw, 756px" /><figcaption class="wp-element-caption">block threadの入力例</figcaption></figure></div>


<p>上の図の例ではblock threadのインデックスが<code>（1, 0, 0）(14, 0, 0)</code>のものを指定しています。こうすると表示するスレッドを切り替えることができます。</p>



<p>他にもデバッガーの使い方は基本的にはドキュメントに書いてありますので、詳しく知りたい方は参考資料のリンクからドキュメントに飛んでご確認ください。</p>



<h1 class="wp-block-heading">終わりに</h1>



<p>今回はVSCodeがそもそも初めてだったこともあり、VSCodeの使い方を調べるのに苦労した感があります。また、デバッガーの使い方も昔使っていたeclipse版と結構違う部分があって苦労しました。同じようにどうすればいいかわからない人の参考になれば幸いです。</p>



<h1 class="wp-block-heading">参考資料</h1>



<ul class="wp-block-list">
<li><a href="https://docs.nvidia.com/nsight-visual-studio-code-edition/" target="_blank" rel="noopener" title="">https://developer.nvidia.com/nsight-visual-studio-code-edition</a></li>



<li><a href="https://docs.nvidia.com/nsight-visual-studio-code-edition/" target="_blank" rel="noopener" title="">https://docs.nvidia.com/nsight-visual-studio-code-edition/</a></li>



<li><a href="https://www.youtube.com/watch?v=gN3XeFwZ4ng" target="_blank" rel="noopener" title="">https://www.youtube.com/watch?v=gN3XeFwZ4ng</a></li>
</ul><p>The post <a href="https://www.mattari-benkyo-note.com/2022/12/20/cuda-vscode/">Visual Studio Codeを使ってCUDAのコードを書く</a> first appeared on <a href="https://www.mattari-benkyo-note.com">まったり勉強ノート</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattari-benkyo-note.com/2022/12/20/cuda-vscode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1458</post-id>	</item>
	</channel>
</rss>
