🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Ruby

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

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1119閲覧

Go,Django,Rails,Vuejsについて

sa2shun

総合スコア6

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Ruby

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

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/12/02 07:12

#前提
普段はPythonを触っており、初めてWebアプリケーションを作ろうとしています。Cも2年ほど触っていました。
そこで、Webアプリケーションを作ろうと思い調べたところ、Django,Rails,Vuejsがおすすめと言われました。また、ここで学んだ知識は仕事にも利用したいですり

#質問内容
そこで、どの言語(フレームワーク)で開発するのがいいのでしょうか。
普段Pythonを触っていて、最近Pythonのエンジニアが増えているので必然とDjangoの需要も高まっている。
Ruby on Railsは前から絶対的な需要があり、学習コストが低く、今でも高い需要がある。
Vuejsは最近注目のフレームワークで、クライアント側で色々出来るので便利だ。
みたいなことがいろいろ出てきて、結局どれがいいのか分かりませんでした。
また、Golangは実行速度が早く、期待の言語である、とも書かれていました。(Goのフレームワークはよく分かりませんでした。)
そこで、これからの需要を考えるとどの言語(フレームワーク)を学ぶのが良いのでしょうか。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

需要うんぬんはよくわかりませんが・・・(というか需要で決めるならJavaかPHP?)

Goのアプリケーションを成立させているコードはほぼGoで書かれたコードです。
なのであらゆる機能の裏側を読むことができます。
TCP/HTTPの仕組みやTLS、証明書の扱いなど、包み隠さず追うことができます。

GoでWebアプリケーションを作ると「小さな責任を持った機能」を組み合わせて
アプリケーションを構築している様子が隠されることなく見て取ることができます。
(このおかげでどうやってサーバーとクライアントがお互いの証明書を検証するのかとかTLSのハンドシェークの理解も深まったし、HTTPに対する理解も深まりました。)

フレームワークの利用はこれらを隠し、「フレームワークの流儀にいかに乗るか」が求められます。
その裏側にはあまり触れることなく一般的なアプリを実装することができてしまいます。

フレームワークはレールに乗っているうちは裏側のことを知らなくても問題はありませんし、
細かいことはフレームワークが気を利かせて決めうちの処理を持っていて気にしなくてもいい。

ところがそのレールから外れるようなことが要求された途端、
フレームワークの裏側の仕組みの理解が必要になります。

そうしてフレームワークを追っていくとそこにはアプリケーションとは異なる言語で書かれた外部ライブラリを利用していて挙動を追うのは困難といったことがあったりします。そしてフレームワークがリッチであればあるほどその挙動の把握は困難になります。

私はかつてPythonでDjangoやその他のフレームワークを使ってWebアプリを作っていましたが、今はGoで書いてばかりになりました。とっつきはGoでWebアプリ書くのは若干面倒に感じる(特にDB周りは面倒に感じる)のですが、Goの方がストレートに処理を追いやすくてメンテしやすいと感じるからです。

また、PythonとGoとでWebアプリの構築で大きく異なる特徴があります。

  • Pythonでは静的コンテンツを効率的にサーブできないので本番サーバーでは前段に高スループットなプロキシーサーバーを置くのが一般的です。
  • Goでは高スループットなプロキシーサーバーの役割を自身でまかなえるのでデプロイ先の構成はシンプルになります。

またGoに比べてPythonは柔軟なテンプレートでHTML生成が得意ではあるんですが、サーバー側の動的なHTML生成の需要はどんどん減っているように思います。静的コンテンツとVue.jsやReactによってブラウザ側に処理をオフロードしてサーバー側でHTMLやDOMを扱わない構造が主流になりつつあると思います。
「Webアプリ実装」=「APIサーバーとフロントエンドの実装」になってきています。

これから新規にWebアプリをつくりつつ、ブラウザとWebアプリケーションサーバー間の仕組みに関する知識を掘り下げたいのであればGoはオススメです。一度掘り下げておくと、どんなフレームワークを使うことになってもフレームワークの裏側の理解が早くなると思います。

投稿2019/12/02 11:59

編集2019/12/02 12:02
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sa2shun

2019/12/02 12:08

DjangoはHTML生成が得意ということは、golangはHTML生成が出来ないってことですか? また、バックエンドをgolang、フロントエンドをVuejsで書くというのはどう思いますか?
nobonobo

2019/12/02 14:34

GoはHTML生成することはできますが、データ構造を決めたらその編集フォームを自動で作成する様なツールやライブラリは充実していません。 バックエンドをGo、フロントエンドをVueというのは実際に業務などで使っています。一般的かどうかはわかりませんが。
sa2shun

2019/12/02 15:04

ありがとうございました(_ _)
nobonobo

2019/12/02 23:29

余談ですが、Pythonの新しいstarletteはGoの思想に近いシンプルなフレームワークでベンチマークでGoより速い結果が得られたりもするそうです。また、Pythonにはトップクラスに良くできたORマッパーSQLAlchemyがあるので、そちらを試してみるのもアリかなと。Pythonに慣れていらっしゃるのならこちらの方が早く何かを作るのに向いているかも。
sa2shun

2019/12/03 15:42

ありがとうございます
guest

0

これからの需要を考えるとどの言語(フレームワーク)を学ぶのが良いのでしょうか。

「これからの需要を考える」のであれば、結論は1つです。どれでもいいから、まず始めることです。

時代の移り変わりに応じて、現れるもの、消えるものは絶えず入れ替わっていて、5年後には「今存在しないフレームワーク」が主流になっていてもおかしくありません。

そんな世界を渡り歩くには、何が来ても適応できる力が一番重要となってきます。「HTTPをベースとしたWebアプリケーション」という大枠で見れば、1つ身につければ他のフレームワークへ移行するときもそこまで学び直しは大きくならないでしょう。

投稿2019/12/02 07:31

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sa2shun

2019/12/02 07:45

解答ありがとうございます。 では、これからの需要ではなく、今の需要としてはどれが1番高いのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問