皆さんは、Webサイトにアクセスしない日が一年に何日ありますか?本連載を読んでいる大抵の方は、ほぼ毎日Webサイトを見ているのではないでしょうか。そして、そうしたWebサイトやWebアプリを動かすために使われているプログラミング言語の代表がPHPです。通販サイト、ニュースやブログサイトの多くがPHPを利用して作成されています。今回は、Webに特化したプログラミング言語のPHPについて紹介します。

PHPのWebサイト: http://php.net/

PHPの生い立ちと特徴

PHPの原型となるPHP/FIは、1994年にデンマーク系カナダ人ラスマス・ラードフ氏によって開発されました。この最初のバージョンは、プログラミング言語ですらなく、テンプレートを元に動的にWebページを生成するツールでした。そして、PHPがオープンソースで公開されると、多くの人に使われるようになりました。その後、プログラミング言語の機能が付け加えられ、様々な機能が追加され、現在のような形になりました。

これまで、多くのWebアプリケーションやWebサービスがPHPを用いて作られました。ブログシステムのWordPressや、ECサイト構築のEC-CUBE、オンライン百科事典のWikipedia、SNSのFacebookなど、数多くあります。筆者自身もPHPが大好きで、たくさんのWebアプリを開発してきました。

PHPは、簡潔で単純な文法のために、初心者からプロまで幅広い層に支持されています。この後、簡単にプログラムを紹介しますが、C言語、Perl、Javaなどのプログラミング言語の影響を受けています。オブジェクト言語指向の機能も備わっているものの、基本的な文法は極めてシンプルで学習しやすいものになっています。

なお、PHPの名前ですが、『PHP: Hypertext Preprocessor』の頭文字をとったものとなっています。正式名称の中にPHPの名前があるのが面白いところです。これを『再帰的頭字語』と言って、ハッカーたちが好む命名手法です。

Web開発言語である由縁

Web開発のために作られたPHPには、大きな特徴があります。それは、PHPのプログラムを見るとよく分かります。以下は、PHPで画面に『Hello,World!』と表示するプログラムです。以下のプログラムを「hello.php」という名前で保存し、PHPがインストールされたWebサーバーに配置します。そして、Webブラウザからアクセスしてみます。(PHPのインストール方法は後述します。)

<?php
echo "Hello, World!";
?>

Webブラウザでアクセスすると、以下のように、画面に「Hello, World!」と表示されます。

  • Hello, World!のプログラム

    Hello, World!のプログラム

プログラムに注目してみましょう。パッと見て、すぐプログラムの特徴に気づくでしょう。プログラムの一行目に『<?php』というタグがあります。PHPのプログラムを記述するためには、「<?php ... ?>」というタグを記述し、その真ん中(...の部分)に、プログラムを書く必要があります。

そして、このタグの外側の部分は、プログラムではなく、HTML部分と解釈され、そのままWebブラウザに出力されることになっています。それでは、「Hello, World!」の出力に対して、タイトルを表す<h1>タグと共に表示させてみましょう。

<?php
$title = "Hello, World!";
?>
<html><body>
<h1><?php echo $title ?></h1>
</body></html>

Webブラウザでアクセスしてみましょう。プログラムを実行すると『<h1>Hello, World!</h1>』が出力され、ブラウザ画面には、以下のように表示されます。

  • もう少しPHPの特徴が分かるHello,World!を実行したところ

    もう少しPHPの特徴が分かるHello,World!を実行したところ

プログラムを見てみましょう。このように、一つのファイルの中に<?php ... ?>のタグは複数記述できます。HTMLの中に、PHPのプログラムを埋め込むように記述できるのが、PHPの魅力です。「$title」のように$から始まるのが変数です。

PHPのインストール方法

先に、PHPの雰囲気を紹介しました。今度は、自分のPCにPHPをインストールしてみましょう。本稿執筆時点で、PHPの最新バージョンは、7.2です。

Windowsの場合は、まず、こちらのWebサイトからZIPファイルをダウンロードして解凍します。なお、PHPを動かすには、Visual Studioの Visual C++ 再頒布可能パッケージが必要になります(上記サイトの左側にVC11/14/15へのリンクがあります。PHP7.2では、VC15のランタイムが必要です)。

そして、解凍したPHPのフォルダを「php」に名前を変更し、Cドライブなど、分かりやすい場所に移動しましょう。その上で、PHPにPATHを通します。コントロールパネルから「システムとセキュリティ>システム>システムの詳細設定>環境変数」を開きます。システム環境変数の中から「Path」という項目を開き、その末尾に「C:¥php」を追加します。その後スタートメニューから「コマンドプロンプト」を起動し、cdコマンドでカレントディレクトリを移動した上で、以下のコマンドを入力してください。

  • Windowsのシステム環境変数でパスを追加

    Windowsのシステム環境変数でパスを追加

  • インストールに成功するとphp -vでバージョンが表示される。php -S localhost:8080でサーバが起動する

    インストールに成功するとphp -vでバージョンが表示される。php -S localhost:8080でサーバが起動する

macOSでは、先にHomebrewを導入し、コマンドラインからPHPをインストールできます。

# Homebrewのインストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# PHP7.2のインストール
brew install homebrew/php/php72

一般的に、PHPはApacheなどのWebサーバーアプリケーションと一緒に利用します。しかし、最近のPHPには、ビルドインWebサーバーが搭載されています。プログラムをテストしたり、雰囲気を味わうだけなら、設定も不要なので、この方法がオススメです。

それでは、上述のプログラム「hello.php」を動かしてみましょう。コマンドラインを起動したら、カレントディレクトリに、hello.phpをコピーします。そして、以下のコマンドを実行します。

php -S localhost:8080

そして、Webブラウザから「http://localhost:8080/hello.php」にアクセスすると、プログラムの結果を確認できます。

PHPで掛け算の九九の表を作成しよう

次に、もう少しPHPの雰囲気を感じるために、九九の表を作成するプログラムを作ってみましょう。以下のプログラムを「kuku.php」という名前で保存します。その際、先ほど起動した、ビルドインWebサーバーのディレクトリに保存してください。

<style> td { width: 32px; text-align:center; } </style>
<table border="1"><?php
for ($i = 1; $i <= 9; $i++) {
  echo "<tr>";
  for ($j = 1; $j <= 9; $j++) {
    $v = $i * $j;
    echo "<td>$v</td>";
  }
  echo "</tr>";
}
?>
</table>

プログラムを保存したら、Webブラウザから「http://localhost:8080/kuku.php」にアクセスします。すると、以下のように九九の表を表示することができます。

  • 九九の表を表示するプログラム

    九九の表を表示するプログラム

プログラムを見てみましょう。HTMLの中に、<?php ... ?>タグを埋め込んでおり、その中で、HTMLを出力するというものになっています。そのため、プログラムとしてはちょっと複雑に見えるのですが、HTMLの中へ埋め込むようにプログラムが記述できるのがPHPの良いところです。

PHPのまとめ

特定用途に特化したプログラミング言語というのは、非常に強いものです。汎用的なプログラミング言語であれば、その機能を使うための宣言であったり、手続きを記述する必要がありますが、PHPはWebに特化しているため、決まり切った宣言を記述する必要がありません。また、言語レベルでWeb開発に特化しているので、使い勝手が良いものです。Webのために生まれ、Web開発者に愛されるプログラミング言語PHPの快進撃は、Webがある限り続くことでしょう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。