<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>開発環境 on hagizo.io</title><link>https://ha.gizwoo.com/categories/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/</link><description>Recent content in 開発環境 on hagizo.io</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 20 May 2026 20:31:12 +0900</lastBuildDate><atom:link href="https://ha.gizwoo.com/categories/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/index.xml" rel="self" type="application/rss+xml"/><item><title>Copilotに複数リポジトリを解析させるならVS CodeのMulti-root Workspaceが便利</title><link>https://ha.gizwoo.com/vscode-copilot-multiroot-workspace-p7xqm2rk9v/</link><pubDate>Wed, 29 Apr 2026 08:59:00 +0900</pubDate><guid>https://ha.gizwoo.com/vscode-copilot-multiroot-workspace-p7xqm2rk9v/</guid><description>&lt;p&gt;GitHub Copilotを使って複数のプロジェクトを比較・解析したい場合、VS CodeのMulti-root Workspaceがかなり便利です。別ウィンドウで左右に並べる方法もありますが、Copilotに両方のコードベースを参照させたいなら、1つのワークスペースにまとめるほうが扱いやすくなります。本記事では、Copilotに複数リポジトリを解析させる前提で、Multi-root Workspaceの使い方と活用ポイントを整理します。&lt;/p&gt;
&lt;h2 id="multi-root-workspaceとは"&gt;Multi-root Workspaceとは
&lt;/h2&gt;&lt;p&gt;Multi-root Workspaceは、VS Codeの1つのウィンドウに複数のフォルダを追加して扱う機能です。通常は1つのプロジェクトフォルダを開いて作業しますが、Multi-root Workspaceを使うと、複数のリポジトリや関連プロジェクトを同じVS Code上でまとめて開けます &lt;a class="link" href="https://zenn.dev/longbow/articles/20260324_multi_root_work_space" target="_blank" rel="noopener"
 &gt;Zenn&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;たとえば、ライブラリ本体とそれを利用するアプリケーション、旧リポジトリと新リポジトリ、バックエンドとフロントエンド、移植元と移植先のような組み合わせを1つの作業空間にできます。VS Codeでは、それぞれのフォルダを独立したルートとして扱えるため、Gitの状態もプロジェクトごとに分けて確認できます &lt;a class="link" href="https://qiita.com/molecular_pool/items/decbba16dd85b0bfca13" target="_blank" rel="noopener"
 &gt;Qiita&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="copilotに両方を見せたい場合に向いている"&gt;Copilotに両方を見せたい場合に向いている
&lt;/h2&gt;&lt;p&gt;Copilot Chatに「この実装を別プロジェクトに移植したい」「AリポジトリとBリポジトリの構成差分を見てほしい」「このライブラリの使い方を利用側アプリから推測して」と依頼する場合、関連するフォルダが同じVS Codeワークスペースに入っているほうが自然です。&lt;/p&gt;
&lt;p&gt;別ウィンドウで開いている場合、人間は左右を見比べられますが、Copilotにとっては文脈が分断されやすくなります。一方、Multi-root Workspaceでは、複数フォルダを同じ作業単位として扱えるため、Copilot Chatに対象ファイルやフォルダを指定しながら質問しやすくなります。&lt;/p&gt;
&lt;p&gt;たとえば、次のような依頼がしやすくなります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;repo-aの認証処理を参考に、repo-bの実装方針を提案して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;frontendとbackendのAPI定義にズレがないか確認して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;旧プロジェクトのこの機能を、新プロジェクトの構成に合わせて移植する手順を出して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このように、Copilotを単なる補完ツールではなく、複数コードベースをまたいだ分析役として使うなら、Multi-root Workspaceはかなり相性がよい構成です。&lt;/p&gt;
&lt;h2 id="設定方法"&gt;設定方法
&lt;/h2&gt;&lt;p&gt;設定方法はシンプルです。まずVS Codeで1つ目のプロジェクトを開きます。その後、メニューから「File &amp;gt; Add Folder to Workspace&amp;hellip;」を選び、比較したい別プロジェクトを追加します。必要に応じて、ワークスペースを &lt;code&gt;.code-workspace&lt;/code&gt; ファイルとして保存できます &lt;a class="link" href="https://atmarkit.itmedia.co.jp/ait/articles/1806/08/news028.html" target="_blank" rel="noopener"
 &gt;atmarkIT&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.code-workspace&lt;/code&gt; として保存しておくと、次回から同じ組み合わせをすぐに開けます。たとえば、移植作業用、モノレポ分割作業用、ライブラリ検証用のように、目的別のワークスペースを作っておくと便利です。&lt;/p&gt;
