こんにちは。サーバーサイドエンジニアの薮です。
もうすぐGWですね。みなさんは今年のGWに何か計画を立てていますでしょうか?
「時間があるしインプットに当てたい」
「特に予定を立ててないし本でも読もうかな」
「最近本を読んでいないので何か読んでおきたい」
そんな方もいるかなと思いまして、今回はコロプラのサーバーエンジニアがおすすめするGWに読みたい技術書をご紹介したいと思います。
低レイヤ周りの基礎知識
1) コンピュータシステムの理論と実装
情報系卒ではないエンジニアが、情報系卒の人が常識としている範囲を学びたく手に取ったとのことです。
推薦コメント
コンピュータアーキテクチャの全体像を一気に学ぶことができる。 NAND回路から始まり、メモリ、CPU、機械語、アセンブラ、VM、コンパイラ、OS、そしてアプリケーションに至るまで、理論だけでなく、実際に手を動かしながら学習できるので、確実に理解しながらステップバイステップで進めることができる。
読むことでメモリ、CPU、OS等の低レイヤーの要素がブラックボックスでなくなった。 各要素を広く知ることができるので、低レイヤーの入り口としておすすめ。
2) マスタリング TCP/IP 入門編
こちらも同じく情報系卒ではないエンジニアが、情報系卒の人が常識としている範囲を学びたく手に取ったとのことです。
推薦コメント
ネットワークの全体像の把握と体系的な理解に役立った。 図も多く丁寧に解説されていて、ネットワークに関する技術は一通り網羅されているので、まずはこれさえ読んでおけば後は必要になったタイミングで自分で情報を調べられるようになる。
読むことで、Webアプリケーションにおいて、アプリケーション層より下の動作がブラックボックスでなくなり、インフラエンジニアと会話がしやすくなった。 オンラインマルチプレイのゲームで、プロトコルを設計しなければならないときにも役に立った。
「ネットワークはなぜつながるのか 第2版 | 日経BOOKプラス」という本も合わせて読むとさらに理解が捗る。 ブラウザにURLを入力してからWebページが表示されるまでの流れに沿って、OSやネットワークの説明がされていて、「マスタリングTCP/IP」で説明されている知識を一連の流れで理解できるため。
3) パケットキャプチャの教科書
推薦コメント
実際にパケットの中身を見てみたくなったところ、Wiresharkを使ったパケットキャプチャの書籍の中で評価が高かったため手に取った。
L2(Ethernet、ARP)、L3(IP、 ICMP)、L4(UDP、TCP)、L6(HTTP、SSL、 DNS)で各プロトコルのやり取りを、実際にパケットを見て理解することができる。図解が豊富でわかりやすくとっつきやすい。
百聞は一見にしかずということで、「マスタリングTCP/IP」で得た知識が、パケットを見ることでより具体的に理解できた。
4) ふつうのLinuxプログラミング
推薦コメント
システムコールやAPIあたりを理解しておきたいと思い、C言語を少し覚えたし、良さそうな本がないか探して見つけた。「詳解UNIXプログラミング」も似たような良書らしいが、そちらは大分分厚いらしく、こちらの方が入門としてはおすすめできる。
おすすめの理由としては、システムコールや各種APIを使って実際にHTTPサーバーを作ることで、Linuxにおけるプログラミングについて実践的な理解ができるため。
読んだことで LinuxでのI/Oとかシステムコールとかプロセスとかプロセス間通信について、理解が深まった。LinuxコマンドやHTTPサーバーの実装を知ることで、いままで意識せず使っていたものがブラックボックスでなくなった。
5) Goならわかるシステムプログラミング
紙書籍 Goならわかるシステムプログラミング 第2版www.lambdanote.com
Web版 (無料) ascii.jp
推薦コメント
A Tour of Goを終えて、Goの実践的な本を探していたところ見つけ、社内のリアルタイム通信基盤のコードを読むのにも役立ちそうだったため手に取った。
内容としては、「ふつうのLinuxプログラミング」同様、OSという低レイヤーを扱っている I/Oやシステムコールとかソケット通信あたりをGoでどのように扱うかを学べる。 低レイヤーに興味があるけどC言語に馴染みがない、だけどGoならわかるという方におすすめ。WEB版は無料なので気になる方はぜひ。
読んだことで、ソケットプラグラミング自体の理解も深まりましたが、Goにおける実装方法が分かったことで、社内のリアルタイム通信基盤のソースコードや、オンラインマルチプレイのゲーム向けOSSである Agones や Open Match 等のコードを読む際に役立つ知識を得られた。
6) Go言語による並行処理
推薦コメント
2018年発売とちょっと古い本ですが、Go言語で channel などの並行処理を使うなら必読。 channel や Lock などの基本的な機構の解説に加えて、並行処理のデザインパターンなどもかなり丁寧に解説されているので、ただの機能解説以上の価値がある。
7) Go言語でつくるインタプリタ
推薦コメント
A Tour of Go をやった後に、何か Go 言語でプログラムを書いてみたいなと思い、たまたま手に取った。
内容はゼロから Monkey というJSライクな言語のインタプリタを Go 言語で作っていくというもの。ボトムアップで字句解析器、構文解析器、評価器などの処理を少しずつゼロから作っていく。 実際にインタプリタが動くのでステップバイステップでモチベを保ちつつ、読み進めやすい。
またTDD (テスト駆動開発) で進めていくので Go 言語におけるテストケースの書き方がかなり参考になった。
設計
8) エリック・エヴァンスのドメイン駆動設計
推薦コメント
一時期話題になっていてとりあえず読んでみようと思って手に取った。
様々な事例を交えドメイン駆動設計について詳しく解説しているところが良かった。 読んでいく中で、レイヤードアーキテクチャに興味をもつきっかけになった。
クライアントとのやりとりから仕様として落とし込むまでを物語的に書かれているので、現場でどのようなコミュニケーションを取り実装していくのかのイメージも付きやすく仕事の仕方にも影響した。
9) Clean Architecture 達人に学ぶソフトウェアの構造と設計
以前社内の読書会でも扱った本です。 設計関連で Qiita などの記事を読み、気になっていたエンジニアも社内には多かった印象ですね。
推薦コメント
SOLIDの原則を調べていて辿り着き、手に取った。 実績あるソフトウェアアーキテクチャ原則が詳しく解説されていて、言語やプラットフォームに依存しないメンテナンス性や拡張性に優れたソフトウェア開発に関する内容が書かれている。 実際の開発において設計や気をつけるポイントとして参考になるかと思う。 さまざまな原理原則を完結にまとめているので読みやすかった。 この本で何を学んだと言うより、原理原則集という感じだったので、得た知識を元に現場の課題解決にどう活かしていくのかに本当の学びがある本だと思う。
10) データ指向アプリケーションデザイン
推薦コメント
データの取り扱い方・設計について理論から実践まで包括的に書いてあって良かった。 分散DBの内部的な話とかも知れて良かった。 オンラインマルチプレイのゲームのことを考えるときにも参考になるような気がしつつある。
その他
11) エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング
推薦コメント
エンジニア組織の生産性・方向性に悩んでいた時期だったので何か体系的に活かせる情報がないかと思い読んだ。
組織の良くない状態を言語化するのに役立つ。なんとなく良くないという状態から現状を客観的に把握し、改善に向けてどう動いていくのが良いかという道標になる。 エンジニア組織全体の課題を持つ人は読むことをおすすめする。
キーワードベースでいうと、下記の要素が出てくるので、ここからドリルダウンして自分たちの課題に合わせた別の書籍をたどるのに非常に便利。
・不確実性を減らす
・不確実なのは未来と他人
・情報の非対称性をなくす
・メンタリング
・承認と開示による心理的安全性
・アジャイルな 状態 を目指す
・なぜ技術的負債ができるのか、負債とは
・権限の移譲
・組織とアーキテクチャの関連
12) 図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書
推薦コメント
改めて基礎からブロックチェーンを理解しようと思い、手に取った。
ブロックチェーン周りを広い範囲でカバーしていて、硬すぎず初心者でも読みやすいゆるさになっている。最初の取っ掛かりの一冊におすすめ。
13) ドラゴンクエストXを支える技術
推薦コメント
一時期話題になっていたので読んでみた。
ドラゴンクエストXの開発体制や、どのように運用しているかなどなかなか知れない内部事情を語っているところが良かった。 高負荷なゲームタイトルの運用や不具合対応など読んでいて共感を持てるところや、これから現場でも起こり得ることにイメージが沸いたりと読んでいて面白かった。 IP (知的財産) に対する拘りや制約にどう取り組んだのかも読んでいて学びになった。
番外編
技術書ではないですがエンジニアにもおすすめする推薦本もありました。
14) ノンデザイナーズ・デザインブック
推薦コメント
この本の魅力は、四つの基本原則(対比、反復、整列、近接)を具体的な例を交えて解説している点。これらの原則は、デザインだけでなく「情報をわかりやすくまとめる手法」としても有効。 具体的には、プログラムの構造やプレゼンテーションのスライド作成に活用できる。
この本を読むことで、デザインに対する考え方が変わるだけでなく、情報伝達力も向上した。 四つの基本原則を理解し、実践することで、プロジェクトでのコミュニケーションがスムーズになり、より効果的な成果物が作成できるようになった。
最後に
以上、コロプラのサーバーエンジニアがおすすめする書籍14選でした!
余談ですが、コロプラには「クマ図書館」という会社負担で購入した書籍の貸出や在宅者向けに取り寄せができる福利厚生があり、会社として社員のスキル向上のサポートを行っています。 colopl.co.jp
今回紹介した本は有名どころも多かったかと思いますが、なかなか書籍の存在は知りつつも読めていない方もいらっしゃるのではと思います。 この機会にぜひお手にとってはいかがでしょうか。
それではみなさま良いGWをお過ごしください!
ColoplTech について
コロプラでは、勉強会やブログを通じてエンジニアの方々に役立つ技術や取り組みを幅広く発信していきます。
connpassおよびTwitterで情報発信していますので、是非メンバー登録とフォローをよろしくお願いいたします。
また、コロプラではゲームや基盤開発のバックエンド・インフラエンジニアを積極採用中です!
興味を持っていただいた方はぜひお気軽にご連絡ください。