0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】.env で API キーを安全に管理する方法

Posted at

【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 管理を導入すると、セキュリティだけでなくアプリの保守性も上がります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?