サーバー開発で使用する言語は、どれを使えば良いですか?
解決済
回答 3
投稿
- 評価
- クリップ 13
- VIEW 28K+
今までサーバー開発は経験が少なく、どれも見たことある程度の知識レベルです。
(JavaとPerlは使ったことがあります)
また、あまり大きな開発規模ではなく、3ヶ月程度で作成するくらいの内容です。
導入から保守まで、それぞれの言語のメリット、デメリットはどんなところでしょうか。
よろしくお願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+7
速度、コードの安全性 <--> 書きやすさ
例えば、静的型付けの言語の方がコードの安全性が上がり、大規模開発に向いてるけど、動的型付けの言語の方が書きやすく工数短縮につながるといった具合です。
速度も Native(コンパイル型)や VM の言語はコンパイルの手間がかかりますが速く、スクリプト言語は手間がない代わりに遅くなるということがあります。また、同じコンパイルでも静的型の方が速くなります。
そのうちブログで書こうと思って調べていたネタなのですが、サーバー開発で使われている言語の特徴をまとめてみたので参考にしてみてください。
ちなみに速度関連の話は以下のサイトを参考にしています。
- Round 9 results - TechEmpower Framework Benchmarks
================
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 がいいんじゃないかと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+6
メリットとしては、サーバーに置いとけばとりあえず動くのでプログラミング以外のことに気を払う必要が無いということでしょうか。
無料のレンタルサーバーでも動かせるのでコスト面でも優れていると思います。
あとPHPできる人は多いと思うので、困ったときに聞きやすいとか。
Webアプリだけでなくて、普段使えそうなちょっとしたツールとかも作りたい、という考えをお持ちでしたらRubyやPythonをやってみると良いのでは。
PHPは良くも悪くもWeb特化の言語なのでそういう使い方にはあまり向いていないかも。
Rubyのメリットは日本語の情報が多い点と、こちらもPythonに比べると質問できる人が多いんじゃないかという点です。
Rubyの場合、言語だけでなくフレームワークもRailsやSinatraというある程度スタンダードになっているものがあるというのもメリットだと思います。Pythonはその辺Django以外は乱立してるので。
Pythonのメリットは…特に思いつきませんね^^;
でも個人的にはRubyに比べて、「あれ、これってどうなってんの?」と思うことが少ない気がします。
デメリットとしては求人を探してもPythonという言葉自体あまり見かけないということでしょうか。
あとRubyとPython共通のデメリットですが、JavaやJavaScript、PHPといった多くの言語と書き方が異なる(セミコロンとかインデントとか)ので、初めて作るのであればその辺りが障害になってくるかもしれません。
RubyとPythonどっちが良いかは、ドットインストールとかのチュートリアルを見てしっくりくる方を選べば良いんじゃないでしょうか。
サーバーサイドの開発、頑張ってください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
- Rubyでは、Ruby on Railsが主要なフレームワークです。
- PHPでは、CakePHP、FuelPHP、Zend Frameworkなど、各種のフレームワークが存在しています。
- Pythonでは、Django、Flaskなどがあります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2014/09/12 14:35
これほど多くの言語で、サーバー開発が出来ることは知りませんでした。
Ruby on Railsを使うと、簡単にサーバー開発が出来るという噂は聞いているのですが、
紹介して頂いたURLでは、かなり下の方になってしまうのですね・・・。
クライアントとサーバーで、同じ言語で開発できる JavaScript も良いかなと思いました。