2026-03-27 22:00:07
諏訪子
rant
gamedev
embedded

【プログラミング】グラフィックスと組み込みプログラミングが好きな理由

此の記事は何度も書こうと思っていたのですが、ウェブ開発やスマホアプリ開発に対して過度に偏った意見や否定的な印象を与えない様、言葉を選ぶのに苦労していました。
此れを書く為の又別の試みであり、今回こそ公開出来る事を思います。

ウェブ開発で正社員として19年間働いた後、先月があたしのウェブ開発者としての最後の日と成りました。
昨年は既にフリーとしては辞めましたが、事業主として未だ収入がない間、生活費を稼ぐ為にウェブ開発の仕事を続けざるを得ませんでした。
事業主としては、ゲームが開発中である為、未だ独立した収入はありません。
然し、会社の組織再編により解雇された事で、結果的にあたしが本当に楽しめる分野で働くという目標が加速されました。
此の出来事により、現在進行中のスペースインベーダーチュートリアルシリーズを一時停止し、Microsoft GitHubリポジトリをロックし、ブログ記事の執筆を減速させて、就職活動を最優先にする事にしました。
そして、あたしは二度とウェブ開発の仕事はしないと決意しました。
ウェブ開発をする唯一の機会は、Little Beastのメンテナンスのみです。

3月いっぱい、就職活動は本当に地獄でした。
ポートフォリオがどれだけ良くても、記事がどれだけよく書けていても、証明できる経験がどれだけあっても、何処でも落とされ続けました。
此れらの物が全く評価されていないと思い、殆どウェブ開発に戻りそうに成りました。
然し今週に入ってから、ようやく面接をしたいという企業が一気に増え始めました。
其処であたしは、自分の経験やポートフォリオ等に問題はなかったのだと気づきました。
問題は、ちょうど其の時期が企業が新卒を優先する時期だった為、転職希望者が完全に後回しにされて頂けだったのです。
非常に失礼ですが、世の中とはそういう物です。

此の記事では、あたしが働くのが大好きなプログラミングの領域と、其の理由について話します。

プログラミングの領域

エンジニアは皆が同じ様に作られているわけではありません。
其々のプログラミング領域は、業界全体の中で独自の位置づけを持っています。
此れまで沢山取り上げてきたウェブ開発、ゲーム開発、デスクトップ開発、十分に扱ってこなかったモバイル開発や組み込み開発、屡々見過ごされがちなOS開発やコンパイラ開発、そしてAI開発の様な全く新しい領域もあります。

各領域には更に多くのサブドメインがあります。
例えばゲーム開発者には、ゲームプレイプログラマー、エンジンプログラマー、グラフィックスプログラマー、AIプログラマー(此処ではLLMではなくNPCの事)、等があります。
ウェブ開発ではバックエンドプログラマー、フロントエンドプログラマー、セキュリティプログラマー等。
組み込みではマイコンプログラマー、アプリケーションプログラマー、ロボットプログラマー、車両プログラマー等があります。
他の領域については、あたし自身が十分な経験を持っていない分野を判断したくないので触れません。

低レベル理解

此のブログを暫く読んでくださっている方は既にご存知だと思いますが、あたしは低レベルエンジニアリングが大好きで、抽象化を本当に嫌っています。
ウェブ開発は、特に現代のウェブ開発では、極めて高レベルの抽象化だらけです。
あたしはコンピュータが実際に何をしているのか、どう動いているのかを本当に理解したいです。
19年間のプログラミング人生の中で、AI開発を除くほぼ全ての領域を試してきました。
ゲーム、ウェブサイト、電子工作、オペレーティングシステム、カーネル、モバイルアプリ、サーバーデーモン、デスクトッププログラムやツール、ゲームエンジン、ウェブフレームワーク、ライブラリなどを作ってきました。
唯一触れた事のないのはLLMやブロックチェーンだけです。
此れにより、自分が最も楽しめる事が何なのかを評価する事が出来ました。

