-
Notifications
You must be signed in to change notification settings - Fork 0
WritingDocumentation
← Home
FloatSoda のドキュメントは、読者ごとに User docs / Contributor docs / API Reference の3系統に分かれています(情報設計の正典は Issue #188)。このページは、新しい情報を書くときに「どの系統のどのページに書くか」「何が正典か」「変更したとき何を更新するか」を決めるための入口です。書き方の規約そのものは、それぞれの正典に置いてあり、ここには再掲しません。
| 系統 | 読者 | 答える問い |
|---|---|---|
| User docs | FloatSoda でアプリを作る人 | What / How — 何であり、どう使うか |
| Contributor docs | FloatSoda 本体を変える・レビューする人 | How it works / Why / Must — どう動き、なぜそう設計され、何を守るか |
| API Reference | 利用者・コントリビュータ・Coding Agent の全員 | Exactly what exists — 公開 API の正確な契約 |
実装状況 — 系統ごとのディレクトリ(
docs/user/、docs/contributor/、docs/api/)への再編は #188 の手順4で進めます。現行のdocs/はほぼ Contributor 向けの密なリファレンスなので、再編では 現行ページをcontributor/へ移し、User docs は新しく書きます。それまでは 再編の地図 で該当ページを選んでください。このガイド自体も、再編後はdocs/contributor/Documentation.mdへ移ります。Contributor 側の「書くもの / 書かないもの」とテンプレートは、再編で移した実物のページから逆算して Issue #245 で追加します。
書こうとしている情報について、上から順に問いに答えます。
利用者が正しく使うために必要な情報?
├─ はい
│ ├─ 概念を理解するための説明 → User / Concept
│ ├─ 特定の目的を達成する手順 → User / Guide
│ └─ 完成物を作りながら学ぶ道筋 → User / Tutorial
└─ いいえ
└─ FloatSoda を変更する人に必要な情報?
├─ いまどう動いているか → Contributor / Architecture
├─ なぜそう設計したか → Contributor / Design
├─ 変更後も何を維持するか → Contributor / Requirements
└─ どう変更・レビュー・公開するか → Contributor / Development
型・メンバー・引数・戻り値・例外・nullability の正確な公開契約?
→ XML ドキュメントコメント(API Reference の原稿)
境界で迷いやすいものは、次のように分けます。
-
利用者から観測できる制約は User docs に書き、その制約を成立させている内部要件は Contributor docs に書きます。例: 「
WorldSpaceWindowでは現在ポインタ入力を使えない」は User docs、「WorldSpaceWindowの入力経路を Controller Ray → HitTest として接続する」は Contributor docs、WorldSpaceWindowのプロパティ・型・例外契約は API Reference -
Flutter との差異は、判断原則を APIDesign に、確認済み差異の台帳を
known-divergences.mdに置きます。利用者から見える差異は、該当する User docs のページと、対応するサンプルの「Flutterとの違い」節にも書きます(記録ルールは APIDesign) - 同じテーマは1つの系統で詳述し、ほかの系統からはリンクします。概念を Guide で説明し直したり、シグネチャを Concept に並べたりしません
User docs は、公開 API と API Reference と合わせて、#188 の層3(統合ミニアプリ型)のサンプルをジュニアコーダーテストで書ける範囲を扱います。これが「どこまで書くか」の合格ラインです。テストで足りないと分かった概念や制約は、User docs か API Reference の不足として回収します(手順は #188)。内部実装を知らないと書けない箇所が見つかったら、それは User docs の穴です。
再編(#188 手順4)の出発点です。現行ページは内部の仕組みの説明が中心なので、User 向けの部分だけを抜き出して新しいページに書き、本体は contributor/ へ移します。種別は再編時に実物で確定します。
現行ページの行き先
| 現行ページ | 行き先 | 備考 |
|---|---|---|
| Architecture | Contributor / Architecture | 利用者向けの全体像は User の「Widget」へ書き下ろす |
| BuildPipeline | Contributor / Architecture | |
| RenderObjects | Contributor / Architecture | 制約モデルの利用者向け説明は User の「Layout」へ |
| WidgetSystem | Contributor / Architecture | 組み込みウィジェット一覧と「押せるボタンを作る」は User 側へ |
| Animation | Contributor / Architecture | 使い方は User の「Animation」へ |
| OVRIntegration | Contributor / Architecture | オーバーレイ種別と制約は User の「Window / Overlay」へ |
| UILayering | Contributor / Design | 設計方針(未提供) |
| APIDesign | Contributor / Design + Requirements | |
| DocumentationComments | Contributor / Development | |
| Localization | Contributor / Design + Development | |
| このページ | Contributor / Development | contributor/Documentation.md |
| TargetUsers | User(入口) | 利用者向けに書かれているので、ほぼそのまま user/ へ |
| GettingStarted | User / Tutorial | 利用者向けに書き直す |
| Input | User / Concept + Guide | 利用者向けに書き直す。実装の説明は Contributor 側へ |
新しい User ページと元ネタ(#188 の Concept の列挙に沿う)
| User ページ | 種別 | 元ネタ(利用者が観測できる制約と使い方を抜き出す) |
|---|---|---|
| Widget(宣言的 UI と Widget ツリー) | Concept | WidgetSystem の組み込み一覧と「押せるボタンを作る」、Architecture の全体像、層1サンプル |
State(SetState、InheritedWidget) |
Concept | WidgetSystem、BuildPipeline のうち利用者から観測できる再ビルドの挙動 |
| Layout(制約・サイズ・配置) | Concept | RenderObjects の制約モデル、層1サンプル(レイアウト基本・制約変換系) |
| Input(ポインタ・ジェスチャ・アクション入力) | Concept + Guide | Input、WidgetSystem の「ジェスチャとヒットテスト」、層1サンプル(入力系)。ダッシュボード限定の制約を明記する |
| Animation | Concept | Animation |
| Window / Overlay(ダッシュボード・ワールド座標・デバイス追従) | Concept + Guide | OVRIntegration、Home の実装状況(表示専用の制約)、Issue #151(物理サイズの発見性) |
| 〜するには(各種) | Guide | 層2(Cookbook 型)サンプル |
| GettingStarted | Tutorial | 現行 GettingStarted、samples/FloatSoda.Samples.GettingStarted
|
| ミニアプリを作る | Tutorial | 層3(統合ミニアプリ型)サンプル(Phase 2 完了後) |
同じ情報は1箇所にだけ書き、ほかからはリンクします。
| 情報 | 正典 |
|---|---|
| API のシグネチャ・引数・戻り値・例外・nullability・副作用・スレッド制約 | XML ドキュメントコメント(規約は DocumentationComments) |
| API の具体的な使い方 | User Guide |
| 概念モデル(Widget、State、Layout、Input、Animation、Window / Overlay) | User Concept |
| 完成物を作る手順 | User Tutorial とサンプル(samples/) |
| ウィジェットの最小の使用例 | サンプルの README(構成は CONTRIBUTING.md の「サンプルを追加する場合の規約」) |
| 内部の動作(ツリー、Build / Layout / Paint、入力、スレッド) | Contributor Architecture |
| 設計理由と採用しなかった選択肢 | Contributor Design |
| invariant、observable behavior、ライフサイクル・所有権・スレッドの必須条件 | Contributor Requirements |
| API 設計の原則と Flutter parity / divergence の判断基準 | APIDesign |
| 確認済みの Flutter との差異 | known-divergences.md |
| 開発・レビュー・リリースの手順 | CONTRIBUTING.md / REVIEW.md / RELEASING.md |
| ドキュメントの分類とサンプルの3層構成 | Issue #188 |
XML ドキュメントコメントは internal / private にも書きます(DocumentationComments の適用範囲)。公開サイトの API Reference に載せるのは public API だけで、internal 側のコメントはコントリビュータ向けの内部資料として扱います。
変更の種別ごとに、更新を検討する文書です。その変更によって正典の説明が変わる場合だけ更新します。 全項目を機械的に触る必要はありません。
| 変更 | 更新対象 |
|---|---|
| public API を追加・変更する | XML ドキュメントコメント。利用者の使い方が増えるなら User Guide と Catalog 型サンプル |
| observable behavior を変更する | User docs とテスト。API 契約に影響するなら XML ドキュメントコメント |
| 公開制約・既知の制限を変更する | User docs。必要なら XML ドキュメントコメント |
| 内部アルゴリズムだけを変更する | Contributor Architecture の説明が変わる場合のみ |
| アーキテクチャの境界を変更する | Contributor Architecture と Requirements |
| 設計判断を変更する | Contributor Design。必要なら Requirements と APIDesign |
| invariant を追加・変更する | Contributor Requirements とテスト |
| Flutter との差異を導入・変更する |
known-divergences.md と divergence テスト。利用者から観測できるなら User docs とサンプルの「Flutterとの違い」節 |
| 新しい代表ユースケースを追加する | User Guide / Tutorial と、#188 の層に沿ったサンプル |
| サンプルを追加・変更する | サンプルの README と checklist.md(CONTRIBUTING.md の規約) |
| ドキュメントのページを移動・改名する | リンク元のページと Home の「ページ一覧」表(公開サイトの検査がリンク切れを検出します) |
PR では、テンプレートの ## Documentation 節に、変更種別と更新した正典(更新が不要と判断した場合はその理由)を書きます。レビューでは、その判断がこの表と一致しているかを見ます。
User docs は新しく書くページが多いので、骨格を先に決めておきます。節はページの目的に不要なら省きます。Contributor 側のテンプレートは、再編で移した実物のページから逆算して #245 で足します。
読者は TargetUsers の3タイプです。コードを書くのは LLM で、読むのも LLM という前提を忘れずに、「LLM がこの API を誤用しない」書き方を優先します。Unity しか知らない読者(Booth クリエイター)には、Unity / uGUI の語彙からの読み替えを添えます。
# 名前
## 概要 — 何であり、何を解決するか
## いつ使うか
## 基本モデル — 利用者から見た仕組み。内部実装は書かない
## 最小例 — 対応する層1(カタログ型)サンプルへのリンクと、必要なら最小の断片
## Unity / uGUI からの読み替え — 対応する概念と、違う点
## 制約と未実装 — 利用者から観測できる制限。使えるようになる Phase を添える
## 関連ページ
# 〜する
## 前提
## 手順
## 完成形 — 対応する層2(Cookbook 型)サンプルへのリンク
## 注意点
## 関連 API / サンプル
# 〜を作る
## 作るもの
## 前提
## Step 1 …
## Step 2 …
## 完成 — 対応する層3(統合ミニアプリ型)サンプルへのリンク
## 次に読むもの
サンプルコードは samples/ を正典にし、本文には必要な最小の断片だけを載せます。完全な実装をドキュメント用に別に書きません。
- DocumentationComments — XML ドキュメントコメントの規約
- APIDesign — API 設計の原則と Flutter parity
- TargetUsers — 想定する3タイプの作り手
- CONTRIBUTING.md — 開発・PR・テスト・サンプルの規約
- REVIEW.md — レビューの判断基準
- Issue #188 — ドキュメント・サンプルの情報設計
- Issue #245 — このガイドの残りの節(Contributor 側の「書くもの / 書かないもの」とテンプレート)
-
Issue #219 — 公開サイト(
docs/の構造がそのままサイトの構造になります)