質問: 現在キュレーションメディアのようなものを作ろうとしていて、サーバーサイドの言語選択で悩んでいます。 具体的にはPythonかNode.jsかです。 プログラミング初心者なので、自分でいろいろ調べてみてわかったことは以下のようなことです。 古い情報なども含まれていて、現在とは異なるものもあるかもしれませんが。 **Pythonのメリット** より少ないコードで書くことができる エラーなどを発見しやすい 誰が読んでもわかりやすく、メンテナンスしやすい **Pythonのデメリット** Node.jsと比較すると遅い **Node.jsのメリット** 処理速度が速い 大量の同時アクセスにも対応できる よりスケーラブル **Node.jsのデメリット** ネストがすごい深くなる可能性があり、可読性が低くメンテナンスしにくい (追記、最新版ではネストが深くなるのは克服できるているらしい) 上記が自分が調べた内容ですが、これ以外にメリットデメリットはありますか? また、東南アジアでリリースする(ネットが極めて遅い)サイトで、月間PVが1000万を超えるようなことを想定する場合、どちらがおすすめでしょうか? 個人的にはスピードは非常に大事なので、Node.jsがいいのかなと思いつつ、RubyやPythonに比べて流行っていない気がするので、質問させていただきました。
回答: 結論はLLmanさんと同じです。 どっちも良いからどっちも使おう! もしくはなんとなくで決めて良いです。 Node.jsで実装のパフォーマンスを出すためにはAltJSを覚える事が必要不可欠なので若干敷居が高いです。 汎用的なライブラリが優れているので極まったNode.jsは万能です。 Pythonは書きやすいですし、速度が足りない困ったという場面では奥の手が使えるので先にこちらを勉強するとやりやすいかと思います。 機械学習回りのライブラリが優れているので、そちらに少しでも興味があるならPythonは扱えるべきです。 > > Node.js: 大量の同時アクセスにも対応できる > > > 古今東西のフレームワークの捌けるアクセス数ランキングです。 上位層にPythonは十分食い込めるポテンシャルを持っています。 同じNode.jsでもsails.jsでは秒間500アクセス数しか捌けません。 遅い遅いと叩かれるRubyもJavaのバイトコードに変換して速度を稼ぐJRubyのような必殺技がありますし、 同様にPythonにもPyPyを使ってC言語やJavaのバイトコードを経由して爆速に動かす切り札があるのです。 Lisp使いも普段の業務をLispで書いてJavaのソースコードに変換して納品している...と言語間の速度を覆す工夫は至る所にあります。 さて、あなたの考えるキュレーションメディアは秒間何アクセスを叩き出す事を想定していますか? 上記ベンチマークでほぼ最下位として紹介されているsails.jsですが、一般的な感覚では頭おかしい程捌けます。 秒間500アクセスをピーク時に求められるサイトを、ピーク時3時間(毎秒500アクセス)、平時毎秒250アクセスと仮定して1日2,430万PV、月間で計算すると7億PVとなりますからね...! アドセンスを入れると1PVあたり0.2円程度なので、7億PVもあれば月収1000万円超ですね! 浮いたお金でサーバーをアップグレードして強引に動かすのと、全部高速な言語で置き換えるのではどちらがコストが掛かるのでしょうね...? ...というわけで、言語の導入時に速度を気にする場合、 そのくらいPV数が見込めるくらいのサイトになってから悩んでも遅くはありません。 > > Python: 簡潔に書ける > > > スタートアップではでかいメリットです。 ただし素のJavaScriptは単なるゴミですが、こちらにもAltJSという奥の手があります。 本番環境へデプロイを行う直前にコンパイルしてJSファイルにすれば速度面でも問題は出ません。 例えばCoffeeScriptならPythonとほぼ同レベルの書き心地ですし、 それを更に改良したLiveScriptはPythonを完全に突き放しています(と勝手に思ってます) 型チェックを取り入れるならばTypeScriptやPureScript等があります。