本文へ移動
AI Dev Lab Japan AI開発ツール、AIコーディングエージェント、M...

Ollamaでローカルコードレビューを回す前に:qwen2.5-coder:1.5bの失敗ログで見る限界

Ollamaでローカルコードレビューを回す前に:qwen2.5-coder:1.5bの失敗ログで見る限界の判断ポイントを表す抽象サムネイル

OllamaでローカルLLMを動かせると、コードレビューも手元で安く回せそうに見えます。実際、qwen2.5-coder:1.5bは1GB弱でpullでき、APIもCLIも扱いやすく、検証の入口としてはかなり軽いモデルです。

ただし、今回の最小検証では「動いた」ことと「レビューとして使える」ことは別でした。TypeScriptの請求計算に、税額へquantityを掛け忘れるバグを入れたところ、Ollama上のqwen2.5-coder:1.5bは正常終了したものの、狙った修正を明確に示せませんでした。さらに、taxablenumberであるという誤検知も混ざりました。

この記事では、2026年6月6日 JSTに確認したOllama 0.24.0とqwen2.5-coder:1.5bのローカル実行ログをもとに、軽量ローカルモデルをコードレビューへ入れる前の判断基準を整理します。X/Twitterは需要シグナルとして確認しましたが、対象として指定されたアカウントの直近72時間の明確な投稿は通常取得と検索では確認できませんでした。本文の技術的な根拠は、OllamaとQwenの公式情報、Hugging Faceモデルカード、ローカル検証ログに限定します。

3行まとめ

Visual失敗ログで見る3つの結論qwen2.5-coder:1.5bのローカル検証から、採用判断の見方を整理します。
狙った修正

今回のTypeScript請求計算バグでは狙った修正を示せなかった。

合否の見方

正解バグ、根拠行、誤検知、手動期待値との突き合わせで見る。

置き場所

差分要約、観点出し、比較用ベースライン、ログ設計の練習に置く方が安全。

出力の長さや正常終了ではなく、肝心の計算ミスを拾えたかを見る。

  • qwen2.5-coder:1.5bはOllamaで軽く動かせるが、今回のTypeScript請求計算バグでは狙った修正を示せなかった。
  • ローカルコードレビューの合否は、出力の長さや正常終了ではなく、正解バグ、根拠行、誤検知、手動期待値との突き合わせで見る。
  • 実務では、軽量モデルをレビュー担当に置くより、差分要約、観点出し、比較用ベースライン、ログ設計の練習に置く方が安全。

この記事でわかること

Visualローカルコードレビューの確認項目Ollamaで試す前に、ログへ残す項目とレビュー失敗の条件を押さえます。
ログへ残す項目

Ollamaでローカルコードレビューを試す時に、最初にログへ残すべき項目。

実測結果

qwen2.5-coder:1.5bの今回の実測結果と、見落としたバグの内容。

失敗条件

CLIがexit 0でも、レビューとして失敗と判断すべき条件。

任せる範囲

小型ローカルモデルに任せやすい作業、補助にとどめる作業、任せない作業。

運用上の注意

ローカル実行でも残るセキュリティ、ログ、コスト、運用上の注意。

レビュー採用の前に、正解バグ、誤検知、ログ保存先をそろえる。

  • Ollamaでローカルコードレビューを試す時に、最初にログへ残すべき項目
  • qwen2.5-coder:1.5bの今回の実測結果と、見落としたバグの内容
  • CLIがexit 0でも、レビューとして失敗と判断すべき条件
  • 小型ローカルモデルに任せやすい作業、補助にとどめる作業、任せない作業
  • ローカル実行でも残るセキュリティ、ログ、コスト、運用上の注意

前提知識

Visual今回確認した前提Ollama、qwen2.5-coder:1.5b、公式情報、手元のollama showを分けて見ます。
項目内容見方
Ollamaローカル環境でモデルを実行するためのCLIとAPIを提供しています。
Generate APItotal_duration、prompt_eval_count、eval_countなどの計測値も含まれます。
qwen2.5-coder:1.5bQwen2.5-Coder系の1.5Bモデルです。
ollama showarchitectureはqwen2、parametersは1.5B、context lengthは32768、quantizationはQ4_K_M。
モデルカード1.5B Instructモデルは1.54B parameters、context length 32768 tokens。

モデルがコード向けであることと、レビュー品質が十分であることは同じではない。

Ollamaは、ローカル環境でモデルを実行するためのCLIとAPIを提供しています。公式CLIドキュメントではollama run gemma3のようにモデルを実行する例が示され、APIドキュメントでは標準でhttp://localhost:11434/apiからモデルを呼び出せると説明されています。Generate APIのレスポンスには、生成テキストだけでなく、total_durationprompt_eval_counteval_countなどの計測値も含まれます。

今回使ったqwen2.5-coder:1.5bは、Ollama Libraryで提供されているQwen2.5-Coder系の1.5Bモデルです。Ollamaのモデルページでは、Qwen 2.5 Coderシリーズが0.5B、1.5B、3B、7B、14B、32Bのサイズを持ち、コード生成、コード推論、コード修正の改善をうたっています。手元のollama show qwen2.5-coder:1.5bでは、architectureはqwen2、parametersは1.5B、context lengthは32768、quantizationはQ4_K_M、licenseはApache License 2.0と表示されました。

Qwen公式ブログとHugging FaceのQwen/Qwen2.5-Coder-1.5B-Instructモデルカードも確認しました。モデルカードでは、Qwen2.5-Coderがコード特化のQwenモデル系列であり、1.5B Instructモデルは1.54B parameters、context length 32768 tokensと説明されています。Qwen公式ブログ側では、Qwen2.5-Coderシリーズのうち0.5B、1.5B、7B、14B、32BはApache 2.0、3BはQwen Research licenseと整理されています。

ここで大事なのは、モデルがコード向けであることと、レビュー品質が十分であることは同じではない、という点です。ローカルLLMを開発業務へ入れる全体像は、先にOSS LLMを開発業務に使う判断基準で整理しています。この記事は、その中でも「ローカルコードレビューを本当に任せられるか」を小さく切り出した検証です。

結果

Visual計算結果とレビュー結果手動期待値、CLIレビュー、API補足を同じ表で見ます。
項目内容見方
現在の計算結果310。税額が1個分だけ加算されている。
期待値330。3個分の税額を含む。
差分20。2個分の税額が抜けている。
CLIレビューexit 0、約34.52秒、出力2150文字。狙ったlineTotal * taxRateの修正を示せなかった。
API補足HTTP 200、14.59秒、47.52 tokens/sec相当。それでもレビュー内容は採用できなかった。

速く返ることは有用ですが、レビューの正しさを保証しません。

今回の結論は、qwen2.5-coder:1.5bをローカルコードレビューの単独担当に置く根拠は得られなかった、です。

対象コードには、次のような税額計算のバグを入れました。

const lineTotal = item.price * item.quantity;
const tax = item.taxable ? item.price * taxRate : 0;
return total + lineTotal + tax;

本来、課税対象の行では税額も数量に応じて増えるため、taxlineTotal taxRate、またはitem.price item.quantity * taxRateで計算する必要があります。手動チェックでは、price=100quantity=3taxRate=0.1のとき、現在値は310、期待値は330、差分は20でした。

項目今回の値判断
現在の計算結果310税額が1個分だけ加算されている
期待値3303個分の税額を含む
差分202個分の税額が抜けている

Ollama CLIでのレビュー実行は正常終了しました。qwen2.5-coder:1.5bをpullした後、プロンプトに対象コードとレビュー形式を渡し、出力ファイルへ保存しています。ログ上はexit 0、約34.52秒、出力2150文字でした。

しかし、出力はレビューとして採用できませんでした。狙ったlineTotal * taxRateの修正を示せず、taxablebooleanではなくnumberであるかのような指摘を出しました。実際の型定義ではtaxable: booleanなので、この指摘はコードに基づかない誤検知です。

