PHP初学者が学ぶ為に、本当に必要だったこと。
3ヶ月ほど学んでいる、PHP初学者の愚痴みたいなエントリです。解決に至ってないので、あしからず。
現状
今、ボクの会社では仕事がないために、所属社員の半数ほどがPHPやらC++などの学習を行っております。ボクはPHP+MySQLでWebサービスの構築を学習しているのですが、プログラム経験がゼロから始めたこともあり、かなり学習スピードが遅くて、いろいろとてこずっているわけです。
たぶん、10月くらいから、学習期間にはいっているわけですが、PHPを書き始めたのが11月半ばくらい。おおよそ3ヶ月間学んでいますが、いまだにサクサク書くことはできません。
ここまでで役にたったモノ
何故か。
その前に、ボクの学習において、役にたったと思われるモノを紹介。
- PHP: PHP マニュアル - Manual …… コレを見ないと関数の使い方が分からないことが多々あり。
- MySQL :: MySQL 5.1 リファレンスマニュアル……コレも見ないとね。
- apache friends(いわゆるXAMPP)……自分でいろいろインストールしてもいいけれど、PHPとMySQLの学習用ならXAMPPで十分。(サーバー構築も学ぶ必要があるなら、XAMPPよりか、自分でインストールしないとダメでしょうけれども)
- 基礎からのMySQL……PHPとMySQLの初学者が最初に読んで試すべき本だと思います。この本を一通り理解出来ると、やっと初心者になれます。
- PHP 逆引きレシピ……何度も紹介しているけど、PHPのサンプルブックとしては、最良書だと思う。読みやすくて、わかりやすい。
- MySQLコマンドブック……この本だけじゃ、MySQLを知ることは出来ないけれどもMySQLで『こんなことができる』というのが解ると思います。MySQLのマニュアルを開くのが面倒なときに、傍にあると便利。
- PHPのコミュニティ ポータルサイト「PHPプロ!」……個人的にはとても勉強になったサイトなのでご紹介。サンプルブックとか『実践!PHPでWebサービス』みたいな書籍を買うお金がなければ、PHPマニュアルとMySQLリファレンスとphpproさんを全部眺めればよろしいかと。
- エディタ……ボクは無料のエディタを使ってます。WindowsではNotepad++ Homeを。Ubuntuでは、Geany : Home Page使ってます。
- Eclipse 日本語化 | MergeDoc Project……小規模学習用なら、別に統合開発環境は要らないかも知れないけれど、いろいろと使い道があるので便利。
ココまできて、ようやく O'Reilly。本当の初学者が初心者になれるステップにたどり着いたのではないでしょうか。
ちなみに、いきなり『初めてのPHP & MySQL』とかを読んでも、よっぽどの強い意志がないと挫折すると思います。もし、先に O'Reilly ブランドを読んでおきたいのであれば、『プログラミングPHP 第2版』ではなくて、『初めてのPHP5』を勧めます。理由は中身が濃い割に、ページが薄いから。
この先の成長が問題
たぶん、ココまでは情熱も続くので2ヶ月か1ヶ月くらいで来れると思います。ココから先のステップが初心者から、中級者になれるかどうかという部分だと直感的に感じることでしょう。もう、小さなWebアプリケーション(掲示板とか画像アップローダーとか)なら時間はかかるかも知れませんが、問題なく作れる実力を手に入れてるはずです。
セキュリティ的なことはともかくとして。
つまり、この先が問題でして。というか、ボクはここで詰まっています。
ボクはここで、フレームワークであるCAKEPHPに手を出して……2週間くらい足踏み状態が続いています。クラスやオブジェクトの勉強が足りないこともあり、どうにも上手く動かせないのです。
まず、サンプルにあるclassを一発で使えない。->とか$thisが良くわかってない。それどころか、functionも、ちょっと怪しい。加えて、有効なclassが書けない。
プログラマとしては、かなり、致命的です。
なぜ、クラスの習得ができてないのかというと……小規模開発や学習では、クラスを必要としなくても書けてしまう、動いてしまうんです。この状態から、クラスを学ぼうとすることが、自分の記憶と数カ月の学習を根底から覆される感覚があったりします。
ボクの主観ですが、オブジェクトの概念やクラスは強力なので、いままで書いてきた手続き型のプログラミング手法を捨て去らなくてはいけないことへの、『恐怖』があるのではないかと。
結論のようなもの
というわけで、PHPを学ぶに当たっては、printやらechoなんかで 『こんにちわせかい』と表示させることができたら、クラスとユーザー定義関数の学習を始めることをオススメしたいです。
あと、PHPはデータベースを使うことから、『配列』も良く使用するので、重点おいてやっておくとよろしいかと。
MySQLなどのデータベース関係は、専門の人に怒られるかも知れませんが、Webプログラマであれば優先順位は低くても大丈夫です。
キチンとPHPが書けないのに、パフォーマンスに優れたSQLが書けるわけがありません。まずは、PHPを学んでおいて、必要最低限のSQL文である「CREATE」「SELECT」「UPDATE」「INSERT」やら、「WHERE」「JOIN」「ORDER BY」「GROUP BY」は書けるようにしておけば(多分)なんとかなります。
ボクは33歳の今が、一番勉強をしている年だと感じています。……受験勉強なんかよりももっとシビアです。生活かかってますから。今やらないと、『若い内にやっとけば良かった』と、後悔し続ける人生になるので、『今』頑張らないと、と自分を鼓舞して頑張っておりますヨ。(オチがない)