• トップ
  • ブログ一覧
  • 【第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)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    笹川(エンジニア)

    笹川(エンジニア)

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background