アイキャッチ

AIがコードを書く時代に、なぜ「効率」を学ぶのか。mattnが全サーバサイドエンジニアに推す一冊『効率的なGo』

スキル

本連載では、業界の第一線で活躍する著名エンジニアたちが、それぞれの視点で選んだ書籍について語ります。ただのレビューに留まらず、エンジニアリングの深層に迫る洞察や、実際の現場で役立つ知見をシェア!初心者からベテランまで、新たな発見や学びが得られる、エンジニア必読の「読書感想文」です。

著名エンジニアが、独自の視点で「おすすめ書籍」の紹介を行う本連載。今回の語り手は、VimやGoのコントリビューターとして知られるエンジニア・mattnさんだ。

「言語特有のテクニックではなく、システム開発における“性能”や“効率”との向き合い方を教えてくれる」と高く評価する『効率的なGo』(オライリー・ジャパン)を紹介してくれた。

AIが瞬時にコードを生成する今、なぜ人間のエンジニアが「効率」の原理原則を学ぶ必要があるのか。その答えがここにある。

mattnさんがお勧めする一冊『効率的なGo』

発売日:2024年02月24日
著者:Bartłomiej Płotka 訳:山口 能迪
出版社:オライリー・ジャパン
ISBN:978-4-8144-0053-9
原書:Efficient Go
書籍概要:本書は、Goアプリケーションの効率やスケーリングに関する疑問に対して、実用的な答えを与えてくれる書籍です。レイテンシー、CPU、メモリ資源についての知識、またOSやGoがそれらを抽象化している方法について、またソフトウェアの効率に関わるデータ駆動な意思決定を行う事の意味や、計算量解析の手法、最適化状況の例など、実用的なソフトウェアを開発する中での「効率」に関する知識を紹介します。

はじめに

僕はGoogle Developers Expert(GDE)のGo部門に認定いただいており、おそらく他の皆さんよりも少しだけGoを知っている人間です。そんな僕が、よりによってGoと名前の付いた本を選ぶと聞くと、「Goの人だからGoの本を選んだんでしょ」と思われるかもしれません。

ところが、実はこの『効率的なGo』は、Goに特化した本ではないのです。皆さんが期待するかもしれない「Goならではのテクニック」のような話はほとんど登場せず、全11章のうち8章は、Goに依存しない内容で書かれています。

それでも、僕がこの本をサーバサイドを書く全てのエンジニアに勧めているのには、ある理由があります。本記事ではそれをご紹介します。

著者のBartlomiej PlotkaはPrometheusの公式メンテナーであり、Thanosの共同開発者。世界中のクラウドネイティブ環境で動いているソフトウエアを、実際に書いて運用してきた人物です。

本書は、そんな彼が「執筆に約1,200時間費やした」という、相当な熱量の詰まった一冊です。

本書を読んだ背景

僕がこの本を手に取った理由は、Grafana Labs(元Google/AWS)の山口能迪さん(@ymotongpoo)が本書の翻訳本を執筆するにあたり、レビューに参加させて頂いたのがきっかけです。

それまで本書を読んだことはなかったのですが、ページを読み進めるたびに感じる「効率的とは何なのか」という問いに対する解説の鋭さに、関心するばかりでした。

僕自身は、性能や効率的という言葉をきちんと理解しているつもりでしたし、実際に本書を読み終えた後でも、自分の理解は概ね正しかったと言えます。ただ、それを相手に伝える言葉として十分な説明能力を持っていなかったと感じました。

例えば、OSSで「性能を向上させました」というニュアンスでプルリクエストを送ってくれた方がいたけれど、僕から見ると実際にはそれは性能向上になっていなかったというケースがあります。

「ここは確かにこういう書き方の方が一見速そうに見えますが、本当の意味では性能向上にはなっていないんです」ということを、相手に納得していただける言葉で正しく説明したかった。でも、それができていなかったかもしれないと感じる場面が結構あったのです。

レビューを通じて本書を読み進めていくうちに、僕に足りなかったのは性能の理解そのものではなく、「性能を語るための共通言語」だったのだと気付かされました。

本書で得られた学び・教訓

性能 = 精度 × 効率 × 速度

本書の第1章で印象に残っているのが「性能 = 精度 × 効率 × 速度」という定義です。性能と聞くとどうしても「速さ」だけを思い浮かべがちですが、実はそれだけではありません。

●精度|間違いを犯していないか
●効率|余計な仕事をしていないか、リソースを使い過ぎていないか
●速度|速くできているか

この三つがそろって初めて「良い性能」と言えると、本書では整理されています。

「GitHub Issuesで性能の問題を報告するときは『性能が悪い』ではなく、具体的なメトリクスで語るべきだ」という著者の主張は、OSSの議論を見ている方ほど刺さるのではないでしょうか。

「早すぎる最適化は諸悪の根源」を免罪符にしない

Donald Knuth(※1)の有名な「早すぎる最適化は諸悪の根源」という言葉は、いつの間にか「最適化を考えなくて良い言い訳」として使われるようになってしまいました。本書はこの風潮にきっちりと釘を刺してくれます。

会員限定

ITエンジニア向けスカウト転職サービス に登録すると続きをお読みいただけます。会員登録後、画面が自動で更新されます。

すでにtypeに登録されている方へ
2026年11月30日までは、「type」アカウントでそのままログイン可能です。
type会員はこちらからログイン>
プロフィール画像

ソフトウエアエンジニア
mattnさん(@mattn_jp

大学卒業後、ソフトウェアハウスやSIerなどでソフトウェア開発に携わる。vi派生のテキストエディタVimの日本語化やプラグイン、Go言語などでOSS(オープンソースソフトウェア)の開発・コミュニティ運営に参加し、2019年からGoogle Developers Expert。21〜23年、GitHub Stars。著書に『みんなのGo言語』(2016年、2019年に改訂2版、技術評論社、共著)、『Go 言語プログラミングエッセンス』(2023年、2025年に改訂新版、技術評論社、単著)がある。関西在住

文/mattn 編集/今中康達(編集部)

転職力診断

Xをフォローしよう

この記事をシェア

RELATED関連記事

JOB BOARD編集部オススメ求人特集

RANKING人気記事ランキング





サイトマップ