MiniTIAS は Flutter を用いたモバイルアプリケーションである.撮影の中核(Camera2 / DngCreator / 画素統計)を Android ネイティブで実装しているため,当面は Android 専用 とする.iOS へ展開する場合は撮影パイプラインの再実装が必要になる.
| 項目 | 値 |
|---|---|
| 端末名 | AQUOS sense3(SH-02M) |
| OS | Android 9 Pie(Android 10 にアップデート可能) |
| インカメラ | 800 万画素 |
| RAM / ROM | 4GB / 64GB |
| 要素 | 選定 | 理由 |
|---|---|---|
| フレームワーク | Flutter(最新 stable) | 将来的なクロスプラットフォーム対応のため |
| 言語 | Dart | Flutter の標準言語 |
| 対象 OS | Android | 試験端末が Android のため.初期は Android のみ |
| minSdkVersion | flutter.minSdkVersion(android/app/build.gradle.kts が参照する Flutter 規定値) | AQUOS sense3(API 28)で動作確認済み |
| パッケージ | 用途 | 備考 |
|---|---|---|
camera | インカメラのライブプレビュー | フレーミング用.撮影本体は Camera2 ネイティブ実装 |
permission_handler | カメラ・ストレージの権限管理 | Android の実行時権限リクエスト |
provider | 状態管理 | Flutter 公式推奨.シンプルかつ拡張しやすい |
screen_brightness | 画面の輝度制御 | アタッチメント装着時の明るさ調整に使用 |
shared_preferences | 設定の永続化 | シャッター音 ON/OFF などの保存に使用 |
※ パッケージバージョンは環境構築時に最新 stable を採用し,pubspec.yaml で管理する.
撮影・画像変換・カメラ診断は Dart パッケージではなく Android ネイティブで実装する(RawCapturePlugin.kt,MethodChannel 経由).
| 処理 | 実装 |
|---|---|
| 定量モード撮影(RAW) | Camera2 API フルマニュアル制御 + DngCreator で DNG 出力 |
| 画像変換 | YUV→JPEG(プレビュー保存),YUV→非圧縮 PNG(旧通常モード) |
| 画素統計・Hot pixel map | RAW から Kotlin で算出し meta.json に格納 |
| カメラ診断 | CameraCharacteristics を読み出して JSON 化 |
当初は
imageパッケージで PNG エンコードしていたが,速度の問題からネイティブへ移行した(経緯は docs/PROGRESS.md を参照).
画像の保存先は Pictures/MiniTIAS/(Android 共有ストレージ)とする.DNG をネイティブ側で直接書き込み(FileOutputStream),保存後に MediaScannerConnection.scanFile(MethodChannel scanFile)で MediaStore に登録する方式を採用した.大容量 DNG の MethodChannel 転送を避けるため,ファイル書き込みは Kotlin 側で完結させ,Dart へはパスのみ返す.
provider パッケージを使用する.画面数が少なくシンプルな構成のため,大規模な状態管理ライブラリは導入しない.
Dart 標準のリンター(analysis_options.yaml)を使用する.Flutter プロジェクト作成時に生成されるデフォルト設定をベースとし,プロジェクト固有のルール追加は規約整備フェーズで定義する.
| 処理 | 実行場所 | 備考 |
|---|---|---|
| 撮影・ライブプレビュー | スマホ(Flutter アプリ) | インカメラ使用 |
| 画像保存(DNG + meta.json + preview.jpg) | スマホ(ネイティブ Camera2) | 共有ストレージに保存 |
| データ転送 | USB 接続(adb pull 推奨) | 大容量 DNG は MTP で不整合リスクあり |
| キャリブレーション | PC | カラーバーを用いた色補正 |
| 色変換・解析 | PC | L*a*b* 変換,色差計算等 |
| 要素 | 選定 | 備考 |
|---|---|---|
| IDE | VS Code | Flutter / Dart 拡張機能を使用 |
| Flutter SDK | 最新 stable | Dart SDK 同梱 |
| Android SDK | Android Studio 経由で導入 | ビルドツール・エミュレータを含む |
| JDK | Flutter 推奨バージョン | Android ビルドに必要 |
| ADB | Android SDK 同梱 | USB 経由の実機デバッグに使用 |
| バージョン管理 | Git + GitHub | gh CLI で PR 管理 |
| CI/CD | 初期段階では導入しない | — |
| 拡張機能 | 用途 |
|---|---|
| Flutter | Flutter 開発統合(ビルド,デバッグ,ホットリロード等) |
| Dart | Dart 言語サポート(補完,解析,フォーマット等) |
別の PC への移行を容易にするため,以下の方針で環境をコード化する.
リポジトリで Git 管理するもの:
| ファイル | 役割 |
|---|---|
pubspec.yaml | Dart パッケージとバージョンの管理 |
.vscode/extensions.json | 推奨 VS Code 拡張機能の定義 |
.vscode/settings.json | プロジェクト固有の VS Code 設定 |
SDK のインストール自動化:
ENV_02_環境構築手順.md で手順を説明する環境セットアップの流れ:
git clone でリポジトリを取得flutter doctor で環境の過不足を確認※ 詳細な環境構築手順は ENV_02_環境構築手順.md に記載する.