comix

ジャンプみたいなブログになりたい。

『はじめてのPHPプロフェッショナル開発』という本が出版されます

このたび生まれて初めて本を出版することになりました!

『TECHNICAL MASTER はじめてのPHPプロフェッショナル開発 PHP7対応』というタイトル(以下、プロフェッショナル本)で2019年2月26日(火)に秀和システムさんから発売されます。

会社の同僚と書いたので、是非買ってください!(石直球)

しかし「せっかく買ったのに思ってたんと全然違うやんけ!」となるのも申し訳ないので、プロフェッショナル本がどういう本なのか簡単に紹介したいと思います。

プロフェッショナル本の概要

一言で言うと プログラミングの入門書を読み終えた人が、実際の開発現場で活躍するために必要なアレコレをPHPを題材に解説している本 です。ボリュームは実質390ページほどになります。中身は導入編、入門編、実践編、発展編の4つのパートで構成されています。

最初の導入編では昨今のPHPとそれを取り巻くエコシステムを紹介しており、具体的にはPSRやComposer、PHP7の新機能などを解説しています。

入門編ではPHP質問広場というオリジナルのQAサイトを実際に作っていきます。実装以外にもDockerを利用した開発環境構築があり、設計やユニットテストの方法についての解説もあります。ちなみに、Webアプリケーションの開発にはCakePHP(3系)を採用しています。

実践編ではチーム開発にフォーカスを当て、GitHubやSlackの使い方を紹介しつつ、チーム開発でも特に重要なコードレビューについて解説をしています。更に複数人での開発に役立つツールとしてPHP_CodeSnifferとPHPStanの紹介や昨今のトレンドであるコンテナベースのCI/CDについても触れています。

最後の発展編ではPHPの枠を越えて、障害への向き合い方やSQLチューニングの解説に始まり、実際の運用では重要なセキュリティの話にも触れています。また、最後にOSSへのコントリビュートについても簡単に紹介しています。

つまり、めっちゃ盛り沢山な内容になっております!もう少し知りたい方は最後に目次をまとめておきましたのでそちらも併せてご覧ください。

プロフェッショナル本の立ち位置

まえがきでも触れているのですが、プロフェッショナル本は初心者向けの入門書ではありません。かと言って、PHPの文法書やCakePHPの専門書でもありません。

もちろん、PHPの本ではあるのですが、扱っているトピックが多いので、ややもすると「帯に短し襷に長し」という印象を持たれるかもしれません。ただ、そういう印象はある意味間違っておらず、プロフェッショナル本は 入門書は巷に(特にPHPは)溢れているものの、それを読み終えた初心者が実際の現場で活躍するための次に読むべき本がないのでは? という問題意識から企画が始まっています。

ですので、プロフェッショナル本は最新のPHPを学びながら入門書と個別具体的な技術の専門書との架け橋となる本を目指して書きました。

プロフェッショナル本のポジション
プロフェッショナル本のポジション

想定している読者

上述の内容を踏まえつつ、主な読者としては以下のような方をイメージしています。

  • PHPを触っていたが、最新のPHPは知らない人
  • プログラミングはある程度出来るが、Webアプリケーションの開発業務経験が少ない人
  • 昨今の開発現場で多く採用されているツールや開発プロセス、考え方を一通り知りたい人

もちろん、上記以外の方にも是非読んでいただきたいなと思っています。ちなみに、個人的にはPHPer以外の方にも読んでいただけると嬉しいです。

あんまり想定していない読者

逆に以下の人は難しく感じたり、逆に物足りなく感じたりするかもしれません。

  • プログラミング「超」初心者の人
    • 初心者の方でも理解出来るよう工夫はしていますが、フレームワークって何?Gitって何?というレベルだと少し厳しいかもしれません。
  • モダンな開発現場で何不自由なくバリバリ働いている人
    • コードレビューやテストを日常的に行っており、開発プロセスも自動化されているような現場で働いている人は特に得るものがないかもしれません。
  • CakePHPの詳細な解説を求めている人
    • CakePHPを利用してWebアプリケーションの開発を行っていますが、それだけを目当てに読むと説明が浅いと感じるかもしれません。

フィードバックについて

少しでも誰かの役に立てばという気持ちで一生懸命書きましたが、今回技術書の執筆は全員が初めての経験だったので、もしかしたら読み辛い箇所や間違いがあるかもしれません。初めてということに関して言い訳するつもりはないのですが、イケていないところは真摯に受け止めてきちんと改善していきたいと思っています。

ですので、僕のTwitterでもAmazonのレビューでも何でもよいので感想などフィードバックいただけると嬉しいです。また、プロフェッショナル本に掲載されるコードはGitHubにも公開しておりますので、当該リポジトリにIssueやPull Requestを作成していただいても構いません。また、正誤表に関してもリポジトリ内のWikiを随時更新していく予定です。

