サムネイル画像

私はかねて昔からGoを書いてみたいと思っていた。 思っていたけれども、なかなか書き始めることができなかった。 Go言語に限らず心理的なバリアはいくつかあったのだが、Rubyを書くのが快適すぎて新しい言語を始められないのがおそらく最も大きい要因だったと思う。

あとはGo言語を始めるにあたってあの有名なA Tour of Goをすべて読了しようと思っていた。 しかし当時の私は最後まで完了できずに挫折した。 適当に読み飛ばせば良いものを、エクササイズをすべて理解しようと思っていたのだと思う。

そういう諸々をすべてすっ飛ばして今日Goを書いてみようと思ったのは心強いメンターがいるからだ。

そうChatGPTである。

個人的にGitHubのCopilotも使っているのだが、大枠の部分はChatGPTと壁打ちしながらコードを書くのが最近は楽しい。 これは広義におけるVibe Codingに含まれるとは思うのだけれども、まったくすべてのコードの生成を頼るよりは本当にペアプログラミングの相棒のような存在である。 とても素晴らしい。

御託はさておき、GitHubにリポジトリを公開した。

Git Renamer

このプロジェクトはかつても同様の投稿をしている。 もちろんこの頃書いていたコードと比べるとGiteaとの連携部分は記述できていないし、あくまでリポジトリの一覧を拾ってタイムスタンプを付け加えるといった非常に単純なスクリプトにすぎない。

だけれどもこの日曜日にさっと取り組んでひとまず形にできたという事実が非常に嬉しく思う。

Go言語の難しそうな記述はないし、単体テストもしっかり用意できている。 もともと私もPythonを書くときはシェルスクリプトを書くくらいのつもりで入門をはじめたので、今回もその感覚に非常に近く感じた。 それでいてGoという言語で興味深い部分はいろいろと知ることができた。

今回もっとも印象的だったのがタイムスタンプを変換する箇所である。

RubyでいうところのDateTime#strftime%Y-%m-%dみたいな記述をする。 このあたりのフォーマットはもともとPerlから来ているのだろうか、こういった記号を使うのがあたりまえだったのに対してGoでは2006-01-02 03:04:05 -0700と書く。 これはこれで覚えやすいような工夫はあるのかもしれないが、慣れるまではしばらく混乱するだろう。

まだまだGo言語もわからないことだらけだが、今日くらいの温度感であればほとんど苦労はないので続けられそうだと思った。 正直なところ最近はGoよりもRustを書こうという圧を強く感じるけれども、Go言語を学習するということは無駄にはならないと思いたい。