拡張機能の制作|俺用に改良したAntigravityをプリティに仕上げるお作法(前編)— 環境構築からF5デバッグまで

| 6 min read

📝 記事について: 本記事は、50近辺のくたびれたおっさん(貧乏)の筆者が、サイトやコードを作っていく際に気になったものをまとめたものです。
利用するかもしれない製品・サービスについて、公開情報を調べています。内容の正確性については、必ず公式情報やデータソースをご確認ください。

Antigravity(Googleの次世代エディタ)を、自分用にちょっとずつ便利にしていきたい——そんなときに役立つのが拡張機能です。
この記事では、拡張機能を作るための「環境の準備」から「F5キーでテストするまで」を、やさしい言葉でまとめます。
後編では、サイドバーに時計やカレンダーを出す方法と、配布のやり方をお伝えします。

📦 制作物ダウンロード

記事で紹介している拡張機能のプロジェクト一式と配布用パッケージです。後編のページにも同じリンクがあります。

本記事では詳細なコードは省き、「お作法」や「こういう感じで」というニュアンスで説明しています。実際のコードは上記の配布物(ZIP)内にあります。説明や手順の詳細は、当サイトのインタラクティブ記事の別カテゴリで記述する予定です。

Core Insights

① 環境をそろえる → ② バージョンを合わせる → ③ プロジェクト構成とF5でテスト

  • 1 環境をそろえる

    Node.js・TypeScript・vsce

    Antigravityに付いているNode.jsだけでは足りません。パソコンにNode.jsとnpm、TypeScript、vsceを入れておくと、開発から配布までスムーズです。

  • 2 バージョンを合わせる

    package.json の engines と @types

    「自分の環境では動くのに、他の人だと動かない」を防ぐため、VS Code と Node のバージョンはきちんと指定しておきましょう。

  • 3 プロジェクト構成とF5でテスト

    .vscode と out が要

    launch.json と tasks.json を用意しておくと、F5で拡張機能をすぐ試せます。TypeScriptはコンパイルしてから動くので、tasks.json がないと「直したのに反映されない」になりがちです。

1. Antigravityってどんな仕組み?

Antigravityは、オープンソースのVisual Studio Code(VS Code)の基盤をフォークしたエディタで、GoogleのAIエージェント機能が組み込まれています(Google 公式 Codelabでは「VS Code の基盤をフォーク」と説明)。
中身はElectron(Chromium + Node.js)で動くため、「ブラウザの描画エンジン」とNode.jsが一緒になったようなものです。

だから、普段Webで使っているHTML・CSS・JavaScriptの知識がそのまま活かせて、
時計やカレンダーみたいな自分用のパネルをサイドバーに追加できます。

2. 開発に必要な環境(やさしく言うと)

「Antigravityが入っているから、もう何もしなくていい?」というと、ちょっと違います。
Antigravity自体を動かすためのNode.jsは入っていますが、拡張機能を書いたり・ビルドしたり・配布用に固めたりするには、
お使いのパソコンに次のものを別途用意するのがおすすめです。

ツール 役割・入れ方
Node.jsnpm(必須) ひな形や TypeScript・vsce を入れるために必要。公式(nodejs.org)からインストール。
Git(推奨) VS Code 公式の Your First Extension では Node.js と Git のインストールを推奨。
TypeScript(推奨) VS Code API を型付きで使え、ミスに気づきやすい。npm install -g typescript やプロジェクト内で npm install typescript
vsce 配布用 .vsix を作る公式ツール。npm install -g @vscode/vsce

「いまのパソコンに、必要なものが入っているか分からない」というときは、ゴリゴリに、PowerShellで無理やり情報を集める……という感じで、次のスクリプトを実行してみてください。
Node.js / npm / TypeScript / vsce の有無と、入っていればそのバージョンが表示されます。
日本語を正しく表示したい場合は、先に chcp 65001 を実行してからどうぞ。

# 拡張機能開発に必要な環境の有無・バージョンを確認する(PowerShell)
$names = @(
  @{ N = 'Node.js'; C = 'node --version' },
  @{ N = 'npm';     C = 'npm --version' },
  @{ N = 'tsc';     C = 'npx tsc --version 2>$null' },
  @{ N = 'vsce';    C = 'vsce --version 2>$null' }
)
foreach ($t in $names) {
  $v = try { Invoke-Expression $t.C 2>$null } catch { $null }
  if ($v) { Write-Host ("$($t.N): $($v -replace "`r?`n", ' ')") -ForegroundColor Green }
  else   { Write-Host "$($t.N): 未検出" -ForegroundColor Yellow }
}

PowerShell で実行すると、入っているツールは緑でバージョン、入っていないものは黄で「未検出」と出ます。
未検出のものは、上記の表を参考にインストールしてください。

実行例(一例):

Node.js: v22.19.0
npm: 10.9.3
tsc: This is not the tsc command you are looking for.
     To get access to the TypeScript compiler, tsc, from the command line either:
     - Use npm install typescript to first add TypeScript to your project before using npx
     - Use yarn to avoid accidentally running code from un-installed packages
vsce: 3.7.1

この例では Node.js / npm / vsce は検出され、tsc は「プロジェクトに TypeScript を入れてから」という案内が出ています。
拡張機能用フォルダで npm install を済ませていれば、そのフォルダ内では npx tsc --version でバージョンが表示されます。

