2008年7月22日火曜日

今からPHPを始めるデザイナーへ贈るお金をかけないベストプラクティス

最近知り合ったデザイナーから、「PHP覚えようと思ってるんだけど、どうしたらいいの?」みたいな相談を受けまして、そういや前の会社ではこういう方針で教育してたなぁ、と思い出したのが以下の内容です。

この内容はプログラマー養成を目的としているので、プログラムも出来るデザイナ向けとして実践するなら、もうちょっと自分に甘くて良いかと思います。

完全に趣味の世界なので、突っ込みもあるでしょうけど、なにかありましたらコメントにどうぞ。

学習方針

おいらはPHPのイロハから初めて、大体のものは一人で作れるようになったのですが、その過程で「とりあえずコレやったらいんじゃない?」 とか「この本、サイトみてみたらいんじゃない?」みたいな学習過程におけるノウハウみたいなものもが溜まってきました。

で、これを元にした実際にプログラミングが得意ではない新入社員が入ったときのトレーニングコースは、以下のような感じでした。

基本方針としては、「効率を上げるためにお金を払う対象は、本だけにする。それ以外は無料で何でも揃うので時間だけかける」です。

PHPを覚える過程で、教科書の1ページ目から始めるのか、いきなりCakePHPやsmartyを使ったものから始めた方がいいのか迷ってらっしゃる方がいらっしゃいますが、おいらは素のPHPを覚えてからがいいと思います。

おいらも仕事でPHPを使う場合、ごく小規模(目安として10ベージ以内のもの)ならフレームワークを使いません。逆に面倒になるので。

プログラミングに関して言えば、完全に積み上げ構造の上で成り立っているので、基本がわかっていないと、フレームワークも使えないと思います。

デザインも出来るプログラマーとして、システムをガシガシ作って行きたいのか、プログラムも(調整程度なら)できるデザイナーとして行きたいのかにもよりますが、デザイナーと比較して、プログラマーは知識量勝負の面が強いです。

Webプログラマーが覚えなければならない知識の裾野はとても広いので、システムガシガシコースだと、内容の濃い本を20冊ぐらいは読んでおかないとまともに動くものは作れないと思った方が良いです。(プログラミングのミスの場合、システムに侵入されてしまうので、それなりにスキルが上がってからじゃないと公開できるものにはならないと思います)

同様の理由で、システムガシガシでなければ、フレームワークそのものは必要ないと思います。(フレームワークという考え方を理解するのは必要だと思いますが)

プログラムの作り方や考え方だけでも覚えておけば、これから自分でシステムを本格的に作る事になっても、システム部分だけ外注に出す事になっても、仕事はやりやすくなるんじゃないかなぁと思います。特に分業がきっちりしているところだと、プログラマサイドからみても、プログラミングし易いようなHTML/CSSを作れるのは非常に効率が良いです。

また、おいら的には、逆引き系の本は嫌いです。取っ掛かりとしては良いと思うので最初は使いますが、それに頼ると伸びません。それより、基本的な文法と、全機能の目次や概要などを押さえている人の方が伸びます。

よって、以下は「環境を作って」「文法を押さえて」「便利機能も押さえて」「あとはひたすら書く!」みたいなノリで進みます。

プログラミング環境関係

まず、コーディングはWindows上でかまいませんが、PHPをWindows環境で実行しようと思わないこと。できないことや、設定が面倒な事が多すぎます。

また、できるだけ手元のPCだけで開発を進めるのではなく、本番サーバと同じ環境で動かしながら作った方が、システムは出来たけど、本番サーバで動かしたらライブラリやバージョンが足りなくて目眩がした、とかって悲劇を避けられます。共用サーバだと越えられない壁は結構あります。

可能なら、空いているPCにLinuxを自分でインストールして、そこで実行するのが、以下の面で良いと思います。

  • 壊れても自分で直せる環境を用意する事。いろんなことにチャレンジし易いです。モノを覚えるときには、これが一番大事です
  • 安価で済む事。必要なときだけ起動すれば良いので、レンタルサーバのように契約する必要が無い
  • 足りない機能を簡単に付け加えられる事。レンタルサーバなどでは、出来ない事だらけだと思った方が良いです。自分でLinuxをインストールした場合ならば、簡単に追加できます
  • 予備知識が吸収できる事。Web(特にHTMLベースシステム)の世界はLinuxを中心に回っています。WindowsはLinuxから規格などを吸収しているので、後発な分使い易いですが、応用が利きません。

Linuxディストリビューション(Linuxの種類)は、基本的に会社で使っているものと合わすべきでしょうけど、わからないならCentOS

version 5で良いと思います。CentOSはRedhatの無料版(正確にはちょっと違うけど)です。

http://www.centos.org/

以下はCentOSの解説サイトですが、かなり詳しく書いているので、ただプログラミング環境を揃えるだけならapacheとmysqlさえ動けばそれでよいかと思います。

http://centossrv.com/

パソコンが余ってなくて、自分のPCがハイスペックなら、VMServerを使うのが安価で使い勝手も良いです。

http://www.vmware.com/jp/products/server/

