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
Goでマークダウンの独自記法を実装する
Search
lag129
August 25, 2025
Technology
0
140
Goでマークダウンの独自記法を実装する
lag129
August 25, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
自治体職員がガバクラの AWS 閉域ネットワークを理解するのにやって良かった個人検証環境
takeda_h
2
360
Exadata Database Service on Dedicated Infrastructure セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
350
あとはAIに任せて人間は自由に生きる
kentaro
3
1k
[kickflow]20250319_少人数チームでのAutify活用
otouhujej
0
190
MCPサーバーを活用したAWSコスト管理
arie0703
0
140
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
190
AIドリブンのソフトウェア開発 - うまいやり方とまずいやり方
okdt
PRO
9
420
プロダクトエンジニアリングで開発の楽しさを拡張する話
barometrica
0
220
生成AI活用のROI、どう測る? DMM.com 開発責任者から学ぶ「AI効果検証のノウハウ」 / ROI of AI
i35_267
4
140
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
150
新卒(ほぼ)専業Kagglerという選択肢
nocchi1
0
1.7k
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
2
250
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Faster Mobile Websites
deanohume
309
31k
Scaling GitHub
holman
462
140k
A designer walks into a library…
pauljervisheath
207
24k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Writing Fast Ruby
sferik
628
62k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
GraphQLとの向き合い方2022年版
quramy
49
14k
Speed Design
sergeychernyshev
32
1.1k
It's Worth the Effort
3n
187
28k
Transcript
Goでマークダウンの独自記法を実装する 2025/08/23 Kyoto.なんか #7 1
自己紹介 id:lag129 使う言語: Kotlin(Android),TypeScript,Python はてなサマーインターンシップ2025に参加しました! 2
インターンシップの課題 Kubernetes上で動作するブログサービスのMarkdownパース処理を実装する GoかTypeScriptで実装する TypeScriptだったら使ったことあるけど... 3
『せっかくインターンシップで開発するなら、新しい ことに挑戦したいなぁ』 ⇛ Goで実装しよう! 4
Wikipedia記法を実装する [wikipedia:日本] goldmarkというライブラリを使用して実装 独自構文の実装にextensionを拡張する 5
できたもの 6
実際のコード1 func Render(ctx context.Context, src string) (string, error) { html
:= template.HTMLEscapeString(src) md := goldmark.New( goldmark.WithExtensions( Wikipedia, ), ) var buf bytes.Buffer if err := md.Convert([]byte(html), &buf); err != nil { return "", nil } return buf.String(), nil } 7
goldmarkの拡張 Trigger() , Parse() , RegisterFuncs() , CloseBlock() ... 見よう見まねで実装
ありがとうDeepWiki 8
実際のコード2 // 中略 client := &http.Client{ CheckRedirect: func(req *http.Request, via
[]*http.Request) error { return http.ErrUseLastResponse }, } resp, _ := client.Head(url) return resp.StatusCode 9
困ったこと extensionの実装方法がドキュメントにない ソースコードを読みこむ [wikipedia:日本] この記法だと既存のリンク記法の実装と被ってうまくいかない {} での実装に変更 10
実装した感想とまとめ 新しいことを始めるのはおもしろい ドキュメントや実際のコードを見ながら実装した体験 パーサーとかgRPCをKotlinで実装したい!! 11