English: Injecting Toukon (Self-Mastery Spirit) into Amazon Q Developer CLI!?
はじめに
Amazon Q Developer CLIをご存知でしょうか。qとターミナルに打ち込んで、チャットしながら開発を進めるAIツールです。
これをインストールすると、もれなくCommand line assistance featuresというターミナルでのコマンド操作を便利にしてくれるツールも手に入ります。あとで知ることになりますが、この機能の元は、どうやらFigというツールが前身のようです。Figという名前で検索してみると、前身時代にも話題になっていたようで記事がちらほらみつかります。
q --help-allすると、themeというサブコマンドがありました。何だろう、テーマって? と思って、いろいろと調べ、歩み、挑戦をした旅の記録です。
私のテーマはもちろん「
闘魂
」です。
ヘルプミー
まずはヘルプで確認してみました。
$ q theme --help
Get or set theme
Usage: q theme [OPTIONS] [THEME]
Arguments:
[THEME]
Options:
--list
--folder
-v, --verbose... Increase logging verbosity
-h, --help Print help
あっさりしています。なんだかわかりません。Amazon Q CLI command referenceをみてもよくわかりません。
第一章:発見の瞬間
q theme --list を打つとテーマ名のようなものが羅列されました。q theme --folderをすると、私のmacOSでは/Applications/Amazon Q.app/Contents/Resources/themesでした。lsしてみると、.jsonが置かれていて、q theme --listしたときにみた名前と一致していることがわかりました。
ためしに、palenightテーマに変えてみました。
q theme palenight
› Switching to theme 'palenight' by Jamie Weavis
🐦 @jamieweavis
💻 github.com/jamieweavis
そこには作者の名前、GitHubアカウント、Twitterハンドルが表示されていました。
「私のテーマも、ここに載せてもらえるのではないか?」と思いました。
第二章:Fig という前身
調査を進めると、Amazon Q CLIのCommand line assistance features機能の前身に「Fig」というプロジェクトの存在が浮かび上がりました。
FigのGitHubリポジトリはPublic Archiveされており、公式ページには、「Fig has been sunset, migrate to Amazon Q」と書いてありました。Public Archiveされたリポジトリの案内には、amazon-q-developer-cliで手に入るとのことでしたので、まずはamazon-q-developer-cliを解析してみることにしました。
第三章:Amazon Q Developer CLIとの対話
amazon-q-developer-cliを解析してみます。
奇しくも、Amazon Q Developer CLI のコードを解析するのは Amazon Q Developer CLI自身にやってもらいました。
「君は自分自身を解析できるのか?」
AIとの奇妙な共同作業が始まりました。
小宇宙(コスモ)を感じました。
しかし、調査は難航をきわめます。Figの形跡らしきものが見つかりません。themeサブコマンドまでの道のりは遠そうです。
第四章:autocomplete リポジトリの発見
それは険しい道のりでした。いばらの道でした。しかし、猪木さんがおっしゃったように笑って歩きました。
Amazon Q Developer CLIが頑張ってくれました。
amazon-q-developer-cli/crates/chat-cli/src/cli/feed.json の中に、amazon-q-developer-cli-autocompleteリポジトリへの参照が大量に見つかりました。
ここまでくれば、あとは楽勝です。ついに発見しましたよ!amazon-q-developer-cli-autocompleteの中に。
build.py の718行目に隠された真実:
(↑↑↑ Qiitaさんの最近のアップデートで入った機能です。GitHubのURLを書いておくといい感じに表示してくれます!!!)
Figのテーマを集めたリポジトリからコピーしていることを発見しました。
世界的なソフトウェアの心臓部(否、上っ面?)に、闘魂を注入する道筋が見えてきました。
第五章:闘魂の実装
「闘魂とは己に打ち克つこと、そして闘いを通じて己の魂を磨いていくこと」との猪木さんの教えをAmazon Q CLIに伝え、ストロングスタイルの黒をベースに、燃える闘魂を表現したテーマ(toukon.json)を作ってもらいまいました。
{
"$schema": "../schema.json",
"author": {
"name": "Awesome YAMAUCHI",
"twitter": "@torifukukaiou",
"github": "TORIFUKUKaiou"
},
"version": "1.0",
"theme": {
"textColor": "#FFD700",
"backgroundColor": "#000000",
"matchBackgroundColor": "#CC0000",
"selection": {
"textColor": "#FFFFFF",
"backgroundColor": "#CC0000",
"matchBackgroundColor": "#FFD700"
},
"description": {
"textColor": "#CCCCCC",
"borderColor": "#CC0000",
"backgroundColor": "#1A1A1A"
}
}
}
一応動作確認のため、"/Applications/Amazon Q.app/Contents/Resources/themes/toukon.json"をおきました。ターミナルを使って書き込む際には、macOSの設定でアプリを書き換える許可が必要です。macOSのバージョンによってたまに設定の位置がかわるのでバージョンを披瀝しておきますと、15.6です。スクリーンショットを貼っておきます。
まあまあ、危険で過激なことをしている気がしますが、 危ぶめば道はなし です。 踏み出せばその一足が道となり、その一足が道となり ます。迷わず行きました! 行けばわかりましたよッ! 猪木さん!!!
cat > "/Applications/Amazon Q.app/Contents/Resources/themes/toukon.json" << 'EOF'
{
"$schema": "../schema.json",
"author": {
"name": "Awesome YAMAUCHI",
"twitter": "@torifukukaiou",
"github": "TORIFUKUKaiou"
},
"version": "1.0",
"theme": {
"textColor": "#FFD700",
"backgroundColor": "#000000",
"matchBackgroundColor": "#CC0000",
"selection": {
"textColor": "#FFFFFF",
"backgroundColor": "#CC0000",
"matchBackgroundColor": "#FFD700"
},
"description": {
"textColor": "#CCCCCC",
"borderColor": "#CC0000",
"backgroundColor": "#1A1A1A"
}
}
}
EOF
ついに q theme toukon が効きます。私のローカルマシンのAmazon Q CLI - Command line assistance featuresに闘魂を注入しました。世界に一台だけです。唯一です。オンリーワンです。
それで本家にプルリクを送りました。
エピローグ:世界への闘魂注入
プルリクエスト #37 を送りました。
マージされれば、世界中の開発者が 闘魂 を体験できます。取り込まれれば、どこかのリリースタイミングでビルドフローに乗ると思いますので、私のように 危険かつ過激 なことをしなくても、みなさまの手もとでもq theme toukonとすれば、 闘魂注入 が可能となります。放置されたテーマのプルリクが順番待ちをしているので、マージされるのは難しいだろうとは思います。
Amazon Q Developer CLI というツールを使って、Amazon Q Developer CLI を解析し、そして Amazon Q Developer CLI に 闘魂を注入 するまでの物語でした。
技術的な発見のまとめ
この冒険を通じて発見した技術的なポイントをまとめておきます:
- Fig の遺産: Command line assistance features は Fig プロジェクトの技術を継承している
- テーマシステム: ビルド時に withfig/themes リポジトリから自動的にテーマをクローンする仕組み
- テーマファイル構造: JSON形式でスキーマ、作者情報、カラー定義を含む
- 貢献方法: 新しいテーマは withfig/themes リポジトリへのプルリクエストで追加可能 !?
闘魂とは己に打ち克つこと。この技術探求もまた、未知への挑戦という己との闘いでした。
この記事が、Amazon Q Developer CLI を使う開発者の皆さんの参考になれば幸いです。そして、いつか世界中の開発者が q theme toukon で闘魂を体験できる日が来ることを願っています。
