読んだ本リスト

自分が読んだ技術書の紹介です。

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

実践的なLaravelの本。
この本を読んでからLaravelのカスタマイズがかなり楽になったし、アーキテクチャへの造詣も増した。
Laravelやるなら必読と言っても過言ではない(と思ってる)
2章でLaravelのコアであるサービスコンテナとDIの解説があって、3章では一般的なソフトウェアアーキテクチャの解説もある。
この辺を理解すればLaravelが自らの手足の様にカスタマイズできる様になる。
ユニットテストとテスト駆動開発の解説が手厚いのも特徴で、9章と11章を読めばLaravelでユニットテストが書けるようになれる。
かなりレベルアップできる本なのでオススメです。

オブジェクト指向設計実践ガイド

オブジェクト指向の設計の本。
あくまで設計の本なのでSOLID原則などが出てきます。オブジェクト指向そのものの解説はあまりありません。

継承を多用して改修が困難な「何か」を生み出した事がある人は本当に読んでほしいです(自戒)
これを読めば、単一責務の小さなクラスが協調する変更に強いアプリケーションが作れると思います。

アジャイルサムライ

アジャイルとは?というところからアジャイルに進めるための心構え、テクニックなどが紹介されている本。
一部紹介すると以下のようなノウハウが紹介されています。

  • 顧客にとっての価値を基に機能やタスクに優先度を付ける(マスターストーリーリスト)
  • 期日を動かせないならやることを減らす、やることを減らせないなら期日を動かす(トレードオフスライダー)
  • チームの生産性は実測を元に予測を立てる。(現実的な計画づくり)
  • プロジェクトの初期段階で手強い質問をする

偉い人から無茶振りをされて頭を抱えたことがある人には刺さる内容だと思います。

実践Terraform AWSにおけるシステム設計とベストプラクティス

Terraformとはインフラをコードで管理するためのツールです。
HCLと呼ばれる言語でインフラの構成を記述し、コマンドを実行するだけでインフラが作成できます。
また、クロスプラットフォームなツールなのでAWSとGCPのインフラをまとめて管理するという事もできます。
この一冊を読めばTerraformの「使い方」から「設計方針」、「ベストプラクティス」まで学べるので個人的には激推しの1冊です。

SQL実践入門──高速でわかりやすいクエリの書き方

SQLの基礎から高速化するテクニックまで深く解説している本。
手元に置いておくといざってときに頼りになる。
結合アルゴリズムウィンドウ関数BTreeインデックス実行計画などのワードで気になる物があれば買っておいて損は無い。

エンジニアのためのWordPress開発入門

エンジニア目線でWordPressのアーキテクチャなどを解説してくれる貴重な本。
WordPressに関わるなら手元に置いておけばなにかと便利です。

独習PHP

プログラマなら一度は通るであろう独習シリーズのPHP版
PHPの言語仕様の解説が主。エコシステム等には触れない。

はじめてのPHPプロフェッショナル開発

「独習PHP」が完全にPHPという言語の仕様にフォーカスしているのに対し、こちらは、PHPを用いたアプリケーション開発において発生しうる幅広い領域(設計・開発プロセス・実装・テスト・静的解析、CI、etc)について解説されている。

PHP自体は書けるようになったけど次なにを勉強すればいいの?という人にオススメしたい。

失敗から学ぶRDBの正しい歩き方

RDBのアンチパターン(べからず集)を解説した本。

「4章 効かないINDEX」ではBTree Indexの仕組みの解説を交えつつ、インデックスが効かない理由を教えてくれて面白いので是非読んでほしい。

現場で困らない! ITエンジニアのための英語リーディング

ITエンジニアが英語を読むケースに絞って、ケース毎にリーディングのコツを解説してくれている珍しい英語の本。

例えば以下の様なケースが掲載されている(一部)
・コミットメッセージ
・APIリファレンス
・技術ブログ
・仕様書
・Q&Aサイト

自身の経験に基づいても、APIリファレンスの英文は読めるが、Github Issueの砕けたやり取りの英文は読むのが辛いので、ケースに絞って語彙力を強化するという考え方も必要だな気づかせてくれた本。

Google Cloud Platform エンタープライズ設計ガイド

GCPの各サービスの解説とこういうシステムを作りたいならどうするというケーススタディが記載されている本
各サービスをざっくり把握するのに丁度よかった

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

実務寄りの機械学習の入門書。数学的な解説を避けつつアルゴリズムの特性を教えてくれる。
自分はアルゴリズムの詳細には立ち入らずに全体を流して読んだだけだが、概要を掴むにはちょうど良かった。

Docker/Kubernetes 実践コンテナ開発入門

Kubernetesを触ってみたくて買った本。
一通り読んだが結局仕事で使ってない。

詳解 OpenCV

コンピュータビジョンについて解説した本。
画像の類似度を調べたり、輪郭を抽出してラベル付けする方法などが記載されている。
趣味でスマホゲーを自動化したり、動画を解析したりするのに活躍している。

エリック・エヴァンスのドメイン駆動設計

ドメインエキスパートと開発者の間で「ユビキタス言語(共有されたチームの言語)」を作り上げ、それをソフトウェアに落とし込むためのメンタルモデルを示した本。

かなり大ボリュームなので(500ページ越え)、隅々まで読むのはそうそうに諦めて、前書きで中核と呼ばれている章(1, 2, 3, 9, 14章)と重要な用語(エンティティ、値オブジェクト、集約、リポジトリ、etc...)の解説だけ読んだ。

なんとなくイメージが湧いたので、試しにドメインモデリングをやってみようと思ったものの、この本の中では具体的な実装は解説されていなくて、結局「実践ドメイン駆動設計(通称IDDD本)」を購入するのであった・・・。

実践ドメイン駆動設計

「エリック・エヴァンスのドメイン駆動設計」を読んだものの具体的な実装が分からなかったので購入した。

「4章 アーキテクチャ」では、レイヤードアーキテクチャからヘキサゴナルアーキテクチャ、REST、CQRS、イベントソーシングといったキーワードが解説されていてアーキテクチャの変遷が知れるのが個人的に良かった。

データ分析基盤構築入門[Fluentd、Elasticsearch、Kibanaによるログ収集と可視化

流し読みして積読中

初めての自動テスト ―Webシステムのための自動テスト基礎

(積読中)

MariaDB&MySQL全機能バイブル

(積読中)

Pythonからはじめる数学入門

(積読中)

プログラマの数学

(積読中)

UNIXという考え方―その設計思想と哲学

(積読中)