Launcherスクリプト暫定仕様書(拡張版)
1. 概要
Launcherスクリプトは、.ini 風の独自DSLであり、以下を1つのスクリプト内で扱える。
メニュー/ボタン定義
右側ボタン・ツールバーボタン定義
ダイアログGUI定義
設定値の読み書き
パス操作
環境変数や共通変数の初期化
外部プログラム起動
セクション間ジャンプ
Webやローカルヘルプへのリンク
コンテキストメニュー生成
この言語は一般的な関数呼び出し型ではなく、グローバル変数 + セクション + goto 型実行 を基本としている。
2. 起動シーケンス
Launcher 起動時には、まず Boot.ini の [Boot] セクションが実行される。
ここでは、共通変数の初期化、検索パス追加、OS依存パラメータの設定準備、タイトル設定、古いスクリプトの削除などが行われる。
例として、[Boot] では次のような処理が行われている。
古い
.iniスクリプトの削除ウィンドウタイトル設定
デバッグ/確認モードの初期設定
tklib_path,tkdb_path,TkPlotDirなどの共通パス設定PATH,PYTHONPATH,PERL5LIBなどの環境変数拡張python3_path,python_path,start,web_root,sphinx_url_baseなどの共通変数設定 fileciteturn3file15
さらに OS ごとのセクションがあり、Windows / Darwin / Linux / GNOME ごとに以下が上書き・追加される。
batch_ext,exe_ext,dll_exttkapp_path,tkapp2_pathstart_cmd,start_cmd_C,start_cmd_Kvesta_path一部外部アプリの探索や
PATH追加
特に Windows では、start cmd /C / start cmd /K 系の起動変数が定義され、Linux 系では xterm -e や shell 実行に置き換えられている。 fileciteturn3file17turn3file19
3. 実行モデル
3.1 セクション
スクリプトはセクションの集合からなる。
例:
[Button5.Diode]
Caption=pvfit
...
End
セクションは
[SectionName]で始まるEndが見つかるまで順次実行される
3.2 call の意味
call [pvfit_execute]
callはサブルーチン呼び出しではない実体は goto
戻り値はない
ローカル変数もない
コールスタックもない
したがって、Launcher全体は グローバル変数だけで動く手続き型DSL とみなせる。
3.3 onload / select 系セクション
通常の [Section] に加え、次のようなイベント的セクションがある。
[Boot]: 起動時[MenuName].select: 左リストボックスでそのメニューを選択したとき[TButton].onload: ツールバーボタン読み込み時[RButton].onload: 右ボタン読み込み時
例として、[VASP].select や [textbook].select では、選択時に section_root_dir を設定し、ツールチップやコンテキストメニューを追加している。 fileciteturn3file9turn3file3
4. 変数
4.1 特殊変数
1文字の特殊変数がある。
$o: 直前の取得系コマンドの出力値
例:get_open_file_nameの選択ファイルパス$i:Launcher.iniのパス
このほか、実行環境由来の特殊変数がある可能性が高い。
4.2 通常変数
set 系コマンドや環境変数で定義した変数は、次の形式で参照する。
$(varname)
例:
set outprefix=test
$(start) "$(editor_path)" "$(outprefix).txt"
4.3 スコープ
すべての変数は Launcher全体でグローバル
セクションをまたいで値を保持する
4.4 ダイアログ変数
add_dialog で作成したウィジェットの値は、指定した変数名に入る。
必要に応じて set_dialog_var でダイアログ側へ値を戻すこともできる。
例として VASP 関連では、要約ファイルを read_ini で読み、その結果を set_dialog_var でダイアログへ反映している。 fileciteturn3file9
5. コメント付き値と remove_comment
変数値には、人間向けの #コメント を含められる。
例:
"nelder-mead # Downhill simplex"
"lecture_VOICEVOX_jp #日本語対談で講義の説明"
実行時にコメント部分を除いて値だけを使いたい場合は、remove_comment を用いる。
remove_comment method_pvfit
remove_comment prompt_ini
この方式により、
GUI上では説明付き選択肢を見せる
実引数では純粋な値だけを渡す
ことができる。
この使い方は prompt_ini や VASP 関連パラメータでも確認できる。 fileciteturn3file12turn3file9
6. 文字列とクオート
ファイルパスには空白が含まれることがあるため、外部プログラムへ渡すパスは基本的に " でクオートする。
例:
"$(input_path)"
"$(script)"
"$(output_path)"
推奨方針:
外部コマンドへ渡すパスや文字列は基本的にクオートする
特に Windows パスではほぼ必須
7. パス操作
7.1 join_path
join_path は、パス構成要素を OS 依存セパレータで連結する。
例:
join_path script "$(tkprog_X_path)" electrical pvfit.py
概念的には os.path.join(...) 相当である。
7.2 use_os_path_sep
変数内のパス区切りを OS 依存形式へ変換する用途に使われる。
例として Boot では perllib_path を PERL5LIB へ追加する前に use_os_path_sep ppath を使っている。 fileciteturn3file15
7.3 関連コマンド
get_directoryget_filebodyget_filenameget_driveget_last_wordget_cur_dirchdir
8. 外部コマンド実行
Launcherは外部ツール実行を主要用途とする。
8.1 start / start_cmd 系
$(start) "$(excel_path)"
$(start_cmd_C) "$(python3_path)" "$(script)" ...
$(start_cmd_K) vaspkit
$(start): 単純な start$(start_cmd_C): 実行して終了$(start_cmd_K): 実行後も端末を残す
Boot で OS ごとに実体が設定される。Windows では cmd /C, cmd /K に、Linux では xterm -e や shell 実行に対応する。 fileciteturn3file17turn3file19
8.2 shell / editor / filer 呼び出し
右ボタンの定義から、Launcher には「標準シェル・ファイラ・エディタ」を呼ぶ共通操作があることが分かる。
RButton1: shellRButton2: filerRButton3: editor
これらは section_root_dir やカレントディレクトリに対して起動される。 fileciteturn3file13
8.3 URL 起動
$(start) https://... のように Web URL も直接開ける。
VASP やヘルプ関連で多数使われている。 fileciteturn3file7turn3file16
9. GUIダイアログ
9.1 基本の流れ
ダイアログは概ね次の流れで構築する。
new_dialog
add_dialog ...
add_dialog ...
custom_dialog "title" close
9.2 add_dialog の主要サブタイプ
確認できたサブタイプ:
choose_fileentrycomboboxspinboxbuttonframemessagelabelcheckboxtabreset_tabpack_frame
textbook.ini や VASP.ini では、かなり大規模なタブ付きダイアログが構築されている。 fileciteturn3file3turn3file4turn3file11
9.3 ウィジェット値の受け取り
ダイアログ部品定義の 2行目の変数名 が、そのウィジェットの値を受け取る変数になる。
例:
add_dialog entry\
outprefix\
"label_head=outfile prefix:"\
width=80\
"def_val=$(outprefix)"
この場合、入力値は outprefix に入る。
9.4 タブ
textbook.ini から、add_dialog tab ... と add_dialog reset_tab dummy により、タブ付きUIを構築できることがわかる。
たとえば「main」「AI configuration」「OpenAI API Key」などを切り替える構造が作られている。 fileciteturn3file12turn3file5
9.5 複数アクション付きウィジェット
choose_file や combobox には追加ボタンや追加コマンドを持たせられる。
例:
button1_text=media infobutton1_command=call [media_inf_execute]
また VASP のファイル選択UIでは、edit / start / XML viewer / file list / VESTA など複数のボタン操作を同一ウィジェットに持たせている。 fileciteturn3file3turn3file14
9.6 行継続
長い add_dialog は行末の \ で継続できる。
10. メニューとボタン
10.1 左リストボックスメニュー
例:
[VASP].select
[textbook].select
これらはメニュー選択時の初期化を担う。
section_root_dir の設定、ツールチップ追加、コンテキストメニュー作成などが行われる。 fileciteturn3file9turn3file3
10.2 サブメニューボタン
例:
[Button1.textbook]
Caption=Convert/Split audio
...
End
意味:
Button1: ボタン識別子textbook: 対象メニューCaption=...: GUI上の表示名
10.3 ツールバーボタン
RButton.ini には上部のツールバーボタン定義が含まれている。
[TButton].onload: ツールチップ設定[TButton1]: Setup details[TButton2]: Edit ini file[TButton3]: log[TButton4]: Restart[TButton5]: Boot ダイアログ
Boot ダイアログからは Launcher の再起動や他の Launcher 一覧起動などが行える。 fileciteturn3file2turn3file10
10.4 右ボタン
[RButton].onload で右側ボタンのツールチップが定義され、[RButton1] 〜 で実処理が割り当てられる。
cmd.exe
Explorer
Editor
Edit script
Edit system files
help
などの枠組みがここで定義されている。 fileciteturn3file13turn3file16
11. コンテキストメニューとツールチップ
11.1 add_tooltip
add_tooltip 1 "Convert movie file to audio file" #dcfbfe #0000ff
左ボタン、右ボタン、ツールバーボタンなどに説明を付ける用途で使われる。
色も指定可能。
textbook や VASP の .select、TButton.onload、RButton.onload で広く使われている。 fileciteturn3file3turn3file9turn3file13
12. 設定ファイル読み書き
12.1 read_ini / write_ini
read_ini $i "textbook" "work_dir" last_dir "."
write_ini $i "textbook" "work_dir" "$(dir_name)"
用途:
前回開いたフォルダの記憶
ダイアログ初期値の復元
結果ファイルから値の再読み込み
12.2 外部設定ファイルの読み込み
textbook.ini では .env やアカウント情報ファイルを読み込んで API キーを取り込んでいる。
read_iniload_dotenvset_if_not_blank
などを組み合わせ、OpenAI / Google API キー設定へつなげている。 fileciteturn3file12
13. 環境・システム関連コマンド
Boot から、Launcher が単なる GUI スクリプトではなく「環境初期化も担う」ことが分かる。
確認できたもの:
add_path PATH ...add_path PYTHONPATH ...add_path PERL5LIB ...search_latest_file ...use_os_path_sep ...check_exist ...exit_if_not_exist ...del ...load_menu
search_latest_file は Windows で csc.exe を探す用途に使われている。
load_menu はメニュー再読み込みに使われている。 fileciteturn3file17turn3file10
14. 制御・確認・表示系コマンド
確認できたもの:
debug on / offconfirm on / offshow_window NoTopMostask_yesno_dialog ...echo ...Bye
右ボタン側では debug / confirm / topmost の説明ダイアログも定義されている。
VASP では削除処理の前に ask_yesno_dialog を使っている。 fileciteturn3file16turn3file9
15. 大規模スクリプトから見える設計パターン
15.1 VASP.ini に見られるパターン
.selectでツールチップやコンテキストメニューを付与大きなタブ付きダイアログ
remove_commentを使った選択値の正規化実行前に
work_dirをwrite_iniPython / Perl / 外部GUI(VESTA, VASPKIT など) を連携起動
set_dialog_varで後からダイアログへ値を戻す
VASP 用途では、Launcher が「複雑なワークフローをまとめる前面 GUI」として使われていることがはっきり分かる。 fileciteturn3file9turn3file14turn3file11
15.2 textbook.ini に見られるパターン
音声変換、文字起こし、翻訳、AI API 利用、TTS などを統合
tabによる多段設定UI.env/ APIキーの読込説明付き combobox 値 +
remove_commentbutton1_commandなどの補助アクション付き choose_fileOpenAI/Gemini など複数バックエンドの切替
ここでは Launcher が、AI・教材作成系の統合フロントエンドとして使われている。 fileciteturn3file3turn3file4turn3file12
16. 代表的な命令一覧(今回確認できたもの)
制御
call [Section]EndBye
変数
setset_if_blankset_if_not_blankremove_commentset_dialog_var
パス・ファイル
join_pathget_directoryget_filebodyget_filenameget_driveget_last_wordget_cur_dirget_open_file_nameget_save_file_namechdircopydel
ini / 環境
read_iniwrite_iniload_dotenvadd_pathuse_os_path_sepsearch_latest_file
GUI
set_titlenew_dialogadd_dialog ...custom_dialog ...add_tooltipcreate_menuadd_context_menu
確認・表示
echodebug on/offconfirm on/offask_yesno_dialogshow_window
起動
start$(start)$(start_cmd)$(start_cmd_C)$(start_cmd_K)
17. 実装思想の要約
Launcherスクリプトは、単純なメニュー定義ファイルではない。
実際には次の役割を同時に担う。
起動時環境設定
OS依存差異の吸収
GUIフォーム構築
永続設定管理
ワークフローの状態受け渡し
外部プログラム実行
Launcher自身のメタ制御
この意味で、Launcherスクリプトは
「グローバル変数を共有する goto 型DSLで、GUI定義・環境初期化・外部ツール実行を統合したランチャー言語」
と表現するのが最も近い。
18. 現時点で未確定の点
今回の資料だけでは、以下は未確定である。
一般的な
if / else / for / whileの有無すべての特殊変数一覧
callの厳密な実装詳細custom_dialogの全オプションadd_dialogサブタイプごとの完全パラメータ仕様:で始まる命令(例:debug on)と通常命令の厳密な違い
19. 参考例ファイル
今回の仕様整理では、少なくとも以下のファイルを参考にした。
3-000-Boot.ini: 起動時処理と OS 別共通変数設定 fileciteturn3file15turn3file173-001-RButton.ini: 右ボタン・ツールバー・Launcher 自体の制御UI fileciteturn3file2turn3file13turn3file166-041-VASP.ini: 大規模な実務用ワークフロー統合例 fileciteturn3file9turn3file14turn3file119-200-textbook.ini: タブ付きGUI、APIキー管理、AI/TTS 連携例 fileciteturn3file3turn3file4turn3file12