補助的にOllama APIの/api/generatestream: falseでも実行しました。HTTP 200で、prompt_eval_countは233、eval_countは672、total_duration_secondsは14.59、eval_tokens_per_secondは47.52でした。ただし、こちらも先頭で型の不一致を疑う内容から入り、狙ったバグを安定して説明できたとは判断しませんでした。速く返ることは有用ですが、レビューの正しさを保証しません。

失敗点

Visual失敗を見落とす流れ正常終了、誤検知、プロンプト改善をレビュー成功と取り違えないようにします。
  1. 1正常終了

    モデルもpullでき、CLIもAPIも返答した。ここだけ見るとPoCは成功に見える。

  2. 2正解バグ

    正解バグが1つ決まっている場合は、そのバグに到達できたかを最初に見る。

  3. 3誤検知

    taxableがnumberであるかのように扱い、修正案やテストケースもそこへ引っ張られていた。

  4. 4プロンプト

    concrete correctness bugsとmissing test casesに絞っても、出力は型の誤認へ流れた。

  5. 5採用可否

    プロンプト、サンプルコード、期待値、採用可否を一緒に残す。

プロンプトを整えたからレビューを信用できる、という順番にはしない方が安全です。

正常終了をレビュー成功と見間違えやすい

ローカルLLM検証で最初に起きやすい失敗は、コマンドが動いたことに安心してしまうことです。今回も、Ollamaの実行自体は問題なく完了しました。モデルもpullでき、CLIもAPIも返答しました。ここだけ見ると、ローカルコードレビューのPoCは成功に見えます。

でも、コードレビューで必要なのは「何かを返す」ことではありません。今回のように、正解バグが1つ決まっている場合は、そのバグに到達できたかを最初に見ます。出力が長くても、重大度や修正案の見出しがそろっていても、肝心の計算ミスを拾えていなければレビューとしては失敗です。

評価基準

今回の評価では、lineTotal * taxRateに相当する修正へ到達したか、手動期待値の差分20を説明できたか、コードにない型エラーを作っていないかを見ました。正常終了や出力文字数は、採用判断の補助情報にとどめています。

誤検知がレビュー負荷を増やした

今回の出力には、taxable属性の型に関する誤検知がありました。TypeScriptの型定義ではtaxable: booleanです。それにもかかわらず、モデルはtaxablenumberであるかのように扱い、修正案やテストケースもそこへ引っ張られていました。

このタイプの誤検知は、レビュー担当者の時間を奪います。単なる見落としなら「拾えなかった」と判断できますが、もっともらしい誤検知が混ざると、人間がその指摘を確認し、否定し、場合によっては他の正しい指摘まで疑う必要があります。AIコードレビューをPRに入れる場合も、AIコードレビューと人間レビューの分担設計で書いたように、AIのコメントをそのまま承認材料にしないルールが必要です。

プロンプトだけでは正解保証にならなかった

プロンプトでは「concrete correctness bugs」と「missing test cases」に絞り、重大度、問題、根拠、修正案、最小テストケースを日本語で出すように指定しました。それでも、出力は型の誤認へ流れました。

確認項目

プロンプトを変える時は、正解バグ、期待値、AIの出力、誤検知、採用可否を同じ単位で残します。文章が自然になったかではなく、修正対象へ近づいたかを見ます。

これは、プロンプトが不要という意味ではありません。むしろ逆で、プロンプト、サンプルコード、期待値、採用可否を一緒に残さないと、どの条件で失敗したのかが後からわかりません。ただし、プロンプトを整えたからレビューを信用できる、という順番にはしない方が安全です。

実務で使うなら

Visualログに残す内容と任せる範囲正解付きの小さなバグで測り、用途を限定して置きます。
項目内容見方
検証メモ実行日やOllama versionなどは更新履歴や検証ログに短く残す。
モデルmodel name、model ID、size、quantization、context length。
正解仕込んだバグ、期待値、最小テストケース。
差分要約人間レビュー前の下読みとして使う。
レビュー観点出しセキュリティ、テスト、命名、境界値などのチェックリストを作らせる。
学習用サンプル新人やチーム向けに、AIレビューの失敗例として使う。

