◉ANTIGRAVITY LABEN
記事一覧/Editor View
⟐ Editor View/2026-07-12中級

自分のDSLがモノクロのままだった — Antigravity に最小構成の TextMate 文法を足して色を通す

個人開発で使う独自の設定ファイル(DSL)がエディタで真っ白なままだと、読み違いが増えます。Antigravity に最小構成の TextMate 文法とlanguage-configuration を足して、独自ファイルにハイライトを通すまでの手順を、動くコードと落とし穴つきで整理します。

antigravity461editor30textmateシンタックスハイライト拡張機能3個人開発102

✦ プレミアム記事

夜、自作のアプリで使っている壁紙生成ルールのファイルを開いたとき、画面がやけに静かに見えました。palette: sunset も @when season == winter も、コメントも文字列も、すべて同じ灰色。JavaScript や Python なら一目で読める構造が、自分で決めた拡張子 .wprules になった途端に平坦なテキストに戻ってしまう。行を目で追うたびに、キーと値の境目を頭の中で引き直している自分に気づきました。

原因はエディタの性能ではありません。Antigravity は .wprules という拡張子を知らないので、色を塗る手がかり(言語定義)を持っていないだけです。逆に言えば、その手がかりを一枚渡せば色は通ります。ここでは、独自ファイルにハイライトを効かせる最小構成の拡張を、実際に動くコードで組み立てていきます。派手な機能は足しません。まず「読める」状態を最短で作ることに絞ります。個人開発でアプリを長く保守していると、自分だけが読む設定ファイルは少しずつ増えていきます。だからこそ、この一枚の投資は日々の視認性にそのまま返ってきます。

モノクロの正体 — ハイライトは「スコープ」を色に写す作業

シンタックスハイライトは、テキストを直接色付けしているわけではありません。まず文法(grammar)がテキストの各部分に keyword.control や string.quoted といったスコープ名を割り当て、次にテーマがそのスコープ名に色を対応づけます。二段構えです。

独自ファイルがモノクロなのは、この一段目が存在しないからです。テーマは十分な色を持っているのに、塗るべき対象にスコープ名が付いていない。だから、私たちがやるべきことは色を選ぶことではなく、テキストに正しいスコープ名を割り当てる文法を書くことに尽きます。

この設計は Antigravity 固有の発明ではなく、TextMate に由来し VS Code 系エディタが広く採用している方式です。Antigravity も同じ仕組みを踏襲しているため、TextMate 文法(.tmLanguage.json)をそのまま持ち込めます。

対象にするファイル

今回色を通すのは、次のような自作の .wprules です。壁紙生成の条件を宣言的に書くための、ごく小さな DSL だと考えてください。

# 冬の夕暮れプリセット
@when season == winter
palette: sunset
brightness: 0.82
title: "Winter Glow"

ここには4種類の意味の異なる要素があります。コメント(#)、ディレクティブ(@when ...)、キー(palette など)、値(数値・真偽・文字列)。この4つにそれぞれ違うスコープを割り当てれば、読むときの手がかりが一気に戻ってきます。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦独自ファイルがモノクロになる原因は「言語登録がない」ことで、TextMate 文法を1枚足すだけで色が通る仕組み
✦grammar・language-configuration・スニペットを含む最小拡張の全ファイルと、スコープ検査で色を検証する手順
✦正規表現の並び順・埋め込み言語・テーマ非依存にするための標準スコープ命名という3つの落とし穴と回避策
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Editor View2026-10-08
会話だけ戻す undo とサブエージェントへの直送、使い分けに迷った3つの場面
Antigravity 2.19.1 で加わった「undo で会話だけを戻す」と「サブエージェントへ直接送る」。公式の記述と私の線引きを分けて、迷いやすい3つの場面を整理します。
⟐ Editor View2026-08-14
エージェントの差分を目視で追うのをやめました。2.8.0 の表示上限をきっかけに組み直したレビュー手順
2.8.0 でファイルビューアと履歴差分に表示上限が入りました。全量を目で追う前提が崩れたことをきっかけに、機械が拾える欠陥と人にしか判断できない箇所を分けるレビュー手順へ切り替えた記録です。実際に動くスクリプトと、実リポジトリで見つかった見落としを添えています。
⟐ Editor View2026-05-03
Gemini CLI と Antigravity を本気で使い分ける — 2026年5月、現場で出した結論
結論は「作業の粒度で住み分ける」です。Gemini CLI・Gemini Code Assist・Antigravity の違いをエディタとの距離で整理し、半年の並行運用で固まった決定木、プロキシ配下と DevContainer での挙動差、併用時に必ず踏む地雷までまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます