【Python】参照渡しなんてなかった

検索すると「Python には参照渡しがある」という情報が多数ヒットするんですが、正しくは以下の記事の通り。

参照渡しと同じことをしたい場合はどうすれば良いのか?

Python は戻り値を複数返せる

20年以上前に MIDI でアレンジした悪魔城ドラキュラⅡの BGM が出て来た

KONAMI(C)

引っ越しで荷物を整理していたら、古い USB メモリが出て来たので、中身を見てみたら、20年以上前(1999年のものもある…)に作った MIDI ファイルが出てきました。

USB メモリが普及するまでは CD-ROM や DVD-ROM でバックアップしてきたファイルです。
USB メモリにコピーしたことをすっかり忘れていました。
当時のデータは、もうなくなったものだと思っていたので、ビックリするやら、嬉しいやら、恥ずかしいやら…。

『悪魔城ドラキュラⅡ~呪いの封印~』の BGM を MIDI でアレンジしたものや、オリジナル楽曲も入っていました。
せっかくなので、バックアップも兼ねて公開しようと思います。

“20年以上前に MIDI でアレンジした悪魔城ドラキュラⅡの BGM が出て来た” の続きを読む

【C#】OpenAI の GPT 3.5 を使って AI とチャットするプログラムを作る【.Net Standard 2.0】

興味があったので、こちらの記事を参考に ChatGPT と対話するコンソールアプリを C# で作りました。
今回作成したのは、OpenAI との通信部分だけで、アバターのモデル表示などは扱っていません。

本稿では、OpenAI の API を利用し、GPT 3.5 で通信する方法、OpenAI の API を利用する際の注意点などについて説明します。
本稿に掲載しているソースコードは、以下の環境で動作確認しています。

Visual Studio 2022
.Net Standard 2.0
C# 7
Windows 11 Home

“【C#】OpenAI の GPT 3.5 を使って AI とチャットするプログラムを作る【.Net Standard 2.0】” の続きを読む

【Unity】C#スクリプトをDLL化する手順

この記事では Unity の C# スクリプトをDLL化する手順と注意点について説明します。

執筆時に扱った Unity のバージョンは 2021.1.6f1 です。
プラットフォームは Windows 10 (64ビット版) を対象としています。

2023/10/15 修正
Visual Studio 2022 ではターゲットフレームワークを .Net Standard 2.0 に変更する方法が違うので記事を修正しました。

“【Unity】C#スクリプトをDLL化する手順” の続きを読む

【デザインパターン】アダプター(Adapter)パターンの本質とは?原点に戻って考え直してみる。

この記事は、Design Patterns(いわゆる GoF 本)の一次ソースである原典にあたり、GoF が提唱したデザインパターンの本質を理解しようと試みた記録です。

今回はアダプターパターンについて調べます。

原典は Amazon で購入できます(Kindle 版もあります)。
※画像をクリックすると Kindle 版の購入ページに飛びます(アフィリエイトではありません)。

“【デザインパターン】アダプター(Adapter)パターンの本質とは?原点に戻って考え直してみる。” の続きを読む

【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】

.Net アプリ パス…で検索すると、だいたい以下の4つのメソッドとプロパティが見つかります。
どの記事を見ても、どれを使っても良い…みたいなことが書いてあります。

  • Application.StartupPath
  • Assembly.GetExecutingAssembly().Location
  • AppDomain.CurrentDomain.BaseDirectory
  • Environment.CurrentDirectory

でも、ふと疑問がわきます。

「どれを使っても同じ結果を得られるなら、なんで4通りもの方法が用意されているんだろう?」

同じものを4つに分ける意味はありません。
本当に「同じ」なら、1つあれば良いはずです。

実はこれ、作成するアプリや目的によって使い分ける必要があります。

“【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】” の続きを読む

【UE5】レベルエディタにウィジェット(UMG)を表示する方法【c++】

マニアックなことに挑戦する機会があったので、技術共有したいと思います。

ゲームを起動中に UMG を表示するのは簡単ですが、ゲームを起動していないときに UMG をレベルエディタに表示するのは面倒工夫が必要でした。

以下の環境で動作確認しています。

Unreal Engine 5.1.1
Visual Studio 2022
Windows 11 Home

“【UE5】レベルエディタにウィジェット(UMG)を表示する方法【c++】” の続きを読む

【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】

こちらの記事で、ウィジェットブループリントと C++ のソースコードをバインドする方法を紹介しましたが、バインドできない状況がまれにあります。
そんなときに、ブループリントの変数(ブループリント側で作成した変数)にアクセスする方法を紹介します。

以下の環境で動作確認しています。

Unreal Engine 5.1.1
Visual Studio 2022
Windows 11 Home

“【UE5】ウィジェットブループリント(UMG)の変数をバインドすることなく(UPROPERTYを使わずに) C++ で取得する方法【C++】” の続きを読む

【日本の恥】ガーベジコレクションをガベージコレクションと言うのをそろそろ止めるべき

スペルミスは良くあることなので、気づいたら直せば良いのですが、和製英語は広く社会に認知されているのでどうしようもないのが困ります。

“【日本の恥】ガーベジコレクションをガベージコレクションと言うのをそろそろ止めるべき” の続きを読む

【C#】IDisposable を継承する際に Dispose パターンの知識が必要になる理由

SonarLint を使っていなければ気づかなかったシリーズ。
C# は C++ と比べて変なテクニックを山ほど覚える必要がなく、とても扱いやすい言語だと思っていたのですが、最近はそうでもないと思うようになってきました。

using System;

// ヒャッハー集団のベースクラス
public class HyahhaaBase : IDisposable {
  public virtual void Dispose() {
    // アンマネージドリソースを解放する処理
  }
}

// モヒカンヒャッハークラス
sealed class MohicanHyahhaa : HyahhaaBase {
  public override void Dispose() {
    // 子クラスのアンマネージドリソースを解放する処理
  }
}

このコードはメモリリークします。

SonarLint については以下の記事で簡単に紹介しています。

その他の、SonarLint を使っていなければ気づかなかったシリーズ。

“【C#】IDisposable を継承する際に Dispose パターンの知識が必要になる理由” の続きを読む