ソフトコミュ開発ブログ

SoftCommu は Javaアプリ、Androidアプリの開発を行うディベロッパーです。人材教育もやっています。企業の新人研修の講師からスカイプでのオンライン家庭教師まで!技術書の執筆や翻訳もしています。
2017.03.17 Friday
Java で Firebase を使う方法のまとめ。

Androidではない、普通の Javaプログラムから Firebaseを使う方法のまとめです。

 

Android 端末上で Firebase を使う方法はネット上に結構ありますが、

普通の Javaコードから Firebase を使う方法がほとんど見当たりませんでしたのでまとめてみました。


Java のデスクトップアプリで Firebase を使うには、

Google が提供している WEBサーバー用の Java SDK をそのまま使用します。

 

これは、もともとWEBサーバー用の Java SDK ですから、

当然、WEBサーバーの開発環境にも使えます。

 

というわけで、

アンドロイド以外のプラットフォームで

Java から Firebase を使うすべてのケースで、

この記事を参考にしていただけるかと思います。

 

基本的には下記のオフィシャルサイトに書いてある通りの手順に従うことになります。

 

https://firebase.google.com/docs/server/setup


ただ、上記のサイトでは、細かいところの記載が結構省略されており、
実際に作業してみると意外にハマってしまうことがあります。

そのような場合は、この記事を参考にしていただければと思います。

 

(1) まずは Firebase 上でプロジェクトを作成します。

 

下記のサイトに Google アカウントでサインインしてください。

 

https://console.firebase.google.com/

 

下記の「新規プロジェクトを作成」ボタンをクリック

 

 

プロジクト名は何でも良いので自分にとってわかりやすい名称にしておきましょう。
国/地域もどこでも良いのですが、日本で使われるアプリを開発する場合は、日本にしておくと良いと思います。

 

 

プロジェクト名と国/地域を設定したら「プロジェクトを作成」ボタンをクリックします。

しばらく待つと Firebaseのプロジェクトが作成されます。
 

(2) 認証情報のJSONファイルを取得する。

 

プロジェクトの作成が完了したら、左上の方にある設定アイコン(歯車アイコン)をクリックし、表示されたメニューの「権限」を選んでください。

 

 

なお、上記の画面上の目立つところに「ウェブアプリに Firebase を追加」という項目があるので、思わずクリックしたくなってしまいますが、そちらは JavaScript などを使ってブラウザ側で動作するWEBアプリを開発するためのものです。

 

今回は、JavaScript などではなく、Java によるデスクトップアプリ、あるいは JaveによるWEBアプリの開発ですので、別の方法で認証情報を取得する必要があります。その方法を下記で説明します。

 

上記の「権限」をクリックすると自動的に、Google Cloud Plarform の IAMと管理 にページが切り替わります。ここから Javaアプリから Firebase にアクセスするために必要な認証情報を取得することにしましょう。

 

まず、左側の「サービスアカウント」をクリックしてください。そして画面中央の「サービスアカウントを作成」をクリックします。

 

 

下記のようなダイアログが表示されますので、必要な情報を入力します。

 

 

1. サービス アカウントの名前は適当なものを指定してください。
2. 役割を「編集者」にします。(「編集者」という選択肢はリストボックス内の選択肢、Project の下位項目です)
3. 「新しい秘密鍵の提供」にチェックを入れてください。 「キーのタイプ」 は デフォルトのまま「JSON」にしておきます。
4. 「G Suite ドメイン全体の委任を有効にする」はデフォルトのままオフにしておきます。
5. 上記の項目の設定が終わったらダイアログ右下の「作成」 をクリックしてください。
6. 認証情報を含んだ JSONファイルのダウンロードが始まります(小さいファイルですので一瞬でダウンロードが終わります)。このファイルを大切に保管しておいてください。このファイルのダウンロードは、一度だけしかできませんので、なくさないようご注意ください。

 

 

このステップで取得した JSONファイルは、後程、Javaアプリ内で読み込んで、Firebase APIの認証情報として使用します。

 

(3) Firebase SDK の JARファイルを入手して、エクリプスで Javaプログラムのプロジェクトを作成する。

 

まずは、Firebase SDKが必要ですね。

これは JARファイルとしてネット上で公開されています。

Maven のリポジトリは下記のとおりです。

 

https://mvnrepository.com/artifact/com.google.firebase/firebase-server-sdk

 

上記のサイトから Firebase の SDK のJARファイルをダウンロードして、

それをエクリプスのプロジェクトに外部JARとして登録することになります。

 

* もし、そんなにめんどくさいことはしたくない、

  Maven を使って自動的にライブラリをダウンロードしたい、

  という方はこの部分は読み飛ばして、下記の(4)の手順にスキップしてください。

 

 