&lt;p&gt;構成例としては、次のようなイメージです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my-migration.code-workspace
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- old-service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- new-service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- shared-library
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この状態でVS Codeを開けば、Copilotに対して「old-serviceの実装を参考にnew-service側の設計を見直して」といった質問をしやすくなります。&lt;/p&gt;
&lt;h2 id="同じリポジトリの別ブランチならgit-worktreeと組み合わせる"&gt;同じリポジトリの別ブランチならGit worktreeと組み合わせる
&lt;/h2&gt;&lt;p&gt;同じリポジトリの別ブランチを比較したい場合は、Multi-root WorkspaceだけでなくGit worktreeを組み合わせると便利です。Git worktreeを使うと、同じリポジトリの別ブランチを別ディレクトリとして展開できます &lt;a class="link" href="https://qiita.com/masakinihirota/items/96e2eb8929b0321d1a20" target="_blank" rel="noopener"
 &gt;Qiita&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;たとえば、次のように実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git worktree add ../feature-branch feature-branch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;その後、元のブランチのディレクトリと、worktreeで作成したディレクトリを同じMulti-root Workspaceに追加します。これにより、Copilotに「mainブランチとfeatureブランチの設計差分を見て」「feature側の変更をmain側の構成に合わせるにはどうすればよいか」といった相談がしやすくなります。&lt;/p&gt;
