10才からはじめられる(かもしれない)魔法陣プログラミング
2025年3月26日 改訂
思うところがあって
「10才からはじめるプログラミング」本を図書館で借り、パク……リスペクトを受けたタイトル。
去年末はバタバタして中断していた魔法陣プログラム言語の作成を今月から再開する予定で、まずは子供でも理解できるレベルの言語仕様案を作ろうと思いたち記事を作成しました。
はじめに
そもそも、この魔法陣言語が表題通り「10才からはじめて理解できるのか」ですが理解可能か不可能かと聞かれたら、
「理解可能」です。
参考にした言語の一つにScratchがあり、画面上に配置してプログラムを組むという点で似ています。
ただ、かなり趣味に走った仕様であるゆえに他言語とは独自の路線をつっ走っているため、
既にJavascriptでプログラムが組めるような天才肌の少年には逆に敷居が高いかなあという意味で
「かもしれない」と曖昧なタイトルにしています。
で筆者は元々四年ぐらい前に、針時計を配置する「B12」、
そこから派生したネジとナットでプログラムを組む「B012(ボルツ)」、
などネタ系言語を色々開発していた時期がありました。
※B012は作りかけがネットにまだ残っています。
その一環として作ったのが今回の魔法陣言語、その名も「Gr3」と書いてグリムと読みます。
3を横に回転させたアルファベットのmとして読んでください
なんでこんな命名かというと、開発にJavaScriptライブラリであるD3.jsを使っているからで、
あと趣味?
そもそもの発端が、よくファンタジー小説で魔法陣で呪文を錬成して放つとか、実はその構造が実にプログラム的だという設定がでてくるため、だったら魔法陣でプログラミング出来ないかと考えて開発したという、発想からして趣味全開で浪漫全振りの言語です。
ちなみに四年前で一度中断しており、技術的に難しかったというのもありますが、その時期からしばらく小説の投稿に軸足をおいてました。
主に歴史小説や、悪役令嬢物を書いてましたが最近断念、空いた時間で魔法陣言語開発再開となった次第です。
※一部は残ってますので、興味のある方は
大海烏>小説家になろう
用語解説
この魔法陣言語「グリム」ですが、
そもそもグリムという名称もドイツが生んだ著名な童話作家グリム兄弟や魔導書Grimoire(グリモア)から取ってます。
そのためコンソールやソースコードといった、プログラムでよく使用する英語用語も、
個人的に趣味に走っており主にドイツ語であるのを前置きしておきます。
何故ドイツ語だって?
かっこいいからだよ!
さてまず全体の画面から

左側がグリムの本体、
右側がmære(メーレ)で、いわゆるソースコードの表示場所です。
メーレはメルヘンの語源になった言葉で、
「出来事」を意味する中世ドイツ語であり「命令(メイレイ)文」ともかけてます。
なおグリムで使用するのは魔法陣によく用いられるルーン文字
っぽく見える独自カタカナフォント表記というこだわりがあって、ネットに出回っていたnukosuki氏の「妄想ルーンカタカナフォント」を元に自作しました。
(フォント作者に報告済)

mæreの下にあるのがMerseburger(メルぜブルグ)、これが他のプログラムのコンソール画面兼ふっかつの呪文です。
はい、この時点で色々ツッコミどころ満載ですが一個づつ説明します。
命名からですがメルセブルグの呪文という、グリム兄弟と馴染の深い文言があってですね。
色んなプログラム言語では、ここにhello,worldを表示させるのが定番ですが、グリムの場合は
既にドイツ語の文章が書かれてます。
これは童話「白雪姫」に出てくる鏡の女王のセリフで
最近流行ったCreepy Nutsの歌詞にも出てくる
「鏡よ鏡、世界で一番美しいのは?」
のドイツ原語版です。
この画面は他の言語で言うコンソール表示画面でもあり、後述の手順で作成した魔法円の保存場所でもあります。
あ、ちなみにグリムには言語のロードセーブ機能がありません
ヨムボタンでメルゼブルグに暗合が記入され、それをテキスト保存しておいて
メルゼブルグに書き込んで、カクボタンで再現するという
いわゆる初期ドラクエのふっかつのじゅもん方式を採用しています。
なんでそんな面倒な形にしたかって?
浪漫です
そしてメーレの枠の下に表示されるのが、Satz(サッツ)。
ドイツ語で文節やフレーズを意味する言葉で、いわゆるソースコードの一説だと思ってください。
で、メーレ画面内でサッツの下の方で点滅してる緑の棒をクリックするとサッツが増えて
新しい魔法円、ドイツ語で丸を意味する「Kreis(クライス)」が書き込まれます。
最終的にここに豆を意味する各種の「Bohne(ボーネ)」を操作して言語を書き込んでいくのですが
そちらは以下の図を参照に(一部未実装です)

あと、この言語独自の仕様で魔法円を自由に配置できる強みがありますが、
結果として可読性(読みやすさ)が損なわれる事の対策は以下の記事を参照。
最終系と今後の予定
現状ふわっとした形のものしか出来上がってませんが、最終目標としてこんな感じに出来たらという目標はあります。
それを実現するため、将来的には単純な魔法円の組み合わせだけでなく
柔軟な表記も考えており

を基本配置とすると

みたいな表記配置も出来るようにする予定。
あと暫定で作ってる星座記号との命令対応表がこれ

最後に
一応、最低限のプログラムが組めるバージョンを1.0と想定していて現在まだ0.9です。
まずはメルゼブルグへの文字表示がSWでできるように頑張りたいと思っています。
なお開発過程をブログで公開中!
Discussion