もし今この瞬間、この世からPHPというプログラミング言語が突然消えてなくなってしまったら、どうなるでしょう?
おそらく世界は大混乱、何も回らなくなります。インターネットの利便性のほとんどが、失われてしまう恐れがあります。
それくらい、PHPはWeb開発の世界でメジャーな存在なのです。世界のWebサイトのうち約8割が、何らかの形でPHPを使っています。もちろんシェアナンバー1です。
RubyやPythonなど、より先進的な言語がWeb開発の分野に進出していますが、シェア8割には遠く及びません。強大な力を持つPHPは、サーバーサイドのWeb開発者を目指すなら、必須科目です。
この人気の秘密を探るのが、本稿の1つの目的です。そして、その人気の結果として大量に発生している、PHPにまつわるフリーランスエンジニア向けの案件についても紹介します。
PHPの特徴
PHPは、シンプルな記述でサーバーサイド開発ができる人気の高い言語です。
文法的にも簡単で学びやすいので、プログラミングスクールやプログラミング学習サイトでも、初心者向けの言語として推奨されることが多くなっています。
入門書もたくさん出ており、環境構築の労力さえいとわなければ独学でも十分に習得可能です。
文法の簡単さに対して、PHPの環境構築は難しいものになっています。その原因は、PHPがサーバーサイドの言語であることです。サーバーサイド技術を理解することが、PHPを理解し使いこなす上では欠かせません。
ここでは、そういったPHPの特徴についてひとつひとつ見ていきます。
サーバーサイド
PHPは、サーバーサイドで動くソフトウェアを開発するための言語です。
Web開発には、「クライアントサイド」と「サーバーサイド」という2つの技術があります。これらは、そのプログラムがどこで実行されるか、で分けることができます。
クライアントサイドは、一般のユーザーが使うパソコンやスマホのブラウザ上などで実行されるものです。それに対してサーバーサイドは、サーバーと呼ばれるコンピューター上で動きます。クライアントである一般のパソコンやスマホから、サーバーコンピューターへ情報の提供を要求するという、「クライアント-サーバーモデル」に基づいてます。
これらは単に実行される場所が違うだけでありません。クライアントサイドではユーザーインターフェイスなどを決める、サーバーサイドではデータの保存などをするといった役割の違いがあります。
PHPはサーバーサイドの技術に属しますので、データベースを使うための仕組みが整っているなどの特徴があります。PHPを使いこなすためには、Webサーバーの基本的な仕組みを理解する必要があります。データベースに関する知識も持っていたほうがよいでしょう。
スクリプト言語
PHPは、スクリプト言語と呼ばれるタイプの言語です。スクリプト言語とは、ひとことで言えば「記述の簡単な言語」ということです。
PHPは、とてもシンプルな言語です。シンプルな記述を実現するために、標準ライブラリを充実させるなど様々な努力が成されています。そのためPHPを使う開発者は、面倒なお膳立てにあまり煩わされることなく、目の前の問題を解決することに集中できます。
スクリプト原語の宿命として、「処理が遅い」というものがあるのですが、それについても解消する努力が重ねられてきました。そして2020年にリリースされたPHP8.0では、ついに念願のJITコンパイルが搭載されました。JITというのは、ソースコードを呼び出されるたびに機械語に翻訳するのではなく、一括翻訳しておいてメモリ上に置いておき、使い回すという仕組みです。要するに、PHP8.0では処理がとてつもなく速くなったということです。
HTMLに埋め込む
PHPは、HTML埋め込み型言語です。
<html>と</html>で挟まれたHTMLコードの中に、直接記述するのがPHPコードの特徴です。その際、PHPのコードであることを示すため<?php ~ ?>というタグで囲みます。「~」の部分に、PHPのコードを記述するのです。
これによって、HTMLで記述されたページの一部をPHPコードの出力で埋めることができます。例えば、データベースから読み込んだ情報をページに表示するというような処理が簡単に書けます。
PHPのコードが書かれたファイルは、拡張子「.php」でサーバー側に保存します。クライアント側からこのファイルへの要求が来たら、サーバー側の「Webサーバー」と呼ばれるソフトウエアは、PHPの実行ソフトウエアに処理を渡します。そうして、PHPのコードが実行されるのです。
つまり、PHPはWebとの親和性がとても高い言語です。
文法が簡単
PHPの文法は簡単です。他の言語に比べて難解な部分というのは特にありません。ですから、プログラミング未経験の人が最初の入り口とすることもできる言語です。
記述のしかたは、よい意味でも悪い意味でも、自由度が高くなっています。例えば、変数名に日本語など、普通のアルファベット以外の文字が使えます。けれども、変数名に日本語などを使うのは、トラブルの元になりやすいので避けるほうがよいでしょう。
PHPには、「命令の大文字小文字は区別しない」けれども「変数名の大文字小文字は区別する」という謎の仕様があります。ここは、ちょっとややこしいところです。ただ、「区別しない」場合でも、変に大文字小文字を混ぜて書くというような混乱を来す書き方は避けるべきです。
結局、書くときに規律を持って書かないと、読みにくいコードになってしまうという、どのプログラミング言語でも発生しうる問題が、PHPでも起こりうるということです。プロジェクトごとのコーディング規約をしっかり把握して従うことが重要になってきます。
環境構築は大変
シンプルな言語であるPHPですが、環境構築は大変です。それは、PHPがサーバーサイドの言語だからです。
PHPを動かすためには、「Webサーバー」「PHP本体」の2つソフトウエアが最低限必要です。実際のWeb開発ではデータベースを使うことが多いので、そのときには「データベースサーバー」も必要になってきます。
こういった環境は、レンタルサーバーなどを利用すれば簡単に手に入ります。しかし、学習やテストなどの目的のため自分のパソコン上にも環境を構築したい場合は、上記のソフトウエアを自分でインストールする必要があります。
それらを個別にインストールするのが面倒という場合には、XAMPPという必要なものがいっぺんにインストールできるパッケージがあります。XAMPPには、Apache(Webサーバー)、PHP、MariaDB(データベース)などが含まれています。
参考文献『独習PHP 第4版』(山田祥寛・著、翔泳社)
PHPのフリーランス案件例
PHPは、Web開発用の言語として長い歴史を持ち、サーバーサイドで圧倒的なシェアを持つ言語ですから、仕事には事欠きません。フリーランス向けの案件も豊富にあります。
当然、そのほとんどはサーバーサイドのWeb開発案件になります。はじめから構築するものはもちろん、すでにあるサイトの保守・改修案件も大量に発生しています。
また、PHPエンジニアとして無視できない、WordPressという強大な勢力も存在します。
Webサイト構築
新規にWebサイトやWebアプリを立ち上げたいので、サーバーサイドのPHPコーディングをして欲しいというのが典型的なPHP案件です。
仕様やデザインは決まっているのでコーディングだけやって欲しいというものや、デザインから関わって欲しいというものなど、幅広いものがあります。大きなチームの一員となって働く場合が多くなっています。
何らかのフレームワークを使うことを指定された案件もたくさんあります。フレームワークとは、Webサイトの枠組みを自動で作ってくれて、作業効率をよくしてくれるソフトウエアのことです。PHPのフレームワークには非常にたくさんあります。中でも案件としてよく見かけるのはLaravelです。
Webサイト構築案件の多くは現場に行って開発する常駐案件ですが、リモートワーク可の案件もあります。
一般公開されるWebサイトのほかに、社内システムの構築にもPHPはよく使われるので、そのような案件もたくさんあります。
Webサイトの保守・改修
既存のWebサイトの保守や改修業務も、非常に数の多いものになっています。
Web開発で長年の実績がある言語なので、PHPで作られたサイトがすでに無数にあります。自然な成り行きとして、それらをメンテナンスする需要もまたたくさんあります。そのため、それらがフリーランスのところに回ってくることは普通にあります。
例えば、PHPのバージョンアップに伴う改修案件というのがあります。本稿執筆時点でPHPの最新バージョンは8.1ですが、それより古いバージョンのPHPで動作しているサイトもあります。それを最新バージョンで動作するよう改修して欲しいという要望が出てくるわけです。特に、サポートが終了しているPHP7.3までの環境からは、早めにアップデートしたいということになってきます。このように、PHPのバージョンアップが続く限り、メンテナンス案件も途切れることはないでしょう。
また、PHPのバージョンなどには無頓着なサイトオーナーも多いようで、そういうところからの需要の掘り起こしはまだまだ可能でしょう。フリーランスとしての営業力を発揮するチャンスかもしれません。
その他、サイトのリニューアルに伴う大幅な改修などもよく行われています。Webサイトやソフトウエアというものは、建物や機械などと同じように、時間と共に古くなりガタが出てくるものですから、保守・改修が必要になるのです。
こういった案件では、他のエンジニアが書いたコードを読んで理解する必要があります。案件の募集要項にも「他人の書いたコードを読むのに抵抗がない方」といった条件が書いてある例も見られます。PHPで書かれた他人のコードというものは、記述の自由度の高さがあだとなって、ときに非常に読みづらいことがあります。年季のいる、難しい仕事です。
WordPress
PHP関連のフリーランス案件には、WordPressに関するものもあります。
WordPressというのは、世界でシェア第1位を誇るCMS(コンテンツマネジメントシステム)です。HTMLを知らなくても比較的簡単にWebサイトを構築でき、コンテンツの更新も容易であるという特徴を持つ ソフトウェアです。
世界のWebサイトのうち、約4割がWordPressを使って構築されているとも言われています。
そのWordPressは、PHPで書かれています。PHPがサーバーサイドにおける圧倒的なシェアを誇っているのは、実はWordPressのおかげでもあるのです。
しかし、WordPressでテンプレートを使ってWebサイトを作ったり、日々コンテンツを追加・更新するだけなら、PHPの知識は必要ありません。エンジニアでなくともそういうことが簡単にできるというのが、WordPressの売りなのです。ただ、独自のカスタマイズをしたいときには、PHPの知識が必要になってきます。
また、WordPressで作ったサイトに何らかのトラブルが起きたときにも、WordPressに通じたPHPエンジニアが必要になってきます。
ですから、フリーランス向けの案件として、「WordPressのプラグインをカスタマイズして欲しい」とか「WordPressで作ったサイトのトラブルを至急解決して欲しい」といった案件が上がって来ます。
フリーランスのPHPエンジニアが、他に持っておきたいスキル
PHPはWebサイト構築に非常に広く使われており、また、PHPは学ぶのも容易です。従って、PHPを使えるエンジニアも数多くいます。よって、フリーランスエンジニアとしてやっていくためには、PHPを知っているだけでは弱いかもしれません。
PHPの案件を眺めていくと、必要なスキルがPHPだけということはあまりなく、他のスキルを同時に要求されることが多くなっています。サーバーサイドのエンジニアとしては、PHPを使えることは当然として、それにプラスするスキルが重要になってきます。
具体的には、以下のようなスキルを身につけるとよいでしょう。
HTML&CSSやJavaScript
Webの世界で生きるからには、HTMLやCSSについては最低限、知っている必要があります。PHPはHTMLに埋め込む形でコーディングしますから、自ずと親しんでいくことにはなるでしょう。
また、JavaScriptについてもどこかのタイミングで覚えてしまうのがいいでしょう。PHPを身につけたあとならば、大して手間のかかることではありません。
これらはどちらかと言えばクライアントサイドの技術ではありますが、クライアントサイドに詳しいことはサーバーサイドエンジニアとして強みになります。クライアントサイドからサーバーサイドまでこなす「フルスタックエンジニア」を募集する案件というのも時折見受けられます。
WordPress
WordPressによるWebサイト構築という案件は、数多くあります。WordPressは簡単にWebサイトを構築できるとはいうものの、思い通りのデザインにするためにはテーマ関数などのWordPress特有の技術に習熟していなければなりません。
WordPressのプロという人達がいて、彼らはテーマ、テンプレート、プラグインなどについての知識が豊富です。しかし、必ずしもプログラマーというわけではなく、PHPについて深くは知らない場合もあります。
そこで、PHPエンジニアがWordPressを学ぶことにより、彼らとの差別化を図ることができます。より深いところで難しい処理なども書けるWordPressの使い手という立ち位置を目指せるのです。
なにしろ、世界のWebサイトの4割がWordPressで作られているのですから、無視するのはあまりにもったいないことです。
サーバーの知識
PHPはサーバーサイドで動く言語ですから、当然、サーバーについては知っていなければなりません。
サーバーといっても、実態はWebサーバーなどがインストールされたただのコンピューターですから、普段使っているパソコンとそれほど大きく違うわけではありません。ただ、OSはLinuxのことが多いので、触れたことがない人は触れておく必要があるでしょう。
中古パソコンや安い自作パソコンなどにLinuxをインストールし、サーバーを立ててみる、という演習をするととても勉強になります。また、仮想マシンを使えばWindows上にLinux環境を構築できますので、割と手軽に試してみることができます。
そして、代表的なWebサーバーであるApache、NGINX、IISなどについても知識を深めておきたいところです。
Webの知識
HTTPなど、Webの基礎技術も、サーバーサイドエンジニアとしてはぜひとも知っておきたいところです。
そもそもなぜ、インターネットは遠くのコンピューターどうしを繋ぐことができるのかというような根源的なところから始まって、「Webサービス」「Web API」など、膨大にあるWeb関連の用語をひとつひとつ攻略していきましょう。
例えば通信プロトコルの詳しい仕様など、知らなくても普段のプログラミングに支障はないかもしれません。しかし、そういう知識はいつか必ず役に立つ、自分の身を助けてくれるときが来ます。
Webの世界は非常に進歩がはやく、次から次へと新技術が生み出されていますが、「きりがない」などと言わず、どんどん吸収していきましょう。それが、エンジニアという仕事なのです。
データベース/SQL
データベースもまた、サーバーサイドの開発には欠かせないものです。
データベースにはデータベースの専門家がいるので、設計などについてはそちらに任せることになるでしょう。しかし、使い方くらいは知っている必要があります。とくに、データベースに値を追加したり問い合わせをしたりする言語であるSQLは使いこなせなければなりません。
データベースにはいろいろな種類があり、それぞれに固有の操作方法・接続方法があります。PHPには、データベースの種類が違っても同じような感じで扱える、「データベース抽象化レイヤー」というものが用意されています。そのため、データベースごとの細かな違いについてはそれほど気にする必要はありません。
それよりもまず、テーブルの構造やリレーションシップ、トランザクションなど、データベースの基礎理論を学んでおくとよいでしょう。自分がいったい何をやっているのか、どういうSQL文を書けばいいのかということが見通しやすくなります。
まとめ
現在、PHPは世界で最も利用されているプログラミング言語のひとつです。サーバーサイドエンジニアを目指すなら、知らないではすまされません。ただ、PHPを知っているだけでは弱いので、それと平行して、データベースやサーバーなど、関連技術も吸収し、フリーランスのサーバーサイドエンジニアとして幅広い案件に対応できるようになりましょう。