本ドキュメントでは,MiniTIAS プロジェクトの Dart / Flutter コーディング規約を定義する. 基本方針として Effective Dart に準拠し,プロジェクト固有のルールのみ本書で定める.
dart format のデフォルト設定に従う(行幅 80 文字).vscode/settings.json で設定済み)Effective Dart の命名規則に従う.プロジェクト固有の補足は以下の通り.
| 対象 | 規則 | 例 |
|---|---|---|
| ファイル名 | snake_case | camera_provider.dart |
| クラス名 | UpperCamelCase | CameraProvider |
| 変数・関数 | lowerCamelCase | takePhoto() |
| 定数 | lowerCamelCase | defaultImageQuality |
| プライベート | 先頭に _ | _controller |
| Provider | 〇〇Provider | CameraProvider |
| Service | 〇〇Service | FileService |
| Screen(画面) | 〇〇Screen | CaptureScreen |
| Widget(部品) | 機能を表す名前 | ShutterButton |
以下の順序で記述し,各グループ間は空行で区切る.
// 1. Dart SDK import 'dart:async'; import 'dart:io'; // 2. Flutter SDK import 'package:flutter/material.dart'; // 3. 外部パッケージ(pub.dev) import 'package:camera/camera.dart'; import 'package:provider/provider.dart'; // 4. プロジェクト内 import 'package:mini_tias/providers/camera_provider.dart'; import 'package:mini_tias/services/file_service.dart';
※ dart fix --apply および dart format で自動整列されるため,手動調整は不要.
SPEC_01_画面機能仕様書 のアーキテクチャセクションで定義したディレクトリ構成に従う.
lib/ ├── main.dart # エントリポイント,Provider 登録 ├── app.dart # MaterialApp,テーマ ├── providers/ # 状態管理(ChangeNotifier) ├── screens/ # 画面(Scaffold 単位) ├── widgets/ # 再利用可能な UI 部品 └── services/ # 外部リソースとの橋渡し
var / final)を活用するdynamic は避け,Object? を使用するfinal をデフォルトとし,再代入が必要な場合のみ var を使用する| エラー | 発生箇所 | 対処 |
|---|---|---|
| カメラ初期化失敗 | CameraProvider | エラーメッセージを画面に表示 |
| パーミッション拒否 | PermissionService | 設定画面への誘導を表示 |
| ストレージ書き込み失敗 | FileService | スナックバーでエラー通知 |
| ファイル削除失敗 | FileService | スナックバーでエラー通知 |
debugPrint() を使用する(リリースビルドでは自動的に無効化される)print() は使用しない///): 公開 API(public なクラス・メソッド)に記述する//): ロジックが自明でない箇所にのみ記述する/// 撮影画像を PNG 形式で共有ストレージに保存する.
///
/// [imageBytes] は JPEG エンコード済みの画像データ.
/// 保存先は `Pictures/MiniTIAS/` ディレクトリ.
/// 同秒の重複ファイルが存在する場合は連番サフィックスを付与する.
Future<String> saveImage(Uint8List imageBytes) async {
// ...
}
[paramName] 記法を使用する