サーバー側の言語では、Ruby、Python、PHPが有名かとは思いますが、どの言語使うのが良いのでしょうか?
今までサーバー開発は経験が少なく、どれも見たことある程度の知識レベルです。
(JavaとPerlは使ったことがあります)
また、あまり大きな開発規模ではなく、3ヶ月程度で作成するくらいの内容です。
導入から保守まで、それぞれの言語のメリット、デメリットはどんなところでしょうか。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
関数を選択する場合、次の要素の兼ね合いを考えるのが大事だと思います。
速度、コードの安全性 <--> 書きやすさ
例えば、静的型付けの言語の方がコードの安全性が上がり、大規模開発に向いてるけど、動的型付けの言語の方が書きやすく工数短縮につながるといった具合です。
速度も Native(コンパイル型)や VM の言語はコンパイルの手間がかかりますが速く、スクリプト言語は手間がない代わりに遅くなるということがあります。また、同じコンパイルでも静的型の方が速くなります。
そのうちブログで書こうと思って調べていたネタなのですが、サーバー開発で使われている言語の特徴をまとめてみたので参考にしてみてください。
ちなみに速度関連の話は以下のサイトを参考にしています。
================
C, C++ 言語
一応、フレームワークもあります。
- 特徴 : 静的型、 Native
- メリット : ダントツに速い、Web じゃなければシェア大
- デメリット : 作るの大変
Go 言語
C++ じゃもう無理ということで Google が開発した言語です。
Web 開発用の機能も充実してます。ただ、 Native の割にはそんなに速くはないです。
- 特徴 : 静的型、 Native
Java
Web 開発用の機能や VM を活かしたリソースのモニタリングツールなどが充実してます。
ただ、 Java は VM のシステムは素晴らしいのですが、言語仕様的な欠点も多いです。そのため、 JVM 上で動く JVM 言語がたくさん生まれています。
- 特徴 : 静的型、 JVM
- メリット : シェア大
- デメリット : 言語仕様がイマイチ
JavaScript
Node.js を使うことによってサーバーサイド言語になります。 Ringo といって JVM で動くものもあります。 一番のメリットはサーバサイド、クライアントサイドで同じ言語で書けるという点だと思います。
スクリプト言語ですが、 Node.js では V8 エンジンが使われていて内部で JIT コンパイル(VM の速さの要因の一つ)できます。
- 特徴 : 動的型、スクリプト(中で JIT)
- メリット : シェア大、サーバー-クライアントサイドで同じ言語で書ける
- デメリット : もともと大規模開発向けの言語ではない
Dart
こちらは JavaScript じゃもう無理 ということで Google が開発した言語です。
JavaScript と違い、初めからクライアント、サーバーサイドの両方で動作するように作られています。 Dart VM は V8 エンジンを改良して作られており、 Google 発表では JVM よりも速いらしいです。
Google App Engine で使えるようになるなど、 サーバーサイド言語としても Google は推してきているようです。
- 特徴 : 動的型、スクリプト(中で JIT、型チェックあり)
- メリット : サーバー-クライアントサイドで同じ言語で書ける
- デメリット : 開発段階からようやく安定してきたぐらい
Clojure
JVM 上で動作する LISP 系の関数型言語です。関数型言語は並列処理に強い言語です。
実用的な LISP といった感じの言語です。ただ、 LISP は素晴らしい言語ですが、その分とっつきにくいです。
また、ClojureScript という JavaScript に変換できる altJS の言語もあります。
- 特徴 : 関数型、動的型(型チェックも一応あり)、JVM
- メリット : LISP、サーバー-クライアントサイドで近い言語で書ける
- デメリット : LISP
Scala
JVM 上で動作する関数型言語です。関数型ですが、制限が緩いので、気をつけて書かないとベター Java 程度の言語になってしまいます。
Twitter が Ruby(Rails) から Scala に変更したことで有名になりました。
- 特徴 : 関数型、静的型、 JVM
Erlang
BEAM という JVM とはまた趣の異なった VM の言語です。こちらは耐障害性が重視されています。耐障害性というのは安定性とは違い、落ちても自動で復帰することによって障害に強くしています。
電話会社のエリクソンが開発していて、ライフラインのように速度よりも止めないことを重視されるサーバーに向いています。
- 特徴 : 関数型、動的型、 BEAM(Erlang VM)
- メリット : 耐障害性、分散コンピューティングに強い
- デメリット : 遅い、書きづらい、シェア小
Elixir
Erlang は実はすごく書きづらい言語です。 Java で JVM 言語がたくさんできているように Elixir は Erlang VM 上で動く言語です。
Ruby 風の言語で、 Erlang のメリットをそのままに書きやすさを向上させています。
- 特徴 : 関数型、動的型、 BEAM(Erlang VM)
- メリット : 耐障害性、分散コンピューティングに強い
- デメリット : 遅い、シェア小
C#
最近では、.NET もサーバーサイドでのシェアを増やしてきています。
- 特徴 : 静的型、.NET
- メリット : Web 以外ではシェア大
F#
.NET で動作する関数型言語です。 F# は新しい言語ですが、その実態は OCaml の移植なので、わりと実績のある言語です。次のような流れでできています。
ML(関数型の走り) → Caml(ML の方言) → OCaml(オブジェクト指向を取り入れる) → F#(.NET への移植)
- 特徴 : 関数型、静的型、.NET
Haskell
純粋関数型言語です。純粋なので制限がきつく、 OOP に慣れているとパラダイムシフトにちょっと苦労させられます。
コンパイル型ですが、 Native の割に遅いです。 JVM や .NET の言語であれば、 Java や C# のライブラリーなども使えるので、シェアが低いのはそれほどデメリットでは無いのですが、コンパイルなので、そのデメリットが効いてきます。
- 特徴 : 純粋関数型、静的型、 Native
- デメリット : シェア小
Ruby
書きやすさに重きをおいたスクリプト言語です。 Rails により Web 用言語として一気に広まった感があります。
JVM への移植である jruby でも Rails を動かすことができます。
- 特徴 : 動的型、スクリプト(内部は VM)
- メリット : 書きやすい、シェア大
Groovy
Ruby 風のスクリプト言語ですが、より JVM への親和性を高めた言語です。
- 特徴 : 動的型(コンパイル用に指定もできる)、 JVM
Python
何かと Ruby と比べられる言語ですが、こと Web に限れば Rails の分、遅れをとっている気がします。
- 特徴 : 動的型、スクリプト(PyPy を使えば内部で JIT)
PHP
実はここで挙げた言語の中で、唯一かじってさえいない言語です。
個人的に興味が持てなかったからなのですが、シェアは広いのでそんなに悪い言語ではないような気はします。
- 特徴 : Web 専用言語、動的型(型チェックできるものもある)、スクリプト
- メリット : シェア大
================
いろいろ挙げましたが、私のお勧めは Clojure か Ruby です。
作成される規模も考えれば、 ベタですが Ruby がいいんじゃないかと思います。
投稿2014/09/10 16:35
総合スコア863
0
ベストアンサー
初めての挑戦ということであればPHPが良いのではないでしょうか。
メリットとしては、サーバーに置いとけばとりあえず動くのでプログラミング以外のことに気を払う必要が無いということでしょうか。
無料のレンタルサーバーでも動かせるのでコスト面でも優れていると思います。
あとPHPできる人は多いと思うので、困ったときに聞きやすいとか。
Webアプリだけでなくて、普段使えそうなちょっとしたツールとかも作りたい、という考えをお持ちでしたらRubyやPythonをやってみると良いのでは。
PHPは良くも悪くもWeb特化の言語なのでそういう使い方にはあまり向いていないかも。
Rubyのメリットは日本語の情報が多い点と、こちらもPythonに比べると質問できる人が多いんじゃないかという点です。
Rubyの場合、言語だけでなくフレームワークもRailsやSinatraというある程度スタンダードになっているものがあるというのもメリットだと思います。Pythonはその辺Django以外は乱立してるので。
Pythonのメリットは…特に思いつきませんね^^;
でも個人的にはRubyに比べて、「あれ、これってどうなってんの?」と思うことが少ない気がします。
デメリットとしては求人を探してもPythonという言葉自体あまり見かけないということでしょうか。
あとRubyとPython共通のデメリットですが、JavaやJavaScript、PHPといった多くの言語と書き方が異なる(セミコロンとかインデントとか)ので、初めて作るのであればその辺りが障害になってくるかもしれません。
RubyとPythonどっちが良いかは、ドットインストールとかのチュートリアルを見てしっくりくる方を選べば良いんじゃないでしょうか。
サーバーサイドの開発、頑張ってください。
投稿2014/09/11 11:17

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2014/09/16 04:31

退会済みユーザー
2014/09/19 23:01

退会済みユーザー
2014/09/24 22:13

0
何かしらの事情でスクラッチ開発する必要があるのでなければ、まず最初にどのフレームワークを使うかを選択するのがいい気もします。フレームワークを選べば、書く言語は自動的に決まってきます。
- Rubyでは、Ruby on Railsが主要なフレームワークです。
- PHPでは、CakePHP、FuelPHP、Zend Frameworkなど、各種のフレームワークが存在しています。
- Pythonでは、Django、Flaskなどがあります。
投稿2014/09/08 05:23
総合スコア146506
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/09/12 05:35