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
970
TypeScript Quiz (Encraft #12 Frontend Quiz Night)
uhyo
7
1.4k
Shadow DOMとCSSの現状
uhyo
11
6.2k
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
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
480
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
900
敵対的ポイフル
futabato
0
130
AmperとFleetを使ったAndroidアプリ
yoppie
0
250
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
120
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
310
"config" ってなんだ? / What is "config"?
okashoi
0
310
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
4
1k
Fast JSX: Don't clone props object #28768
yossydev
1
170
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
9
4.2k
Elm Form Validation
bkuhlmann
0
510
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
457
32k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
How to train your dragon (web standard)
notwaldorf
75
5.2k
Designing with Data
zakiwarfel
96
4.8k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Six Lessons from altMBA
skipperchong
22
3k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
KATA
mclloyd
16
12k
GraphQLとの向き合い方2022年版
quramy
33
12k
4 Signs Your Business is Dying
shpigford
176
21k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
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 絵⽂字追加のプルリクも⼤歓迎