github.com

目次

最後に目次を紹介します。前述の通り、幅広いトピックを扱っているので気になる章だけ読むことも可能な構成になっています。

一応、僕が担当した章は★マークをつけておきます。

Part01 導入編

Chapter01 進化するPHP

  • 01-01 PHPの歴史
  • 01-02 PHPの特徴

Chapter02 PHPのエコシステム

  • 02-01 モダンなPHPを支えるコミュニティの力
  • 02-02 PHP-FIGとPSR
  • 02-03 PHPのパッケージ管理
  • 02-04 PHPのアプリケーションフレームワーク

Chapter03 PHPをはじめよう

  • 03-01 エディタ
  • 03-02 DockerでPHPの開発環境を整える

Chapter04 モダンPHPの文法と基礎文法

  • 04-01 基本的な構文
  • 04-02 型と演算
  • 04-03 分岐処理
  • 04-04 繰り返し処理
  • 04-05 関数
  • 04-06 PHP7の新機能

Part02 入門編

Chapter05 チームのための開発環境構築

  • 05-01 開発環境のプラットフォーム
  • 05-02 Dockerで開発環境を立てる際のポイント
  • 05-03 実践的なアプリケーション開発のための環境を作る

Chapter06 設計から始める★

  • 06-01 設計の重要性
  • 06-02 要件定義をしよう
  • 06-03 設計時の注意

Chapter07 CakePHPを使ってみよう★

  • 07-01 実装を進める前に
  • 07-02 CakePHPについて
  • 07-03 テーブル設計とURL設計

Chapter08 質問と回答機能の実装★

  • 08-01 質問一覧画面の実装
  • 08-02 質問投稿画面の実装
  • 08-03 質問詳細画面の実装
  • 08-04 回答投稿機能の実装
  • 08-05 質問/回答削除機能の実装
  • 08-06 テーブルクラスの活用
  • 08-07 バリデーションの実装

Chapter09 ユーザー管理機能の実装★

  • 09-01 ユーザー登録画面の実装
  • 09-02 ログイン画面の実装
  • 09-03 ログアウト機能の実装
  • 09-04 その他のユーザー管理画面の実装
  • 09-05 質問/回答機能をユーザー情報と連携する
  • 09-06 機能改善をしてみよう!

Chapter10 テストコードを書く★

  • 10-01 本書で扱うテストについて
  • 10-02 ユニットテストの必要性
  • 10-03 CakePHPにおけるテスト
  • 10-04 テストの準備
  • 10-05 テストコードの書き方を学ぶ
  • 10-06 テストコードはいつ書くべきか?

Part03 実践編

Chapter11 チーム開発の現場★

  • 11-01 個人開発とチーム開発の違い
  • 11-02 GitHubを使った課題の「見える化
  • 11-03 Slackを使った日々のコミュニケーション
  • 11-04 ツールの選定方法

Chapter12 Pull Request駆動によるコードレビュー★

  • 12-01 コードレビューの必要性
  • 12-02 Pull Requestを利用したコードレビューの方法
  • 12-03 コードレビューをしてみよう

Chapter13 開発に役に立つツール

  • 13-01 なぜツールを使うのか
  • 13-02 PHP_CodeSniffer: コーディング規約チェックツール
  • 13-03 PHPStan: コード解析ツール

Chapter14 継続的インテグレーション

Chapter15 デプロイの自動化

  • 15-01 Webアプリケーションの公開
  • 15-02 ソフトウェアのデプロイメントサイクル
  • 15-03 デプロイ自動化のメリット
  • 15-04 コンテナベースのビルド&デプロイ
  • 15-05 コンテナのデプロイサイクル
  • 15-06 コンテナのデプロイを楽にするオーケストレーションツール

Part04 発展編

Chapter16 障害と向き合う

  • 16-01 障害は突然やってくる
  • 16-02 障害についての重要な考え方
  • 16-03 障害と向き合うためのツール

Chapter17 SQLチューニング

  • 17-01 なぜSQLチューニングが必要なのか
  • 17-02 遅いSQLのパターン
  • 17-03 SQLチューニング
  • 17-04 遅いクエリを検出する方法

Chapter18 PHPとセキュリティ

  • 18-01 セキュリティの基礎知識
  • 18-02 SQLインジェクション攻撃
  • 18-03 XSS攻撃(クロスサイトスクリプティング攻撃)
  • 18-04 CSRF攻撃(クロスサイトリクエストフォージェリ攻撃)

Chapter19 外の世界に飛び出そう★

  • 19-01 OSSへの貢献
  • 19-02 最新情報のキャッチアップ
  • 19-03 更にその先へ

最後に

ここまで読んでくれた方は是非買ってください!