質問するログイン新規登録

意見交換

5回答

629閲覧

バックエンドで使用する言語について

Davy-D-Xebec

総合スコア15

Go

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

Ruby on Rails

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

0グッド

0クリップ

投稿2025/12/24 03:02

0

0

テーマ、知りたいこと

普段業務でTypeScriptでバックエンド開発しているのですが、他の言語も学びたいと思っており、おすすめを知りたいです。

背景、状況

用途はWebサービス開発です。
特に「このサービスを開発したい」というのはないのですが、TypeScriptはバックエンド向きじゃないみたいな話もXでちらほらみかけるので、この言語おすすめみたいなのがあれば知りたいです。

期待しているのは、優先度順に以下です

  • バックエンド向きな言語を学びたい
  • 他言語を学ぶことでプログラミングに対する考え方が良い意味で変わる(視野が広がる)
  • 需要がある言語の習得

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

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

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

回答5

#1

Davy-D-Xebec

総合スコア15

投稿2025/12/24 03:02

補足:年末年始に勉強したいなって考えております

#2

kmr_kiko

総合スコア119

投稿2025/12/24 03:20

編集2025/12/24 05:47

期待値的に、特に「考え方が変わる」という点でScalaが良い選択だと思います。

TypeScriptから来ると、Scalaの型システムは別次元に感じるはずです。
高階カインド、型クラス、パターンマッチングあたりを触ると「型でここまで表現できるのか」ってなります。関数型プログラミングも、TypeScriptで関数型っぽく書くのとは全然違う体験ができます。

バックエンドとしても実績は十分で、Twitter、LinkedIn、楽天とか大規模サービスで使われてます。Play FrameworkやAkka HTTPあたりのエコシステムもしっかりしてます。
需要面は正直GoやRustより少なめですが、Scala案件は単価高めで、金融系とか大規模システムでは根強く求められてる印象です。

年末年始に学ぶなら、学習曲線はちょっと急ですけど、TypeScriptの型の経験があれば理解しやすいと思います。すぐ転職に使えるならGoかもですが、プログラマーとしての引き出しを増やすならScala一択だと思いますよ。

加藤潤一さんという方のこの記事とか学習におすすめです!
https://zenn.dev/j5ik2o/books/scala-book-0f190ca38c551a9def3f

#3

Davy-D-Xebec

総合スコア15

投稿2025/12/24 05:45

編集2025/12/24 05:50

#2 ありがとうございます。Scalaいいですね。TypeScriptより型システムすごいんですね

比較として挙げていただいたGoやRustについても気になっています。例えばRustならメモリ管理や低レイヤーへの意識が得られると思うのですが、言語によって得られる考え方の変化に違いがあるのでしょうか?

#4

SaitoAtsushi

総合スコア5817

投稿2025/12/26 04:37

現代ではウェブは確立した技術の組み合わせです。 黎明期のような試行錯誤は必要なく、どれだけたくさんの部品 (ライブラリ) があるかが選定基準として重要です。 そしてライブラリの量は皆が使っている言語に蓄積されていきますので主流の言語に乗っておくのが良い選択肢になってしまうのです。

もちろん言語自体の機能も及第点以上は必要であるにしてもそれはほどほどで充分で、物量こそが正解だという現実があります。 そして可能ならその物量を簡単に扱えるパッケージマネージャとリポジトリがあるとなおよいですね。 JavaScript の npm や Rust の crates.io などのことです。

逆にウェブの様々な技術 (規格) に対応したライブラリがない (少ない) 言語でライブラリが豊富な言語と同じようにサービスを作ることを考えたら馬鹿げていることはすぐにわかるでしょう。 いくら言語自体が優れていても何もかも自前で書くのは大変なことです。

場合によっては複数の言語を組み合わせることも可能ですが組み合わせやすい言語とそうでない言語はありますし、いずれにしてもそれによって得られるライブラリの量という要素は無視できない大きなものです。


古い時代の成功例としては viaweb (Yahoo!ショッピングの前身) が Common Lisp で書かれていたというのが有名ですね。 実行速度と柔軟さを両立していてホットデプロイが当たり前、高度な型システムもあるというのは当時としてはこれ以上ないほど先進的で有用な選択肢だったと思います。

ただ、 Common Lisp はあまりにも柔軟すぎて統制を取り難いのは欠点だと考えられています。 少人数で大規模なものを作ってしかも動かしながら頻繁に改良していくという前提では良い選択肢でも、更に巨大な規模にしていくには少人数では無理になっていきますし、統制の取りやすい言語が望ましくなります。 実際にYahoo!ショッピングは別の言語で書きなおされています。

現代においてはユーザが少ないのでライブラリも多いとは言えないです。 昔は他の言語もそれほどライブラリの蓄積がなかったので相対的に言語自体のパワーで押しきれたのでしょうが……。 そして成功例が viaweb くらいしかないので本当に Common Lisp の力だったのか疑問視する人もいます。 単に viaweb の創設者であるポール・グレアムが有能だったのかもしれません。

言語自体は結構面白いと思うんですけどね。 (と言いつつ私自身はそんなに詳しくないです。)

#5

Davy-D-Xebec

総合スコア15

投稿2026/01/05 02:38

#4 ありがとうございます!ライブラリが充実しているのは重要な観点ですよね。
一方で、学習目的としての言語選択と実プロダクトの言語選択は少し分けて考えてもよいのかなとも感じています。

たとえばRustやGo は、npmほどの物量はなくても
・並行処理
・メモリ管理
・エラーハンドリング
あたりの思想が TypeScript とはかなり違っていて、「Webサービスを作るため」ではなく「考え方を鍛えるため」に学ぶ価値がある気がしています。この辺りお考えあれば教えていただきたいです!

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

この意見交換はまだ受付中です。

会員登録して回答してみよう

アカウントをお持ちの方は

関連した質問