【備忘録】AIコーディングの導入 with オープンソースAIコードエディタ&ローカルLLM 【VScode拡張機能Continue Ollama Qwen2.5-Coder】

# はじめに
GitHub CopilotやCursorなどのAIコードエディタが一時期話題になったものの、無料版だと回数制限などの制限があるらしくソフトウェアエンジニアでもない自分がわざわざ導入して使ってみるほどではないかなと思い今までスルーしていた。  
Visual Studio Codeの拡張機能のContinueを使えばローカルLLM対応で自前のPCでAI処理の計算をするのであれば完全無料で使えるとのことなので少しだけ試してみようかなと思い今回インストールした。  
今回は本当にただ導入しただけなのでAIコーディングを使いこなせているわけではないので、本業の人からしたら今更かよと思われそうな内容なのはご了承願います。  

# 各種ダウンロード
## VScode拡張機能`Continue`
https://www.continue.dev/

https://github.com/continuedev/continue

![Install_Continue_from_VScode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/0a6d72d2-7b1e-03b1-7973-a42bf4ec98b9.png)
VScodeの拡張機能の検索窓から`Continue`を検索しインストールする。

## ローカルLLM`Ollama`
今回ローカルLLMとしてはOllamaをインストールした。

https://ollama.com/

Ollamaのインストールはwingetコマンドからインストールできる。
Powershellから一行叩くだけで簡単インストールできます。
```Powershell.
winget install -e --id Ollama.Ollama
```

### コーディングAIモデル`Qwen2.5-Coder`
Ollama公式サイトによると`Qwen2.5-Coder`というコーディングに特化したAIモデルがあるらしく試しにインストールしてみた。

https://ollama.com/library/qwen2.5-coder

参考までに今回はこちらのLLMでの選び方を参考にAIモデルのサイズを選んだ。

https://zenn.dev/hellorusk/books/e56548029b391f/viewer/intro5

以下、LLMでの選び方より引用。
|LLM のパラメータ数|必要なメモリ|
|---|---|
|7B (70億)|8GB程度|
|13B (130億)|16GB程度|
|70B (700億)|64GB程度|

現在のPC環境がRTX3060 12GB版を使用しているため`7B`を選択した。

Windows Powershellから`ollama run qwen2.5-coder:7b`をコピペしてそのまま貼り付けて実行してAIモデルのダウンロードする。
AIモデルのダウンロードは`run`と`pull`のどちらでもやってもらえるっぽいです。
```Powershell.
> ollama run qwen2.5-coder:7b
pulling manifest
pulling 60e05f210007... 100% ▕████████████████████████████████████████████████████████▏ 4.7 GB
pulling 66b9ea09bd5b... 100% ▕████████████████████████████████████████████████████████▏   68 B
pulling e94a8ecb9327... 100% ▕████████████████████████████████████████████████████████▏ 1.6 KB
pulling 832dd9e00a68... 100% ▕████████████████████████████████████████████████████████▏  11 KB
pulling d9bb33f27869... 100% ▕████████████████████████████████████████████████████████▏  487 B
verifying sha256 digest
writing manifest
success
>>> 
```
ここまでできたのでPowershellを閉じた。

### `Ollama`のAIモデル一括更新
OllamaのAIモデルを一括でバージョンアップするスクリプトを発見。

https://github.com/ollama/ollama/issues/1890

```Ollama_update_models.bat
@echo off
setlocal enabledelayedexpansion

rem List all models and skip the first line
for /f "skip=1 tokens=*" %%i in ('ollama list') do (
    rem Extract the model name from the output
    set "model=%%i"
    
    rem Split the model name from the rest of the line (assuming space-separated)
    for /f "tokens=1" %%j in ("!model!") do (
        rem Pull the model using ollama
        ollama pull %%j
    )
)

endlocal
```
上記の内容でbatファイルを作成した。  
Ollamaで導入したAIモデルを一括でアップグレードできる。

# ContinueでAIコーディングを試す
## ContinueでローカルLLMのAIモデルを選択
Continueを起動して`Get started using our API keys`を選択する。
![Continue_Startmenu](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/cb6fb7b1-0193-140d-a4a7-b70f5d557a8d.png)
`Add Chat model`から`Ollama`、`Autodetect`を選択する。
![Continue_Ollama_autodetect](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/a218a0b4-344b-1d6c-4807-e7bbe34ab08a.png)
任意のAIモデルを選ぶ、Autodetectで検出された`Autodetect - qwen2.5-code:7b`を選択した。
![Continue_Ollama_select_qwen_coder](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/170721dd-9b08-f30c-e2aa-a69979ab823f.png)

## C言語のHello Worldを書かせてみる
C言語のファイルを作成してプログラミングではおなじみのHello Worldのコードが書けるかを試す。
![Created_HelloWorld_Clang](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/e37b5379-0c51-c493-e018-d92db8ef26ca.png)
ここまでは通常通りに作成。
今回は`AIcording_practice`>`HelloWorld.c`を作成した。

AIでコードを生成したい部分にカーソルがあることを確認して`Ctrl+I`をし、黄色くハイライトされることを確認する。
また、Modelの部分を`Autodetect　- qwen2.5-code:7b`が選択されていることを確認する。
"Please generate Hello world of C language."を打ち込み`Submit`する。
ちなみに後で"C言語のhello worldを生成してほしい。"と日本語でも打ち込んでみたがそちらでも問題なく動作した。
![Generate_AIcode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/52200797-9dd5-a052-c990-465dddeebc9f.png)
問題なければ`Accept`をクリックする。

## 生成したコードを実行
ターミナルを開く。
![New_Terminal](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729100/64c06366-387d-a8d2-88c4-b459c61c1d9a.png)
C言語なのでおなじみのコンパイルをした後、実行する。
```Terminal.
> gcc HelloWorld.c -o HelloWorld
> ./HelloWorld
Hello, world!
```
問題なくHello Worldのコードが生成できることを確認できた。

# 感想
まだほとんど使っていない状態で感想を書くのもあれですが、簡単なプログラミングであればこのAIコードエディタを使えば普通に生成してくれそうです。
正直いって最初の環境導入さえしてしまえば、恐らく非情報系理系大学のプログラミング講義レベルであればAIコードエディタで瞬殺できてしまうだろう。

https://x.com/MTNRFG/status/1812098206635008431

某ネット芸人が大学のプログラミングの課題で苦労していることをふと思い出した。
やっぱり最近の大学生はこの手のAIツールを使いこなしプログラミングの課題を一瞬で終わらせているのかがちょっと気になったりした。