井出草平の研究ノート

LLMによるRのコーディング支援環境の構築—Positron + Continue + DeepSeek API

この記事では、RStudioではなく Positron を使い、Continue 拡張を通じて DeepSeek API を利用する方法をまとめておく。

概要

RのIDEというとRStudioである。
RStudioでLLM補助を使おうとするとpositのProプランに加入する必要がある。

https://posit.ai/

月額20ドルなので入りたい人は入ればいいのだが、各タスクで専用のAIプランに入っていると、AIの多重課金者の道へまっしぐらなので、ほかの道を探すことにした。

RStudio内でLLMを使う方法としてはellmerchattrといったパッケージが有名だ。RStudioという慣れた環境下で動かせるメリットもあるが、下記で述べるように、致命的な欠点がある。

VSCodeを使い、R拡張でRの分析をするという手もあるが、VSCodeはRStudioほどR分析に特化していないため、オブジェクトやデータの把握、パッケージの把握、プロットの表示などで不便を感じることが多い。

そこで中間的な選択肢として Positron を使う。PositronはR向けIDEでありながらVS Code系の拡張機能を利用できるため、抜け道がいくつかある。その一つが拡張機能のContinueである。

Continueを使えば、R分析環境の中にLLMチャットを常駐させられる。

今回の構成は以下である。

Positron
  └ Continue
      └ DeepSeek API

この構成により、低コストなDeepSeek APIを使いながら、RコードやRmdを見ながら要約・修正・相談を行える。

なぜDeepSeek APIか

LLMを使ったRのコーディング支援や解析結果の要約には、OpenAI APIをはじめとする大規模言語モデルがよく使われる。しかし、これらはコストが高くなりがちである。

一方、DeepSeek APIは、OpenAI互換のAPIでありながら、コストを抑えて利用できる点が魅力である。特に、Rの解析結果の要約やコード修正といった定型的なタスクでは、DeepSeekのreasoning系モデルが有効に働くことが多い。

こちらに主要LLM APIの料金比較表を示します(2026年時点の一般的な価格、変動の可能性あり)。

系列 代表的な最新フロンティアモデル 入力 / 100万token 出力 / 100万token 備考
OpenAI / ChatGPT系 GPT-5.5 $5.00 $30.00 標準価格。長文コンテキストでは入力 $10.00、出力 $45.00。
Google Gemini Gemini 3.1 Pro Preview $3.60 $21.60 20万token以下の価格。20万token超では入力 $7.20、出力 $32.40。出力料金にはthinking tokensを含む。
Anthropic Claude Claude Opus 4.7 $5.00 $25.00 Claude系の最新上位モデル。Sonnet 4.6は入力 $3.00、出力 $15.00。
DeepSeek DeepSeek V4 Flash / deepseek-chat $0.14 $0.28 deepseek-chat はV4 Flashの非thinking mode相当。入力キャッシュヒットは大幅に安い。
Moonshot AI / Kimi Kimi K2.5 $0.60 $3.00 thinking / non-thinking、視覚入力、エージェント用途に対応。最新のKimi K2.6は入力 $0.95、出力 $4.00。

LLMの多重課金者から抜け出すにはDeepSeek APIを活用するのが現実的である。また、DeepSeekはコストパフォーマンスが優れているだけではなく、コーディング能力においても、他のフロンティアモデルと遜色ない性能があるため、コーディング支援や解析結果の要約に十分な性能を発揮することが期待できる。

なぜRStudioではなくPositronか

RStudioでは、ellmer を使ってDeepSeek APIを呼び出すことはできる。

library(ellmer)

chat <- chat_deepseek(
  model = "deepseek-chat"
)

chat$chat("これは接続テストです。『接続成功』とだけ返してください。")

これは安定して動く。

一方で、RStudio内にチャットUIを出す chattr は、Shinyアプリとして起動する。

library(chattr)

chattr_use(chat)
chattr::chattr_app()

DeepSeek自体は動作するが、ShinyアプリがRセッションをブロックするため、Rコードを実行しながら横でAIに相談する常駐用途には向きにくい。

その点、PositronではContinue拡張を使える。ContinueはIDEのサイドバーに常駐するため、Rコンソールやエディタを使いながらAIチャットを併用できる。ここがキモである。

Continueを導入する

Positronの拡張機能から Continue をインストールする。

ContinueはオープンソースのAIコード支援拡張で、チャット、コード編集、補完、Agentモードなどを提供する。DeepSeek APIにも対応している。

インストール後、Continueのサイドバーを開き、Local Configを使う。

DeepSeek APIを設定する

Continueの設定ファイルは、通常以下にある。

C:\Users\User-names\.continue\config.yaml

