7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FORKAdvent Calendar 2018

Day 18

ちょっとかわいいBrainF*ck

Last updated at Posted at 2018-12-17

みなさん、Brainf*ckしてますか?

Brainf*ckとは

Brainfuck(卑語が含まれているためBrainf*ckと伏字で表記することが多いです。)とは、
難解プログラミング言語(esolang)と呼ばれる言語のひとつです。

実行できる命令は8つだけで、対応する8つの記号だけで記述することから、
可読性も記述性も低いネタ言語難読言語となっています。

Hello worldをBrainf*ckで記述するとこんな感じになります。

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++
++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>
++++++++[<++++>-]<+.[-]++++++++++.

魚の骨みたいですね。
実用性は全くないのですが、パズル的な楽しさのある言語です。

また、プログラムの読み書きは非常に複雑になる反面、
Brainf*ckの実行環境自体は命令が少ないため比較的簡単に実装することができます。
そのため、一般的なプログラム言語の手習いとして、インタプリタを作ってみるのもオススメです。
命令記号を好きな文字列に置き換えれば、オリジナルプログラミング言語を作った気分になれます。

javascriptでBrainf*ck

というわけで、javascriptでBrainf*ckの実行環境を作ってみました。
表示周りはVue.jsを利用しています。

2018-11-28_113707.png

ところで、このアプリには大きな問題があります。
突貫で作ったために、変なコードを書くと無限ループに入ってブラウザのタブが固まることがありますが些細なことです(些細か?)
その問題とは、見た目がかわいくないということです。

CSSを何一つ書いていないので、無骨の極み。
せっかくのクリスマスシーズンだというのにこんな画面で魚の骨のようなコードを弄っていては、
あまりの寂しさに空は堕ち、大地は割れ、海は枯れ果て、最終的に世界が滅亡してしまいます。

ちょっとかわいいBrainf*ck

そんなわけで制作したのがこちら「えもじふ●っく」です。

2018-12-17_180050.png

CSSを一通り適用するとともに、命令用の8文字を絵文字に変換することで脱魚の骨を図っています。
デフォルトではクリスマスっぽいものをセットしていますが、絵文字は自由に変更することが可能です。

実行例

🎄🦌🎅🛷🍰⛄🎁🧦

コード

🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🍰🎄🎅🎅🎅🎅🎅🎅🎅🦌
🛷⛄🎄🎁🦌🎅🎅🎅🎅🎅🎅🍰🎄🎅🎅🎅🎅🦌🛷⛄🎄🎁
🦌🎄🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎁🎁🎅🎅🎅🎅
🎅🎅🎅🎁🦌🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🍰🎄🛷🛷🛷
🛷🛷🛷🛷🛷🦌🛷⛄🎄🛷🎁🦌🎅🎅🎅🎅🎅🎅🎅🍰🎄🎅
🎅🎅🎅🎅🦌🛷⛄🎄🎁🦌🎅🎅🎅🎅🎅🎅🎅🍰🎄🎅🎅🎅
🎅🎅🦌🛷⛄🎄🎅🎅🎁🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎁🛷🛷
🛷🛷🛷🛷🛷🛷🛷🎁🎅🎅🎅🎅🎅🎅🎅🎅🎅🎅🎁🎅🎁🛷
🛷🛷🛷🛷🛷🛷🎁🦌🎅🎅🎅🎅🍰🎄🛷🛷🛷🦌🛷⛄🎄🎁
🦌🎅🎅🎅🎅🎅🎅🍰🎄🎅🎅🎅🦌🛷⛄🎄🎁🦌🎅🎅🎅🎅
🎅🎅🎅🎅🍰🎄🛷🛷🛷🛷🛷🛷🛷🛷🛷🛷🦌🛷⛄🎄🛷🛷🎁

実行結果

Merry Christmas!

お正月ver

絵文字セット

🍣🍱🎍🦅🗻🍆🌅🌄

コード

🌄🦅🦅🌅🌄🌅🌄🎍🎍🌅🌅🌄🎍🎍🎍🎍🌅🍣🎍🎍🎍
🎍🎍🎍🎍🎍🗻🍣🎍🎍🎍🎍🍱🦅🍆🍣🌅🍱🍱🌄🎍🎍
🎍🎍🎍🎍🎍🎍🎍🎍🎍🎍🎍🌅🦅🦅🦅🦅🦅🦅🦅🦅🦅
🌅🌄🎍🎍🎍🎍🎍🌅🍣🍣🌅🍱🍱🌄🌅🍣🎍🎍🎍🎍🎍
🗻🍱🦅🦅🦅🦅🍣🦅🍆🍱🌅🦅🦅🦅🦅🌅🍣🎍🎍🎍🎍
🗻🍱🎍🎍🎍🎍🍣🦅🍆🍱🎍🌅

入力

January

実行結果

Happy new year

結果

とてもかわいくなりました。これでクリスマスもハッピーにBrainf*ckで遊べますね。

使った技術の話

Vue.js

表示や絵文字入力などはVueに任せています。このあたりを任せてロジックに専念できるのがVueの良いところですね。
モジュール化が使いこなせていないのが今後の課題です。

Netlify(+GitHub)

今回ホスティングにNetlifyを利用しましたが、
GitHubへのpushを検知してbuild&公開してくれる機能が非常に強力でした。
簡単なWebアプリの公開にはガシガシ利用していきたいと思います。

GitHub

マサカリはウレタン製でお願いします。
https://github.com/sunny-place/emojifck

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?