こんにちは。いっとくです!
過去にも先にも恐らく最長になるであろう10連休のGWが終わったと思いきや、もう1週間経ちました。
ところで、皆さんはGWにこれだけはやっておこうという目標とかってありましたか?
僕はゴールデンウィーク中に自身のプログラミング力をアップさせるべく、この本をマスターしようと考えていたわけです。
ボリュームやばすぎて、ゴールデンウィーク中に終わりませんでしたー!
そんなわけで、残った負債を完済すべく土日を使って終わらせました。よくやった俺!いいんですよ、目標の期限以内じゃなくても。
普通に筋トレに使えそうなぐらい重みのある本なので、かなりの気合を入れてやったわけですが、それに見合うくらいためになる内容だったので、ちょっと紹介したいと思います!
特にエンジニア1、2年目とかでPHPは大体わかるようになったけど、細かい言語仕様やフレームワークが裏でどう動いているのかわからないという方にとってはドンピシャの技術書になっています。
マジの初心者が手を出すと挫折します。それがパーフェクトPHP
はじめに言っておきますが、この本はすごく濃い内容でマスターすれば確実にPHPの基礎力が上がる本だと思います。
つまりすごく良書!
しかしまだPHPを勉強を始めたばかりで、if文とかforeach文とか使って実際に動かすことができましたー!で次何を学べばいいの?みたいな段階の初心者の方は手を出さないことをオススメします。
多分実務でPHPやフレームワークをいじったことがないと、難しすぎて最後までたどり着かないだろうし、最悪の場合「俺、やっぱりプログラミング向いてないかも」と思うきっかけになってしまう可能性すらあります。
もし過去の自分がプログラミングに興味を持ったタイミングでこの本を手に取ったらと思うとゾッとします…笑
しかしPHPのコアの部分を中心に解説してくれているため、さらに一歩進んだプログラミングの知識を得るためには最高の本になってます。
特にPHPの概要や使い方はわかるし、大体のことは調べながらできるようになったけど、細かい仕様についてあんまり理解しなままPHPを使っている方や、フレームワークの裏側でどんなことが行われているか全然よくわかっていないという方にはかなりドンピシャ
実際僕もエンジニアとして働き始め、業務でPHPを使うようになり、ほとんどのことは調べながら問題なくできるようになってきたけど、以下のような疑問があったんですね。
- なんかフレームワークの使い方はわかったけど、裏で何が起きてるかりかいしてませんが?
- ちゃんと動くコードは書けるけど、この書き方って最適なの?
- てかセキュリティとかあんまりわかってないまま書いてるけど…!?
- オブジェクト指向の概要とかメリットはわかるけど全く使いこなしてないぜ!
- さらに上を目指すには何を理解すればいいの??
もし同じようなことを感じている方がいたとしたら、パーフェクトPHPはかなり役に立ちますよ!
レベルアップするためにはフレームワークとかのソースコード読めっていうけど…
よくネットでエンジニアとしてレベルアップするためには、フレームワークとかのソースを読むことって書いてあったりしますよね。
で、それに触発されてLaravelのソースコード読んでみよう♪と思い、エディタを開いたら、まずそもそもファイル多すぎていきなりディレクトリ迷子。
どれから見ればいいの…??と迷いつつも、まぁとりあえずよく見る文字が入ってるファイルでも開いてみるかという軽い気持ちでファイルを開くとそこには衝撃の光景が。
読んでも全然わからない。
え?てか行数少なくね??本当に処理してんのこれ??
てかそもそもなんで別ファイル読んでるはずなのにrequireとかincludeないの?魔法なの?
もう次から次へと出てくる謎!しかも書いてある関数の動きがわからないとかなら調べればわかるんだけど、この謎に関しては書き方的な部分だから理解するためにはなんて検索すればいいのか見当もつかない。
こんな絶望的な状況で無理やり読み進めた結果、時間だけを浪費して何の糧にもならないという恐ろしい結末に。
そりゃそうだよね。
だってこちとらそんなレベルに達してないからね!
HelloとThank youしかわからないやつが、いきなり英語ネイティブの人とラップバトルするようなもんですよ!
仕事では下手にちゃんと動くもの作れるもんだから、まさか自分にこれほど知識がないということに今まで気づいていなかったのかもしれない。
そんな絶望的に基礎がなっていない僕が、このタイミングでパーフェクトPHPをやったことはすごくラッキーだったと思う。
最初は古い本だからなぁ…と半分たかをくくってたのですが、後半はもう大夢中。
ちなみに初版が2010年なので本当にかなり昔の本です。
ちなみに2010年の当時のスマホの普及率は10%だって。
Web業界はすごいスピードで新しい技術が出てくるし、既存の技術もどんどん変化していくので、そもそも今学んで意味あるの??と不安になる人もいるかもしれませんが、実際にやってみた感想としてはそこまで心配しなくてもいいかと思います
というのも世の中のWEBサイトの多くはPHPで作られているため、大きな変更を加えると大騒ぎになるという理由から、PHPには大胆な変更が加えられていません。(もちろん便利な機能や書き方は増えているわけだけども)
もっとモダンな使い方を知りたいということであれば、パーフェクトPHPで基礎を固めた後に、インターネットで自分で調べるということでも全然遠回りではないはず。
と、ここまでまぁベタ褒めなわけですが、じゃあパーフェクトPHPでどんな知識が得られるの?ってことですよね。
パーフェクトPHPで学べること
本書は大きく分けて6つのパートがあり、その中でも少しずつ分かれて14章で構成されています。
実際にやってみた感覚としては3つの重要なことが学べると思いました。
まず前半でPHPの言語仕様について
そして中盤はフレームワークについて。
最後にPHPの活用方法(セキュリティとか便利な組み込みの機能とか)
この3つはコードを読むにしても書くにしてもすごく役に立つし、脱PHP初心者のためには避けて通れない道だな〜と痛感。
細かい言語仕様を学んで保守性の高いプログラムを書こう
PHPは良くも悪くも規則の緩いプログラミング言語です。
例えば、別のプログラミングでは型をしっかり意識して書かないとエラーになるところが、PHPはその辺をうまく変換してくれるので、割と適当に書いても動きます。
逆にこのせいで何を受け取って何を返すかしっかりコードを読まないとわからなくなったりするので、玄人に嫌われることも多いっぽいですが…
ちなみに僕は他のサーバーサイドのプログラミング言語はほとんどやったことがないので、正直この緩さにしっくりきてしまっていたりもします。
だけどゆるふわコーディングもできてしまうPHPだからこそ、どのタイミングで型のキャストが行われているかとか、参照渡しとか値渡しだとか、比較演算子の結合パターンとか優先順位とか、タイプヒンティングみたいな書き方だとか細かい仕様やテクニックを把握することが大事になってきます。
特に未来の自分やチーム開発のメンバーが後から見たときにわかりやすいコードを書くためにはとても大事なことです。
曖昧に書けるPHPだからこそ、はっきりと目的がわかるコードを書かないといけない。そして、そのためには少なくとも言語の仕様を把握する必要があります。
インターフェースや抽象クラス、静的プロパティだの使ってて何が嬉しいのか全然わからない書き方がめっちゃあるぜ!という段階にいる場合、パーフェクトPHPで言語仕様を知るのはすごくためになりました。
実際に作って学ぶフレームワーク
そして、中盤で学ぶのがフレームワークについて。
実際に現場に入ると、ほとんどの場合オープンソースのフレームワークを使ってサービス開発をすることになるでしょう。
僕も実際に使いこなしているかどうかは別として、現在はFuel PHPとLaravelを使って開発しています。
初めてフレームワークを触った時は、なんでせっかくPHPの書き方学んだのに、わざわざ別の書き方覚えなきゃいけないんだよ、バーカ!とプリプリ怒っていました。
しかし業務で触っているうちに、普通のPHPより簡単に色んな機能実装できるし、できることも多いし、セキュリティ面もある程度担保してくれてるから超便利〜!エモ〜い!とか思うようになっていました。ぶっちゃけ、もうフレームワークなしでは考えられません。
…しかし、僕はフレームワークが何をしてくれているのかいまいち理解していない!!
まぁぶっちゃけそれでも仕事はこなせるので問題はないのですが、冷静に考えて自分がいじっているものが裏側でどう動いてるのかわからないって怖くないですか!?
ということで、たまにフレームワークを作っているソースコードを見て理解してみようと思うのですが、冒頭でも書いた通りファイル数多すぎてどこから見て良いのかよくわからんし、そもそも一つ一つのファイルは行数少なかったり、どうやって連携とっているのかとかもう謎謎謎の不思議アドベンチャーなんです。
そんな状態の僕にとってフレームワークに関するパートは一番学びがありました!
パーフェクトPHPはフレームワークの解説をするなんて野暮なことはせず、さぁ今から簡単なフレームワークを作りますよ!というスパルタスタイルです。
おかげでフレームワークがアプリケーションのどんな部分を共通化して提供しているのかという概念を嫌でも知ることができました。
特にオートロードなんてよく出てくる単語だなぁくらいに思っていたのですが、こんなに大事な機能だとは思ってなかった。
フレームワークを全部作り終えたら、次はそのフレームワークを使ってWebアプリを作成します。
この流れが本当に神がかっている!
めっちゃフレームワークの理解が進みました。
フレームワーク作成の章ではひたすら本に書かれているコードを模写しするわけですが、実際にそのフレームワークを使ってWebアプリを作ってみると、タイポしまくったせいで後から死ぬほどエラーが出てくるわけです。
このせいでGW中に終わらなかったといっても過言ではありませんが、このデバッグ作業のおかげで理解が進んだと言っても良いくらいです。何回読み返したことか…
このフレームワークの章の内容は、オープンソースのフレームワークのソースコードとかを読むための基礎知識にもなります。
機能の量は圧倒的に違うので、簡単に理解できるものではなさそうですが、少なくとも読むことに意味が出てきたという感じがするようになりました。
セキュリティから便利な組み込みクラスまで
この辺まで来ると、もうぶっちゃけ消化試合。
僕は既にフレームワークの章で燃え尽きてたからね!!
後半では、Webアプリケーション作るのなら避けては通れないセキュリティの基礎知識から始まります。
正直僕の職場はそこまでセキュリティに関するフィードバックがないので、自分がどこまでセキュアなコードを書けているのか自信がありません。
ただ、本書を読んだ印象としては、当たり前の対策を面倒くさがらずにやるのが大事なんだろうなという印象。フレームワークの機能をうまく使うというのも有効な手段になりそう。
ビジネス目的のクラッカーは、難易度が低いところを狙うって言いますから、基礎をしっかり固めるのは重要なことですね。
ただし、セキュリティに関しては時代が変わって新しい手法や対策が出ている可能性も高いので、本だけで満足せずに新しい知識を追い求めた方がいい部分だと思います。
後半では他にも、便利な組み込みクラスや、文字列、配列操作で使う組み込み関数、便利なライブラリなどの使い方を紹介をしています。
しかし正直なところ、今はフレームワークの機能がだいぶ充実していることもあって、もっと便利なことはインターネットで調べると山ほど見つかるので、他の章と比べると学ぶべき点は少ないようにも思える。
パーフェクトPHPでは以上の3つの要素を学ぶことができます。
プログラミングを本で学ぶメリットはその網羅性の高さにあり
僕はプログラミングをセブ島のIT留学で学び、その後は実際に会社に所属して業務を通じて学んでいました。
業務を通じて学ぶことはそれこそ山ほどあります。
毎回毎回やり方がわからないことにぶち当たって、それを調べて解決するうちに力がついているからです。
しかし、実はそのやり方だけだと、どうしても自分が遭遇できなかった問題に対する理解を深めることができません。
どうしても業務内容によって偏りができます。わからないことがわからないという状態になります。
そんな時、こうやって技術書を1から読んで基礎を学ぶのはとてもいいことだということに、今回パーフェクトPHPの勉強を通じて気づかされました。
本というのはある程度、流れに沿って体系立てられており、そこそこの網羅性を持っています。
なので、本来わからないことがわからないと調べることすらできないのですが、本に書いてあれば学ぶことができます。
今回パーフェクトPHPをやって自分がわからないことに気づきもしなかった細かい言語仕様やフレームワークの仕組みを学べたのは本当に大きいことだと思っています。
そんなわけで、もう10年くらい前に出版された技術書ではあるのですが、とても有益な内容を学ぶことができるので、ぜひPHPを使って開発をしてるけど、次のスキルアップがしたいと思っている初心者の方は参考にしてみてください!
ちょっと値段は高いですが、その価値は十分あるものだと思いますので!
以上、いっとくでした!さよなら!
コメント