3. バージョン指定の大切さ(package.json)

拡張機能を作るとき、「自分の環境では動くのに、他の人だと動かない」を防ぐために、package.json のバージョン指定はきちんとしておきましょう。

ポイント engines.vscode で「この拡張機能は VS Code 1.107.0 以降向け」と宣言し、@types/vscode@types/node も、いま動かしている Antigravity と Node のバージョンに合わせておくのがお作法です。揃えておくと「なぜか動かない」と悩むことが減ります。

4. プロジェクトのフォルダ構成と、F5でテストするまで

F5キーでサクッと拡張機能を試すには、.vscode フォルダが欠かせません。
配布されたプロジェクト(ZIP を解凍したフォルダ)や、自分で作った拡張機能のフォルダを使うときは、Antigravity でそのフォルダを「開く」→ プロジェクトルートにしてください
そうすると、F5 でテストできるようになります。

プロジェクトルートには、launch.json(F5を押したときにどう起動するか)と tasks.json(起動前に TypeScript を JavaScript にコンパイルする手順)を入れた .vscode フォルダを用意しておきます。

なぜ tasks.json が要るか 実際にエディタが読み込んで実行するのは src/extension.ts ではなく、コンパイル後の out/extension.js です。tasks.json が正しくないと「コードを直したのに、昔のまま動いている」になりがちなので、フォルダ構成を一度確認してみてください。

最終段階のフォルダ・ファイル構成(図)

antigravity-clock-ext/
├── .vscode/
│   ├── launch.json
│   └── tasks.json
├── node_modules/
├── out/
│   ├── extension.js
│   └── extension.js.map
├── src/
│   └── extension.ts
├── .vscodeignore
├── package.json
├── package-lock.json
├── tsconfig.json
├── README.md
├── LICENSE
├── antigravity_extension_guide_full.md.resolved
└── antigravity-clock-ext-0.0.1.vsix

各ファイル・フォルダの役割(なぜ必要なのか)

ファイル・フォルダ 役割 なぜ必要か
.vscode/ エディタへの動作指示を置くフォルダ ここがないと F5 で拡張機能をテストできません。
launch.json F5 で「Extension Development Host」の起動方法を定義 デバッグ用の別ウィンドウを開くために必須。
tasks.json 起動前に TS→JS コンパイル手順を定義 エディタが読むのは .js。無いと「直したのに反映されない」。
node_modules/ npm install で生成。依存の実体 TypeScript や型定義などビルドに必要なライブラリ。
out/ コンパイル結果 エディタが読み込む extension.js がここ。
extension.js extension.ts のコンパイル結果 Antigravity は JS しか実行できないため。
extension.js.map ソースマップ デバッグ時に .ts の行と対応付けるため。
src/extension.ts 拡張機能の本体(ロジック・Webview 等) ここを編集して機能を追加。
.vscodeignore VSIX に含めないファイルを指定 配布を軽くし .ts 等を外すため。実行時に読まれるのは .js なので、ソースを隠すには別の工夫が必要(後編で補足)。
package.json 名前・バージョン・engines・アイコン等 エディタが拡張機能を認識するマニフェスト。
package-lock.json 依存バージョンのロック 同じ環境を再現するため。
tsconfig.json TypeScript のコンパイルルール .ts を .js にどう変換するかを決める。
README.md プロジェクトの説明 配布・共有時の説明や自分用メモに。
LICENSE ライセンス表記 配布時の作法として利用条件を明示。
antigravity_extension_guide_full.md.resolved マニュアル・メモ(任意) 手順やメモを残すと見返しやすい。
antigravity-clock-ext-0.0.1.vsix 配布用(vsce package で作成後) 他環境で「Install from VSIX」でインストールするときに使う。

上記が一通りそろった状態が「最終段階」の構成です。
.vscode がないと F5 でテストできず、tasks.json が無いと .ts を直しても .js が更新されず「反映されない」と感じることがあります。

Antigravity拡張機能プロジェクトの最終的なフォルダ構成(Node利用、.vscode、out、src など)

図:拡張機能プロジェクトのフォルダ構成例。.vscodelaunch.jsontasks.json)、srcoutpackage.json など。
F5でテストする前に、ここがそろっているか確認すると安心です。(クリックで拡大)

ここまでそろえば、F5でExtension Development Hostが起動し、そこで拡張機能の動作を確認できます。
続きの「サイドバーに時計・カレンダーを出す方法」と「VSIXで配布する方法」は、後編でお伝えします。

Artist's Perspective

「Antigravityを、開発だけじゃなくオフィスワークでも使いやすい"自由度の高いLLMツール"の土台にしていきたい。
俺用に改良したAntigravityだ、プリティすぎてお前には***だよ~~と言ってみたいところですが、ハードルが高すぎるので、
これから何回かに分けて、Antigravityをプリティに仕上げていきたいと思います。」

データソース・参考リンク

本記事は以下の情報源を参考にしています。内容の正確性については、必ず元のデータソースをご確認ください。

Antigravity 関連の当サイト記事:Browser Subagent(brief033)、SKILLS(brief026brief027brief031)、Stitch連携(brief032brief034)、唐揚げブラウザ(brief035brief036)。続きのWebview・VSIX配布は後編