ECA – Editor Code Assistant をさわってみる: Clojure製エディタ非依存AIアシスタントの初体験レビュー

目次

ECA – Editor Code Assistant をさわってみる: Clojure製エディタ非依存AIアシスタントの初体験レビュー

ECA (Editor Code Assistant) はエディタ非依存で動作するオープンソースのAIコードアシスタントです。Clojure製というユニークさもあり、最近開発者コミュニティで注目を集めています。エディタに縛られず使えるAI支援ツールという触れ込みを聞き、筆者も早速試してみることにしました。ECAはVSCodeやEmacsなど複数の環境に対応し、ChatGPTのような対話でコードの相談や自動修正が行えます。ここでは初めてECAを触った際の導入から使用感まで、その体験を詳しくレポートします。

ECA (Editor Code Assistant)とは何か?エディタ横断で使えるAIコード支援ツールの概要

まずECA (Editor Code Assistant)とは何かを簡単に説明します。ECAはその名の通りエディタのコーディングを支援するAIアシスタントですが、特定のエディタに依存しない設計が最大の特徴です。VSCode、Emacs、Vimなど様々な開発環境で共通して動作し、開発者は普段使い慣れた環境にAIの力を導入できます。ECAは内部で大規模言語モデル(LLM)を活用し、自然な日本語や英語での質問に答えたり、コードの生成・編集提案を行ってくれます。他のAI補助ツールと異なり、チャットを通じてコードレビューやリファクタリングの具体的な提案から自動修正までこなす点でユニークな存在です。

Clojure製のオープンソースAIアシスタントECAを試すことにした背景とその狙い、注目される理由

ECAを知ったきっかけは、Clojureコミュニティでの話題や紹介記事でした。Clojure製のオープンソースAIアシスタントという点に興味を惹かれ、「自分の使っているエディタで動く汎用的なAIツール」という触れ込みもあって試してみることにしました。チャットGPTやGitHub Copilotなど既存のAIコーディング支援ツールもありますが、ECAはエディタ非依存で統一的なUXを提供する点、さらにAIがツールを用いて自律的にコードを編集できる点がユニークです。こうした特徴が開発者の間で注目されており、筆者もその実力を確かめたいという狙いで導入に踏み切りました。

Visual Studio Code向け拡張機能を利用したECAのインストール手順と初期セットアップ方法

実際にECAを使うには、まずエディタへの導入が必要です。例えばVisual Studio Codeの場合、拡張機能マーケットプレイスで「ECA (Editor Code Assistant)」を検索してインストールするだけで準備OKです。EmacsやVim/Neovim向けにもプラグインや設定が公開されており、自分のエディタ環境に合わせて導入できます。拡張機能を入れたら、ECAが利用するAIモデルの設定を行います。OpenAI APIキーなどをconfig.jsonという設定ファイルに記述し、どのモデルを使うか指定します(詳細は後述)。これらの初期セットアップが完了すれば、エディタ内でECAを起動してAIチャットを開始できる状態になります。

初めてECAを触った感想: AIとの対話型コーディング体験で感じた驚きと興奮を詳しく紹介

実際にECAを動かしてみると、その対話型コーディング体験に驚かされました。エディタ内にチャットウィンドウが開き、通常の会話のように「このコードをレビューして問題点を教えて」と依頼すると、AIがすぐにコードを読み取って改善提案をリストアップしてくれたのです。さらに「では提案①の通りに修正してください」とチャットで伝えると、なんとECAが自動でエディタ内の該当コードを編集してくれました。ユーザーの承認を得てから実際のコードを書き換えるという流れがシームレスで、まるでペアプログラマーと一緒にコーディングしているような感覚です。多少動作が不安定な場面もありましたが、エディタ再起動でリカバリーでき、革新的な機能の手応えを十分に感じました。

Editor Code Assistantがもたらす新しい開発スタイルと今後の可能性への期待と展望

このようにECAを試してみて感じたのは、AIが開発現場にもたらす新しいコーディングスタイルの可能性です。チャットを通じてリアルタイムに相談しながら実装を進めることで、これまで一人で書いていたコードも常にレビューを受けているような安心感があります。またPlanモードなど人間の確認を挟める仕組み(後述)のおかげで、AIに任せつつもHuman in the Loopを保った開発ができる点も好印象でした。ECAはまだ発展途上とはいえ、今後さらに安定性や機能が向上すれば、AIと人間が協調する開発が当たり前になるかもしれません。筆者自身も引き続きECAを活用しつつ、その成長に期待を寄せています。

ECAの主な機能: 多彩なAIチャット対話・複数エディタ/モデル対応・エージェント自動実行機能などの紹介

ECAには開発者を支援するための魅力的な機能が数多く備わっています。その代表的なものとして、エディタ内でAIと会話できるチャットインターフェース、利用するエディタを問わず使えるマルチエディタ対応、OpenAIやAnthropicなど複数のモデルを選択できるマルチモデル対応があります。さらに設定ファイルを一つに統一して全ての環境で共通のUXを実現している点や、AIが自律的にコード編集やコマンド実行を行うエージェント機能も特徴です。以下では、それぞれの機能について詳しく見ていきましょう。

AIチャットインターフェース: 開発者と対話しながらコード提案やレビューをリアルタイムで実施

ECAの基本となるのがエディタ内でAIとやり取りできるチャットインターフェースです。開発者はエディタ上の専用パネルからAIに話しかけることができ、疑問点の質問からコードの実装依頼まで自然な言葉で指示できます。例えば「このコードをレビューして改善点を教えて」と尋ねれば、AIがコードを分析して改善点やバグの有無を解説してくれます。回答は対話形式で返ってくるため理解しやすく、必要に応じて追加の質問を投げて逐次AIに確認することも可能です。エディタを切り替えてブラウザでChatGPTを開く必要がなく、開発中のコンテキストを保ったままリアルタイムにペアプログラミング感覚で支援を受けられるのが大きな利点です。

エディタ非依存の設計: EmacsからVSCodeまで複数のIDEで一貫した操作とUXを提供

