まえがき・諸注意

本ナレッジでは月額プランご契約者様向けにご用意しました教材に関して紹介させて頂きます。
教材の概要の紹介に合わせてプログラムのノウハウ・テクニックなどの知見を共有できればと思います。

諸注意としましてプログラミングの知識をある程度お持ちの方を対象としております。
そのため、本記事内において一般的なコンピュータ用語に関しては細かい説明は行っておりません。
わからない用語がありましたら、まずはご自身で調べて頂くか、メッセージ機能にて質問を頂けたらと思います。

自己紹介

2022年末からメンターを始めましたおとはです。
メンター歴の少ない私のことを少しでも知って頂けましたら幸いです。
MENTAのナレッジ機能を用いて私の学習手法や考え方なども紹介しておりますのでぜひ他のナレッジもご閲覧頂けたらと思います。

講習用アプリの概要・目的・利用例

講習用アプリ

講習用アプリはC++/C#/WPF(.NetCore)/XAML/DirectX12といった技術を採用しております。
プログラミングの学習の他にデバッグに関する知識・ノウハウの強化を目的としております。

対象者について

ゲーム開発・アプリ開発の会社へ就職したい方や業務委託契約を目指している方にお勧めです。
また、個人でツール等を開発したい方にもお勧めできる教材となっております。

アプリの基本機能

ツリービューより動作確認を行いたい項目を選択し、「Run」ボタンを押すことで機能の動作を学べます。

本アプリの学習利用方法の例

ご契約頂いたメンティーの皆様が学習として講習用アプリをどのように利用できるかを紹介いたします。
大まかに以下のような学習目的での利用を想定しております。

  1. C++プログラミング学習
  2. C#プログラミング学習
  3. XAML(WPF/.NetCore)の学習(データ仮想化)
  4. ダイナミックリンクライブラリの仕組みの学習
  5. 複数プロジェクト構成の学習
  6. デバッグ手法の学習
  7. ダンプファイルを使用したデバッグ手法の学習
  8. PIXを利用したパフォーマンス調査にCPU・GPUデバッグの学習
  9. 本ツールを拡張して、アプリやツールの開発

開発環境と講習アプリ構成について

教材の講習用アプリの開発環境やアプリの構成を簡単に紹介いたします。

開発環境と講習アプリ構成について

業務を意識した開発環境(システム)

システムはWindows OS

一般的に企業が利用しているシステムはWindowsが大半です。
私が勤めている会社も9割以上がWindowsで開発しています。

特にゲーム開発はWindowsOS上での開発を意識したツール群が主体です。
そのため、教材として用意しているアプリの開発環境はWindows OSとなります。

私の環境は、より高度な機能開発において制限が少ないWindows 11 Pro 64bit版を採用しています。
2025年10月中旬まではWindows10 Pro 64bitも利用可能です。
以降はマイクロソフトのサポートOSから除外されますので継続する利点は少なくなっていきます。

パソコンの推奨スペックについて

アプリ開発を行う上でのプログラミングを行う際には様々なことを行います。
そのため、ある程度高性能なCPU・GPUに余裕を持ったSSD容量・メモリ容量を採用されることを推奨します。

マイクロソフトの説明を抜粋しますと、4コア以上のCPUと16GB以上のメモリが推奨となります。
https://learn.microsoft.com/ja-jp/visualstudio/releases/2022/system-requirements

GPUに関しては最近のゲームの主流を考えますと、レイトレーシングが行えるGPUを推奨します。
nvidia製はRTX3000シリーズやRTX4000シリーズ、AMD製はRadeon RX 6000シリーズ以降が推奨となります。

SSDの容量はシステム以外に500GB以上を推奨します。
UnrealEngineなどのゲームエンジンを利用する場合は1TB以上で高速読み書きが行えるM.2 SSDを推奨します。
本格的にゲーム開発をしたい方はPCI Express Gen 4以上が採用されたマザーボードを使用したパソコンがおすすめです。
理由はM.2 SSDの転送速度が高くできグラフィックボードの性能を最大限発揮できるためです。

講師環境

私の環境は、以下の通りです。

  1. CPU : 14コア
  2. RAM : 64GB
  3. GPU : RTX2080
  4. SSD : 1TB

プログラミング環境はVisual Studio Community

Visual Studio Community

