脆弱性診断の現場から 14

スライドも「コード」として管理する。MarpとCI、AIで実現する、高品質で持続可能な資料作成

第14回の今回は、Marpでスライドを「コード」として管理し、CIによる自動チェックとAIとの壁打ちで品質を高める制作プロセスについて解説します。

小竹 泰一

6:30

株式会社ステラセキュリティ代表の小竹(@tkmru)です。弊社では、登壇資料などのスライドを作成する機会が多くあります。

直近ではAVTOKYO 2025で登壇していました。

AVTOKYOは渋谷のクラブで行われるカンファレンス(飲み会)です

しかし、一般的なスライド作成ソフトでは「バージョン管理が難しい」「テキストを対象としたチェックツールを使えない」といった、ドキュメント管理上の課題を抱えていました。

そこで、弊社ではMarpを用いて、スライドを「コード」のように管理・運用する仕組みを構築しました。本記事では、その背景と、CI、AIをパートナーとした制作プロセスについてご紹介します。

なぜMarpを使うのか?

Marpは、Markdown形式で記述したテキストを、スライドへ変換するツールです。Marpを選んだ理由は、テキストベースのツールである点です。テキストであれば、Gitでのバージョン管理が可能になり、差分が明確になります。

何より、私たちの慣れ親しんだ開発フロー(Pull Requestベースの運用)にスライド作成を統合できることが、品質管理の観点から重要でした。

GitHub - marp-team/marp: The entrance repository of Markdown presentation ecosystem
https://github.com/marp-team/marp

AIとの「壁打ち」で構成を磨く

スライド作成やブログ記事の執筆において最も時間がかかるのは、章構成を考える段階です。ここで大きな助けとなったのが、AI(Geminiなど)との対話でした。AIに丸投げしてスライドや文章を自動生成するのではなく、「論理の妥当性を検証するパートナー」として活用しています。

* 「技術的な概念を、初学者の方に伝えるにはどう順序立てるべきか?」
* 「全体のストーリーラインに論理的な飛躍はないか?」
* 「批判的に検討した場合、論理的な飛躍や反論の余地はないか?」

このようにAIと対話しながら、Markdownをブラッシュアップしていくプロセスは有意義でした。ページ(n枚目)という概念がないテキスト形式だからこそ、AIへのプロンプトもシンプルに保て、意図した通りの構成案をスピーディに得られます。

CIでスライドの品質を「テスト」する

Marpを採用した最大の恩恵は、GitHub Actions上で自然言語に対するLinterを動かせるようになったことです。私たちは以下のツールをCIに組み込んでいます。これにより、助詞(てにをは)の誤用や表記ゆれの検出が自動化されました。

その結果、人間によるレビューでは「内容の専門性」や「ストーリーの妥当性」といった、より本質的な議論に集中できる環境が整いました。

typos

typosは、Rust製のスペルチェッカーです。

●GitHub - create-ci/typos: Source code spell checker
https://github.com/crate-ci/typos

元々はコード内の識別子やコメントを対象としたツールですが、テキストファイルの誤字脱字検出にも使用できます。セキュリティの資料では、「Vulnerability」や「Infrastructure」といった文字数が多い、複雑な英単語を多用します。これらを「Vunlerability」のように打ち間違えてしまうと、資料全体の信頼性が損なわれかねません。技術用語の綴りミスは、スライドの信頼性を損なう大きな要因になるため、typosを使ってチェックしています。

textlint

textlintは、自然言語に対するLinterで、日本語に対応したプラグインが多く存在します。

GitHub - textlint/textlint: textlint is the pluggable linter for natural language text.
https://github.com/textlint/textlint

「です・ます」調の混在、二重否定、冗長な表現などをルールに基づいて検知します。正確な情報伝達が求められるセキュリティベンダとして、文章の揺らぎを最小限に抑えることは大切です。Linterによる形式的なチェックを自動化することで、人間によるレビューでは「内容の専門性」や「ストーリーの妥当性」といった、より本質的な内容の調整に集中できる環境が整いました。

GeminiのGem「編集者と校正役」による仕上げ

Linterによる形式的なチェックに加え、GeminiのGemにデフォルトで存在する「編集者と校正役」を活用しています。

このGemは、単なる誤字脱字の指摘を超えて、文脈に応じた表現の洗練や、冗長な表現の改善を得意としています。AIを用いて構成を磨くだけでなく、AIに最終的な成果物となるPDFの内容を読み込ませて「読者視点での読みやすさ」をレビューしてもらうことも可能です。

MarkdownファイルとPDFファイルの両面から、AIによる校正を挟むことで、人間によるレビューでは気づきにくい細かなニュアンスの違和感まで解消しています。

実際の資料への適用と公開

この運用フローを実際に適用して作成したのが、弊社の会社紹介資料です。

一見すると一般的なスライドに見えるかもしれませんが、すべてMarkdownとCSSから生成されています。修正が必要になれば、Issueを起票し、PRを送り、CIを通過させてからマージされます。

資料作成のプロセスは、今や弊社にとって「エンジニアリング」の一部です。

おわりに

私たちは、提供するサービスの品質のみならず、アウトプットするあらゆる情報の「正確性」にこだわりたいと考えています。私たちが日々向き合っている技術検証や脆弱性診断という仕事は、何よりも正確性と信頼性が求められるものだからです。

こうした「自動化による品質向上」や「知見の言語化」という文化は、弊社のGitHubにおけるOSS活動にも共通しています。GitHubでは、ペンテスターの生産性を高めるツールを多数OSSとして公開しています。

●Sterra Security Co.,Ltd.
https://github.com/sterrasec

「専門的な知見を、再現可能な形でコミュニティに還元すること」は、弊社のアイデンティティの1つです。スライド1つをとっても、ただ作成するのではなく「より正確に、より堅牢に」するための仕組みを整える、こうした細部にまでエンジニアリングの精神を適用し続けていきます。

※本記事は、株式会社ステラセキュリティが配信しているコンテンツ「Sterra Security Tech Blog」からの転載です。
元記事についてはこちらをご覧ください。

この記事のキーワード

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored