LangCodeではじめるAIコードアシスタント入門

AIコードアシスタントは、コードの自動生成だけでなく、既存の複雑なコードベースの理解やタスクの自動実行を通じて、開発者の作業を大きく変えつつあります。今回は、最近リリースされた「LangCode」と呼ばれるツールを紹介します。

LangCodeは、ReAct(Reasoning and Acting)と呼ばれるフレームワークと、様々なツール群を組み合わせたコードエージェントのコマンドラインインターフェース(CLI)です。このツールは、AI技術を活用し、コードベースを深く分析することで、機能実装、バグ修正、そしてコードのリファクタリング といった自動コーディングタスクを、効率的かつ安全に実行します。

LangCodeが提供する主要な利点は次のとおりです。

  • AI駆動のコード理解: コードベースを深く分析し、質問応答やプロジェクトに関するインサイト生成を可能にします。
  • マルチLLMサポート: Google GeminiやAnthropic Claudeといった大規模言語モデル(LLM)とシームレスに統合されており、タスクの複雑性や特性に応じて最適なモデルへインテリジェントにルーティングされます。
  • 安全な変更管理: 全てのファイル変更に対して明確な差分を生成し、ユーザーが変更内容をレビューして承認する仕組みがあるため、常に変更をユーザーの制御下に置くことができます。

本記事では、このLangCodeをゼロから使い始め、コーディング業務をどのように効率化できるかを、チュートリアル形式で詳しく解説していきます。まずは、対話型の機能による使いやすい基本設定から見ていきます。

ステップ1:環境構築と基本設定

LangCodeをAIコードアシスタントとして活用するためには、まず開発環境を整え、基本的な設定を行う必要があります。ここでは、インストール方法から、LangCodeの核となる設定概念を解説します。

インストール方法

LangCodeはPythonで提供されており、pipコマンドを使って簡単にインストールできます。システム全体をクリーンに保ち、依存関係の競合を防ぐため、インストールには仮想環境を使用することが強く推奨されています。

ここでは、uvを使用して仮想環境をセットアップした後、以下のコマンドでLangCodeをインストールします。

# 仮想環境を作成・アクティベート (例)
$ uv init langcode-learn && cd langcode-learn

# LangCodeをインストール
$ uv add --dev langchain-code

# インストールしたバージョンを確認
$ uv pip list | grep langchain-code
langchain-code               0.0.8

対話型ランチャーの起動

LangCodeの設計において、使いやすさを実現している主要な機能が対話型ランチャーです。インストール後、ターミナルで uv run langcode と入力して実行するだけで、ユーザーフレンドリーな対話型メニューが起動します。

このメニューは、すべてのコーディングタスクの中心的なハブとして機能します。ユーザーは、特定のコマンドライン引数を一つ一つ覚えていなくても、このインターフェースを通じてセッションの設定を行ったり、チャット、機能実装、バグ修正といった主要な機能へ容易にアクセスしたりできます。

図1. LangCodeの起動画面

LLMの設定

LangCodeがコードエージェントとして動作するためには、大規模言語モデル(LLM)の設定が不可欠です。Anthropic ClaudeやGoogle Gemini などのLLMプロバイダーのAPIキーは、プロジェクトディレクトリに配置される.envファイルに環境変数として格納されます。この.envファイルは、対話型ランチャーのメニューから追加・編集することが可能です。

LangCodeがタスクに使用するLLMプロバイダーを決定する際には、以下の優先順位で設定が解決されます。

  1. --llm コマンドラインオプション
  2. LLM_PROVIDER 環境変数
  3. デフォルト値として設定されている gemini

この優先順位により、ユーザーはコマンド実行時や環境変数を通じて、使用するモデルを柔軟にオーバーライドできます。

基本コンセプトの理解

LangCodeを効果的に使用するために、いくつかの重要な基本コンセプトを理解しておきましょう。

  • プロジェクトディレクトリ (--project-dir):
    エージェントがコードベースに対して作業を行う際のルートディレクトリを指定します。このパラメータはエージェントのアクセス範囲を制限し、セキュリティを強化する役割も持ちます。このオプションを指定しない場合、LangCodeはデフォルトで現在の作業ディレクトリを使用します。
  • 適用モード (--apply):
    このフラグは、自動化されたワークフローを可能にする重要なオプションです。通常、LangCodeはファイルへの変更やシェルコマンドの実行前に、ユーザーに対話的な確認を求めますが、--applyを設定すると、エージェントは確認なしで自動的に変更をコードベースに適用し、コマンドを実行します。これにより作業の効率化が図れますが、手動レビューをバイパスするため、「慎重に使用すること」が注意喚起されています。

