2016年9月19日月曜日

PHPはオワコンらしい

【悲報】PHPがオワコン化。求人オファー数も下降線 : IT速報
http://blog.livedoor.jp/itsoku/archives/40524242.html

人気プログラミング言語PHPはもはや過去の言語?今からやるってどうなの? | WorkaHolic
http://story-is-king.com/programminglanguage-php

PHP、かつてWebで人気だった言語が下火になりつつある | ReadWrite[日本版]
http://readwrite.jp/develop/12295/


PHPは、私にとって長年泣かされてきたプログラミング言語なのですが、ようやくオンワンだそうです。
PHPをディスりたい気持ちは長年鬱積していたんですが、仕事でPHPを採用する際に「ソースが汚い」以外にこれと言って拒絶する理由がありませんでした。

しかし、ようやく拒絶する時が来たかなと思います。

スマホの普及、近い将来普及するIoTでは、バックエンド・サービス(APIサーバー)の開発と運用は必須ですが、PHPで開発されたWebアプリケーションはパフォーマンスの面で適格とは言えません。
バックエンド・サービスの開発、保守においてもWebフレームワークの採用が必須ですが、PHPでWebフレームワークを使うとかなりパフォーマンスが悪いです。また、PHPにはデファクト・スタンダードのWebフレームワークが未だに無く、乱立状態です。
新規でWebアプリケーションを開発するにあたって、PHPという選択肢はよろしくないかと思います。




Phalcon

PHPのWebフレームワークの中で唯一例外としてPhalconはパフォーマンスにおいて申し分がありません。Webフレームワークもネイティブコードにしてしまう、というのはすごくアプローチだと思います。
いいことずくめそうですが、バージョンアップが矢継ぎ早で、今後1年ぐらい様子を見てみないと実務に使えるのか判断できない状況だと思います。
とにかく世に出るのが遅すぎた気がします。まだまだ成熟には程遠い感じがし、成熟した頃にはプログラマーの多くは他のプログラミング言語を使った開発に移行しているかもしれません。

PHP7, Hack (HHVM)

PHP7がリリースされ1年ぐらい経ちますが、メディアで大きく取り上げられることもなく、いまいち盛り上がりませんでした。本来、バージョン 5.7 だったのが、6 を飛ばして 7 になったぐらいのことだし。
パフォーマンスの面では改善したようですが、その点ではFacebookのHackのほうが良さそうです。
Webアプリケーションの開発者としては、これからPHP7で開発しようか、Hackで開発しようか迷うところです。
悩むくらいならPHPで開発するのをやめちゃえばいいんです。

「今のPHP」は難しい

私はPHP 5.2あたりでオブジェクト指向プログラミング言語としておおよそ体裁が整ったと感じていましたが、その後のバージョンアップで、「ネームスペース」「遅延静的拘束」「トレイト」「ジェネレーター」といった機能が追加されました。私も「ネームスペース」はよく使うんですが、「遅延静的拘束」「トレイト」「ジェネレーター」に関しては使いこなせていません。このへんは経験者には他のプログラミング言語と比較して説明は出来るのですが、初心者には上手く説明が出来ません。オブジェクト指向プログラミングではあると便利な機能ですが、ある程度プログラミング経験がないとなかなか使いこなせません。
また、PHPのWebフレームワークを利用すると「DIコンテナ」を利用する場面が多いですが、これも初心者にうまく説明できません。「PHPは静的なオブジェクト指向だから」としか説明できず、私もPHPのような動的言語でDIコンテナが多用されるのか分かりません。
あと、PHPの運用環境の多様化が悩ましいですね。モバイルアプリのバックエンド・サービスのニーズが高いので、パフォーマンスのボトムアップは必須です。従来からのApache+mod_phpだけでなくnginx+PHP-FPMも検討しなくてなりませんし、先に書いたHackも検討しなくてはなりません。WebフレームワークとしてPhalconも検討しますが、リリースサイクルが安定しない、情報が少ないやらで、実際の業務で採用するか悩ましいです。
「LAMP」がトレンドだった2000年代初頭に比べて、今のPHPは難しいと思います。

PHPから乗り換えるとしたら

手堅く、新規でWebアプリケーションを開発するなら

開発言語マイクロ・フレームワークフルスタック・フーレムワーク
RubySinatraRails
PythonFlaskDjango
JavaSpring, Grails
(Scala)Play

Webフレームワークとして、フルスタックなフレームワークも、マイクロフレームワークにもデファクト・スタンダードと言えるものがあり、それらを用途に応じて使い分けができるのがいいです。
RubyであればSinatraでAPIサーバーを開発して、Railsで管理ツールを開発するように。
Javaは、AWS等の安価なIaaSが普及したおかげで、ハイスペックなサーバーを調達しやすくなり、本来の性能を無理なく発揮できるようになったのだと思います。


挑戦的に、パフォーマンス重視のWebアプリケーションを開発するなら


Go言語

やはりネイティブコードは速い。パフォーマンス重視でゲームのバックエンドサーバーをC/C++で開発しているケースも意外と多いのですが、これからはGo言語。Ruby, Python, PHPのようなLLの開発者にとっても、C/C++、Javaに比べて習得が容易だと思います。
Webフレームワークはデファクト・スタンダードと言えるものはありませんが、マイクロフレームワークで有望なのがいくつか出ています。

node.js

基本的にJavaScriptで開発できますが、ある程度の規模のWebアプリケーションの開発となるとCofeeScriptで開発することになると思います。
ミドルウェア、モジュールの設計力も要ります。JavaScriptで開発するとは言え、かなり手慣れたプログラマーじゃないと難しいと思います。
JavaScriptなのでGo言語のような実行速度は期待出来ませんが、ノンブロッキングI/OでC10K問題を意識しなくて良い、WebSocketでの通信、MongoDB等のNoSQLデータベースとの親和性、サーバーのスケールアウトの容易さは魅力的です。

でもWordPressは使い続ける


PHPは簡単に動的なHTMLページを出力するために開発されました。CMSの開発言語としては最適で、WordPressをはじめとするPHPで開発されたCMSはこれからも手放せません。
WordPress、MediaWiki、Joomla、DrupalのオープンソースでメジャーなCMS、EC用にEC-Cubeは使い続けたいですね。
PHP7なりHackなりを使ってパフォーマンス強化も期待出来そうです。


でもCMSであれ何であれ、インハウスで開発されたのは、改修を含めたメンテナンス・コストが膨大になるので、中小のネット・開発企業にとっては、もう手に負えないかなと思います。

0 件のコメント:

コメントを投稿