この記事を書いている時点での Java用 Frirebase SDK の最新バージョンは、3.0.3 です。

上記の赤枠をクリックします。

そうすると、下記のようなページが表示されますので、ここからJava用 Frirebase SDK の JARファイルをダウンロードすることが可能です。

 

 

上記の赤枠をクリックすると、firebase-server-sdk-3.0.3.jar というようなファイルをダウンロードすることが可能です。

 

 

ただ、実はこの JARファイルを実行するために、依存関係がある他の JARファイルをたくさんダウンロードしなければなりません。

依存関係があるファイルは下記のとおりです。

 

 

そして、上記の各JARファイルにも、それぞれ依存関係があり、

それらを全部たどっていくとイモヅル式にいろいろな JARファイルをダウンロードしなければなりません。

とりあえず、下記のJARファイルが入手できれば Firebase SDK は一通り動作するようです。

 

firebase-server-sdk-3.0.3.jar
google-api-client-1.22.0.jar
google-api-client-gson-1.22.0.jar
google-http-client-1.22.0.jar
google-http-client-gson-1.21.0.jar
google-oauth-client-1.22.0.jar
gson-2.6.2.jar
guava-jdk5-17.0.jar
json-20160212.jar

 

これらのファイルをエクリプスの Javaプロジェクトの外部JARとして登録すれば準備はOKです。

 

ただ、やっぱり上記の JARファイルを一つずつダウンロードしていくのは骨が折れますね。

というわけでやっぱり Maven を使いましょう。

Maven でのプロジェクト作成に関しては次のステップ(4)で説明します。

 

(4) エクリプスで Maven プロジェクトを作成する。

 

上記の (3) の手順ですでにプロジェクトを作成した方は、このステップの作業の必要はありません。

上記の (3) の手順をスキップした方だけ、下記の手順で作業してください。

 

エクリプスの File → New → Project メニューを実行して表示されるダイアログで、Maven → Maven Project を選び、Next を押してください。

 

 

上述の Maven プロジェクトを作成するメニュー項目がない場合、エクリプスにプラグインが導入されていないということになります。

その場合には、まずは Mavenのプラグインを導入してからこのステップに戻ってきてください。

そのための方法はネットを検索するとたくさん出てきます。


プロジェクト用のフォルダを作成する位置を適当に指定してください。

そして Next をクリック。

 

 

次に表示されるページは下記のようになります。

ここではプロジェクトのひな型となるコードを自動生成するための Archetype を指定します。

 


Archetype はご利用の目的にあったものを選んでください。

ここでは、単純な Javaのデスクトップアプリを作成するので、無難に maven-archetype-quickstart を選択することにします。

Next をクリック。

 

次の画面では、Group Id と Artifact ID を指定します。

Group Idと Artifact Idは任意の文字列で Javaのパッケージ名などに使われます。

Artifact Idはこれから作成するプロジェクトの名前となります。

お好きな文字列を指定してください。

 

 

上記の例では、Group Idに私の事業者名である SoftCommu を指定し、Artifact Id には JavaFirebaseSampleApp と設定しています。

 

設定を入力し終えたら Finish をクリックしてください。

エクリプス上で Maven プロジェクトが作成されます。

作成されたプロジェクトはエクリプスのプロジェクトエクスプローラー上に下記のように表示されます。

 

 

上記画像内の一番下に、pom.xml というのが見えますね。

ここに Firebase SDK の情報をセットし、Javaコード内で使用できるようにしましょう。

 

エクリプスのプロジェクトエクスプローラー上でpom.xml をダブルクリックしてください。

下記のような画面が表示されます。

下の方のDependencies というタブをクリックしましょう。

 

 

下記画面では、左側の Add ボタンをクリックしてください。

 

 

そうすると下記のような Select Dependancy ダイアログが表示されます。

 

 

上記の赤枠の部分にFirebase SDK の情報を入力しましょう。
必要な情報は、すでにステップ(3)でも言及した下記の Maven Repository から入手できます。

 

https://mvnrepository.com/artifact/com.google.firebase/firebase-server-sdk/3.0.3

 

 

上記の赤枠内のテキストに Maven が必要する情報が記載されています。それをコピペしたのが下記のテキストです。


<!-- https://mvnrepository.com/artifact/com.google.firebase/firebase-server-sdk -->
<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-server-sdk</artifactId>
    <version>3.0.3</version>
</dependency>

 

上記の XMLファイルを見ると Java用の Firebase の SDK は・・・

 

groupId が com.google.firebase
artifactId が firebase-server-sdk
versionが 3.0.3

 

・・・となっていることがわかります。

 

これをそのまま Select Dependancy ダイアログに記入します。

 

 