&lt;p&gt;この方法は、リファクタリング前後の比較、長期ブランチの差分確認、実験実装と本番実装の比較に向いています。単にGit diffを見るだけでなく、Copilotに設計意図や移植方針まで考えさせたい場合に効果的です。&lt;/p&gt;
&lt;h2 id="運用時の注意点"&gt;運用時の注意点
&lt;/h2&gt;&lt;p&gt;Multi-root Workspaceに多くのリポジトリを入れすぎると、検索結果やファイル候補が増えすぎて、逆に作業しづらくなることがあります。Copilotに解析させたい対象だけをワークスペースに入れるのが基本です。&lt;/p&gt;
&lt;p&gt;また、似た名前のファイルが複数ある場合は、Copilotへの指示でフォルダ名を明示すると誤解が減ります。「srcの実装を見て」ではなく、「old-service/srcの実装を参考に、new-service/srcへ移植する方針を出して」のように書くと、対象が明確になります。&lt;/p&gt;
&lt;p&gt;Gitの変更もフォルダごとに分かれるため、コミット対象を間違えないように注意が必要です。VS Code上では複数リポジトリの変更が同じSource Controlビューに出ることがあるため、どのリポジトリに対する変更か確認してからコミットすると安全です。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Copilotに複数のプロジェクトやリポジトリを解析させたいなら、VS CodeのMulti-root Workspaceを使うのが最も扱いやすい方法です。別ウィンドウでの比較は人間の目視には便利ですが、Copilotに両方のコードベースを意識させる用途では、1つのワークスペースにまとめるほうが自然です。&lt;/p&gt;
&lt;p&gt;移植元と移植先、ライブラリと利用側アプリ、frontendとbackend、同一リポジトリの別ブランチなどをMulti-root Workspaceにまとめることで、Copilotに横断的な分析や実装方針の提案を依頼しやすくなります。複数コードベースを扱う作業では、まずMulti-root Workspaceを作り、必要に応じてGit worktreeを組み合わせる構成を基本にするとよいでしょう。&lt;/p&gt;</description></item><item><title>CopilotのAgent・SubAgent・Skillをポケモンに例えて理解する</title><link>https://ha.gizwoo.com/copilot-agent-pokemon-p7kqm3xzn9/</link><pubDate>Sat, 25 Apr 2026 09:30:00 +0900</pubDate><guid>https://ha.gizwoo.com/copilot-agent-pokemon-p7kqm3xzn9/</guid><description>&lt;p&gt;GitHub CopilotのAgent、SubAgent、Skillという用語は、公式ドキュメントを読んでもすぐには頭に入ってこない。特に「Agentの中でSubAgentが動き、Skillが読み込まれる」という階層構造は、文字で追うと混乱しやすい。ところが、これをポケモンに例えた瞬間、全体像がすっきり見えてくる。この記事では、その比喩を通じて三者の役割と使い分けを整理する。&lt;/p&gt;
&lt;h2 id="agentはトレーナー"&gt;Agentはトレーナー
&lt;/h2&gt;&lt;p&gt;Agentの役割は、目的を持ち、状況を判断し、手持ちを動かす存在である。これはポケモンのトレーナーそのものだ。たとえばサトシとゴウは、同じ世界を歩いていても目的がまったく違う。サトシは「ポケモンマスターになる」ことを目指し、ゴウは「すべてのポケモンを捕まえる」ことを目指している。目的が違えば、選ぶポケモンも、戦い方も、旅のルートも変わる。&lt;/p&gt;
&lt;p&gt;Agentが存在する理由は、ここにある。「バグを直したい」「新機能を設計したい」「リリースノートを書きたい」という目的ごとに、最適な進め方は違う。Agentは、その目的を受け取り、どのSubAgentにどう動いてもらうかを判断する司令塔の役割を担う。&lt;/p&gt;
&lt;h3 id="トレーナーとしてのagentの仕事"&gt;トレーナーとしてのAgentの仕事
&lt;/h3&gt;&lt;p&gt;トレーナーは自分で技を出すわけではない。代わりに、場面に応じて手持ちを選び、指示を出す。Agentも同じで、自分で細かい作業をこなすより、タスクの分解と委譲が主な仕事になる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的を設定する&lt;/li&gt;
&lt;li&gt;タスクをどう分割するかを決める&lt;/li&gt;
&lt;li&gt;どのSubAgentに任せるかを選ぶ&lt;/li&gt;
&lt;li&gt;結果を受け取って次の手を考える&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="subagentはポケモン"&gt;SubAgentはポケモン
&lt;/h2&gt;&lt;p&gt;SubAgentは、Agentに呼び出されて特定の仕事をこなす専門家である。これはポケモンに当たる。ピカチュウは電気技が得意で、リザードンは炎と飛行が得意、ゲンガーはゴーストとエスパー対策に強い、というように、ポケモンごとに得意分野がはっきりしている。&lt;/p&gt;
&lt;p&gt;SubAgentも同じで、「コードレビュー担当」「テスト作成担当」「ドキュメント整備担当」「セキュリティ監査担当」のように、役割ごとに専門化されている。Agentはタスクの性質を見て、適切なSubAgentを選んで呼び出す。これは、岩タイプ相手にはミズタイプを出す、という戦略と構造的に同じだ。&lt;/p&gt;
&lt;h3 id="手持ちを揃えるという発想"&gt;手持ちを揃えるという発想
&lt;/h3&gt;&lt;p&gt;ポケモンバトルで手持ちを6匹編成するように、Agentも複数のSubAgentを組み合わせて運用すると強い。単一の万能SubAgentを作ろうとするより、役割を分けておいた方が、プロンプトもコンテキストもシンプルに保てる。結果として、一匹あたりの判断精度が上がる。&lt;/p&gt;
&lt;h2 id="skillは技"&gt;Skillは技
&lt;/h2&gt;&lt;p&gt;Skillは、SubAgentが実行する具体的な動きである。これはポケモンの技に相当する。ここが比喩のキモで、技はポケモンに固有ではない。たとえば「でんこうせっか」はピカチュウも覚えるし、ニャースも覚える。「かみなり」はピカチュウだけでなく、サンダースやエレブーも使える。&lt;/p&gt;
&lt;p&gt;Skillも同じで、「Hugoフロントマター生成ルール」「PR説明文テンプレート」「テスト追加手順」といったSkillは、特定のSubAgentに紐付いているわけではなく、必要に応じて複数のSubAgentから再利用できる。これが「Skillは再利用可能な手順」と言われる理由だ。&lt;/p&gt;
&lt;h3 id="技マシンとしてのskill"&gt;技マシンとしてのSkill
&lt;/h3&gt;&lt;p&gt;ポケモンは技マシンを使うことで新しい技を覚えられる。Skillもこれに近い。SubAgentは自分の得意分野のコア能力を持ちつつ、必要なときにSkillを読み込んで能力を拡張する。Copilotの世界では、Agent Skillsが関連タスクのときだけコンテキストに注入される仕組みになっており、これはまさに「戦闘中に必要な技だけ繰り出す」構造と一致する。&lt;/p&gt;
&lt;h2 id="三者の関係を一枚絵で"&gt;三者の関係を一枚絵で
&lt;/h2&gt;&lt;p&gt;ここまでの対応関係を整理すると次のようになる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent = トレーナー：目的を持ち、戦略を決める&lt;/li&gt;
&lt;li&gt;SubAgent = ポケモン：得意分野を持つ専門家&lt;/li&gt;
&lt;li&gt;Skill = 技：複数のポケモンで共有できる具体的な動き&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;バトルの流れに置き換えるなら、「トレーナーが目的に応じてポケモンを選び、場面に応じて技を指示する」という構造になる。実務に置き換えれば、「Agentがタスクを分解し、適切なSubAgentを呼び、SubAgentが必要なSkillを読み込んで実行する」となる。&lt;/p&gt;
&lt;h2 id="比喩が効く理由"&gt;比喩が効く理由
&lt;/h2&gt;&lt;p&gt;この比喩がわかりやすいのは、役割の粒度と再利用性がきれいに対応しているからだ。トレーナー同士は目的が違うから入れ替えにくい。ポケモンは得意分野で役割分担する。技はポケモンを跨いで共有できる。Copilotの三階層も、同じ粒度設計になっている。&lt;/p&gt;
&lt;h2 id="比喩が崩れるところ"&gt;比喩が崩れるところ
&lt;/h2&gt;&lt;p&gt;ただし、この比喩には一点だけ素直に対応しないところがある。ポケモンの世界ではトレーナーが直接技を繰り出すことはなく、技を出すのはあくまでポケモンだ。一方Copilotでは、AgentもSubAgentと同じようにSkillを読み込んで自分で実行できる。小さなタスクであればSubAgentを介さず、Agentがその場でSkillを使ってしまう方が速い場面も多い。トレーナーが必要に応じて自分でも技マシンを使えるイメージだと思っておくと、設計時にミスマッチが起きにくい。&lt;/p&gt;
&lt;p&gt;設計で迷ったときは、この比喩に戻ると判断しやすい。「これはトレーナーの仕事か、ポケモンの仕事か、それとも技か」と問い直すだけで、Agentに書くべきこと、SubAgentに閉じ込めるべきこと、Skillとして切り出すべきことが見えてくる。AIエージェントの設計は抽象的になりがちだが、手に馴染んだ比喩を一つ持っておくと、チームでの議論もかなり速くなる。&lt;/p&gt;</description></item><item><title>Neovim環境を育てる：ターミナル・ファイル操作・キーマップ設計</title><link>https://ha.gizwoo.com/neovim-keymap-setup-qw7plm3xzn/</link><pubDate>Thu, 23 Apr 2026 09:30:00 +0900</pubDate><guid>https://ha.gizwoo.com/neovim-keymap-setup-qw7plm3xzn/</guid><description>&lt;p&gt;Neovim環境は、エディタ単体ではなく「ターミナル」「ファイル操作」「キーマップ設計」まで含めて整えると使いやすくなる。特に毎日触る操作は、コマンド入力よりもキー操作に寄せることで、作業の流れを止めにくくなる。&lt;/p&gt;
&lt;h2 id="全体方針"&gt;全体方針
&lt;/h2&gt;&lt;p&gt;最初から完成形を目指すよりも、日々の操作を少しずつ改善していく方が長続きしやすい。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;採用しているもの&lt;/th&gt;
 &lt;th&gt;理由&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ターミナル&lt;/td&gt;
 &lt;td&gt;WezTerm&lt;/td&gt;
 &lt;td&gt;Luaで設定でき、Neovim設定との親和性が高い&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ファイルエクスプローラ&lt;/td&gt;
 &lt;td&gt;neo-tree.nvim&lt;/td&gt;
 &lt;td&gt;ファイルだけでなく、バッファ一覧も扱いやすい&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ショートカット設計&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;;&lt;/code&gt; / &lt;code&gt;;;&lt;/code&gt; プレフィックス&lt;/td&gt;
 &lt;td&gt;1文字キーの枯渇を避けつつ、体系化しやすい&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;キーガイド&lt;/td&gt;
 &lt;td&gt;which-key.nvim&lt;/td&gt;
 &lt;td&gt;入力途中で次の候補を確認できる&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="weztermを使う理由"&gt;WezTermを使う理由
