「PHPをやっていきましょう」みたいな本を書きました

ご縁があり、同じ会社のサーバーサイドやインフラをやっている人達で本を書かせていただくことになりました。 「はじめてのPHPプロフェッショナル開発 」というタイトルです。

f:id:o0h:20190223170503p:plain
Amazonで「カテゴリ1位」になってて嬉しい(ドキドキ・・

どんな本ですか?

少し、書き手から見ての内容について触れます。

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

「どんな本であるか」という事については、一緒に取り組んだ & 今回の取り組みにあたって諸々のプロジェクトマネジメント的な役割も務めてくれた id:itosho525 の記事がわかりやすいです。

itosho525.hatenablog.com

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

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

f:id:o0h:20190223211922p:plain 『はじめてのPHPプロフェッショナル開発』という本が出版されます - comix

「一通りのトピックを扱ってみよう」というのも意識した内容であり、引用したブログ記事の図中にある通り「より専門的な内容は、それぞれの文献を探してそっちで掘り下げてみる」というような使い方になってくれれば良いなと思っています。

設計やコーディングについては、詳細で高度なとても優れた書籍が非常に多く存在しています。
単体テストも、技法・設計については書籍などがありますし、テスティングフレームワーク個別の話は、コアコードやそれを利用しているプラクティスに振れることで多くのことを学べるのかと思います。
CakePHPについては、書籍としては「上級者向けの決定版」と言えるようなものは未だ無いかもしれませんが、GitHub/Slackなどのコミュニティ、コアチームの面々を始めとした強力なデベロッパの情報発信を追うのが良いでしょう。
コンテナ技術においては、まだまだ非常に変化の激しい分野でもあると思うので、最新の情報だったりGCPやAWSといったPaaS/IaaSプロバイダの発する情報・コミュニティの発する情報を拾ったり、専門書籍から「良いやり方」を見つけていけるようにも思います。

どの領域も「この本の次」があることを意識しながら執筆チーム一同取り組んでいました。
「どこから手を付ければよいかわからない」「そもそも全体像がわからない」時に、道を指し示せればと思います。

現場感

そのように制作を進めていく中で、大事にしていたことの1つが「現場感」です。

「一通り〜」というのを意識していた、と上に書きました。そのため「体系的」「網羅的・全体的」という性格をもたせたいとは願っています。
とはいえ、「あまりにも『座学的』『教習的』でありすぎては、この本で想定している読者がワクワクしないかもね」というのは、企画段階から出ていた話です。

今回の執筆チームについては、普段から「自分がバリバリ現場でやっている」面子です。また、そもそも普段の活動が「上流や下流の別け隔てがない(そのチーム規模にない)組織で、自社サービスを提供する」というものです。
それを踏まえて、「自分たちがやっている・やりそうな内容を、エッセンスとして抜き出して並べれば、ある程度の『現場の動き』が現れてくるのではないか」という発想で、書籍内容のアウトラインが組まれました。

おそらく「この一冊で、PHPのプログラムをとことん書けるようになるぞ!!」というには、実際のPHPコードが登場する章は少なく感じられるでしょう。
裏を返せば、具体的なコードの比率をある程度抑えてまで「触れておきたかった」話を扱っています。例えばチーム開発の話題だったり、CIについて丸々1章を割いているのは、その顕れと言えます。

CakePHP

「『入門』という単語を冠したPHP本にしては、相対的に見てコードが少ない」と述べました。とはいえ、「丸々1つのWebアプリケーションを作成する(テストも込みで)」ところまでは扱います。

アプリケーションの作成にはCakePHPを選択しました。
実際に出てくるコードは、「CakePHPをめちゃくちゃカッコよく使っている」と言うには不足があるかもしれません。確かに、もっと「尖った」「Cakeぽく」書ける部分はあるなと感じます。
CakePHPの本ですか?といえば、そこが主眼でもないし、また「動くようにアプリケーションを作成する」のを本質として説明を絞ってもいるからです。

それでも、Cakeアプリケーションがテストコードも揃った状態のアプリケーションが、解説付きで世の中に出されるという事は、いちCakeファンとして嬉しいなぁと思います。

この本は、位置づけとして「『プログラミングをする』と『チームでサービスを作る』の間の架け橋」ものです。そういう意味では「PHP」の部分を置き換えても良かったかもしれないし、まして「CakePHP」の部分は他フレームワークに置換しても、同様に成り立つような感覚があります。
インターフェイスと具体実装の関係のような話ですが、少なくとも「現場っぽいやつ」としては具体的な話が必要なわけで、その目的でCakePHPを舞台に立たせました。
結果として、公式のチュートリアルよりはやや手厚めで、GitHub等に置かれている一般的なOSSよりも日本語情報が揃っていて、各実装部分・テスト部分における「代表的なスニペット」よりも網羅的に「ちゃんと運用できそうなくらい」のコードが揃っている・・というサンプルコードが作成されています。

担当パートについて

アウトラインは、以下のようになっています

  1. Part01 導入編
    • Chapter01 進化するPHP
    • Chapter02 PHPのエコシステム
    • Chapter03 PHPをはじめよう
    • Chapter04 モダンPHPの文法と基礎文法
  2. Part02 入門編  * Chapter05 チームのための開発環境構築
    • Chapter06 設計から始める
    • Chapter07 CakePHPを使ってみよう
    • Chapter08 質問と回答機能の実装
    • Chapter09 ユーザー管理機能の実装
    • Chapter10 テストコードを書く
  3. Part03 実践編
    • Chapter11 チーム開発の現場
    • Chapter12 Pull Request 駆動によるコードレビュー
    • Chapter13 開発に役立つツール
    • Chapter14 継続的インテグレーション
    • Chapter15 デプロイの自動化
  4. Part04 発展編
    • Chapter16 障害と向き合う
    • Chapter17 SQLチューニング
    • Chapter18 PHPとセキュリティ
    • Chapter19 外の世界に飛び出そう

このうち、私は

  1. Chapter01 進化するPHP
  2. Chapter02 PHPのエコシステム
  3. Chapter13 開発に役立つツール
  4. Chapter14 継続的インテグレーション
  5. Chapter16 障害と向き合う

及び「Chapter04 モダンPHPの文法と基礎文法」の一部(PHP7の新文法の話題)と、自分の担当Chapterのコラム、その他の一部コラムを担当しました。

言い換えると、今回は書籍内におけるアプリケーション作成部分は他のメンバーが書いてくれており、私は眺めていた形に😇 *1

そんな主観もあってか、「これからより『チーム』や『プロジェクト』でのサービス開発に踏み込んでいくにあたっての、橋渡しになる一冊」になれば良いなぁと感じているところです。

あとがき

ツイッターでも言及してくださっている方がいたりと、大変ありがたく感じています。
発売してからの反応がどうなるか、が最も肝心なのですが・・・・・心臓が飛び出そうですね!
誰かの役にたてばいいな〜と思います。

アフィリンクを貼りますので、よろしければポチっとお願いします😉

TECHNICAL MASTER はじめてのPHPプロフェッショナル開発 PHP7対応

TECHNICAL MASTER はじめてのPHPプロフェッショナル開発 PHP7対応

*1:とはいえ、全くPHPを書いていない!!!ということではなく、サンプルコード公開用のレポジトリにある、テストコードの作成はヘルプしたりしています