July Tech Festa 2021 winterで発表した資料のPDF版です。 この資料はHTMLプレゼンテーションがベースのため、最新ではない可能性があります。 HTML版はこちら
プレゼン?それもSphinxで出来るよ-ドキュメントツールSphinxのちょっと変わった利用法-Date: 2021/1/24Author:Event:Hashtag:Kazuya TakeiJuly Tech Festa 2021 winter#JTF2021w_d
View Slide
イントロ🟦 >🟦 >🟦
CfPより推しテク=Sphinx 枠ですドキュメンテーション作成や技術書執筆にも使えるドキュメンテーションツール、Sphinx。 単純なHTML生成としてだけではなく、プレゼンテーションにも使ってみませんか?Sphinxにおけるプレゼンテーションの事例を追いつつ、自作ライブラリの紹介などを行いたいと思います。
自己紹介Kazuya TakeiNIJIBOX Co., Ltdサーバーサイドエンジニアアーキテクト@attakei as 雑食系エンジニアand moreTwitterGitHub
自己紹介July Tech Festa2018: WebUSBによって広がる、NFCを取り扱う世界2020: Web制作において、プレビューにあえてCloudRun(とFirebase)を使う2021w: プレゼン?それもSphinxで出来るよ (New!)
注意事項1. 今回は、個人エンジニアとしての推しテク紹介です。この推しテクは自身が社内用にも使ってたりしますが、自分しか使ってません。2. スライド書いてたら、ほとんどコードが出てきませんでした。
主に話すことゴール:「Sphinxでプレゼンテーションができる」Sphinxと普段の役割SphinxとプレゼンテーションSphinxとReveal.js
Sphinxと普段の役割➡ >🟦 >🟦
Sphinx3行で複数の出力形式に対応した拡張性の高いPython製ドキュメンテーションビルダー
ドキュメンテーションビルダードキュメントのソースからドキュメント間の相互参照階層構造の構築ソースコードハイライトetcを行い、ドキュメント全体を組み立てるSOURCES Sphinx DOCUMENTATION
Sphinxが取り扱うソースreStructuredTextMarkdown(etc).rst.mdSphinx DOCUMENTATION
Sphinxが取り扱うビルド先HTMLePubPDF(LaTex)man(etc)SOURCES(.md , .rst) Sphinx HTML,EPUBPDF
Sphinxを使ったサイトいっぱいある... Python本体... Python製Webアプリケーションフレームワーク... Python製の数値計算ライブラリ...その他、PythonパッケージいっぱいPython documentationDjango documentationNumPy Manual
Sphinxを使ったサイトまだまだある... Python製の構成管理ツール... Python製のインスタンス初期設定ツール... PHP製のデータベース操作WebアプリAnsible documentationcloud-init DocumentationphpMyAdmin documentation
Sphinxを使ったサイトまだまだある... 電子書籍管理ツール... Linux向けアプリケーションパッケージャー... 名前の通りcalibre User ManualFlatpakUbuntu packaging guide
Sphinxを使った書籍(書籍執筆のどこかの工程でSphinxを使っているもの)Go言語による並行処理Pythonプロフェッショナルプログラミング第3版独学プログラマーエキスパートPythonプログラミング改訂2版仕事ではじめる機械学習
-> NEXT ->
Sphinxとプレゼンテーション☑ >➡ >🟦… 対象者:プレゼン系ソフトウェアを使いたがらない方 /プレゼン資料もGit管理してみたい方
プレゼン系ソフトウェアって?いわゆるこの辺を指しますMicrosoft PowerPointKeynoteGoogle スライド
「プレゼン系ソフト」を使わずにプレゼンをするHTMLでプレゼンPDFでプレゼンUnityでプレゼンターミナルでTelnet接続したらプレゼン
HTMLでプレゼンすると何がいいか主なメリットOSを選ばないファイルをGit管理しやすい(デメリット)公開・共有にひと手間かかるブラウザは選ぶ
HTMLでプレゼンすると何がいいか1:OSを選ばないブラウザベースの表示なので、端末も選ばないPCタブレットスマホただしブラウザ依存の実装した場合は要注意Chromeは新しすぎIEは忘れる
HTMLでプレゼンすると何がいいか2:ファイルをGit管理しやすいリソースが分離した状態なので、差し替えなどが比較的容易差分がわかりやすい(別テキストからHTMLを生成する場合に顕著)CI/CDしやすい(GitHub Pagesなど)
Sphinxが取り扱うビルド先(再掲)HTMLePubPDFman(etc)
Sphinxが取り扱うビルド先(再掲)HTML <= こっちePubPDFman(etc)
「SphinxでHTMLプレゼンテーション」を実現するには基本的には、なにかしらのHTMLプレゼン用ライブラリを準備してHTML+JSを出力するテーマ・拡張を用意する
HTMLプレゼンテーション用ライブラリGoogle I/O 2012 slideGo talksImpress.jsReveal.jsRemark(more...)
HTMLプレゼンを使うためのSphinx拡張集hieroglyphsphinxjp.themes.gophersphinxjp.themes.impressjssphinxjp.themes.reveajssphinxjp.themes.s6sphinx-revealjs
-> NEXT ->ここからのメインは sphinx-revealjs
SphinxとReveal.js☑ > ☑ >➡
Reveal.js多機能な、HTMLプレゼンテーション用のフレームワークhttp://revealjs.com/
こんなことができる縦横遷移による、ネストされたセクションの表現様々なページ遷移アニメーションPDFエクスポート機能プラグインによる拡張数式サポートシンタックスハイライトスピーカーノートMarkdownソースの直接変換
HTMLプレゼンを使うためのSphinx拡張集(再掲)hieroglyphsphinxjp.themes.gophersphinxjp.themes.impressjssphinxjp.themes.reveajssphinxjp.themes.s6sphinx-revealjs <= 作った
sphinx-revealjs作りました(最近、ver1.0に)Markdownプラグインに近い感覚で、RSTをReveal.jsプレゼンにする拡張基本機能は揃ってる...はず階層によるネストされたセクションテーマの切り替えプラグインの呼び出しReveal.jsと競合しない範囲で、既存のSphinx拡張を使い回せるhttps://github.com/attakei/sphinx-revealjs
sphinx-revealjsこのスライド1枚目のサンプル(ソース)================================プレゼン?それもSphinxで出来るよ================================-ドキュメントツールSphinxのちょっと変わった利用法-:Date: 2021/1/24:Author: `Kazuya Takei `_:Event: `July Tech Festa 2021 winter `_:Hashtag: `#jtf2021w_d `_.. include:: _sections/introduction.rst
sphinx-revealjsこのスライド1枚目のサンプル(HTML)プレゼン?それもSphinxで出来るよ-ドキュメントツールSphinxのちょっと変わった利用法-Date2021/1/24AuthorEventHashtag
sphinx-revealjsデモをどうぞ=> https://attakei.github.io/sphinx-revealjs
sphinx-revealjsデモから一部抜粋===============sphinx-revealjs===============:Based version: 1.0.0:Released: 2020-12-27Overview========What is this?-------------Sphinx extension to build Revealjs presentaFeatures--------
もう一歩変わった使い方「ドキュメンテーション」と「プレゼンテーション」をまとめて作成Qiita記事のスライドモード的な使い方https://github.com/attakei-sandbox/sphinx-revealjs-demo
モチベーションの話欲しかったけど、軽く探して見つからなかったプラグイン開発コア部分は基本的にSphinxに任せてる「Reveal.jsとしてHTML出力させる」ためのことだけ実装すれば良いドッグフーディングの素材自分のLTのお供にPythonパッケージングの素体に
発表してみたある程度まともに動いたところで、SphinxCon JPに飛び込んでLTしてみました
発表してみたこれ以降、細かい改良を進めつつ、自分の発表のベースとして積極的に利用していますPyCon JP 2019July Tech Festa 2020Pycon JP 2020July Tech Festa 2021 winter=> 世界が広がっていく感じする
嬉しいこと地味にスターが増えてる海外のイベントで使われてた(最近だと国内でも)Issue/PRをもらえてて、英語の勉強になってるおまけ:これがきっかけで、Sphinxハッカソンに積極参加するように=> 他の人の世界も少し広がっていく感じする
まとめ☑ > ☑ > ☑
プレゼンはSphinxで出来ますSphinxはドキュメンテーションビルダーだからこそ、プレゼンテーションもできます推しテクで色々やってたら、ちょっと自分の世界が広がりました他の人の世界もちょっと広がったみたいですsphinx-revealjsに興味がある方は、お試しとフィードバックお願いします🙇
参考情報集Sphinx関連Sphinx サイトSphinx 日本ユーザー会Sphinx テーマ集
参考情報集sphinx-revealjs関連GitHubリポジトリドキュメントプレゼンテーションデモ変換サンプル
参考情報集その他ソースだけでなく、CI/CDのサンプルにどうぞこのスライドのソースNIJIBOX Co., Ltd