Go勉強会 Webアプリケーション編 #1を開催しました!

こんにちは。
IDOMで主にNORELの開発を行っている、エンジニアの小林です。
先日、弊社にてGo言語勉強会「Webアプリケーション編」を開催させていただきました。

勉強会概要

go-golang.connpass.com

 今までは A Tour of Goの勉強会をMAMORIO株式会社様のオフィスで開催していただいていましたが、一段落したこともあり、今回は気持ちを新たにIDOMのオフィスでの開催していただくこととなりました。
 講師を努めて下さったのは、株式会社Origamiで普段はGoやSwiftを使って開発している、@tikidunponさんです。
 教材となるのは Go Web Examples ですが、なんと勉強会用に和訳ページも用意していただきました。

qiita.com

qiita.com

qiita.com

当日の会議室の都合で、MAX15人での募集となりましたが、あっという間に埋まってしまい、出席できなかった方にはご迷惑をおかけしました。
(次回は広い場所を用意して広々と使いたい・・!

当日の様子です。
20:00〜という遅めの開催ですが、大勢の人に集まっていただきました。
Go言語の注目度の高さが伺えますね。

f:id:idomlab:20180914171037j:plain

f:id:idomlab:20180914171048j:plain

f:id:idomlab:20180914171040j:plain

最初はアイスブレイクとして10分程度名刺交換や挨拶などを行いました。
こういう所でエンジニアの輪が広がるのはいいですね!
大きめのモニタに映した状態で説明していただきました。

f:id:idomlab:20180914171032j:plain

講師の@tikidunponさん。
Go言語での愛用エディタはVS Code。

f:id:idomlab:20180914171043j:plain

勉強会ふりかえり

Hello World編

  • HandleFuncにてリクエストパスに対するResponseの定義
  • HTTP接続のリッスン

HTTP Server編

  • 静的なアセット(画像ファイル等)の配信

Qiitaの記事通りにserver.goを書き、以下のように /static フォルダと画像を配置します。

f:id:idomlab:20180921083000p:plain

実際に起動すると、ディレクトリ構造がブラウザ上から確認できるようになりました。

f:id:idomlab:20180921083034p:plain

画像のリンクをクリックすると、ちゃんと画像も表示されます。

Routing編

  • gorilla/mux パッケージのインストール
  • Routerの設定
  • go-chi の紹介

Qiitaの記事の内容では、pathに指定した /books/{title}/page/{page} のtitleとpageがパラメータとして渡され、出力する文字を置き換えるようになっています。

出力は以下の通り。

f:id:idomlab:20180921084649p:plain

他にも、ハンドルするホストを制限したり、HTTPメソッドの制限など、gorilla/muxのルーティングでは様々な設定ができることに触れられていました。

また、gorilla/mux と似たルーティングをしてくれるライブラリとして go-chi/chi を紹介していました。

github.com

次回開催予定

次回、Go勉強会 Webアプリケーション編 #2(仮) は10月中旬頃を予定しております。
connpassで公開予定ですので予定の合う方は是非ご参加下さい!!

まとめ

今回は Go でWebサーバーを立てるための入門編となりました。
普段Spring Bootなどのフレームワークを利用していると、HTTP接続のリッスンなど明示的に書くことがあまり無い部分に触れることができました。

また、実際の勉強会ではライブラリのコードを直接参照することで、gorilla/muxgo-chi/chi の違いなどを説明しており理解が深まると同時に、ライブラリのコードも追うことができ、何かあっても直接コードを読んで対応できるという安心感が出ました。

Go ではフレームワークを使わずに、Webサーバーとして利用することも多いようです。
今回の復習だけではなく、A Tour of Go の復習もしっかりと行って、着実にGoでの開発スキルを身につけたいと思います。