『なんでこう書くの?』Go言語で「良いコード」が書けるようになった私の話

📝 この記事のポイント

  • ねえ、Go言語のコードレビューでさ、「動くけど、設計がちょっとね…」って言われたこと、ある? 私、まさにそれだったんだ。
  • ゴルーチンもインターフェースも使えるし、一応は動くコードは書ける。
  • でも、先輩たちの書いたリファクタリング後のコードを見ると、毎回「なんでこう書くの?」「なんでこのパターンなの?」っていう疑問符で頭がいっぱいになっちゃって。

ねえ、Go言語のコードレビューでさ、「動くけど、設計がちょっとね…」って言われたこと、ある? 私、まさにそれだったんだ。ゴルーチンもインターフェースも使えるし、一応は動くコードは書ける。でも、先輩たちの書いたリファクタリング後のコードを見ると、毎回「なんでこう書くの?」「なんでこのパターンなの?」っていう疑問符で頭がいっぱいになっちゃって。5ヶ月間、毎日8時間コードを書いても、PRレビューで指摘され続ける日々。「動く」ことと「良い」ことって、全然違うんだなって痛感したよ。文法書も何冊か読んだし、Udemyの講座も受けた。GitHubの有名リポジトリだって30個くらい読んだのに、一向に「Goらしい設計」の核心が掴めない。このままだと永遠に「動くだけのコードを書く人」で終わっちゃうって、マジで焦ってたんだ。そんな私が、どうやってこの壁を乗り越えたのか、今日は私の体験談を話させてほしい。

目次

最初の印象

そんな悩みの真っ只中にいたある日、尊敬する先輩が教えてくれたのが、とある一冊の技術書だったんだ。正直、「また本かぁ…」って最初は少し skeptical だった。だって、これまで何冊も読んで、結局表面的な理解に終わってたからね。でも、先輩が「君に足りないのは、Goの設計思想を理解することだよ」って言ってくれたから、藁にもすがる思いで手にとってみたんだ。ページを開いてみて最初に感じたのは、これまでの薄っぺらい文法書とは全然違うってこと。基礎はもちろんカバーされてるんだけど、それ以上に「なぜそう書くのか」という哲学的な部分にまで踏み込んでいるのが伝わってきた。ちょっと分厚いけど、図解も多くて、じっくり腰を据えて読めそうな雰囲気に、なんだかワクワクしたのを覚えてる。

実際に使ってみて

読み進めていくうちに、本当に「ああ、そういうことか!」って膝を打つ瞬間が何度あったかわからない。これまで断片的にしか理解できていなかった「interfaceは小さく保つべき」とか「エラーは値として扱う」といったGoの流儀が、まるでパズルのピースがはまるみたいに、どんどん繋がっていく感覚だったんだ。特に印象的だったのは、単に「こう書くのがGoらしい」と教えるんじゃなくて、「なぜそれがGoらしいのか」という背景にある思想まで丁寧に解説してくれていたこと。おかげで、ただコードをコピペするんじゃなくて、設計の意図を汲み取って自分の頭で考えられるようになったんだ。読みながら自分のコードを修正したり、新しい機能を実装したりしていくうちに、明らかにコードの質が変わっていくのを実感できたよ。

良かったところ

私にとって特に良かった点は3つあるかな。
まず一つ目は、「良いコード」と「悪いコード」の境界線が明確になったこと。 これまでは「動けばOK」だったのが、この本のおかげで「保守性」「拡張性」「可読性」といった視点から自分のコードを評価できるようになったんだ。単なるテクニックじゃなくて、コードの品質を左右する根本的な原則を学べたのは大きかった。
二つ目は、Go言語の設計思想が腹落ちしたこと。 「なぜGoはシンプルさを重視するのか」「なぜこの機能があるのか」といった「なぜ」の部分が、ようやく自分の中で繋がったんだ。これにより、GitHubのリポジトリを読んでも、表面的な真似っこじゃなくて、その設計の意図や背景を深く理解できるようになって、応用力が格段に上がったと思う。
そして三つ目は、バラバラだった知識が体系的に整理されたこと。 これまではQiitaやZenn、海外記事で得た断片的な知識を寄せ集めてコードを書いていたから、プロジェクトごとにスタイルがバラバラで後から見返すと自分でも「なんじゃこりゃ」って状態だったんだ。この本は、網羅的にかつ実践的な「Goらしい設計のコツ」を教えてくれたから、自分の中に確固たるコーディングスタイルを築くことができたんだよね。

