文字エンコーディングについて

普段私たちはいろいろな文字を使って文章を作っています。
英字、数字、記号、ひらがな、カタカナ、漢字 などコンピュー タの内部で、 これらの文字は「番号」で管理されています。

たとえば、私たちがメモ帳で文書ファイルを聞いたときには、番号で保存されている文字データが、目に見える文字に変換されて画面に表示されています。
コンピュータは、私たちが使う文字とそれに対応する番号を変換する処理を行っているのです。
この変換を行うための規則を、文字エンコーディング (文字符号化方式)といいます。

文字エンコーデイングは何種類も存在しているのですが、日本語環境では、以下の文字エンコーディングが使われることが多いです。

・ UTF-8
・ EUC
・ Shift-JIS

インターネットで公開されているWebサイトでは、サイトによって異なる文字エンコーディングが使われています。
Webブラウザは、いろいろな文字エンコーディングに対応した表示が可能で、
現在見ているページがどの文字エンコーディングを使っているのかを知ることもできます。

Webシステムを開発する環境

プログラムを作る開発者の立場で見ると、開発時のコンピュータの構成は、開発用と実行用それぞれのコンピュータでブラウザやWebサーバのやりとりをしたり、開発用からFTPなどでPHPプログラムを転送したり、といった形になる場合が多いです。

Webサーバとは別の開発用のコンピュータでプログラムを作り、そのプログラムファイルをWebサーバに転送して動作確認をします。
ファイルをWebサーバに転送するには、一般にFTPクライアントというソフトウェアを使います。
もし皆さんが契約しているプロパイダがPHPに対応していれば、プロパイダのWebサーバでPHPプログラムを動かすことができます。

Webアプリケーションにおけるアルゴリズム

プログラムで何かを実現する場合、いきなりスクリプトを書き始める人はいません。まずは、どのような機能や仕様が必要となるのか、その手順はどのようにするのかを考えてから、プログラミングに取りかかります。
これを「アルゴリズムを考える」といいます。

もともとアルゴリスムというのは、何らかの問題を解くための手順のことです。
プログラミングをする前には、必ずどのようにスクリプ卜で表現すればよいのかを考えてからプログラミングを行います。どのようにスクリプトで表現するのかを考え、そのロジック、手順を考えることが「アルコリズムを考える」です。

スクリプ卜を作成する上で必要なスキルはさまざまですが、その中でも大切なことは以 下の2つです。
まず、プログラムをつくる前に、アルコリズムについて検討すること、そして、わからないことなどを自分で調べることです。
つくりたい機能の作成方法が思いつかなければ、スクリプ卜を書くことはできません。しかし 、よいアルゴリスムが自分で思いつかなくても、それを調べて見つけ出すことができれば、その作成方法を導くことができます。
スクリプ卜を作成する場合には、このふたつのことを日々鍛えていくことが大切です。
なお、アルコリズムは目的を解決するための方法なので、その手法は必ずひとつになるものではありません。考える目的によってはいくつかの手法が存在します。
このように、「アリゴリズムを考える」練習は、プログラミング上達のためには欠かせませんので、ぜひ挑戦してみてください。

引数の「値渡し」と「参照渡し」

関数の引数には 2種類のタイプがあります。
通常、関数への引数は値を直接渡すので関数内でその値を変更しでも、呼び出し元の変数の値に影響を与えることはありません。
これを「引数の値渡し」といいます。

これに対し、関数の引数で、変数の前に&がある場合、関数内でその値を変更すると、呼び出し元の変数の値に影響を与えます。
呼び出し元の変数の値に影響を与えることを「参照渡し」といいます。

この違いは、送った引数の値を変更する変数なのか、そうではないのかの違いです。

値渡しのユーザー定義関数を作成するには、
①ユーザー定義関数を作成 ②実行部分の作成 ③Webブラウザで出力を確認
の3つの手順があります。

また、参照渡しのユーザー定義関数の場合は、
①引数に「&」を付加する ②Webブラウザで出力を確認
の2つの手順で作成することができます。

PHPの基礎

PHPは、静的な HTMLページにプログラムを埋め込み、動的な Webページを作成するのために開発さ
れたプログラミング言語です。PHPの書き方のルールや特徴、そして構文をしっかり理解しましょう。

