ソフトウェア設計・技術選定資料

Warning

本リポジトリで提供されているソフトウェアおよび設計ドキュメントは、講師・開発者向けの参考実装およびデモ用のものです。 ゼミ参加者(受講生)に対してオープンに提供・公開されているものではありません。

本プロジェクトにおけるシステムアーキテクチャの解説および、各種設計判断の合理的な根拠をまとめた技術資料です。 ゼミ参加者の設計書作成における手本(型)となるよう、背景・課題・技術的トレードオフの比較・意思決定の根拠という構成で記述されています。

コンテンツ一覧

各資料の位置づけ


ソフトウェアドキュメント管理方針 (Software Documentation Policy)

本プロジェクトにおけるソフトウェアドキュメント管理方針、およびその選定根拠についてまとめます。

1. 背景・目的

  • API 仕様の自動化と保守性向上: C++ 開発において、ソースコードのコメントから API リファレンスを自動生成する仕組みを導入し、コードと仕様の乖離を防ぎます。

  • ドキュメント配置の標準化: コンポーネントに閉じた情報はコードの隣に置き、システム横断的な概念設計はグローバルポータルに集約します。

2. 制約事項

  • ツールの組み合わせ: C++ には標準的なドキュメント生成ツールがないため、解析ツール(Doxygen)と静的サイト生成ツール(Sphinx)を適切に組み合わせる必要があります。

3. ドキュメントの配置ルール

本プロジェクトでは、「情報の鮮度」と「情報の網羅性」を両立するため、以下の2層構造でドキュメントを管理します。

① ローカル・コンテキスト (README.md)

  • 配置場所: 各主要ディレクトリ (ground/, satelite/, simulator/, shared/ 等)

  • 記述内容: そのコンポーネント固有のセットアップ手順、ビルド方法、使用コマンド、トラブルシューティング。

  • メリット:

    • 高い保守性: コードの変更(例:コマンドの追加)と同時にドキュメントを修正でき、Pull Request 上でのレビューも容易。

    • 高い発見性: cd した直後に必要な情報が目に入る。

② グローバル・ポータル (docs/)

  • 配置場所: ルートの docs/ ディレクトリ配下(Sphinx 管理下)

  • 記述内容: システム全体のアーキテクチャ図、コンポーネント間のインターフェース仕様、設計根拠(Rationale)、教育用チュートリアル、APIリファレンス。

  • メリット:

    • 一貫性: 用語の統一や、システム全体を見通した解説が可能。

    • 高度な表現: Mermaid による複雑な図解、自動生成される API リファレンス。

4. ソフトウェア管理方針と選定根拠(Rationale)

① コア・ドキュメントエンジン:Sphinx + Breathe + Doxygen

  • 方針: Doxygen で C++ コードを解析して XML を出力し、それを Breathe プラグイン経由で Sphinx に取り込みます。

  • 根拠: C++ の複雑な構文を正確に解析できる Doxygen と、人間が読みやすい解説文を構築できる Sphinx の強みを両立させるため。Zephyr RTOS 等、ハードウェアが絡むモダンなシステム開発で最も実績のある構成です。

総括

この構成は、ソースコードという “真実の情報源(Single Source of Truth)” から、必要なAPI仕様を自動抽出し、適切なフォーマットで安全に提供するシステムです。設計意図を言語化して残していく運用に最適化されています。