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
taiseiue
May 09, 2024
Programming
1
540
(自作の)プログラミング言語ができるまで
taiseiue
May 09, 2024
Tweet
Share
More Decks by taiseiue
See All by taiseiue
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
300
Kotlinのデフォルト引数の話
taiseiue
0
73
.NETの上でお手製の言語を動かす技術
taiseiue
0
93
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
380
振り向き美人
taiseiue
0
24
Tadpole operators
taiseiue
0
65
Other Decks in Programming
See All in Programming
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
1.1k
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
クラウドに依存しないS3を使った開発術
simesaba80
0
210
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
8
2k
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
700
Patterns of Patterns
denyspoltorak
0
410
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
160
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
440
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
570
CSC307 Lecture 02
javiergs
PRO
1
740
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
It's Worth the Effort
3n
187
29k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Believing is Seeing
oripsolob
0
19
Darren the Foodie - Storyboard
khoart
PRO
0
2.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
78
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
390
A Modern Web Designer's Workflow
chriscoyier
698
190k
RailsConf 2023
tenderlove
30
1.3k
Navigating Team Friction
lara
191
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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