そのまま採用、補助に限定、見送りを同じ基準で比較します。

まず正解付きの小さなバグで測る

ローカルLLMのレビュー品質を測るなら、最初は実リポジトリの大きなPRではなく、正解がわかっている小さなバグから始めます。今回のように、期待値を手動で計算できるサンプルを用意し、モデルがその差分を説明できるかを見ます。

確認項目

最初のログには、対象コード、プロンプト、期待する出力形式、仕込んだバグ、手動期待値、AIの指摘、狙った修正の有無、誤検知、採用判断を残します。Ollama versionやmodel IDなどの実行メモは、本文中で長く表にせず、更新履歴や検証ログに短く残す方が読みやすくなります。

この記録を作っておくと、モデルサイズを1.5Bから7B、14Bへ上げた時や、プロンプトを変えた時に、同じ基準で比較できます。比較軸をそろえる考え方は、比較表にもつながります。

任せやすいこと、任せないことを分ける

qwen2.5-coder:1.5bのような軽量モデルは、実務で完全に使えないわけではありません。今回の失敗ログから見ても、置き場所を限定すれば役に立つ余地はあります。

用途置き方
差分要約人間レビュー前の下読みとして使う
レビュー観点出しセキュリティ、テスト、命名、境界値などのチェックリストを作らせる
学習用サンプル新人やチーム向けに、AIレビューの失敗例として使う
ベースライン大きいモデルや別プロンプトとの比較対象にする

一方で、課金、請求、権限、個人情報、セキュリティ修正、データ削除、外部API操作の最終判断には置かない方がよいです。軽量モデルが見落とす可能性だけでなく、誤検知でレビューの焦点をずらす可能性もあります。

上振れ条件

差分が小さく、期待値が明確で、既存テストやレビュー観点がそろっている時は、軽量モデルでも下読みの助けになります。逆に、業務ルールの解釈や金額計算の正しさをAIコメントだけで判断する用途には向きません。

テストと人間レビューを先に置く

ローカルコードレビューを使う場合でも、最終的な安全策はモデルのコメントではなく、テストと人間レビューです。今回のバグなら、次のような最小テストがあるだけで、レビューコメントに頼らず検出できます。

const items = [{ id: "a", price: 100, quantity: 3, taxable: true }];
expect(calculateInvoiceTotal(items, 0.1)).toBe(330);

AIには、このテストを提案できるか、既存テストとの差分を説明できるか、境界値を追加できるかを見せる方が現実的です。最初から「AIがバグを見つける」前提にすると、今回のような見落としがそのままPRに残ります。

セキュリティ・コスト注意

Visualローカルでも残る注意点外部APIへ送らない構成でも、秘密情報、評価表、権限設計は別に考えます。
秘密情報

プロンプト、生成ログ、端末履歴、共有マシン、バックアップ、RAG用の索引に残る可能性があります。

ダミー値

APIキー、顧客情報、非公開の脆弱性情報、本番データを含むログはダミー値へ置き換える。

評価表

7Bや14Bを試すなら、同じサンプル、同じプロンプト、同じ評価表で測る。

コスト

ダウンロード時間、ストレージ、メモリ、電力、待ち時間、誤検知を確認する時間がかかる。

tool calling

tool callingに関係する能力と、コードレビューで正しい指摘を出す能力は別です。

権限

read-onlyから始め、人間承認、ログ、取り消し手順を分けて設計する。

ローカルだから何を入れても安全、とは言えません。

ローカル実行でも秘密情報は入れない

Ollamaでローカル実行する場合、外部APIへコードを送らない構成にしやすいのは利点です。ただし、ローカルだから何を入れても安全、とは言えません。

プロンプト、生成ログ、端末履歴、共有マシン、バックアップ、RAG用の索引、チーム内の検証ログ置き場に、社内コードや秘密情報が残る可能性があります。APIキー、顧客情報、非公開の脆弱性情報、本番データを含むログは、検証用に必ずダミー値へ置き換えるべきです。