教材の講習用アプリのプログラミング環境はVisual Studio 2022 (Community)を採用しております。
Visual Studio Communityは無料でダウンロードして利用できます。
個人開発であれば製作したアプリを無料・有料問わず公開できるメリットは非常大きい魅力の一つです。

https://visualstudio.microsoft.com/ja/vs/community/

なお、企業の方がアプリを販売(商用利用)される場合はProfessional Editionを採用しましょう。

PIXを利用したGPU解析

CPU解析を用いたパフォーマンス計測、GPU解析を用いたレンダリング解析が学習できます。

PIXを利用したGPU解析

https://devblogs.microsoft.com/pix/download/

なお、私は業務でCPU系しか行わないため、GPU解析の知識は多くありません。
そのため、PIXのGPU解析を主体とした講師はパフォーマンスが下がりますのでご了承ください。

アプリ構成について

アプリ構成について

講習用アプリは「C#/XAMLにて画面を構成しているツール(エディタ)層」と「C++プログラミングで実装しているゲーム(ランタイム)層」で構成しています。

ツール(エディタ)層

C#/XAML/.Net Coreといった技術で実装しているエディタ層です。
中~大規模のWindows向けアプリの開発が可能です。
MVVMといった技術で構築されることが多く仮想化などを学ぶことができます。
MAUI/UWP/WPFといったアプリ開発で利用するXAMLを採用しています。

本アプリは想定した構成ではありませんが、スマフォ向けのアプリを開発する際に役に立つ技術も使用しております。

ゲーム(ランタイム)層

C++とDirectX12を利用したゲーム開発用の技術を使って実装しているランタイム層です。
シェーダファイル(hlsl)を読み込みし、バーテックスシェーダとピクセルシェーダーを使ってシンプルなレンダリングを行っています。
DirectX12を使っておりますので、GPUを意識したプログラミングが学べます。

また、マルチスレッディングについても学べます。
メインスレッド(エディタ)のとレンダリングスレッド(ランタイム)の2種類が独立して動作しています。

様々な不具合再現機能を搭載

ツール機能として、ツリービューにて選んだ機能を「Run」ボタン押下をきっかけに実行することで様々な不具合を再現できます。
ゲームやツールの開発中に発生しやすい、メモリ破壊サポート外の操作GPUハング例外の発生など実装しています。

不具合調査の進め方やテクニックをレクチャーさせて頂く際の教材として有効活用できる機能となっております。

アプリの処理が続行できない例外や不正メモリアクセスといった所謂 クラッシュ と呼ばれる事象を引き起こした際にダンプファイルを自動生成する仕組みが実装されています。
このダンプファイルを使用することで、利用者環境で発生した不具合の調査効率を向上させることができます。
そのため、他の環境で起きた問題を調査するためのデバッグテクニックを学ぶことができます。

主な学習の進め方について

主な学習の進め方について

  1. メンティ様:ご相談を頂く
  2. 講師(おとは):ご要望に合わせてプランのご提案
  3. メンティ様:ご承諾の上プランを申請
  4. 講師(おとは):ご成約確定
  5. メンティ様:Slack招待用のメールアドレスをご連絡
  6. 講師(おとは):Slackへご招待(有料契約しているワークスペースへゲストとして招待)
  7. メンティ様:Slackのワークスペースへ参加
  8. 講師(おとは):共有サーバーに関する情報を提供
  9. メンティ様:共有サーバーに利用するアカウントIDをご連絡
  10. 講師(おとは):共有サーバーの権限設定・アカウント準備・アプリ等の教材へのアクセス方法をお知らせ
  11. メンティ様:共有サーバーにアクセスし教材をダウンロード・環境準備・動作確認
  12. メンティ様:Slack上で質疑応答、通話希望の場合は事前予約のご相談
  13. 講師(おとは):ご予約日にSlackパドルミーティングによる通話でレクチャー対応

契約料金に応じた優遇対応

一般公開している月額プランは通常料金となっております。
通常料金を超える料金でご契約を頂いたメンティ様は優遇対応とさせて頂きます。
料金以上の処遇となるように優遇させて頂きますが内容はご契約前に相談の上、対応させて頂きます。

優遇内容の例

  • 非公開情報の提供(ソースコード・アプリ・資料など)※個人開発データに限る
  • 通話予約の優先対応
  • 月々の通話可能時間の延長
  • 新規サンプルの製作
  • Slackアプリの提供(OpenAI API)