旅行しながら働く ムラサメ研究所社長ブログ

主にゲームやプログラミングのログ

nodeを愛人にします(C++は使ってます)

まずC++

実は最近C++の仕事もしている
RustやJava、Swift、Objective-CFFIC++を使っているので
あとは Bitcoin等も経典はC++で書いているので 読む機会もある

ただ、なんでもC++という時代ではないので、その他の言語を そろそろ会社としてのメインを決めなきゃ

インフラ: AWS、Azure

言語ではないが
仕事柄AWSは外せない。ただAzureは無料枠があったり知人がパートナーなので使いやすかったりで
AWSとAzureを併用することになる
ただし インフラに関してはお客さんの都合で決まる事がおおいので、ベンダーロックインしないようにしたい

Webフロント: React、WebAssembly

フロントは基本的には JavaScript以外ありえないんだけど、その中でも
Reactが主流なのか、主流に乗っかる(専門外なので最近わからない)
ただ、C++得意なので WebAssemblyはガッツリやっておきたい

Webサーバ: node

これはとても悩んだ。選択肢が非常に多く それぞれメリット・デメリットがある
まず C++Javaは フルで作るには 言語として重すぎる(速度は最速だが)ので、オプションにする
PHPRubyPython等は 実行速度の遅さや、ノンブロッキングが出来ないので、パフォーマンスで却下
Rust は、良い言語だし使いたいところだが、まだWebサーバとして使うには時期尚早
Elixirは、時期尚早なのと 速度自体は遅い
Scalaはほんと言語もいいし 使いたいんだがビルド遅くて無理
C#、Swiftは ベンダーロックイン風なのできゃっか  Goは早いし楽だし けっこう使ったんだが、結局文法が古すぎて NG。Babelのようなトランスパイル作ればいいのか??
なんだかんだで nodeにした。ES6の文法にTypeScriptによる型セーフ、またWebAssemblyへのコンパイルと機能が良く
今後増えるであろう JavaScriptのネイティブ(Electron)もJavaScriptだし、最も便利な言語だ

アプリのネイティブ: Electron

これも場合により使い分ける事になるが、Webアプリであれば Electronメインにしようと思う
そうすれば サーバ、Webフロント、ネイティブアプリとすべてがJavaScriptになり、ライブラリが使い回せる
ただし、まだ評価できてないので、不満点が出るかもしれない
とはいえ、iOSAndroidのネイティブアプリは必要かもしれない(が、うちがやらなくてもいい)
他にもマルチプラットフォームなものとして Xamarin等があるが、調査追いついてないので今は候補に入らない

ゲームサーバ: node

Webサーバと理由は同じ
さらにゲームではWebSocketを使うことも多いので、nodeが使いやすいだろう

ゲームクライアント: UNITY

案件的に圧倒的に多いのがUNITYである
本当は Unrealに手を出したいのだが、情報に追いつけて無いので ぐっと我慢
もう少し会社の規模がそろってきたら Unrealに手を出したい

番外編

たとえばAIのような Pythonで書くのがベストな案件は 上記の限りにあらず