VSCode+Java+MavenでFirestoreにデータ登録
Firestoreへのデータ読み込みや書き込みを、
で確認してきたんだけど、データをバッチ登録したりしたいので、VSCode と Javaで環境を作る。
1.VSCodeの準備
1.1 Java Extension Pack のインストール
Extensionsで、Javaを検索して拡張パックをインストール
1.2 Javaプロジェクトの作成
左下の JAVA PROJECTS から、Create new Java project を選択し、さらに Maven を選択。
1.3 Mavenのテンプレートを選択
maven-archetype-quickstart を選択
ダウンロードが実行されると共に、TERMINALで、groupId と artifactId をタイプして、プロジェクトの雛形を作成する。
1.4 依存性の記述
pom.xml に依存ライブラリを追記
https://firebase.google.com/docs/admin/setup?hl=ja#java
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>7.0.1</version> </dependency> </dependencies>
pom.xml を変更すると、変更を検知して以下のようなダイアログが表示される。Nowを選ぶとダウンロードが開始
~/.m2 以下にダウンロードされ参照設定が行われる。
2.Google Cloud Platform の設定
2.1 認証ファイルのダウンロード、GCPの管理ページ、IAM から、サービスアカウント鍵を作成で、JSON形式でダウンロード
2.2 認証ファイルを環境設定
保存してPATH を環境変数にexport ~/.bash_profile
export GOOGLE_APPLICATION_CREDENTIALS=”/home/user/Downloads/service-account-file.json”
.bash_profile をリロードし、確認
ash-3.2$ source ~/.bash_profile bash-3.2$ env | grep "GOOGLE" GOOGLE_APPLICATION_CREDENTIALS=/Users/hirotoyagi/keys/typea-info-service-xxxxxxxxxxx.json
以下のコードで、認証情報ををロードする
FirebaseOptions.builder().setCredentials(GoogleCredentials.getApplicationDefault())
3.サンプル実装
3.1 上記まで準備しFirestoreに登録するサンプルを作成
package info.typea.songdict.sample; import java.util.HashMap; import java.util.Map; import com.google.api.core.ApiFuture; import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.DocumentReference; import com.google.cloud.firestore.Firestore; import com.google.cloud.firestore.WriteResult; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.cloud.FirestoreClient; public class FirestoreSample { public void doEntry() { FirebaseOptions options; try { options = FirebaseOptions.builder().setCredentials(GoogleCredentials.getApplicationDefault()) .setDatabaseUrl("https://typea-info-service.firebaseio.com") .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore(); DocumentReference docRef = db.collection("songdict").document("v1") .collection("work").document("test"); Map<String, Object> data = new HashMap<>(); data.put("first", "Ada"); data.put("last", "Lovelace"); data.put("born", 1815); //asynchronously write data ApiFuture result = docRef.set(data); // result.get() blocks on response System.out.println( String.format("Firestore updated at : %s", result.get().getUpdateTime())); } catch (Exception e) { e.printStackTrace(); } } }
3.2 実行しFirebaseコンソールから、Firestoreを確認
実行で、Firestore にデータが登録できた!!