User-namesは各自のユーザーネーム。

このファイルにDeepSeek Chatを登録する。

name: Local Config
version: 1.0.0
schema: v1

models:
  - name: DeepSeek Chat
    provider: deepseek
    model: deepseek-chat
    apiKey: YOUR_DEEPSEEK_API_KEY
    roles:
      - chat
      - edit
      - apply


  - name: DeepSeek Reasoner
    provider: deepseek
    model: deepseek-reasoner
    apiKey: YOUR_DEEPSEEK_API_KEY
    roles:
      - chat
      - edit
      - apply

YOUR_DEEPSEEK_API_KEY にはDeepSeekのAPIキーを入れる。 DeepSeek APIでは deepseek-chat と推論型の deepseek-reasoner もいれる。deepseek-chat は安価で高速な通常利用向けであり、R解析結果の定型要約や軽いコード修正には十分である。一方、解析方針の検討、エラー原因の切り分け、複雑なRmdの構成整理、論文結果欄の表現調整など、情報をよく整理してほしい場面では deepseek-reasoner の方が向いている。

設定後、Positronを再読み込みする。

Ctrl + Shift + P
Developer: Reload Window

Continueのモデル選択欄で DeepSeek Chat が選べるようになれば成功である。

動作確認

Continueのチャット欄で以下を入力する。

次の文字列をそのまま出力してください:
DEEPSEEK_TEST_123

返答が

DEEPSEEK_TEST_123

となれば、PositronからDeepSeek APIを使えている。

この時点で、以下の構成が成立している。

Positron + Continue + DeepSeek API

R解析結果の要約に使う

たとえばRで以下を実行する。

result_text <- capture.output(summary(lm(mpg ~ wt, data = mtcars)))
paste(result_text, collapse = "\n")

得られた結果をContinueに貼り、以下のように依頼する。

結果を400字程度で要約して

これだけでも要約できるが、出力が箇条書きになったり、前置きが出たりすることがある。論文の結果欄に使うには、プロンプトを固定した方がよい。

/result-summary400 を作る

Continueでは、config.yamlprompts: を直接書くことで、独自のプロンプトを / コマンドとして呼び出せる。

以下のように config.yaml に追記する。

prompts:
  - name: result-summary400
    description: R解析結果を論文の結果欄向けに400字程度で要約する
    prompt: |
      次の解析結果を、論文の結果欄向けの日本語で要約してください。
      出力は本文のみとしてください。
      前置き、見出し、説明、注釈、依頼への応答文、定型句は一切出力しないでください。
      「解析結果に基づき」「ご指定の指示に従って」「要約文です」「以下の通りです」などの文言は出力しないでください。
      助言、質問、コードも出力しないでください。
      1段落で350から420字程度で書いてください。
      与えられた情報のみを用いてください。
      有意差が明示されていない場合は、有意であるとは書かないでください。
      慎重な表現を用いてください。
      数値や方向性の重要な点は、可能な範囲で落とさず含めてください。

Continueの入力欄で / を打つと、result-summary400 が候補に出る。

重要なのは、プロンプトファイルを別途置くより、config.yaml に直接書く方が安定したという点である。
特にWindows + Positron環境では、.continue/prompts にMarkdownファイルを置いても認識が不安定だった。

Positron Assistantを使わない理由

Positronには標準機能として Positron Assistant がある。実際、Positron AssistantはR分析環境に統合されたAI補助機能であり、GitHub Copilotなどのプロバイダも選択できる。RStudioよりもAI利用を前提にした設計になっている点は大きな利点である。

しかし、今回の目的は DeepSeek APIを直接使って、低コストにRのコーディング支援と解析結果要約を行うことである。この点では、Positron AssistantよりもContinueの方が扱いやすかった。

理由は主に3つある。

第一に、Positron Assistantは利用できるプロバイダやモデルが限定される。OpenAI互換APIの設定欄はあるものの、DeepSeekを安定して使えるかはまだ不確実である。特に、DeepSeekのreasoning系モデルや独自レスポンス形式との相性には注意が必要である。

第二に、Continueでは config.yaml にモデルとプロンプトを直接定義できる。今回のように、DeepSeek Chat を明示的に登録し、さらに /result-summary400 のような独自プロンプトを作る運用がしやすい。R解析結果の要約という定型作業では、このようなプロンプトの固定化が重要である。

第三に、ContinueはVS Code系拡張として、チャット、編集、適用、Agent的な操作に対応している。Positron上でもサイドバーに常駐できるため、RコードやRmdを見ながらDeepSeekに相談できる。これは、RStudioの chattr のようにRセッションを占有する方式よりも実用的である。