10年後のために今勉強しておきたい技術

息抜きを兼ねてQiitaで開催されている以下のイベントに参加してみました。

https://qiita.com/official-events/12fc7bacec894d33a981

※個人の好みが強い点、将来気が変わって別のことを学んだりといったことも結構起こると思いますがその辺はご容赦ください。また、仕事のものは別途学んだりはしますがその辺はあまり含みません（プライベートで興味を惹かれているものを中心に触れていきます）。

※執筆者はゲーム業界に在籍しており、現在データエンジニアをしているためその辺の色が強くなっています。

# 数学関係の強化

以前も何冊か数学関係の本を消化したり、コンピューターサイエンスの基礎本なども消化したりしてきましたが、機械学習含めたデータサイエンス周りを強化するにしろゲーム関係にしろ数学は強化して損はない・・・ですし学んだことは長持ちしそうなため復習や新しいことの勉強も含め数学方面を強化したい・・・という感じがあります。

最近は朝は仕事関係のクラウドやらの勉強・夜はOSSのコーディングと続いていて、以下の途中まで進めた本が途中なのですがそろそろ朝の時間が空きそうなのでその辺の本の消化を再開したい所です。

https://www.amazon.com/Doing-Math-Python-Programming-Statistics/dp/1593276400/

他にもゲームエンジン用の数学本なども世の中には出ているので、その辺もいつか齧ってみたいと感じています。仕事ではエンジンを自作して使ったりなどはしませんが、勉強としてその辺の知識は強化したいですし面白そうに感じます（難しくて買ってみても挫折するかもしれませんが・・・）。

Foundations of Game Engine Development, Volume 1: Mathematics 

https://www.amazon.com/Foundations-Game-Engine-Development-Mathematics/dp/0985811749/

※車輪の再発明的なところは賛否が分かれるとは思いますが、仕事でもありませんし車輪の再発明の効用的に勉強と理解の促進のために自分で手を動かして学んでいく・・・というのは個人的にはとても好みです。

[車輪の再発明の効用](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E8%BB%8A%E8%BC%AA%E3%81%AE%E5%86%8D%E7%99%BA%E6%98%8E%E3%81%AE%E5%8A%B9%E7%94%A8/)

# WASM

まだまだエコシステムなど含め発展途上で資料などもかなり少ない・・・という所感ですが、一方で出来ることの幅が広がりそうでWASMにも注目しています。

単純にできることが多くなる点、他の言語のものをブラウザで使えるという点もそうですし、計算リソースの分散と節約という面でも注目しています。

例えば私は社内横断で使われているBIツールなども仕事で扱っているわけですが、Pythonを使った計算処理や機械学習関係のものをブラウザで動かして皆さんのPCの計算リソースを使わせていただいたり・・・といったことも楽しそうだなと思っています。機械学習用に高いサーバーを使ったりとするよりもエッジAI的にユーザーの皆さんのPCの計算リソースを使わせていただいたりといったことを考えています（色々機械学習を使ったものを組み込んだりするときにもサーバーの追加コストを抑えつつとりあえず追加してみて利用状況などの様子を見る・・・といった実験的なことが予算申請などの面でやりやすそうですし）。

社員の皆さんのPCはゲーム会社ということもありほぼほぼのケースでメモリも人権的な32GBは最低限ありますし、CPU的なところもGPU的なところもそれなりには担保されている感じですので、トータルで考えれば結構な計算リソースにはなりそうだと思っています（ユーザーの皆さんをカバーするクラウドの計算リソースなどを確保しようとすると結構お金がかかってしまう一方で）。

この辺はRustなどと比べるとPythonだと結構ファイルサイズが膨れる・・・とは思いますが、BIツールなどの性質上社内利用ですし、通常のwebサイトで膨大にリクエストを捌かなければいけないとかちょっとでもファイルサイズを減らさないといけない・・・ということも無いので案外利用はアリなのでは？という感じがしています。

> Mozillaは、WebブラウザでPythonインタプリタや数値計算ライブラリのNumPyなど、Pythonの標準的なデータサイエンス環境をほぼそのまま実行可能にする「Pyodide」（パイオダイドと発音されているようです）を開発中です。
> ...
> つまりWebブラウザ上でPython言語およびデータサイエンス関連のPythonライブラリ、例えばNumPy、Pandas、Scipy、Matplotlibなどをそのまま使ってプログラミングできて、さらにWebGLのような高速なグラフィック描画なども呼び出せるようにする、というわけです。

https://www.publickey1.jp/blog/19/pythonwebassemblywebpythonpyodidemozilla.html

その他ブラウザ上だけで動く（サーバー側でJupyterの起動などをしなくて済む）簡易Jupyter的なものも出てきています。

https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa

その他去年Flash Playerなども終了してしまいましたが、デザインの学校で学生のころなどはFlash（現Animate）にはお世話になりましたし、昔はお仕事でブラウザゲームのクライアントエンジニアをしていた時期もあるのでその辺のものが少し復権してくるといいなとも考えています。例えばRustで書かれたRuffleなどには期待していますしGitHubスポンサーで少額ながら課金させていただいています。

https://trap.jp/post/1124/

https://github.com/ruffle-rs/ruffle

ネイティブアプリなどよりもwebの方が開発体験が良いケースもあり数年前から段々とweb方面の技術が勢いを取り戻してきたという面も少しあると思いますが、ゲーム関係でも似たような形で「ストア審査など無くすぐにアップデートを反映できる」「AppleやGoogleなどのストア税に縛られない（3割が高すぎる）」「OSごとに色々考えなくて済む」「ユーザーに取ってもブラウザですぐに遊べる」といった面はありますので、昔みたいにブラウザゲームなどももう少し元気を取り戻したらいいなと期待しています。5Gの普及で通信速度的な面でも状況が今後変わってくるかもしれませんし。