ECAはエディタ非依存の設計を採用しており、これは複数のIDEで一貫した操作性を提供することを意味します。VSCode拡張として使えるのはもちろん、EmacsやVim、IntelliJ系IDEなど幅広いエディタ環境に対応しており、どのツールでもECAの機能を享受できます。裏では共通のECAサーバーが動作し、各エディタはクライアントとしてその機能を呼び出す仕組みになっているため、コマンド体系や設定も統一されています。例えば、エディタ間で乗り換えた場合でも同じ/initコマンドやチャット操作が可能で、ユーザーは環境差を意識せずにAIアシスタントを活用できます。このエディタ横断の柔軟性により、チーム内で開発者がそれぞれ好きなエディタを使っていても、共通のAI支援体験を共有できるのもメリットです。

複数AIモデル対応: OpenAIやAnthropicなど複数のLLMから好みのモデルを選んで利用可能

またECAは複数AIモデル対応を特徴としており、利用する言語モデルを自由に選択できます。OpenAIのGPT-4/3.5シリーズやAnthropicのClaudeなど主要なオンラインLLMに対応しているほか、GitHub Copilotのモデルも統合可能です。さらにOllamaを介したローカルモデルにも対応しており、オフライン環境やプライバシー重視の場面でもAI支援を受けられます。設定ファイルで使用するプロバイダ(API)とモデルを指定すれば、ECAのチャットは選択したエンジンに基づいて応答を生成します。例えば試行錯誤でOpenAIとAnthropicの精度を比較したり、コストに応じてモデルを切り替えるといった柔軟な運用が可能です。このように特定ベンダーにロックインされない点も、ECAの魅力となっています。

統一された設定ファイル: 全エディタで共通のconfigを用いて環境設定を共有し一貫性を確保

ECAでは設定の管理がシンプルなのも利点です。設定ファイルは統一されており、全てのエディタで共通のconfig.jsonを用いて動作します。例えばOpenAIのAPIキーや使用したいモデル名、各種オプションはこの一つの設定ファイルに記述しておけば、VSCodeでもEmacsでも同じ情報が参照されます。エディタごとに別々の設定を行う手間がなく、常に一貫したUXで利用できるよう工夫されています。また設定項目は非常に豊富で、ツールごとの有効/無効切り替えや振る舞いの細かな調整も可能です。一見設定が多いようにも感じますが、その柔軟さによって自分の開発スタイルに合わせたAIアシスタント体験をカスタマイズできる点は、上級者にとって嬉しいポイントでしょう。

エージェント機能搭載: AIが各種ツールを駆使して自律的にコード修正・実行する能力を備える

さらに他のAIチャットにはないECAならではの特徴が、エージェント機能による自律的な動作です。通常のAIは質問に答えたりコード例を提示するだけですが、ECAではAI自らがツールを呼び出して実際に作業を行うことができます。例えばファイルの内容を読み取ったり、コードを編集して書き換えたり、ターミナルコマンドを実行してテストを走らせるといった操作も、チャット経由でAIが代行します。開発者は提案内容を確認して許可するだけで、煩雑な修正や反復作業をAIに任せられるわけです。ECAは「Planモード」と「Agentモード」という2つの動作モードを備えており(後述)、状況に応じてAIの自動実行を制御できます。このエージェント的な振る舞いにより、単なるアシスタントの域を超えて生産性向上に大きく寄与することが期待できます。

対応エディタ一覧: ECAが使えるVSCode・Emacs・Vim/Neovim・IntelliJなど主要IDE

ECAは具体的にどのエディタで利用できるのでしょうか。現時点(2025年現在)で公式に対応が明言されている主なエディタ/IDEとして、Visual Studio Code (VSCode)、Emacs、Vim/Neovim、IntelliJ IDEAファミリーが挙げられます。いずれもプラグインや拡張の形でECAと連携し、共通のECAサーバーを介してAIアシスタント機能を提供します。開発者は自分の好みのエディタ環境でそのままECAを使えるため、新たなツール導入によるストレスが少なく、既存のワークフローにAI支援を組み込みやすいのが利点です。それでは各エディタでの対応状況や特徴を見ていきましょう。

Visual Studio Code (VSCode): 幅広いユーザーに使われるエディタでもECAを拡張機能としてシームレスに利用可能

Visual Studio Codeは最も利用者の多いエディタの一つですが、もちろんECAにも対応しています。VSCode向けには公式の拡張機能が提供されており、インストールするとエディタ内にECA専用のチャットパネルやコマンドが追加されます。普段VSCodeを使っている開発者であれば、画面左のサイドバーからECAのアイコンをクリックしてAIチャットを開き、質問や指示を入力するといった操作を直感的に行えるでしょう。エディタ内でコードを選択して「ECAで解説」するといったコンテキストメニューも備わっており、シームレスにAIアシスタントを呼び出せます。VSCodeの馴染みあるUIに溶け込む形でAI機能が使えるため、新しいツール特有の学習コストも小さく、すぐにECAの恩恵を享受できるはずです。

Emacs: 歴史あるテキストエディタEmacsにも対応し、AIアシスタントを組み込んで開発効率を向上

Emacsのような歴史あるエディタでもECAを利用可能です。Emacsユーザー向けにはECAのクライアントパッケージが用意されており、設定ファイルを適切に読み込むことでEmacs内からECAのサーバーに接続できます。例えばEmacs上でコマンドM-x eca-chat(仮想)を実行すると、専用のバッファが開いてAIとの対話が開始できる、といった形です。キーバインドを駆使するEmacsの操作感を損なうことなく、テキストベースでECAを制御できるため、Emacs愛好家も違和感なくAIアシスタントを組み込んだ開発を行えるでしょう。Emacsは拡張性が高くコミュニティも活発なため、ECAとの連携も今後ますます進化していくことが期待されます。

Vim/Neovim: 軽量で高速なVim系エディタにも対応し、キーバインド派の開発者もAI支援を活用可能

Vim/Neovimのような軽量エディタにもECAは対応しています。ターミナル上で動作するVim系エディタ用にプラグインが提供されており、キーバインドを通じてチャットプロンプトを開いたりAIからの回答をポップアップ表示させたりすることが可能です。エディタから離れることなくコマンドモード上で「ECAに現在のバッファを解析させる」といった操作が行えるため、マウスを使わずキーボード主体で開発するVim派の開発者でもスムーズにAI支援を活用できます。NeovimではLSPクライアントなどとの統合も考慮されており、ECAの機能を他の開発補助ツールと組み合わせて使うこともできるでしょう。普段からVim/Neovimで効率的にコーディングしている方にとっても、ECAは心強い相棒となってくれるはずです。

IntelliJ IDEAファミリー: Java開発者に人気のIntelliJ系IDEにも統合し、プロジェクト規模にかかわらずAI支援を提供

