Goを学び始めた(のでとりあえずDiscord botを作った)
この記事はアドベントカレンダー16日目です。
親知らず抜歯して元気だったら書きます と宣言したのですが、本当に元気だったので書いています。
昨日はikkyuのダークウェブをのぞいてみるでした。
Torについては2018年の映画「名探偵コナン ゼロの執行人」にて、少しもじった「Nor」が出てきたことからも少し話題になりましたね!(自分の周りだけかもしれない)
さて、今年の3月に「プログラミング言語Go完全入門」の期間限定公開のお知らせを見ました。
それから私はしばらく冬眠していたのですが、8月に「プログラミング言語Go完全入門」の「完全」公開のお知らせと更新されており、以前からGolang自体には触れてみたいと思っていたところではあったので、これを機に遊んでみました。
Go習得について、参考にしたもの
ここではGoに関する環境構築や詳しい書き方などについては省略します。Qiitaにもより良い記事がありますし、上に紹介した「プログラミング言語Go完全入門」は非常に学びやすいと思います。
そう前置きした上で、Goに触れてみての感想と、参考にしたものや辿ったものを簡単に紹介します。
タイトルにDiscord botを作った、と書きましたが、これについては非常に長くなるので別の記事にまとめます。
A tour of Go
Goのチュートリアルといえば、というぐらいメジャーなのがA tour of Goですね。(日本語版)
ローカルに環境を作らなくても常に画面の右側にPlaygroundがあるのでしっかり演習しながら進めることができます。演習問題は、完全なプログラミング初心者に向けたチュートリアルとしてはやや難しく、個人的には多言語から来た人にちょうどいいぐらいのものが多いイメージでした。
Dockerで環境が作れるとはいえ、若干環境構築が面倒臭いと感じていたのでこれで言語仕様を学んでモチベーションを上げつつ学習を開始しました。
プログラミング言語Go完全入門
Googleスライドに14章までまとめられていて、網羅的かつ演習つきなので完遂すればある程度は書けるようになっていると思います。
SlackチャンネルGopher Dojoへ参加することで動画コンテンツも参照することができます。私はインターフェースとゴールーチンあたりで若干こんがらがったので動画で学習しました。
また、スライド内で出される課題についてもSlackにてレビューしてもらえるそう。
その他参考にした記事など
めちゃくちゃ有名な記事ですが、環境構築で詰まった時に他言語から来た人がGoを使い始めてすぐハマったこととその答えを読みました。
Discord botを実際に作るとき、エラーハンドリングでかなり苦戦したので、Go言語のエラーハンドリングについてを参考にしました。
Goを触ってみての所感
とりあえずなんとかDiscord botが動く程度には習得しました。
兎にも角にもエラーハンドリングに苦戦しました。
私は複数のエラーをハンドリングする、という点でかなり詰まりましたが、たとえひとつやふたつのエラーであっても適切に処理するのは初心者には若干難しいなあ、と思いました。
また、どうしても if err != nil {
を無限に書いてしまい、結果的にきちんと網羅できているか怪しくなる(errcheckを使えという話ではありますが)という気がしてならないところではあります。
この辺りの感覚はまだ書き始めたばかりというのもあり、上級者からするとしょうもないことで悩んでいるな、といったものなのかもしれません。
とりあえず上質なコードをいっぱい読みながらDiscord botの機能充実に向けて頑張りたいと思います。
あとEbitenも気になっている。