&lt;/h2&gt;&lt;p&gt;WezTermは設定ファイルをLuaで書けるターミナル。Neovimの設定もLuaで書く場合、ターミナル側もLuaで管理できるのは大きな利点になる。フォント、配色、キーバインド、タブ、ペインなどをコードとして扱えるため、dotfilesで管理しやすい。&lt;/p&gt;
&lt;p&gt;ターミナルとエディタの設定言語が揃うことで、環境全体を一つの開発基盤として扱える。&lt;/p&gt;
&lt;h2 id="ファイル操作はneo-treenvim"&gt;ファイル操作はneo-tree.nvim
&lt;/h2&gt;&lt;p&gt;ファイルエクスプローラにはneo-tree.nvimを使っている。neo-tree.nvimは filesystem、buffers、git_status などを扱える。特に便利なのは、開いているバッファ一覧を表示できる点。&lt;/p&gt;
&lt;p&gt;ファイルツリーだけでは「今どのファイルを開いているか」が見えにくいことがある。バッファ一覧をサイドバーで確認できると、作業中の文脈を保ったまま移動しやすい。&lt;/p&gt;
&lt;h2 id="キーマップ設計"&gt;キーマップ設計
&lt;/h2&gt;&lt;p&gt;Neovimでは、よく使う操作をUserCommandにする方法と、キーマップに割り当てる方法がある。頻繁に使う操作は、コマンド入力よりキーマップ化した方が速い。毎回 &lt;code&gt;:CommandName&lt;/code&gt; と入力するより、キー入力だけで実行できる方が作業の流れを止めにくい。&lt;/p&gt;
&lt;h3 id="-と--を使う"&gt;&lt;code&gt;;&lt;/code&gt; と &lt;code&gt;;;&lt;/code&gt; を使う
&lt;/h3&gt;&lt;p&gt;1文字のアルファベットキーだけでショートカットを作ると、すぐに割り当て先が足りなくなる。そこで、&lt;code&gt;;&lt;/code&gt; や &lt;code&gt;;;&lt;/code&gt; をプレフィックスとして使う。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;よく使う一等地の操作&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;g&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Git系メニュー&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;f&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ファイル系メニュー&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;b&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;バッファ系メニュー&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;l&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;LSP系メニュー&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Git系であれば、次のように整理できる。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;操作例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;ga&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;git add&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;gp&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;git push&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;;;gs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;git status&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;プレフィックスで分類しておくと、キーマップが増えても破綻しにくい。&lt;/p&gt;
&lt;h2 id="which-keynvimで補助する"&gt;which-key.nvimで補助する
&lt;/h2&gt;&lt;p&gt;キーマップを増やすと、次に問題になるのは「何を割り当てたか忘れる」こと。which-key.nvimは、キー入力の途中で利用可能なキーバインド候補をポップアップ表示するNeovimプラグイン。&lt;/p&gt;
&lt;p&gt;たとえば &lt;code&gt;;;g&lt;/code&gt; まで入力した時点でGit系の候補が表示されれば、次に &lt;code&gt;a&lt;/code&gt;、&lt;code&gt;p&lt;/code&gt;、&lt;code&gt;s&lt;/code&gt; のどれを押せばよいか確認できる。各キーマップに &lt;code&gt;desc&lt;/code&gt; を付けておくと、which-key.nvimで表示される説明も管理しやすい。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Neovim環境は、プラグインを大量に入れるよりも、よく使う操作を迷わず実行できる状態にすることが重要。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;方針&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ターミナル&lt;/td&gt;
 &lt;td&gt;WezTermでLua設定に寄せる&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ファイル操作&lt;/td&gt;
 &lt;td&gt;neo-tree.nvimでファイルとバッファを扱う&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;操作体系&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;;&lt;/code&gt; / &lt;code&gt;;;&lt;/code&gt; プレフィックスで分類する&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;補助&lt;/td&gt;
 &lt;td&gt;which-key.nvimで候補を表示する&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;日々の「少し面倒」をキーマップにしていくと、Neovim環境は自然に育っていく。最初から完璧な設定を作るより、自分の操作に合わせて少しずつ拡張する方が実用的。&lt;/p&gt;</description></item><item><title>【GitHub Copilot】AgentとSkillの使い分け方</title><link>https://ha.gizwoo.com/copilot-agent-skill-v8kx3pqr2a/</link><pubDate>Thu, 23 Apr 2026 02:02:34 +0900</pubDate><guid>https://ha.gizwoo.com/copilot-agent-skill-v8kx3pqr2a/</guid><description>&lt;p&gt;GitHub Copilotを使っていると、「Agentに任せるべきか」「Skillとして定義すべきか」で迷う場面があります。どちらもAIに作業を助けてもらう仕組みですが、役割はかなり違います。この記事では、AgentとSkillをどう使い分けると開発効率が上がるのかを、具体例つきで整理します。&lt;/p&gt;
