【第2回】Go言語(Golang)入門~Firestore導入編~
IT技術
第2回~Go言語(Golang)を習得したい!~
(株)ライトコードの笹川(ささがわ)です。
前回に引き続き、今回もGo言語(Golang)の修得を目指していきたいと思います。
前回は、パッケージ管理ツールまで入れましたので環境は下記のようになっています。
端末 | Mac Book Pro |
OS | macOS Mojave 10.14.6 |
Golang version | 1.13 |
パッケージ管理ツール | dep |
IDE | VScode |
前回の記事はこちら
2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
Firestoreを利用してみる
これから何を書いていくか…?
迷ったのでTwitterでアンケートを取ってみました!
今日入門編書いたけど、次のGolangの記事どんなのがいいかな
— 笹のり (@sasa_nss_app) September 5, 2019
結果、「Fire Storeを使ったNoSQLの何か」が1位に!
今回は、Firestoreでなにかやってみようかと思います!
Firestoreとは?
FirebaseやGCPが提供しているサービスの1つで、いわゆるNoSQLのクラウドデータベースです
モバイルアプリケーションなどでは、各ローカルにデータベースを持ったりすることも多いですが、API側でデータを保存することも多いはずです。
本来ならば自分たちでデータベースを用意し、APIとしてのエンドポイントを用意しなければいけません。
しかし、Firestoreを利用するとGUIで設定をするだけで、その日から使えてしまう便利なサービスです。
もっと詳しく知りたい方は、Firestoreの公式ページをご覧ください!
関連記事
また、Firebaseのアカウント登録やプロジェクト作成の方法は、以下ブログを参考にしてみて下さい。
笹川は、個人開発でFirebaseを利用している関係上、そのまま利用したいと思います。
データベースを作成してみよう
【公式ドキュメント】
https://firebase.google.com/docs/firestore/quickstart?hl=ja
上記の公式ドキュメントを参考に進めていきたいと思います。
多言語の説明が1ページに集まっていて、「いつもの言語だとこう書くのか」とチラ見しながら出来るので優しいドキュメントだと感じます。
データベースの新規作成
データベースの新規作成から行ってみたいと思います。
モードは、お試し導入なので「テストモード」にします。
ロケーションは、特に設定できなかったのでそのまま「完了」にします。
(どうやら以前に何かしたので変えられませんでした)
構築完了を待ちます。
無事、構築できたようです
データベースの構築が完了しました。
Firebase側の設定は、一旦ここで終わりとなります。
次からは、Go言語(Golang)側での導入になります。
Firestoreの導入をしてみよう
ドキュメントには、go getを利用したやり方が最初に出てきます。
しかし、笹川は前回、depを入れているのでここはスキップします。
importに書いて、dep ensureすれば、Firestoreを導入できるはずです。
goファイルのimportにfirebaseの記述を追記
1package main
2
3import (
4 "fmt"
5
6 firebase "firebase.google.com/go"
7 "google.golang.org/api/option"
8)
9
10func main() {
11 fmt.Println("Hello , world")
12}
dep コマンドを実行します。
1$ dep ensure
エラーが出なければ成功です。
確認
念の為、導入できているか確認しましょう
1$ cd vendor/
2$ ls
3cloud.google.com firebase.google.com github.com go.opencensus.io golang.org google.golang.org
問題ないようです!
初期化してみよう
無事に導入をしたので、実際に初期化をして疎通確認をします。
今回は、GCPではなく、ローカルで作業をしているので「各自のサーバーで初期化する」の方になります。
サービスアカウントの作成
サービスアカウントを利用する必要があるので、GCPのコンソールから「IAMと管理」→「サービスアカウント」へ行きます。
サービスアカウントの作成方法は、以下のドキュメントを参考にします。
【インスタンスのサービス アカウントの作成と有効化】
https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances?hl=ja
練習用なので適当に作っていきたいと思います。
今回は、練習用なので「オーナー」にします。
一応、役割については、以下のドキュメントを参考にしてください。
【役割について】
https://cloud.google.com/iam/docs/understanding-roles?hl=ja
アクセス周りのオプションは、特に設定せず、鍵となるjsonを生成したいと思います。
1~2分で作成が完了します。
というわけで!
無事にサービスアカウントを作成し、ローカルにJsonファイルが保存されました。
Jsonファイルは、serviceAccount.jsonにリネームし、path/toに設置します。
ディレクトリがない場合は、作成が必要となります。
ファイル構造としては下記のようになるはずです。
ようやくFirestoreのドキュメントに戻ってきました。
main.go
main.goは、下記のように書きます。
1package main
2
3import (
4 "context"
5 "log"
6
7 firebase "firebase.google.com/go"
8 "google.golang.org/api/option"
9)
10
11func main() {
12 // Use a service account
13 ctx := context.Background()
14 sa := option.WithCredentialsFile("path/to/serviceAccount.json")
15 app, err := firebase.NewApp(ctx, nil, sa)
16 if err != nil {
17 log.Fatalln(err)
18 }
19
20 client, err := app.Firestore(ctx)
21 if err != nil {
22 log.Fatalln(err)
23 }
24 defer client.Close()
25}
実行
実行してみましょう!
エラーが出なければ初期化成功です!
お疲れさまでした!
これで、Firestoreの導入は終わりです。
第3回へつづく!
今回は、Firestoreの導入までです。
次回は、実際にデータ操作をしたり、モバイルアプリ(Flutter)などとデータ共有をしたりしたいと思います!
ちなみに、今回作成したgoファイルはこちらのリポジトリにて管理しています。
次回の記事はこちら
オススメのGo入門本
こちらの記事もオススメ!
2020.08.08Go言語 特集知識編人気急上昇中のGo言語(Golang)って何だ?実装編Go言語(Golang)入門...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
第1回の記事はこちら
2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。 日々、猫(犬)エンジニアとして活躍中!
おすすめ記事
immichを知ってほしい
2024.10.31