Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
Reactの設計論
uhyo
7
1.6k
型があると何が嬉しいか
uhyo
3
83
Baseline対応のDOMの型定義を作った
uhyo
3
910
AIのReact習熟度を測る
uhyo
2
980
React、まだ楽しくて草
uhyo
7
4.9k
TypeScript 7.0の現在地と備え方
uhyo
6
3.8k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
10k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
110
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.2k
Other Decks in Programming
See All in Programming
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
180
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
スマート反転とウェブアクセシビリティ
camiha
0
140
ソフトウェアラスタライザ
fadis
1
790
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
2
500
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
550
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
580
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
3
530
自分的「カンファレンスの楽しみ方」
syumai
0
190
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Practical Orchestrator
shlominoach
191
12k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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 絵⽂字追加のプルリクも⼤歓迎