ホームお問い合わせプロフィール未経験→就職転職合格率年収の相場ブラック企業判別定時帰りする方法

プログラミング初心者にはnode.jsよりPHPを勧めたい理由

2017年2月24日に投稿 → に更新 技術

「JavaScript覚えたから、サーバ側もnode.js覚えればかんたんかな?」
「言語いくつも覚えたくないからサーバ側もnode.jsでJavaScriptに統一したい」

読者の方から、相談メールが届きました。

「私はプログラミング初心者でHTML, CSS, JavaScriptを学びました。サーバ側もnode.jsならJavaScriptなので学びやすいかなと思うのですが、いかがですか?」

ということで、こちらに回答します。

node.jsは安いレンタルサーバで動かせない

安いレンタルサーバの多くは

  • PHP
  • Ruby
  • Python
  • Perl

を動かせますが、node.jsは動かせません

もちろんVPSやクラウドを借りれば、node.jsを動かせますが、レンタル料も高くなりますし、環境のセットアップもしなければなりません。

その点、レンタルサーバは既に環境がセットアップされたものを使えるのでかんたんです。

特にPHPはファイルを公開ディレクトリに置くだけで動かすことができるので簡単です。

Ruby, Python, Perlは動かせてもCGIモードに限定されてるサーバが多いです。

CGIの場合、リクエストごとにプロセスを起動するので、フレームワークを使うと、読み込むモジュールが多いため、処理が重くなってしまいます。ですから、安いレンタルサーバでRuby on Railsを動作させることは困難です。

それに対してPHPは、安いレンタルサーバでも多くの場合Apacheの内部モジュールモードで動かすことができるので、フレームワークを使ったシステムでも高速に動作します。

node.jsはシングルスレッドノンブロッキングIOなのでコードが難しい

例えばPHPでファイルを読む時に以下のような書き方ができます。

$data = read("ファイル名");

ブロッキングIOの書き方です。分かりやすいですよね。

それに対して、node.jsの場合、ノンブロッキングIOの書き方をしなければなりません。

read("ファイル名", function(data) {
});

ファイルを読んで取得したデータをコールバック関数の引数として受け取らなければならないんです。初心者には難しいですよね?

node.jsよりPHPの方が日本語の情報が多い

日本語の書籍もWebサイトもPHPの方が圧倒的に多いです。

node.jsはちょっとしたエラーが出て、原因を調べるだけでも日本語ページがなく、stackoverflow.comなどの英語サイトしか出てこない場合がよくあります。

JavaScriptとPHPは文法が似てるから覚えるのがかんたん

//JavaScriptのif文 例
var a = 3;
if (a == 3) {

}
//PHPのif文 例
$a = 3;
if ($a == 3) {

}

//JavaScriptのfor文 例
for (i = 0; i < 10; i++) {

}
//PHPのfor文 例
for ($i = 0; $i < 10; $i++) {

}

ほとんど同じですよね?このように文法の大部分は共通しているので、JavaScriptを知ってる人にとってPHPを学ぶものは簡単です。

PHPにかぎらず、多くのプログラミング言語の基礎的な構文は共通部分が多いので、一つ言語を学べば、次の言語を学ぶのは以前よりもずっと簡単になります。学べば学ぶほど、学ぶのが楽になっていくのがプログラミングなんです。

node.jsの方が新しいので初心者でもベテランに追いつきやすいのでは?

そうともいえますが、node.jsも登場してからもう何年も経っています。その頃からやってる人はずっと先を行っています。

PHPは古い言語ですが、PHPのフレームワークはどんどん新しいものが出てます。新しいフレームワークを学べば、そのフレームワークの使い手としてベテランエンジニアと並ぶことは比較的かんたんです。

node.jsの方がPHPより高い給料もらえるんじゃないの?

エンジニアとして企業に就職するなら、PHPよりnode.jsを学んだ方がエンジニア数が少なく希少なので高い給料がもらえるかもしれません。

しかし、PHPの一流エンジニアはnode.jsの初心者よりもずっと高い給料をもらっています。

給料は、技術の種類 × 習熟度で決まります。

ですから、node.jsの一流エンジニアになれば、PHPのエンジニアの一流よりもさらにレアだから高い給料もらえるはずとも考えられます。

ただ、これもケースバイケースです。

例えば、FacebookはPHPで作られていて、めちゃ儲かっています。LinkedIn(モバイル版)はnode.jsで作られています。LinkedInも今後伸びるかもしれませんが、今のところ、売上高はFacebookの方がずっと上です。PHPの一流エンジニアになってFacebookに就職したほうが高い給料もらえる可能性が高いとも考えられますよね。

そんなわけで、node.jsはJavaScriptなので、文法を新たに学ばなくてもいいですが、上記で述べた難しさ・デメリットがあるので、私は初心者にはnode.jsよりもPHPをおすすめしています!