SlideShare a Scribd company logo
ドキュメントの継続的改善
Sphinxを使いながら
株式会社アプトポッド テクニカルコンテンツディレクター
篠崎宗一郎
© aptpod Inc. All Rights Reserved. 1
2 0 2 3 / 0 7 / 1 3
自己紹介
2
© aptpod Inc. All Rights Reserved.
• 所属
• 株式会社アプトポッド https://www.aptpod.co.jp/
• 担当
• テクニカルコンテンツディレクター
• 参考テックブログ記事: 「ひとりドキュメント担当」 *の仕事
https://tech.aptpod.co.jp/entry/2021/12/20/070000
• 職歴
• 2001-2008 マニュアル制作会社 多言語制作コーディネーター
• 2010-2020 メーカー子会社 マニュアル制作部門 ライター、ディレクター
• 2020- 現職
* 「ひとり情シス」になぞらえたものです。
この発表の内容とゴール
© aptpod, Inc. All Rights Reserved. 3
• 内容
• Sphinxを使ったドキュメント制作事例の紹介
• ゴール
• 「Sphinxってこういうものなんだ」と思っていただく
• 「多機能で柔軟でいろいろできそうだな」と思っていただく
• 「自分の道具箱にも入れておこうかな」と思っていただく
目次
© aptpod, Inc. All Rights Reserved. 4
• 前置き: アプトポッドについて
• 1. Sphinxってどんなもの?
• 2. Sphinxを採用した理由
• 3. Sphinxの柔軟さを活用しながらカスタマイズ・改善
• まとめ
© aptpod, Inc. All Rights Reserved. 5
アプトポッドについて
アプトポッドについて
© aptpod, Inc. All Rights Reserved. 6
• 「高頻度データ」を「低遅延で」伝送するIoTの仕組みをつくっています
• データ取得デバイスから、サーバーソフトウェア、アプリケーションまで
• デバイスとサーバーの間をつなぐ独自プロトコル(iSCP)
• 可視化ダッシュボードも
アプトポッドの製品が実現する産業IoTシナリオ
© aptpod, Inc. All Rights Reserved. 7
例: 自動車からデータを取得
© aptpod, Inc. All Rights Reserved. 8
https://www.youtube.com/watch?v=vybSwUoDMcY&t=5s
© aptpod, Inc. All Rights Reserved. 9
• ハードウェアマニュアル
作っているドキュメント その1
PDF
↑ これらはすべてSphinxで制作
© aptpod, Inc. All Rights Reserved. 1 0
• ウェブアプリケーションの操作マニュアル
作っているドキュメント その2
PDF
HTML
↑ これらはすべてSphinxで制作
© aptpod, Inc. All Rights Reserved. 1 1
• 開発者向けガイド
作っているドキュメント その3
PDF
HTML
↑ これらはすべてSphinxで制作
© aptpod, Inc. All Rights Reserved. 1 2
1. Sphinxってどんなもの?
Sphinxとは
© aptpod, Inc. All Rights Reserved. 1 3
• documentation generator*1
• reStructuredText記法で書いたもの*2をPDFやHTML形式で出力す
るツール
*1 https://www.sphinx-doc.org/ja/master/usage/quickstart.html
*2 MySTをインストールするとMarkdownの利用も可能
画像
(png他)
PDF
HTML
LaTeX
設定
conf.py
テキスト
(reStructuredText)
Sphinxプロジェクト(ディレクトリ)
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 4
章レベル
========
これは本文です。 ``inline code`` です。
節レベル(章の下のレベル)
--------------------------
これは本文です。
項レベル(節の下のレベル)
~~~~~~~~~~~~~~~~~~~~~~~~~~
これは本文です。
見出しと本文
右側はHTMLに変換した場合の一例です。
設定によって見かけは異なります。
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 5
* 番号なしリスト
* 番号なしリスト
* 番号なしリスト
* 番号なしリスト
1. 番号付きリスト
2. 番号付きリスト
1. 番号付きリスト
2. 番号付きリスト
リスト
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 6
.. figure:: images/sample.png
図のサンプル
図
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 7
.. code-block:: json
{
"key1": 1,
"key2": 2
}
コードブロック
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 8
.. list-table::
:widths: 1 2 2
:header-rows: 1
* - 列ラベル
- 列ラベル
- 列ラベル
* - セル1-1
- セル1-2
- セル1-3
* - セル2-1
- セル2-2
- セル2-3
表の表現方法は他にもありますが、この
「list-table」を一番よく使っています。
表(list-tableの場合)
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 1 9
.. note::
この部分は「注釈」になります。
.. important::
この部分は「重要」になります。
.. warning::
この部分は「警告」になります。
注釈、警告等(admonition)
reStructuredText(Sphinx用)
© aptpod Inc. All Rights Reserved. 2 0
インストールの方法については、
:ref:`installation` を参照してください。
.. _installation:
インストール
----------------
インストールはこのように行います。
相互参照(リンク)
© aptpod, Inc. All Rights Reserved. 2 1
2. Sphinxを採用した理由
Sphinxを採用した理由 1
© aptpod Inc. All Rights Reserved. 2 2
• きれいな日本語PDFが作れる(LaTeX経由)
Sphinxを採用した理由 2
© aptpod Inc. All Rights Reserved. 2 3
• 翻訳ワークフローに対応
画像
(png他)
PDF
HTML
LaTeX
設定
conf.py
日本語テキスト
(reStructuredText)
Sphinxプロジェクト(ディレクトリ)
日英対訳POファイル
(Gettext PO)
日本語→英語の場合
Sphinxを採用した理由 3
© aptpod Inc. All Rights Reserved. 2 4
• 機能拡張や情報が豊富
• 機能拡張
• テーマ(HTML出力のテンプレート)
• 使い方についての情報
使い方についての情報
© aptpod Inc. All Rights Reserved. 2 5
• 公式ドキュメント
• https://www.sphinx-doc.org/ja/
• 書籍『Sphinxをはじめよう』
• https://www.oreilly.co.jp/books/9784873119830/
• ネット上にも情報は豊富
• Stack Overflowで [python-sphinx]タグが付いた質問は3600以上
Sphinxで作成した結果
© aptpod Inc. All Rights Reserved. 2 6
PDF
Sphinxで作成した結果
© aptpod Inc. All Rights Reserved. 2 7
HTML
© aptpod, Inc. All Rights Reserved. 2 8
3. Sphinxの柔軟さを活用しながら
カスタマイズ・改善
改善してきたことのうちいくつかをご紹介
© aptpod Inc. All Rights Reserved. 2 9
• A. PDFスタイルのカスタマイズ
• B. HTML化
• C. 検索エンジンMeilisearchの導入(HTML用)
Sphinxには、これ以外にも便利な機能はたくさんありますし、同様のことを実現するた
めのもっと良い方法もあるかもしれません。
ここで紹介する方法がすべてではないということをご了承ください。
A. PDF出力のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 0
• 表紙
• ヘッダー、フッター
• 目次のスタイル
• 章・節・項タイトルのスタイル
• 警告・注意などの囲みのスタイル
カスタマイズの入り口 設定ファイルconf.py
© aptpod Inc. All Rights Reserved. 3 1
画像
(png他)
PDF
LaTeX
設定
conf.py
テキスト
(reStructuredText)
Sphinxプロジェクト(ディレクトリ)
HTML
設定ファイルconf.py
© aptpod Inc. All Rights Reserved. 3 2
# -- Project information -----------
project = 'テストドキュメント'
copyright = '2023, my name'
author = 'my name'
release = 'v1.0'
# -- General configuration ----------
extensions = []
templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
language = 'ja'
# -- Options for HTML output ---------
html_theme = 'alabaster'
html_static_path = ['_static']
...以下略
PDF出力のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 3
• Sphinxでパラメーターが用意されているものはそれを変更
• ただし、設定可能なパラメーターは少ない
例:
latex_show_pagerefs = True
設定ファイルconf.pyに以下を追加
PDF出力のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 4
• latex_elementsのpreambleにLaTeXのコードを書く
latex_elements = {
'preamble': '<ここに書いたものは、LaTeXプリアンブルとして出力される>'
}
(または、外部ファイルに書いて読み込ませるように設定)
設定ファイルconf.pyに以下を追加
例1: 章番号のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 5
例1: 章番号のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 6
• latex_elementsのpreambleにLaTeXのコードを書く
latex_elements = {
'preamble': r'''
renewcommand{prechaptername}{}
renewcommand{postchaptername}{}
'''
}
設定ファイルconf.pyに以下を追加
例1: 章番号のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 7
例2: PDF表紙のカスタマイズ
© aptpod Inc. All Rights Reserved. 3 8
表紙の中身
© aptpod Inc. All Rights Reserved. 3 9
newcommand{sphinxmaketitle}{%
letsphinxrestorepageanchorsettingrelax
ifHy@pageanchordefsphinxrestorepageanchorsetting{Hy@pageanchortrue}fi
hypersetup{pageanchor=false}% avoid duplicate destination warnings
begin{titlepage}%
letfootnotesizesmall
letfootnoterulerelax
noindentrule{textwidth}{1pt}par
begingroup % for PDF information dictionary
defendgraf{ }defand{& }%
pdfstringdefDisableCommands{def{, }}% overwrite hyperref setup
hypersetup{pdfauthor={@author}, pdftitle={@title}}%
...続く
Sphinxに付属のLaTeXコマンド「sphinxmaketitle」
(デフォルトだとこのコマンドが使われるということがSphinxのドキュメントに書いてあ
ります)
例2: PDF表紙のカスタマイズ
© aptpod Inc. All Rights Reserved. 4 0
latex_elements = {
'preamble': r'''
makeatletter
newcommand{mysphinxmaketitle}{%
letsphinxrestorepageanchorsettingrelax
ifHy@pageanchordefsphinxrestorepageanchorsetting{Hy@pageanchortrue}fi
hypersetup{pageanchor=false}% avoid duplicate destination warnings
begin{titlepage}%
letfootnotesizesmall
letfootnoterulerelax
...省略...
}
makeatother
''',
'maketitle': r'mysphinxmaketitle'
}
表紙作成時には上記コマンドを使うようSphinxに指示
新しい表紙用コマンドを定義してLaTeXプリアンブルに入れる
設定ファイルconf.py
例2: PDF表紙のカスタマイズ
© aptpod Inc. All Rights Reserved. 4 1
望みのPDFスタイルに
© aptpod Inc. All Rights Reserved. 4 2
Word(過去の版) Sphinx
望みのPDFスタイルに
© aptpod Inc. All Rights Reserved. 4 3
Word(過去の版) Sphinx
LaTeXの世界
© aptpod Inc. All Rights Reserved. 4 4
• おすすめ書籍
B. HTML化
© aptpod Inc. All Rights Reserved. 4 5
• もともとSphinxは、HTML、PDF、ePubなどさまざまな出力ができる
• 基本的には、HTML出力するコマンド(make html)を実行するだけで
よい
使用テーマ
© aptpod Inc. All Rights Reserved. 4 6
• Read the Docs Sphinx Theme
使用テーマ
© aptpod Inc. All Rights Reserved. 4 7
• PyData Sphinx Theme
複数プロジェクトを統合
© aptpod Inc. All Rights Reserved. 4 8
• いくつかの冊子だったものを1つのサイトに統合
• そのうえで、複数のPDF分冊として出力するよう設定
Sphinx
Project A
統合したSphinx Project
Sphinx
Project B
Sphinx
Project C
アプリA説明書
PDF
アプリB説明書
PDF
アプリC説明書
PDF HTML
アプリA説明書
PDF
アプリB説明書
PDF
アプリC説明書
PDF
1つのプロジェクトで複数のPDFを出力する
© aptpod Inc. All Rights Reserved. 4 9
latex_documents = [
# (PDF出力対象の各ドキュメントroot, LaTeXファイル名, ..以下略)
('app-a/index', 'app-a.tex', ...),
('app-b/index', 'app-b.tex', ...),
('app-c/index', 'app-c.tex', ...),
]
設定ファイルconf.py
タブの表現
© aptpod Inc. All Rights Reserved. 5 0
• sphinx-tabsという拡張
• インストール
• 設定ファイルconf.pyに extensions = ['sphinx_tabs.tabs'] を指定
.. tabs::
.. tab:: Go
プロジェクトルートにて以下の...
.. tab:: Python
.....
.. tab:: Rust
.....
コードブロックのコピーボタン
© aptpod Inc. All Rights Reserved. 5 1
• sphinx-copybuttonという拡張
• インストール
• 設定ファイルconf.pyに extensions = ['sphinx_copybutton'] を指定
Googleアナリティクス導入
© aptpod Inc. All Rights Reserved. 5 2
Read the Docs Sphinx Themeや、PyData Sphinx Themeでは、設
定ファイルconf.pyにGoogleアナリティクスIDを設定するだけ
html_theme_options = {
'analytics_id': 'G-XXXXXXXXXX'
}
設定ファイルconf.py ( Read the Docs Sphinx Themeの場合)
C. 検索エンジンMeilisearchの導入(HTML用)
© aptpod Inc. All Rights Reserved. 5 3
• Meilisearchという全文検索エンジンを導入
参考: Vさんが公開されている記事
https://voluntas.medium.com/オンラインドキュメントと日本語全文検索-30cc38d7b1c3
Meilisearchを使うための準備1
© aptpod Inc. All Rights Reserved. 5 4
• 専用ツールでドキュメントをスクレイピングして、できたインデックス
をMeilisearchサーバーに送る
Meilisearchサーバー
docs-scraper
(Meilisearchの
専用スクレイピングツール)
インデックスを
アップロード
ページを取得
Meilisearchを使うための準備2
© aptpod Inc. All Rights Reserved. 5 5
• SphinxのHTMLテーマをカスタマイズする
• 検索ボックスを、Meilisearchが提供する docs-searchbar.js
(https://github.com/meilisearch/docs-searchbar.js) に差し替える
• 前ページの手順で作成したインデックスを使用するように指定する
Meilisearchサーバー
Sphinxテーマのなかで、
検索ボックスの部分を
差し替え
検索クエリ
結果
柔軟であるということ
© aptpod Inc. All Rights Reserved. 5 6
• カスタマイズが可能な個所がいくつもある
• 設定ファイルconf.pyでの設定
• 機能拡張の利用
• (HTML) テーマの一部を置き換え
• (HTML) CSS追加読み込み
• (PDF) LaTeXコードの追加(コマンド再定義など)
• などなど...
カスタマイズ情報の入り口
© aptpod Inc. All Rights Reserved. 5 7
• 設定
https://www.sphinx-doc.org/ja/master/usage/configuration.html
今後の課題として考えていること
© aptpod Inc. All Rights Reserved. 5 8
• ウェブサイトとして利用しやすい形に構造を整理
• HTMLページのスタイルの改善
• TMS(翻訳マネージメントシステム)の利用
© aptpod Inc. All Rights Reserved. 5 9
まとめ
まとめ
© aptpod, Inc. All Rights Reserved. 6 0
• Sphinxはとても便利
• PDFを(も)作成したい場合は特に。
• Sphinxは多機能
• 期待に応えてくれる。
• Sphinxは柔軟
• 設定やカスタマイズが可能な部分がいろいろなところに用意されているので、
少しずつ制作物を改善していくのにも向いている。

More Related Content

What's hot

DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
Yoshiki Hayama
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
 
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
Go入門
Go入門Go入門
Go入門
Takuya Ueda
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
 

What's hot (20)

DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Go入門
Go入門Go入門
Go入門
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 

Similar to ドキュメントの継続的改善―Sphinxを使いながら

ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
soishino
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こうKazufumi Ohkawa
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Takayuki Shimizukawa
 
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
Takayuki Shimizukawa
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
Takuya Iwatsuka
 
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjpSphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjpTakeshi Komiya
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpTakeshi Komiya
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01B
Kohei KaiGai
 
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
Takayuki Shimizukawa
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」Yoshiki Shibukawa
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
Yahoo!デベロッパーネットワーク
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
Nozomu KURASAWA
 
基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx
Yuji Naito
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
幸雄 村上
 
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーションソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーション
Toru Tamaki
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 

Similar to ドキュメントの継続的改善―Sphinxを使いながら (20)

ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
執筆中のPythonプロフェッショナルプログラミング第2版でsphinxを使っている話
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjpSphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01B
 
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
 
基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーションソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーション
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Firefox OS アプリ開発
Firefox OS アプリ開発Firefox OS アプリ開発
Firefox OS アプリ開発
 

Recently uploaded

ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 

Recently uploaded (9)

ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 

ドキュメントの継続的改善―Sphinxを使いながら

  • 2. 自己紹介 2 © aptpod Inc. All Rights Reserved. • 所属 • 株式会社アプトポッド https://www.aptpod.co.jp/ • 担当 • テクニカルコンテンツディレクター • 参考テックブログ記事: 「ひとりドキュメント担当」 *の仕事 https://tech.aptpod.co.jp/entry/2021/12/20/070000 • 職歴 • 2001-2008 マニュアル制作会社 多言語制作コーディネーター • 2010-2020 メーカー子会社 マニュアル制作部門 ライター、ディレクター • 2020- 現職 * 「ひとり情シス」になぞらえたものです。
  • 3. この発表の内容とゴール © aptpod, Inc. All Rights Reserved. 3 • 内容 • Sphinxを使ったドキュメント制作事例の紹介 • ゴール • 「Sphinxってこういうものなんだ」と思っていただく • 「多機能で柔軟でいろいろできそうだな」と思っていただく • 「自分の道具箱にも入れておこうかな」と思っていただく
  • 4. 目次 © aptpod, Inc. All Rights Reserved. 4 • 前置き: アプトポッドについて • 1. Sphinxってどんなもの? • 2. Sphinxを採用した理由 • 3. Sphinxの柔軟さを活用しながらカスタマイズ・改善 • まとめ
  • 5. © aptpod, Inc. All Rights Reserved. 5 アプトポッドについて
  • 6. アプトポッドについて © aptpod, Inc. All Rights Reserved. 6 • 「高頻度データ」を「低遅延で」伝送するIoTの仕組みをつくっています • データ取得デバイスから、サーバーソフトウェア、アプリケーションまで • デバイスとサーバーの間をつなぐ独自プロトコル(iSCP) • 可視化ダッシュボードも
  • 8. 例: 自動車からデータを取得 © aptpod, Inc. All Rights Reserved. 8 https://www.youtube.com/watch?v=vybSwUoDMcY&t=5s
  • 9. © aptpod, Inc. All Rights Reserved. 9 • ハードウェアマニュアル 作っているドキュメント その1 PDF ↑ これらはすべてSphinxで制作
  • 10. © aptpod, Inc. All Rights Reserved. 1 0 • ウェブアプリケーションの操作マニュアル 作っているドキュメント その2 PDF HTML ↑ これらはすべてSphinxで制作
  • 11. © aptpod, Inc. All Rights Reserved. 1 1 • 開発者向けガイド 作っているドキュメント その3 PDF HTML ↑ これらはすべてSphinxで制作
  • 12. © aptpod, Inc. All Rights Reserved. 1 2 1. Sphinxってどんなもの?
  • 13. Sphinxとは © aptpod, Inc. All Rights Reserved. 1 3 • documentation generator*1 • reStructuredText記法で書いたもの*2をPDFやHTML形式で出力す るツール *1 https://www.sphinx-doc.org/ja/master/usage/quickstart.html *2 MySTをインストールするとMarkdownの利用も可能 画像 (png他) PDF HTML LaTeX 設定 conf.py テキスト (reStructuredText) Sphinxプロジェクト(ディレクトリ)
  • 14. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 4 章レベル ======== これは本文です。 ``inline code`` です。 節レベル(章の下のレベル) -------------------------- これは本文です。 項レベル(節の下のレベル) ~~~~~~~~~~~~~~~~~~~~~~~~~~ これは本文です。 見出しと本文 右側はHTMLに変換した場合の一例です。 設定によって見かけは異なります。
  • 15. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 5 * 番号なしリスト * 番号なしリスト * 番号なしリスト * 番号なしリスト 1. 番号付きリスト 2. 番号付きリスト 1. 番号付きリスト 2. 番号付きリスト リスト
  • 16. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 6 .. figure:: images/sample.png 図のサンプル 図
  • 17. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 7 .. code-block:: json { "key1": 1, "key2": 2 } コードブロック
  • 18. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 8 .. list-table:: :widths: 1 2 2 :header-rows: 1 * - 列ラベル - 列ラベル - 列ラベル * - セル1-1 - セル1-2 - セル1-3 * - セル2-1 - セル2-2 - セル2-3 表の表現方法は他にもありますが、この 「list-table」を一番よく使っています。 表(list-tableの場合)
  • 19. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 1 9 .. note:: この部分は「注釈」になります。 .. important:: この部分は「重要」になります。 .. warning:: この部分は「警告」になります。 注釈、警告等(admonition)
  • 20. reStructuredText(Sphinx用) © aptpod Inc. All Rights Reserved. 2 0 インストールの方法については、 :ref:`installation` を参照してください。 .. _installation: インストール ---------------- インストールはこのように行います。 相互参照(リンク)
  • 21. © aptpod, Inc. All Rights Reserved. 2 1 2. Sphinxを採用した理由
  • 22. Sphinxを採用した理由 1 © aptpod Inc. All Rights Reserved. 2 2 • きれいな日本語PDFが作れる(LaTeX経由)
  • 23. Sphinxを採用した理由 2 © aptpod Inc. All Rights Reserved. 2 3 • 翻訳ワークフローに対応 画像 (png他) PDF HTML LaTeX 設定 conf.py 日本語テキスト (reStructuredText) Sphinxプロジェクト(ディレクトリ) 日英対訳POファイル (Gettext PO) 日本語→英語の場合
  • 24. Sphinxを採用した理由 3 © aptpod Inc. All Rights Reserved. 2 4 • 機能拡張や情報が豊富 • 機能拡張 • テーマ(HTML出力のテンプレート) • 使い方についての情報
  • 25. 使い方についての情報 © aptpod Inc. All Rights Reserved. 2 5 • 公式ドキュメント • https://www.sphinx-doc.org/ja/ • 書籍『Sphinxをはじめよう』 • https://www.oreilly.co.jp/books/9784873119830/ • ネット上にも情報は豊富 • Stack Overflowで [python-sphinx]タグが付いた質問は3600以上
  • 26. Sphinxで作成した結果 © aptpod Inc. All Rights Reserved. 2 6 PDF
  • 27. Sphinxで作成した結果 © aptpod Inc. All Rights Reserved. 2 7 HTML
  • 28. © aptpod, Inc. All Rights Reserved. 2 8 3. Sphinxの柔軟さを活用しながら カスタマイズ・改善
  • 29. 改善してきたことのうちいくつかをご紹介 © aptpod Inc. All Rights Reserved. 2 9 • A. PDFスタイルのカスタマイズ • B. HTML化 • C. 検索エンジンMeilisearchの導入(HTML用) Sphinxには、これ以外にも便利な機能はたくさんありますし、同様のことを実現するた めのもっと良い方法もあるかもしれません。 ここで紹介する方法がすべてではないということをご了承ください。
  • 30. A. PDF出力のカスタマイズ © aptpod Inc. All Rights Reserved. 3 0 • 表紙 • ヘッダー、フッター • 目次のスタイル • 章・節・項タイトルのスタイル • 警告・注意などの囲みのスタイル
  • 31. カスタマイズの入り口 設定ファイルconf.py © aptpod Inc. All Rights Reserved. 3 1 画像 (png他) PDF LaTeX 設定 conf.py テキスト (reStructuredText) Sphinxプロジェクト(ディレクトリ) HTML
  • 32. 設定ファイルconf.py © aptpod Inc. All Rights Reserved. 3 2 # -- Project information ----------- project = 'テストドキュメント' copyright = '2023, my name' author = 'my name' release = 'v1.0' # -- General configuration ---------- extensions = [] templates_path = ['_templates'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] language = 'ja' # -- Options for HTML output --------- html_theme = 'alabaster' html_static_path = ['_static'] ...以下略
  • 33. PDF出力のカスタマイズ © aptpod Inc. All Rights Reserved. 3 3 • Sphinxでパラメーターが用意されているものはそれを変更 • ただし、設定可能なパラメーターは少ない 例: latex_show_pagerefs = True 設定ファイルconf.pyに以下を追加
  • 34. PDF出力のカスタマイズ © aptpod Inc. All Rights Reserved. 3 4 • latex_elementsのpreambleにLaTeXのコードを書く latex_elements = { 'preamble': '<ここに書いたものは、LaTeXプリアンブルとして出力される>' } (または、外部ファイルに書いて読み込ませるように設定) 設定ファイルconf.pyに以下を追加
  • 35. 例1: 章番号のカスタマイズ © aptpod Inc. All Rights Reserved. 3 5
  • 36. 例1: 章番号のカスタマイズ © aptpod Inc. All Rights Reserved. 3 6 • latex_elementsのpreambleにLaTeXのコードを書く latex_elements = { 'preamble': r''' renewcommand{prechaptername}{} renewcommand{postchaptername}{} ''' } 設定ファイルconf.pyに以下を追加
  • 37. 例1: 章番号のカスタマイズ © aptpod Inc. All Rights Reserved. 3 7
  • 38. 例2: PDF表紙のカスタマイズ © aptpod Inc. All Rights Reserved. 3 8
  • 39. 表紙の中身 © aptpod Inc. All Rights Reserved. 3 9 newcommand{sphinxmaketitle}{% letsphinxrestorepageanchorsettingrelax ifHy@pageanchordefsphinxrestorepageanchorsetting{Hy@pageanchortrue}fi hypersetup{pageanchor=false}% avoid duplicate destination warnings begin{titlepage}% letfootnotesizesmall letfootnoterulerelax noindentrule{textwidth}{1pt}par begingroup % for PDF information dictionary defendgraf{ }defand{& }% pdfstringdefDisableCommands{def{, }}% overwrite hyperref setup hypersetup{pdfauthor={@author}, pdftitle={@title}}% ...続く Sphinxに付属のLaTeXコマンド「sphinxmaketitle」 (デフォルトだとこのコマンドが使われるということがSphinxのドキュメントに書いてあ ります)
  • 40. 例2: PDF表紙のカスタマイズ © aptpod Inc. All Rights Reserved. 4 0 latex_elements = { 'preamble': r''' makeatletter newcommand{mysphinxmaketitle}{% letsphinxrestorepageanchorsettingrelax ifHy@pageanchordefsphinxrestorepageanchorsetting{Hy@pageanchortrue}fi hypersetup{pageanchor=false}% avoid duplicate destination warnings begin{titlepage}% letfootnotesizesmall letfootnoterulerelax ...省略... } makeatother ''', 'maketitle': r'mysphinxmaketitle' } 表紙作成時には上記コマンドを使うようSphinxに指示 新しい表紙用コマンドを定義してLaTeXプリアンブルに入れる 設定ファイルconf.py
  • 41. 例2: PDF表紙のカスタマイズ © aptpod Inc. All Rights Reserved. 4 1
  • 42. 望みのPDFスタイルに © aptpod Inc. All Rights Reserved. 4 2 Word(過去の版) Sphinx
  • 43. 望みのPDFスタイルに © aptpod Inc. All Rights Reserved. 4 3 Word(過去の版) Sphinx
  • 44. LaTeXの世界 © aptpod Inc. All Rights Reserved. 4 4 • おすすめ書籍
  • 45. B. HTML化 © aptpod Inc. All Rights Reserved. 4 5 • もともとSphinxは、HTML、PDF、ePubなどさまざまな出力ができる • 基本的には、HTML出力するコマンド(make html)を実行するだけで よい
  • 46. 使用テーマ © aptpod Inc. All Rights Reserved. 4 6 • Read the Docs Sphinx Theme
  • 47. 使用テーマ © aptpod Inc. All Rights Reserved. 4 7 • PyData Sphinx Theme
  • 48. 複数プロジェクトを統合 © aptpod Inc. All Rights Reserved. 4 8 • いくつかの冊子だったものを1つのサイトに統合 • そのうえで、複数のPDF分冊として出力するよう設定 Sphinx Project A 統合したSphinx Project Sphinx Project B Sphinx Project C アプリA説明書 PDF アプリB説明書 PDF アプリC説明書 PDF HTML アプリA説明書 PDF アプリB説明書 PDF アプリC説明書 PDF
  • 49. 1つのプロジェクトで複数のPDFを出力する © aptpod Inc. All Rights Reserved. 4 9 latex_documents = [ # (PDF出力対象の各ドキュメントroot, LaTeXファイル名, ..以下略) ('app-a/index', 'app-a.tex', ...), ('app-b/index', 'app-b.tex', ...), ('app-c/index', 'app-c.tex', ...), ] 設定ファイルconf.py
  • 50. タブの表現 © aptpod Inc. All Rights Reserved. 5 0 • sphinx-tabsという拡張 • インストール • 設定ファイルconf.pyに extensions = ['sphinx_tabs.tabs'] を指定 .. tabs:: .. tab:: Go プロジェクトルートにて以下の... .. tab:: Python ..... .. tab:: Rust .....
  • 51. コードブロックのコピーボタン © aptpod Inc. All Rights Reserved. 5 1 • sphinx-copybuttonという拡張 • インストール • 設定ファイルconf.pyに extensions = ['sphinx_copybutton'] を指定
  • 52. Googleアナリティクス導入 © aptpod Inc. All Rights Reserved. 5 2 Read the Docs Sphinx Themeや、PyData Sphinx Themeでは、設 定ファイルconf.pyにGoogleアナリティクスIDを設定するだけ html_theme_options = { 'analytics_id': 'G-XXXXXXXXXX' } 設定ファイルconf.py ( Read the Docs Sphinx Themeの場合)
  • 53. C. 検索エンジンMeilisearchの導入(HTML用) © aptpod Inc. All Rights Reserved. 5 3 • Meilisearchという全文検索エンジンを導入 参考: Vさんが公開されている記事 https://voluntas.medium.com/オンラインドキュメントと日本語全文検索-30cc38d7b1c3
  • 54. Meilisearchを使うための準備1 © aptpod Inc. All Rights Reserved. 5 4 • 専用ツールでドキュメントをスクレイピングして、できたインデックス をMeilisearchサーバーに送る Meilisearchサーバー docs-scraper (Meilisearchの 専用スクレイピングツール) インデックスを アップロード ページを取得
  • 55. Meilisearchを使うための準備2 © aptpod Inc. All Rights Reserved. 5 5 • SphinxのHTMLテーマをカスタマイズする • 検索ボックスを、Meilisearchが提供する docs-searchbar.js (https://github.com/meilisearch/docs-searchbar.js) に差し替える • 前ページの手順で作成したインデックスを使用するように指定する Meilisearchサーバー Sphinxテーマのなかで、 検索ボックスの部分を 差し替え 検索クエリ 結果
  • 56. 柔軟であるということ © aptpod Inc. All Rights Reserved. 5 6 • カスタマイズが可能な個所がいくつもある • 設定ファイルconf.pyでの設定 • 機能拡張の利用 • (HTML) テーマの一部を置き換え • (HTML) CSS追加読み込み • (PDF) LaTeXコードの追加(コマンド再定義など) • などなど...
  • 57. カスタマイズ情報の入り口 © aptpod Inc. All Rights Reserved. 5 7 • 設定 https://www.sphinx-doc.org/ja/master/usage/configuration.html
  • 58. 今後の課題として考えていること © aptpod Inc. All Rights Reserved. 5 8 • ウェブサイトとして利用しやすい形に構造を整理 • HTMLページのスタイルの改善 • TMS(翻訳マネージメントシステム)の利用
  • 59. © aptpod Inc. All Rights Reserved. 5 9 まとめ
  • 60. まとめ © aptpod, Inc. All Rights Reserved. 6 0 • Sphinxはとても便利 • PDFを(も)作成したい場合は特に。 • Sphinxは多機能 • 期待に応えてくれる。 • Sphinxは柔軟 • 設定やカスタマイズが可能な部分がいろいろなところに用意されているので、 少しずつ制作物を改善していくのにも向いている。