ステップ2:LangCodeを使った主要な実用ワークフロー

LangCodeは、頻繁に対応する様々なコーディングタスクに対応するために、4つの主要なコマンドラインインターフェースを提供しています。これらのコマンドは、コードベースとの対話から、複雑な機能の実装やバグ修正に至るまで、開発ワークフローを根本から効率化します。

対話セッション (Chat)

langcode chat コマンドを実行すると、エージェントとのリアルタイムな対話セッションが開始されます。特定のコードベースを探索したり、質問をしたり、スコープを絞った小さなコード編集を実行したりする際に非常に有用です。

特に複雑なタスクに取り組む場合は、--modeオプションでディープモード(deep mode)を選択できます。ディープモードは、より複雑で多段階にわたる推論を可能にするための推論エンジンです。さらに、ディープモードでのみ、エージェントが計画から実行までユーザーの確認なしに自律的にタスクを完了するオートパイロットモード--autoフラグで有効化できます。ただし、この自律実行モードは手動レビューをバイパスするため、「慎重に使用すること」が推奨されています。

また、チャットセッション中には/imgというディレクティブを使用でき、プロンプトと共に関連する画像をエージェントに分析させることが可能です。

# 基本的な使い方
$ uv run langcode chat

# 高度な利用例
$ uv run langcode chat --llm gemini --mode deep --auto

機能実装 (Feature Implementation)

langcode featureコマンドは、新しい機能の計画、編集、検証といった一連のワークフローを自動化します。このコマンドは、コードベースに新機能を追加するプロセスをエンドツーエンドで自動化するように設計されています。

  • ワークフロー: 計画 (plan) → 検索 (search) → 編集 (edit) → 検証 (verify) の順序で処理が進みます。
  • 以下の例では、新機能実装をリクエストし、--applyによって変更を自動的にファイルシステムに適用し、指定されたテストコマンド(pytest -q)を実行して変更内容を検証します。エージェントはテストコマンドの出力を分析し、変更が成功したかどうかを判断します。
# 実用例 (テスト検証の自動化)
$ uv run langcode feature "ユーザー認証機能の追加(JWT使用)" --test-cmd "uv run pytest -q" --apply

バグ修正 (Bug Fix)

langcode fixコマンドは、バグの診断から、特定、パッチ(修正)適用、テスト実行に至るまでのワークフローを自動化し、バグ修正プロセスを支援します。

  • ワークフロー: トレース (trace) → 特定 (pinpoint) → パッチ (patch) → テスト (test) という順序で処理が進みます。
  • --logオプションを使用することで、エラーログやスタックトレースのファイルパスをエージェントに提供でき、診断プロセスを大いに助けることができます。featureコマンドと同様に、--test-cmd--applyを利用することで、修正と検証のステップを自動化できます。
# 実用例 (ログファイルからの修正)
$ uv run langcode fix "メモリリークの解消" --log /path/to/error.log --test-cmd "uv run pytest -q" --apply

コード分析 (Analyze)

langcode analyzeコマンドは、コードベース全体を分析し、プロジェクトに関するインサイト(洞察)を生成するために特化しています。

この機能は、複雑な作業のために設計されたDeep Agentアーキテクチャを利用して実行されます。プロジェクトの概要を迅速に理解したり、アーキテクチャ構成について分析したりする際に非常に有用です。

# 使用例
$ uv run langcode analyze "プロジェクトの主要コンポーネントは何か?"

ステップ3:エージェントの内部構造と推論エンジン

LangCodeが、なぜ複雑なコーディングタスクを効率的に処理できるのか。その鍵は、高度なルーティングシステムと、タスクの性質に応じて切り替わる2つのエージェントアーキテクチャにあります。ここでは、LangCodeの動作を支える内部構造と推論エンジンについて、技術的な側面から深く掘り下げます。

