「Visual Studio Code」と「Ollama」で簡単に始められる、安心・安全なローカルAI活用術クラウドサービスだけじゃない! ローカルPCやサーバ、Kubernetesで生成AI(5)

気軽に試せるラップトップ環境で、チャットbotを提供するオールインワンの生成AI環境構築から始め、Kubernetesを活用した本格的なGPUクラスタの構築やモデルのファインチューニングまで解説する本連載。今回は、「Visual Studio Code」と「Ollama」を活用し、Visual Studio Codeでローカルモデルに対してコードの生成や修正、レビューを指示したり、AIエージェントモードでコーディングさせたりする方法を解説します。

» 2025年06月03日 05時00分 公開
[岡本隆史NTTデータグループ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 2025年4月初旬に「Visual Studio Code」(以下、VS Code)のバージョン1.99がリリースされ、AI(人工知能)とのチャット機能が統合されました。同時に、AIエージェントを利用できる「Agentモード」も追加されました。

 AIコーディングにおいて、VS Codeは、「Cursor」「WindSurf」と比較して後れを取っていましたが、VS Code 1.99で追加されたAgentモードにより、開発者からの自然言語による指示の下、自律的に関連ファイルやエラーメッセージを収集し、ソースコードの編集、テスト、デバッグができるようになりました。

 昨今、開発者の間で注目されている、自然言語でAIに指示を出してコーディングを任せる「Vibe Coding」が、VS Codeで実践できるようになりました。またMCP(Model Context Protocol)を用いた外部AIツールとの連携、「Ollama」のサポートによるローカルモデルの利用にも対応しました。

 本連載では、今回から2回にわたってVS Codeに統合されたAI機能を紹介します。今回は、VS Codeで追加されたAI機能の概要と、コーディングに特化したAIモデル「DeepCoder」をVS Codeで利用する方法を解説します。なお、本稿では、VS Code バージョン1.100.2を利用しています。VS CodeのAI機能はバージョンアップする都度、機能が追加されたり画面が変わったりしていますので、あらかじめご了承ください。

VS Code 1.99でCopilot機能、ローカルモデルが利用可能に

 VS Code 1.99で「GitHub Copilot」のチャット機能がVS Codeに統合されるとともに、Agentモードが新たに実装されました。

 VS Code 1.99でAIチャット機能が統合されたことにより、下記のようなことが可能になりました。

  • VS Codeエディタ内で生成AIと直接対話が可能になり、シームレスにコードの作成、修正、問題点の提示を指示できる
  • 生成AIが関連ファイルやテスト実行結果、アプリケーションエラーなどを自律的に収集し、アドバイスや修正案を提示する
  • MCPを用いた外部サービスやツールが、VS Codeとシームレスに連携できる

 これらの新機能とともに、Ollamaを利用したローカルモデルや「Gemini」「Claude」などOpenAI以外のモデル、「OpenRouter」を通じて多様なモデルが利用可能になりました。

 そしてVS Code 1.99からは、Ollamaと組み合わせてローカルのLLM(大規模言語モデル)が利用可能となりました。これにより、機密情報を外部の生成AIサービスに渡すことなく安心、安全に生成AIを利用できるという利点があります(※)。また、一時的にネットワークに接続できず、GitHub Copilotが利用できない場合、応急措置としてローカルのLLMを利用したり、GitHub Copilotのコード補完やチャット上限数に到達した際、補完的に利用したりできます。

 注意点として、チャット機能がVS Codeに統合されたとはいえ、その利用にはGitHub Copilotへのサインインが必要です。コード補完やコミットメッセージの自動作成などの機能は、依然としてGitHub Copilotのみの機能として提供されています。とはいえ、2024年12月にリリースされた「GitHub Copilot Free」プランにより、手軽に機能を試すこともできるようになりました。

※:2025年5月時点では、GitHub Copilotに対して通信をすることがあり、完全にローカルで動作することが保証されているわけではない点にご留意ください。なお、GitHubは公式ドキュメントにおいて「デフォルトでは、GitHub、その関連会社、サードパーティーは、お客さまのデータ(プロンプト、提案、コード スニペットなど)をAIモデルのトレーニングに使いません。これは、GitHub Copilotのお客さまの個人設定に反映され、有効にすることはできません」と説明しています(参考リンク)。またGitHub Copilotにおけるプライバシーについては、GitHub Copilot Trust Centerもご確認の上、ご利用ください。

16GBメモリで実行可能! o3-miniに匹敵する「DeepCoder」

 読者の皆さんもご存じのように、「DeepSeek」が一時期世間を賑わせました。性能もさることながら、誰でも利用できるオープンな形で提供したこと、蒸留により高性能な小規模モデルを提供した点も注目を集めたポイントでした。

 そのような背景の下開発されたのが、「DeepSeek-R1-Distill-Qwen-14B」をベースとする、DeepCoderです。バークレイ大学の研究チームと米国のAIベンチャーであるAI Togetherが公開した、コーディングに特化したファインチューニングモデルです。

 DeepCoderは、PCで実行可能な14B(140億パラメーター)のサイズながら、プレビュー版の時点でOpenAIの「o3-mini」に匹敵するコーディング性能をLiveCodeBench(LCB)やCodeforces Ratingなどのベンチマークで示しています。

LCBによるコーディング性能の比較(Together AIのサイトより引用) LCBによるコーディング性能の比較(Together AIのサイトより引用)

 DeepCoderよりも高い性能を示すモデルもありますが、16GBのメモリ(RAM)のPCで実行可能なサイズのモデルの中で比較すると、執筆時点ではトップクラスの性能となっています。

 DeepCoderのモデルは、MITライセンスで公開されており、誰でも自由に利用できます。モデルを開発する過程で利用されたデータセットやスクリプトも公開されており、DeepCoderをベースに誰でもモデルをカスタマイズできる点が特徴の一つとなっています。

 今後、DeepCoderの技術をベースとした、より高度な手法の開発やモデルの登場にも期待できます。そこで今回はこうした柔軟性も併せ持つDeepCoderを利用して解説しています。

 ただし、欠点として、英語で記述されたコードによりファインチューニングされているため、ベースとなっているDeepSeek R1が持っていた日本語処理能力が弱まってしまっています。日本語でDeepCoderに質問しても英語で返答されたり、英語で質問した方が適切な回答が得られたりする点に、注意が必要です。

VS CodeのAIチャット機能を試してみる

 本題に入る前に、VS CodeのAIチャット機能を利用してみましょう。

 VS Codeを利用したことがない人は、VS Codeの最新版(本稿の説明では1.100.2)をインストールしてください。VS Codeのダウンロードとインストール方法はプログラマー以外にもおすすめ 「Visual Studio Code」のインストールから基本設定までを参考にしてください。

 既にVS Codeをお使いの場合は、VS Codeを最新版に更新してください。VS Codeを更新するには、左下の歯車アイコンから「Check for Update(更新の確認)」を選択します。

VS Codeのアップデート VS Codeのアップデート

 AI機能を利用するには、VS Codeの右上のCopilotアイコンを選択します。

Copilotアイコン Copilotアイコン

 すると、右にチャット画面が表示され、AI機能が利用可能になります。

AIチャット画面 AIチャット画面

 GitHub Copilotにサインインしていない場合は、サインインを促す画面が表示されます。

Copilotのサインイン画面 Copilotのサインイン画面

 「Set up Copilot」もしくは「Sign in」を選び、CopilotアカウントまたはGitHubアカウントでサインインしてください。

Ollamaでモデルをダウンロードする

 セットアップの前に、ローカルモデルで利用できる機能も確認しておきます。エディタからコードを選択し右クリックすると、Copilotによるインライン編集機能が起動します。

Copilotのインライン編集機能 Copilotのインライン編集機能

 ローカルモデルは下記のように「Review and Comment」以外のインライン編集機能が利用できます。

機能 ローカルモデルでの利用 説明
Editor Inline Chat エディタの中でAIと対話を実施
Explain コードの説明
Fix コードの修正案を提示
Review and Comment × レビューとコメント
Generate Doc コードを説明するコメントを作成
Generate Tests テストコードを作成

 AIとチャットをしながら作業を進めていくチャット画面には、「Ask」「Edit」「Agent」の3つのモードがあります。Ollamaモデルのサポート状況は下記の通りです。

モード Ollamaモデルの利用可否
Ask
Edit
Agent △(Tool Capability〈ツール呼び出し機能〉を持つモデルのみ)

 Agentモードは、ツール呼び出し機能に対応しているモデルのみサポートされます。本稿執筆時点では、Llama 3/4シリーズやQwen 2.5/3シリーズなどのOllama Libraryのモデルがツール呼び出し機能に対応しています。なお、今回利用するDeepCoderや本稿執筆時点でのDeepSeekの最新版(DeepSeek R1 0528)、Googleが提供するGemma3に対して、Tool Callingの機能を追加したモデルをOllama Hubの筆者のサイトで公開しているので、興味がある人は利用してみてください。

 下記の機能はローカルモデルの場合、利用できません。

機能 説明
コード補完 コード作成中に現在入力中のコードに続く案を提示する機能(参考
コミットコメント作成機能 ファイル差分からコミットメッセージを自動的に作成する機能

 Copilotの機能を完全にオフラインで使えるようにする要望は、VS Codeの下記のIssueで提出されています。

 完全にローカルで利用したい方は、上記のIssueに「いいね」をすると、Microsoftによる対応が進む可能性もありますので、ぜひ、「いいね」をお願いします。

 それでは、Ollamaを利用してローカルモデルをダウンロードし、セットアップしていきます。なお、「GPT-4.1」などの生成AIサービスが提供するモデルを利用する人は「サンプルコードをダウンロードする」までスキップして構いません。

Ollamaのインストール

 PCにモデルをダウンロードするため、Ollamaをインストールします。Ollamaの公式サイトからインストーラを取得して、インストールしてください。

 Ollamaを既に別のホストにインストールしている場合、VS Codeのsettings.jsonで下記設定をすると接続できます。

"github.copilot.chat.byok.ollamaEndpoint": "http://[ollamahost]:11434"

DeepCoderの量子化済みモデルのインストール

 続いて、DeepCoderをインストールします。今回は、筆者が準備した量子化済みDeepCoderを利用します。ターミナルまたはPowerShellを起動して下記のコマンドを入力します。

ollama pull okamototk/deepcoder:14b

コラム:Ollamaで利用できるその他のモデル

 上記モデルの実行が遅いと感じた場合、より小さなサイズの「qwen2.5-coder」をお勧めします。このモデルは、Alibabaが開発するLLM「Qwen」をコーディング特化にファインチューニングしたモデルで、こちらもコーディング性能の高さが特徴となっています。PCで実行するにはGPUがないと厳しいものの、32B(320億パラメーター)のモデルとして、GPT 4o(2024.08.06)に匹敵する性能を持つという評価結果も出ています。

 参考までに、それぞれのモデルのパラメーター数とOllamaで利用する際に要求されるメモリサイズをまとめました。

モデル名 パラメーター数 要求メモリ
DeepCoder(14B) 140億 10.7GiB
qwen2.5-coder:7b 70億 8.3GiB
qwen2.5-coder:3b 30億 4.5GiB
qwen2.5-coder:1.5b 15億 3.1GiB
※Ollama 0.6.6での値となります

 DeepCoderも1.5Bのモデルを提供していますが、日本語性能が著しく劣化しているため、日本語環境での利用は非推奨です。qwen2.5-coderより新しいQwen3がリリースされており、高性能なモデルとして注目を浴びていますが、コーディングに特化していない汎用(はんよう)モデルのため、小規模なモデルのコーディング性能はqwen2.5-coderより若干劣るようです。Qwen3はデフォルトでは思考(Reasoning)モードで実行されるため、応答時間も長くなります。

Ollamaのコンテキスト長の設定を変更する

 コードの解析などをモデルに指示する際には、コンテキスト長(モデルの入力トークン数)が重要になってきます。Ollamaのデフォルト値は2048ですが、長いソースコードや複数のソースコードを読ませる場合、不足しがちです。

 コンテキスト長の変更は、Ollama実行時の環境変数「OLLAMA_CONTEXT_LENGTH」を変更します。16GBメモリのPCの場合は、一例として下記のように値を設定します。

OLLAMA_CONTEXT_LENGTH=8192

 環境変数の設定方法はWindows/macOS/Linuxごとに異なりますので、本連載第3回記事の環境変数の設定を参考にしてください。重いと感じたらOLLAMA_CONTEXT_LENGTHをもう少し小さい値にするか、利用するモデルのサイズを小さくしてみてください。

VS CodeにDeepCoderを追加する

 では、DeepCoderを利用するために、VS Codeで設定をしていきましょう。

 VS Codeのチャット画面から、モデル名(デフォルトではGPT-4o)をクリックすると、モデル選択のプルダウンメニューが表示されます。

Manage Modelsの選択画面 Manage Modelsの選択画面

 ここで「Manage Models...」を選択すると、使用したいモデルの選択画面が画面上部に表示されます。

モデルプロバイダーの選択画面 モデルプロバイダーの選択画面

 「Ollama」を選択すると、Ollamaで利用できるモデル一覧が表示されます。先ほどダウンロードしたDeepCoderのモデルにチェックを入れて「OK」をクリックします。

Ollamaでダウンロードしたモデルを選択 Ollamaでダウンロードしたモデルを選択

 これにより、チャット画面からOllamaでダウンロードしたモデルを選択できます。それでは、モデルをGPT-4oからDeepCoderに変更してみましょう。

チャット画面のモデル設定 チャット画面のモデルの設定

 これで、設定は完了です。

 チャットの挙動がおかしい場合、VS Codeの設定とプラグインを初期化すると直る可能性があります。VS Codeの設定の初期化方法は以下の手順です。

rm -rf ~/.vscode
rm -rf ~/Library/Application\ Support/Code
macOSの場合
Remove-Item -Recurse -Force $env:USERPROFILE\.vscode
Remove-Item -Recurse -Force $env:APPDATA\Code
Windowsの場合(PowerShell)

 なお、本稿執筆時点では、ローカルモデルを利用中のオフライン環境において、AIがGitHub Copilotにアクセスしようとして失敗し、チャットを利用できなくなる不具合がまれに発生します。これについては、VS CodeやGitHub CopilotのIssueに修正リクエストが上がっているので、今後解決される可能性はあります。

サンプルコードをダウンロードする

 ここでは、GitHubで公開されているFlaskによるTODO管理のサンプルアプリケーションを利用します。お手持ちのアプリケーションコードで試したい場合はスキップしてください。

 下記のコマンドを実行してPCにサンプルアプリケーションダウンロードします。ダウンロード後、VS Codeのワークスペースとして開いてください。

git clone https://github.com/NonokaM/flask-todo-example

 なお、flask-todo-exampleは下記のようなシンプルなファイル構成のアプリケーションとなっています。

app.py
template/
   index.html
static
   style.css

VS Code上でDeepCoderによるコードアシスタントを試してみる

 さて、生成AIによる支援機能を使っていきましょう。AIに支援してもらいたいコードを開いて選択します。サンプルアプリケーションのapp.pyにあるadd関数を選択し、右クリック(macOSの場合は[Ctrl]キー+クリック)し、Copilotを選択するとメニューが表示されます。

コードからCopilotメニューを表示 コードからCopilotメニューを表示

 Editor Inline Chatを開き、「/explain 日本語で」と入力します

入力のイメージ 入力のイメージ

 すると、日本語で選択したコードについてAIが説明します。

 Copilotメニューの「Explain」を選択して説明させることも可能です。ただしこちらの場合、英語で解説されることも多く、「Editor Inline Chat」から選択して「日本語で」と追加するとよいでしょう。

 Editor Inline Chatで利用できるコマンドには、/explain以外に次のようなコマンドがあるので、試してみてください。

コマンド 説明
/doc コードにコメント追加
/edit コードの編集
/explain コードの解説
/fix コードの修正
/generate コードの生成
/test テストコードの作成

3つのチャットモードの違い、使い分けのポイント

 VS Codeのチャット画面には、Ask、Edit、Agentの3つのモードがあることは冒頭でも紹介しました。モードごとの違いと使い分けのポイントは以下の通りとなります。

モード 主な目的 出力、影響範囲 チャット画面以外の実行方法
Ask 質問、コードの解説 チャットに返答
Edit コードの編集提案 選択コードの変更提案 コード選択→右クリックなど
Agent 複雑なタスクの実行 複数ファイル、プロジェクト全体 コマンドパレット

 それぞれ具体的に何ができるのか、見ていきます。

Askモード(コードレビュー)

 Askモードでは、エディタ上で表示されているコードやVS Code上のターミナルの実行結果/エラーメッセージについて生成AIに問い合わせ、コードの説明やレビュー、エラーメッセージの解決方法の提示などをさせることができます。

 試しに、コードのレビューを指示してみました。

コードのレビュー依頼

 app.pyを開いた状態で、チャットに以下の文章を入力します。

あなたは優秀なソフトウェアエンジニアです。以下の点に注意してレビューしてコメントしてください:
* コードの可読性(変数名、関数名、コメントなど)
* コードの保守性・再利用性(関数分割、DRY原則など)
* パフォーマンス上の懸念点(無駄な処理、非効率なアルゴリズムなど)
* バグや論理ミスの可能性(明らかな不具合や意図しない挙動)
* セキュリティ上の懸念点(入力検証、サニタイズ不足など)
* コーディング規約との整合性(言語・プロジェクトに応じて)
レビューの結果は以下のフォーマットで出力してください:
# 指摘点(タイトル)
## 修正前コード:
修正前のコード
## 内容:
何が問題か簡潔に説明
## 重要度:
[低 / 中 / 高]
## 対応案:
どう修正するべきか提案

 入力すると、下記のような画面になります。

文章を入力した結果 文章を入力した結果

 チャット画面のテキストボックスの上部に「app.py」が選択されていることに注意してください。この部分はコンテキストと呼ばれ、AIに渡す情報を設定する場所となります。

コンテキスト コンテキスト

 なお、「コンテキストの追加」から、他のファイルやフォルダをコンテキストとして追加できます。その他、エラーメッセージを解析させる際には、Terminalの実行結果(Add Context→Tools→TerminalLastCommand)などもコンテキストに渡すことができます。

 上記のプロンプトでコードをレビューした結果、セキュリティとエラーに関する2つの問題を指摘してくれました。

XSS攻撃の可能性を指摘し、エスケープすることにより攻撃を回避するコードを提案してくれました XSS攻撃の可能性を指摘し、エスケープすることにより攻撃を回避するコードを提案してくれました
他の誰かが先にTODOを削除するとエラーが発生すると指摘した上で、エラー処理のコードを提案してくれました 他の誰かが先にTODOを削除するとエラーが発生すると指摘した上で、エラー処理のコードを提案してくれました

 コードの右上のアイコンを開いて、これらの提案を承認すると、コードに変更を反映できます。

承認のアイコン 承認のアイコン

エラーの修正

 ただ、ソースコードを反映しても正しく動作しないことがあります。コードを反映し、VS CodeのTerminal上で実行すると、次のようなエラーが出力されました。

Terminalのエラー画面 Terminalのエラー画面

 この場合、チャットのテキストボックス上部の「Add Context」をクリックし、「Terminal Last Command」を選択し、「エラーを修正」と入力します。

「エラーを修正」と入力 「エラーを修正」と入力

 すると、Flaskの最新バージョンではescape関数が削除されたことを説明した後、修正案のコードが提示されました。

「エラーを修正」の実行結果 「エラーを修正」の実行結果

 提示された内容は先述したように、右上のアイコンからコードに反映できます。

 なお、DeepCoderは日本語能力に優れていないため、上記のスクリーンショットのように英語で出力されることもあります。

Editモード(コード編集)

 Editモードでは、現在開いているファイルに対して、AIを利用して編集できます。

 サンプルコードはコメントがないので、下記の指示を入力して、コメントを追記してもらいましょう。

各メソッドの機能が分かるように日本語でコメントを追記

Editモードの入力画面 Editモードの入力画面

 モードがEditとなっている点とテキストボックス上部のコンテキストにapp.pyが選択されていること確認します。

 実行が完了すると、下記のように、app.pyにコメントが追記されます。

コメントが追記された結果 コメントが追記された結果

 コメント部分ごとにチェックボックスがあり、チェックすると変更を反映できます。また「Keep」をクリックして編集全体を一括反映することも可能です。

Agentモード(新たな機能の実装)

 Agentモードでは、ワークスペース内のファイルを横断的に解析し、複数のファイルに対するリファクタリングや機能追加、テスト作成など複雑な作業にも対応しています。

 アプリケーションやテストの実行もチャットから指示できます。そのため、アプリケーションやテストの実行方法を知らなくても「アプリを実行」「テストを実行」と指示するだけで、さまざまな作業を簡単に自動化できます。またMCPによる外部ツールの呼び出しも可能になっており、まさに開発者の代理人(エージェント)として動いてくれます。

コラム: Agentで利用するモデルの注意点

 先述した通り、Agentモードはデフォルトでは、Tool Calling(Function Calling)に対応するモデルしか選択できません(2025年5月時点でDeepCoderは利用できません)。ただし、VS Codeのsettings.jsonでツール呼び出し機能のチェックを無効化することにより、全てのモデルでAgentモードが利用できるようになります。

"chat.agent.allModels": true

 これにより、DeepCoderもAgentモードで利用可能となります。

 チャットモードを「Agent」に変更して、下記のように機能の追加を指示します。

TODOを一括登録する画面を追加してください

Agentモードの入力画面 Agentモードの入力画面

 すると、ソースコードを解析し、ここでは、以下のコードを追加してくれました(※実行結果は毎回異なります)。

  • app.pyへのrouters(ルーター)の追加
  • 複数のToDoアイテム一括登録用の画面(upload.html)の新規生成
  • index.htmlに、上記のupload.htmlへのリンクするコードの追加

 チャット画面に表示されたコードの右上にあるApplyアイコンをクリックすることにより、コードの追加を承認します。

Applyアイコンで承認 Applyアイコンで承認

 次のような画面になり、エディタ内にコードが追加されます。

コードが追加された結果 コードが追加された結果

 チャット画面に表示されたその他の箇所にも同様の操作をすることで、TODOアイテムを一括登録する機能を実装できます。

 なお、利用するモデル(特にGPT-4oやClaudeなど高性能なモデル)によっては、直接エディタにコード案を提示してくれることもあります。その場合は、コード上から変更案を承認できます。

終わりに

 本稿では、VS Code 1.99で追加された生成AI機能について、Ollamaでダウンロードしたモデルを利用しながら解説しました。ローカルモデルの利用には一部制限があるものの、今後の改善に期待が持てます。そして今回利用したDeepCoderは今後正式リリースが予定されており、さらなる精度向上にも注目です。

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。