「C#」の記事一覧
-
ゲームエンジンを使わない2025年のゲーム開発
2025-05-20 05:54
科学・技術20年の経験を持つインディー開発者が、UnityやUnrealといった商用エンジンを使わずにゲームを作る理由と手法を語っています。C#とSDL3を活用した独自ツール群の構築、ImGuiによる軽量なエディタ開発、FMODによる音声制御、Linux環境での開発など、現代のオープンソース技術の進展により、大規模エンジンに依存しない柔軟で自律的な開発スタイルが可能であることを示しています。特に小規模チームにとって参考になる実践例です。
-
C#でスーパーファミコンのROM開発が可能に
2025-05-02 11:29
IT・ネット.NET言語でスーパーファミコン(SNES)のROMを開発可能にするライブラリ「DotnetSnes」が公開されました。C#コードをC言語にトランスパイルし、PVSnesLib SDKを通じてROM化する仕組みです。動的メモリ割当など一部制限はあるものの、実機動作可能なゲームを開発できます。Linux環境でのビルドが推奨されており、Windows利用者はWSLを活用する必要があります。「Hello World」や「LikeMario」などのサンプルも含まれ、.NET開発者がレトロゲーム開発に挑戦できる実践的な環境が整っています。
-
1966年のELIZAをC++で再現
2025-05-17 16:58
IT・ネットMITのジョセフ・ワイゼンバウムが1966年に開発した初のチャットボット「ELIZA」を、作者がC++で忠実に再現しました。この実装では、オリジナルのスクリプトファイル形式を読み込んで対話を行います。ソースコードが発見された後には機能の修正や拡張も行われ、JavaScript版やテレタイプへの接続、チューリング完全性の実証も含まれています。ELIZAの歴史的意義と再現への情熱が伝わるプロジェクトです。
-
C++の初期化はなぜかくも複雑なのか
2025-05-15 21:27
科学・技術C++の初期化にはdefault, value, zeroなど多様な形式があり、コードのわずかな違いが未定義動作を引き起こす可能性があります。例として、同じ構造体に対して=defaultの記述位置の違いが、初期化されるかどうかに影響し、未定義動作につながる点が解説されています。C++の仕様上の微細な違いが安全なコードと危険なコードの差となるため、明示的な初期化が推奨されます。
-
C++でジャンプテーブルを実現するメタプログラミング手法
2025-05-13 20:45
科学・技術この記事では、C++でバリアディックなswitch文を実現するための複数の手法を紹介。ジャンプテーブルやディスパッチテーブル、マクロ展開、再帰的switch、fold式などを用いた実装例を比較し、コンパイラ最適化の観点からも検討されている。C++26で導入が検討されている拡張ステートメントによる最適化の可能性にも触れ、現代的なC++における高速かつ柔軟な分岐処理の実現手段を探る内容となっている。
-
C++の型変換とオーバーロード解決の複雑さを解剖
2025-05-09 03:27
科学・技術C++のオーバーロード解決における「より適した(better)」変換の意味について、標準変換シーケンスと資格変換(cv-qualification)を中心に詳細な検討が行われています。ポインタの多重構造やnoexcept関数ポインタなどの例を通じて、変換ランキングや似た型の評価方法を整理し、曖昧なコンパイルエラーの理由や設計の背後にある意図を解明します。C++の型システムの柔軟性とその代償としての複雑さが浮き彫りになっています。
-
CLionが非商用利用に無料開放、学習者やOSS開発者を支援
2025-05-07 12:18
IT・ネットJetBrainsはC/C++向け統合開発環境「CLion」を非商用利用に限り無料で提供することを発表しました。これにより、学生、趣味の開発者、オープンソースプロジェクトの参加者などがライセンス費用を気にせず利用可能になります。非商用ライセンスでは匿名の使用統計が収集される点に注意が必要です。すでにRustRoverやWebStormなどでも同様の方針が取られており、今回の措置は開発者コミュニティへのさらなる支援を目的としています。
-
C++の問題から見えるRustの強み
2025-05-06 17:51
科学・技術長年C++を使ってきた筆者は、Matt Godboltの講演を通じて、Rustがいかにコードの安全性と可読性を高めているかに気付きました。C++では型安全性を保つために多くの工夫が必要でしたが、Rustではコンパイラが間違いを事前に検知し、安全なAPI設計を自然に促します。特に値の型制限やエラーハンドリング、コンパイル時チェックによって、実行時のバグや混乱を未然に防ぐ設計がされています。Rustは単なるメモリ安全性以上の利点を持つ言語です。