Flutterで作るAndroidアプリ入門:Googleアカウント連携とGoogle Drive保存までを完全解説

スマートフォンアプリを作ってみたいと思ったことはありませんか?
特に Android アプリは、Google アカウントとの親和性が高く、データ保存先として Google Drive を活用することで便利なサービスを作ることができます。

本記事では、Flutter をフロントエンドに採用し、Google アカウントでログインして、データを Google Drive に保存するシンプルな Android アプリ を「1から最後まで」わかりやすく解説します。
開発環境の準備から、実際のソースコード例までを順を追って説明するので、初心者の方でもアプリ開発の流れをイメージできる内容です。


Flutterとは?

Flutter は Google が提供するクロスプラットフォーム開発フレームワークです。
1つのコードで Android / iOS 両対応 のアプリを作成できるのが大きな特徴です。
Dart というプログラミング言語を使い、ウィジェットを組み合わせて UI を作成します。

本記事で Flutter を選ぶ理由は以下の3つです。

  1. Google アカウントや Firebase との相性が良い
  2. UI作成が簡単で見た目がきれい
  3. 1つのソースで複数OSに対応可能

開発環境の準備

アプリを作るためには、まず環境を整える必要があります。

必要なもの

  • PC(Windows, macOS, Linux)
  • Android Studio(エミュレータや SDK 管理に必要)
  • Flutter SDK
  • Google Cloud Console のアカウント(API連携に必須)

手順

  1. Flutter SDK を公式サイトからダウンロード
    https://docs.flutter.dev/get-started/install
  2. Android Studio をインストールし、Flutter プラグインを追加
  3. Google Cloud Console にアクセスし、新しいプロジェクトを作成
  4. Google Drive API を有効化し、OAuth クライアント ID を作成
    • 認証情報を JSON 形式でダウンロードしておきます

Googleアカウント認証の実装

アプリで Google Drive を操作するには、まず Google アカウントでのログイン が必要です。

Flutter では google_sign_in パッケージを利用します。

pubspec.yaml に追加

dependencies:
  flutter:
    sdk: flutter
  google_sign_in: ^6.1.5
  http: ^0.13.6

ログイン処理のコード

import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: GoogleLoginPage(),
    );
  }
}

class GoogleLoginPage extends StatefulWidget {
  @override
  _GoogleLoginPageState createState() => _GoogleLoginPageState();
}

class _GoogleLoginPageState extends State<GoogleLoginPage> {
  final GoogleSignIn _googleSignIn = GoogleSignIn(
    scopes: ['email', 'https://www.googleapis.com/auth/drive.file'],
  );

  GoogleSignInAccount? _user;

  Future<void> _login() async {
    try {
      final user = await _googleSignIn.signIn();
      setState(() {
        _user = user;
      });
    } catch (error) {
      print("ログイン失敗: $error");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Google Drive アプリ")),
      body: Center(
        child: _user == null
            ? ElevatedButton(
                onPressed: _login,
                child: Text("Googleアカウントでログイン"),
              )
            : Text("ログイン成功: ${_user!.email}"),
      ),
    );
  }
}

このコードで、Google アカウントにログインできるようになります。


Google Driveへのデータ保存

ログイン後、次は Google Drive にファイルを保存してみましょう。

APIリクエストの流れ

  1. 認証トークンを取得
  2. Google Drive API にリクエスト送信
  3. ファイルをアップロード

保存処理の例

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> uploadToDrive(String text, GoogleSignInAccount user) async {
  final authHeaders = await user.authHeaders;
  final httpClient = http.Client();

  final response = await httpClient.post(
    Uri.parse("https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"),
    headers: {
      ...authHeaders,
      "Content-Type": "multipart/related; boundary=foo_bar_baz",
    },
    body: """
--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{"name": "sample.txt"}
--foo_bar_baz
Content-Type: text/plain

$text
--foo_bar_baz--
""",
  );

  print("保存結果: ${response.body}");
}

この関数に "Hello Drive!" のような文字列を渡すと、Google Drive 上に sample.txt が保存されます。


アプリ全体の動作イメージ

  1. アプリ起動
  2. 「Googleアカウントでログイン」ボタンをタップ
  3. 認証が完了するとユーザーのメールアドレスを表示
  4. テキストを入力して「保存」ボタンを押す
  5. Google Drive にテキストファイルがアップロードされる

実際のUIはシンプルですが、これで 「Googleアカウント連携 + Google Drive保存」 が完成します。


開発を発展させるポイント

今回のサンプルをベースに、以下のように発展させることが可能です。

  • 写真を撮影して Drive に保存
  • 複数ファイルをフォルダごと管理
  • Drive 上のデータをアプリ内で閲覧
  • 自分だけでなく共有リンクを作ってチームで利用

まとめ

本記事では、Flutter を使って Android アプリを開発し、Google アカウントでログインして Google Drive にデータを保存する流れを解説しました。

手順をまとめると以下の通りです。

  1. Flutter 環境を構築
  2. Google Cloud Console で Drive API を有効化
  3. google_sign_in を使ってログイン処理を実装
  4. Drive API を利用してファイルをアップロード

これで、シンプルながらも「Google アカウントを使ったデータ保存アプリ」が完成しました。
Flutter の強みはこのように Google サービスと簡単に連携できる点 にあります。
今回のサンプルを基礎に、自分のアイデアを加えてアプリを拡張してみてください。

タイトルとURLをコピーしました