6
4

More than 1 year has passed since last update.

Javaで飯食ってるエンジニアがGolangを学んでみる~Ginを使ってHelloWorld編~

Last updated at Posted at 2021-09-26

今回は実際にローカルでGolangのフレームワークGinを用いて、ブラウザに「Hello World」を描画してみようじゃないかということで、
結構苦戦した結果、Hello Worldできたので、苦戦の証というか、はまりポイントを覚えている範囲で残しておこうと思います。

※結構雑になってしまってるので、適宜更新はするつもりではいますが、とりあえず自分がわかるので公開しちゃいます。

なおGolangについては、少なくとも弊社のプロダクトでは使われていない(と思う)し、周りにやっている人も(知る限り)聞いたことないので、完全独学です。
そのため、もがきあがいた結果なので、「もっとこうやったら楽なのに~」とかあったらコメントなどでご教示いただけるとありがたいです。

ローカルの環境

  • macOS Big sur11.6
  • Safali 15.0
  • Editor VSCode

※普段の仕事ではWindowsなのでマジで慣れてません(自宅にはWindowsのデスクトップとMacBook Airがあります)

Hello worldまでの流れ

ざっくり、流れをメモっておきます。

  • Goのインストール
  • 【はまりポイント1】GitHubでrepo作成&pull
  • 【はまりポイント2】gomoduleのセットアップ
  • 【はまりポイント3】Ginのインストール
  • 実行

Goのインストール

「キノコード / プログラミング学習チャンネル」の以下の動画を参考にやりましたので割愛します。
【Go言語 超入門コース】03.環境構築 for Mac|プログラミングをする準備をしよう!【プログラミング初心者向け入門講座】

ここでターミナルでHello WorldできればローカルでGolangが動かせるところまでは完成です。

※ここまでは余裕でした

【はまりポイント1】GitHubでrepo作成&pull

GitHubにリポジトリ(以下Repoと記載)を作成

ローカルで作成した階層をGithubに突っ込む方法がよくわからなかった(できるかも不明だった)ので、まずGitHubにmygo-testみたいな適当なRepoを作っておきます。

Goインストールの段階で$GOPATHなるものが生成されていると思います。ターミナルで

$ cd $GOPATH
$ mkdir src

の順に実行します。
カレントディレクトリは$GOPATHになっていると思うので、以下のようになっていることをlsコマンドで確認してみましょう。
※3つのディレクトリが$GOPATH以下にあることが確認できると思います

$GOPATH ┬ bin
        ├ pkg
        └ src 

最後に

cd src

カレントディレクトリがsrcになったら、ここにmygo-testをクローンします。
※Golangは$GOPATH以下にすべてを置くルールがあるらしいです。(記事紛失)

クローンは通常通り

git clone https://github.com/XXXXX/mygo-test.git

となります。

$GOPATH ┬ bin
        ├ pkg
        └ src - mygo-test

のようになったことを確認しましょう。
そしたらひとまず、このmygo-testをVSCodeで開きます。

(ターミナルでHello Worldくらいは確認してもいいでしょう。)

ここから本題

適当なファイルを作成し、(私はgreetingフォルダにgreeting.goを作って実験しました)
実際にコミットしていきます。

VSCodeでのGit操作については、「たにぐち まことのともすたチャンネル」の以下動画を参考にしましたので詳細は割愛します。

Visual Studio Code入門 #07:Gitクライアントはもういらない! VSCodeで、Gitを使いこなそう

、、、ところが!私はここでつまずきました。

1、コミットが全然できない

VSCodeで編集したコードをcommitしGitHubにpushしていくのですが、
初めての場合は認証をチェックするっぽいです。

もうでなくなったのでダイアログ見せられないのですが、
ダイアログに従っていくとGitHubの画面でtokenが発行されます。

このtokenどこに書き込んだり入力したりするのか不明だったのですが、
VSCodeに戻ってくると一番下の部分にクルクルなっていた。

スクリーンショット 2021-09-26 17.52.18.png

そこを押すとコマンドパレットに誘導されまして、
そこに入力すればよかったのです。

2、pushができない

commitはできました。が、次はpushができません。
どうやらVSCodeに設定が必要なようです。

が、これについては前出の動画で解説されていたので、無事pushできました。

【はまりポイント2】gomoduleのセットアップ

先に言うと以下の3記事で解決したのですが、後述する【はまりポイント3】Ginのインストールだけだと駄目だったようです。

記事の内容で理解できたので、詳しい内容は割愛しますが、

go get -u github.com/gin-gonic/gin

だけだとなんかダメなんです。

GO111MODULE=on

にしたうえで

go mod init mygo-test

が必要だったのです。

すると、go.modというファイルができるので、後はここに【はまりポイント3】Ginのインストールの内容を反映させればOKみたいです。

【はまりポイント3】Ginのインストール

最後のはまりポイントなのですが、実際は↑の順にやれていればはまらなかったと思います。
シンプルに

go get -u github.com/gin-gonic/gin

を実行すると、src以下にいろいろ落ちてきますよ~と。
そいつをライブラリとして用いることができるわけです。
なお、github.commygo-testと同じ階層に並ぶことになります。

これであとはブラウザ描画用のコードを書けばOKです。

ターミナルで

go run main.go

のようにやれば

[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080

のようなログが出るので、これであとは

でHello Worldが出れば成功です!

スクリーンショット 2021-09-26 17.50.26.png

最後に

Javaだったらここにたどり着くまでたぶん30分かからないと思うが、合計で5時間くらいかかったかな。
慣れってすごい、恐ろしい。

Appendix

↓Hello Worldやったコード(はちゃめちゃですがmain.goとindex.html)

6
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4