IntelliJ IDEAファミリー(JetBrains社のIDE群)でもECAを利用できます。IntelliJ系統のIDE向けには公式プラグインが提供されており、これをインストールすることでIDE内からECAのチャットや自動コード操作が可能になります。JavaやKotlinを扱う大規模プロジェクトでも、IDEA上でそのままAIアシスタントに相談できるのは大きな魅力です。例えばコードエディタ上でショートカットを叩いてECAのチャットウィンドウを開き、現在開いているクラスについて「リファクタ案を提案して」と依頼する、といった使い方ができます。IntelliJはリッチな補完機能や静的解析を備えていますが、ECAを組み合わせることでさらに強力なコーディング支援が得られるでしょう。JetBrains系IDEを愛用する開発者にとっても、ECAは頼もしい拡張となり得ます。

エディタ間で変わらない体験: どのIDEを使ってもECAのコマンドや設定が共通で一貫した操作性を実現

エディタ間で変わらない体験というのは、ECAが掲げる重要な価値の一つです。上記のように様々なIDEで利用できますが、どの環境でも基本的な使い方や挙動は共通しています。チャットへの指示方法や提供されるコマンド類(例: /initで初期化、/planでプランモード切替など)はエディタによって変わらず、設定ファイルも同一フォーマットです。そのため、一度ECAの操作に習熟すれば他のエディタに移ってもすぐに同じように使いこなせます。開発チーム内で使用するエディタが統一されていなくても、ECAを導入すれば皆が共通のAIアシスタント機能を享受できるので、環境差による生産性のギャップも生じにくくなるでしょう。

マルチモデル対応について: OpenAIやAnthropicなど様々なLLM(大規模言語モデル)に対応

AIコードアシスタントの中には特定のモデルに依存するものもありますが、ECAは初めからマルチモデル対応を念頭に設計されています。つまり、複数のAIサービスやモデルを切り替えて利用できる柔軟性を備えているのです。開発者はOpenAIやAnthropicといった主要LLMプロバイダのAPIキーを設定し、自分のプロジェクトに最適なモデルをECAに使わせることができます。例えば高精度な応答が欲しい場合はGPT-4を、コストを抑えたい場合は自前のローカルモデルを、といった選択が可能です。ECAの背後では各プロバイダへの接続が抽象化されており、設定を変えるだけでシームレスに別のモデルへ切替られる点は大きな強みです。以下に、対応している主なモデル・サービスとその特色を紹介します。

OpenAI API対応: GPT-4などOpenAIの高性能モデルをECA経由で利用し高度なコード生成を実現

OpenAI API対応: ECAはOpenAI社の各種モデル(GPT-3.5やGPT-4など)をサポートしています。設定ファイルにOpenAIのAPIキーを記載しモデル名を指定するだけで、ECAの裏でChatGPTと同じエンジンが動作するようになります。GPT-4はコード生成や自然言語理解の精度が非常に高く、複雑なリファクタリング提案や高度な説明も期待できます。実際、ECAにOpenAIモデルを使わせれば、ChatGPTと対話しているかのような優れた応答が得られるでしょう。ただしAPI利用には従量課金のコストが発生するため、大規模プロジェクトで頻繁に呼び出す際は料金にも注意が必要です。

Anthropic Claude対応: OpenAI以外のLLMであるClaudeにも対応し多様なAI知見を活用

Anthropic Claude対応: OpenAIだけでなく、Anthropic社の大規模モデルClaudeにもECAは対応しています。Claudeは会話における丁寧さや長文での推論に定評があり、場合によってはGPT系とは異なる観点の提案をしてくれることもあります。ECAでClaudeを利用するにはAnthropicのAPIキーを取得して設定する必要がありますが、一度連携すればChatGPTではなくClaudeと対話する形でコード支援が受けられます。オープンAIの利用が制限されているプロジェクトや、複数モデルを試して最適な応答を得たい場面で、Claude対応のECAは貴重な選択肢となるでしょう。

GitHub Copilot連携: 定番のペアプログラミングAIであるCopilotもECAのチャットから統合利用可能

GitHub Copilot連携: 開発者に広く使われているペアプログラミングAIであるGitHub Copilotのモデルも、ECA経由で利用することが可能です。Copilotは本来IDE拡張としてコード補完を提供しますが、ECAではCopilotのAPIにログインしてチャット経由でそのモデルを呼び出すことができます。設定手順はやや特殊で、GitHubアカウントでCopilotにアクセス権を取得した上で、ECAのチャットで/login github-copilotコマンドを実行して認証する形になります。これにより、ECAのチャットインターフェースを通じてCopilotの提案を得られるようになります。Copilotは補完に強みがありますが、ECAと組み合わせることでより自由度の高い対話形式でそのAIパワーを活用できるのがメリットです。

ローカルLLM (Ollama)対応: インターネット非接続のローカルモデルも利用可能でプライバシーに配慮

ローカルLLM (Ollama)対応: ECAはローカル実行型のLLMにも対応しています。その代表例がOllamaというツール経由で動かすオープンソースモデルです。Ollamaを利用すれば、高性能な言語モデルを自分のPC上で動かし、インターネットに接続せずにAIの支援を受けることができます。ECAはこのOllamaと連携でき、設定でローカルモデルを指定すればチャットでの応答が全て手元のマシン内で生成されます。機密性の高いコードを扱っている場合やネット接続できない環境でも、ECAならプライバシーを確保したままAIアシストが得られるわけです。モデルの性能は使用するものに依存しますが、近年はLoRAを用いた精度の高いローカルモデルも登場しており、ECA+Ollamaの組み合わせは今後さらに活用シーンが広がるでしょう。

モデル切替の柔軟性: プロジェクトやニーズに応じてAIモデルを切り替え可能な柔軟な設計

モデル切替の柔軟性: 上記のようにECAは複数のモデルを使い分けられますが、その切替も比較的容易です。設定ファイルに複数のプロバイダ設定を書いておき、用途に応じてどれを有効にするか選択するだけで、チャットの背後で動くAIを変更できます。例えば小規模な個人プロジェクトではコストを抑えるためローカルモデルを使い、チーム開発では精度重視でGPT-4を使うといった柔軟な運用が可能です。またECAは将来的な新モデルの登場にも備えて拡張性があり、互換APIを持つサービスならカスタムプロバイダとして追加することもできます。マルチモデル対応のECAを使えば、状況に応じて最適なAIを選択しながらコーディングを進められるでしょう。

