サーバーサイドのプログラミング言語何がいいの問題
要件
俺はルーターしか面倒みないから…みたいな感じがいい
なんかいい感じのテンプレートエンジンがある
単体で普通に使えるやつ
WebSocketでリアルタイムに更新されてくチャットサービスが作れる
裏のpub/subはRedisとか
まあリアルタイム更新ありのチャットサービス作れれば私の作りたいものだいたい作れるでしょうという目論見
なんとかして RDBMS (できれば PostgreSQL、MariaDB でもいい)のレスポンスに型を付けられる
Go の sqlx とか Rust の sqlx とかみたいにstructにデシリアライズでもよし
普通のORMがあってもよし
型がそれなりに静的に付く
バグ出さないみたいな方向でもそうだし、開発時に補完が効きやすいみたいな方向にもうれしい
null安全だとさらによい
auto import が欲しいとまでとは言わない
プロダクション環境でメモリをあんまり食わない
数人が使ってる時でも 〜100MB くらいに収まってほしい
うちのサーバーのメモリは少ないので…
Dockerにうまく収まる
alpineベースのイメージがあるとか
いい感じにライブラリと自分のコードのビルドが分割できるようになってるとか
ライブラリへの依存関係の変化がない時にDockerのキャッシュがあれば自分のコードのビルドだけで済むとうれしい
コンパイルがそれなりに早い
GET / で Hello, world! 出すだけのイメージをクリーンな状態から3分ぐらいで docker build できてほしい
試した言語
Go
err != nil がつらい
\`json:"hoge" form:"hoge"\` みたいに二回同じことを書かないといけないのがちょっとめんどかった
がまあこれはわりとどうでもいい
TypeScript
express とか koa とか中身がJSなのがつらい
anyが滲み出てくる
h3 がナウい
zod使え
(Swiftのextensionみたいなことがまともな手段でできないのがちょっとめんどいがまあこれはどうでもいい)
Rust
コンパイルが遅い
所有権周りでたまに変な解釈されてちょっと悩むことになる
Python
そこまで静的に型が付くわけでもない
というか、型が付くライブラリ付かないライブラリがある
TypeScriptで@typesなかった時みたいな…
Swift
コンパイルが遅い
Swift 6 で async/await が来そうなので今やるのアレそう
来た!!!!! Swift 5.5
Dockerイメージ alpine ベースの物がないので最終成果物が他の言語と比較してでかくなりがち
そもそも slim で300MBぐらいあるし…
C#
ASP.NET MVC
なんか宇宙みたいな記法が突然出てくる
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
何モン?
テンプレートエンジンをいい感じにする情報を見つけられなかった
VS Code でデバッグ実行する時にタスクでビルド回すからいちいちアクティブターミナルがビルドログになるのうざい
これは VS Code が悪い
設定ないんだっけ?
何でもかんでも namespace と class の中に書くのでちょっとネストが深くなる
Cmd+Clickでライブラリのソースに飛べないのはちょっと不便
まあこれは TypeScript でもそうだけど
メソッドとかプロパティがPascalCaseみたいな風潮なのがちょっとだるい
まあ Go も似たようなもんだしそこまでアレではない
試してないけどだめそうなやつ
最終的にJVMのバイトコード吐く系の言語 (Java, Scala, Kotlin, etc...)
メモリ掴んで離さないイメージがあるのでメモリケチりたいシチュと合わなさそう
あとで試す