&lt;h2 id="agentは作業を進める担当者"&gt;Agentは「作業を進める担当者」
&lt;/h2&gt;&lt;p&gt;Agentは、ざっくり言えば「目的を渡すと、自律的に作業を進める担当者」です。GitHub Copilotのagent modeは、自然言語の指示をもとにコードベースを分析し、複数ステップの解決策を計画・実行し、コマンドやテストも実行できる同期的な協力者として説明されています。&lt;a class="link" href="https://github.blog/ai-and-ml/github-copilot/agent-mode-101-all-about-github-copilots-powerful-mode/" target="_blank" rel="noopener"
 &gt;GitHub Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;たとえば、次のような依頼はAgent向きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「このバグの原因を調べて修正して」&lt;/li&gt;
&lt;li&gt;「既存のAPIにページネーションを追加して」&lt;/li&gt;
&lt;li&gt;「テストが落ちているので原因を特定して直して」&lt;/li&gt;
&lt;li&gt;「このPRの変更に合わせてドキュメントも更新して」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ポイントは、作業のゴールは明確だが、途中で何を読むか、どのファイルを直すか、どのテストを回すかはAIに判断させたいケースです。GitHub Copilot coding agentは、GitHub上でバックグラウンド実行され、ブランチ作成、コミット、Pull Request作成などを含めて作業できる仕組みとして説明されています。&lt;a class="link" href="https://docs.github.com/copilot/concepts/agents/coding-agent/about-coding-agent" target="_blank" rel="noopener"
 &gt;GitHub Docs&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="agentに向いている指示例"&gt;Agentに向いている指示例
