スタッフブログ

STAFF BLOG

アプリ開発日誌

2017.05.09

AndroidアプリにFirebaseを導入してみる

おはようございます。プログラマの小林です。
今回は、現在の案件でも使用している、Firebaseについて書きたいと思います。

Firebase

Googleから提供されている、mBaaS(mobile backend as a service)です。
導入すると以下のような機能を使用することができます。

  • ユーザー解析
  • ユーザー認証
  • リアルタイムデータベース
  • プッシュ通知
  • クラッシュレポート

他にも様々な機能が使用できます。
今回は導入と、簡単にクラッシュレポート機能を解説します。

Firebase Console

まずは以下の2つをやっていきます。

  1. プロジェクトの作成
  2. 設定ファイルのダウンロード

Firebase Consoleに入ったらまず、プロジェクトを作成します。
スクリーンショット 2017-05-09 11.27.37

スクリーンショット 2017-05-09 11.29.39

プロジェクトの作成が終わると、プロジェクトの管理画面が表示されます。

今回はAndroidアプリに導入するので、「AndroidアプリにFirebaseを追加」を選択します。

スクリーンショット 2017-05-09 11.30.36

作成したいアプリケーションのパッケージ名を設定します。

スクリーンショット 2017-05-09 11.31.58

Firebaseの導入に必要な設定ファイルをダウンロードします。

スクリーンショット 2017-05-09 11.33.05

その後は手順に従って進めていくと、アプリケーションが追加されているはずです。

スクリーンショット 2017-05-09 11.34.57

Firebase SDKを導入

次に、Androidアプリ側にFirebaseを導入していきます。

まず、Android Studioで、先に追加したアプリのパッケージ名と同じパッケージ名のアプリのプロジェクトを作成します。

スクリーンショット 2017-05-09 12.07.57

プロジェクトのapp直下にFirebase Consoleから取得した設定ファイル(google-services.json)をコピーします。

スクリーンショット 2017-05-09 12.21.29

ビルドファイルにFirebaseの設定を記述していきます。

トップレベル(プロジェクト/build.gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'com.google.gms:google-services:3.0.0' // この行を追加
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

アプリレベル(プロジェクト/app/build.gradle)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.eda.firebase"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

// バージョン定義
def supportLibVersion = '25.3.1'
def googleLibVersion = '10.2.4'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "com.android.support:appcompat-v7:${supportLibVersion}"
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    // Firebase
    compile "com.google.firebase:firebase-core:${googleLibVersion}"
    compile "com.google.firebase:firebase-crash:${googleLibVersion}" // 今回はcrashを使う
}

apply plugin: 'com.google.gms.google-services' // 最後に記述する

Firebase Crashを試す

アプリがクラッシュしたり、例外をキャッチした時に、Firebase Crashを導入していると、

エラーログを送信してくれます。これはFirebase Consoleから確認できます。

以下はテストコードです。

package com.eda.firebase;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.google.firebase.crash.FirebaseCrash;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View view = null;

        try {
            view.setEnabled(true);
        } catch(Exception e) {
            FirebaseCrash.logcat(Log.ERROR, "MainActivity", e.getMessage());
            FirebaseCrash.report(e); // 非致命的なエラー
        }

        // ここでアプリが落ちる
        view.setEnabled(true);// 致命的なエラー
        
    }
}

アプリが落ちたのを確認した後1~2分後には、Consoleでは以下のように表示されます。

スクリーンショット 2017-05-09 12.58.09

スクリーンショット 2017-05-09 13.02.01

「非致命的」というのが、コード内でtry catchで囲まれている部分です。

「致命的」というのは、onCreateの最後で実行している部分です。アプリが落ちるエラーの場合、こちらになります。

まとめ

Firebaseは最近はCould Functionの機能も追加され、ますますバックエンドとしての
機能が充実してきています。
皆さんもFirebaseを導入して、アプリ開発をどんどん楽にしていきましょう。

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。