みんなのちからになりたい

コピペでブログラムつくっていきたい

今日の巡回

1. 【初心者歓迎】C#だけでWebゲームを1時間で作る javascriptやAJAX不要!Blazorの凄さを体験する

C#のみでJavaScriptAJAX不要でWebゲームを作成する方法を解説。Blazor ServerWebSocket通信により、@onclickイベントなどでリアルタイムにUI更新が可能。箱入り娘パズルゲームの実装を通じて学ぶ。

主なトピック:

  • Blazor Server: WebSocketを使った双方向通信でC#のみでリッチなWeb UIを構築できるフレームワーク
  • WebSocket: HTTPリクエスト不要でリアルタイム通信を実現、オンラインゲームなどで使用される技術
  • @page / @code: HTMLとC#コードを同一ファイルで記述できるRazor構文
  • イベント処理: @onclickや@onmousemoveなどでクライアント操作をサーバー側で処理
  • CSS Grid: 盤面レイアウトの実装に使用
  • その他: Visual Studio、インタラクティビティ型、StateHasChanged etc...

(コード例あり)


2. NHK「新プロジェクトX」プレステ開発の舞台裏に迫る。10月11日20時放送

NHK総合で10月11日20時放送の「新プロジェクトX」にて、プレイステーション開発の舞台裏を特集。90年代初頭のリアルタイム3DCG実現という無謀な挑戦と、異端の技術者たちの熱きドラマを紹介する番組告知。

主なトピック:

  • プレイステーション: 発売から約30年、ソニーのゲーム事業の始まりとなった革命的ゲーム機
  • 3D技術: 2Dゲーム全盛期に臨場感あふれる3Dを導入した革新的技術
  • 半導体開発: 長年日の目を見なかった技術がゲーム機開発で開花
  • ソニーの変貌: "エレキの雄"から世界的エンターテインメント企業への転換
  • その他: 異端の技術者、組織の垣根を超えた開発 etc...

3. uvxで誰でも使えるPython自作ツールを手軽に公開する方法

uvxを使えばPyPI登録不要GitHubから直接Pythonツールを実行可能。--fromオプションでリポジトリ指定し、pyproject.tomlconsole_scriptsエントリポイントを設定すれば、誰でも簡単に使えるツールを公開できる。

主なトピック:

  • uvx: Pythonパッケージマネージャーuvの機能でPyPI登録せずGitHubから直接実行可能
  • --from オプション: uvx --from git+https://github.com/user/repo tool-nameGitHubリポジトリを指定
  • console_scripts: pyproject.tomlでCLIエントリポイントを定義し簡潔なコマンド実行を実現
  • uv tool install: 頻繁に使うツールをグローバルインストールして常時利用可能に
  • MCPサーバ: 自作MCPサーバの設定もuvxで簡略化、絶対パス不要で環境依存を回避
  • その他: uv tool list/upgrade/uninstall、PyPI登録 etc...

(コード例あり)


4. 【C#】C# 14 / .NET 10 の新機能 (RC 1 時点)

C# 14と.NET 10のRC 1時点での新機能を紹介。Extension membersFirst-class Span Typesなどの言語機能、LINQLeftJoin/RightJoinSystem.Text.Jsonの強化など、広範な機能追加を解説。

主なトピック:

  • Extension members: 拡張メンバーによる既存型の機能拡張
  • First-class Span Types: Span型の第一級サポートで高パフォーマンス処理を実現
  • LINQ拡張: LeftJoin/RightJoin/Shuffle/Sequenceなど新しいクエリ操作を追加
  • System.Text.Json: プロパティ重複禁止、JsonSerializerOptions.Strict、PipeReader対応など強化
  • slnx: 新しいソリューションファイル形式でslnを置き換え
  • その他: field keyword、Null-conditional assignment、Async LINQ、WebSocketStream etc...

5. Microsoft Agent Framework (C#) 入門 その1「雑感」とハローワールド

Microsoft Agent FrameworkはSemantic KernelのAgent機能とProcess Frameworkを整理し、Microsoft.Extensions.AIベースで再設計された新フレームワークChatClientAgentでシンプルにエージェント作成でき、マルチエージェント機能も充実。

主なトピック:

  • Agent Framework: Semantic Kernelから進化、Microsoft.Extensions.AIベースでAgent機能に特化
  • ChatClientAgent: IChatClientベースでエージェント作成、ツール自動呼出しやチャット履歴管理が簡単
  • マルチエージェント: シーケンシャル/ハンドオフ/グループチャットなどのパターンを提供
  • AgentWorkflowBuilder: ワークフロー定義と実行、エージェントの入れ子も可能
  • Semantic Kernelの課題: 破壊的変更回避のため複雑化、新フレームワークで整理
  • その他: InProcessExecution、WebSocketベース、Azure OpenAI etc...

(コード例あり)


6. C#のrecord型で一意な識別子を持ちたい

record型エンティティを実装する試み。EqualsとGetHashCodeをオーバーライドし一意な識別子(Id)での同一性判定を実現。ただし推奨はせず、特殊用途(CQRS Read側など)に限定すべきと結論。

主なトピック:

  • EntityRecordBase: record型でエンティティを実装するための抽象クラス、Id比較に特化
  • 一意な識別子(Id): EqualsとGetHashCodeをIdのみで判定するよう変更し同一性を保証
  • IComparable実装: ComparableEntityRecordBaseでソート機能を追加、自然順序での並べ替え
  • 制約と課題: record本来の値による等価性を崩すため直感的でなく認知負荷が高い
  • 推奨しない立場: 通常はclassで実装すべき、特殊用途のみrecord検討
  • その他: 値オブジェクト、プライマリコンストラクタ、ドメイン駆動設計 etc...

(コード例あり)