🧠

Ook!言語:Brainfuckベースの難解言語をDockerで実行

2025/02/08に公開

🐵 はじめに

みなさんは「Ook!」というプログラミング言語をご存知でしょうか?
これは Brainfuck をベースにした難解プログラミング言語(esolang) で、「Ook.」「Ook?」「Ook!」 の3つの単語だけを組み合わせてコードを書きます。

一見するとオランウータンの鳴き声にしか見えませんが、実はきちんと動作し、「Hello World!」 を出力することも可能です。

今回、Docker環境で Ook! を実行できる仕組みを作成しました。
👉 ソースコードはこちら → ook-lang-playground (GitHub)

以下では、Ook! 言語の概要と実行方法を紹介します。

🛠️ 環境構築

1️⃣ Docker を使って環境を準備

まずは docker-compose を使って実行環境を構築します。

docker-compose build

2️⃣ コンテナを起動

docker-compose up -d

これで、Ook! のコードを実行する準備が整いました。

🎉 Hello World! を出力する

準備ができたら、早速 hello.ook を実行してみましょう。

docker-compose exec ook-lang python3 /app/ook.py /app/hello.ook

もし Ook! のコードが正しく書かれていれば、以下のように出力されます。

🐵 Debug: Ook! words split['Ook.', 'Ook?', ..., 'Ook.', 'Ook!']
🔢 Total words count: 282 (should be even)
Hello World!

hello.ook のコードは、282単語 の Ook! で構成されており、
Brainfuck に変換されて実行される仕組みになっています。

🧠 Ook! 言語の基本構文

Ook! は、Brainfuck の各命令を 「Ook.」「Ook?」「Ook!」 の組み合わせに置き換えたものです。

Ook! コード Brainfuck 相当 説明
Ook. Ook? > ポインタを右へ移動
Ook? Ook. < ポインタを左へ移動
Ook. Ook. + メモリの値を1増やす
Ook! Ook! - メモリの値を1減らす
Ook! Ook. . メモリの値を出力
Ook. Ook! , 入力を受け取る
Ook! Ook? [ ループ開始
Ook? Ook! ] ループ終了

実際に hello.ook を書いてみると、こんな感じになります。

Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook! Ook.
...
(省略: 約280単語の Ook! コード)
...
Ook. Ook. Ook! Ook.

正しく書かれていれば Hello World! を出力します。
ただし、単語数が奇数だったり、構文を間違えるとエラーになります! 🚨

🔗 リポジトリ公開中

今回の Ook! 言語実行環境は、以下のリポジトリで公開しています。
興味のある方はぜひ試してみてください!

👉 ook-lang-playground (GitHub)

📝 さいごに

Ook! は、Brainfuck と同じくシンプルな命令セットで動作する難解言語ですが、そのユニークな文法から 遊び心のあるプログラミング体験 ができます。

もし Ook! に興味がある方は、ぜひ試してみてください!
また、「こんな難解言語を試してみた」などのアイデアがあれば、ぜひコメントで教えてください 😊

🐵 Happy Ook! Coding! 🚀

Discussion