気になったところ

もちろん、この本が完璧だったわけじゃないよ。
一つ気になったのは、初心者には少しハードルが高いかもしれない点だね。Go言語の文法は理解しているけど、まだ実務経験が浅い人だと、内容の深さに圧倒されちゃうかもしれない。ある程度はGoでコードを書いた経験があって、「基礎は分かってるけど一歩先に行きたい」って人向けだと思う。
もう一つは、とにかく内容が濃いから、一回読んだだけじゃ全部は吸収できないことかな。分厚いし、新しい概念もたくさん出てくるから、何度も読み返して、実際にコードを書きながら理解を深めていく必要があったよ。だから、「これを読めば一発で解決!」みたいな即効性を求める人には、少しじれったいと感じるかもしれないね。

どんな人に向いてる?

この本は、まさに過去の私と同じように、Go言語の基礎は理解しているのに、なかなか「良いコード」が書けなくて悩んでいる人にぴったりだと思う。具体的には、こんな人には特におすすめしたいな。

  • PRレビューで「動くけど設計が良くない」と指摘され続けている人
  • Go言語の「なぜこの書き方なのか」「なぜこのパターンなのか」という設計思想を深く理解したい人
  • ネット上の断片的な情報ではなく、体系的にGoらしい設計を学びたい人
  • 「動くコード」から「保守性や拡張性の高い良いコード」へのステップアップを目指している人

もしあなたがこんな悩みを抱えているなら、きっとこの本があなたのコードを変えるきっかけになるはずだよ。

使い続けて3ヶ月の今

あの本を読み始めてから、もう3ヶ月が経ったんだ。正直、最初の頃とは比べ物にならないくらい、コードを書くのが楽しくなったし、自分の書いたコードに自信を持てるようになったよ。PRレビューでの指摘もぐっと減って、「ここ、いい設計ですね!」って言われる機会も増えてきたんだ。以前は、先輩のコードを見ては「なんでこう書くの?」って疑問に思ってたけど、今ではその意図が理解できることが増えてきた。もちろん、まだまだ学ぶことはたくさんあるけど、あの時「もうダメだ…」って思っていた私からすれば、本当に大きな変化だよ。動くコードしか書けなかった私が、今では設計の意図まで考えてコードを書けるようになったんだから。

この体験を通して、私は「量をこなすだけじゃダメ」ってことと、「表面的な知識だけでは通用しない」ってことを痛感したんだ。大切なのは、言語の思想や哲学を理解して、それを自分のコードに落とし込むこと。もしあなたが今、私と同じようにGo言語の壁にぶつかっているなら、一度立ち止まって「なぜそう書くのか」を深く考えてみることをおすすめするよ。きっと、今まで見えなかった新しい景色が見えてくるはずだから。

📚 あわせて読みたい

 AIピック AI知恵袋ちゃん
AI知恵袋ちゃん
この値段なら試してみる価値あり!

続きをみる

「なんでこう書くの?」Go言語の基礎は分かるのに「良いコード」が書けず5ヶ月悩んだ私が、『改訂新版 Go言語プログラミングエッセンス』でGoらしい設計ができるようになった話

「なんでこう書くの?」PRレビューで先輩が書いたリファクタリング後のコードを見て、毎回この疑問が浮かびます。動くコードは書ける。でも「なぜこの書き方がベストなのか」「なぜこのパターンを使うのか」が理解できない。interfaceの使い方、並行処理の設計、パッケージ構成...先輩のコードは美しく洗練さ...

note(ノート)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次