5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini CLI でプロンプトの入力が面倒くさいときに使えるものぐさテクニック!?

Posted at

はじめに

もともとはPython+Pyxelで作った自作ゲーム「Warship Shooting R」を、ちょっと前に知ったゲームエンジン「microStudio」向けに移植しようと思いついた。

ちなみにmicroStudioでは、独自の言語「microScript」で動く。(Pythonも使えるが)

PythonコードをmicroScriptに変換しようとしたが、さすがに手動でやるのは非常に手間がかかる。
そこで今話題のGemini CLIを使って変換しようとしたのだ。

本記事ではGEMINI.mdの記述の大切さと、意外とできるテクニックを確認したので紹介したい。

最初に試したGemini CLI

別のGemini CLIの試行で、Gemini自体はmicroScriptの言語仕様を理解しているようだったので、基本的な変換は問題ないだろうと踏んだ。

最初は単体でターミナルを開き、Gemini CLIに大雑把に頼んでみた。

@hoge.py このPythonファイルをmicroScriptに変換して、 hoge.msに保存して。

変換後のファイルをざっと見たところ、基本的な内容はよかったが、microScriptで重要なところがおかしかった。

self.enable_chara = {
      "img_ss":false, "img_dd":false, "img_asdg":false, "img_cl":false, 
      "img_ca":true, "img_cvl": false,"img_cv":true, "img_bc":false, "img_bb":false
    }

たとえばこういうプロパティがあったとする。これを大雑把なプロンプトで変換してもらうとこうなった。

this.enable_chara = {
      "img_ss":false, "img_dd":false, "img_asdg":false, "img_cl":false, 
      "img_ca":true, "img_cvl": false,"img_cv":true, "img_bc":false, "img_bb":false
    }

ちなみに、microScriptでは{} の構文は使えない。Pythonでいうところの辞書型は、microScriptではObjectとなる。本来はこうなってほしかった。

this.enable_chara = object
  img_ss = false
  img_dd = false
  img_asdg = false
  img_cl = false
  img_ca = true
  img_cvl = false
  img_cv = true
  img_bc = false
  img_bb = false
end

どうやらGemini CLIに、きちんとmicroScriptの言語仕様を教えないといけないようだ。

GEMINI.mdにきちんと指示を書いた

自作ゲームのPythonのソース一式を別フォルダにコピーし、プロジェクトとして.code-workspaceやGEMINI.mdを置いた。

GEMINI.mdは次の内容とした。

# PythonコードからmicroScriptコードに変換するプロジェクト

## ショートカットプロンプト

入力プロンプトを入力したら、実際のプロンプトのほうの内容を実行して。


|入力プロンプト|実際のプロンプト|
|-|-|
|`conv2ms` | このファイルをmicroScriptに変換して、microscriptフォルダに同じ名前で保存して。|


## 基本の変換事項

- Pythonのロジックは可能な限りそのままで、microScriptに変換する。
- microScriptにない機能(import文など)は変換しない。(コメント文で説明するのみ)
- インデントは可能な限りそのまま変換する。ただし見やすさを考慮して必要に応じて修正する。
- 元のPythonファイルは読み取りのみとし、一切変更しないこと。
- 関数内の変数はmicroScript側では`local`を付けて宣言すること。


## 変換に関する補足事項

### microScriptの言語仕様の資料

[microScript programming](https://microstudio.dev/documentation/Programming/)

[API reference](https://microstudio.dev/documentation/API/)

[microScript cheatsheet](https://microstudio.dev/documentation/microScript-cheatsheet/)

[API cheatsheet](https://microstudio.dev/documentation/API-cheatsheet/)


### Pythonの辞書型の変換

Pythonの辞書型はmicroScriptではObjectに相当する。

変換は次のとおりにする。

- `{}` は `object end` に対応する。
- キーの""は不要。
- プロパティ間の","は不要。

例は次の通り。

`` `Python
a = {"a": 1, "b": 2, "c":"test"}
`` `

`` `microScript
a = object 
  a = 1
  b = 2
  c = "test"
end
`` `

### microScript側に対応するライブラリ、モジュールが存在しない場合

- **microScriptの言語仕様の資料** の各資料を参照し、代替可能な機能がある場合はその言語仕様やAPIを使う。
- もし代替可能な機能が存在しない場合、その部分はコメントとする。


### Python側のPyxelのライブラリの変換について

- `Pyxel` はmicroScriptには存在しない。そのため、Pyxelの機能を使っているコードは変換可能な場合を除き、コメントとする。
- その際、手動で変換しやすいよう、その処理で何をやっていたのかを1行程度で説明文のコメントを追加する。


ポイント1:Geminiが理解してない言語仕様はしっかり説明と例を書く

Pythonの辞書型の変換のセクションとして、次のように記述してさらに変換例も付け加えた。

{}object end に対応する。

これでOKだ。

ポイント2:何回も同じプロンプトが続く場合は置き換え例を書くべし

今回の記事ではこれが主題だ。

自作ゲームのPythonファイルを1つ1つ変換していくのに、わざわざ

@hoge.py このPythonファイルをmicroScriptに変換して、 hoge.msに保存して。

長々と書くのは面倒だ。コピペだってうっかりミスでしくじることもあるかもしれない。

一番いいのはすべて一気に変換してもらうことだが、AIに全部まとめてやってもらうと痛い目を見るのは、きっとすでに経験なさっている方々がいらっしゃることだろう。
なので面倒ではあるが、1つ1つ変換→確認を繰り返していくことにした。

そのため入力作業の省力化をしたい。
Linux系だと aliasコマンドで特定のコマンドを置き換える方法がある。Gemini CLIでも同じ方法ができないか?

いわば ショートカットプロンプト

そこで上記GEMINI.mdに次のように書いた。

## ショートカットプロンプト

入力プロンプトを入力したら、実際のプロンプトのほうの内容を実行して。


|入力プロンプト|実際のプロンプト|
|-|-|
|`conv2ms` | このファイルをmicroScriptに変換して、microscriptフォルダに同じ名前で保存して。|
入力プロンプト 実際のプロンプト
conv2ms このファイルをmicroScriptに変換して、microscriptフォルダに同じ名前で保存して。

これで、Gemini CLi上で次のように入力すると、実際のプロンプトとして実行してくれることを期待した。

入力 @hoge.py conv2ms
Geminiの解釈 @hoge.py このファイルをmicroScriptに変換して、microscriptフォルダに同じ名前で保存して。

実際に実行した例がこちら。

image.png

どうやら問題なく実際のプロンプトの解釈を読み替えて処理してくれたようだ。

microScriptの言語仕様も辞書型からObjectに置き換えも問題ない。

終わりに

今回の目的はPythonからmicroScriptへの変換だ。どうやら問題なくできることが確認できたので、引き続き実行してゲームの移植作業を進めることにする。

そしてちょっとした作業をGemini CLIにお願いするにしても、GEMINI.mdを書くことの大切さを再認識した。
ウェブで使う生成AIやAPIで使うAIのシステムプロンプトにあたるのがGEMINI.mdということなのだろう。

実際の仕事の現場でも、部下やプロジェクトのメンバーへの適切な指示をするだろう。
AIを利用する際に、AIにきちんと誤解なく役割を遂行してもらうのに大事な指示書というわけだ。

あと即興で思いついたが、ショートカットプロンプトはうまく動作してよかった。このテクニックは他の目的でGemini CLIを使う際にも応用できそうなので、いろいろ試してみたい。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?