「Architecture.md (2021)」技術仕様書
(matklad.github.io)ARCHITECTURE.md 作成の推奨
- オープンソースプロジェクトのメンテナーに対して、
READMEとCONTRIBUTINGの横にARCHITECTURE文書を追加することを強く推奨している。 - この文書はプロジェクトの高レベルなアーキテクチャを説明するもので、継続的に貢献する人が読むべきものなので、短く保つのが望ましい。
ARCHITECTURE文書には頻繁に変更されない内容だけを含めるべきであり、コードとの同期を試みるよりも、年に数回見直すほうが望ましい。
文書の目的と重要性
- プロジェクトの物理アーキテクチャに関する知識は、一般的なコントリビューターとコア開発者を分ける最大の違いである。
- プロジェクトに不慣れな場合、パッチを書くのに2倍の時間がかかり、コードを変更すべき場所を把握するには10倍の時間がかかる。
ARCHITECTUREファイルはこうしたギャップを埋める効果的な方法であり、プロジェクトの構造を見直す機会も提供する。
文書の構成
- 問題に対する新しい視点からの概要で始め、モジュール間の関係を説明する詳細な コードマップ を提供すべきである。
- 重要なファイル、モジュール、型を明示しつつ、直接リンクする代わりに名前で検索するよう促し、メンテナンス不要にするべきである。
- アーキテクチャ上の不変条件を明示的に指摘し、レイヤー間の境界を示すべきである。
アーキテクチャ上の不変条件と境界
- 重要な不変条件はしばしば何かの不在として表現され、コードを読むだけではそれを把握しにくい。
- レイヤーやシステム間の境界は、システムの実装に関する情報を暗黙的に含んでおり、取り得る実装のすべてを制約する。
横断的関心事
- コードマップを完成させた後、横断的関心事についての別セクションを追加すべきである。
ARCHITECTURE文書の良い例として、rust-analyzer の architecture.md がある。
GN⁺の意見:
ARCHITECTURE文書はプロジェクトの理解を助け、新しいコントリビューターがすばやくコードベースに慣れるうえで重要な役割を果たす。- この文書はプロジェクトの構造を明確にし、重要なアーキテクチャ原則と境界を強調することで、開発者がシステムをより深く理解する助けとなる。
- オープンソースコミュニティで
ARCHITECTURE文書を採用することは、プロジェクトの持続的な成長と保守に貢献しうるものであり、開発者にとって非常に有益で興味深いアプローチである。
1件のコメント
Hacker Newsの意見