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
(自作の)プログラミング言語ができるまで
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
taiseiue
May 09, 2024
Programming
670
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(自作の)プログラミング言語ができるまで
taiseiue
May 09, 2024
More Decks by taiseiue
See All by taiseiue
同人サークルを作って 8年経った僕らの現在地
taiseiue
0
130
RustでもVJしたい!
taiseiue
0
75
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
440
Kotlinのデフォルト引数の話
taiseiue
0
110
.NETの上でお手製の言語を動かす技術
taiseiue
0
120
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
470
振り向き美人
taiseiue
0
37
Tadpole operators
taiseiue
0
86
Other Decks in Programming
See All in Programming
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
源内ハンズオン概要編
hideg
0
210
typoなんかねぇよ
raspython3
0
490
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
360
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
200
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
リアルな遅延を測る仕様
kota_yata
1
120
Flow は今どうなっているか
mizdra
PRO
0
690
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
270
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Documentation Writing (for coders)
carmenintech
77
5.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
The Invisible Side of Design
smashingmag
301
52k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
The agentic SEO stack - context over prompts
schlessera
0
870
The untapped power of vector embeddings
frankvandijk
2
1.8k
Transcript
(⾃作の) プログラミング⾔語ができるまで ランチタイムトーク 2024/5/9 B1 上村太成
本⽇の話 • 作ったプログラミング⾔語の話 • ふんわりしか説明されてこなかった部分に少しだけスポットライトを • ⾃分の⾔語がこうできてるのであって他の⾔語がそうとは限らない • 何を作ったかを中⼼に •
背景 • 作ったもの • 作ったものの特徴 • これから
背景 どういうものを作っていて、どういう要求があったかというと
当時作っていたもの • .NET上で動くChromiumベースのブラウザ • ユーザーが欲しい機能をプラグインとして追加で きる • メーカーはプラグインを介して独⾃のアプリを作 れる •
独⾃のミニアプリを作るためのフレームワーク Plugin Plugin Plugin Plugin ユーザーには点線の部分が 個別のアプリに⾒える WebSailing
前提:作っていたプラグインの性質 • 開発コスト⾼すぎ • がっつりプラグインの仕組みを理解していないと開発できない • デバッグが難しい • バイナリに依存しまくり •
ブラウザを更新するたびプラグインも更新してもらう必要がある 簡単に開発でき、コンパイルせずに動かせるマクロ⾔語が欲しい!
こんな⾔語が出来上がりました
こんな⾔語ができあがりました
こんな⾔語ができあがりました • 元々は.NETアプリ向けのマクロ⾔語 • 気に⼊ったので汎⽤⾔語化 • WindowsやmacOS、Linuxなど 様々な環境で動作 • たくさんのAPIが標準で使える
何を作ったの? AliceScript Docs プログラミング⾔語の説明 Losetta プログラミング⾔語の実装
AliceScript Docs • 「AliceScript」って • 調べると出てきます • APIや概念について説明 • クラウド上で100%動作
Losetta The AliceScript Interpreter Platform • よくいわれる例え 読んでそのたび コンピューターに命令する
Losetta The AliceScript Interpreter Platform • インタプリターにアクセスできるように • アクセスできることのメリット •
AliceScriptから、コードを書き換えられる • 簡単に⾔語機能を拡張できる AliceScript
AliceScriptの特徴 ⻑いのでざっと3つ
特徴:名前空間 • C++やC#と同じ概念 • ファイルをフォルダで整理するように 関数や変数を名前空間で整理 • アクセス修飾⼦を使うことで使わせた いものと使わせたくないものを分離
特徴:契約プログラミング • 関数の定義時に 制約をつけることができる • D⾔語を参考に導⼊
特徴:契約プログラミング • 関数の定義時に 制約をつけることができる • D⾔語を参考に導⼊ • 実⾏時コード書き換えで実現
特徴:プラットフォーム呼び出し • .NETの静的メソッドを AliceScriptで定義して呼び出せる • @netimportでどこにある関数かを伝える • ”extern”は実装が外部にある意 • 引数リストには変換先の型を書く
特徴:プラットフォーム呼び出し • OSや他のライブラリで 公開されている関数も呼び出せる • @libimportでどこにある関数かを伝える • ”extern”は実装が外部にある意 • 引数リストには変換先の型を書く
特徴:プラットフォーム呼び出し • 標準APIも構⽂もプラットフォー ム呼び出しでできている • マーシャリングと バインディングで実現
特徴:プラットフォーム呼び出し • マーシャリング(Marshalling) データ変換
特徴:プラットフォーム呼び出し • バインディング(Binding)
特徴:プラットフォーム呼び出し • 上記を駆使すれば、 理論上⼤規模なアプリだって作 れる
AliceScriptのこれから いままでの歴史とこれからの計画と
これまでのAliceScript • WSOFTScript • AliceScript RC • AliceScript GM 初めての正式リリース
• AliceScript 2 関数型プログラミングの導⼊ Losettaの開発 • AliceScript 3 契約プログラミングの導⼊ • AliceScript vNEXT 2020 2021 2022 2023 2024
⾔語開発を通して • ⾃分の知らないことが知れる • “使い⽅は知ってる”のに”作り⽅は知らない”ことはよくある • ⾔語機能が”なぜ”あるか、考える時間ができる • ⾃分でも技術基盤が作れる •
⾃作の基盤の上で何かが動くのは楽しい • リバースエンジニアリングが得意になる
AliceScriptのこれから • 例年通りできれば新機能を10⽉に締め切り、 トリアージ後AliceScript 4を冬ごろに公開予定 • 事前コンパイルやIDEのサポートも構想中 • メディア化企画「Aliceたん」も進⾏中 a.wsoft.ws/alice/me
コメント募集中 • 新機能のアイデアや質問など… • X(Twitter): @taiseiue • github.com/WSOFT-Project/Losetta
コメント募集中 • 新機能のアイデアや質問など… • X(Twitter): @taiseiue • github.com/WSOFT-Project/alicescript