卒研中間レポート

・目次
1.研究の目的と背景
2.PHP とは
2.1 クライアントサイドスクリプトとサーバーサイドスクリプト
2.2 PHP が使われる理由
3.本研究に役立ちそうな技術
3.1 XAMPP
3.2 PHP での電子メールの送信
3.2.1 mail 関数
3.3 グラフィックの利用
3.3.1 <IMG>タグ
3.3.2 GD(Graphics Library)
3.4 Cookie とセッション
4.考察
1.研究の背景と目的
近年,9割の日本人には英語は不必要である[1]が,英語の教育が義務付けされてきている。しかし,現在就職
活動時に TOEIC スコアを求める企業,また一定以上の TOEIC スコアを持っていると有利になる企業も多々ある
のも事実であり,また私自身,現在の就職内定先に TOEIC スコア 650 以上を求められている。そこで,現状以
上の更なる英語力が必要である。
そこで本研究では TOEIC に必要であるライティングの英語学習を支援する web アプリケーションの開発を目
的とし,その言語として Web アプリケーション開発,短期開発に向いている(後述 2.2)PHP について学習する。
2.PHP とは
PHP とは PHP: Hypertext Preprocessor の略で,WEB ページを記述することに特化したサーバーサイドスクリ
プト言語である。 簡単に述べると,PHP の実体は,Web サーバに置かれるソフトウェアの Apache モジュールとし
て動作するスクリプト言語を実行する環境を指す。HTML 文書中に記述されたスクリプトを PHP が実行し,結果
を HTML データとして Web ブラウザに出力する仕組みがある。その意味では,PHP を実行させるための Apache
モジュールを Web サーバに置かなければならない。現在,Apache は,世界中で最も普及しているオープン・ソ
フトであるため,ほとんどの Web サーバに実装されている[2]。
2.1 クライアントサイドスクリプトとサーバーサイドスクリプト
クライアントサイドスクリプトは,JavaScript のように Web ブラウザ側で実行されるスクリプトである。Web ブラウザ
側で処理されるため,サーバーへの負荷が少なくて済み,Web ブラウザの表示や動作を簡単に制御できるという
メリットがある。ただし,同じコードでもブラウザの種類によって動作が異なったり,動作しないということが起こる可
能性もある。
一方,Web サーバー側で動作するものをサーバーサイドスクリプトという。PHP や Perl,JSP などがこれにあたる。
Web サーバーで処理が行われ,クライアントにはその処理の結果の HTML だけ送られるので,Web ブラウザを選
ばない。ただし,リクエストの数だけサーバーに負荷がかかる。
クライアントサイド スクリプト
スクリプトそのもの
が送られる
クライアント
リクエスト
サーバーサイド スクリプト
Web サーバー
スクリプトの実行
結果が送られる
Web サーバー
クライアント
リクエスト
2.2 PHP が使われる理由
PHP は,Perl と同様にテキストベースで構築できる手軽さがある。基本的には,HTML ファイルに埋め込
む言語であるため,簡単なテキストエディタがあれば,誰でも書くことができる。加えて,CGI のようなサーバ
負担も少なく,実行が早い利点も持っている。
以下が,PHP が利用されている主な理由である。
・Web アプリケーション開発に特化した言語である。
・文法が比較的容易に誰でも習得することができる。
・テキストベースで手間がかからず,デバックも簡単に行える。
・短期開発に向いている。
・CGI と比較すると,実行速度が断然早い。
・どのような種類のデータベースとも接続可能である。
こうした特徴を持つ PHP は,Yahoo や楽天など [ 2 ] の商用サイトでも採用され,素早い開発が行われてい
る。また,多く Web サーバーでも PHP を実装しつつあることから,より多くのサイトでも PHP の採用が進め
られている。
3.本研究に役立ちそうな技術
現段階では未だ具体的な構想案ができていない為,役に立ちそうな,また使うであろう技術,プログラ
ミングを学んでいく。
3.1 XAMPP
本研究では,研究環境として XAMPP を使用する。XAMPP には Apache(Web サーバ),
MySQL(SQL データベースサーバ)と Web プログラミング言語である PHP や同目的で使われる Perl の
4 つの主要ソフトウェアと phpMyAdmin などの管理ツール,さらに SQLite など,いくつかの補助的なソ
フトウェアとライブラリモジュールが含まれている。現在,Windows,Linux,Mac OS X,Solaris で利用
可能である。
本来,前述の複数のソフトウェアは個別にインストールする必要があり,非常に手間がかかるが,
XAMPP は一括してインストールするだけで,すぐに開発や運用が開始できる。パッケージとしての特性
上,Apache 個々のソフトウェアのバージョンが必ずしも最新版で揃えられてはおらず,特にドライバモ
ジュールに古いまま更新されていないものが含まれる [ 3 ] 。
3.2 PHP での電子メールの送信
学習を継続するために,いつも持ち歩いているであろう携帯電話や,頻繁に見るであろう自分のアドレ
スに毎日,もしくは数日学習を怠けていたりしたら何らかの学習を促すメール等送ることができればよい
のではないかと考えた。
一般に電子メールを送信するには SMTP(Simple Mail Transfer Protocol)サーバーを使用する。
PHP でメールを送信する方法は,利用する環境に大きく左右される。もし,メール送信の環境が設定済
みのレンタルサーバーを利用できるのなら,mail 関数を実行するだけですぐに送信できる。しかし,本研
究は XAMPP により Apache をインストールし PHP の実行環境をローカルに構築しているので,ここでは
Gmail を利用した手順を記載する。
メールを送信するための mail 関数や mb_sendmail 関数は,基本的に php.ini に設定されている
SMTP サーバー名とポート番号を使う。通常のプロバイダの SMTP サーバーは,迷惑メールの送信元に
ならないために何らかの認証方式を導入しているのが普通であり,最近では SMTP 認証というものが主
流になってきている(SMTP 認証とはメール送信の際に SMTP サーバーとユーザー間でアカウントとパス
ワードの認証を行い,認証された場合のみメール送信を許可するもの)。SMTP 認証が必要な SMTP
サーバーへメールを送信する場合,mail 関数や mb_send_mail 関数は sendmail というプログラムを使っ
て,代わりに送信してもらう。
p hp.ini の 1142 ~ 1145 行目付近
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" ・・・・・・先頭の「;」を削除
¦
;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe" ・・・・・・先頭に「;」をつける
これで,メールを送信する際に sendmail が自動的に呼ばれる。次に,sendmail の設定ファイルである
sendmail.ini を修正する。
s endmail.ini の 14 行目付近
smtp_server = smtp.gmail.com ・・・・・・ホスト名を設定
; smtp port (normally 25)
smtp_port = 587 ・・・・・・ポート番号を設定
sendmail.ini の 26 行目付近
smtp = tls ・・・・・・プロトコルを設定(TLS とはユーザー名とパスワードを暗号化するためのプロトコル
の一種)
sendmail.ini の 46 行目付近
auth_username = アカウント@gmail.com ・・・・・・自分の実際のアカウント
auth_password = パスワード ・・・・・・自分の実際のパスワード
sendmail.ini の 60 行目付近
force_sender = アカウント@gmail.com
以上の設定で Gmail の SMTP サーバーが利用できるようになる。
3.2.1 mail 関数
受信者:[email protected]
件名:Test
本文: This Mail is test
上記の内容で,mail 関数を使用して送信するときのサンプルは次のようになる。
mail_test.php
<?php
if(mail("[email protected]","Test","This Mail is test")){
print"SUCESS";
}else{
print"ERROR";
}
?>
送信が受け入れられると TRUE が返り「SUCCESS」,受け入れられないと FALSE が返り「ERROR」と表
示される。
3.3 グラフィックの利用
文字だけでなく,画像等のグラフィックを利用することで英語の学習の幅が広がると考え,グラフィック
の利用について学んだ。
3.3.1 <IMG>タグ
画像を表示するときは<IMG>タグを使う。これで GIF,JPEG,PNG も画像が表示される。SRC 属性に
は,表示する画像ファイルの名前や保管されている場所を指定する。例えば,公開されるディレクトリに
存在する「img.jpg」の画像ファイルを,「128 ピクセル×96 ピクセル」のサイズで横 5×縦 3 個表示する
PHP スクリプトだと,下記のようになる。(あらかじめ「img.jpg」を公開されるディレクトリに用意してから実
行しなければならない)
img_for.php
<?php
for($y=1; $y<=3; $y++){
for($x=1; $x<=5; $x++){
print "<IMG SRC = 'img.jpg' WIDTH = 128 HEIGHT = 96>";
}
print "<BR>";
}
?>
実行結果
3.3.2 GD(Graphics Library)
GD とは,画像を扱うためのさまざまな関数を集めた,オープンソースのライブラリである。PHP だけで
なく,多くのプログラム言語で利用することが出来る。 また,XAMPP に GD は標準で実装されているの
でこれを利用する。
例として,下記は「Congratulation」という文字を含む画像を作成して表示する PHP スクリプトである。
imagestring_test.php
<?php
$gz = imagecreatetruecolor(300, 200); ・・・・・・①
$col = imagecolorallocate($gz, 255, 255, 0); ・・・・・・②
imagestring($gz, 5, 80, 80, "Congratulation", $col); ・・・・・・③
imagejpeg($gz, "image1.jpg"); ・・・・・・④
imagedestroy($gz); ・・・・・・⑤
print "<IMG SRC='image1.jpg'>";
?>
①:横×縦が 300×200 ピクセルの画像リソースを作成し,変数「$gz」に「画像 ID」を代入。
②:GD で色を扱う場合,予め指定する色の情報である「色の ID」を作っておく必要がある。ここでは赤と
緑は 255,青は 0 の色(黄色)の色を指定し,その黄色の「色の ID」を「$col」に代入。
③:「画像 ID」が$gz の画像リソースに対して,「フォント」が「5」のサイズ,「X 座標」が「80」,「Y 座標」が
「80」,「Congratulation」の文字列を,$col の色で描く。
④:設定した画像($gz)を,「image1.jpg」という JPEG 画像ファイルとして保存。この場合,公開される
ディレクトリに保存される。
⑤:メモリ上に存在する作成された画像リソースのメモリを開放。
実行結果
3.4 Cookie とセッション
Web サーバー側のプログラムが,クライアントの情報を得る手段は限られている。その1つの手段が
Cookie である。クライアントの情報を使って処理したい,というときに役立つ。クライアント側に 保存され
た Cookie は,次にユーザーが同じ Web サイトを利用したときに使われる。例えば前回の検索キーワー
ドや購入した商品などの情報を Cookie から取得して,自動的に表示したり処理したりすることができる。
また同一のユーザーがアクセスしていることを PHP で判断するとき,多くの場合セッションを利用する。
セッションを開始すると,Web サーバーはクライアントに対して「セッション ID」という特別な値を発行する。
クライアントはこの「セッション ID」をパソコンに保存し,そして別の Web ページに移動してもこの「セッ
ション ID」を持ち歩く。Web サーバーは,同じ「セッション ID」をもっているクライアントを「同一ユー
ザー」と判断する。例として,下記は Cookie を使った PHP スクリプトである。
eturan.php
<?php
if(!isset($_COOKIE["kaisu"])){ ・・・・・・①
setcookie("kaisu", 1, time() + 60 * 60 * 24 * 365); ・・・・・・②
print "はじめてのご来場ありがとうございます";
}else{
$n = $_COOKIE["kaisu"] + 1; ・・・・・・③
setcookie("kaisu", $n, time() + 60 * 60 * 24 * 365); ・・・・・・③
print $n . "回目のご来場ありがとうございます";
}
?>
①:閲覧した回数を「kaisu」という名前の Cookie に保管する。したがって,もし Cookie[kaisu]に値が
入っていなければ,「はじめての入場者」になる。isset($COOKIE[“kaisu”])は,$COOKIE[“kaisu”]に
値が設定されていたら TRUE に,入ったことがなければ FALSE になる。
②:Cookie[kaisu]がセットされていなかった場合は「はじめての入場者」なので,Cookie[kaisu]に「1」を
セットする。また Cookie の保管期間は 365 日としている。
③:すでに$_COOKIE[“kaisu”]に値がセットされていた場合,その値に 1 を加えて Cookie を書き出す。
実行結果
3 回目の訪問
5 回目の訪問
セッション変数を使った PHP スクリプトだと下記のようになる。
kaisuu.php
<?php
session_start(); ・・・・・・同じセッションで扱いたいページでは先頭で必ず session_start 関数が必要
if(!isset($_SESSION["kaisuu"])){
$_SESSION["kaisuu"] = 1;
}else{
$_SESSION["kaisuu"]++;
}
print $_SESSION["kaisuu"] . "回目のご来場ありがとうございます";
?>
4.考察
まだまだ PHP の基本的な部分の学習段階で,Web アプリケーションの具体的構想もできていないた
め,あまり進んでいない現状である。これから PHP の基礎知識を増やしていくとともに,応用知識なども
学習し具体的なアプリケーションの構造を練り,またそれに必要な知識の学習をしていく必要がある。
・引用,参考文献
[1] 「9割の日本人に必要のない英語を,なぜ日本人は必死に学ぶのか?|ビジネスサプリ」
<http://businesssupple.com/businessbook/1694.html >
[2] 「PHP とは/PHP 入門」
<https://www.scollabo.com/banban/php/php_01.html >
[3] 「XAMPP-Wikipedia」
<http://ja.wikipedia.org/wiki/XAMPP >
[4] 西沢夢路(2013)『基礎からの PHP』ソフトバンク クリエイティブ株式会社