groupId、artifactId、version の情報を入力したらOKをクリック。

そうすると、下記のように Firebase SDK が依存ライブラリ一覧に追加されます。

 

 

これで Firebase SDK の Maven リポジトリをプロジェクトに登録しましたが、

まだ必要な JARファイルそのものはダウンロードされていません。

なので、ここでダウンロードしておきましょう。

 

エクリプスのプロジェクトエクスプローラーでプロジェクト名(今回の例では JavaFirebaseSampleApp)を右クリックし、表示されるポップアップメニューから Update Project を実行します。

 

 

これにより、必要な JARファイルがダウンロードされ、無事に Firebase の Java用 SDKの導入が完了です!

 

(5) Java コードを書いて実行してみましょう。

 

このステップでは上記ステップ(2)で取得した Googleからの認証情報を含んだ JSONファイルが必要になります。

下記のようなコードを書きます。

 

 

コードの仕組みを簡単に説明します。

 

まず。JSON_FILE_NAME には、ステップ(2)で取得したJSONファイルのパスを指定してください。

そのファイルを InputStream に乗せて、FirebaseOptions.Builder に引き渡します。


同時に Firebase のリアルタイムデータベースの URL も指定します。

 

この再指定する URL は・・・

 

https://プロジェクト名.firebaseio.com/

 

・・・という構成になっています。

 

つまり、今回の例では・・・

 

https://javafirebasesampleapp.firebaseio.com/

 

・・・となります。

 

プロジェクト名は JSONファイル内に記載してある project_id を参照してください。

この URL の構成と、project_idが一致していないと動作しません。

あとは、FirebaseApp.initializeApp() にこの情報を引き渡し、

FirebaseDatabase.getInstance().getReference() で取得したリアルタイムデータベースの参照にキーと値を書き込んでいきます。

 

最後にwhile()文で永久ループにしてプログラムが一瞬で終了しないようにしています。

 

なぜわざわざこんなことをしているかというと、

プログラムの実行が瞬時に終わってしまうと、

通信処理が完了する前にプログラムそのものが死んでしまうからです。

 

setValue()メソッドが呼ばれた時点では、まだ通信処理がキューに入っただけです。

それでちゃんと Firebase の通信処理が完了するまで、プログラムが生きているようにしておく必要があります。

 

上記の処理をすると Firebase のリアルタイムデータベースに、それぞれのキーと値が書き込まれます。

下記が、実行後のリアルタイムデータベースの様子です。

 

 

以上、Javaプログラムから、Firebase SDK を使用する方法でした!

 

 

ソフトコミュでは、スカイプによる Java や Androidプログラムの

オンライン家庭教師を受け付けています。

料金は30分2,000円から。

ネット検索しながら何日も悩んだ問題が、たった30分で解決すると大好評です!

興味のある方はソフトコミュのホームページからご連絡ください!

 

 

 

| SoftCommu | Java | 12:20 | comments(0) | - |
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
+ 人気の記事
1位: ズバリ、ラムダ式 (Lambda)とは何か? それを使うと何がうれしいのか?

2位: Android エミュレータが起動しない場合の復旧手順

3位: Android Studio で "SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable" と表示される問題の原因と対応策

4位: Android 7.0 から Intent の getSerializableExtra() が使えなくなってしまいました!

5位: エミュレータの Google Play Services のバージョンが古いために Google Maps などを使用したアプリが動作しない場合の対応策

6位: Proguard を使用してリリース用APKを出力しようとした際にエラーになるケースの対応策

7位: OneDrive でオフィス文書が同期できなくなるケースの対応策

8位: Java で Firebase を使う方法のまとめ。

9位: Arduino の開発環境に ZIP形式のライブラリをインストールできない場合の対処方法

10位: Bitbucketから、指定した時点でのファイルをすべてまとめて zip でダウンロードする方法

11位: Android Studio で2台のパソコンを行き来しながら開発作業をする方法

12位: AWS (Amazon Web Service) で動作している WEBアプリを SSL対応(HTTPS対応)にする

13位: AWS (Amazon Web Service) の公式ドキュメントで 「HTTPS を終了する」とはどういう意味か?

14位: エクリプスでテキストエディタの背景色を黒っぽくしたらデバッグ中にどの行にいるのかわからなくなった場合の対応策

15位: 任意のレジストラで取得したドメインのSSL認証を AWS で無料で取得し、Elastic Beanstalk の WEBアプリを https で公開するまでの手順まとめ

16位: マイクロソフトの API仕様変更に伴う 「OneDrive API活用術」のサンプルコードの修正のお知らせ

+ ARCHIVES
+ CATEGORIES
+ MOBILE
qrcode
(C) 2016 SoftCommu All Rights Reserved.