最近趣味でGo言語を触り始めました。
技術書やYoutubeに落ちている教材を見ながら学習を始めて1カ月ほど経ったので、振り返りを行います。
Go言語を選んだ理由
- ちょっと学習コストのあるサーバーサイド言語を触れるようになりたかった。
- Go言語がエンジニア市場で需要の高い言語なので、使えるようになりたかった。
ちょっと学習コストのあるサーバーサイド言語を触れるようになりたかった。
1年ほど前からフルスタック寄りの動きをしていて、サーバーサイド言語としてPHPを触っていました。
そこでweb開発的なAPIの開発やRDBの設計、クエリパフォーマンスなどを一通り経験し、サーバーサイドの言語の面白さに目覚めていきました。
そこで業務外ではPHP以外の言語も触りたいと思いGo言語に目を付けました。
自分はJsvaScriptのフレームワークではReact.jsが「設計思想がシンプルでしっかりしている」、「エコシステムが強力」、「学習コストは少しあるが、基礎を固めると使い回しが効く」といった理由でお気に入りなのですが、
サーバーサイドにおけるGo言語にもそれに近い魅力を感じました。
Go言語がエンジニア市場で需要の高い言語なので、使えるようになりたかった。
上記に加えてもう一つ、Go言語を学びたい理由としてエンジニア市場でのGO言語の価値の高さがありました。 メルカリ、サイバーエージェントなどを始め、多くの有名企業がサーバーサイド言語としてGo言語を採用していたりと市場において注目度の高い言語であった為、使えるようになりたいと感じていました。
また自分が関わった案件でも、
フロント:React.js
BFF:GraphQL
サーバー:Go言語
といった組み合わせでマイクロサービス化しているパターンにいくつか出くわしたので、マイクロサービスアーキテクチャーにてフルスタック的な立ち回りをするならGo言語が求められる機会が多そうだなと感じていました。
やった事
- スターティングGo言語(書籍)
- プログラミング言語Go完全入門
- software design
- 2019/5
- 2020/4
- 2020/5
- 2021/1
スターティングGo言語(書籍)
初学者向けのGo言語の書籍でした。 自分は最初に書籍を1週目を通して全体像や言語の特徴などを把握したいタイプなので、これから入りました。
主に文法事項について手厚く解説してくれているイメージです。その他、ツールやパッケージの使い方など、Goの言語使用についてふわっと学ぶことが出来ました。
ざっと通しで読んだ後は、他の教材で理解に詰まった時に振り返ってパラパラ読んでいます。
所要時間は2h程。
プログラミング言語Go完全入門
メルペイのtenntennさんが公開しているGoの学習コンテンツです。 https://engineering.mercari.com/blog/entry/goforbeginners/
youtubeとスライドの教材でボリューム感もあり、途中途中に手を動かす例題もあるので、とても勉強になりました。
4~5章を特に何度も繰り返し見ています。
昇段試験や課題なども難易度が高く、自分は現在も全然解けていません。
そこでsoftware designでGoを扱っている内容に寄り道することにしました。
software design
- 2019/5月号
入門Goの全体に目を通しつつ、3章のコマンドラインツール、4章のwebアプリの章は手を動かしてやりました。コマンドラインツール作成の前提的な流れなどを掴むにはちょうど良いボリューム感でした。 - 2020/4,5月号
先ほど紹介した「プログラミング言語Go完全入門」のtenntennさんがコラム連載をしていたので、目を通しました。
出入力でよく使うコマンドの紹介が主でした。 - 2021/1月号
この回は基本事項だけでなくゴルーチンやチャネル、コンテキスト、エラー処理など応用的な内容を扱っていました。
難しい部分も多く、まだまだ消化不良ですが、GO言語のシンプルゆえの奥深さにハマっていくには良い導入になっているんじゃないかなと思っています。
感想
静的言語という事で最初の取っ付き難さはありますが、慣れてくると書き方はシンプルでむしろ良く感じます。
Go言語がコンパイラ言語であるという特性を生かして、コマンドラインツールなど普段のweb開発とは違った種類の物を作る機会が増えた点が新鮮です。
来月にはweb開発のサーバー言語としてどのように使われているのかを知っていければと思います。