答えは、グラフィックス、物理演算、そして電子工作です。
下記3つに共通している点の通りです:

  1. 全て数学を必要とする
  2. 全て低レベル理解を必要とする
  3. 新世代の開発者の多くが一生触れることのない知識である
  4. どれも非常にやりがいがあり、天才になった様な気分にさせてくれる
  5. ビジネスよりカスタマー向けの要素が強い
  6. 此の3つのサブドメインで最も面白い事が出来る

此れは皮肉な話です。
何故なら学生時代は数学が大嫌いで、中退後も10年以上其の嫌悪感が続いていたからです。
然し、グラフィックス、物理演算、電子工作を実際に経験した今、あたしは数学が大好きに成りました。

結局の所、全てのプログラミング領域やサブドメインは、何かを成し遂げた時にある種の達成感があります。
然し、特に此の3つの分野でカッコいい事を成し遂げた時程、本当に勝者になったと感じる物はありません。

あたしは此れらの分野を最も愛している理由を、全てに共通するポイントで説明しました。
其れでは、個々の分野についてもう少し深く掘り下げていきましょう。

グラフィックス

正直に言うと、CG(コンピュータグラフィックス)は非常に難しく、通常はゲーム開発の中で最も難しい部分です。
然し画面に何かを描画出来る様に成ると、物凄くカッコいい事が出来る様に成り、直ぐに皆で共有したく成り、数週間は黙れなく成ります。
グラフィックスプログラミングこそが、あたしの数学への嫌悪感を本物の愛に変えてくれたのです。
又、若しグラフィックスが数学をこんなに面白くするなら、何故学校は数学の授業とグラフィックスプログラミングを結びつけないのだろう?と疑問に思いました。

特に今はVulkanやDirectX 12の様な現代的なグラフィックスAPIが利用可能になった事で、GPUの仕組みを学ぶのが此れまで以上に簡単になっています。

物理演算

物理演算は、残念ながら近年最も脇に追いやられている分野の一つです。
Unreal EngineやUnityの様な主要なゲームエンジンには最初から物理エンジンが付属しており、自分でゲームエンジンを作る場合でも、多くの開発者はBullet Physics SDKやPhysX等の既存のライブラリを使ってしまいます。
此れは残念な事です。
自分で物理シミュレーションを作るのはあたしにとって非常に楽しかったからです。
特に、自分が書いたコードでグラフィックスと物理が相互作用するのを見るのは最高に楽しかったです。
其れ程までに楽しかったので、殆どの人が敬遠する微積分を学びたいと思う様に成りました。
物理エンジンを作る際に、本当に微積分を知る必要が出てくるのは其の時だけです。

電子工作

電子工作はあたしが最も最近経験した分野です。
1月にSTM32 Nucleoボードを使って独学で初めて触れ、其の後Winスクールに通い、其処で初めてSTM32 DiscoveryとArduinoを使い、1ヶ月後に卒業しました。
現在はCAN通信のコースを受講中で、同じボードを使いながら、複数のボードを連携させて自動車が機能する様にする内容です。
最初はロボットを動かしていましたが、今は車両を動かしています。
此れを読むだけでもカッコいいと思いますが、実際に自分で体験すると本当に最高に楽しいです!

ロードマップ

此れから2年間は忙しい予定です。
再び就職活動をしている最中ですが、多くの資格取得も控えています。
グラフィックス、物理演算、電子工作が大好きなので、此れらの分野の資格を取得する事にしました。
ウェブ開発では一度も考えた事のない事です。

此れらの資格は国内のものと国際的なものが混ざっています。
国際的な物にはC++ Institute(CLA, CPA, CLP, CPP)とARM Embedded Systems Essentialsがあります。
国内の物にはWinスクールの組み込み開発(既に修了)、CAN通信(現在受講中)、GC-ARTS(GCエンジニアと画像処理エンジニア)、ETEC(2級と1級)があります。
此れらは2026年と2027年にかけて分散して取得する予定です。
此れらの資格を、此のブログでチュートリアルシリーズを提供する際の更なる信頼性向上にも活用出来ればと思っています。
従って、実際に仕事で使うかどうかに関わらず、此れらの資格を取得するモチベーションが高いです。
正社員の仕事で使わなかったとしても、076スタジオで活用します。

以上