【すたーらーく】

Starlark とは?

最終更新:
💡 Pythonに似た構文で、ビルドなどの設定を表す

Pythonに似た構文で設定を記述する、アプリケーションに組み込むための言語。Bazelではビルド対象やルールの定義に使う。環境への直接アクセスなどを制限するが、Pythonそのものではなく、組み込み先が提供する機能にも動作が依存する。

📌 このページのポイント
Starlark:Bazelでの設定の例 BUILD / .bzl 対象・ルール Bazelで 設定を評価 提供APIも使う 対象の関係 Pythonに似た構文。機能は同じではない 環境アクセスを制限 追加機能はアプリ次第 値の凍結で共有を保護 凍結前の変更は可能 同じ結果には、入力・組み込み先の条件も揃える
BUILDは対象を登録し、.bzlはルールなどを定義する。言語の制約と組み込み先の機能を分けて確認する。
ひよこ ひよこ
Pythonでビルド設定を書くのと同じ?
ペンギン先生 ペンギン先生
構文はPythonに似ているけれど、別の言語だよ。アプリに組み込んで設定を表すために使う。Pythonのライブラリや機能が、そのまま全部使えるわけではないんだ。
ひよこ ひよこ
Bazelではどのファイルに書く?
ペンギン先生 ペンギン先生
BUILDファイルでビルド対象を登録し、.bzlファイルで関数やルール、マクロなどを定義するよ。BUILDには関数を定義できないなど、ファイルによる制約もあるんだ。
ひよこ ひよこ
副作用がなくて、値も変更できない?
ペンギン先生 ペンギン先生
現在の実行で作ったリストや辞書は変更できるよ。評価後に値を凍結して、別の実行から変更できないようにする。設定の評価が組み込み先のアプリへ作用することもあるので、すべての副作用がないとは言わないんだ。
ひよこ ひよこ
ファイルやネットワークにもアクセスできない?
ペンギン先生 ペンギン先生
言語は標準では環境との直接のやり取りを提供しないよ。ただしアプリが追加する関数は別に確認する必要がある。同じ設定から同じ結果を得るには、渡す入力や組み込み先の動作も揃えるんだ。
ひよこ ひよこ
型がないから、間違いも検出されない?
ペンギン先生 ペンギン先生
数値や文字列、リストなどの型があり、演算や関数の使い方が合わないとエラーになるよ。Pythonとの違いや、型注釈などの機能は使う実装・バージョンの仕様で確かめるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Starlark」って出てきたら「Pythonに似た構文で設定を書く組み込み言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Starlark」 = 設定用の言語の名前
💬 以前はSkylarkと呼ばれていたよ。現在はStarlarkという名前で、Bazelなどのアプリに組み込む設定言語として使われているんだ。

参考資料

← 用語集にもどる