今からスタート! PHP

第1回PHPをはじめる前に

この連載では、これからPHPをはじめようと考えている方にむけて、プログラミングのために必要な準備や、基本的なプログラミングの方法などを紹介していきます。筆者もあなたと共にPHPを習得していこうと考えています。どうぞよろしくお願いします。

それでは、これからPHPによるプログラミングを始める前に、PHPとはどのようなものなのかを確認しておきましょう。すぐにプログラミングをしてみたいという方もいらっしゃるでしょうが、まずは確認のためにお付き合いいただければと思います。

PHPの概要

PHPは、Webアプリケーション[1]の開発/実行のために用いられるプログラミング言語の1つです。PHPの現在の正式名称は、PHP: Hypertext Preprocessorとなっていますが[2]⁠、もともとはPersonal Home Page Tools」という名称がつけられていました[3]⁠。

検索サイトで「PHP」⁠PHP プログラミング」などというキーワードを検索してみると、多数の日本語サイトが見つかります。ということは、それだけ日本でこの言語を利用しているWebアプリケーション開発者が多く、さまざまな情報が行き交っているということです。これらの情報も本連載と共に活用してPHPを習得していきましょう。

PHPが普及した理由(わけ)

PHPがそれだけ普及した理由については、さまざまな分析がありますが、筆者はそれらを以下のように整理してみました。これから順に説明していきます。

  • a.無償でダウンロード/利用が可能である
  • b.各種のWebサーバ/OSに対応している
  • c.短いプログラミングでもさまざまなな処理が実現できる
  • d.日本語(正確にはマルチバイト文字列)に対応した機能が取り入れられている
  • e.多くの拡張モジュール(拡張機能)が揃っている
  • f.多くのレンタルサーバで利用可能である

a. 無償でダウンロード/利用が可能である

PHPはオープンソースソフトウェア(OSS)と呼ばれるものの1つでもあり、プログラミングを行うために必要なソフトウェアを無償でダウンロードし、Webアプリケーションの開発や実行に利用できます。

その根拠となっているのは、オープンソースライセンス(OSSの使用許可あるいは利用許諾)と呼ばれる、OSSを利用する人が順守すべき規約です。PHPの場合は、PHPライセンス[4]という規約に基づいて利用しなくてはなりません。

過去には、PHPに含まれる機能の一部がこの規約に沿っていないのではないかと指摘されたことがありました。バージョンアップなどにより状況は改善されましたが、今後も同じ問題がまったく起きないとは限りません。

また、PHPは後述するように多くの拡張機能が存在し、あらたに作成することもできます。その際に、利用する拡張機能はどんなライセンスか適用されているかに注意を払う必要があります。

PHPの利用にあたって、もうひとつ注意を払わなくてはならないのは、PHPのバージョンです。執筆時現在で利用されているPHPのバージョンは4.xが多いと思われますが、⁠濃縮還元オレンジニュース」などでも紹介されている通り[5]⁠、このバージョンのサポートは本年(2007年)末で終了することが決定しています[6]⁠。このバージョンのPHPを利用している開発者にとって、どのようにすればバージョン5.xのPHPにスムーズに乗り換えられるかは、最近の大きな関心事の1つになっています。

「無償」と引き換えともいえるこのような問題が存在するとはいえ、PHPを利用するにあたって必要になるさまざまな経済的障壁(コスト増)は低く抑えられます。また、技術的に躓(つまづ)きやすいことに関する情報も体験談やFAQなどとして多くのWebサイトに掲載されていますし、無料のプログラミング体験セミナーが開催されることもあります。これらを活用することで、習得のための障壁も低く抑えられるでしょう。

初期段階での障壁が低いことは普及の条件として重要だと思います。

b. 各種のWebサーバ/OSに対応している

PHPは、各種のWebサーバ[1]やOSに対応しています。もともとは開発者がPHP自身のソースコードをコンパイルしてからインストールするものでしたが、現在は事前にさまざまなOSで動作するようにコンパイルされたもの(バイナリ版)をインストールするだけで利用できるようになっています。そのため、すでに利用しているマシンをほぼそのまま開発に用いることができます。

筆者がWindowsバイナリ版をデフォルトでインストールしてみたところ、消費したディスク容量は約7.6Mバイト程度で、最近のPCの性能レベルで見ればコンパクトに収まっているといえるでしょう。

以下にPHPが対応するWebサーバやOSのうち主なものを列挙します。

