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
TypeScriptをフォークしてEmojiScriptを作った話
Search
uhyo
October 09, 2020
Programming
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
More Decks by uhyo
See All by uhyo
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
380
Reactの設計論
uhyo
26
17k
型があると何が嬉しいか
uhyo
3
170
Baseline対応のDOMの型定義を作った
uhyo
3
1k
AIのReact習熟度を測る
uhyo
2
1.1k
React、まだ楽しくて草
uhyo
7
5.3k
TypeScript 7.0の現在地と備え方
uhyo
6
3.9k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
11k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
130
Other Decks in Programming
See All in Programming
SODA - FACT BOOK(EN)
sodainc
1
190
AI Augmentation Techniques with Liberty
ivargrimstad
0
180
sbt 2.0: takeoff
eed3si9n
0
180
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
1
280
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
130
AmebaブログはKMPから卒業します
kmars0605
0
310
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
120
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.7k
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
240
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.5k
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6k
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
870
Paper Plane (Part 1)
katiecoart
PRO
2
12k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
Facilitating Awesome Meetings
lara
57
7.2k
Designing for Performance
lara
612
70k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Done Done
chrislema
187
17k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
460
Prompt Engineering for Job Search
mfonobong
0
570
Building a Scalable Design System with Sketch
lauravandoore
464
34k
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 絵⽂字追加のプルリクも⼤歓迎