<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>プレゼン on @johtaniの日記 3rd</title>
    <link>https://blog.johtani.info/tags/%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3/</link>
    <description>Recent content in プレゼン on @johtaniの日記 3rd</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Fri, 31 Jul 2026 07:54:20 +0000</lastBuildDate><atom:link href="https://blog.johtani.info/tags/%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>プレゼン公開をブログの仕組みに含めるようにした話</title>
      <link>https://blog.johtani.info/blog/2026/07/31/presentations/</link>
      <pubDate>Fri, 31 Jul 2026 07:54:20 +0000</pubDate>
      
      <guid>https://blog.johtani.info/blog/2026/07/31/presentations/</guid>
      <description>&lt;p&gt;全然ブログ書いてなかったですね。。。&lt;/p&gt;
&lt;p&gt;2月にやってた内容なんですが、忘れないように書き残しておこうかなと。
プレゼンの公開には、&lt;a href=&#34;https://noti.st/johtani&#34;&gt;noti.st&lt;/a&gt;を使っていました。&lt;/p&gt;
&lt;p&gt;そんなところに元同僚がこんなブログを書いてました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;全然ブログ書いてなかったですね。。。&lt;/p&gt;
&lt;p&gt;2月にやってた内容なんですが、忘れないように書き残しておこうかなと。
プレゼンの公開には、&lt;a href=&#34;https://noti.st/johtani&#34;&gt;noti.st&lt;/a&gt;を使っていました。&lt;/p&gt;
&lt;p&gt;そんなところに元同僚がこんなブログを書いてました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://david.pilato.fr/posts/2026-01-10-13-years-migrating-to-hugo-with-cursor/&#34;&gt;🎂 13 years： Migrating my speaker page with AI | David Pilato&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;おなじく、noti.stを使っていたのですが、コーディングエージェントを使って作業して、自分のブログに移行したと。&lt;/p&gt;
&lt;p&gt;noti.stは有料サービスなんですが、最近あまり外向けでしゃべることもなくなっているのにサブスクしてました。
コーディングエージェントを触ってみるいい機会になりそうだな？というのもあって、自分もチャレンジしてみることに。&lt;/p&gt;
&lt;p&gt;実際に出来上がった&lt;a href=&#34;https://blog.johtani.info/presentation/&#34;&gt;プレゼンの一覧はこちら&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;私のブログサイトはHugoを使ってビルドしたものをGitHub Pagesで公開しています。
今回Claude Codeに作ってもらったのは次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;noti.stからPDFをダウンロードしてHugo用のmdファイルを作るスクリプト&lt;/li&gt;
&lt;li&gt;PDFからスライドコンテンツからHugo用のmdファイルを作るスクリプト&lt;/li&gt;
&lt;li&gt;SpeakerDeckに公開しているスライドをiframe embedのHugo用mdファイルを作るスクリプト&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;それぞれがPythonスクリプトになっています。
また、Hugo向けにpresentationというパスでスライドを公開するためのテンプレートなども作ってもらいました。&lt;/p&gt;
&lt;h2 id=&#34;notistのスライドたち&#34;&gt;noti.stのスライドたち&lt;/h2&gt;
&lt;p&gt;noti.stにPDFでアップロードしていました。
ダウンロードもできるようになっています。
また、noti.stにはいつのスライドで、どのイベントでしゃべったのか？スライドの簡単な概要なども入力してあります。&lt;/p&gt;
&lt;p&gt;ということで、スライドのタイトル、日付をダウンロード時に取得してプレゼンページのパスやタイトルに利用できるようにしてもらいました。
また、スライドを作るときにはリンクなどを埋め込んでいるのですが、PDFにもこの情報が入っています。
これらも抜き出して、スライドを表示するページに参考リンクとして表示できるようにしてあります。&lt;/p&gt;
&lt;p&gt;PDFから画像としてスライドを1枚ずつ抜き出しつつ、pngに変換したものを生成しています。
画像ファイルはそれなりの枚数でサイズも大きくなるため、スライドのPDFと画像ファイルだけGit LFSで管理する形にしてもらっています。&lt;/p&gt;
&lt;p&gt;スライドの公開ページでは、ページめくりのタイプのビューアと一覧ですべてのスライドを閲覧できる2種類を作ってあります。
コーディングエージェントにお願いすればやってくれるの本当に助かりますよね。。。
Git LFSの操作もやってくれるし。&lt;/p&gt;
&lt;h2 id=&#34;今後のスライド用に処理の切り出し&#34;&gt;今後のスライド用に処理の切り出し&lt;/h2&gt;
&lt;p&gt;また、今後もスライドを作って公開する場合はPDFで作成する予定です。
ということで、noti.stの処理のPDFから生成するところだけを切り出したスクリプトも作ってもらいました。
この仕組みに変更した後にスライドを作るタイミングがないためまだこれを試してはいないですが。。。&lt;/p&gt;
&lt;h2 id=&#34;speakerdeckはiframe-embed&#34;&gt;SpeakerDeckはiframe embed&lt;/h2&gt;
&lt;p&gt;せっかくなので、SpeakerDeckで公開しているスライドも掲載してしまおうと思い相談したところ、
SpeakerDeckはiframe embedで取り込むことができそうだということで、PDFから生成するのではない形にしてもらいました。&lt;/p&gt;
&lt;p&gt;なので、&lt;a href=&#34;https://blog.johtani.info/presentation/2014/lucenetori-ben-yu-falsejian-suo/&#34;&gt;古いスライドのページ&lt;/a&gt;についてはビューアがちょっとおしゃれです。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;2月にやってた作業についてメモを残す程度に思い出しながら書いてみました。
最初はClaude Codeと壁打ちをしながらどうするのがいいかというのを詰めていき、大体まとまったところで、Issueを作ってそれをもとに作業をやってもらう形でやっています。
いったんページめくりのものが出来上がってから、参考リンクを抜き出してみたり、一覧の仕組みも追加してもらったりしました。&lt;/p&gt;
&lt;p&gt;忘れないように、作ったスクリプトやディレクトリ構成、Git LFSなどに関してはメモを作ってもらっています（すごい便利）。
ちなみに、プレゼンページを作る前に、Hugoの環境をdevcontainer化してほかの環境でも楽に再現できるようにしたり、Hugoのバージョンやテーマの最新化などもやっていました。気が向いたらその辺も書くかも？（たぶん書かない。。。）&lt;/p&gt;
</content:encoded>
    </item>
    
  </channel>
</rss>
