はじめに
ブラウザ上で、日本語の自然言語っぽい記述をJavaScriptに変換して実行するランタイムを作りました。
正確には「JavaScriptが日本語になった」というより、
日本語風のDSLをJavaScriptに変換して実行する仕組みです。
できること
例えば以下のように書くと動きます。
<script type="text/nl">
クリックしたら背景を赤くする
</script>
仕組み
内部では以下の流れになっています。
-
<script type="text/nl">を取得 - 日本語テキストを簡易パーサーで解析
- JavaScriptコードに変換
-
new Function()で実行
実装イメージ
document.querySelectorAll('script[type="text/nl"]').forEach(el => {
const nl = el.textContent;
const js = compile(nl);
new Function(js)();
});
対応している表現(現状)
- クリックしたら〜する
- ○秒ごとに〜する
- 背景を色にする
かなり限定的なルールベース変換です。
なぜ作ったか
「コードを書く」というより
「意図をそのまま書く」UIの実験として作りました。
LLM時代の前段階として、
自然言語とコードの境界を雑に触ってみた感じです。
限界
- 日本語の自由度は低い
- 曖昧な表現には弱い
- 本質的にはルールベース変換
つまり「言語」ではなく「変換器」です。
リポジトリ
こちらから実際のソースコードを見ることができます。
デモはGitHub Pagesでそのまま動くようにしています。