そもそも PHP は、静的な HTML ぺージにプログラムを埋め込み、動的な Webページを生成するために開発された プログラミング言語です。つまり 、他のプログラム言語と違い、HTML ソース内に直接記述することができます。PHP の書 き方のルールとして、まずPHP スクリプ卜は 「<?php」 と 「?>」 で囲みます。また、PHP 処理文の録後は「セミコロン(;)」で終わります。そして、ファイルの上から下に処濯が実行され、ファイルの儀後に到達するとプログラムが終了する仕組みとなっています。

なお 、PHP には「exit;」という処理を終了させる構文があります。この構文を実行すると、その場でプログラムカず終了し、それ以降の PHP スクリプ卜や HTML の出力は行われません。
また、HTML 部分は通常の HTML として Webブラウザに出力されますが、「<?php」 と 「?>」で囲まれた部分では、動的な値を生成して print 構文を使って HTML へ出力します。さらに、ファイルの拡張子は 「.php」でなくてはなりません。

実際にPHPを使ってWebアプリケーションを作成し実行する

まずここではお持ちのパソコンがWindowsでWindowsパソコンで今後もWindowsパソコンと
して使用しながら、Widowsパソコン上ににVM(仮想OS)をインストールした後にLinuxをVM
(仮想OS)上にインストールする方法を紹介します。

ここではVirtual Boxを紹介します。ダウンロードして使用可能です。
Virtual Boxのダウンロードは検索でVirtual Boxと入力しますとダウンロードの
リンクが左上にありますので、ページの説明(日本語)を読んでダウンロードしてください。

次にVirtual Boxをインストールする方法を紹介します。

Windows版、OS X版はそれぞれインストーラーが付いています。ダウンロードしたファイルを実行して、
Virtual Boxをインストールしてください。

次に、Linuxインストール用のファイルを入手しましょう。Linux公式サイトで、インストール用の
ISOイメージファイルというものが配布されいますので、まずはISOファイルのダウンロードを行って
ください。あまり古いバージョンのLinuxですと、インストールがかえって大がかりになってしまうので
新しいバージョンのLinuxのISOファイルを入手してください。目安としてはCENT OS 7以降が
インストールが楽です。
(CENT OSの他には公開されていて配布可能なLinuxもありますが、ここではCENT OSにして
います。)
CENT OS

CENT OS 7は、DVD ISO、Everything ISO、Minimal ISOの3種類のISOイメージファイルが配布されています。
通常は「DVD ISO」を使うとよいです。

Virtual BoxのインストールとISOイメージのダウンロードができたら、インストールを開始しましょう。
まずは、Virtual BoxでこれからLinuxをインストールする“仮想マシン”を作成します。

Virtual Boxを起動後、画面左上にある「新規」をクリックします。
「新規」をクリックすると「仮想マシンの作成」画面が開きます。
この画面で、まず「名前(任意の名前でOK)」を付け、これからインストールしたいOSの「タイプ」と
「バージョン」を選択します。CENT OSの場合、「タイプ」は「Linux」、「バージョン」は
「Red Hat(64-bit)」を選択します。

次に「メモリーサイズ」を選択してください。仮想マシンでどれだけメモリを使えるか、ということになるので、
大きくすれば仮想マシンの処理スピードが上がりますが、その分、本体側(ホストOS)の処理が遅くなる場合が
あります。

Linuxのデスクトップ環境は1024MBもあれば動きますが、2048MB以上のメモリがあえるパソコンでしたら、
2048MBぐらいにしておけばより快適に使用可能となります。

「ハードディスク」では、仮想マシン用のハードディスクを作るかどうかを設定します。これからLinuxを
インストールしたいので、「仮想ハードディスクを作成する」を選択してください。

ここまでの設定が完了したら、「作成」をクリックしてください。

