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
TypeScriptをフォークしてEmojiScriptを作った話
uhyo
October 09, 2020
More Decks by uhyo
See All by uhyo
TypeScript 7.0の現在地と備え方
uhyo
6
3.1k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
19
9.4k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
80
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.1k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
880
TypeScript 6.0で非推奨化されるオプションたち
uhyo
18
8.2k
Claude Code 10連ガチャ
uhyo
4
1.1k
AI時代、“平均値”ではいられない
uhyo
8
5.7k
意外と難しいGraphQLのスカラー型
uhyo
5
1.2k
Other Decks in Programming
See All in Programming
inferと仲良くなる10分間
ryokatsuse
1
250
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
370
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
130
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
0
100
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
11
2.7k
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
120
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
980
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
150
LLM Plugin for Node-REDの利用方法と開発について
404background
0
110
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
380
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
560
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
5
660
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Ethics towards AI in product and experience design
skipperchong
2
280
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
310
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
180
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
230
Designing for humans not robots
tammielis
254
26k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
150
KATA
mclloyd
PRO
35
15k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
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 絵⽂字追加のプルリクも⼤歓迎