GoによるKitty Graphicsプロトコル対応のターミナル画像ビューア。 ズーム・パン操作をキーボード/マウスで行える。
Clean Architectureに従う。各層の依存方向: domain ← usecase ← adapter/infrastructure
- domain/: エンティティ (ImageEntity, Viewport, Config)。外部依存なし
- usecase/: ポートインターフェース定義 + ユースケース実装
- adapter/: TUI (Bubbletea), Config (TOML), Renderer (Kitty)
- infrastructure/: ファイルシステム画像読み込み
- domain は他のどの層にも依存してはならない
- usecase は domain のみに依存する
- adapter/infrastructure は usecase のポートインターフェースを実装する
- cmd/gaze/main.go でDI配線を行う
make build # バイナリビルド → bin/gaze
make test # テスト実行 (race detector付き)
make lint # golangci-lint実行
make ci # lint + test + build
make clean # ビルド成果物削除- エラーは必ずハンドリングする (
_で無視しない) - エラーメッセージは
fmt.Errorf("doing X: %w", err)でラップする
- table-driven tests を使用する
- テストファイルは対象ファイルと同一パッケージに配置 (
*_test.go) - ドメイン層のテストカバレッジは95%以上を目標とする
- Go標準の命名規則に従う (camelCase, 頭文字語は大文字)
- インターフェース名は動詞+erまたは役割名 (例:
RendererPort,ImageLoaderPort)
- 新しい外部依存を追加する際は必要性を検討する
- domain層に外部パッケージのimportを追加してはならない