ユーザーで定義する関数とは?

 PHPには数多の関数が備わっています。しかし、関数はなにも PHPが最初から提供しているものばかりではありません。必要に応じて、自分自身で関数を定義することも可能です。ユーザー自身で定義した関数のことを「ユーザー定義関数」と呼びます。例えば、HTMLエンコードすべきところが沢山ある場合、そのすべてにおいて htmlspecialchars関数を呼び出していたら、あまりにも効率が悪いと思います。呼び出す箇所がほんの数カ所であればまだ我慢できるかもしれません。しかし、もしもこれが何十か所、何百か所にも及んだり、あるいは、それぞれで必要な処理が何十行にも及んでいたら、これはとんでもない労力が必要だといえるでしょう。

 それでもまだ、コーディングをするときに必死になればいいのだというガッツのある人もいるかもしれません。しかし、もしも後で、そんな繰り返し部分に修正、あるいは、間違いが見つかったらどうでしょう。 分散した繰り返しのコードは、誰かがすべて修正しなければならないのです。それは実に骨の折れる作業だと言えます。

 そんな労力を助けてくれるのが、ユーザー定義関数です。ア プリケーションで繰り返し利用する機能は、ユー ザ一定義関数として用意しておくことで、コードをより最適化できます。このようにして定義されたユーザー定義関数は、「関数名(引数,…);」という形式で呼 び出すことも可能です。

戻り値

戻り値とは、関数の結果のことです。ユーザー定義関数が戻り値を持つ場合には、return命令を使って呼び出し元に返します。return命令で関数の処理は終了し、それより後ろの命令は処理されませんので、注意してください。

例えば右のtriangle.phpは、与えられた底辺($base) と高さ($height) をもとに、三角形の面積を求めるtriangle関数の例です。実行してみると、return命令の後ろに書かれたマーカーの部分は実行されて「いない」ことが確認で
きます。

return命令を省略することもできます。その場合、ユーザー定義関数はなにも返しません。ただ、決め5れた処理を
実行するだけです。

Encode.phpのe関数を改良し、与えうれた文字列を工スケープしたあと、そのまま出力するようにしたものです。関数の中で出力までしていますので、呼び出し元でprint命令を呼び出していない点にも注目してください。

JDK(Java Development Kit)

PHPの開発を行うのにJavaは特に不要なのですが、Eclipseという開発環境の一部にJavaを利用しているため、Javaを実行するための環境が必要となります。

Javaを使うためのソフトウェアには2つあります。lつは、Javaのプログラムを実行するJRE(Java Runtime Environment)で、もうlつは、Javaのプログラムを開発するJDK(Java Development Kit)です。

基本的に、PHPの開発をするだけであれば、Eclipseを実行するのに必要な胞だけが用意しであれば十分です。どちらも専用のインストーラを使ってインストールするだけですので、それほど難しくはありませんから、もちろんJDKをインストールしでもかまいません。

JREは、Webサイトなとごで、Javaのプログラム(アプレットと呼ばれます)を実行するのに必要となるため、既に多くのユーザーのOSに組み込まれていることと思います。Eclipseは、JREの「5.0」というバージョン以降のものであれば問題なく動きます。既にこのパージョンのJREがインストールされているなら、別途インストールする必要はありません。以後のインストール作業は、まだJREがインストールされていなし、(あるいは、5.0より古いパージョンのものが入っている)場合にのみ行ってください。

 

 

while文の使い方

while文を使うと、このような繰り返し処理を組み立てることができます。繰り返す処理を{ }に記述し、ループを抜けるためのコドを()に記述する点は、for文と同じです。ただし、while文の( )ではループカウンタが使えません。では、どのようなタイミングでループを終了するのでしょうか。while文は、簡単に言えば「問題がなければループを続ける」という構文です。

while文によるループ処理

「問題がなければ」についてもう少し説明します。プログラミング用語を使って説明すると、while文は、( )がtrueの間は処理を続けるという構文です。(   )がfalseになった時点でルプを終了します。簡単に言えば、(  )に「ルプを続けていいですか?」と書かれていて、その答え(「はい」または「いいえ」)に応じてループを続けるか終了するかが決定するのです。

while文の構造

while (ここがtrueの聞はループを続ける)  {

}

急に「trueの聞は処理を続ける」という表現が出てきたので、while文のループが終了するタイミングが、今ひとつピンとこないかもしれません。月末日を過ぎたらwhile文を抜ける例でイメージすると、( )に次のような条件を記述して、うまくループを抜けるように処理を書きます。

月末日まで表示して終了するwhile文のイメージ

ループ開始時点はtrueだった「あるもの」が、途中でfalseになったのでwhile文を抜けるという動作です。ところで、なぜ、「過ぎていますか?」ではなく「過ぎていませんよね?」のようなまわりくどい質問にするのかは、後でわかるので気にしないでください。ここでは、質問の答えが「いいえ」(false)になった時点でwhile文を抜けるということだけを意識して、先に進みましょう。