ソフト開発時のドキュメント化 LLM生成後の統合方法使用するツール

IoT機器のAIエージェントシステムを構築する時、使用するプログラム言語が多岐に渡る。 その時のドキュメント統合化を考えてみました。 まだ完全ではありませんが私の備忘録として載せておきます。 来年、実際実行した後Updateしたいと思います。

使用言語

  • Python
    • AIエージェント設計
    • AWS LambdaやGoogle Function
  • Angular/React
    • UIとしてのWeb構築用
    • TypeScript、HTML、SCSS、JavaScript
  • C/C++
    • IoT機器のマイコンやSoc制御
  • System Verilog
    • IoT機器にFPGA搭載した場合
  • Device Tree
    • IoT機器にLinux搭載する場合
  • Rust
    • 高速バックエンド開発
    • 大規模、高負荷になるまでは使用しないかも

Obsidian

使用する基本の構文は、Markdown形式の編集ソフトObsidian。 Markdownはソフトウェアドキュメント言語として業界標準となっており、GitHub Flavored Markdownが業界標準となっている。 Markdownファイルは.mdで、GitHubのREADME.md等である。 ObsidianはGFMとの非互換性が10%ほどあるが、特殊構文の角括弧2つの[[Wikilinks]]などはファイル名が変更となったら自動更新してくれるので、非互換性を差っ引いても仕事効率が上がるため、Obsidianとした。 ObsidianはOSSでローカルPCにインストールして使うと無料で使える。

ファイル共有するには、GitHubを使うのが最も良いと思う。OSSをつかう場合は、Syncthing (OSS)だが、Syncthing をインストールしているPCの電源がOFFになると共有できない。

Obsidianと同じようなソフトNotionは使いやすいが、Notionのクラウドでしか使えず有償となる。

ドキュメント準備

私の場合、VScodeにCopilot入れてSonnet4でプログラムコード生成して、同時に説明などもObsidian記法で生成してもらっています。 これらは、各コードのファイルでコメントとして概略説明と、詳細説明は関数ごとの説明ファイルに記述しています。

ドキュメント生成

2つのステップがある。

  1. 各言語を、言語に適したツールでドキュメント生成する。
  2. Docusarausで統合する。

これでソフト部分はすべて統合ドキュメントになります。 しかし動作などは人で別に記述する必要があります。

  • Python
    • Sphinx、MkDocs
    • Docstringsで記述。 ””” ここに記述 ”””
  • Angular/React
    • TypeScript
      • Typedoc
    • HTML、SCSS、JSON
      • 不要、Docusaurusで直接読み込み
      • ```htmlや```scssや“`jsonブロックを使って、Obsidian形式で記述。
  • C/C++
    • Doxygen
    • コメントブロック内に、Doxygen記法の@param, @briefで記述
  • System Verilog
    • Doxygen
  • Device Tree
    • DTS-doc
  • Rust
    • rustdoc
    • ///や//!内のコメントで記述

ファイル共有

全てのファイル共有は、やっぱりGitHubを使うのがいいですね。 今やPrivate Repository数も無制限になったので、GItHubを活用するのがいいと思います。

コメント