Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

アーキテクチャ

kvtool のアーキテクチャ概要です。

レイヤー構造

Presentation (CLI)
    ↓
Service
    ↓
Infrastructure (Filesystem)
  • Presentation: Cobra を使った CLI インターフェース (cmd/)
  • Service: ビジネスロジック
  • Infrastructure: ファイルシステムドライバー (pkg/filesystems/)

統一インターフェース

全てのファイルシステムは以下のインターフェースを実装します (p../pkg/filesystems/core.go):

type Filesystem interface {
    GetFile(path string) (File, error)
}

type File interface {
    LoadAsJson() (any, error)
    OpenReader() (io.ReadCloser, error)
}

ファイルシステムドライバー

実装済みドライバー

ドライバーの作成

FilesystemFactory がドライバー名から適切なファイルシステムインスタンスを生成します (p../pkg/filesystems/factory.go)。

Transform(変換機能)

ファイルを読み込む際に、特定の形式(.env など)を JSON に変換する機能です。

実装済み Transform

テスト戦略

  • 統合テスト: p../pkg/filesystems/integration_test.go で全ファイルシステムの共通動作を検証
  • テーブル駆動テスト: 全てのテストはテーブル駆動テストで記述
  • Docker 統合: Vault などの外部サービスは Docker で起動してテスト

詳細は CLAUDE.md を参照してください。