📚

OSSにコミットしようとしたが、不要になった話

に公開

動機

k1LoW/deckに全て賭けてみようと思い、社内の営業資料を全てdeck compliantに変更していた。

そこで、スライドの左上にある「プレゼンテーション全体のタイトル」みたいな部分を共通のテンプレート変数にしたいと感じることがあった。


これの左上の部分

Marpでは

marp には、共通のヘッダーとフッターをFront Matter上で指定する機能がある。

---
header: 'Header content'
footer: 'Footer content'
---

# Page 1

---

## Page 2

こういう感じ。

仕様検討

こういう記法ができれば嬉しいが、Google Slide Themeをテンプレートとして利用するdeckでは、「これがヘッダーです/これがフッターです」というアンカーをGoogle Slide Themeでは持てないので、ヘッダー/フッターのみを共通で定義する仕様にはできなさそうという結論になった。

その代わり、テンプレート構文をサポートし、フロントマターに入れた変数がテンプレートに埋め込まれるようにすることとした。

つまり以下のとおりである。

---
variables:
  header: 'Header Content'
---

# {{ header }}

Issue/PR作成

Issue

issueは英語で作る文化のようなのでissueを作った。

実は一連の愚痴から仕様検討までのやり取りは社内のSlack上で行っていたので、「ここまでの内容を仕様提案のissueにまとめて」と 社内のAIエージェント に依頼して、出てきた内容を少しリファインして issueとして投稿 した。


こういう感じ

PR

Claude Codeに仕様を与えて書かせ、単体テストも書かせた。
状態等に依存しない仕様なので、割と書かせやすかったと思われる。

https://github.com/k1LoW/deck/pull/337

顛末

それなりに便利そうだったが、オーナーのk1LoWさんから以下のようなコメントをもらった。https://github.com/k1LoW/deck/issues/336#issuecomment-3170651382

Thanks for the suggestion!

I think your suggestion would be to incorporate a template engine into the deck.

If we incorporate a template engine, we would be asking for Placeholder escaping support for those who don't want it.
(Imagine, for example, creating a slide explaining this template syntax)

これは確かに。

I would especially like to know about the following

Are there any useful use cases other than titles and dates?

これに関しては、無いと思われる。MarpはHeader/Footerで事足りているのがそれを示していると思われる。

Are there any difficult use cases with "convert Markdown with another Htemplate engine tool (e.g., gomplate ) and then convert to a Google Slides presentation with deck?"

結局これでよいと思う。要するに単にそのワークフローを実装するのが大変だというだけだった。

なので後者の実装を手元でやるということで一件落着となった。なのでこのPRはマージされていない。

学び

AI時代のOSS開発はこのように、「こういうところがもっと使いやすくなるといいな」という会話や仕様検討の過程をコンテキストとして、issue作成とコーディング、テスト、PR作成がAIによりワークフローとして動くのだという体験をすることができた。

またポッと出の自分のサジェスチョンを真剣に検討してくださったコミッターの皆様には感謝。

これに懲りずに続けたいと思いました。

Discussion