Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
Programming
1
690
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
Tweet
Share
More Decks by uhyo
See All by uhyo
TypeScript 4.7と型レベルプログラミング
uhyo
6
4k
TypeScriptを振り回せ!
uhyo
26
7.4k
2020年代、使う技術はどう選ぶ?
uhyo
21
11k
ECMAScriptの視点で見るWeakRefの“正しい”使い方
uhyo
3
430
安全性の極北から見るTypeScript
uhyo
19
10k
Other Decks in Programming
See All in Programming
LINE Messaging APIの概要 - LINE API総復習シリーズ
uezo
1
190
Baseline Profilesでアプリのパフォーマンスを向上させる / Improve app performance with Baseline Profiles
numeroanddev
0
260
フロントエンドエンジニアが変える現場のモデリング意識/modeling-awareness-changed-by-front-end-engineers
uggds
5
970
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
410
Scrum Fest Osaka 2022/5年で200人になったスタートアップの アジャイル開発の歴史とリアル
atamaplus
1
970
JSのウェブフレームワークで高速なルーターを実装する方法
usualoma
1
1.9k
JetPackComposeは宣言型プログラミングパラダイムって実はよくわかってないんですが、別に使ってもいいんですよね、
conigashima
0
190
アジャイルで不確実性に向き合うための開発タスクの切り方
tanden
3
220
Why Airflow? & What's new in Airflow 2.3?
kaxil
0
120
iOS 16からのロック画面Widget争奪戦に備える
tsuzuki817
0
270
VisualProgramming_GoogleHome_LINE
nearmugi
1
240
Let's keep Commodore 64 alive for the next 40 years
mehowte
1
110
Featured
See All Featured
KATA
mclloyd
7
8.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.6k
Web development in the modern age
philhawksworth
197
9.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.4k
Three Pipe Problems
jasonvnalue
89
8.7k
Raft: Consensus for Rubyists
vanstee
126
5.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Adopting Sorbet at Scale
ufuk
63
7.6k
Transcript
TypeScriptをフォークして EmojiScript を作った 2020-10-09 ⾃作プログラミング⾔語の集い @uhyo_
EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) {
(i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4
EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) {
(i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 function fizzbuzz(n) { for (var i = 0; i <= n; i++) { if (i % 15 === 0) { console.log("FizzBuzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else if (i % 5 === 0) { console.log("Buzz"); } else { console.log(i); } } } fizzbuzz(1000); コンパイル後 (JavaScript)
EmojiScriptの⾔語仕様 (1)単純置換 fizzbuzz(n: ): { (i & ; i⏮n; i)
{ (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4
EmojiScriptの⾔語仕様 (2) 点字数値リテラル fizzbuzz(n: ): { (i & ; i⏮n;
i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 256進数で整数を記述できる 0= , 1=⠁, 2=⠂, 3=⠃, 4=⠄, …, 254=⣾, 255=⣿ ex) 1000 = 0x3e8 = ⠃⣨ 65535 = 0xffff = ⣿⣿
EmojiScriptの⾔語仕様 (3) 肌の⾊に対応 fizzbuzz(n: ): { (i & ; i⏮n;
i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 ⾃分を表現できるプログラミング⾔語 !"#$%& ZWJ Sequenceを正しくパースする対応 ex) ! = U+1F647 U+1F3FE U+200D U+2640 U+FE0F (UTF-8で17バイト)
TypeScriptがベース 良い点 VSCodeサポートがついてくる 型システムも最初からある バックエンド実装が必要ない (JavaScriptにコンパイルできる)
TypeScriptにcontributeする練習 になる(?) 悪い点 どうあがいてもJavaScriptになる
まとめ EmojiScriptで⾃分を表現しよう! 絵⽂字のパースを実装するとUnicodeの勉強になる https://github.com/uhyo/EmojiScript 絵⽂字追加のプルリクも⼤歓迎