ハイブリッドなLLMルーティング

LangCodeは、Hybrid Intelligent LLM Router を備えています。これは、ルールによって拡張され、フィードバックを認識するルーターであり、クエリの複雑性、コンテキストサイズ、レイテンシ、およびコストに基づいて、タスクに最適なLLMを自動的に選択します。

このスマートなルーティング機能を有効にするには、--routerフラグを使用します。さらに、--priorityオプションを設定することで、ルーティングの優先度を調整できます。

LangCodeで使用されるデフォルトのモデル構成は以下の通りです。

  • Anthropic: claude-3-7-sonnet-2025-05-14
  • Gemini: gemini-2.0-flash

全てのモデルは、コーディングタスクに適した、より決定論的で集中的な出力を促すため、温度(temperature)0.2 で初期化されています。低い温度値は、モデルの出力のランダム性を減らし、より予測可能で一貫性のあるものにします。

優先度オプション説明
balancedバランス(デフォルト)
costコスト(費用)を優先
speed速度を優先
quality品質を優先
表1. --priority オプションで指定できるパラメータ

2つのエージェントアーキテクチャ

LangCodeは、タスクの規模や複雑性に応じて、2つの異なるエージェントアーキテクチャを使い分けています。

ReAct Agent(高速・短期タスク向け)

ReAct Agentは、チャット、コードの読み込み、およびターゲットを絞った編集のための高速ループとして機能します。

  • メカニズム: ReAct(Reasoning and Acting:推論と行動)フレームワークに従い、エージェントは現在の状態について推論し、行動を決定し、その行動結果を観測するというプロセスを交互に実行します。このプロセスを繰り返すことで、環境からのフィードバックに基づいて戦略を動的に調整します。

Deep Agent(複雑・長期タスク向け)

Deep Agentは、複雑でマルチステップ、長期的なタスクを実行するために設計された、構造化されたマルチエージェントシステムです。LangGraphスタイルのアーキテクチャを使用して、多段階のタスクを実行します。

  • サブエージェント: Deep Agentは、特定の役割と責任を持つ複数の専門的なサブエージェントで構成されます。
    • Researcher(リサーチャー): Web検索(TavilySearchツールを使用)や、Model Context Protocol (MCP) を介した外部ツールとの対話を通じて、ローカルおよびWebのコンテキストを収集します。
    • Coder(コーダー): 全ての実装タスク(コードの読み書き、検証可能な最小限の差分の生成、テストの実行)を担当します。
    • Git Agent: 変更をステージングし、コミットを作成する役割を担います。
  • 安全性: Deep Agentの実行状態には、ディスクに触れる前に編集を安全にステージングするために使用される仮想ファイルが含まれます。

エージェントが使用するツール群

エージェントがコードベースと相互作用し、環境内で行動するために、多様な組み込みツールが提供されています。

ツールのカテゴリ主要なツールと機能
ファイルシステムツールlist_dir(ディレクトリ一覧表示)、glob(ファイル検索)、grep(ファイル内の正規表現パターン検索)、read_file(ファイル読み込み)、edit_by_diff(差分による編集)、write_file(ファイル書き込み)など。これらは安全でレビュー可能な編集を可能にします。
実行ツールrun_cmd(ゲート付きシェル実行)。プロジェクトディレクトリ内でシェルコマンドを実行し、テスト検証などを可能にします。実行前には確認ゲートがあります。
計画ツールwrite_todos。Deep Agentが永続的な計画項目(Todoリスト)を作成・管理するために使用されます。
その他のツールprocess_multimodal(チャットでのテキストと画像の理解)、外部検索ツール(TavilySearchなど)、Mermaidツール(図生成)、GitHubツール、およびMCPツール などがあります。
表2. エージェントが使用するツール群(CLIを利用する際にユーザーが意識する必要はない)

ステップ4:プロジェクト固有のカスタマイズと拡張

LangCodeの大きな特徴として、その柔軟性と拡張性があげられます。LangCodeは、単なる汎用的なAIアシスタントではなく、プロジェクト固有のルールや外部の機能・データソースと統合することで、開発者のニーズに合わせて高度にパーソナライズできます。

行動指針のカスタマイズ

プロジェクトのコードベースには、特定のコーディング規約、アーキテクチャの制約、または独自のルールやガイドラインが存在します。LangCodeは、これらのプロジェクト固有の指示をエージェントの動作に組み込むことが可能です。

  • プロジェクト指示ファイルの利用: エージェントの動作を調整するために、プロジェクト固有のルールやガイドラインを格納したファイルが利用されます。このファイルは、プロジェクトディレクトリ内のパス.langcode/langcode.mdに配置されます。
  • ファイル編集: この指示ファイルの内容は、Deep Agent がプロンプトを構築する際に読み込まれ、エージェントの振る舞いを細かくガイドします。
  • 専用コマンド: このプロジェクト指示ファイルを開くには、CLIコマンドlangcode instrを実行します。また、対話型ランチャーから直接このファイルを開いて編集することもできます(VS Code等の外部エディタで編集したものを配置してもよい)。

Model Context Protocol (MCP)による拡張

LangCodeは、Model Context Protocol (MCP) を通じてカスタムツールを統合することで、外部機能との連携を可能にし、拡張性を提供しています。

  • MCPとは: Model Context Protocol は、オープンソースフレームワークであり、大規模言語モデル(LLMs)のようなAIシステムが、外部ツール、システム、およびデータソースとデータを統合し、共有する方法を標準化します。
  • ツールの統合: LangCodeのDeep Agentのリサーチャーサブエージェントは、利用可能なMCPツールを介してMCPと相互作用します。ReAct Agentもまた、外部ツールとしてmcp_toolsを利用できます。
  • 設定ファイル: この外部機能(サーバー)を定義するには、設定ファイルを使用します。サーバーの定義は、ホームディレクトリの~/.langcode/mcp.json、またはプロジェクトディレクトリ内の./.langcode/mcp.jsonに格納されます。
  • 利用: 一度設定が完了すれば、Deep Agentの計画内 や、チャットセッション内 で、外部機能を自然な形で呼び出すことが可能になります。

おわりに

今回は、AIコードアシスタントであるLangCodeの環境構築から、ワークフロー、そしてその背後にある技術アーキテクチャを解説しました。

LangCodeは、typerライブラリ を活用した使いやすく強力な対話型CLIを主要なエントリポイントとしています。また、クエリの複雑性、コンテキストサイズ、レイテンシ、コストに基づいて最適なLLMを自動選択するハイブリッドなインテリジェントLLMルーティング や、高速なReAct Agent と複雑なタスクに対応するDeep Agent という柔軟なアーキテクチャを組み合わせることで、開発者が日常的に直面する機能の実装(feature)、バグ修正(fix)、コード分析(analyze) のタスクを効率的に自動化します。

LangCodeの主な利点は以下の通りです。

  • 開発ワークフローの自動化。
  • Google GeminiやAnthropic ClaudeといったマルチLLMの最適な活用。
  • .langcode/langcode.mdファイルを使ったプロジェクト固有のカスタマイズによる高い適応性。
  • 全ての変更に対して明確な差分(diffs)を生成することで、安全でレビュー可能な変更 を保証します。

More Information

  • Introduction: Overview of the LangCode project and its purpose.
  • Command-Line Interface (CLI): Detailed guide to using the LangCode CLI, including commands, options, and usage examples.
  • Configuration: Explanation of how to configure LangCode, including setting the language model provider and other settings.
  • Agent: Information about the LangCode agent architecture and its components.
    • Deep Agent: In-depth documentation of the Deep Agent, its planning and tasking capabilities, and its subagents.
    • ReAct Agent: Comprehensive guide to the ReAct Agent, its reasoning and acting framework, and its tools.
    • Router: Documentation for the agent router.
  • MCP Loader: Guide to loading Mission Control Platform (MCP) tools and integrating them with LangCode.
  • Memory: Explanation of the agent’s memory management, including conversation history, summarization, and entity extraction.
  • Safety: Details about the safety mechanisms in LangCode, including content filtering, bias detection, and safety prompts.
  • Tools: Comprehensive list of available tools and instructions on how to add new tools.
  • Workflows: Overview of predefined workflows and instructions on how to create new workflows.
  • Introduction
  • Command-Line Interface (CLI)
  • Configuration
  • Agent
  • MCP Loader
  • Memory
  • Safety
  • Tools
  • Workflows