phpプログラミング

このところしばらくphpプログラミングをしていたので、これを機会にphpについて書きたいと思います。今回は最初ということで、従来のコンピュータプログラムとWeb用のプログラムの違いについて簡単に書きます。

Webアプリとホストアプリの似ているところ

ずいぶんと長いことホストと端末で動くアプリケーションソフトを書いていたのですが、8年ほど前にPHPと出会い、いわゆるWebアプリを書き始めました。Webアプリというのは、Webブラウザで動作するソフトウェアなのですが、主にWebサーバ上にプログラムを置いてブラウザとのデータのやりとりをするものを言います。ほとんどの場合はデータベース・サーバでデータの管理をしますから、ブラウザで入力した指示を受けてデータベースに問い合わせをし、その結果を処理してブラウザに表示するという流れになります。

これはホストコンピュータと端末機との流れとまったく同じです。さらにどちらもブラウザや端末側にはそのアプリケーション用のソフトは必要としないという事も同じです。端末側はホストから送られた画面を表示する機能と日本語入力機能を使って入力データをホストに送る機能があるだけで済みます。アプリケーションの追加・変更があっても端末側には一切影響がありません。

PCの世界でよく使われているクライアント・サーバ方式とは、ここが違います。


クライアント・サーバ方式

こちらはクライアント用のソフトとサーバー用のソフトが必要となります。したがって、アプリケーションの追加・変更があった場合はクライアントPC側のプログラム入換えという操作が必要となります。大抵はプログラム配布サーバーを使って起動時に自動変更をおこないますから、その分起動に時間がかかります。また、新規PCの場合は最初のインストール作業・通信環境等のセットアップ作業が必要です。100台なら100台分のセットアップ作業を行わなければなりません。PCは安価ではありますが、この方式は案外費用がかかります。

現在は、クライアント・サーバ方式で業務を行っている企業が大半です。昨年、Windows8が発売されましたが、企業でのPC購入時のWindows8professionalの採用はわずかに5%にしか過ぎません。95%はWindows7professionalへのダウングレードです。それでも、Windows8としてカウントされますが、実際はWindows7なんです。これは、クライアント側のアプリケーションがWindows8に対応していない為と、インターフェースが使いにくい為です。


日本では長い間オフコンという時代がありました。オフィス・コンピュータの略です。ここで言うオフィスは英語のOfficeではなく日本語の会社事務所というくらいの意味合いです。オフコンはいわゆる事務処理用の汎用機よりもずっと小さくて事務所に置けるコンピュータでした。NECや富士通、東芝、三菱などなど各社から独自OSの物が販売されていました。現在、まだ使っている事業所はあるかもしれませんが、販売はされていません。ほぼ同時期に消えてしまったのです。

1988年、IBMからまったく新しいコンピュータが発売されました。他のコンピュータは基本的には1970年代に確立されたアーキテクチャに基づいているのですが、このAS/400は根本的に違うのです。IBMの分類としてはInter Mediate日本語では中小型機という分類でした。汎用機のように水冷装置や冷却された専用の部屋の必要も無く、大きさはかなり大きいものの、日本のオフコンと競合するような製品だったのです。オフコンのようだとは言っても性能は数億円もする汎用機を上回るほどで、価格はずっと安く数千万円でした。アプリケーション開発費と合わせても一億円ぐらいで導入が可能でした。

また、1995年に、それまでは不安定だったDOS+Windows3.1に変わってWindows95が発売され、さらにWindowsNTサーバが出てくると、パソコンを使ったクライアント・サーバ方式がダウンサイジングと言ってもてはやされました。

これらの要因によって、徐々にオフコンは消え去ってしまったのでした。現在、このクラスで残っているのはAS/400だけです。


さて、本題に戻りましてそれぞれのアプリケーションソフトの違いについて、まずホスト方式を説明します。簡単な例として、あるデータを入力するプログラムを想定します。


ホスト・コンピューティング方式