ECAが使用できるツール: ファイル操作・シェルコマンド・エディタ連携・外部サービス連携など豊富なツール群

ECAのエージェント機能を支える重要な要素が「ツール」の存在です。ECAは内部で様々なツールを呼び出し、AIにできることの幅を大きく広げています。これらのツールには、ファイルシステムにアクセスしてコードを読み書きするもの、ターミナルコマンドを実行してビルドやテストを行うもの、エディタからプロジェクト構造情報を取得するものなどがあります。チャットでユーザーが指示を出すと、必要に応じてAIが適切なツールを使い、単なるテキスト生成では不可能な具体的なアクションを実行してくれるのです。ツールの利用可否や挙動は設定で細かく制御可能で、安全面にも配慮されています。ここでは、ECAが備える主なツール群とその役割をカテゴリーごとに紹介します。

ファイルシステム系ツール: ファイルやディレクトリの一覧表示、読み書き、検索などをAIが実行可能

ファイルシステム系ツール: ECAにはファイルやディレクトリを操作するための一連のツールが用意されています。例えばプロジェクト内のファイル構造をツリー表示するeca_directory_tree、特定ファイルの内容を読み込むeca_read_file、ファイルに新しい内容を書き込むeca_write_fileや既存ファイルを編集するeca_edit_file、さらには全文検索を行うeca_grepなどです。AIはこれらのツールを駆使することで、プロジェクト内の必要な情報に直接アクセスできます。チャットで「この関数の定義箇所を確認して」と頼めばeca_grepで該当箇所を検索し、結果を踏まえて回答してくれる、といった具合です。また修正を指示すればeca_edit_fileでコードを書き換えるため、人間が手作業でファイルを開いて編集する手間を省略してくれます。これらファイルシステム系ツールにより、AIはプロジェクトの全貌を把握しつつ具体的なコード改変まで行えるのです。

シェルコマンド実行ツール: ビルドやテスト、Git操作など開発フローのコマンドをチャットから直接実行

シェルコマンド実行ツール: AIがターミナルでコマンドを実行できる点もECAの強みです。組み込みツールのeca_shell_commandを使い、ビルドやテスト、Git操作など開発に欠かせないコマンドをチャット経由で走らせることができます。例えば「テストを実行して結果を教えて」と指示すれば、AIはnpm testpytestなど適切なコマンドをシェル上で実行し、その結果ログを解析して報告してくれるでしょう。CI/CDの一部をAIに代行させたり、コード変更後に自動でコンパイルエラーがないか確認するといった使い方も可能です。ただし強力な分注意も必要で、rm -rfのような危険コマンドを除外するフィルタ設定(excludeCommands)も用意されています。適切に制限をかけながら活用すれば、反復的な作業をAIにオフロードし開発効率を一段と高められるでしょう。

エディタ連携ツール: ワークスペースの構造把握やファイルマップ作成などエディタ情報をAIが取得

エディタ連携ツール: ECAは開発環境からプロジェクトに関するメタ情報を取得することも可能です。例えば「ワークスペースのファイル一覧を取得する」「プロジェクトのモジュール構成を把握する」といった処理が裏側で行われます。具体的には、Git管理下のファイルパス一覧をまとめたリポジトリマップを生成したり、現在開いているファイルやカーソル位置の情報をAIに伝えることで、回答内容に反映させることができます。こうしたエディタ連携ツールのおかげで、AIはプロジェクトの規模感や構造を理解した上で助言できるようになります。例えば複数ファイルにまたがる変更提案を行う際にも、AIはあらかじめ全体像を把握しているため、見落としの少ない一貫性のある提案が期待できます。このようにECAはエディタとの緊密な連携により、より賢く開発者をサポートしてくれるのです。

MCP連携 (Model Context Protocol): 外部サービスやカスタムツールをECAに統合しAIの能力を拡張

MCP連携 (Model Context Protocol): ECAのツール体系は拡張可能で、MCP (Model Context Protocol)という仕組みによりカスタムツールや外部サービスとの連携も実現できます。これは外部で動作するサーバーツール(例えば独自のコード解析エンジンやドキュメント検索APIなど)をECAに認識させ、チャットから利用できるようにするプロトコルです。ユーザーは設定ファイルにMCP経由で使いたいリソースを追記することで、ECAの能力を自由に拡張できます。例えば社内のナレッジベース検索ツールを組み込めば、AIがコードだけでなく関連ドキュメントからも回答を引き出せるようになるかもしれません。このようにMCP連携により、ECAはプラットフォームとして他のツールと融合し続けるポテンシャルを持っています。

ツール拡張の柔軟性: 使用するツールの有効/無効設定やカスタムツール追加など柔軟に調整可能

ツール拡張の柔軟性: ECAはどのツールをどこまで使うかをユーザーが細かく制御できるようになっています。設定により特定のツールを無効化したり(例: セキュリティ上シェル実行を禁止)、逆にカスタムツールを追加したりといった調整が可能です。また後述するManual approval機能を使えば、各ツール実行前に必ずユーザーの許可を求めるようにも設定できます。プロジェクトの性質やポリシーに応じて、例えば「ファイル編集は自動許可するがシェル実行は都度確認する」といったルールを設けられるわけです。このような柔軟性のおかげで、開発者はECAの自律性と安全性のバランスを自分でコントロールしながら、AIの恩恵を最大限享受できます。

プロジェクト初期化方法: /initコマンドでAGENTS.mdを生成する初期設定の流れとポイントを解説

ECAをプロジェクトに導入したら、最初に行っておきたいのがプロジェクト初期化の手順です。ECAはプロジェクトごとの背景情報やルールを学習してより適切な提案を行う仕組みがあり、そのための初期設定コマンドが用意されています。具体的には、チャット上で/initコマンドを実行することで、そのプロジェクト専用の設定ファイルAGENTS.mdが自動生成されます。このファイルにプロジェクトの概要やコーディング規約、使用技術などを書き込んでおくことで、AIがそれらを参照しながらコード提案をしてくれます。またECAはグローバル設定とプロジェクト個別設定の両方に対応しており、必要に応じてプロジェクト固有のモデルやツール設定を上書きすることも可能です。以下に、初期化の具体的な流れとポイントを説明します。

ECAチャットの起動: プロジェクトディレクトリでAIアシスタントを開始する準備

