Goご無沙汰してます。約2ヶ月ぶりの投稿になります。ここ2ヶ月くらいは社内のイベント向けのアプリを作ったり、Kubernetes勉強会に参加して初めてAWS触ったり、コンテナ周りで新人向けに講師としてスピーカーやったりと技術(特にDockerコンテナ)漬けの日々を過ごしておりました。技術だけじゃなく美味しいご飯どころも探さなきゃね。4月末から連休で時間ができたので新しいものに挑戦しようとGoに触り始めました。馴染みのあるWebアプリを作成して、Dockerコンテナにまとめるくらいはやろうと全速力でやったので記事投下です。ソースコード見たいよって方は以下のリンクからどうぞ。今まで手を出そうと思いつつ何も手をつけていなかったので、Goについては知識0からスタート。比較的最近出版された本ならばバージョンの違いでつまづくことは少ないはずなので、とりあえず『スターティングGo言語』買って3日ほどで手を動かしつつ読了。あとは作りたいものを完成させます。www.shoeisha.co.jpさっと書店で手に取った本にしてはアタリだった気がします。全7章建てで、基本で小分けに5章割いて、残りはツールやパッケージの話で2章。1つ1つのGoの仕組みを分解してコード例も沢山載せてくれているので、写経しているだけでもかなり書けるようになります。公式のドキュメントは分かりやすいし、サイトも見やすいので取っ付きやすかったです。似せて出力されるように設定してます。ログ出力は出力内容は柔軟に変えられるみたいですね。ポート1323で起動。全部突っ込むと後で見づらくなるので、外出ししてあげます。してルーティングしたときに返す関数をまとめてみました。u)}Dockerコンテナにまとめる関心があったのと同時に割と引っかかったのが、ここ。ビルドイメージ大きすぎなのが難点でした。GoはOS依存させないために、OSが標準で備えているようなライブラリを使わず、ランタイムとアプリで使うパッケージを全て実行ファイルの中に取り込みます。この性質があるため、少しコード量の多いアプリでも成果物が数百MBになるのもザラ。度にディスクと時間が取られるのでポータビリティの点から使いづらい。上記の問題があったため、ベースイメージを小さいものにするのに加えて、Dockerのマルチステージビルドで対応することしました。qiita.com通常だとソースコードを全てDockerコンテナに含めますが、Goは良くも悪くもソースコードからシングルバイナリ(実行ファイル)を作成するので、実行ファイルだけ入れればOK。下のコード例の(1)が実行ファイル作成のビルド、(2)が(1)で作った実行ファイルをコピーして作った最終系のコンテナイメージになります。イメージを使うことでさらに軽量化してます。908MB新しい技術(今回は言語でしたが)として今回はGoを選択しましたが、謳い文句の通りシンプルかつ効率的に開発&ビルドできたのはすごい...!!バイナリ単位でアプリはまとめられるので、マイクロサービスと相性が良さそうな印象です。fabricもGoで開発できるようなので、次はGoを使ってブロックチェーンに挑もうかなと夢が膨らんだところで締めます。月別アーカイブはてなブログをはじめよう!accelerkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。