起動されると、初期処理を行い、以下の流れに入ります。

  1. 入力画面を端末に送り、データを受け取る。
    終了キーならばプログラムの終了。
  2. 受け取ったデータの妥当性を検査する。
    エラーがあれば、再入力の為、エラー表示を付けて入力画面を送る。
    エラーが無ければ確認画面を送る。
  3. 確認画面を受け取り、取消キーならば入力画面を送る、。
    実行キーならばデータベースに登録して入力画面を送る。

以下のような特徴があります。

  1. プログラムは、開始されれば、終了するまで一連の流れに沿って処理が実行されます。端末の実行キー(送信キー)やその他の指定された機能キーが押されるまで画面からの応答をずっと待っています。
  2. キーボードのみの操作の為、販売管理とか給与計算等の大量データを扱うオペレータ業務向きです。
  3. 画像や音声などのバイナリデータは扱えないので画面は文字表示のみです。
  4. 端末を立ち上げるとサインオンを要求されます。IDとパスワードでサインオンし、サインオフまでがジョブとしてコンピュータ内部で一定の領域を占有します。
    誤って端末の電源を切ったりすると、コンピュータ内部にはジョブがそのまま残ってしまいます。これは権限のある管理者しか終了できません。

Webアプリ方式

基本的にはURLで指定されたプログラムを起動し、送信されたデータを処理してhtml文を生成してブラウザに送るだけです。Windows用のイベント・ドリブン型アプリと似ているようですが、画面からの入力を待っていません。

初期処理をした後、URLで何もメソッドが指定されてなければ、デフォルトメソッドAの流れで入力画面のhtmlを作ってブラウザに書き出します。リクエストされたメソッドがあれば、BやCの流れでそれを実行しhtml文をWebブラウザに送るという処理をします。Webブラウザからリクエストされた処理を行い、画面を表示したら終わりです。プログラムは常に最初から実行されますから、入力されたデータの引き渡しと受け取りの処理がやっかいです。

特徴

  1. WebブラウザからのURL指示によってプログラムが実行されます。
    例:https://www.xxx.yy/index.php/abc/def/24 (abcというコントローラの中のdefメソッドに24というパラメータを渡して実行。)
  2. 毎回画面表示が終わったら、すぐにプログラムはメモリ上から消えてしまいます。応答があるまで待っているという事はありません。
  3. 画像や音声などのバイナリデータも扱えるし、マウスで操作できます。
    逆にキーボードだけでの操作ができないので、操作は遅くなります。
  4. IDとパスワードでアクセス制限をするセッション管理は標準機能では無く、プログラムの一部として制作することになります。実はセッション管理はブラウザ側にデータを持たせて、毎回それがあるかどうかをチェックし、無ければログオンを要求させます。

phpの基礎

htmlの制作同様、phpもテキスト・エディタで書けます。ファイルの拡張子をphpとすることが必須です。簡単なphpプログラムを紹介します。htmlでは絶対にできない条件分岐です。

<?php          //書き出しは必ずこれ。
$aisatsu = 'こんにちは。'; //変数の前には$を付けます。文の最後には;を付けます。
$data = 1;
if ($data == 1)      //もし $data が1ならば、{ から }までを実行する。
{
  echo $aisatsu;     //echoはDOSのコマンドと同じです。
  echo '<br />';     //当然ながらhtmlの改行タグを書かないと改行しません。
}
echo 'さようなら。';    //直接文字を書き出すことも可能です。
?>            //最後はかならずこれ。

これを、たとえばindex.phpというファイル名で保存し、ブラウザで開いても実行はできません。htmlならば表示されますが、phpを自分のPCで実行させるには、Apache等のWebサーバが動いていることとphpがインストールされていることが必要です。どちらも無料で入手できます。

実行できれば、画面には以下のように表示されますよ。

こんにちは。
さようなら。

このAvocadoMixで実際に使っている短いものを紹介します。随想の「15.気になるカタカナ語」でランダムに写真を表示している部分です。

<?php
$num = mt_rand(101,455);
$file_name = 'av'.$num.'.jpg';
?> 
<img src="../nengo/images/aviation/<?=$file_name?>" alt="" />

101から455までの乱数を発生させ、画像のファイル名を組み立てます。後はhtmlでそれを表示させるだけです。


次回は

要望があるか、気が向いたら書きます。

2013年6月16日 記