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

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

ただいまの
回答率

90.00%

Go,Django,Rails,Vuejsについて

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 207

sa2shun

score 2

前提

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

質問内容

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+1

需要うんぬんはよくわかりませんが・・・(というか需要で決めるなら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/03 00:04

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

    キャンセル

  • 2019/12/03 08:29

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

    キャンセル

  • 2019/12/04 00:42

    ありがとうございます

    キャンセル

0

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

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

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

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/12/02 16:45

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

    キャンセル

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

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる