2018年のゴールデンウィークは、ひたすらGo言語を書き続けた。なかなか良い言語だと感じることができなかったが、書き続けているうちに少しずつ良さがわかってきた。
A Tour of Goからはじめ、開発環境を構築し、コマンドラインツールやサーバーなどを色々書いてみた。普段使っている他の言語(SwiftやKotlin, Ruby, Pythonなど)に比べると、Null安全の機構がなかったり、高階関数(map, filterなど)がなかったり、「オブジェクト」に関する考え方が独特だったり、正直なところ書いていて楽しい言語だとは感じられなかった。Go言語が登場した2012年という時代を考えれば、コンパイラによる静的解析・型推論の優秀さとその恩恵は画期的だったはずなのだが、2018年現在、そこで感激することはできなかった。
ただ、書き続けているうちに少しずつ良さを感じる場面も出てきた。まず最初に感じたのはgo fmtによるソースコードの整形。Atomのgo-plusというプラグインを使うと、ファイルの保存時に自動的にgo fmtによるソースコード整形を実施できる。整形のスピードは非常にはやく、全くストレスを感じない。if文やfor文を追加・削除したり、コードのブロックを移動させた時に、ファイルを保存するだけで自動的にインデントなどを整えてくれるのは、結構無駄な作業時間を省略し、負担なくソースコードが綺麗な状態を維持してくれる。代入されたが参照されない変数があるとビルドが失敗になるというような厳格なコードのチェックも、ソースコードを綺麗に保つという点ではとても良い。
ある程度プログラムを書いて、サーバーにデプロイしたり他のマシンで動作させる、という段階になって、いよいよ本格的にGo言語の良さを感じることになった。特に感銘を受けたのはGoReleaserによるバイナリのリリース。YAMLで設定を数行書くだけで、作成したプログラムをGitHub上さらにはHomebrewで配布できる形でリリースできるようになり、その手軽さは素晴らしい。サーバーアプリも、RubyやPythonと違ってサーバー上に環境を構築しなくても、ローカルでビルドしたバイナリをscpやrsyncで転送すればそれだけで動作する、というのもとても手軽で、これらはまさにGo言語にしかない強みだった。
単純なプログラミング言語としては、Go言語よりもSwiftの方が書いていて楽しいし、多少複雑なウェブサービスをサクッと作るならRuby on Railsを使った方が良い場面は多いだろうし、諸手をあげてGo言語をオススメしたい訳ではないが、開発環境やリリースを含むエコシステム全体でみたときに、非常に強い印象を与える言語だった。特にソースコード整形の部分はとても良いなと思ったので、Xcode + Swift、Android Studio + Kotlin / Javaでも同じようなことができるようにしてみた。→SwiftFormatとSwiftLintで綺麗なソースコードを維持する
もう少し書き続けて、規模が大きいものを実際に運用しはじめたらもっと色々見えてきそうな気がするので、今後も継続的に書いていこうと思う。
関連リンク
- GoReleaser – Go言語で書いたプログラムをGitHubやHomebrewで配布するためのツール
- yokoe/tunacan – 画像の大きさを整えて結合するツールをGo言語に移植してみた。ツッコミ、フィードバックいただけると嬉しいです。
- みんなのGo言語 – ノウハウ把握のために読んだ本
- 【はじめてのGo言語】Go言語でアプリケーションを作ってみよう 〜こんにちは、世界編〜 – Atom + go-plusで快適なコーディング環境の作り方が載っている