対応Webサーバ
Apache(モジュール/CGI⁠⁠ : 最も知られているWebサーバ(Linux/Windowsなどに対応)
IIS : 米Microsoftのサーバ(Windowsのみ)
Samber Server
など...
対応OS
Linux(ディストリビューションで利用可能なことが多い)
Windows(バイナリモジュールも存在する、以下同じ)
Mac OS X
Solaris
など...

これらの中で最も多く用いられているのは、Linux+Apache+PHPという、すべてOSSの組み合わせで、データベースとも合わせてLAMPLinux+Apache+MySQL+PHP)あるいはLAPPLinux+Apache+PostgreSQL+PHP)と呼ばれることがあります。

c. 短いプログラミングでもさまざまな処理が実現できる

PHPは、あらかじめ多くの機能が組み込まれているため、そのうちのいくつかを用いるだけでプログラミングが完了してしまいます。これは長所であると同時に、短所にもなり得ます。その分かれ目は、いかに読みやすく、処理の構造ごとのまとまりがわかりやすいソースコードを記述できるかにかかっています。

自分で作成したソースコードをずっと自分で管理できれば、こうしたことはあまり気にしなくても良いかもしれませんが、複数の人がアプリケーションの開発に関わったり、メンテナンスを自分以外の人に引き継ぐ場合などは、ソースコードの書き方に一定の配慮が求められます。

配慮の基準は「コーディング規約」として開発チームごとに決められている場合もありますが、そうでないこともあるでしょう。コーディング規約がなければ何も配慮しなくて良いということではなく、むしろその時こそ積極的な配慮が暗黙のうちに求められていると考えるべきでしょう。とはいえ、規約は明文化しておいたほうが一定の水準を保ちやすくなることはいうまでもありません。

もちろん、複雑な処理を行う場合は、長いプログラミングが必要になりますが、PHP5では「オブジェクト指向」という考え方が多く取り入れられ、関連する処理をグループ(クラス)ごとにまとめたプログラミングが可能になりました。そのため、「デザインパターン」など、C++やJavaといったオブジェクト指向型のプログラミング言語で用いられてきた概念が、PHPによるアプリケーション開発にも導入される動きが盛んになっています。

d. 日本語(正確にはマルチバイト文字列)に対応した機能が取り入れられている

プログラミング言語を含む一部のソフトウェアでは、日本語などのマルチバイト文字列(外見上の1文字を表現するために複数バイトを要する文字列)の処理がうまくできず、文字化けしたり、エラーが起きたりすることがあります。

PHPでは、それらを回避するための設定や機能が取り入れられ、日本語や、日付表示など日本特有の表現の取り扱いがしやすくなっています。これは前述の通り、日本でPHPを利用する開発者が多く、彼らの要望がこれまでのバージョンアップで反映されてきた結果といえるでしょう。

もしあなたが、今のPHPにない新しい機能が必要だと感じたら、PHPの開発コミュニティに要望してみると良いでしょう。もしかすると、それが今後のPHPに反映され、世界中の開発者に利用してもらえるかもしれません。

e. 多くの拡張モジュール(拡張機能)が揃っている

PHPには、それ自身のインストール後にも新たに追加できる拡張モジュールが多く提供されています。これらはPEARおよびPECLというWebサイトで確認できます。アプリケーション開発に役立つものが揃っており、いずれ本連載でも取り上げることになるでしょう。

f. 多くのレンタルサーバで利用可能である

レンタルサーバとは、サーバレンタル事業者やホスティング事業者などと呼ばれる会社からインターネットに接続可能なサーバを借りて(レンタルして⁠⁠、それに開発したWebアプリケーションを搭載し、運用しているものをいいます。これらの多くでPHPによるWebアプリケーションの搭載が可能です。

メリットは、セキュリティに対する配慮(パッチをあてたり、サーバが置かれている場所に入場できる人を制限したりする)やデータのバックアップといったサービスを事業者から受けられることです。そのかわりにレンタル料がかかり、サーバに搭載できるソフトウェアやディスク容量もレンタル料によって変わります。ですから、レンタルサーバを借りるにあたっては、コスト負担と、それによって利用できるサーバやサービスを、複数の事業者で比較してレンタル先を決定することをおすすめします。

次回はプログラミングのための準備について紹介します。いよいよPHPプログラミングに向けた一歩を踏み出します。

おすすめ記事

記事・ニュース一覧