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
970
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
Tweet
Share
More Decks by uhyo
See All by uhyo
tsconfig.jsonの最近の新機能 ファイルパス編
uhyo
7
2k
非同期処理を活用しながらRust製wasmとJSを連携する方法(wasm-bindgenを使いたくない人向け)
uhyo
4
3.5k
tsconfig.jsonの設定を見直そう!フロントエンド向け 2024夏
uhyo
25
8.5k
React 19を概念から理解する
uhyo
21
9.5k
require(ESM)とECMAScript仕様
uhyo
6
1.8k
TypeScript Quiz (Encraft #12 Frontend Quiz Night)
uhyo
8
1.7k
Shadow DOMとCSSの現状
uhyo
11
7.2k
TypeScriptってどんな言語? 言語そのものを知る面白さ
uhyo
16
8.9k
App Router時代のデータ取得アーキテクチャ
uhyo
49
16k
Other Decks in Programming
See All in Programming
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
23k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.2k
Why Spring Matters to Jakarta EE - and Vice Versa
ivargrimstad
0
990
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~ / JJUG CCC 2024 Fall
ryounasso
0
370
CSC509 Lecture 09
javiergs
PRO
0
110
CPython 인터프리터 구조 파헤치기 - PyCon Korea 24
kennethanceyer
0
240
macOS でできる リアルタイム動画像処理
biacco42
7
1.9k
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
390
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
RailsのPull requestsのレビューの時に私が考えていること
yahonda
5
1.7k
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
4
1.6k
gopls を改造したら開発生産性が高まった
satorunooshie
8
240
Featured
See All Featured
Bash Introduction
62gerente
608
210k
Six Lessons from altMBA
skipperchong
26
3.5k
Navigating Team Friction
lara
183
14k
Rails Girls Zürich Keynote
gr2m
93
13k
YesSQL, Process and Tooling at Scale
rocio
167
14k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
Documentation Writing (for coders)
carmenintech
65
4.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
GraphQLとの向き合い方2022年版
quramy
43
13k
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 絵⽂字追加のプルリクも⼤歓迎