このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

配布パッケージに関する概念

OSファイルシステムプログラミング言語のモジュールシステムを含めて、名前空間の管理が問題だな、結局。

  1. リポジトリとパッケージが1:1対応すると簡単だし望ましい。が、たぶん将来的には1リポジトリで複数パッケージのサポートが必要かもしれない。(しばらくは考えないが。)
  2. パッケージはプロジェクトにインストール(導入)される。
  3. パッケージのインストールでプロジェクトに導入された機能性をフィーチャと呼ぶことにする。
  4. パッケージとフィーチャは1:1対応しない。なぜなら、Catyでは、1つのパッケージを複数のアプリケーションに導入することがあるから。
  5. プロジェクト(=サイト、サーバーインスタンス)に対する何らかの変更はモディフィケーションと呼ぶことにする。
  6. インストールはモディフィケーションだが、より一般的には、フィーチャのcreate, update, deleteがある。
  7. モディフィケーションIDは、「パッケージ名+パージョン+日時(秒まで)」とする。モディフィケーションIDのスコープはプロジェクトである。
  8. ひとつのモディフィケーションで、1つのフィーチャが導入、または更新、または削除される。
  9. モディフィケーションでは、パッケージの依存関係を調べる必要がある。
  10. フィーチャは、もとのパッケージとモディフィケーションパラメータにより決定される。
  11. モディフィケーションパラメータでもっとも重要なものはターゲットアプリケーションで、これは特別扱いしたほうがよい。
  12. すべての管理されたファイルの操作(create, update, delete)は、そのモディフィケーションを追跡できなくてはならない。
  13. すべてのモディフィケーションは記録されべき(完全なログ)。
  14. 現在のファイル状態は維持されるべき。例: status/currentFiles.json
  15. 現在のフィーチャ状態は維持されるべき。例: status/currentFeatures.json