注意点

ローカル実行の安全性は、ネットワーク送信の有無だけでは決まりません。誰がログを読めるか、どこにバックアップされるか、後から削除できるかまで含めて決めます。

モデルサイズを上げる前に評価表を作る

今回の1.5Bモデルは、約986MBでpullできました。軽い分、検証の入口には向きます。ただ、レビュー品質が足りないからといって、すぐ大きいモデルへ上げるだけでは比較になりません。7Bや14Bを試すなら、同じサンプル、同じプロンプト、同じ評価表で測る必要があります。

コストはAPI料金だけではありません。ローカルの場合も、ダウンロード時間、ストレージ、メモリ、電力、待ち時間、レビュー担当者が誤検知を確認する時間がかかります。特にチーム運用では、モデルを各自の端末に置くのか、共有サーバーに置くのか、ログを誰が見られるのかを先に決めておく必要があります。

確認項目

モデルサイズを上げる時は、正解バグを拾ったか、誤検知が減ったか、処理時間が許容できるか、レビュー担当者の確認時間が減ったかを同時に見ます。速度だけが改善しても、採用判断は変えません。

tool calling対応とレビュー品質を混同しない

手元のollama showでは、qwen2.5-coder:1.5bのcapabilitiesにtoolsが表示されました。これは注目ポイントですが、tool callingに関係する能力と、コードレビューで正しい指摘を出す能力は別です。

AIエージェントにMCPや外部ツールを渡すと、レビューだけでなくファイル読み取り、コマンド実行、Issue操作、PR作成へ広がります。ローカルモデルであっても、権限を広げる場合はread-onlyから始め、人間承認、ログ、取り消し手順を分けて設計してください。AIコーディング全体の比較前提は、AIコーディングエージェント導入ガイドも参考になります。

導入しない方がよいケース

Visual見送りの条件軽量ローカルモデルをコードレビュー担当として入れる前に確認します。
正解付き検証

正解付きの小さな検証をしていない。

誤検知確認

AIの誤検知を誰が確認するか決まっていない。

重要領域

課金、請求、認可、個人情報、セキュリティ修正をAIコメントだけで通そうとしている。

秘密情報

ログに秘密情報が入る可能性を潰していない。

採用判断

モデル名、version、prompt、出力、採用判断を残せない。

CI

テストが薄く、AIレビューの見落としをCIで検出できない。

導入できる範囲を狭く、説明可能にするための条件です。

次の条件では、軽量ローカルモデルをコードレビュー担当として入れるのは見送った方がよいです。

  • 正解付きの小さな検証をしていない
  • AIの誤検知を誰が確認するか決まっていない
  • 課金、請求、認可、個人情報、セキュリティ修正をAIコメントだけで通そうとしている
  • ログに秘密情報が入る可能性を潰していない
  • モデル名、version、prompt、出力、採用判断を残せない
  • テストが薄く、AIレビューの見落としをCIで検出できない

ローカルLLMは、導入しない理由を探すためのものではありません。むしろ、導入できる範囲を狭く、説明可能にするための道具です。今回のように失敗ログを先に作っておくと、チーム内で「どこまでは任せるか」を話しやすくなります。

FAQ

Visualよくある判断の分岐モデル評価、社内コード、速度、安全な始め方を短く整理します。
コードレビュー

今回のTypeScript請求計算バグでは、狙った修正を示せず、誤検知も出しました。

社内コード

ログ保存先、アクセス権、削除手順、秘密情報のマスクを先に決めてください。

大きいモデル

同じサンプル、同じ期待値、同じ評価表で比べます。

速度

速度は、正しさを確認した後に比較する項目です。

始め方

プロンプト、モデル、出力、正解バグ、誤検知、採用判断をログ化します。

実リポジトリへ入れるのは、数種類のバグで評価表が埋まってからで十分です。

qwen2.5-coder:1.5bはコードレビューに向いていないのですか

