Kagari
キーワードを入力してドキュメントを検索します。

ビルドと実行

kagari CLI

kagari は Kagari のツールチェインです。プロジェクトの作成・検査・ビルド・整形、.kagari ファイルの逆アセンブル、言語サーバーの実行を行います。

text
kagari <COMMAND>
Commands:
init Create a new project in PATH
check Check the project and print its diagnostics
build Build the project's bytecode and asset archives
fmt Format the project's source files, or the given files
disasm Disassemble a `.kagari` bytecode file
lsp Run the language server over stdio
help Print this message or the help of the given subcommand(s)

kagari --version はツールチェインのバージョンを表示します。kagari.toml の [toolchain] kagari はこのバージョンに合致する必要があります。kagari help <COMMAND> または kagari <COMMAND> --help で各コマンドのヘルプを表示します。

インストール

Kagari リポジトリからツールをビルドします。

Terminal window
cargo install --path tooling/kagari-cli

これで kagari 実行ファイルが Cargo の bin ディレクトリにインストールされます。リポジトリ内では、インストールせずに cargo run -p kagari-cli -- <COMMAND> で実行することもできます。

プロジェクトの探索

check、build、(ファイル指定なしの)fmt はプロジェクトに対して動作します。--manifest-path <PATH> で指定された kagari.toml を使い、指定がなければカレントディレクトリとその親ディレクトリで最初に見つかった kagari.toml を使います。マニフェストについてはプロジェクトを参照してください。

終了ステータス

すべてのコマンドが同じ終了ステータスを使います。

ステータス意味
0成功。
1コマンドは実行され、問題が見つかった。エラーの診断、非対応のアセット形式、整形されていないファイル、不正な .kagari ファイルなど。
2コマンドを実行できなかった。使い方の誤り、IO エラー、kagari.toml が見つからない、マニフェストが不正、ツールチェインのバージョン不一致など。メッセージは kagari: <message> の形で stderr に出力されます。

コンパイラオプション

コンパイラにはコマンドラインフラグがありません。オプションは kagari.toml のキーなので、check、build、言語サーバーの結果は常に一致します。

キー既定値効果
[build] state-cap200 000解析が探索する物語の状態数の上限(超えると W5006)。
[build] recursion-depth2048実行時の呼び出しの入れ子の上限。
[build] keyframe-checkfalseキーフレーム配置の検査(W5011)を行う。
[assets] system-fontstruesystem_font("…") がインストール済みフォントを指せるようにする(オフのときは E1031)。

詳しくはコンパイラオプションを参照してください。

kagari init

text
kagari init [PATH] [--name <NAME>]

PATH(既定はカレントディレクトリ)に新しいプロジェクトを作ります。ディレクトリがなければ作成します。

オプション意味
PATHプロジェクトのディレクトリ。既定は .。
--name <NAME>プロジェクト名。既定はディレクトリ名。

kagari init は新しいファイルしか作りません。テンプレートのファイルが 1 つでも PATH に既に存在すれば、何も変更せずにステータス 2 で止まります。書き出す構成はプロジェクトの構成のとおりで、[toolchain] kagari には実行中のツールチェインの major.minor が入ります。

テンプレートの src/main.kis はゲームの既定フォント(FONT)を宣言します。kagari init はシステムフォントのディレクトリからインストール済みのフォントを選び、system_font("…") を書き込みます。日本語のゴシック体(游ゴシック、メイリオ、MS ゴシック、ヒラギノ角ゴシック、Noto Sans CJK/JP)を優先し、次に一般的なサンセリフ体(Segoe UI、Arial、Helvetica、Noto Sans、DejaVu Sans、Liberation Sans)を選び、どれもなければ最初に見つかったフォントファイルを使います。フォントが 1 つもインストールされていない場合は asset("fonts/default.ttf") を書き込み、assets/fonts/default.ttf にフォントを置くか FONT を変更するよう警告します。

