11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッカソンでWebサービスを開発するときの技術スタック比較③バックエンド編

Posted at

はじめに

ハッカソンでWebサービスを開発するときの技術スタック比較第3弾、バックエンド編です!

最近ハッカソンにたくさん出て、いろんな人の技術スタックを見てきたので、ハッカソンで成績を残しやすい という観点から、Webサービスの技術スタックについてまとめていこうと思います!

注意:自分の中で技術スタックはある程度固まっていて、採用しないスタックについても書いています。それらについては、採用しなかった理由 として参考にしていただけると。

BaaS

これに関しては前記事「ハッカソンでWebサービスを開発するときの技術スタック比較②インフラ・デプロイ編」に記載がありますが、基本FirebaseかSupabase使っとけ、という感じです。使い分けの観点は「RDB使うかどうか」で良いと思います。

バックエンド

ここは本当に選定の幅が広い!あと僕がそんなに詳しくない!選択肢をたくさん書いていきます。

Go

強いチームが使いがちだけど、Go使ったからって勝ちに繋がるわけじゃない。 というのも、デプロイの問題があるからです。

Lambdaみたいにサーバーレスでデプロイすると料金的にも安定的にもすごく良いのだけど、GoだとVPS(virtual private server)を用意しなきゃいけない。(EC2みたいなこと)DBも含めると開発期間が長ければ長いほど料金がかかる。
十分資金があって開発期間も短い、終わった後継続開発しない、とかなら、EC2とかで良いのかもしれません。(Oracle Cloudって選択肢もあるけど無料のマシンは絶望的に弱い)

選定理由として、GORMによるORM構築、並列実行、ビルドファイルの小ささ、高速さなどがあります。

フレームワークとしてGin、Echoとかがあります。(正直この辺はあんまりハッカソンで目立たない)

FastAPI

これはよくみる。 最近はGoの次に見る(BaaSにバックエンドを依存しない強めチームはすぐにGoに手を出すので偏りが生じる)
Pythonで書けるのが嬉しかったり、開発が早かったり。小規模なAPIを建てるのにはすごい早くて、ハッカソン向きとも言えるでしょう。APIドキュメントが自動生成されるのもすごい良い。

また、最近だとLangChain、LangGraphを使いたいモチベがあったりするので、Pythonで両方かける、っていうのは良い点かもです(LangChainは最近javascript版も公式から出ています)

NestJS

TypeScriptで開発できるバックエンド っていうのは、Web開発においては一定の良さを持つと思ってます。Angular likeで、堅牢ってのが一番最初にあると思う。 Node.jsよりもなんかやってる感あるよね。

将来的な大規模開発にすごい向いてるってのもあったり、vercelデプロイが楽だったり。速度が欲しいハッカソンではvercelデプロイが強いってのはやっぱりあります(vercelが本当に、ありがとう。)

Ruby on Rails

廃れてしまった。
ActiveRecordが本当に優秀だったり、テスト生成(RSpec)やルートファイルの分割だったりがあるので、いいフレームワークなんだけど、良くも悪くも大規模開発向きなんですよね。ハッカソンではあんまり見ない。

まとめ

バックエンドの技術選定は本当に多種多様だし、僕もいろんな理由で使い分けています。
どんな特性があり、どのような開発に向いていて、どのような周辺技術があるか、どれくらい開発期間があるのか、を考えて、最適な技術選定をしましょう。

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?