WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法
まったくプログラムの下地がない人がPHPの入門書を読むと挫折する。筆者はプログラミングの下地がまったくないノンプログラマーである。数年前から、PHPの勉強をや独学ではじめた。PHPの本は何冊買ったかわからない(洋書も含めて40冊以上は買ってきた)。買っては挫折の繰り返しだった。現在、てもとに残ったのは数冊である。
以下は、今後PHPを完全な独学で勉強したい人のためのメモである。
良本でプログラミングの下地をつくる
最初のコツはいきなりPHPの本に手を出さないことである。とくに初心者の方がネックになるのは条件分岐、ループ、配列あたりである。このあたりはPHP以外の本で定評のある本を読んで基礎を固めておきたい。
『新版Perl言語プログラミングレッスン入門編』か『初めてのプログラミング 第2版』のどちらかを読んでおこう。前者はPerl、後者はRubyの本であるがPHPでも基礎は同じで役に立つ。
とくに『新版Perl言語プログラミングレッスン入門編』の練習問題はよく出来ている。またループや正規表現の説明が丁寧でわかりやすい。この本の著者である結城浩さんは丁寧な書き手である。
TRONという国産OSをつくった坂村健さんの『痛快!コンピュータ学(集英社文庫)』も必読である。コンピューターの歴史や基本的な仕組みが学べる良書。しかも文庫なのでリーズナブル。
他にもプログラミングの基礎をかためる良い本はある。あげてゆくと、どんどんプログラミング全般の話になり、PHPから離れてしまうので別の機会でまとめたい。
良いPHPの入門書が少ない事情
本題からそれるが、なぜPHPで良い入門書が少ないかを述べておこう。入門書の厚さは400ページくらい、値段も3,000円以下くらいでださないと売りにくい(本当は1,000ページくらいのPHPの入門書がでればよい、実際Amazon.comで一番売れているアメリカのPHPの入門書は1,000ページ)。取り次ぎ(本の問屋)にも嫌がられ、本屋の棚に置いてくれない。
この販売サイドの制約の中でPHPとMySQLを無理矢理いれてしまうと、浅く広い内容になってしまう(正直浅い内容であればネットの情報で十分である)。浅く広くだと基礎がかたまらない本ができてしまう。
ある人は「入門書なのに門すらくぐらせてくれない」と表現した。実際、門すらくぐれない入門書は多い。ただ、キーワードを並べた表面的な本が量産される。
浅く広くだと、プログラミンングの基礎、HTTP、正規表現、データベースのテーブル設計などは簡単な記述におわってしまう。後で紹介するが、PHPの入門書を買うときのコツはPHPだけにしぼった本を選ぶことである。
HTTPの入門レベルを知ろう
PHPはサーバーサイド(Webサーバーの中で動作する)言語である。その際にネックになるのはHTTPプロトコルの理解である。特にヘッダー情報の理解である。WebブラウザーとWebサーバーはHTTPプロトコルに基づいて通信をおこなう。WebブラウザーはリクエストしWebサーバーはレスポンスするのだが、この通信は一回限りの通信であり、ともにデータ本体を送る前にヘッダー情報をおくっている。
このヘッダーの意味が分からないとクッキー、セッション、header関数の意味や動作がわからなくなる。これらはPHPの入門書では詳しく解説されていない。クッキーあたりで挫折するPHP入門者は多い。『3分間HTTP&メールプロトコル基礎講座』くらいのレベルの入門書で十分なので一冊よんでほしい。
viエディタやUNIXコマンドは触っておく
ある有名な私立大学の情報処理系の学部では最初に必修でUNIXコマンドを習う。これは理にかなっているカリキュラムである。
PHPのようなサーバーサイドの言語の場合、PHPのインストールなどの環境構築は基本的にUNIXコマンドでおこなうからである。Windowsだから関係ないよという方もいるかもしれない。でも最後はWebサーバーに配置するのでUNIXコマンドは避けて通れない。
パソコンに仮想マシンであるVirtualBoxをインストールして、Linux系のOSをインストールしてみよう。UNIXコマンドやviエディタに触れておこう。
viエディタは独特なテキストエディタで設定ファイルを修正するのにUNIXコマンドから呼び出してつかう(コンソールの中がいきなりテキストエディタに切り替わるのが、最初勉強したときは衝撃だった)。たいていはUNIXコマンドの入門書に使い方は、収録されている。設定ファイルが修正できるくらいのスキルでまずは十分である。コマンドやviエディタは覚えなくても構わない。触っておくことが大事である。
MacでPHPを独学されるかたは、MySQL絡みで予期しないエラーがおこる。検索すると、UNIXコマンドが分からないと、ブログの記事が読めないことが多い。例えば、XAMPPのような便利ツールをつかっていても、ターミナルでUNIXコマンドをたたいて、viエディタでMySQLの設定ファイルを修正するような内容になっていたりする。
先日、あるイーコマース実装の本で勉強しているときに実際、MySQLのメモリーエラーがおこった。直接MySQLの設定ファイルをテキストエディタで開いても直せず、ターミナル経由で、root権限でviエディタで設定ファイルを直した。
本当は安いVPSサーバーをかりて、ユーザーの追加、sshの設定、Apache、PHP、MySQLのインストールを自分でコマンドをたたいてインストールするとよい。筆者は、アメリカのSlicehostという低価格のVPSサーバーを月20ドルで借りて勉強した。Slicehostは無料のチュートリアルが充実していて、初心者でもWebサーバー構築ができる。一度、サーバー構築をしたくらいでは、コマンドは覚えるものではないが、後々この経験は役に立つ。
日本のVPSサーバーも1000円以下のサービスがでてきた。勉強に最適である。
ようやくPHPの入門書を読む
追記(2015年4月2日):
入門書の紹介に関しては、明らかに古い情報になっており、ユーザーに配慮して、すべて削除しました。いまは、本ではなく、無料の学習サイトも多数あります。入門書は繰り返し読む本ではないので、なるべく購入をケチり、図書館や中古で入手することをおすすめします。本代はコストパフォーマンスが高い基礎本に集中投資することをおすすめします。
またお問い合わせフォームをつくりながらPHPに慣れてゆく電子書籍も販売しています。『PHP入門 確認画面付きのお問い合わせフォームをつくりながらPHPを学ぶ』。この本は作るものをお問い合わせフォームだけにしぼり、満遍なくPHPの文法を学ばないで、最低限の文法だけでつくっていく本です。ノンプログラマー向けに書いています。
ブログをつくってみよう
ここらへんでアウトプットをしておきたい。題材はブログをおすすめしたい。カテゴリーで記事が分類される仕様である。例えば、以下の手順でつくってみよう。
- データベースにまず記事を管理するテーブルをつくろう。
- 記事一覧(記事の見出し)が表示するページをつくろう。
- 記事の見出しをクリックすると、記事の詳細ページにかわるように。
- 管理画面をつくる(記事の新規・編集・削除)
- データベースにカテゴリー用のテーブルをつくる
- ブログのサイドバーにカテゴリー一覧を表示
- カテゴリー名をクリックすると、カテゴリーに属している記事が一覧表示
- 管理画面にカテゴリーの追加、編集、削除機能を追加。記事の新規、編集にもカテゴリーが選べるように追加する。
ここまで自力で書ければ入門レベルは卒業で、基礎レベルにはいったといえる。余力があれば、画像のアップロード、日付一覧と日付による記事一覧、コメント、RSS出力、ページング、カテゴリーの並び替え機能も追加する。このあたりまでつけると基礎〜中級レベル(実務レベル)だろう。WordPressのデータベースのテーブル設計をみたり、ソースコードを読んでいくのも勉強になる。
実践的なサンプルを作るときに役に立つ本を紹介しておきたい。『初めてのPHP、MySQL、JavaScript&CSS 第2版』である。最終章でSNSサイトをつくる。この本のコードをベースに自分なりにアレンジしていくとよい。
PHPの基礎固めに役に立つ本
以下紹介する本は入門書ではないが、PHPの基礎を固めるのにおすすめの本である。
PHPの創始者、Rasmus Lerdorfが書いた『プログラミングPHP 第2版』はPHPの聖書のような存在。ある程度書けるようになった時点で、一度は通読しておきたい一冊。
最新動向に対応した第3版が出版された。『プログラミングPHP 第3版』。
『パーフェクトPHP』は、エンジニアが書いた本で、実務でPHPを書いている人向け。和書ではもっとも濃く、レベルが高い本だ。必読の一冊。
『パーフェクトPHP』、いまだにダントツのオススメです。PHP本は、もうこの本だけでいいかもしれません。改訂版がでることを望みます。
『自分で作る blog ツール』は2005年にでた本で、おそらく絶版だろう。この本はPHPだけでブログをつくる本で、データベースをつかわず、外部テキストに記事を保存している。今読み返しても、良い内容で勉強になる。セキュリティ処理、トラックバック、RSSの出力、記事の索引の作り方など参考になる。
『自分で作る blog ツール』は古い本ですが、内容は良書なので、削除しないで、残しました。
『はじめてのPHP 言語プログラミング入門』はPHPの言語仕様にしぼった内容で、言語仕様に関してはRasmus Lerdorf本、パーフェクトPHP以上の濃さである。あまり知られていないのが残念である。改訂版が読みたい。
『はじめてのPHP 言語プログラミング入門』も古い本です。内容は良書なので、削除しないで、残しました。改訂版が望まれます。
正規表現、データベースは別途勉強が必要
正規表現とデータベースはともにPHPの本で少しでてくる。それぞれ独立した分野なのでそれぞれ専門書による勉強が必要である。データベースはテーブル設計(正規化)とSQLの両方の勉強が必要である。『SQL ゼロからはじめるデータベース操作』をおすすめしたい。
正規表現もデータベースも習得するのに数年はかかることは覚悟しておきたい。ただどちらも実務数年レベルのエンジニアが苦手としているジャンルであることも知ってほしい。実務レベル数年でSQLや正規表現をスラスラかける人はあまりいないだろう。正規表現、データベースは地道かつ継続的に勉強が必要な分野である。
PHPは実際、習得するのは難しい
PHPは簡単だという人がいるが、実際には習得には厄介で複雑である。道のりも長い。
PHPは言語だけの勉強ではなく、周辺技術の習得が必要だからである。UNIXコマンド、viエディタ、HTTP、データベース、正規表現などの勉強である。
今回はふれなかったが、オブジェクト指向、フレームワーク、デザインパターン、JavaScriptも必要になる。