ECAチャットの起動: まずプロジェクトディレクトリを開いた状態で、ECAのチャットインターフェースを起動します。VSCodeの場合はコマンドパレットから「ECA: Open Chat」(またはeca.chat)を実行するとエディタ内にチャットペインが表示されます。EmacsやVimでも、前述のように各クライアントでECAチャットを開くコマンドが用意されています。重要なのは、このチャットが現在のプロジェクトコンテキストで動作していることを確認する点です。ECAは起動されたディレクトリ構成を認識しており、そのプロジェクト内でチャットを行うことで後続の初期化ややり取りにプロジェクト固有の情報が反映されるようになります。チャットペインが開いたら、次に初期化コマンドを実行していきましょう。

/initコマンドの実行: プロジェクト専用の設定ファイルAGENTS.mdを生成して初期化

/initコマンドの実行: プロジェクト内でチャットが使えるようになったら、初期化コマンド/initをチャットに送信します。するとECAが自動的にプロジェクト設定用のAGENTS.mdファイルをプロジェクトルート(または.eca/ディレクトリ)に生成します。このファイルには雛形として「プロジェクトの概要や規約をここに記述してください」といった項目が含まれており、必要に応じて編集して使います。初回実行時、チャット上でも「AGENTS.mdを作成しました」という旨のメッセージが返ってくるでしょう。/initはプロジェクトごとに一度実行すればOKで、以降はAGENTS.mdを更新するたびにAIが最新の情報を参照できるようになります。まずこの初期化を行うことで、ECAに自分のプロジェクト専用の土台を用意させるわけです。

AGENTS.mdの役割: プロジェクトの方針や情報を記述しAIのコード提案に反映させる設定ファイル

AGENTS.mdの役割: AGENTS.mdは、プロジェクトに関する情報を記述してECAに共有するためのファイルです。ここにはプロジェクトの目的や主要機能の概要、コーディング規約、使用しているライブラリやフレームワーク、命名ルール、さらにはチーム内の開発ルールなど、AIに知っておいてほしい事項を自由に書き込めます。ECAはチャットで回答やコード提案を行う際にこのAGENTS.mdの内容を参照し、プロジェクトの文脈に合った一貫性のある応答を生成します。例えばプロジェクト特有の用語や略語があれば事前に説明を書いておくことで、AIがそれを理解した上で回答してくれるようになります。またコーディングスタイルのガイドラインを記載しておけば、AIが提案するコードもそのスタイルに沿ったものになりやすくなります。このようにAGENTS.mdは、ECAにプロジェクトの頭脳を共有するための重要な土台となるファイルです。

グローバル設定とプロジェクト設定: config.jsonを用いた全体設定とプロジェクト固有設定の使い分け

グローバル設定とプロジェクト設定: ECAの設定はグローバルとプロジェクト個別の二段構えになっています。基本的なモデルのAPIキーやデフォルトの動作モードなどはホームディレクトリ配下の~/.config/eca/config.jsonに記述し、全プロジェクト共通の設定とします。一方、特定プロジェクトでだけ上書きしたい設定がある場合には、そのプロジェクト直下に.eca/config.jsonを置くことでプロジェクト専用の設定を適用できます。例えば普段はOpenAIのモデルを使うがこのプロジェクトではAnthropicを使いたい、といった場合にプロジェクト設定でプロバイダを切り替えることが可能です。ECAはまずプロジェクト設定ファイルを参照し、無い項目はグローバル設定を使うという形で両者を統合します。これにより共通部分は一括管理しつつ、必要に応じて細部をプロジェクトごとに調整できる柔軟性が確保されています。

初期化後の準備完了: ECAがプロジェクトコンテキストを理解しAI支援の準備が整った状態で開発開始可能

初期化後の準備完了: 以上でプロジェクト固有の初期設定は完了です。AGENTS.mdに必要な情報を書き込んだなら、ECAはその内容をもとにあなたのプロジェクトのコンテキストを理解した状態になります。あとは普段通りコードを書き進めながら、随時ECAにチャットで質問したりリファクタリングを依頼したりしてみましょう。先ほど設定した規約や設計方針を踏まえた回答やコード提案が返ってくるはずです。もしプロジェクトに重要な変更(例えば新しいライブラリの追加や方針転換)があれば、適宜AGENTS.mdを更新してAIに共有してください。こうしてプロジェクトに最適化されたAIアシスタントとしてECAを活用することで、より精度の高いサポートを得ることができます。

チャット機能活用術: AIと会話してコードレビューやリファクタリングを効率的に行う方法とコツを徹底解説

ECAのチャット機能を最大限に活用することで、開発効率を飛躍的に高めることができます。ただ質問に答えてもらうだけでなく、開発プロセスの様々な場面でAIとの対話を取り入れてみましょう。ここでは、チャットを使った具体的な活用術をいくつか紹介します。コードレビューやリファクタリング提案の依頼、テストコードの生成、エラーの相談など、工夫次第でECAは頼れるペアプログラマーとして働いてくれます。またチャット履歴やコンテキスト機能を活かすことで、過去の議論を踏まえた高度なアドバイスを引き出すことも可能です。以下のポイントを参考に、ECAとの対話を日々の開発に役立ててみてください。

コードレビューを依頼: AIにソースコードを読み込ませて改善点の提案を受ける活用法

コードレビューを依頼: ECAをコードレビューアとして活用することもできます。開発中に書いた関数やモジュールについて、「このコードをレビューして改善点を教えて」とチャットで依頼してみましょう。AIはコードを読み込み、バグの可能性、非効率な部分、リファクタリングできそうな箇所などを指摘してくれます。例えば「変数名が分かりにくい」「エラーハンドリングが不足している」「アルゴリズムの計算量が多い」等、複数の改善提案がリストアップされることもあります。人間のコードレビューと違って24時間いつでも依頼でき、些細な点も見逃さず指摘してくれるため、セルフチェックの強力な味方になるでしょう。大きな機能をリリースする前や他人のコードを引き継いだ際などに、まずECAにレビューさせることで品質向上につながります。

リファクタリングの指示: AIに特定の改善提案を選んでコード修正を実行させる方法

リファクタリングの指示: コードレビュー提案を受け取ったら、具体的なリファクタリングをAIに任せてみることもできます。例えばECAから「関数Aで同じ処理が繰り返されている」という指摘があれば、「ではその重複コードを関数化してリファクタしてください」とチャットで指示します。するとAIは提案に基づいてコードを書き換えるプランを立て、実際に修正を行ってくれます(Agentモードであれば即時に変更が適用され、Planモードなら変更案が提示されます)。ピンポイントで「提案リストの①番を実行して」と指定することも可能です。こうしたやり取りにより、面倒なリファクタ作業もAIにドライブさせつつ人間がレビューする形で効率よく進められます。自分では気づかなかった改善もスムーズに適用でき、コードの品質向上と開発時間短縮につながります。

テストコードの自動生成: AIに既存コードのテストケース作成を依頼して開発効率アップ

テストコードの自動生成: ECAはテストコード作成の手助けもしてくれます。実装した機能に対して「このコードのユニットテストを書いてください」と依頼すれば、AIが想定される入力と出力に基づいたテストケースを自動生成して提案してくれます。例えば関数の挙動を確認する複数のケースや、エッジケースを考慮したテストコード一式を出力してくれるでしょう。生成されたテストコードをプロジェクトに追加し、実際にテストを実行して問題ないことを確認すれば、コードの信頼性がぐっと高まります。自分で一からテストを書く手間を省きつつ、抜け漏れの少ない網羅的なテストを短時間で用意できるのは大きなメリットです。特にTDD(テスト駆動開発)を実践する際にも、ECAの助けを借りることでテストを書く負担が軽減されるでしょう。

エラーや設計の相談: 開発中に生じた疑問点をAIに質問し助言を得る活用法

エラーや設計の相談: コーディング中に直面する疑問点について、ECAに質問して助言を得ることもできます。例えば実行時に謎のエラーメッセージが出た場合、「このエラーの原因は何でしょう?」とスタックトレースを貼り付けて尋ねれば、考えられる原因や解決策を教えてくれます。また「この機能はオブジェクト指向設計と関数型、どちらで実装すべきか?」といったアーキテクチャの相談にも、メリット・デメリットを整理した回答が得られるでしょう。ドキュメントを一々検索する手間をかけずに、その場で経験豊富なエンジニアの知見を引き出す感覚で利用できます。ただし最終判断は人間が行う必要がありますが、ECAの意見を参考にすることで設計上の検討漏れを減らし、問題解決への糸口を素早く掴むことができます。

チャットコンテキストの活用: 会話履歴や@コマンドでファイル内容を参照し精度の高い回答を引き出す

チャットコンテキストの活用: ECAとの対話では、これまでの会話履歴やプロジェクト情報をコンテキストとして有効に活用することが大切です。チャット内で一度共有したコード片やエラーログはAIが記憶しているため、後続の質問で「先ほどの関数に新たな引数を追加した場合どうなる?」と聞けば、その文脈を踏まえて回答してくれます。またECAは@記法などでファイル名やディレクトリを指定すると、その内容を読み取って回答に反映する機能もあります(例: @src/util.js とチャットに入力するとそのファイル内容を参照)。このように過去のやり取りや関連ファイルを文脈として提供することで、AIからより正確で具体的なアドバイスを引き出せます。長めの開発セッションでも履歴を活かして会話を深めることで、人間の同僚と議論しているかのような充実したサポートが得られるでしょう。

プランモードとエージェントモードの違い: 手動承認付きプラン実行モードと自動コード修正モードの使い分け

ECAにはAIの動作モードとしてプランモード (plan)とエージェントモード (agent)の二種類が用意されています。これは、AIによるコード変更やツール実行をどのように行うかの違いを表すモードです。簡単に言えば、プランモードではAIがまず変更内容の計画(プラン)を提示し、ユーザーの承認を得てから実行するのに対し、エージェントモードではAIがユーザーの指示に応じて即座にコード編集やコマンド実行を行います。それぞれメリット・デメリットがあり、安全性を重視したい場面ではプランモード、迅速な自動化が必要な場面ではエージェントモードと、状況に応じて使い分けられるようになっています。以下では両モードの詳細と実際の使用方法、注意点について解説します。

Planモードとは: AIがまず変更計画を提示しユーザーの承認を待ってから実行に移る動作モード

Planモードとは: PlanモードはAIが提案をまず計画(プラン)として提示し、実行は保留する動作モードです。ユーザーがチャットでコード修正やファイル生成を依頼すると、AIは「どのような変更を行うか」の手順や要点をテキストで示します。例えば「関数Xをリファクタリングしてください」と頼むと、「1. 新しいヘルパー関数Yを作成」「2. 関数Xで重複コードをYに抽出」…といったプランが列挙されます。この段階ではファイル内容は実際には変更されません。ユーザーはプラン内容を確認し、問題なければ「実行して」と承認の指示を出すことで、初めてAIがそのプランを実行に移します(必要に応じてAgentモードに切り替えてから実行)。Planモードを使うことで、いきなりコードが書き換えられる心配がなく、AIの意図を事前にチェックしてから安全に適用できる利点があります。

Agentモードとは: AIが即座にコードやファイルを編集し変更を自動適用する自律的動作モード

Agentモードとは: AgentモードではAIが即座に自律的なアクションを実行する動作モードです。チャットで依頼を受けたAIは、ユーザーの確認を待たずに直接ファイルの編集やツールの実行を行います。例えば「この関数のバグを修正して」と頼めば、AIはすぐに該当コードを変更し、ファイルを上書き保存します。Planモードのような事前のプラン提示は無く、エディタ上で変更がリアルタイムに適用されていくためスピーディーです。ただし、誤った変更が加えられるリスクも伴います。AgentモードではAIが提案→実行まで一気に行うため、人間の目による事前チェックが省略されます。とはいえ、小規模なリファクタや明白な修正であればAgentモードの方が手っ取り早く、開発効率を上げられます。ECAはデフォルトでAgentモード動作ですが、重要な変更を任せる際には計画を確認できるPlanモードに切り替える、といった使い分けが推奨されます。

使い分けのポイント: 大きな変更はPlanモードで確認、小さなリファクタはAgentモードで即時反映

使い分けのポイント: では具体的にどのように両モードを使い分けるべきでしょうか。基本的には、大きな影響を及ぼす変更はPlanモード、小さな局所的な変更はAgentモードが適しています。コードベース全体に関わるリファクタリングや、AIの提案内容に不確実性を感じる場合は、Planモードで詳細なプランを確認してから実行すると安心です。一方、タイポ修正やフォーマット整形、簡単なリネームなど明らかに安全な変更は初めからAgentモードで自動適用してしまった方が手早いでしょう。また開発初期でAIの出力品質に慣れていないうちはPlanモード中心にし、信頼できると分かってきたらAgentモードの比率を増やす、といった段階的な運用も有効です。プロジェクトや状況に応じて両モードを切り替え、AI活用の効率と安全性のバランスを取ると良いでしょう。

