deckがv1になった

言いたいことはたくさんあるような気がするのですが、まずはアップデート報告です。

deckはv1に到達しました!!!!!

このv1について言いたいことはこちらです。

id:Songmu さん*1、ありがとうございました!!楽しかったです!

v1 までのアップデート

では、前回のエントリからの機能追加について紹介していきたいと思います。あまりに溜めすぎたため、Claude Codeの力を借りています。

画像・メディア関連機能

画像埋め込みサポート (v0.23.0)

Markdownの画像埋め込みに対応しました。画像をGoogle Drive経由でアップロードしてそれをGoogle Slidesで使用しています。

![説明テキスト](path/to/image.png)

コードブロックの画像変換 (v0.24.0)

コードブロックを自動的に画像に変換するための外部コマンドサポート機能を追加しました。 コードブロックを外部コマンド経由で画像化してそれをアップロードする機能ですね。

# Mermaidの画像を追加したり
$ deck apply -c 'mmdc -i - -o {{output}} --quiet' -i xxxxxXXXXxxxxxXXXXxxxxxxxxxx deck.md
# シンタックスハイライト付きのコード画像にしたり
$ deck apply -c 'silicon -l {{lang == "" ? "md" : lang}} -o {{output}}' -i xxxxxXXXXxxxxxXXXXxxxxxxxxxx deck.md

画像プレースホルダーサポート (v0.43.0) by id:Songmu

画像はコードブロックを含めて、単純にプレゼンテーションページにアップロードするだけだったのですが。 レイアウト内に画像プレースホルダがある場合はそれを使用するようになっています。

画像アップロード効率化 (v1.0.0) by id:Songmu

画像アップロードも当初と比べるとかなり効率化されています。 v1.0.0の改善では画像アップロードが約15%高速化されました。

Markdown拡張機能

YAMLフロントマターサポート (v0.31.0) by id:Songmu

Markdownファイルの先頭にYAMLフロントマターを記述できるようになりました。

---
presentationID: xxxxxXXXXxxxxxXXXXxxxxxxxxxx
title: Talk about deck
---

# First Slide

Content...

現在

  • タイトル(title
  • プレゼンテーションID(presentationID
  • 改行設定(breaks
  • 条件付きデフォルト適用設定(defaults

に対応しています。

オートリンクサポート (v0.32.0) by id:Songmu

角括弧で囲んだURLが自動的にリンクになります。

詳細は <https://example.com> を参照してください。

ブロッククォートサポート (v0.40.0)

ブロッククォートを独立したShapeでGoogle Slidesに追加することができるようになりました。そしてそのブロッククォートのShapeには style レイアウト経由でスタイリングできます。

> これは引用文です。
> 複数行にまたがることもできます。

ハードラインブレークサポート (v0.41.0) by id:Songmu

行末のスペース2つでの改行が可能になりました。ここらへんはCommonMarkに準拠していく流れの1つで、他にも細かく調整が入っています。

ちなみに、フロントマターに break:true を記述するとMarkdown内の行末改行がそのまま改行になります。

HTML要素スタイリング (v0.42.0) by id:Songmu

HTML要素を使用したインラインスタイリングが可能になりました。

これは<strong>強調</strong>されたテキストです。
<kbd>Ctrl+C</kbd>でコピーできます。
<q>引用文</q><cite>出典</cite>から引用。

ここらへんもboldやitalicと同様にテーマの style レイアウトの設定でスタイリングできるようになっています。

レイアウト・スタイリング機能

動的見出しレベル (v0.32.0) by id:Songmu

タイトル検出のための見出しレベルを動的に設定できるようにしました。

Markdownのページ単位で、 h1 が使われていれば h1Google Slides側のページタイトルとして使用、もし h1 ではなく h2 から使われていれば h2 をページタイトルとして使用するようになっています。

見出しへのインラインスタイル適用 (v0.44.0) by id:Songmu

見出しにもインラインスタイルを適用できるようになっています。

条件付きデフォルト設定(v1.0.0)

CEL(Common Expression Language)を使用した条件付きレイアウト設定が可能になりました。フロントマターに以下のような設定を記述して、レイアウトやスキップ設定が動的に適用されるようにできます。

---
defaults:
  - if: page == 1
    layout: title
  - if: titles.size() == 1 && headings[2].size() == 1
    layout: section-purple
  - if: bodies[0].contains("TODO")
    skip: true
  - if: page > pageTotal - 3
    freeze: true
---

パフォーマンス改善

いろいろありすぎるので割愛します。 だいたい id:Songmu さんがやりました。

その他

ページ無視機能 (v0.36.0) by id:Songmu

Markdown側の特定のページを無視する設定コメントが追加されました。

<!-- {"ignore":true"} -->
このページは無視されます

スライドスキップ機能 (v0.37.0)

プレゼンテーション時にスキップするスライドを設定できるようになりました。

<!-- {"skip":true"} -->
このスライドはプレゼンテーション時にスキップされます

Markdownファイルサポート in new コマンド (v0.38.0) by id:Songmu

deck newコマンドでMarkdownファイルをサポートするようになりました。

deck new presentation.md

エラーレポート機能 (v0.30.0)

deckが失敗した場合にerror.jsonファイルが作成されるようになりました。バグ報告用です。


以上!!

まあ既にv1.3.0なわけですが、いろいろ改善しました。

宣伝

そんなdeck v1に大貢献していただいた id:Songmu さんのポッドキャストにお邪魔しています。

oss4.fun

私は通常運転ですが、いろいろな話があって面白いと思います。私は話していて面白かったです。是非。

*1:はてなIDはケースセンシティブ