PHPとは?
既成のブログやショップでは物足りなくなってきて、自分のサーバーで自由にブログやショップを開きたい。というときに、まず勉強しておきたい言語の一つにPHPがあります。PHPを少しでも勉強しておけば、そういったブログやショップの見た目を変えたいと思ったときも、自由に変えることができるようになります。
ここでは、そんなPHPをエンジニアの方でなくても理解できるように、簡単に、それでいて詳細に説明していきます。
まず、PHPとは正式名称はPHP:Hypertext Processorです。
このPHPの部分もPersonal Home Pageの省略となります。まずPersonal Home Pageというのは、そのまま個人のホームページという意味で捉えていただいて構いません。
次のHypertextというのは、ブラウザにサイトのアドレスを入れるときに使われる「http://」というのをよく見かけると思いますが、その「ht」の部分となります。「http://」というのは、Hypertextをブラウザに送る仕組みを使います」ということですので、Hypertextというのはブラウザに送って表示させるためのデータのことを指しています。
それをProcessor、すなわち処理するものというのが、PHPの名前の意味になります。まとめますと、「個人のホームページのためにブラウザに表示するデータを処理するもの」というものがPHPということになります。
押さえておきたい!PHPの5つの特徴
PHPの主な特徴としては大きく分けて5つあります。長所としてはサーバーサイドに特化した言語、習得が容易、高い生産性、と言ったものがあります。その反面、脆弱性、性能が低いと言った問題点もあります。
サーバーサイドに特化した言語
PHPはサーバー上で動作することに特化した言語になっています。そのため、サーバー上でデータを取得したり、データを処理したり、そのデータをブラウザに送って表示したり、といったことは容易に実現できます。また、HTMLに埋め込むような書き方をすることもできるため、ほとんどHTMLで書いて一部をPHPでということも可能になっています。
その反面、クライアント側での動作、ウインドウを表示したり、画面に直接描画したり、キーボードやマウスなどの入力を受け付けたりといったことを行うことはできません。
習得が容易
PHPは比較的習得が容易な言語になっています。その理由としては3つあります。
まず、PHPはスクリプト言語ですので、書いたプログラムをそのまま実行することができます。そのため、プログラムを少しずつ書きながら、動作を確認することができます。例えば、動作がおかしいと思った場合、簡単にデバッグ情報を出力することができます。そのため、トライ&エラーを繰り返して習得することができます。
また、変数に型の指定が無いため、変数に何を入れるかだけ意識すればよく、それがどのような形式であるかを意識する必要がありません。そのため最初から、どのように作るかを考えず、作りながら考えていくことが可能になっています。
そして、プログラムの状態を簡単に取得することができることが挙げられます。具体的には、調べたい所での変数や環境変数、クッキー、セッションの内容を表示させることができます。そのため、プログラムを書きながら、その処理の前後でどのように変わるかを確認しながら作ることができます。
これらの理由から、実際のプログラムを書きながら習得することができるようになっています。
高い生産性
PHPは高い生産性を実現することができ、その理由も3つあります。
まずは、標準やPEARなどのライブラリが充実している点が挙げられます。そのため、細かい処理に関しては意識することなく、一つ、あるいは、いくつかの関数を組み合わせるだけで処理を実現することができます。
また、デザイン要素とシステム要素が分離しやすい構造をしており、デザイナーとプログラマが分担して作業することが行いやすくなっています。もちろん他の言語でも、そう言ったことは可能になっていますが、PHPはプログラムの必要のない説明ページなどを追加する際にもプログラマへの負担をほとんどかけることなく、追加することができます。
そして、利用者が多いことから、ドキュメントやサンプルプログラムなどがインターネット上にたくさんあります。そのため、実現したいことを検索するだけで、簡単に見つけることができるため、どういう風に作れば悩むことがありません。
脆弱性
PHPは習得が容易で生産性が高い反面、これらの特徴が脆弱性に繋がる可能性があります。例えば、プログラムの状態を簡単に出力することができ、それを簡単に表示できるため、完成したプログラムにデバッグ出力の処理が残ってしまう可能性があります。
また、型指定が無いということから、同じ変数を処理の中で使いまわすことが容易になっているため、別の処理で変数が上書きされてしまい、意図しない処理が実行されてしまう可能性があります。
そして、ライブラリが充実している反面、好ましくない使い方をしてしまい、それが結果として脆弱性に繋がる可能性があります。
この対策としては、一つのプログラムはできる限りシンプルになるように組み立てていくことです。目安としての基準は色々とありますが、まずは、後で自分が見返した時に、どのような処理になっているかが、すぐにわかるようなものとなっているのが望ましいです。
性能が低い
PHPはスクリプト言語ですので、毎回、コンピュータが理解できる形式に内部的に変換しています。そのため、処理がどうしても遅くなります。ほとんどの場合は問題になることはありませんが、複雑な処理を大量に行う場合には、どうしても限界が出てきます。
また、PHP7で改善はされましたが、メモリを大量に使うような仕組みになっているため、多くの処理を並行して動かすといったことが難しくなっています。
先の脆弱性にも通じるところはありますが、こちらの対策も、なるべくシンプルに書くようにします。特に、標準で関数が用意されている機能は、ほとんどの場合において自分で処理を書くよりも高速に動作しますので、できる限り、そういった標準機能を利用するようにしてください。
これらの特徴を持ったPHPという言語ですが、他の言語と比べてどうかと言いますと、例えばJavaなどは実行するのにコンパイルという処理を毎回行う必要があります。また、変数の型を事前に決めておく必要があるため、どうしても作りながら習得していくということが難しくなってしまいます。
その反面、PHPよりもコンパイル時に処理が最適化されるため、処理速度やメモリ消費などの点はPHPよりも優れています。
他の例で言えば、Rubyなどは同じスクリプト言語ですが、PHPよりも細かい決まりが多く、HTMLに直接書き込むということができないため、習得の難易度は若干難しくなっています。
また、性能としては同じスクリプト言語という特徴から、そこまで大きくは変わりません。しかし、決まりが多いため、プログラム全体を見やすく、脆弱性などの問題も起こりにくくなっています。
また、PHPはC++やC#、Java、JavaScript、Perlなどの言語に近い構造になっているため、PHPから他の言語へ移植したり、ステップアップしたりすることが比較的容易になっていますが、Rubyは近い言語がほとんど無いため、他の言語への移行という面では若干難しくなっています。
実は初心者向けの言語
PHPはブラウザで表示するためであれば書きながら習得可能で、それでありながら、少しずつプログラムを埋め込みながら作っていけるだけでなく、PHPからステップアップすることまで考えた場合、初心者がまず取得する言語としては、主観的でありますが、非常にお奨めすることができます。
あなたはPHPが初心者にお奨めであるということについてどのように思われますか?
>>リモートワーク案件も充実!PHPのフリーランス求人案件をクラウドワークス テックで探す
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)