【Flutter】.env で API キーを安全に管理する方法
Flutter アプリで API キーを使うとき、コード内に 直書きするのは絶対にNG。
GitHub に誤ってアップロードした瞬間、悪用されるリスクが大きくなります。
そこで便利なのが、
環境変数 (.env ファイル) を読み込む方法。
この記事では、Flutter の定番パッケージ
flutter_dotenv を使って、
API キーを安全に管理する方法をわかりやすく解説します。
1. flutter_dotenv を導入する
まずはパッケージを追加します。
# pubspec.yaml
dependencies:
flutter_dotenv: ^5.2.1
反映:
flutter pub get
2. .env ファイルを作成する
プロジェクトの最上位ディレクトリに .env を作ります。
例:
# .env
GOOGLE_MAPS_IOS_KEY=YOUR_IOS_API_KEY
GOOGLE_MAPS_ANDROID_KEY=YOUR_ANDROID_API_KEY
PLACES_API_KEY=YOUR_PLACES_API_KEY
ポイント:
- キー名は大文字+スネークケースが一般的
- 複数プラットフォーム(iOS / Android)に対応する場合はキーを分ける
- 改行とスペースに注意
3. .env をアプリ起動時に読み込む
main.dart を次のように書き換えます。
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// .env を読み込み
await dotenv.load(fileName: ".env");
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Env Sample App')),
body: const Center(child: Text('Hello .env')),
),
);
}
}
これで .env 内の値がアプリ内で使えるようになります。
4. 環境変数を使う(実用例つき)
どこでも次のように呼び出せます。
final iosKey = dotenv.env['GOOGLE_MAPS_IOS_KEY'];
final androidKey = dotenv.env['GOOGLE_MAPS_ANDROID_KEY'];
▼ 実用例:API キーを使って Google Maps SDK を初期化する
import 'dart:io';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class MapConfig {
static void initialize() {
final key = Platform.isIOS
? dotenv.env['GOOGLE_MAPS_IOS_KEY']
: dotenv.env['GOOGLE_MAPS_ANDROID_KEY'];
if (key == null) {
throw Exception('API Key is not found in .env');
}
GoogleMapsFlutterPlatform.instance.initializeWithKey(key);
}
}
5. .env を Git に含めない(超重要)
API キーが GitHub に上がると本当に危険です。
.gitignore に必ず追加してください。
# .gitignore
.env
6. よくあるエラーと原因
| エラー内容 | 主な原因 |
|---|---|
dotenv.env が null |
.env の読み込み前にアクセスしている |
.env が読み込まれない |
fileName: ".env" になっていない |
| API キーが反映されない | iOS の AppDelegate 設定漏れ / Android の Manifest 設定漏れ |
| 実機では動くがビルドでは落ちる |
.env の名前違い or 配置ミス |
必要なら iOS / Android の Maps SDK 設定も追記できます。
7. まとめ(コピペ用)
① flutter_dotenv を追加
② .env に API キーを記述
③ main.dart で dotenv.load()
④ dotenv.env['KEY_NAME'] で利用
⑤ .gitignore に .env を追加
Flutter では API キーを安全に扱うことがとても重要です。
.env 管理を導入すると、セキュリティだけでなくアプリの保守性も上がります。