Planモード使用時の流れ: 提案内容の確認方法と承認後に変更が適用されるまでの手順

Planモード使用時の流れ: PlanモードでAIに作業を依頼する場合の一連の流れを見てみましょう。まずユーザーがチャットでタスクを指示すると、AIは前述のように手順のプランを箇条書きで提示します。次にユーザーはその内容を吟味し、必要があれば「ここの変更は含めないで」などとAIに修正を求めることもできます。プランが確定したら、ユーザーが「実行して」や「このプランを適用して」と指示することで初めてAIが実作業に入ります(場合によってはAgentモードに切り替えてから実行)。例えばプランに3つの項目があれば、AIは順番にそれらの変更を行い、完了後に「すべての変更を適用しました」と結果を報告します。Planモードではこのように提案→承認→実行という人間を介したプロセスを踏むため、安心感を持ってAIを活用できるのです。

Agentモード使用時の注意点: 自動変更のメリットとリスク、安定性を保つための工夫

Agentモード使用時の注意点: Agentモードは強力ですが、その分注意も必要です。AIが自動でコードを書き換えるため、意図しない変更が加わったり、稀にエディタや拡張機能が不安定になるケースも報告されています(大量の変更を一度に適用しようとして処理が追いつかなくなる等)。したがって、Agentモードを使う際は必ずバージョン管理下で作業し、万一の場合にすぐ差分を確認・巻き戻せる体制を整えておくことが重要です。またAIの提案精度も万能ではないため、自動適用された変更については後で人間が簡単にでも目を通し、本当に問題ないか確認すると安心です。ECA自体も開発が進むにつれてAgentモードの安定性は向上していくでしょうが、現時点では安全第一でPlanモードを併用しながら信頼性を見極めるのが賢明です。適切な注意を払いさえすれば、Agentモードは開発効率を飛躍させる心強い時短ツールとなってくれるでしょう。

Manual approval設定方法: ツール実行前に手動確認を求める設定を有効にして安全性を強化する手順

ECAにはツール実行に対するManual approvalというオプションも用意されています。これは、AIがファイル編集やシェルコマンド等のツールを実行しようとする際に、自動で実行せず都度ユーザーの許可を求めるようにする設定です。デフォルトではECAはツールコールを自動承認します(特にAgentモードでは即実行されます)が、プロジェクトのポリシーや安全上の理由で逐一確認したい場合に、このManual approvalを有効にします。Manual approvalをオンにすると、チャット上でAIが「ファイルXを変更して良いですか?」や「コマンドYを実行してもよいですか?」といった確認メッセージを出し、ユーザーが「Yes」や「承認」と返答しない限り実際の操作は行われません。一手間増えますが、その分誤った変更や不要なコマンド実行を未然に防ぐことができます。以下にManual approvalの具体的な設定方法と活用のポイントを説明します。

Manual approval機能とは: 各ツール実行前にユーザーの手動承認を求める仕組みの概要

Manual approval機能とは: Manual approvalとは、ECAがツール(ファイル編集やコマンド実行など)を実行する直前にユーザーの明示的な許可を要求する仕組みのことです。通常、AgentモードではAIが判断してすぐにツールを動かしますが、Manual approvalを有効にしておくと必ず「○○を実行してもよいですか?」と確認が入ります。Planモードが全体のプランに対する承認だったのに対し、Manual approvalは各ツール実行ごとに承認を得る点が異なります。例えばコード編集プランを承認した後でも、実際にeca_edit_fileでファイルを書き換える前に「ファイルAを編集します、よろしいですか?」とAIが尋ねてくる、といった具合です。これにユーザーがOKを出して初めて操作が行われます。Manual approvalにより、AIの細かな行動まで人間がコントロールできるようになるため、より慎重なHuman in the Loopを実現する機能と言えます。

デフォルト設定の確認: ECAではツール実行が自動承認になっているため注意が必要

デフォルト設定の確認: まず現在の設定がどうなっているかを把握しておきましょう。ECAはデフォルトではManual approvalが無効(つまりツール実行は自動承認)になっています。何も設定を変えていない状態では、AIが判断したタイミングでファイル編集やシェル実行がそのまま行われるため、意図せず変更が加えられる可能性もあります。安全重視の運用をしたい場合は、このデフォルト挙動を変更する必要があります。なお、Manual approvalの現状の有効/無効状態は設定ファイル内の該当項目を確認するか、ECAのドキュメントで確認できます。ECAを使い始めたら一度ツール実行の承認設定をチェックし、プロジェクトに適したモードになっているか確認することをお勧めします。

Manual approvalを有効化: 設定ファイルconfig.jsonでautoApprovalをfalseに設定する手順

Manual approvalを有効化: Manual approvalをオンにするには、ECAの設定ファイルで対応する項目を設定します。具体的には~/.config/eca/config.json(グローバル設定)または.eca/config.json(プロジェクト個別設定)内で、Auto Approvalに関する設定値をfalseに変更します。例えば設定ファイルに以下のような記述を追加/変更します:

{ "autoApproval": false }

この"autoApproval": falseの指定により、全てのツール実行前にユーザー承認を求める挙動に切り替わります(設定項目名はバージョンによって異なる場合があります。最新のドキュメントを参照してください)。設定を保存しECAを再起動すると、新しい設定が適用されます。これ以降、チャットでAIがファイル編集やコマンド実行を試みるとき、毎回「~を実行してもよいですか?」という確認プロンプトが表示されるようになります。

ツールごとの承認設定: 特定のコマンドのみ手動承認にするなど粒度の細かい調整方法

ツールごとの承認設定: Manual approvalは一律に有効/無効を切り替えるだけでなく、ツールの種類ごとに承認の要否を設定することも可能です。例えばファイル編集系の操作は自動許可するが、シェルコマンド実行だけは必ず確認するといった細かな調整ができます。設定ファイルではツール毎のセクションでautoApproval相当のフラグを設定することで実現できます(例: "filesystem": {"autoApproval": false} のように記述)。これにより、eca_edit_fileeca_write_fileは自動実行する一方で、eca_shell_commandを呼び出す際には毎回許可を求める、といった運用が可能です。プロジェクトのリスク許容度に応じて、最も安全を期したい操作だけManual approvalを適用するといった粒度の細かい制御ができる点もECAの柔軟な特徴です。

