Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
BrainFuckをつくった
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uzimaru0000
June 01, 2020
Technology
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BrainFuckをつくった
#uzimaru生誕LT会
uzimaru0000
June 01, 2020
More Decks by uzimaru0000
See All by uzimaru0000
OGPを使いたい
uzimaru0000
0
190
git入門
uzimaru0000
1
370
Webフロントエンド入門
uzimaru0000
1
470
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
370
Elmで作るCLI
uzimaru0000
0
150
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
220
Compression Vue App
uzimaru0000
0
140
好きなライブラリ_OSS
uzimaru0000
0
240
Other Decks in Technology
See All in Technology
Loop Engineering これくらいでいい
mikanichinose
0
220
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
260
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.5k
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.5k
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.3k
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
160
SREでアラート疲れを 解決しよう!
kairim0
1
230
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.2k
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
150
Deep Data Security 機能解説
oracle4engineer
PRO
2
780
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
170
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
520
Become a Pro
speakerdeck
PRO
31
6.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
A Soul's Torment
seathinner
8
3.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Music & Morning Musume
bryan
48
7.4k
Transcript
BrainFuckをつくった うじまる
はじめに
たくさん集まってくれて ありがとうございます
自己紹介 - ひよこ - 趣味 - 料理 - プログラミング -
えっちいいね - 言語 - TS - Elm
誕生日なのでBrainFuckを作りました
BrainFuckを作った 誕生日なのでは冗談 1. uzimaru.comのリニューアルに elm/parser を使いたい 2. 練習でbrainfuckのparserを作って見よう 3.
BrainFuckってなに? 難解プログラミング言語のひとつ + - > < , . [ ]
の8つの記号だけを使ってプログラミングをする言語 チューリング完全なので実質なんでも作れる[要出典] 記号部分を任意のトークンに変えるだけで自作言語()が作れる 例 : https://github.com/masarakki/nyaruko_lang
elm/parserって? elmの公式が出してるパーサーライブラリ elm的には正規表現よりこっちを使ってほしいらしい らしい
やったこと 1. 文字列(コード)を受け取る 2. 作ったParserでelmのデータ構造に落とす 3. 作られたデータ構造を使って状態を計算 4. 表示 これだけ!!
やったこと 1. 文字列(コード)を受け取る 2. 作ったParserでelmのデータ構造に落とす 3. 作られたデータ構造を使って状態を計算 4. 表示 今回はこの2つをメインに話します
(っと言っても時間がないので凄い端折ります)
Parserでelmのデータ構造にする
命令を型にする - > 右にシフト - < 左にシフト - + 加算
- - 減算 - , 入力 - . 出力 - [ ループの開始 - ] ループの終わり
命令を型にする - > 右にシフト - < 左にシフト - + 加算
- - 減算 - , 入力 - . 出力 - [ ループの開始 - ] ループの終わり
命令を型にする あとはひたすら Parserを書いていく
命令を型にする `Parser.oneOf` はリストの上からParseし ていく 一つ一つのParserはかなりシンプル
データ構造を使って状態を計算
データ構造を使って状態を計算 Parseすると `List BCmd` が返ってくる そいつを使って状態を計算する だけ!! Parserの型
データ構造を使って状態を計算 状態を右のような型で持っておく - prt 今のポインタ - cmds 残ってる命令列 - memory
状態を持っておくメモリ - input 入力値 - output 出力値
データ構造を使って状態を計算 命令一つ一つに対応する処理を書けば 終わり!! 計算は失敗する可能性があるので(ポインタ 値が負の数になったり)`Result` 型になって いる
DEMO
まとめ - elm/parserがめちゃくちゃ便利だった - ちょっと癖がある(backtrackableとか(よく分かってない))けど使いやすい - https://uzimaru.dev/elm-brainfuxk で遊べるので遊んでね - https://github.com/uzimaru0000/elm-brainfuxk
にコードがあるので興味がある人 は見てみてね
ありがとうございました!!