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
情報科学若手の会 2024 LT「WebAssemblyで拡張可能な軽量マークアップ言語の開発」
Search
Mutsuha Asada
September 15, 2024
Technology
0
18
情報科学若手の会 2024 LT「WebAssemblyで拡張可能な軽量マークアップ言語の開発」
Brackについての紹介
https://github.com/brack-lang/brack
Mutsuha Asada
September 15, 2024
Tweet
Share
More Decks by Mutsuha Asada
See All by Mutsuha Asada
Intel系FPGA上へのRISC-Vプロセッサの実装
momeemt
0
110
Nixでつくるdotfiles
momeemt
0
16
情報特別演習I 最終発表「理工学の紙書籍を用いた学習の効率を向上させるインタフェース」
momeemt
0
17
SATySFi Conf 2023「SATySFiを使って学類新歓冊子を発行した」
momeemt
0
13
主専攻実験(深層学習を用いたCG・画像処理)最終成果報告
momeemt
0
13
情報科学類新歓2023 履修の組み方
momeemt
0
19
情報科学特別演習 最終発表「動画編集ソフトウェアフレームワーク: mock up」
momeemt
0
17
技育キャンプ ハッカソン vol.9「ギリギリ飯」
momeemt
0
11
PIXIV SUMMER BOOT CAMP 2022 成果発表「GIFから12倍速くする」
momeemt
0
9
Other Decks in Technology
See All in Technology
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
380
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
2
440
クラウドサービス事業者におけるOSS
tagomoris
2
860
N=1から解き明かすAWS ソリューションアーキテクトの魅力
kiiwami
0
130
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.2k
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.6k
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
130
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
630
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
140
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
The Future of SEO: The Impact of AI on Search
badams
0
200
次世代KYC活動報告 / 20250219-BizDay17-KYC-nextgen
oidfj
0
260
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
98
5.4k
Writing Fast Ruby
sferik
628
61k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
GraphQLとの向き合い方2022年版
quramy
44
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Thoughts on Productivity
jonyablonski
69
4.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
550
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Transcript
1 情報科学若手の会 2024 LT WebAssemblyで拡張可能な 軽量マークアップ言語の開発 浅田睦葉 GitHub: @momeemt
2 自己紹介 省略
・Markdownは統一された規格が無く、 CommonMarkやGitHub Flavored Markdown(GFM)などの後発の規格がいくつかある → 脚注はCommonMarkに定義されている?GFMには? → インライン脚注はpandocで変換できる? → リストの要素に見出しを含めてMarkdown.plで変換できる?CommonMark準拠だと?
→ MultiMarkdownを使うとルビを振ることはできる? ・人々はMarkdownの枠を超えた表現力をMarkdownに要求している 3 Markdownクイズ 😄 まあ確かに欲しいよな 知人のMarp製スライド pタグを省略できる JSXであるところのMDX
・Markdownの統一された規格は無く、CommonMarkやGitHub Flavored Markdownなどが乱 立している → 脚注はCommonMarkに定義されている?GFMには? → インライン脚注はpandocで変換できる? → リストの要素に見出しを含めてMarkdown.plで変換できる?
・人々はMarkdownの枠を超えた表現力をMarkdownに要求している 3 動機 まあ確かに欲しいよな 知人のMarp製スライド pタグを省略できるJSX 4 変換規則・対象を拡張することを 前提にしたマークアップ言語が欲しい
5 文法 ・文法を最小限にして、できるだけ簡単に拡張可能な言語仕様にする ・多くのマークアップ言語は拡張が処理系依存 ・Brackの重要な文法は1種類(厳密には3種類)だけ ・コマンド呼び出し構文 ・[module.ident arg1, arg2, ...,
argN] ・`[]`はインライン、`{}`はブロックで、 単なる置換メカニズム ・`<>`はマクロ
6 プラグイン① ・WebAssemblyバイナリをプラグインとして扱う ・現在はRustのみで書いているが、JavaScriptやGo、Cなどでも書ける ・HTMLターゲットのboldの実装は単純 ・[std.bold hello]はどう処理されるか 1. コンパイラが文字列“hello”をプラグインに渡す 2.
bタグで囲った文字列“<b>hello</b>”を返す ・インライン脚注は置換のみでは実現できない ・抽象構文木を操作可能なマクロを利用する ・文書のASTとIDを受け取る ・フッターに脚注を挿入するコードを書く
7 プラグイン② [展望] ・LSPも書いている(今は簡単なエラー報告ができる程度) ・プラグインがLSPの機能を実装できるように進める予定 ・型検査、補完、Inlay Hints、Code Actions、Semantic Tokensなど ソースコード
トークン列 具象構文木 (CST) 抽象構文木 (AST) 変換前表現 生成結果 tokenizer parser transformer → プラグインが定義したフォーマッタを呼び出す expander → プラグインが定義したマクロを呼び出す codegen → プラグインが定義したコマンドを呼び出す
8 ターゲット ・テキスト形式ならターゲットを自由に選べる ・先述したHTMLをはじめとして、pandoc ASTやはてな記法、JSON、XMLなど ・バイナリ形式だと少し大変そう ・フックを入れたい [展望] ・JSON形式に変換した後に、そのデータを利用して任意のプログラムを実行する ・既存のPDFバックエンド(typst/pdf-writerなど)を利用して直接PDFを出力する
・動画、画像、音声、その他?
9 何に使うの ・現状: 私のブログ(blog.momee.mt)はBrackで書かれています ・このスライドはCanvaで作りましたがBrackで書けるようになると嬉しい ・Marp、結局はHTMLの暴力になってしまう ・単一のファイルからPDF、Playground、講義動画の出力 ・今はマークアップ言語が主流ではない、文章主体の作業を効率化したい
まとめ 10 ・9月末にv0.1.0を出す予定です!興味があれば動かしてみていただけると嬉しいです ・Brackが使えそうな分野があればぜひ教えてください