&lt;/h3&gt;&lt;p&gt;悪い例は「いい感じに改善して」です。範囲が広すぎて、Agentがどこまでやれば完了なのか判断しにくくなります。&lt;/p&gt;
&lt;p&gt;良い例は次のような形です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ユーザー一覧APIにlimitとcursorを追加してください。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;既存のレスポンス形式は壊さず、テストも追加してください。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;変更後に関連するREADMEのAPI例も更新してください。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このように、完了条件、制約、確認方法を渡すと、Agentは動きやすくなります。&lt;/p&gt;
&lt;h2 id="skillは再利用できる作業手順"&gt;Skillは「再利用できる作業手順」
&lt;/h2&gt;&lt;p&gt;Skillは、Agentそのものではなく、Agentが必要なときに読み込める専門手順です。GitHub CopilotのAgent Skillsは、特定タスクの性能を上げるためにCopilotが読み込める「instructions、scripts、resourcesを含むフォルダ」と説明されています。&lt;a class="link" href="https://docs.github.com/en/copilot/concepts/agents/about-agent-skills" target="_blank" rel="noopener"
 &gt;GitHub Docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Skillに向いているのは、毎回同じルールでやりたい作業です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「このリポジトリのテスト追加方針」&lt;/li&gt;
&lt;li&gt;「Hugo記事のフロントマター生成ルール」&lt;/li&gt;
&lt;li&gt;「社内APIクライアントの実装パターン」&lt;/li&gt;
&lt;li&gt;「GitHub Actions失敗時の調査手順」&lt;/li&gt;
&lt;li&gt;「リリースノートの書き方」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば、Hugoの記事を書くたびに「h1は使わない」「YAMLフロントマターを付ける」「タグとカテゴリを生成する」と毎回プロンプトに書くのは面倒です。これをSkillにしておけば、AgentやCopilotが該当タスクだと判断したときに、その手順を読み込んで作業できます。GitHubの説明でも、Skillが選ばれると&lt;code&gt;SKILL.md&lt;/code&gt;がAgentのコンテキストに注入され、指示や同梱されたスクリプト・例を使えるとされています。&lt;a class="link" href="https://docs.github.com/en/copilot/how-tos/use-copilot-agents/cloud-agent/add-skills" target="_blank" rel="noopener"
 &gt;GitHub Docs&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="使い分けの判断基準"&gt;使い分けの判断基準
