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
930
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
Tweet
Share
More Decks by uhyo
See All by uhyo
require(ESM)とECMAScript仕様
uhyo
4
960
TypeScript Quiz (Encraft #12 Frontend Quiz Night)
uhyo
7
1.3k
Shadow DOMとCSSの現状
uhyo
11
6.1k
TypeScriptってどんな言語? 言語そのものを知る面白さ
uhyo
16
8.3k
App Router時代のデータ取得アーキテクチャ
uhyo
45
14k
ステート管理を超えるRecoil運用の考え方
uhyo
15
11k
ついに来る!TypeScript5.0の新機能
uhyo
21
15k
TypeScript 4.7と型レベルプログラミング
uhyo
6
5.3k
TypeScriptを振り回せ!
uhyo
28
8.9k
Other Decks in Programming
See All in Programming
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
2
200
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
410
Site Reliability Engineering for GMO
pyama86
8
1.1k
PHPはいつから死んでいるかの調査
chiroruxx
2
410
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
140
Code Reviews
bkuhlmann
4
900
Deep Dive into React Stream/Serialize
mugi_uno
3
600
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1k
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
8
1.4k
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
380
PostmanでAPIの動作確認が楽になった話
h455h1
0
180
Domain-Driven Transformation
hschwentner
2
1.5k
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
BBQ
matthewcrist
80
8.8k
GraphQLとの向き合い方2022年版
quramy
33
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
The Cult of Friendly URLs
andyhume
74
5.7k
Done Done
chrislema
178
15k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
How to train your dragon (web standard)
notwaldorf
75
5.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
11
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
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 絵⽂字追加のプルリクも⼤歓迎