1 -3 Web アプリケーションについて知ろう ・ HTML (Hyper Text Markup Language) KEYWORD HTTP は、主として HTML (Hyper Text Markup Language) キストデータを送受信しますが、ほかにも JPEG や PNG などの画像データ、 PDF などの文書ファイル、 MPEG や Flash などの映像やアニメーションなど、 多くのデータに対応しています。 プラウザは、 Web サーバーから送られてきたデータを元に画面上にそのデー タを表示していますが、基本的には HTML データを扱うものです。プラウザは HTML に記述されているテキスト情報を元に、それらを解釈した結果を画面へ と描画しています。たとえば、次のような HTML のデータは、 Web プラウザに と呼ばれるテ 解釈されて、画面のように表示されます。 図① -14 HTML とブラウザによる表示 HTML まイれていますを く /html > く /bodY> く p style = “ C010 て : て ed 表示されていますか ? く /P> く hl > こんにちは ! くな 1 > く b0dY> く /head> く t 土セ le > He110 ! く / セ le > <head> く html> こんにちは ! ブラウザ ・つンビュータ 4 を一ド : 第新 Web アプリケーションでは HTML をプラウザに送信し、 HTML を画面に表 示させることで多彩な表現が実現します。 HTML データだけでは単純な表現し かできませんが、 HTML に画像データなどを組み合わせることで、プラウザの 表現の幅は広がっています。 Web アプリケーションの特徴②一日語ー Web アプリケーションで実行されるサーバーサイドアプリケーションは、さ まざまなプログラミング言語で記述できますが、基本的な動作の仕組みは同じ です。
丁ータ型 3-3 COLUMN ビットによる数字の表現 通常コンピュータの 2 進数の表現は、あらかじめ O と 1 を何桁 ( ビット ) まで用いる かが決まっています。用いる桁数が決まっていないと機械にとっては扱いにくいのであ らかじめ約束事として 8 桁、 16 桁などと桁数を決めてあるのです。たとえば、 8 桁の 2 進数を用意して、 00000011 などと表現した場合、これは 10 進数表記の「 3 」になり、この表現は「 8 ビットの整数 表現」ということになります。この表現の場合、表すことができる数は 2 >< 2 ><2 x2 ><2 ><2X2><2 で 256 種類ありますが、初めの数は O ですので最大値は 255 です。 ただし、一番上の桁は数字のプラスとマイナスを表現するために使うこともありま す。一番上の桁が O だったらプラス、 1 だったらマイナスの数とコンピュータが解釈す るのです。たとえば、 10000011 と書いたら 10 進数表記で「一 3 」ということになります。この場合は数を表すのは 7 桁 ですから 2X2X2X2X2X2X2 でプラスに 128 種類、マイナスにも 128 種類の数が 表現できます ( ただし「 OOOOOOOO 」も「 10000000 」もどちらも 0 を表すことになり ます ) 。こうした最上位がプラス / マイナスを表す表記は「符号付」と言われます。上 己の例なら「符号付 8 ビットの整数表現」となります。 PHP で整数といった場合は何ビットを使っているのでしようか ? PHP で一般的に 使っているのは「符号付 32 ビット」です。この場合、下は「 -21 億 4748 万 3648 」から 「 21 億 4748 万 3647 」までを扱うことが可能です。 また、桁数が決まってない場合は桁数に応じた処理をさせなければいけないので処 理が急激に複雑になります。桁数が決まっていない数字を扱う代表的な例は小数でしょ う。この場合のために、プログラムでは浮動小数点型というデータ型が用意されてい るのです。 一三ロ $b = ー鈴木 ーこんにちは $ { a } さん echo echO “こんにちは $ { b } さん echo
ァータ型 KEYWORD ・バックスラッシュ ・エスケープシーケンス 3-3 図 h : 〃式 / t p マス凵冊師 図・ -10 シングルクオートとダブルクオートの違い hello world ー helloVtworld ☆、ロ h : / ハ式 / t ~ 0 を O ~ を朝、 , 住ページ旧ァ できるようになります。代表的なエスケープシーケンスは以下のとおりです。 が表示されるためです。ェスケープシーケンスを使うことで特殊な記号も表現 Windows では¥マーク ) 」を含むいくつかの特殊文字 ( 工スケープシーケンス ) これは、ダブルクオートで文字列を表現する際には「 \ ( バックスラッシュ す。 ダブルクオートではタブ文字 ( 表示上では空白ですが ) になって表示されていま シングルクオートで表示した場合だとそのまま「¥ t 」が表示されていますが、 表 3-4 工スケープシーケンス 工スケープシーケンス Vn ¥ [ 0-7 ] { 1 , 3 } Vx[0-9A-Fa-fl{1 , 2 } 説明 改行文字 (LF) キャリッジリターン、行頭復帰 (CR) 水平タブ (HT) 垂直タブ ( 町 ) フォームフィード バックスラッシュ $ 記号 ダブルクオート 8 進数を表記する 1 文字 ( 左記はその正規表現 ) 16 進数を表記する 1 文字 ( 左記はその正規表現 ) 工スケープシーケンスをダブルクオートで表現する際には「 \ ( バックスラッ シュ : Windows では¥マーク ) 」を用いて特殊文字の始まりであることを示す必 要があります。 echo “蕚“で苫“工スケープ“しています“ これは以下のように表示されます。
・ 230 第 8 章 PHP のいろいろな機能 を数値として」取り出して表示する、あるいは「文字列を文字として」取り出し て表示するといった、文字列の表現方法を指定することができます。 printf 関数、 sprintf 関数で利用できるフォーマット文字をいくつか紹介します。 表 0-1 printf 関数、 sp ⅱ n 廿関数で利用できるフォーマット文字 書式 %d % 0 %x %c %s %f %e 意味 バーセント文字 歹を整数として扱い、 10 進数で表現する 歹を整数として扱い、 8 進数で表現する 歹を整数として扱い、 16 進数で表現する 歹 - / を整数として扱い、 ASCII 文字として表現する 歹を文字列として扱い、表現する 歹を double として扱い、浮動小数点数として表現する 歹を科学記法として扱います。 ( 例 : 1 .2e + 0 など ) フォーマット文字列は「 % 」の後ろに数値を加えることで、指定の桁数までを 文字列で埋めてを表現することができます。たとえば「 % 05d 」の場合文字を「 5 桁の整数値」として扱い、 5 桁に満たないぶんは 0 で埋めて表現するという意味 val Ⅱ eB の値は文字を取り出す : 123 c vaIueA の値は 4 桁数値として取り出す : 0123 ASC 工工文字として : A 10 進数の数値として : 65 実行結果 0-13 echo '<p>va1ueB の値はし $va1ueB, I< / echO ーく p>va1ueA の値はし $valueA' '</P>I $va1ueB sprintf い文字を取り出す : % $va1ueA = sprintf い 4 桁数値として取り出す : % 04d し printf いく > ASC 工工文字として : %c く /P>' て土 tf ( I<P > 10 進数の数値として : %d く /P>' $b = ー 123abc $ a = 65 ー く ? 0h0 になります。
3-3 データ型 型とは 8 7 ・ 型は値 ( データ ) がどのような意味を持っ値であるのかを表している表現のこ とで。同じデータでもその型が持つ意味によってプログラムの処理が変わって きます。以下の例を見てみましよう。 / / 文字列として 123 を表現 / / 数値として 123 を表現 これら、変数 a も変数 b も「 123 」という値を持っていますが、コンピュータに とって、「 123 」が文字列として表現される場合と、数値として表現される場合と では、処理方法そのものが違ってきます。 以下は、メモリ上での「 123 」が文字列として扱われる例と、数値で扱われる ー 123 $b = 123 ー 図・ -6 データ型による扱いの違い 例をごく単純に示したものです。 b 1 123 2 3 メモリ上では、文字列は別々の 箱に格納される 数値の場合、その値 1 つで 1 つ の箱に格納される 文字列として格納されている変数 a の「 123 」は数字そのものではなく「 1 」「 2 」 「 3 」という「文字を表したデータ」が格納されているだけです。 a の場合、コン ピュータ上ではたんなる文字でしかないので、そのままでは計算はできません。 一方、数字として格納されている変数 b の「 123 」なら計算に用いることが可能 です。このようにそのデータの型が何かによって、メモリ上での扱われ方はまる で異なります。例では「文字列」と「数値」の 2 種類ですが、プログラム上ではもっ と多くの「型」が扱われているため、プログラマはデータの型を気にしながらプ ログラミングをしなければなりません。 図 3-7 変数のデータ型の違い 123 文字列ー 123 b 数値
3-3 データ型 COLUMN 2 進数、 8 進数、 16 進数 という表現になります。「 IO 」という表現は IO 進数で解釈すれば IO のことでも、 2 進 じです、「 1 」も 10 進数と同じですが、これに 1 を加えた場合はすぐに位が上がって「 10 」 2 進数でこうした動きを再現する場合、たとえば 2 進数の「 O 」は 10 進数の「 O 」と同 増え、 1 の位は 0 に戻って「 20 」となります。 現します。たとえは、 19 という数字に 1 を加える場合なら、 9 の次は IO の位が 1 つ 数を表現しています。「 15 」であれば 10 の位が「 1 」で 1 の位が「 5 」という具合に表 通常私たちの生活で使う数の表記法は 10 進数といい、 9 までの数字を使って た具合に決められた種類の文字で「数」を表現する方法のことなのです。 数というと「 O 」と「 1 」の 2 つの数字、 8 進数といえば「 O 」から「 7 」の 8 つの数字といっ うなものでしようか。簡単にいえば、これらは数の表現方法のことです。たとえば 2 進 本文では、「 2 進数」「 8 進数」「 16 進数」などの用語が出てきますが、これはどのよ ・ 10 進数 KEYWORD を卩」す金いコ 数の表現で解釈すると 2 ということになるのです。 図 3-8 2 進数と 10 進数 2 進数 1 1 1 0 1 10 進数 1 2 3 9 一方、 8 進数の場合は「 O 」 ~ 「 7 」、 16 進数の場合は 0 ~ 9 だけだと文字が足りま せんから ABCDEF も加えて 16 の文字を使うことになります。 しかし、なぜプログラム言語にはこのようなややこしい数字の表現方法があるので しようか ? これは、コンピュータの内部における数字はすべて 2 進数で取り扱われてい
・ 86 第 3 章 PHP の基本と変数 乗である 16 進数の操作は機械の側に歩み寄った、コンピュータにとって都合の良い操 合わせによるテータの集合です。したがって、 2 進数や 2 の 3 乗である 8 進数、 2 の 4 ピュータの数字や文字、あるいはグラフィックなども、内部的にはすべて O と 1 の組み タを単純な O と 1 の組み合わせで解釈します。一見複雑で多様な表現をしているコン コンピュータは人間のように複雑に物を考えることはできず、すべての命令やデー るからなのです。 作ということになるのです。 $a = 1.234 ー / / 1.234 -123.45 / / -123.456 0.12345 ー / / 0.12345 - 0.1234 / / - 0.12345 浮動小数点数では、「 e 」や「 E 」の文字を使うことで きます。 $a = 1.2e3 ー / / 1200 $b = 1.2E - 4 ー / / 0.00012 KEYWORD ・指数 KEYWORD ・文字列 ・ string ・シングルクオート ・ダブルクオート 数表現を使うことがで 指数表現では、上記「 12e3 」は「 12 x 10 の 3 乗」と同じ意味になります。また、 「 1.2E -4 」は「 12X10 のマイナス 4 乗」という意味になります。 文字列 は、 PHP では string ( ストリング ) と呼ばれます。 文字列 その名のとおり、「文字」を扱うための型です。文字列を表現するには尸 ( シン グルクオート ) 」もしくは「 " ( ダブルクオート ) 」を用いて表現します。 $a = ー山田 <?php で違いがあります。以下の例を見てください。 シングルクオートで文字列を表現する場合と、ダブルクオートを用いる場合 $b = “こんにちは“ $a = ーこんにちは
4-1 演算子 a < く b とすることで、 a を b 分だけ左にシフトするという意味になり、 a > > b とすることで a を b 分だけ右にシフトするという意味になります。よって 10 “ 2 は 10 を左に 2 シフトするという意味になります。 2 進数の数字で表す と、以下のようになります。 0010 1000 0000 1010 くく 2 となり、 10 進数で「 40 」になります。 10 は実際には 2 進数で表記すると 1010 なので、 2 桁左に動くと 0010 1 圓 0 これにより、 2 進数上 0000 0010 となり 10 進数での「 2 」という結果になります。 また、 10 > > 2 では右に 2 シフトするという意味になりますので、そのまま 各ビットが 2 つ右にずれます。 0000 1010 > > 2 0000 0010 KEYWORD ・優先順位 echo 1 + ( 2 ☆ 3 <?php 行われているといえます。この動きは、「 ( ) 」を使って以下のように表現できます。 します。これは「加算演算子」よりも「乗算演算子」のほうが先に計算 ( 評価 ) が 答えは、「 7 」になります。この場合、まず 2X3 を計算したあと、 1 を足す計算を echo 1 + 2 * 3 ー く ?php しようか ? 学や算数の計算でもありました。たとえば、次の計算結果は何と表示されるで 演算子にはそれぞれ優先順位と呼ばれる計算の順序があります。これは、数 演算子の優先順位
・ 80 第 3 章 PHP の基本と変数 学 3-3 ーデータ型 型とは ・「型」は値がどのような意味を持つ値であるのかを表す表現のこと ・型が異なるとメモリ上での扱われ方も異なる ・プログラミングでは型を意識する必要があるが、 PHP には型を意識させな いための仕組みもある ・ PHP が扱う型には「スカラー型」「複合型」「特別な型」の種別がある ・スカラー型には「論理値」「整数」「浮動小数点数」「文字列の種類」がある ・ 2 進数や 8 進数とは数字を「 0 」と「 1 」の 2 文字や「 0 」 ~ 「 7 」の 8 文字で 表現する表記法である PHP が扱う型 スカラー型 KEYWORD データ型・・・データ自体や変数に与えられるデータの種類 整数・・・小数を含まない数 2 進数・・・ 0 と 1 だけの文字で数字を表現する表記法 浮動小数点数・・・小数を含む数値。整数とはデータ型が異なる 前節の変数の解説の部分でも、文字列を示す尸 ( シングルクオート ) 」を用い ていましたが、 PHP を含む多くのプログラミング言語では、値 ( データ ) がどの ような意味を持つのかを示す型といわれるものをサポートしています。 PHP ではあまり厳密に型を意識しなくてもプログラムができるようにできて いるのですが、プログラミングを知るうえで型は外すことのできない重要な概 念ですので、きちんと理解しておく必要があります。 KEYWORD ・型
4-1 演算子 す。 10 ー 12 についても、同様に 2 進数上での。 r を求めています。 1010 (R) 1100 1110 2 進数での 1110 は 10 進数では「 14 」となり、実行結果でも 14 が表示されてい ます。 次の xor は同じ桁のビットを調べて 2 つが異なるときに結果が 1 となる演算で す。例の中では「 10 」と「 12 」の x 。 r を求めています。 1010 XO ) 1100 0110 2 進数での 0110 は 10 進数上「 6 」となりますので、実行結果でも 6 が表示され ています。 最後の ~ 10 は「 ~ ( チルダ ) 」を用いた n 。 t 演算子です。この演算子を使うとす べての位のビットが逆になります。 1010 NOT) 0101 2 進数で 0101 は、 10 進数の「 5 」なのですが、 PHP の内部では数字用に 32 桁 のビットが用意されています。このため、実際の 2 進数とそれを反転させたもの は、次のようになります。 00000000000000000000000000001010 NOT) 11111111111111111111111111110101 11111111111111111111111111110101 は整数値型では -11 を表現し たものなので、「 ~ 10 」は -11 と表示されました。 and 、 or 、 xor 、 not の関係は次の表にまとめています。