Manual approval活用のメリット: 誤った自動操作を防ぎ安心してAIの提案を受け入れられる利点

Manual approval活用のメリット: Manual approvalを有効にすることで、AIによる自動操作に対して常に人間のチェックが入るため、誤った変更や予期せぬ動作を未然に防げるという大きなメリットがあります。特に本番に関わる重要なコードや、破壊的なコマンドが混在する可能性のある作業では、逐一確認が入ることで安心感が格段に向上します。また、AIが提案した変更内容をその都度目にすることになるため、開発者自身の学習機会にもなります。なぜこの変更が必要なのかを都度考えることで、AIに任せきりにせず自分の理解を深めながら開発を進めることができます。一方で毎回承認が必要になる分、作業スピードはやや落ちますが、安全性とのトレードオフとして状況に応じて活用すると良いでしょう。Manual approvalを上手に取り入れることで、AIと人間の協調による信頼性の高い開発体制を築けます。

開発体験の流れとおすすめポイント: Planモード活用によるHuman in the LoopなAI開発術

ECAを実際の開発フローに組み込むにあたって、どのように使えば効果的かいくつかのポイントがあります。AIと協調しながら進める開発スタイルでは、人間が要所で介入しつつAIの自動化力を引き出すことが肝心です。具体的には、まずAIに計画を立てさせてから承認・実行する流れを徹底すること、小さなタスクに分割して少しずつ変更を加えていくこと、常に人間(開発者)がループに入って結果を検証する(Human in the Loopを保つ)ことなどが挙げられます。またAIの提案を適用したらすぐにテストやREPLで挙動を確認し、問題があればフィードバックを与える、といったサイクルを回すのも重要です。以下に、ECAを用いた開発を円滑に進めるためのおすすめの流れとポイントを順に紹介します。

Planモードで計画→承認→Agentモードで実行: AI提案を確認してから適用する開発サイクル

Planモードで計画→承認→Agentモードで実行: ECAを活用する際は、まずAIに計画を立案させ、人間がそれを確認・承認してから実際のコード変更を実行するというサイクルを意識しましょう。Planモードを使えばAIが事前に変更プランを提示してくれるので、内容をチェックして問題なければGoサインを出します。そして必要に応じてAgentモードに切り替えて変更を適用させます。この提案→承認→実行のループを徹底することで、AI任せにしすぎるリスクを抑えつつ自動化の恩恵を受けられます。特に大きなリファクタリングや複数ファイルにまたがる変更では、一度に全て任せず段階を踏むことで、思わぬ不具合の混入を避けやすくなります。ECAを人間とAIの共同作業ツールとして捉え、常に人間が最終的な舵取りをする姿勢が肝心です。

小さなタスクに分割: 大きな機能追加も細かい単位に分けてAIと進める手法が効果的

小さなタスクに分割: AIに任せる作業は可能な限り細かい単位に分割するのがおすすめです。一度に大規模な変更を依頼すると、想定外の変更が発生したり、問題箇所の特定が難しくなる恐れがあります。そこで、「機能Aを一気に実装して」ではなく「まずデータ構造を定義」「次に主要ロジックを作成」「最後にエッジケースを処理」等、ステップごとに区切って依頼します。ECAなら対話形式で順を追って指示を出せるため、このような小刻みなタスク駆動が可能です。例えばリファクタリングでも、一度に10箇所直させるのではなく、まずは1〜2箇所適用しテスト、その後次の箇所…と進める方が安全です。タスクを細分化することで、問題が発生しても原因を切り分けやすく、AIの提案を逐次評価しながら確実に開発を進められます。

Human in the Loopの重要性: 人間が適宜介入しAIの動きをチェックすることで安心感を確保

Human in the Loopの重要性: ECAを活用する上で常に意識すべきなのは、人間がループ(開発プロセス)の中に居続けることです。AIに作業を任せっぱなしにせず、各段階で提案内容を評価し、必要なら修正指示を与えるなど人間の介入を挟むことで、品質と安心感を保てます。これは単に安全性のためだけでなく、開発者自身がAIの動きを理解し学習する機会にもなります。AIが生成したコードやプランに目を通し、「なぜこうしたのか?」を考えることで、自分の知識も深まります。ECAはあくまでアシスタントであり、最終的な責任と判断は人間にあります。適切なタイミングで人間がブレーキやハンドルを握ることで、AIの力を享受しつつも制御可能な開発を実現できるのです。

REPLやテストで検証: AIが書いたコードを実行・テストして動作確認しながら進める安全策

REPLやテストで検証: AIの提案や変更を適用した後は、必ず実際にコードを動かして検証する習慣をつけましょう。ECAで生成・修正されたコードは一見正しそうに見えても、実行してみないと分からない不具合が潜んでいる場合があります。そこで、変更適用後すぐにユニットテストを走らせたり、REPL上で関数を呼び出して期待通りの結果が得られるか確認します。もし問題が見つかれば、その内容を再度ECAに伝えて「このエラーを修正してください」と依頼することもできます。ECAはテスト結果やエラーメッセージを与えることで、再度改善案を提示してくれるでしょう。こうしたフィードバックループを回すことで、AIと協調しながら精度良く開発を進められます。AI任せにならず実行検証を怠らないことが、安全で信頼性の高いAI開発の秘訣です。

人とAIの協調による未来: ECAで実現するペアプログラミング的開発スタイルへの期待

人とAIの協調による未来: ECAを触れてみると、まさに人間とAIがペアプログラミングしているような新しい開発体験が得られます。人が指示を出しAIが下働きをし、結果を人が評価して次の指示を与える――この繰り返しによって、開発効率と学習効率の双方が向上するサイクルが生まれます。AIの助けを借りることで、人間の開発者はより創造的な設計や問題解決に専念でき、単調な作業はAIに任せるという役割分担が実現します。ECAはまだ新しいツールではありますが、今後さらに精度や安定性が増せば、AIと人間が二人三脚でコードを書く時代が本格的に到来するでしょう。開発体験を変革し得るこの技術の可能性に期待しつつ、現役の開発者も積極的にECAのようなAIアシスタントを取り入れて新たなコーディングスタイルを探求してみてはいかがでしょうか。

資料請求

RELATED POSTS 関連記事