nodeを愛人にします(C++は使ってます)
まずC++
実は最近C++の仕事もしている
RustやJava、Swift、Objective-CのFFIでC++を使っているので
あとは Bitcoin等も経典はC++で書いているので 読む機会もある
ただ、なんでもC++という時代ではないので、その他の言語を そろそろ会社としてのメインを決めなきゃ
インフラ: AWS、Azure
言語ではないが
仕事柄AWSは外せない。ただAzureは無料枠があったり知人がパートナーなので使いやすかったりで
AWSとAzureを併用することになる
ただし インフラに関してはお客さんの都合で決まる事がおおいので、ベンダーロックインしないようにしたい
Webフロント: React、WebAssembly
フロントは基本的には JavaScript以外ありえないんだけど、その中でも
Reactが主流なのか、主流に乗っかる(専門外なので最近わからない)
ただ、C++得意なので WebAssemblyはガッツリやっておきたい
Webサーバ: node
これはとても悩んだ。選択肢が非常に多く それぞれメリット・デメリットがある
まず C++やJavaは フルで作るには 言語として重すぎる(速度は最速だが)ので、オプションにする
PHP、Ruby、Python等は 実行速度の遅さや、ノンブロッキングが出来ないので、パフォーマンスで却下
Rust は、良い言語だし使いたいところだが、まだWebサーバとして使うには時期尚早
Elixirは、時期尚早なのと 速度自体は遅い
Scalaはほんと言語もいいし 使いたいんだがビルド遅くて無理
C#、Swiftは ベンダーロックイン風なのできゃっか
Goは早いし楽だし けっこう使ったんだが、結局文法が古すぎて NG。Babelのようなトランスパイル作ればいいのか??
なんだかんだで nodeにした。ES6の文法にTypeScriptによる型セーフ、またWebAssemblyへのコンパイルと機能が良く
今後増えるであろう JavaScriptのネイティブ(Electron)もJavaScriptだし、最も便利な言語だ
アプリのネイティブ: Electron
これも場合により使い分ける事になるが、Webアプリであれば Electronメインにしようと思う
そうすれば サーバ、Webフロント、ネイティブアプリとすべてがJavaScriptになり、ライブラリが使い回せる
ただし、まだ評価できてないので、不満点が出るかもしれない
とはいえ、iOS、Androidのネイティブアプリは必要かもしれない(が、うちがやらなくてもいい)
他にもマルチプラットフォームなものとして Xamarin等があるが、調査追いついてないので今は候補に入らない
ゲームサーバ: node
Webサーバと理由は同じ
さらにゲームではWebSocketを使うことも多いので、nodeが使いやすいだろう
ゲームクライアント: UNITY
案件的に圧倒的に多いのがUNITYである
本当は Unrealに手を出したいのだが、情報に追いつけて無いので ぐっと我慢
もう少し会社の規模がそろってきたら Unrealに手を出したい
番外編
たとえばAIのような Pythonで書くのがベストな案件は 上記の限りにあらず