# Rust

WASMにも絡んでいるのですが、Rustももっと強化していきたい・・・と考えています（まだThe Rust Programming Languageの本を後半まで読んだくらいで仕事でも使ったりなどはしていません）。

https://www.amazon.com/Rust-Programming-Language-Covers-2018/dp/1718500440/

WASMだとRustが有力になりそう・・・という所感と、普段はPythonなどで仕事をしていますが稀にパフォーマンスが必要になるお仕事が発生してきた場合に使いたいという点、言語仕様自体も好きになれそうな印象を持っています。

メモリ関係のミスなどはしんどいですし、ガベージコレクションで破棄されないオブジェクトを追ってプロファイラとコードを睨めっこする・・・という作業が嫌いなのでその辺でもRustは良いなと思います。

ゲーム関係の本なども段々とAmazonの発売予定の本やTwitterでのタイムラインなどで目に付いたりもしてきているので楽しそうなのでその辺もいつか手を出したいなぁとぼんやり考えています。

Game Development with Rust and WebAssembly: Learn to run Rust on the web while building a game

https://www.amazon.com/Game-Development-Rust-WebAssembly-building/dp/1801070970/

# Blender

卒業したデザインの学校が2Dのグラフィックデザインやイラストなどの学科だったため3Dがほぼできない人（昔にpapervision3Dとかで遊んでいた程度）なのですが、Blender界隈も凄い活発になってきたなぁと思いますし（AutoDesk周りの値上げとかも影響しているかもですが）、Twitterとかでの皆さんの作品とかを眺めていても凄いなぁと感じています。

楽しそうなのでBlenderも学んでみたいという気持ちが出てきています。教材にも事欠かなさそうですし、なによりも無料というのもあります。

並行してデザイン職からエンジニア職に移ってから非常に長い期間が経っているのでデッサンとかもリハビリしたいなぁとぼんやり考えています。

# Unreal Engine

ちょっとUE5が凄すぎる・・・！と発表当時衝撃を受けたというのもありますが、Unreal Engine関係も趣味も兼ねてもっと強化したいと考えています（UE4の初心者記事をQiitaにいくつか投稿していますがその辺りで止まってしまっているので）。

NaniteもLumenも凄まじいなと。なんでこれが実現できるの？とまるで魔法のように感じています。

> Naniteの実装の技術的な詳細についてはこの記事では取り上げません。
何故なら、私がよく分かってないからです。
> 
> Naniteは魔法みたいなテクノロジーですが、技術的にはやはりメチャクチャややこしい事を沢山やってるようです。

http://soysoftware.sakura.ne.jp/archives/2314

この記事を書いている時点でUE5発表時のYoutube動画も1600万再生くらいになっていますし、世の中の皆さんに取っても大分衝撃的だと思います。

https://www.youtube.com/watch?v=qC5KtatMcUw

オリンピック開会式でも有名ゲームの音楽が流れましたが、それらの中でシリーズの新作が続いているゲームの新作はUnreal Engineが多いというのもあります。FF7リメイクからのFFしかり、ドラクエしかり、キングダムハーツしかり、テイルズしかり、エースコンバットしかりです（ニーアとかは独自エンジン？っぽいですが・・・）。

ドラクエ12やエースコンバットなどはもうUE5前提で採用なども動かれていらっしゃるようですし・・・。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">本日発表となった『ドラゴンクエストXII　選ばれし運命の炎』の新規開発スタッフの募集です。<br>本作はUnreal Engine 5にて開発中であり、さまざまな挑戦をしております。<br>一緒に新しいドラゴンクエストに挑戦してみませんか？<br>皆さんのご応募をお待ちしています！<a href="https://t.co/Pj4HzglQqI">https://t.co/Pj4HzglQqI</a><a href="https://twitter.com/hashtag/DQ12?src=hash&amp;ref_src=twsrc%5Etfw">#DQ12</a></p>&mdash; ドラゴンクエスト宣伝担当 (@DQ_PR) <a href="https://twitter.com/DQ_PR/status/1397832446935138309?ref_src=twsrc%5Etfw">May 27, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[Project Aces](https://project-aces.ilca.co.jp/)

# Three.js

Blenderとかを学んだらブラウザ用に色々3Dで遊んでみたい・・・という軽い気持ちになりますが、Three.jsもそのうち手を出してみたいなと考えています。何だかんだ11年くらいもう歴史があるみたいですし、洋書とかも含めると書籍などもたくさんあって教材には事欠かなさそうという所感です。

# VR界隈の技術

Oculus Quest2でアルトデウス含め何タイトルか遊んだ・・・くらいのVRにわか勢なのですが、UIやUX・演出などの面でVR界隈はとても面白そう・・・と感じています。市場規模的にはスマホゲームなどの方か圧倒的ではありますが、数年前と比べると大分VRゲームでも食べていけるようになってきたという印象がありますし、なにより技術的な面白さが大分あります。

仕事ではVR関係は携わる機会は環境を変えたりしない限り無いとは思いますが、プライベートの方ではいつか触ってみたいなぁ・・・とぼんやり考えています。

# Processing（p5.js）

wonderflや以下の書籍とかで育った世代なので単純に楽しそうという理由で将来Processing（p5.js）とかにも手を出したい・・・と感じています。

https://www.amazon.co.jp/Flash-Math-Physics-Design-3-0%E3%81%AB%E3%82%88%E3%82%8B%E6%95%B0%E5%AD%A6%E3%83%BB%E7%89%A9%E7%90%86%E5%AD%A6%E8%A1%A8%E7%8F%BE/dp/4797351411/