Newer
Older
SmTIAS-Capture / docs / 02_ENV / ENV_01_技術スタック.md

技術スタック (Tech Stack)

概要 (Overview)

MiniTIAS は Flutter を用いたモバイルアプリケーションである.撮影の中核(Camera2 / DngCreator / 画素統計)を Android ネイティブで実装しているため,当面は Android 専用 とする.iOS へ展開する場合は撮影パイプラインの再実装が必要になる.

試験端末 (Test Device)

項目
端末名AQUOS sense3(SH-02M)
OSAndroid 9 Pie(Android 10 にアップデート可能)
インカメラ800 万画素
RAM / ROM4GB / 64GB

フレームワーク・言語 (Framework & Language)

要素選定理由
フレームワークFlutter(最新 stable)将来的なクロスプラットフォーム対応のため
言語DartFlutter の標準言語
対象 OSAndroid試験端末が Android のため.初期は Android のみ
minSdkVersionflutter.minSdkVersionandroid/app/build.gradle.kts が参照する Flutter 規定値)AQUOS sense3(API 28)で動作確認済み

主要パッケージ (Key Packages)

パッケージ用途備考
cameraインカメラのライブプレビューフレーミング用.撮影本体は Camera2 ネイティブ実装
permission_handlerカメラ・ストレージの権限管理Android の実行時権限リクエスト
provider状態管理Flutter 公式推奨.シンプルかつ拡張しやすい
screen_brightness画面の輝度制御アタッチメント装着時の明るさ調整に使用
shared_preferences設定の永続化シャッター音 ON/OFF などの保存に使用

※ パッケージバージョンは環境構築時に最新 stable を採用し,pubspec.yaml で管理する.

ネイティブ実装(Android / Kotlin)

撮影・画像変換・カメラ診断は Dart パッケージではなく Android ネイティブで実装する(RawCapturePlugin.kt,MethodChannel 経由).

処理実装
定量モード撮影(RAW)Camera2 API フルマニュアル制御 + DngCreator で DNG 出力
画像変換YUV→JPEG(プレビュー保存),YUV→非圧縮 PNG(旧通常モード)
画素統計・Hot pixel mapRAW から Kotlin で算出し meta.json に格納
カメラ診断CameraCharacteristics を読み出して JSON 化

当初は image パッケージで PNG エンコードしていたが,速度の問題からネイティブへ移行した(経緯は docs/PROGRESS.md を参照).

共有ストレージ保存 (Shared Storage)

画像の保存先は Pictures/MiniTIAS/(Android 共有ストレージ)とする.DNG をネイティブ側で直接書き込み(FileOutputStream),保存後に MediaScannerConnection.scanFile(MethodChannel scanFile)で MediaStore に登録する方式を採用した.大容量 DNG の MethodChannel 転送を避けるため,ファイル書き込みは Kotlin 側で完結させ,Dart へはパスのみ返す.

状態管理 (State Management)

provider パッケージを使用する.画面数が少なくシンプルな構成のため,大規模な状態管理ライブラリは導入しない.

静的解析 (Static Analysis)

Dart 標準のリンター(analysis_options.yaml)を使用する.Flutter プロジェクト作成時に生成されるデフォルト設定をベースとし,プロジェクト固有のルール追加は規約整備フェーズで定義する.

役割分担 (Role Distribution)

処理実行場所備考
撮影・ライブプレビュースマホ(Flutter アプリ)インカメラ使用
画像保存(DNG + meta.json + preview.jpg)スマホ(ネイティブ Camera2)共有ストレージに保存
データ転送USB 接続(adb pull 推奨)大容量 DNG は MTP で不整合リスクあり
キャリブレーションPCカラーバーを用いた色補正
色変換・解析PCL*a*b* 変換,色差計算等

開発環境 (Development Environment)

要素選定備考
IDEVS CodeFlutter / Dart 拡張機能を使用
Flutter SDK最新 stableDart SDK 同梱
Android SDKAndroid Studio 経由で導入ビルドツール・エミュレータを含む
JDKFlutter 推奨バージョンAndroid ビルドに必要
ADBAndroid SDK 同梱USB 経由の実機デバッグに使用
バージョン管理Git + GitHubgh CLI で PR 管理
CI/CD初期段階では導入しない

VS Code 拡張機能 (VS Code Extensions)

拡張機能用途
FlutterFlutter 開発統合(ビルド,デバッグ,ホットリロード等)
DartDart 言語サポート(補完,解析,フォーマット等)

環境の再現性 (Environment Reproducibility)

別の PC への移行を容易にするため,以下の方針で環境をコード化する.

リポジトリで Git 管理するもの:

ファイル役割
pubspec.yamlDart パッケージとバージョンの管理
.vscode/extensions.json推奨 VS Code 拡張機能の定義
.vscode/settings.jsonプロジェクト固有の VS Code 設定

SDK のインストール自動化:

  • Windows パッケージマネージャー(Scoop)を使用し,セットアップスクリプトで SDK 類を一括インストールする
  • 対象: Flutter SDK,Android Studio,Git,GitHub CLI 等
  • スクリプトはリポジトリに含め,ENV_02_環境構築手順.md で手順を説明する

環境セットアップの流れ:

  1. git clone でリポジトリを取得
  2. セットアップスクリプトを実行(SDK 一括インストール)
  3. flutter doctor で環境の過不足を確認
  4. VS Code が推奨拡張機能のインストールを提案

※ 詳細な環境構築手順は ENV_02_環境構築手順.md に記載する.