【第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)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
笹川(エンジニア)
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。 日々、猫(犬)エンジニアとして活躍中!
おすすめ記事
移転したライトコード大阪オフィスを調査せよ!
広告メディア事業部
2024.04.03
日常
【GCP】BIG QUERYを触り程度に理解してみる
かねまさ(エンジニア)
2024.04.02
IT技術
【Android】Github ActionsでFirebase Test Labの実行を分散する
笹川(エンジニア)
2024.04.02
IT技術
【Next.js】App Router で使用できるキャッシュまとめ
モーリー(エンジニア)
2024.03.29
IT技術
GitHubActionsのランナーに触れてみた
こやまん(エンジニア)
2024.03.28
IT技術