東京のすみっこより愛をこめて。fummyです😊💡
Webデザイナーとしてステップアップしたい!と思い、PHPの入門書を勉強しました。
もともとWeb開発のプログラム言語としては、JavaScripのみ知っている状態でPHPを学習し始めたので、そもそもPHPとは何なのかという疑問がたくさんわいてきました。
そのひとつが以下です。
これに対する回答は、
PHPはサーバーサイドスクリプトだから、サーバ上で動く。
ブラウザだけあっても、PHPは動かないんですよ。
となるのですが、最初は「???」状態。まったく意味がわかりませんでした。
というわけで、わたし自身がガッチガチの文系出身Webデザイナーなので、
「文系女子でもわかる」シリーズで解説をしていきます!(笑)
- PHPとJavaScriptのちがい
- PHPはサーバのどこで何をしているのか
を説明していきたいと思います!
SPONSORED LINK
PHPとJavaScriptは同じ「スクリプト言語」
PHPとJavaScriptの違いをみる前に、まずこの二つの言語の共通点を確認しておきましょう。
PHPとJavaScriptはプログラム言語ですが、プログラム言語には「コンパイラ言語」と「スクリプト言語」の二つがあります。
PHPとJavaScriptは、両方とも「スクリプト言語」です。
「コンパイラ言語」と「スクリプト言語」の違いは、プログラムの実行方法です。
どのように違うのか、詳しくみてみることにしましょう。
コンパイラ言語は「実行ファイル」を実行する(C言語, Javaなど)
ソースコードを書き終えて、完成したプログラムを実行するとき、実はそのままでは実行することはできません。プログラムを実行するコンピュータは「機械語」しか理解できないからです。
そのため、プログラムを実行するときには、ソースコードを機械語に翻訳(変換)する必要があります。
コンパイラ言語の場合は、完成したソースコードを機械語に変換して、「実行ファイル」を作成します。(図では『.EXE』のアイコンで表しています)
コンピュータには「実行ファイル」を組み込み、ソースコードではなく実行ファイルを実行することでプログラムを動かします。
「コンパイル」という言葉をきいたことがあるのではないでしょうか。
コンパイルとは、ソースコードを機械語に変換して「実行ファイル」を作成することなんですね。
代表的なコンパイラ言語は、C言語やJavaです。
基本的に大きなシステムの場合に、コンパイラ言語を使うことが多いです。
大きなシステムだと、コンパイルだけで数時間かかったりするので、プログラムを修正する場合は「ソースコード修正+コンパイル数時間」がかかり、ちょっとの修正でも大変な手間です。
ただし、予め機械語に変換した「実行ファイル」を作成するため、実行するときは、処理スピードが早くてスムーズという特徴があります。
- 代表的な言語はC言語、Javaなど。
- プログラムを実行するには、予めソースコードを機械語に変換して「実行ファイル」を作成しておく。
- プログラムを動かすときには、すでに機械語に変換された「実行ファイル」を実行するので、処理が早くてスムーズ。
- ソースコードの修正が手間。少しの修正でも、コンパイルに数時間かかることも。
スクリプト言語は、機械語に変換しながら実行する(JavaScript, PHPなど)
コンパイラ言語が実行ファイルをコンピュータの中に置いたのに対し、スクリプト言語はソースコード(プログラム)を直接コンピュータの中に置いて実行できます。
あれ? コンピュータは機械語に変換しないと理解できないんじゃないの?
と疑問がわくと思います。そうなんです。
実は、スクリプト言語の場合は、プログラムを実行するたびに、コンピュータが逐一1行ずつソースコードを機械語に変換しているんです。
機械語に変換しながら実行しているといってもよいでしょう。
コンパイル言語が、
実行ファイル(機械語)→実行
だったのに対して、
スクリプト言語は、
ソースコード→機械語に変換→実行
ソースコード→機械語に変換→実行
ソースコード→機械語に変換→実行
・・・
と、実行のたびに毎回、毎行、機械語への翻訳をやっています。
このスクリプト言語の代表選手が、われらがPHPとJavaScriptです。
PHPやJavaScriptのソースを修正したら、すぐにブラウザで実行して、修正内容が反映されているか、実行結果を確認できますよね。コンパイルして実行ファイルをつくって・・・という作業をした覚えはないはずです(笑)。
そんなわけで修正も実行も簡単なので、スクリプト言語はお手軽な言語です。
ですが、大きくて複雑なシステムでスクリプト言語をつかってしまうと、プログラムを機械語に変換しながら実行するので、多大な負荷がかかり、動作が重くなります。(もしくは動かなくなる可能性も・・・)
そのため、スクリプト言語は小さめのシステム、特にWeb開発によく使われています。
- 代表的な言語はPHP、JavaScriptなど。
- コンピュータにソースコードを置いて直接実行できる。コンピュータが機械語に変換しながら実行する。
- コンパイルが不要なので、ソースコードの修正は手軽。すぐに実行できるので確認も手軽。
- 機械語に変換しながら実行するため、複雑なシステムだと機械語化の処理に多大な負荷がかかり、動作が遅くなる恐れがある。大きなシステムには不向き。
まとめ
コンパイラ言語とスクリプト言語の違いをご理解いただけましたでしょうか。
PHPとJavaScriptは「スクリプト言語」で、ソースコードを直接コンピュータに置いて、機械語に変換しながら実行するというイメージがわいていると良いな、と思います。
また、Web開発をはじめたばかりの頃は、よくJavaScriptのことを「Javaが〜」と言ってしまってツッコミを受けたりしがちだと思うのですが(笑)、「JavaとJavaScriptは違う」というのも今回ご理解いただけたのではないでしょうか。
SPONSORED LINK
PHPとJavaScriptの違い
PHPもJavaScriptも、同じ「スクリプト言語」で、Web開発によく使われる!ということをみていただきました。では、PHPとJavaScriptは言語はいったい何が違うのでしょうか。
結論から言うと、実行される場所が異なります。
JavaScriptはクライアントサイドスクリプト
スクリプト言語には、「クライアントサイドスクリプト」と「サーバーサイドスクリプト」があります。
「クライアントサイド」は、ユーザー側ということです。
さらに簡単にいうと、「クライアント」とは「ユーザーのパソコン」のことです。
ホームページをみたいとき、わたしたちはパソコンのブラウザにURLを入力したり、検索したりして表示しますよね。これは、「クライアントサイド(わたしたちユーザーのパソコン)」で操作をしているということになります。
JavaScriptは、わたしたちのパソコンで動く、「クライアントサイドスクリプト」なのです。
WebサイトのURLをクリックしたときの基本的な動きを、上図の青い矢印で表しています。
(赤い矢印はPHPの動きなので、いまはひとまず置いておきます。)
上図のように、WebサイトのURLをクリックすると、世界のどこかにあるサーバーというパソコンにアクセスをすることになります。
サーバーにアクセスしたときに、そのWebサイトの「HTML・CSS・JavaScripなどのソースコード」、「画像」、「音楽ファイル」、「動画ファイル」などをダウンロードします。
ダウンロードしたこれらのファイルを実行するのがブラウザです。
ブラウザは、HTMLやCSSを解析してそのとおりに画面を表示し、JavaScriptを実行してWebサイトの動きを表現します。
このように、JavaScriptを実行しているのはブラウザであり、それはわたしたちのパソコンで行われているので、JavaScriptは「クライアントサイドスクリプト」なのです。
PHPはサーバーサイドスクリプト
これに対して、PHPはサーバーで動作する、「サーバーサイドスクリプト」です。
すでに話題にでましたが、わたしたちユーザーがあるWebサイトのURLをクリックすると、サーバーという別のパソコンにアクセスをすることになります。そこに、該当するWebサイトのデータ(ソースコードや画像など)が保存されています。
PHPは、このWebサイトのデータが保存されている「サーバー側」で動作するのです。
先ほどの図に戻りまして、今度は赤い矢印を見ていただきたいと思います。これがPHPの動きです。
サーバは3層構成で考えるとわかりやすいです。簡単にいうと、サーバーは以下のような構成になっています。
- Webサーバー
ユーザー(クライアント)との窓口になる。 - アプリケーションサーバー
サーバでプログラムを実行したりデータベースにアクセスしたりする。PHPはここで動いている。 - データベースサーバー
データベースがある。
ただ、これだけだとピンとこないと思いますので、PHPが動作する事例を、ひとつあげてみます。
例えば、あるレストランが自分のホームページを持っていて、そこからユーザーが予約をできるとします。そしてオーナーは、自分のお店の現時点での(リアルタイムでの)予約件数を知りたいとします。
予約の情報はデータベースに保存されていますので、オーナーが予約管理システムで「現時点での予約件数」を表示しようとすると、PHPはデータベースにアクセスしてデータを取得し、それを元にHTMLを生成します。
PHPは生成したHTMLをWebサーバーに渡し、Webサーバーがオーナーのパソコンに送信して、オーナーの予約管理システムの画面に「現時点での予約件数」を表示します。
データベースにリアルタイムにアクセスして、そのつど動的にHTMLを生成できるのがPHPであり、PHPはサーバーで動作しているということがご理解いただけましたでしょうか。
サイト構築日記(WordPress編)「WordPressとApache、PHP、MySQLの関係」
http://memories.zal.jp/WP/wordpress/archives/42
SPONSORED LINK
まとめ
PHPとJavaScriptの違い、なんとなくイメージできるようになりましたか?
これで冒頭の、
どうしてPHPにはサーバが必要なの?
という疑問が解決できたのではないかと思います。
JavaScriptはユーザーのパソコン(クライアントサイド)のブラウザで動作し、PHPは世界のどこかにあるサーバーというパソコン(サーバーサイド)で動作するからなんですね。
それでは、今日も素敵な一日を!
fummy
どうしてPHPにはサーバが必要なの?