今回の単発検証だけで、モデル全体を断定するつもりはありません。ただし、少なくとも今回のTypeScript請求計算バグでは、狙った修正を示せず、誤検知も出しました。そのため、実務の単独レビュー担当として採用する根拠にはなりません。差分要約、観点出し、比較用ベースラインから始めるのがよいです。

ローカルLLMなら社内コードをそのまま入れてよいですか

おすすめしません。外部APIに送らない構成でも、プロンプト、ログ、端末履歴、バックアップ、共有フォルダ、RAG索引に残る可能性があります。社内コードを使う検証では、ログ保存先、アクセス権、削除手順、秘密情報のマスクを先に決めてください。

もっと大きいモデルなら解決しますか

解決する可能性はありますが、確認は必要です。モデルサイズを上げる時は、同じサンプル、同じ期待値、同じ評価表で比べます。速度だけでなく、正解バグを拾ったか、誤検知が減ったか、根拠行を示したかを見ます。

APIのトークン数や速度はどこまで見るべきですか

見るべきですが、採用判断の主役ではありません。今回のAPI補足では、HTTP 200、14.59秒、47.52 tokens/sec相当の値が得られました。それでもレビュー内容は採用できませんでした。速度は、正しさを確認した後に比較する項目です。

何から始めるのが安全ですか

正解付きの小さなサンプルを1つ作り、プロンプト、モデル、出力、正解バグ、誤検知、採用判断をログ化します。次に、同じサンプルでモデルサイズやプロンプトを変えます。実リポジトリへ入れるのは、少なくとも数種類のバグで評価表が埋まってからで十分です。

関連資料と導線

Visual続けて検証する順番モデル比較より先に、評価表と失敗ログを作ります。
  1. 1評価表

    ローカルコードレビューを続けて検証するなら、モデル比較より先に評価表を作る。

  2. 2比較結果

    比較結果や失敗ログを後で見返す。

  3. 3ニュースレター

    AIコーディングツール、OSS LLM、MCP、エージェント権限設計の記事更新をまとめて案内しています。

比較より先に、同じ評価軸で見返せる形を作る。

ローカルコードレビューを続けて検証するなら、モデル比較より先に、評価表を作るのが近道です。ニュースレターでは、AIコーディングツール、OSS LLM、MCP、エージェント権限設計の記事更新をまとめて案内しています。比較結果や失敗ログを後で見返したい方は、ニュースレターも使ってください。

次に読むなら

参照した主な情報源

  • https://docs.ollama.com/cli
  • https://docs.ollama.com/api
  • https://docs.ollama.com/api/generate
  • https://ollama.com/library/qwen2.5-coder
  • https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct
  • https://qwenlm.github.io/blog/qwen2.5-coder/
  • https://qwenlm.github.io/blog/qwen2.5-coder-family/

更新履歴

Visual確認日と検証メモ2026-06-06 JST時点のローカル検証と公開前確認の前提です。
  1. 2026-06-06 JST

    Ollama 0.24.0、qwen2.5-coder:1.5bでローカル検証。model IDはd7372fd82851、sizeは986MB。

  2. 2026-06-06 JST

    CLI実行はexit 0だったが、狙ったlineTotal * taxRateの修正を示せず、taxableの型に関する誤検知を含んだ。

  3. 2026-06-06 JST

    スポンサー、アフィリエイト、検証環境提供はありません。

  4. 公開前確認

    公式情報とローカルログの確認は公開前に人間が行う前提で整理しています。

確認日、モデル、ログ、採用判断を後から追えるように残します。

  • 2026-06-06 JST: Ollama 0.24.0、qwen2.5-coder:1.5bでローカル検証。model IDはd7372fd82851、sizeは986MB、ollama show上のcontext lengthは32768、quantizationはQ4_K_M。TypeScript請求計算サンプルでは、CLI実行はexit 0だったが、狙ったlineTotal * taxRateの修正を示せず、taxableの型に関する誤検知を含んだ。
  • 2026-06-06 JST: スポンサー、アフィリエイト、検証環境提供はありません。本文の下書き、構成、校正にはAIを使い、公式情報とローカルログの確認は公開前に人間が行う前提で整理しています。