Recent Posts
早い話が、「PHPを使う理由」です。 PHP は奇妙で醜い言語です。 例外的に速いわけではありません。 構文的に美しいわけでもない。 良いソフトウェア開発プラクティスについての明確な意見に基づいて定式化されているわけでもありません。 しかし、私が多くのソフトウェアを書いているのは、いまだにこの言語なのです。 明らかな疑問は、なぜなのか、ということです。
個人的な特異な好みを超えて、たくさんの良い理由があります。 ここでは、まさにそれをカバーするためのスペースがあります。 なぜ PHP が私の Web 開発用言語として選ばれているのか?
PHPとは?
“PHP とは何か?” あるいは、もっと一般的には、”PHPって何?”ですね。 簡単に言うと、PHPはC言語から構築されたWeb用に作られたプログラミング言語で、HTMLのような特異なタグ(シグル)を使ってコードを記述していきます。 PHP プログラミング言語は主にサーバーサイドで使用されます。つまり、Web サーバーソフトウェア上で動作し、サーバーは通常、訪問者に HTML を提供することになります。 そのため、この言語を一般に使用する意味と望ましさがかなり制限されたので、現在では “PHP” と表記しています。 ハイパーテキスト・プリプロセッサー “です。 これは、再帰的頭字語(名前を含む名前)と呼ばれるものです。
PHPは何ができるのですか?
PHPは何に使われるのですか? 基本的に、Web サーバー上でやりたいことは、すべて PHP でできます。 ブログを作る? そうです。 本格的なSaaS(Software-as-a-Serivce)アプリケーションを作成する? もちろんです。 あるデータを数秒で処理する小さなスクリプトを書く? PHPはそれに最適です。 複雑なスクリプトのセットを書いて、偶然にもソフトウェアビジネスとして成功する?
もし私が信用できないのであれば、PHPのウェブサイトは以下の用途を挙げています。
- サーバーサイドスクリプト
- コマンドラインスクリプト
- デスクトップアプリケーション作成
最後の箇所はあまりお勧めできませんが、可能性はあると思います。 しかし、最初の 2 つは一般的で、2019 年に PHP を使用する良い理由です。
これは、1 つの重要で避けられない事実につながります…
PHP is EVERYWHERE
知っていて愛する理由はたくさんありますが、おそらく最も強力で有効なのはこれでしょう:Web のあらゆる場所で使われ動いていることです。 月々3ドルの安いホスティングアカウントでも、注意深く探せばPythonやRubyでウェブアプリケーションを走らせることができるかもしれません。 しかし、PHPは間違いなく動作します。
そして、どこでも動作し、簡単に始められるので、多くの非常に人気のあるソフトウェアが PHP で書かれています。 WordPress は私にとって最大かつ最も身近な例ですが、Joomla、Drupal、Magento、ExpressionEngine、vBulletin (そう、これはまだ存在しています)、MediaWiki などのツールはすべてサーバー上で PHP を動かしています。 Symfony、Zend、Laravel、Aura、CakePHP、Yii、そして、由緒ある CodeIgnitor もです。 もちろん、他の言語でもある程度の長さのWebフレームワークのリストを作ることができます。 Python、Ruby、Node/JavaScriptのようなよく使われるWeb言語では、数字的に競争力のあるリストを集めることさえできるかもしれません。
WordPress は、インターネットの 30% 以上を動かしていることを誇らしく思っています。
PHP には非常に優れた特質があります
Easy Dynamism is Baked into PHP
PHP は他のどの言語よりも簡単に HTML レンダーとプログラムすることが可能です。 ですから、HTMLをPHPに変更するのはとても簡単です。 file.html
を file.php
に変更し、いくつかの <?php
および ?>
タグの中にちょっとしたダイナミズムを追加するだけです。 ほとんどのウェブサーバーは、あなたのために残りの部分を処理するようにすでに設定されています。 とても簡単なので、これ以上のプログラミングの知識は必要なく、ほとんど誰でも始めることができます。
一度、ほとんどの悪いPHPが初心者プログラマーによって書かれていることに気づけば、世の中で出会うPHPに対する恐怖や憎悪のほとんどは、もう一つの本質的な問題から来るものなのです。
Object-Orientation with (Great) Package Management is now the Norm in PHP
And bad ideas may make it through the crucible. 最もよく知られている例は、PHP 5.3 – 別に広く PHP の最初のモダンなバージョンとみなされている – が goto
ステートメントを導入したことで、これは一般に馬鹿にされるか、エラーの原因になりやすいと考えられています。
言語が成長する過程で生じたPHPの同様の悪い点:オブジェクト指向は欠陥のある限定的な概念として最初に実装され、標準ライブラリは一貫性のない名前とパラメータの順序でいっぱいで、(最近かなり注目された例では)::
トークンがインタプリタによって英語圏の人には理解できない形で呼ばれている。 T_PAAMAYIM_NEKDOTAYIM
.
しかし、今日、PHPでOOPは完全に実現されています。 PHPほどJavaライクなOOPを実践している言語はないでしょう。 さらに、Javaと違って、PHPにはComposerという広く愛用されているパッケージマネージャが一つあります。
PHP Has Gotten a Lot Faster
しかし、これらのことは、PHP は興味深い方法で進化していると言っていいでしょう。 かなり完全な機能を持つ Java のような (良くも悪くも) オブジェクト指向言語として成長しつつあります。 そして、Javaのように、関数型プログラミングのための簡単な抽象化機能を獲得しています – 間違いなく、現在のホットスポットです。 また、PHPはComposerが大好きで、それには理由があります。そして、PHPの大規模なオープンソースプロジェクトをすべて一緒に少しずつ機能させようとする努力は賞賛に値します。
そして、現在のホットな話題として、PHP 7 シリーズのリリースで PHP が行った高速化も忘れてはいけません。 これは、Facebook から出てきた HHVM が発端であると広く考えられています。 一時期、HHVMの速度がPHPコミュニティを分裂させるのではないかという危険性がありました。 しかし、そうはならなかった。 その代わり、PHP は非常に速くなり、人々は HHVM の存在をほとんど忘れてしまいました。
PHP には巨大なコミュニティがあり、学習しやすい
どのクールな新しい技術を使用するか決定している場合、私がしばしば注目しないのは、その言語と折り合いをつけるのがどんなものか、という点です。 PHP を学ぶのはどのような感じでしょうか?
PHPの人気の欠点の1つは、そのツールを使うことが本当はどんなことなのかを十分に知らない人たちによる、あまり良くないトレーニングを見つけることができることです。 あるいは、10年前の「ベストプラクティス」に従っただけの人たちです。 しかし、全体的に見れば、そのようなことは稀であり、あなたをがっかりさせるようなことではないと思うのです。 数か月間使用してきたプラクティスが良くないとわかることは稀で、大きな問題ではありません。
Common Comparons to PHP
プログラミング初心者の多くは、言語に関する非常に一般的な対決を探しています。 そこで、これらを紹介します。 これから書く言語はすべて、PHPと共通する以下の特徴を持っています:
- それらはオープンソースです。 これはどういうことかというと、基礎となる言語を無料(ノーコスト)で使うことができ、希望すれば基礎となるプログラムを見たり理解したりすることができるということです。
- Web開発でよく使われます。 かなりストレートに言うと、これらはWeb開発で多く使われている言語です。 いくつかはその場以外でも広く使われていますが、すべてではありません。
- これらは高レベルで、緩く、動的に型付けされます。 これは、変数が型を変えることができ、変数を定義するときに、どのような型 (数値 vs 文字列 vs オブジェクトなど) を格納するかを定義する必要がないことを意味します。 これは一般的に Web プログラミングに好まれますが、普遍的なものではありません。 上記のような特質を持ちながら、大規模なコミュニティを持っていない興味深い言語がたくさんあります。 ここでは、それらのことはさておき、
Why use PHP? なぜ JavaScript ではないのか?
おそらく PHP と比較する上で最も重要な言語は JavaScript でしょう。 現代の開発では、すべてのプロジェクトでクライアントサイドの開発と対話のために少なくとも少しは JavaScript を使用することが必要です。 Node では、サーバー上でも JavaScript を比較的簡単に使用できるようになりました。 クライアントとサーバーで同じ言語を「同形的に」使用するというアイデアは非常に魅力的です。
PHP と同様に、JavaScript は多くのいぼと「gotchas」を持つ折衷的で時々醜い言語です。 しかし、JavaScript はこの 10 年間で非常に高速になったので、そのケースは現実的なものです。 なぜJavaScriptではなくPHPを選ぶのか? PHPのライブラリの専門知識がある、あるいは使う必要がある場合。
PHP vs Active Server Pages ((.Net) Core)
Active Server Pagesは、Webプログラミング用のクローズドソースのMicrosoft言語として生まれました。 これは PHP にかなり直接的に匹敵するものでしたが、Windows Server 環境で動作していました。 これは ASP.net に取って代わられました。 ASP.net は現在 ASP.NET Core に置き換えられています。 後者2つは、PHPと同じくオープンソースの言語になっています。
Microsoft サーバーを使用し、愛しているなら、私は ASP を支持します。 そうでなければ、PHP をお願いします。 コミュニティのサイズと規模は、実際には比較できません。
Should I Use Ruby or PHP?
Ruby, 特に Ruby on Rails は、10年前に非常に人気がありました。 Ruby は今でも多くの人に愛されている言語で、私の目には PHP よりもずっとエレガントに映ります。 とはいえ、そのコミュニティは小さくなっています。 そして、Rubyが「ホットな言語」でなくなったことも感じています(その役割をJavaScriptに奪われた)。 Rubyは美しいですし、それを得意とする人も十分にいるので、その理由で避けることはないでしょう。 でも、すでに慣れている人を採用するのは、PHPより難しいのは変わらないでしょう。 (平均的な Ruby 開発者のスキルは、PHP の同じスキルよりも高いと思いますが。)
Python vs PHP。 どちらが良いですか?
PHP との一対一の比較で意味をなす最後の言語は、Python です。 Python は Web 開発以外にも多くの文脈で使用されています (統計やデータ解析にも非常によく使用されています)。
Python (Ruby や JavaScript など) は、PHP よりも Web サーバー上で実行するのが少し難しいです。 しかし、Python は PHP よりもきれいな言語であり、より多様に使用されています。 他のすべてのこと (外部ライブラリへのアクセス、専門家の雇用など) が同じであれば、Python を PHP より優先することを真剣に考える言語の 1 つです。
PHP vs Go? Scala? Java? etc?
私は冒頭で、私が行ったすべての先行する直接的な言語比較と多くの類似点があることを述べました。 しかし、その制約を取り払えば、比較できる他の言語が大量にあります。 そこで、いくつか簡単に触れてみます。
- Java は非常に人気があり、非常に高速です。 Android アプリ、デスクトップ アプリ、Web アプリの構築に使用されています。 しかし、動的型付けされていないため、性能は保証されていますが、Webプログラミングの容易さは劣ります。
- Goは、Googleが支援する新しい言語であり、成長しています。 Web サーバーに焦点を当てていますが、PHP よりも若干低レベル (より C に近い) です。 9651>
- Scala は人気のある JVM 実行 (Java 互換) 言語で、まだ人気が高まっているようです。 PHP よりもエレガントに設計されていますが、それ以外のことは自信を持って言えません。
もう一度言いますが、私が触れるのに十分な文脈を得たと感じるのはここまでです。 でも、考えられる選択肢はさらにたくさんあります。
Programming Language Choice is About Context
これらの比較を踏まえた上で、なぜ PHP を使うのでしょうか。 PHPの悪いところを列挙してみましたが、そのうちのいくつかは定期的に感じていることです。
他のシステムと相互運用する必要がなく、任意の環境で実行する必要がなく、チームに既存の専門知識がない、真の完全なグリーンフィールドプロジェクトでは、PHP を推奨する前にかなり深く考えることになるでしょう。 Pythonは、そのようなシナリオの中で本当に魅力的なのです。 しかし、これらは多くの注意点です。
どのような最新の Web 言語でも、優れた Web サイトやアプリケーションを作成するのを助けることができます。 そして、そのどれもが理想的とは言えない機能を持っています。 PHP は、他の言語と同様に、あなたにとって意味があるかどうかを判断するために、あなたのプロジェクトにおけるそのトレードオフを本当に理解する必要があります。 しかし、私個人としては、Keith Adams が素晴らしい講演で言ったように、「PHP で衝撃的な生産性をあげる」ことが可能であることを発見し続けています。 もし、Javaに詳しい共同設立者がいるなら、SaaSをJavaで書きましょう。 ソフトウェアの人的配慮は、常に言語的配慮より優先されるべきです。