コンテンツにスキップ

ドキュメントの書き方

このページは、公開ドキュメントの構成の決め方と書き方の規則です。ページを足したり直したりするときは、まずここで置き場所を決めてください。

読者と構成

ドキュメントは3種類の読者を想定しています。

読者 求めるもの 主に読む所
解析する人(主な読者) データを読んで図を描く方法、データの意味と注意点 はじめる、ガイド、データ
試作を使う研究者 研究用モデルの定義、全期間の計算の回し方 試作API
開発に加わる人 設計の基準、拡張の手順、検証とリリース 開発

セクションごとに、書く内容を次のように分けます。

セクション 書く内容 書かない内容
はじめる 初めての人が順に読む4ページ。1つの流れに沿って最小限の手順を示す 全オプションの網羅(ガイドへリンクする)
ガイド 機能ごとの使い方と仕組み。1つの話題を1ページで完結させる 特定の機器だけの事情(データへ)
データ データ源ごとの変数・単位・座標系・取得元・校正・品質・制約 機器に依存しない機能の説明(ガイドへ)
試作API 試作の使い方・モデルの定義・限界 特定の期間の計算結果、比較の図、考察(working/へ)
リファレンス 引くための表。API、スキーマ、ファイル形式、CLI、用語 手順や経緯
開発 設計の基準、拡張・検証・リリースの手順 利用者向けの使い方

1つの話題は1ページに書く

同じ説明を複数のページに書くと、片方だけが更新されて食い違います。ある話題を正式に説明するページを1つに決め、 他のページからはリンクします。たとえばStoreの層はStoreにデータを保存する、 設定の優先順位は設定だけに書きます。 「はじめる」は流れを示すために一部を繰り返しますが、詳細はガイドに任せます。

実装の状況も同じ考え方で、機能のすぐ近くに書きます。データ源ごとの対応はデータ一覧の表、 未実装の点は各ページの「制約」の節、予定と構想は設計方針に置き、別の「実装状況」のページは作りません。

ページのひな形

データのページは、次の順にそろえます。読者が機器をまたいで同じ場所を探せるようにするためです。

  1. 何を測った、どのデータか(1〜2文)と、最短のコード例
  2. 変数(入口、次元、単位、座標系、内容の表)
  3. 読み込み・作図の例
  4. 元ファイルの取得と置き場所
  5. 校正・欠測・品質の扱い
  6. 制約(未実装、未検証の点)
  7. 出典

ガイドのページは、冒頭の1〜2文でそのページが答える問いを示し、仕組みの説明と手順を交互に置きます。 引数の一覧は表にします。

文体

  • 日本語版は「です・ます」で書き、結論から述べます。見出しは、読めば内容が分かる短い文か名詞句にします。
  • 用語は用語集の訳に合わせます。API名・外部の仕様名・ファイル名は原名のままcodeで書き、 日本語との間に空白は入れません。
  • 数式は$...$と$$...$$、単位はnT、eV/(cm^2 s sr eV)のようにスキーマと同じ表記にします。
  • 一般的な留保は繰り返さず、判断に効く制約や未検証の点を、該当する説明のそばに具体的に書きます。
  • コード例は、実装と照らして動くものだけを載せます。説明のための変数(timeなど)は、ページの中で一度定義します。
  • 図はMarkdownで埋め込み、実データから作ったものをdocs/assets/に置きます。

日本語と英語

日本語版(docs/ja/)を正本とし、英語版(docs/en/)を同じパスに置きます。 ビルドはmkdocs-static-i18nで行い、日本語版をサイトのルート、英語版を/en/に出力します。 ナビゲーションの見出しはmkdocs.ymlのnavに日本語で書き、英語の見出しはnav_translationsに書きます。 英語版のページが無いと日本語版を代わりに表示しますが、tests/test_docs_build.pyがすべてのページの英語版があることを確かめます。

ページの右上の切り替え(Lang: 日本語/English)はdocs/overrides/partials/alternate.htmlで、同じパスの対応ページへ移ります。

自動で生成するページ

ページ 生成元 更新
スキーマ コードのInstrumentSchema python -m sopran.schema_docs docs/ja/reference/schemas.md(英語版は--language en)
Python API docstring(mkdocstrings) ビルド時に自動。載せるクラスと関数はページに列挙する

コードから参照しているURL

guide()が返す説明には、公開ドキュメントのURLが入っています。URLはページのパスから sopran.core.pages.public_doc_urls("data/kaguya/")で日本語版と英語版の両方を作ります。 ページを移したときは、次の定数とtests/test_docs_build.pyなどのテストも直します。

定数 場所
_PUBLIC_DOC_PATHS src/sopran/missions/kaguya/mission.py
_PUBLIC_DOC_URLS src/sopran/missions/artemis/mission.py
PUBLIC_DOC_URLS src/sopran/bodies/moon/guides.py

ページを足すときの手順

  1. 上の表で置き場所を決め、同じ話題のページが無いか確かめる。
  2. docs/ja/とdocs/en/の同じパスにページを作る。
  3. mkdocs.ymlのnavに日本語の見出しを、nav_translationsに英語の見出しを加える。
  4. 関連するページからリンクする。
  5. python -m mkdocs build --strictで、リンク切れ・アンカー切れが無いことを確かめる。 mkdocs serveで表示を確かめられます(pip install -e ".[docs]"が必要です)。