何が起きたか
ブログ著者Martin Lyskが、Excalidrawで作成した図表をエクスポートする手動作業を完全に自動化する仕組みを構築した。従来は1回のエクスポートに約45秒かかっていたが、GitHub Actionsとexcalirender を活用することで、Excalidrawファイルの更新を検出し自動でSVGをライト/ダークモード両対応で生成・コミットされる仕組みを実装。図表と テキストの相互修正サイクルを大幅に加速させた。
背景と経緯
Lyskがブログ執筆を開始した際、技術的な説明に使用する図表と本文テキストの相互依存性に直面した。図表の微調整でテキストが書きやすくなり、逆にテキスト修正で図表の情報量調整が必要になるという繰り返しが発生。その際にExcalidrawの手動エクスポートプロセスが大きなボトルネックになっていた。毎回、フレームを選択し、ライトモード/ダークモードそれぞれエクスポートし、ファイル名を付与する手順を踏む必要があり、特にフレーム境界を越えたラベル修正が入ると作業がリセットされてしまう状態が続いていた。
技術的な仕組み
実装されたGitHub Actionsワークフローは以下の流れで動作する:
- 変更検出:pushまたはPull Request時にgit diffコマンドで変更されたExcalidrawファイル(.excalidraw)を検出
- フレーム抽出:jq コマンドでExcalidrawファイル内の「frame」要素を抽出し、フレーム名一覧を取得
- SVG生成:excalidraw を用いて各フレームをライトモード/ダークモード両方でエクスポート。ファイル名は「{フレーム名}-light.svg」「{フレーム名}-dark.svg」形式で自動生成
- 自動コミット:生成されたSVGファイルを自動でGitにコミット
処理は変更があったファイルのみに対象を限定することで、不要な処理を削減。Excalidraw側でフレーム名に「export_」プレフィックスを付与することで、エクスポート対象を明示的に指定できる設計。
ワークフロー活用のメリット
- 時間削減:45秒/回の手作業が完全に不要に
- 品質保証:ライト/ダークモード両対応が自動で保証される
- 修正サイクル加速:図表修正→テキスト修正の作業サイクルがスムーズに
- 一貫性維持:ファイル名の命名規則が自動で統一される
- 差分追跡:生成されたSVGがGitに記録されるため、図表の変更履歴が明確
試してみるには
GitHub Repositoryにこのワークフロー設定を導入するには:
.github/workflows/export-frames.yml ファイルを作成
- 上記の「Export Excalidraw Frames」アクションコードを貼付
- Excalidrawで図表を作成する際、フレーム名を設定(例:「architecture」→「architecture-light.svg」「architecture-dark.svg」に自動生成)
- Excalidrawファイルをコミット・プッシュするとGitHub Actionsが自動実行
- 数秒後にSVGファイルが自動生成・コミットされて完了
excalirender のインストールはワークフロー内で自動実行されるため、ローカル環境でのセットアップは不要。
参考リンク
この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。
よくある質問
Q. Excalidrawのフレームとは何ですか?
Excalidraw内で複数の図表要素を1つのグループとして管理できる機能。フレーム単位でエクスポート可能にすることで、1つのファイルから複数の図表を個別に抽出できます。
Q. excalirender とは何ですか?
ExcalidrawファイルをSVG形式に変換するツール。このワークフローではコマンドラインでフレーム単位のエクスポートを実行するために使用されています。
Q. ライトモード/ダークモード対応は自動で行われますか?
はい。GitHub Actionsワークフロー内でexcalirender を用いてライトモード/ダークモード両方でSVGを自動生成します。ファイル名は「{フレーム名}-light.svg」「{フレーム名}-dark.svg」形式で自動生成されます。
Q. 変更されていないExcalidrawファイルの図表も再生成されますか?
いいえ。git diff コマンドで変更があったファイルのみを検出するため、未修正のファイルはスキップされます。
Q. 既存のブログにこの仕組みを導入する場合、どのような準備が必要ですか?
GitHubを使用していれば、.github/workflows/ ディレクトリにワークフロー設定ファイルを追加するだけです。excalirender のインストールはワークフロー内で自動実行されるため、ローカル環境での事前準備は不要です。