Linuxをインストールして組み上げると、動くまでが苦しくて、その分知識は付きますが、そこまで時間がないならばWindows上でXAMPPを使うのが手っ取り早いです。(ただし、やはりwindows上で動かすので実行環境としてはいまいちです。壊れるときはwindowsごと壊れそうですし)

http://www.apachefriends.org/jp/xampp-windows.html

コーディングは、Eclipse+PDTプラグインを使うのが良いと思います。

PDTのバージョンは上がっているので適宜読み替えてください。

EclipseはJava用のIDEですが、PDTプラグインを使うとPHPの開発環境にもなります。

http://liosk.blog103.fc2.com/blog-entry-13.html

※慣れてきたら、subversionかMercurialでバージョン管理を行った方が良いです。新機能の追加に失敗して、元に戻したいときなどに必要です。

PHPプログラミング関係

以下のサイトからPHP4のバイブル本のPDF版が無料でダウンロードできるので、第三部以外を読む。

関数リファレンスはPHPのオンラインマニュアルを使うので読まなくてよい。(このPDFは内容が古いので読むと混乱するかも)

現在はPHP5(PHP version 5)への移行がだいぶ進んでますが、まだまだ有名系オープンソースもののシステムはPHP4(PHP version 4)で動く事を基本としているものが多いです。なので、PHP4でも作れるようになった方が良いです。(基礎部分なので無駄にはならないですし)

http://www.net-newbie.com/support/pdf2/

もしPHP5を使いたければ、上記PDFの内容を理解してから、以下のPHP4から5への以降注意点を読めば良いと思います。

http://www.php.net/manual/ja/language.oop5.php

http://www.php.net/manual/ja/migration5.php

上記を読んで全体像を掴んだら、以下のPHP本家サイトで全目次を読む(本文は必要なときに読む)

http://www.php.net/manual/ja/

PHP本家サイトで全関数を一ページずつ開いて、どんなことができるのかを把握する(詳細は必要なときに読む)

たとえ今は書いてある事がわからなくても、読んでおいた方が後ほど使える事が多い

http://www.php.net/manual/ja/funcref.php

PEAR本家マニュアルの全パッケージを一ページずつ開いて、どんなことができるのかを把握する(詳細は必要なときに読む)

たとえ今は書いてある事がわからなくても、読んでおいた方が後ほど使える事が多い

PEARとはPHP用のライブラリ集です。

http://pear.php.net/manual/ja/packages.php

※最初に全関数や全パッケージの内容を把握するのは、一見難しそうに思えても、用意された関数やパッケージを使えば、実は簡単な事が多いからです。逆に、簡単そうな機能でも、関数やパッケージが無ければ、自分で作らなければならないので結構難しいです。

※PHP4からPHP5にバージョンアップする過程で、文法が結構変わったので、PHP4系で行くか、PHP5系で行くかが迷いどころになります。PHP4はもうあまり長くはサポートされないので、今から覚えるならPHP5で良いと思いますが、オープンソースの多くはPHP4で書かれていますので、改造を主にするならPHP4で覚えるのも手です。まぁ、基本部分あまりかわりません。レンタルサーバなどでは、PHP5も多くはなってきましたが、PHP4しかサポートしてないところもまだあります。

実践

重要な事は、自分でたくさんプログラムを作ってみる事です。

読むだけではある程度までしかスキルアップしないので、(プログラムを)書く事が必要です。

流れを掴むまで、以下のサイトをベースに改造してみると、流れを掴み易いかもしれません。

http://phpspot.net/php/sample.html

smartyは、ある程度の規模のシステムを、フレームワーク無しで作るなら必須ですが、フレームワークを使ってシステムを作るなら、無くてもあまり困らないかもしれません。ただ、大抵のフレームワークはsmartyにも対応しているので、覚えても無駄にはならないとは思います。が、個人的にsmartyは「ものすごーく便利」だとは思いません。癖が強いので。

ただ、smartyなどを使っても、使わなくてもPHPのコード(MVCのCとM)の部分と、HTML(Vの部分)は分けた方が良いです。

Vだけでも分かれていると、ドリームウェーバーなどで編集できるからです。(あぁ、ライトにPHPを使うならドリームウェーバー上で作ってもいいかもしれませんね)

デザイナ→プログラマだと、デザインの施したHTMLの、どの部分をループさせるかとか、どうやったらどういう機能が作れるか、といったところが重要になりそうですね。

その他

昨今のシステムではデータベースを使う事が大半ですが、これも慣れるまでに非常に時間がかかります。

習得に時間のかかる具体例を挙げると、SQLの文法や、検索(SELECT文)の書き方、テーブルの設計、データベースの運用方法など。

このうち、SQLの文法と検索(SELECT文)の書き方は、PHPのフレームワークを使うと覚えなくても済む(覚えた方が効率的なプログラムが書けるが、必須ではない)ので、新規でシステムを作るならCakePHPなどを使った方が楽を出来ます。

データベースの種類で迷うなら、MySQLにしておくのが、Webや書籍にノウハウの蓄積があるという意味、および有名系のオープンソースではほとんど対応しているという意味で、オススメです。

かなり決め打ちで、「コレやってコレやって」って感じですが、これだけあればPHPを覚えるための方針として迷う事は無いと思うので、細部でハマったらメールでもください。

0 件のコメント: