どうもこまもかです。
今回はAblaze内でのGo使った取り組みについて紹介します。
Go採用の経緯
僕がGoを知ったきっかけは、SheeplaさんがGoを使った便利なCUIツールを作っているのを見たことです。
ソースコードを読んでみるとktr0731/go-fuzzyfinderというあいまい検索のUIを簡単に構築できるライブラリを使っている事が分かり、
実際にツールを作って見ようと思い開発を始めました。
そして出来上がったのがfreasearcherです。
その後にはライさんがConsoleTranslateで採用してくださったりなど、Ablaze内でのGoの利用事例が増えていきました。
今ではAblaze内で使う小さなツールなどの開発にも使われています。
また、サーバーのバックエンドを開発する動きも出てきています。
増えた理由
Ablaze内でGoの活用事例が増えた理由として、以下の要素が挙げられます。
- 知名度があった
AblazeではDockerを用いた開発もしており、Dockerの開発言語がGoであることからもメンバー内でのGoの知名度は高かったです。
- シンプルで書きやすい
Goは言語仕様がシンプルなので、他の人が書いたプログラムも読みやすくなりやすいです。
また、プログラムの保守がしやすくなるというメリットもあります。
また、静的型付けであるため型が違う事によるバグが大幅に減りました。
- ライブラリが豊富
Goはライブラリが豊富なので、自分が作りたい機能は割とライブラリで作れたりします。
また、シンプルな構文、静的型付けも相まって高速に開発を進めることができます。
- バイナリ化できる
以前この様なプログラムはPythonを用いて書かれていました。
しかしPythonは環境依存のエラー、ライブラリなどのトラブルが起こることもあり、他の人にツールなどを共有することが難しい面がありました。
しかし、Goはバイナリを生成できるのでこの様なトラブルとおさらば出来ます。これはかなり嬉しいポイントでした。
- ツールが優秀
Goは言語の周辺ツールがとても優秀です。
例えば構文チェックのgo vet
や、フォーマッタgo fmt
、LSPサーバーのgopls
などです。
特にgoplsはimport文を自動挿入してくれたりと開発時の良いパートナーになっています。
- 高速なプログラムが書ける
GoはJavaと同程度の速度が出るので、サーバー向けの用途にかなり向いています。
また、並列処理をスッキリと書けるのでさらなる高速化も期待できます。
- Gopherがかわいい
やはりこれです。Goがここまで広まったのはGopherがかわいいからです。これに勝る理由はありません。
布教にあたって
新しい技術を布教する一番いい方法は実際に自分がやっている所を見せるです。
いくらその技術の素晴らしさを言葉で表現してもなかなか広まりません。
その技術を使う事によって得られる利益、それを周りの人に見せることでより良く広めることが出来る。
今回の事例でその事を実感しました。
今回はAblazeでGoを広めた話を書きました。僕は次に布教する技術を探していきたいと思います。