&lt;/h2&gt;&lt;p&gt;一番シンプルな判断基準は、「今回だけの作業か、今後も繰り返す型か」です。&lt;/p&gt;
&lt;h3 id="agentを使うべきケース"&gt;Agentを使うべきケース
&lt;/h3&gt;&lt;p&gt;Agentは、状況判断が必要な作業に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数ファイルを横断して調査する&lt;/li&gt;
&lt;li&gt;実装、テスト、修正をまとめて進める&lt;/li&gt;
&lt;li&gt;エラー出力を見ながら試行錯誤する&lt;/li&gt;
&lt;li&gt;Pull Requestとして成果物を残したい&lt;/li&gt;
&lt;li&gt;途中の判断をAIに任せたい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば「Neovimプラグインの設定読み込み順を調べて、起動時間を悪化させずに修正して」という依頼はAgent向きです。対象ファイルの探索、原因調査、実装修正、ベンチマーク確認が必要だからです。&lt;/p&gt;
&lt;h3 id="skillを使うべきケース"&gt;Skillを使うべきケース
&lt;/h3&gt;&lt;p&gt;Skillは、作業の「やり方」を固定したい場合に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;チーム固有のコーディング規約がある&lt;/li&gt;
&lt;li&gt;毎回同じフォーマットで記事やIssueを作る&lt;/li&gt;
&lt;li&gt;レビュー観点を統一したい&lt;/li&gt;
&lt;li&gt;特定ツールの実行手順を覚えさせたい&lt;/li&gt;
&lt;li&gt;失敗しやすい手順をチェックリスト化したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば「GoのAPIハンドラを追加するときは、handler、service、repository、migration、OpenAPI定義、テストを必ず更新する」というルールはSkill向きです。作業そのものはAgentに任せつつ、進め方はSkillで縛るイメージです。&lt;/p&gt;
&lt;h2 id="組み合わせると強い"&gt;組み合わせると強い
&lt;/h2&gt;&lt;p&gt;実践では、AgentとSkillは対立するものではありません。むしろ「Agentにタスクを任せ、Skillで作業品質を安定させる」と考えるのが自然です。GitHub Docsでも、簡単でほぼ全タスクに関係する指示はcustom instructionsに、関連時だけ読み込む詳細な指示はskillsに向いていると説明されています。&lt;a class="link" href="https://docs.github.com/en/copilot/how-tos/use-copilot-agents/cloud-agent/add-skills" target="_blank" rel="noopener"
 &gt;GitHub Docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;具体的には、次のように組み合わせます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Agentへの依頼:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;認証APIにパスワードリセット機能を追加してください。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Skill側の定義:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- このプロジェクトのAPI実装パターン
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- テスト作成ルール
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- エラーレスポンス形式
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- OpenAPI更新手順
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- セキュリティレビュー観点
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この形にすると、Agentは自律的に作業しつつ、プロジェクト固有のルールから外れにくくなります。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Agentは「タスクを進める実行者」、Skillは「実行者に渡す専門マニュアル」です。迷ったら、まずはAgentに任せる単位を「完了条件のある作業」として切り出し、何度も繰り返す手順や品質基準をSkill化するとよいでしょう。&lt;/p&gt;
&lt;p&gt;開発者にとって重要なのは、AIに丸投げすることではなく、AIが迷わず動ける環境を設計することです。Agentで作業を進め、Skillで再現性を高める。この組み合わせを意識すると、Copilotは単なる補完ツールから、かなり実用的な開発パートナーに近づきます。&lt;/p&gt;</description></item></channel></rss>