Godotは楔形文字でもコードを書ける|GDScriptで日本語・古代文字を識別子に使える理由
本記事にはアフィリエイト広告(Amazon・楽天市場等)のリンクが含まれています。
GDScriptで日本語・古代文字を識別子に使える理由
Godotのスクリプト言語GDScriptでは、古代メソポタミアで使われた楔形文字を変数名や関数名として書けます。これは見た目だけの遊びではなく、Unicodeの文字を識別子として解析するGDScriptの仕様によるものです。
ただし、Unicodeの文字がすべて使えるわけではありません。ここでは実際の書き方、なぜ動くのか、日本語・ヒエログリフとの関係、実務で避けた方がよい理由を整理します。
出典:Godot公式ドキュメント(GDScript identifiers)・Unicode Standard Annex #31・PC Gamer・Steam『Dig Dig Boom』(2026年8月5日確認)
話題のきっかけは、インディー開発者SteinMakesGamesが2026年7月末に示したGDScriptの楔形文字コードです。Godotに古代文字専用の機能が加わったわけではありません。以前からあるUnicode識別子への対応によって、条件を満たす楔形文字が通常の変数名・関数名と同じように扱われます。
実例楔形文字を変数名・関数名として書けます
識別子とは、変数、関数、クラス、定数などに付ける名前です。通常は英数字とアンダースコアで書きますが、GDScriptでは次のように楔形文字を名前として置けます。
var 𒀭 = 100
func 𒀭𒈾():
print(𒀭)
ここで使われている楔形文字は、画面に表示する文字列ではありません。varの後ろにある変数名、funcの後ろにある関数名としてトークナイザーに認識されます。呼び出す側も同じコードポイントで書けば、通常の識別子と同じように参照できます。
仕組み理由はUnicode識別子の仕様「UAX #31」
Unicode Standard Annex #31(UAX #31)は、世界中の文字をプログラミング言語などの識別子に使うための指針です。文字ごとに「名前の先頭に置けるか」「2文字目以降に置けるか」といった性質を定義します。
この文脈でよく使われるのがXID_StartとXID_Continueです。前者は識別子の開始に使える文字、後者はその後ろに続けられる文字を表すUnicodeプロパティです。ただし、各言語がUAX #31をそのまま無加工で採用するとは限りません。
Godot公式ドキュメントも、GDScriptの識別子には英字・数字・アンダースコアに加え、UAX #31に含まれるUnicode文字の大半を利用できると説明しています。そのため日本語のかな・漢字、ギリシャ文字、楔形文字などが候補になります。
| 区分 | GDScriptでの扱い | 例 |
|---|---|---|
| 通常の識別子 | 利用可能 | player_health |
| 日本語の文字 | 利用可能な範囲に含まれる | プレイヤー体力 |
| 楔形文字など | 文字ごとの判定を満たせば利用可能 | 𒀭 |
| 絵文字・ASCII類似文字 | 利用不可 | 絵文字(U+1F600など)、見た目が英字に似た文字 |
日本語・古代文字日本語は使える。ヒエログリフは文字単位で確認を
日本語の識別子も、GDScriptでは実際に書けます。
var プレイヤー体力 = 100
var 最大体力 = 100
func ダメージを受ける(ダメージ量):
プレイヤー体力 -= ダメージ量
ただし、var、func、ifなどの予約語まで日本語になるわけではありません。GodotのAPI名やNode名、外部ライブラリの名称も英語が中心です。個人の学習用では意味が取りやすくなる場合がある一方、既存の英語APIと混ざることも考慮する必要があります。
ヒエログリフ、ルーン文字、線文字Bなども、Unicodeに収録されているだけで無条件に通るわけではありません。Godotの公式説明は「大半」としており、使いたい文字が識別子の条件に合うかはエディター上で個別に確かめるのが確実です。
制限見た目が似た文字と絵文字は避ける設計です
Unicode識別子には、見間違いによる事故のリスクがあります。ラテン文字のaやoに似たキリル文字・ギリシャ文字を混ぜると、人間には同じ名前に見えても、プログラム内部では別の識別子になることがあります。
Godotはこの問題を抑えるため、ASCII文字と紛らわしいUnicode文字、および絵文字を識別子として許可していません。とはいえ、すべての混同を自動で防げるわけではありません。異なる文字体系を混在させるほど、コードレビューや差分確認は難しくなります。
実務判断技術デモには面白いが、製品コードは英数字が無難
楔形文字を識別子に使うことは、Unicode対応の広さを示す面白い技術デモです。古代文明を題材にしたゲームジャムで、演出の一部として使うことにも遊び心があります。
一方、長期運用するゲームや複数人で作るプロジェクトでは、英数字とアンダースコアを基本にした命名規則を使う方が現実的です。日本語の識別子も同様に、チームの規約・検索性・外部ツールとの相性を確認してから採用を決めるべきでしょう。
発端投稿者は『Dig Dig Boom』を開発中
楔形文字コードを紹介したSteinMakesGamesは、戦略性を備えた採掘ローグライト『Dig Dig Boom』をGodotで開発しています。Steamでは2027年のリリース予定と案内されています。
Steamストアページでは、日本語を含む16言語への対応が案内されています。ただし、ゲーム本編が楔形文字に対応するという発表は確認できません。今回の投稿は同作の機能発表ではなく、GDScriptとUnicode識別子の柔軟性を示した技術的な話題として捉えるのが適切です。
Q&Aよくある質問
まとめ楔形文字も「Unicode識別子」の一例です
GodotのGDScriptで楔形文字を変数名や関数名に使えるのは、GDScriptがUAX #31に含まれるUnicode文字の大半を識別子に許可しているためです。日本語も同じ考え方で使えます。
ただし、すべてのUnicode文字が使えるわけではありません。Godotは絵文字やASCIIと紛らわしい文字を制限しており、古代文字も個別に判定を確かめる必要があります。技術デモとしては魅力的ですが、実務では読みやすい命名規則を優先するのが確実です。
