この記事では、悪い噂や評判の理由も交え、PHPがやめとけと言われる理由を紹介します。
PHPに興味があるんだけど、評判悪くない?
なんだかオワコンとかよく見かけるんだけど……
PHPってそんなにヤバイ言語なの?
プログラミングに興味をもって、何を学ぼうか調べていると「初心者にはPHPがオススメ」という情報をよく見かけるかと思います。
そして「PHP」で検索してみると「PHPは廃れたと」とか「もう学ぶべきではない」とか、「オワコン」(終わったコンテンツの意)とか、かなりひど目のバッシングを見かけたかもしれません。
せっかく学ぼうとしているのに、その言語が廃れてかかっていて、学習してもその知識がすぐに役に立たなくなったら嫌ですよね。
でも、本当にPHPは終わりかけの言語なのでしょうか? この記事ではPHPのリアルな今を紹介しつつ、2019年現在学ぶに値するのかどうかをお伝えしていきます。
- PHPは習得しやすい反面、単体では強みになりにくいといわれている
- 過去の出来事からPHPのセキュリティ面を懸念する声もある
- PHPの弱点は改善されており、現在は多くのWeb開発に利用されている
PHPは悪い評判を受けやすい!?
まず、筆者の予想を明確にしておくと、筆者はPHPは向こう5年は廃れることなく需要のある言語であり続けるだろうと考えています。
プログラミング初学者がPHPを学ぶことにも賛成の立場です。PHPの求人もまだまだ多く、習得することによるメリットは充分あると考えています。この立ち位置からPHPを見ていきます。
PHPが批判される主なポイントは以下の通りかと思います。
- PHPはセキュリティが甘い
- PHPは遅い
- PHPエンジニアはレベルが低く、他の言語に潰しが効かない
これらの批判ポイントを一つひとつ考えてみましょう。
PHPはセキュリティが甘い?
PHP批判で頻出の事項としてセキュリティの甘さを指摘されることがあります。
セキュリティが弱いといわれた理由
これは過去においては残念ながら事実でした。10年以上前の話になりますが、IPA(情報処理推進機構)から「セキュアなWebアプリ設計のためにはPHPを使うべきではない」と指摘されたことがあります。
この文章が書かれたころのPHPは5.1から5.2でしたが、たしかに5.1以前にはかなりの脆弱性があり、リモートからPHPスクリプトを実行されかねないようなヤバめの物もありました。
また、PHPは記述のルーズさをかなり許容する言語でもあります。きっちりとした記述を要求してこない分、レベルの低いエンジニアがセキュリティ周りに穴を開けたりする場合もままあります。
こういった部分が合わさって「PHPのセキュリティは甘い」という評価が定着してしまったようです。
現在は解消されている
ですが、先にもいいましたように、PHPのセキュリティホールが乱発されていたのは5系の初期です。現在主流になりつつある7系では以前の反省から非常にセキュリティに厳格な対応が取られています。
バージョンアップにより言語レベルでのセキュリティの甘さはほぼ解決したといっていいでしょう(プログラミング言語である以上、完璧というのはありえませんが)。
低レベルなエンジニアによるセキュリティの問題は次の項で考えていきます。
PHPは遅い?
PHPというとインタプリタ型言語特有の遅さを問題に上げる方も結構いらっしゃいます。
PHPはインタプリタ型言語
「インタプリタ型とはなんぞや?」という方のために説明を入れますと、プログラミング言語は大きく
- コンパイラ型
- インタプリタ型
に分けることができます。
通常、人間が読み書きできる形で書かれたソースコードはそのままの形ではコンピュータは理解することができません。そのため、コンピュータが分かる形に翻訳してあげる必要があるのですが、この作業をコンパイルと呼びます。
で、コンパイルをするタイミングによって色々と違いが出てくるわけです。
プログラミング完了と同時にコンパイルする場合、そのプログラムを実際に動かすときには既にコンパイルが終わっていて、その分早くプログラムを動かすことができます。この方式を採用している言語をコンパイラ型言語といい、C/C++、Java、Goなどがこちらに分類されます。
一方、プログラムの実行直前までソースコードをコンパイルせずに、実行するタイミングでコンピュータに対して翻訳しつつ、同時に実行する、というやり方も考えられます。
この翻訳しつつ実行するプログラムをインタプリタと呼び、この方式を採用している言語をインタプリタ型言語といいます。PHPやPython、Rubyなどがこちらに該当します。
事前にコンパイルされているかどうかという点を見ても、インタプリタ型がコンパイラ型に比べて遅そう、というのは想像がつくのではないでしょうか。実際そのとおりで、コンパイラ型はインタプリタ型に比べて10倍近い速度差を出すこともあります。(実行するプログラムによって速度はかなり変化するため、一概に言えない部分であることはご承知おきください。)
ルーズに書いても動いてしまう言語
また、おなじインタプリタ型の中でも、PHPはとくに書き方がルーズで有ることが許容されていたため、プログラムを書く人によって大きく処理速度に差が生じる言語でもありました。
素人が書いたPHPのプログラムをプロが書き換えただけで、100倍近く高速化したなんて例もあったりします。こんな事情が重なり、PHPは遅い、重いという評判が定着してしまったようです。
現在では改善されている
しかし、2015年にリリースされたPHP7.0から状況は大きく変わりました。カンファレンスでの公式発表によるとPHPは5から7にバージョンアップしたことで、2倍以上早くなったようです。
実際、簡単なプログラムを実行して速度を比較している「The Computer Language Benchmarks Game」というサイトの調査結果によると、PHPはPython3、Ruby2.6を抑えて比較的優秀な速度を叩き出しています。
参照:The Computer Language Benchmarks Game
2019年現在、PHPはきちんとかけば十分速度の出せるインタプリタ型言語になっています。
なお、IT企業への転職や副業での収入獲得を見据え、独学でPHPを習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。
\ 給付金で受講料が最大80%OFF /
PHPエンジニアは他の言語で潰しが効かない
これもPHPをやっているとよく言われる話です。
玉石混合のエンジニアが大量投入されてきた歴史
PHPは初心者にも優しい言語で、プログラミングの入門によく使われてきた歴史があります。またWEBサービスの隆盛とともに、開発現場では多くのPHPエンジニアが必要になりました。
その結果、PHPを簡単に学習しただけでエンジニアとして採用され、壊滅的なコードを書いてくれる残念なPHPエンジニアが大量発生してしまっていた時期があります。
間口が広い分、エンジニアの質も上下に広い、ということですね。
このため、前任者が書いた残念なコードを修正する仕事に追い回される人が大量発生し、PHPへの恨みつらみが募っていき、このような評判につながっているのだと思われます。
とくに、以前のPHPは先に書いたように、下手な書き方をするとセキュリティに大穴を開けかねない言語だったので、エンジニアのレベルの低さが致命的な問題点になった現場も多々あったようです。
個性が強めの言語
また、PHPは文法的に割とルーズな部分があります。そして、Webに特化した言語という構造上、他の言語と比べると “変わった”習慣や実装があります。
このため、PHP一本でキャリアを積んできたエンジニアが別の言語に手を出したとき、PHPとの違いをなかなか受け入れられないことも起こるようです(まあ、言語間の差異で悩むのは多言語を扱う際のお約束みたいなものですが)。
この点に関しては、PHPはそういった言語なんだと受け入れるしかない部分ですね。次の章でなんでこんな変な部分が散見されるのかの背景は紹介しますが、変であるという事実は変わりません。
うまく折り合いを付けていくしか無いですね。
悪い評判も裏を返せば……
1章でよく言われるPHPのダメなポイントを見てきました。過去にやらかした事実があり、そのイメージを引きずってしまっている部分は多々ありました。しかし、裏を返すとこれらの点はPHPの個性でありPHPが大事にしてきた部分でもあるのです。
かつてPHPはプログラミング言語ではなかった
そもそも論として、起源をたどればPHPはプログラミング言語として生まれたものではありません。1994年にカナダ人プログラマのラスマス・ラードフ(Rasmus Lerdorf)によって、Webページで使うためのPersonal Home Page Tools、略してPHP Toolsとして作られたのが起源です。
このツール群に様々な機能を追加していき、単なるツール群としては成り立たないレベルまで肥大化した結果、1から書き直されるということを数回繰り返しました。その結果誕生したのがプログラミング言語としてのPHPです。
生まれからして結構グダグダな部分があるわけです。ラードフ氏も元々プログラミング言語を作るつもりは毛頭なかったらしく、以下のようなコメントを残しています。
”プログラミング言語を作るつもりはありませんでした。どうやって作るのかも知りませんし。論理的に必要だと思われるものを足していっただけなんです”
”いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました”
引用:wikiquote.org https://en.wikiquote.org/wiki/Rasmus_Lerdorf
ちなみにラードフ氏自身はプログラミングが大嫌いらしくこんなコメントも残しています。
”PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?誰が歯ブラシの本なんて読みたがります? ”
引用:wikiquote.org https://en.wikiquote.org/wiki/Rasmus_Lerdorf
現在のPHPの傾向がすべてラードフ氏によるものではないでしょうけど、PHP独特のゆるさや実用本位な点はここらへんに由来するのかな、と個人的には思っています。
ユルさは進歩性の証明?
また、記述がルーズな点、同じ内容を実現するために複数の方法がある点、つまり言語としての一貫性の無さはPHPが積極的に新しい技術・アイディアを取り込んできた証拠とも言えます。
道具としては色々機能が合ったほうが便利ですよね。だったら取り込めばいいじゃない、というのがPHPの信念として存在しているのは間違いありません。
その結果、構造や設計に歪みやら変な部分が大量発生することになるわけなのですが、進歩性の代償として受け入れるしか無い部分、というしかないでしょうね。
ちなみに、こういったルーズさ、適当さが大嫌いな人はPythonがオススメです。あちらは「禅 of Python」の信念のもとで、有る種独特な世界観を構築しています。
また、このユルさが初心者にとって敷居を低くしてくれている点も見逃せません。Javaのような厳格性を放棄したからこそ、PHPは初心者にもわかりやすい入門言語たり得ているはずです。
PHPはオワコンなのか?
最後に「PHPはもう終わった言語なのか?」という点を見ていきましょう。
IT業界はよくドッグイヤーと呼ばれます。他の業界なら7年ぐらいかけて変化することが1年で変化することを犬の年齢に例えた話ですが、これはプログラミング言語にも当てはまります。
PealとJavaScriptはどうなった?
例えば、Pealという言語がありました。ネットが本格的に普及し始めた2000年代に、サーバのCGIで動かすために重宝された言語として大いに利用されていたのですが、2019年現在ではとんと見かけなくなりました。
逆に2000年代では蛇蝎のごとく嫌われていた記憶のあるJavaScriptですが、最近node.jsやフレームワークの充実で一気に人気を高めています。
つまり、学んでいる言語が人気があるかどうかは、その後のキャリアに大きな影響を出しかねないものなのです。
そこで、多くの人がPHPがオワコンなのかどうかを気にしているわけですね。せっかく学んだ言語が数年後に現役で使われなくなってしまったら、あまりにも悲しいものがあります。
PHPがオワコンといわれてしまう最大の要因は、PythonやRubyなど競合するインタプリタ型言語が台頭してきたこと。これなのではないでしょうか。
競合するインタプリタ型言語
たしかにRubyはRuby on Railsというフレームワークがヒットしたことで爆発的な人気を得ました。Pythonは最近流行りの人工知能に使いやすい言語として、一気に人気を高めています。
この他にも安定して高速な商業システムを組みたいならJavaという選択肢もありますし、先程も登場したnode.jsを使うことですべてをJavaScriptで構築したシステムすら不可能ではない時代になりつつあります。
このようにPHPにはライバルがたくさん存在しており、なおかつ、PHP自身に明確な対抗手段が打ち出せていないため、PHPはこれらのライバルに埋もれてしまい、退場してしまうのではないかという危惧が生まれるわけです。
全世界のサーバで最も動いているWeb向け言語は
では、PHPは本当にライバルたちに埋もれてしまっているのでしょうか?
実はここに大きなトリックがあります。まずは以下のページをご覧ください
このページはインターネットに関わる様々な情報を調査分析する専門の調査機関が発表している、世界中のサーバで使われている言語の利用比率を紹介しています。
この調査によると、全世界のサーバで動いているウェブサイト向けの言語はPHPがトップで79%を占めている、という事実を知ることができます。
79%ってかなりの数字ですよね。これは、サーバソフトウェアの一応の業界標準であるApacheを使うと、ほぼ自動的にPHPも使えるようになることや、世界のWebサイトの1/3を占めているWordPressがPHPで作られていることなどが原因と考えられます。
こういったプラスの要因に象徴されるように、PHPはとにかく動かすのが簡単なんです。そのため、簡単にサービスを作りたい需要が存在する限り、これから5-10年くらいは安泰なのではないかと推測します。
また、決定版といえるようなフレームワークはまだ出てきていませんが、CakePHPやLaravelなど、優秀なフレームワークも存在するため、フレームワークの枯渇による人気低下は無いと考えていいでしょう。
PHPはオワコンじゃない!
まとめると、
- 全世界で79%の普及率を誇り
- 全Webサイトの1/3を占めるWordPressの構成言語であり
- 優秀なフレームワークが存在する
これだけのメリットがあって、いきなりオワコン化するほうが難しいと思うのですが、いかがでしょうか?
さらに言えば、日本にはいままでPHPで作られてきたシステムがたくさん存在します。有名なところだとレストラン検索サイトの「ぐるなび」はPHPの技術導入に積極的なことで知られています。
世界に目を向ければFacebookはもともとPHPで作られており、現在はPHPを独自に発展させたHackという言語で開発が行われています。デジタル百科事典でおなじみのWikipediaは今現在もPHPで作られたMediaWikiベースで動いています。
このような膨大なPHPの資産を保守・継続させていく必要性から考えてもPHPの需要がいきなり数年後に0になる、ということは考えづらいのではないでしょうか?
まとめ
いかがでしたか?
今回はPHPにまつわる、主に悪い評判について、その背景とともに現状を確認してきました。
PHP推進派からの意見になりますが、PHPはネット上のあちこちで言われているほど悪い言語ではなく、2019年現在も十分に学ぶ価値の有るプログラミング言語であることがお伝えできたなら、記事としての役割は果たせたはずです。
読者の皆さんには、一つの言語に固執すること無く、必要に応じて技術を切り替えられる柔軟なエンジニアを目指していただければと思います。
この記事の監修者
株式会社SAMURAI
独学でプログラミング学習を始めるも挫折。プログラミングスクール「SAMURAI ENGINEER」を受講し、Web制作を学ぶ。副業でWeb制作を行いつつ、「初心者がプログラミングで挫折しないためのコンテンツ制作」をモットーにWebライターとして侍エンジニアブログ編集部に従事。