はじめに
昨年Go言語を習得しました.この記事では私がどのようにGo言語を習得したのか,参考にした本や記事,Go言語への感想などについてつらつらと書き記します.
動機
まず私がなぜGo言語を習得しようと思ったか,主たる動機はバックエンド開発言語のスタックを増やしたかったからです.
それまでにバックエンドの開発言語としてPHPやKotlinを使用していました.
しかしインターンなどの募集が少ないことや実行速度の遅さ,コーディングスタイルが合っていなかったことから別の言語を探していたところGo言語に出会いました.
Go言語と出会い私は一目惚れしました.
シンプルで見やすく書きやすいコード,コンパイル速度の速さ,応答速度の速さなどGo言語の特徴すべてが私にマッチしているような,そんな気分でした
学習
Go言語入門としてまずは公式のA Tour of Goから始めました
それまで.Net開発などでMicrosoftにお世話になっていたので同時にMicrosoft Learn : go get startedも参考に基本文法から概念まで基礎的な部分を学びました.
books
A Tour of Goを終えて次に紙媒体に手を出そうとオライリーのGo言語系を買い漁りました.
専門書なので若干値段が張りますがどれも楽しく読めました!
始めてのGo言語
Go言語の基本文法からプロジェクトの設計方法まで基礎的な部分を包括的に学ぶことが出来ました
実用Go言語
実際のシステム開発の現場での開発方法であったり,よりGoらしく書くにはなど面白い本でした
Go言語による分散サービス
Go言語で実際に分散サービスを作成する手順が書かれていました.
効率的なGo
これは比較的最近発売された本です.今読み進みています
習得難易度
習得難易度としてはそれほど高くないように思います.
私がC言語もとい他にも8言語ほど技術的なスタックがあったのも要因かもしれませんがスラスラと飲み込めました.
しかしGo言語特有の書き方や考え方に少し戸惑う部分がありました.
Go言語ではシンプルさ,読みやすさをとにかく求めるためにたまに「あるだろ!」と思ったことがなかったりします
例えば3項演算子はPython2.5で実装されたときにGoでも実装するか否かと議論が行われたそうです.
他の方の記事ですがとてもわかりやすかったです!
いざ開発
開発をしました!
私は色々言語を習得しているのですがやはり実践で得られるものは大きいと感じています
今回は私が昔計画したもののメンバー不在により頓挫したプロジェクトのバックエンドを書いてみました.
このプロジェクトで
Jwtでのセッション管理
MySQLを利用したデータのCRUD用API
WebSocketによるセッション付きのリアルタイム通信
などを実装しました.
Go言語はJsonと相性が良かったためAPIの実装がかなり早く出来ました.
WebSocketで実際にGoroutineを利用した時はその強力さにも惹かれました
Go言語特有のエラーハンドリングでif err != nilを何度書いたかと思ってしまいますが,それでもGo言語について理解を深められたのではないかと思います.
今後の展望
まずはGo言語の魅力を知ることができ,技術スタックも一つ増えたのでGo言語でインターンに行って実際のプロダクト開発を経験したいと思います.
Go言語は今まで書いてきた言語のどれよりも自分にマッチしている気がしています.
今後ともGo言語を書き続けたいと思います
直近ではGraphQLについて興味を持っているのでまずは簡単にNext.jsなどでフロントをつくりながらSNS系を実装してみようと思います.