質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • PHP

    21405questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Python

    9288questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Ruby

    8234questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

サーバー開発で使用する言語は、どれを使えば良いですか?

解決済

回答 3

投稿

  • 評価
  • クリップ 9
  • VIEW 21K+

m.h

score 135

サーバー側の言語では、Ruby、Python、PHPが有名かとは思いますが、どの言語使うのが良いのでしょうか?
今までサーバー開発は経験が少なく、どれも見たことある程度の知識レベルです。
(JavaとPerlは使ったことがあります)
また、あまり大きな開発規模ではなく、3ヶ月程度で作成するくらいの内容です。

導入から保守まで、それぞれの言語のメリット、デメリットはどんなところでしょうか。
よろしくお願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+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 がいいんじゃないかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/09/12 14:35

    いろいろ教えていただき、ありがとうございました。
    これほど多くの言語で、サーバー開発が出来ることは知りませんでした。

    Ruby on Railsを使うと、簡単にサーバー開発が出来るという噂は聞いているのですが、
    紹介して頂いたURLでは、かなり下の方になってしまうのですね・・・。
    クライアントとサーバーで、同じ言語で開発できる JavaScript も良いかなと思いました。

    キャンセル

checkベストアンサー

+6

初めての挑戦ということであれば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/16 10:42

    レンタルサーバーを調べてみたところ、どれもPHPとMySQLがインストール済みなので、
    始めるのは楽そうで良いですね。
    Pythonもインストール済みなところが多いのですが、日本語の情報が少ないようなので、
    そういう意味では、Rubyの方が良いかもしれないですね。

    今回は、導入の簡単さと情報の多さで、PHPを選ぼうと思います。
    サーバーサイドの開発頑張ります!ありがとうございました。

    キャンセル

  • 2014/09/16 13:31

    Pythonも最近はネット上の情報は増えてるみたいですけどね。
    でも多分実際周りを探してみるとRubyの人の方が多いのかも。

    PHPで有名なフレームワークはCakePHPやSymfony、FuelPHPといったところでしょうか。
    RubyのSinatraやPythonのFlask相当のマイクロフレームワークとしてはSlimなんてのもあります。
    言語の基礎を抑えたら、フレームワークにも挑戦してみると良いかもです。

    キャンセル

  • 2014/09/20 01:03

    日本語の情報が増えるのは嬉しい限りです。

    先日、現場のリーダーがセールスフォースのイベントで、
    Herokuというサーバー3万円分の無料券を貰ってきたので、
    それを使ってみようしているところです。

    まだ、最初のチュートリアルの途中ですが、なかなか難しいです。
    フレームワークも機会があれば、挑戦してみます。
    ありがとうございました。

    キャンセル

  • 2014/09/20 08:01

    Heroku3万円分とは羨ましい…
    HerokuのようなPaaSは普通のサーバーよりも難しいので、最初はレンタルサーバーで始めた方が良いかもです^^;
    私も昨日から何度もデプロイしてますが思い通りに動かずだいぶ手こずってます…
    お互い頑張りましょう。

    キャンセル

  • 2014/09/24 19:23

    いつも素敵なレスありがとうございます。励みになっております。

    >最初はレンタルサーバーで始めた方が良いかも
    ですよねー。
    Herokuアカウント登録とサンプル動作は出来たのですが、
    これからどうして良いか分からす、まったく動かせてないです。
    もう少しやって、無理そうなら日本のレンタルサーバーにしようと思います。

    キャンセル

  • 2014/09/25 07:13

    やはり最初は無料のレンタルサーバでグリグリ動かしてみて、慣れてきたらHerokuとか使うのが良いかと思います。
    Herokuは言語以外の学習コストも意外と高いので…^^;

    最初はレンサバでログファイルをどんどん吐き出して、どんな動きしてるのか確認しながら進めていくのが楽だと思います。
    無料のレンサバだとCakePHPみたいなフレームワークは動かせなかったりしますが、Slimみたいなマイクロフレームワークなら大丈夫かと。
    私はすっかりPythonなので詳しくは知りませんが…^^;

    キャンセル

+1

何かしらの事情でスクラッチ開発する必要があるのでなければ、まず最初にどのフレームワークを使うかを選択するのがいい気もします。フレームワークを選べば、書く言語は自動的に決まってきます。

  • Rubyでは、Ruby on Railsが主要なフレームワークです。
  • PHPでは、CakePHP、FuelPHP、Zend Frameworkなど、各種のフレームワークが存在しています。
  • Pythonでは、Django、Flaskなどがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/09/10 10:33

    回答ありがとうございました。
    フレームワークで調べてみましたが、思ったよりも多くの情報が出てきてしまい、決めかねております。
    ただ、調べているなかで、VBにもフレームワークがあることが分かり、簡単に開発できそうなので、候補の1つとして検討しようと思います。

    キャンセル

同じタグがついた質問を見る

  • PHP

    21405questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Python

    9288questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Ruby

    8234questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。