• トップ
  • ブログ一覧
  • 【第2回】Go言語(Golang)入門~Firestore導入編~
  • 【第2回】Go言語(Golang)入門~Firestore導入編~

    笹川(エンジニア)笹川(エンジニア)
    2019.09.17

    IT技術

    第2回~Go言語(Golang)を習得したい!~

    (株)ライトコードの笹川(ささがわ)です。

    前回に引き続き、今回もGo言語(Golang)の修得を目指していきたいと思います。

    前回は、パッケージ管理ツールまで入れましたので環境は下記のようになっています。

    端末Mac Book Pro
    OSmacOS Mojave 10.14.6
    Golang version1.13
    パッケージ管理ツールdep
    IDEVScode

    前回の記事はこちら

    featureImg2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    Firestoreを利用してみる

    これから何を書いていくか…?

    迷ったのでTwitterでアンケートを取ってみました!

    結果、「Fire Storeを使ったNoSQLの何か」が1位に!

    今回は、Firestoreでなにかやってみようかと思います!

    Firestoreとは?


    FirebaseやGCPが提供しているサービスの1つで、いわゆるNoSQLのクラウドデータベースです

    モバイルアプリケーションなどでは、各ローカルにデータベースを持ったりすることも多いですが、API側でデータを保存することも多いはずです。

    本来ならば自分たちでデータベースを用意し、APIとしてのエンドポイントを用意しなければいけません。

    しかし、Firestoreを利用するとGUIで設定をするだけで、その日から使えてしまう便利なサービスです。

    もっと詳しく知りたい方は、Firestoreの公式ページをご覧ください!

    関連記事

    また、Firebaseのアカウント登録プロジェクト作成の方法は、以下ブログを参考にしてみて下さい。

    featureImg2019.07.04FirebaseをデータベースとしてFlaskアプリをHerokuへとデプロイしてみたFlaskアプリをHerokuへとデプロイするまでの手順Pythonによって動かすことができるFlaskですが、Dja...

    笹川は、個人開発で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ファイルはこちらのリポジトリにて管理しています。

    次回の記事はこちら

    featureImg2019.09.26【第3回】Go言語(Golang)入門~Firestoreデータ操作編~第3回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です。今回でGo言語(Golang)...

    オススメのGo入門本

    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る

     

    こちらの記事もオススメ!

    featureImg2020.08.08Go言語 特集知識編人気急上昇中のGo言語(Golang)って何だ?実装編Go言語(Golang)入門...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    第1回の記事はこちら

    featureImg2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    笹川(エンジニア)

    笹川(エンジニア)

    おすすめ記事