Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
(自作の)プログラミング言語ができるまで
Search
taiseiue
May 09, 2024
Programming
700
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
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
150
同人サークルを作って 8年経った僕らの現在地
taiseiue
0
280
RustでもVJしたい!
taiseiue
0
110
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
620
Kotlinのデフォルト引数の話
taiseiue
0
120
.NETの上でお手製の言語を動かす技術
taiseiue
0
130
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
500
振り向き美人
taiseiue
0
42
Tadpole operators
taiseiue
0
93
Other Decks in Programming
See All in Programming
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
230
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
200
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
150
phperだってパンチカードでコーディングしたい
o0h
PRO
0
480
ChromeでローカルLLM
ryu1013
0
170
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
280
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
170
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
200
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
120
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.4k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.5k
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
610
Code Reviewing Like a Champion
maltzj
529
40k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
880
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
430
It's Worth the Effort
3n
188
29k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Visualization
eitanlees
153
17k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
860
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Odyssey Design
rkendrick25
PRO
2
890
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
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