Terminal window
kagari init my-game
kagari init --name "My Game"

kagari check

text
kagari check [--manifest-path <PATH>] [--resolutions]

何も書き出さずにプロジェクトをコンパイルし、すべての診断を stdout に出力します。

オプション意味
--manifest-path <PATH>プロジェクトの kagari.toml。
--resolutionsプログラム中の各名前が何に解決されるかも出力します。インポートのデバッグに便利です。

エラーの診断が 1 つでもあればステータス 1 で終了します。警告だけならステータス 0 です。診断コードの一覧は診断にあります。

kagari build

text
kagari build [--manifest-path <PATH>] [--target <TARGET>]...

プロジェクトをコンパイルし、ターゲットごとに <out-dir>/<target>/game.kagari とアセットアーカイブを書き出します。ターゲットと出力ディレクトリとアセットとアーカイブを参照してください。

オプション意味
--manifest-path <PATH>プロジェクトの kagari.toml。
--target <TARGET>このターゲットだけをビルドします。複数回指定できます。それぞれ build.targets に含まれている必要があり、含まれていなければステータス 2 です。既定は build.targets のすべてのターゲット。

処理の順序:

  1. コンパイルします。診断は stderr に出力されます。エラーの診断があればステータス 1 で止まります。
  2. 参照されるすべてのアセットを build.runtime-compatibility に照らして検査します(ランタイムプロファイル)。問題があればステータス 1 で止まります。この時点ではまだ何も書き出しも削除もしていません。
  3. ターゲットごとに、出力ディレクトリを作り、そこにある古い game.kagari と .kiarchive ファイルを削除し、game.kagari、続いてアーカイブを書き出します。書き出したファイルは 1 つずつ表示されます。
text
wrote target/v0/game.kagari
wrote target/v0/bgimage.kiarchive (3 files)
Terminal window
kagari build
kagari build --manifest-path example/test_game1/kagari.toml
kagari build --target v0

kagari fmt

text
kagari fmt [--check] [--manifest-path <PATH>] [FILES]...

ソースファイルをその場で整形します。FILES がなければ、プロジェクトのルートファイルのディレクトリ(通常は src/)以下にあるすべての .kis と .kix ファイルを整形します。名前が . で始まるディレクトリは飛ばします。FILES を指定すると、そのファイルだけを整形し、プロジェクトは不要です。

オプション意味
FILESプロジェクトのファイルの代わりに整形するファイル。.kis か .kix で終わる必要があります(そうでなければステータス 2)。
--check書き込まず、変更されるファイルごとに would reformat <file> を表示します。
--manifest-path <PATH>プロジェクトの kagari.toml(FILES を指定したときは無視されます)。

変更したファイルごとに formatted <file> を表示します。構文エラーのあるファイルは変更せず、<file>: cannot format: N syntax error(s) と、最初のエラーの位置とメッセージを表示します。--check で整形が必要なファイルが見つかったとき、または整形できないファイルがあったときはステータス 1 で終了します。整形のスタイルはエディタ対応で説明しています。

Terminal window
kagari fmt
kagari fmt --check
kagari fmt src/scenario/mod.kix

kagari disasm

text
kagari disasm <FILE> [--all]

.kagari ファイルをデコード・検証し、その関数をテキストで表示します。コンパイラが何を生成したかを見たり、受け取ったファイルを調べたりするのに使います。

オプション意味
FILE.kagari ファイル。
--allstd の関数も表示します。既定ではゲーム自身の関数(パスが crate:: で始まるもの)だけを表示します。

ファイルが正しい .kagari ファイルでなければ、理由を stderr に出力してステータス 1 になります。テキスト形式は安定していません。

Terminal window
kagari disasm target/v0/game.kagari

kagari lsp

text
kagari lsp

言語サーバーを実行し、stdin と stdout で Language Server Protocol を話します。エディタが起動するもので、手で実行するものではありません。エディタ対応を参照してください。

最終更新日 2026年10月29日