はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

C#

【Unity】DocFXを用いてプロジェクトのドキュメントを自動生成する

はじめに 今回はDocFXというドキュメント生成ツールを使い、Unityプロジェクトのドキュメントを作っちゃおうという記事になります。dotnet.github.io 自動生成したドキュメント はじめに DocFXをインストールする 出力先のフォルダを作成する ドキュメント化…

【Unity】外部アプリ(exe)を起動して標準入出力を用いてやり取りをする

はじめに Unityからexeを起動して、標準入出力によりやり取りを行う処理を書く必要がありました。 Unityと外部プロセスとの標準入出力を用いたやり取りその手法について簡単の書き残しておきたいと思います。 はじめに exeを準備する UnityにExeを取り込む …

【Unity】デリゲート型の変数にメソッドを代入するときキャッシュすることでGC.Allocを防ぐ

はじめに デリゲート型の変数にメソッドを代入しようとした際に、そのやり方だとGC Allocが発生しちゃうよとご指摘いただけたことがありました。 // イメージ private void Update() { hoge.OnCompleted += Fuga; } private void Fuga(){} 実際に発生するの…

【Unity,c#】Doxygenで指定のフォルダを解析しないように除外する手順

はじめに 前にDoxygenを使ってドキュメントを生成する記事を書いたのですが、Unityでは外部から導入したファイルの説明も含まれていて分かりづらいと言われてしまいました。 www.hanachiru-blog.com ですので今回は指定フォルダを解析しないように除外する手…

【Unity】Test Runnerでprivateメソッドもテストしちゃうよ

はじめに 今回はUnityのTest Runnerを使って、privateなメソッドもテストしちゃおうという記事になります。まあ簡単に言うとリフレクションを使ってアクセスするだけではありますが、覚えておいて損はないと思います。 はじめに やり方 解説 さいごに やり方…

【Unity,c#】Doxygenを使ってプロジェクトのドキュメントを自動生成する

はじめに 今回はDoxygenというツールを使って以下の画像のようなドキュメントを生成してみたいと思います。 ドキュメント例 はじめに Doxygenをインストールする GUIツールの概要 生成する さいごに Doxygenをインストールする まずはDoxygenをインストール…

【C#】ジェネリッククラスのインスタンス化をするときに一行が長くなりすぎる問題の対処法

C#

はじめに C#のジェネリッククラスをインスタンス化するときに結構長くなってしまうのはあるあるな気がします。 private static void Main(string[] args) { // 一行が長くなりがち・・・ var sample = new Sample<List<int>, KeyValuePair<bool, int>>(); } public class Sample<TKey, TValue>{}</tkey,></bool,></list<int>…

JetBrains Rider2020.1.3以降は日本語化対応されていない件(2021/9/7)

はじめに 久しぶりにRiderを導入して日本語化対応しようとしたらつまづいてしまいました。 Riderはいいぞ! from UnityTechnologiesJapan002 www.slideshare.netそこで調べたことを備忘録の意味合いも兼ねて残しておきたいと思います。 はじめに Riderを導入…

Clean Architecture第7章「単一責任の原則(SRP)」の個人まとめ

はじめに 現在Clean Architectureという本を読んでいるのですが、備忘録の意味合いも兼ねてまとめてみたいと思います。今回は単一責任の原則(SRP)についてみていきます。 はじめに 単一責任の原則とは? 感想 単一責任の原則とは? 単一責任の原則(SRP)…

Clean Architecture第5章「オブジェクト指向プログラミング」の個人まとめ

はじめに 現在Clean Architectureという本を読んでいるのですが、備忘録の意味合いも兼ねてまとめてみたいと思います。今回はオブジェクト指向プログラミングについてみていきます。 はじめに オブジェクト指向とは? 依存関係逆転 個人的な感想 オブジェク…

【C#】複数のCancellationTokenを合成したCancellationTokenSourceを生成する

C#

はじめに 今回は複数のCancellationTokenが存在したとき、いずれか一つでもキャンセルされればキャンセル状態になるCancellationTokenSourceを生成したいと思います。docs.microsoft.com はじめに やり方 やり方 実現するためにはCancellationTokenSource.Cr…

【UniRx】AsyncSubject<T>を使ってOnCompletedされたときに最後に入力された値を出力する

はじめに 今回はAsyncSubject<T>について実際のコードも触れながら解剖していきたいと思います。github.com はじめに 使い方 仕組み さいごに 使い方 AsyncSubjectはOnCompletedされたときに最後にOnNextされた値を出力します。 [Test] public void AsyncSubjec</t>…

【UniRx】IEnumerable<T>.ToObservable<T>を使って値を順番に発行するObservableに変換する

はじめに 今回はIEnumerable<T>.ToObservable<T>について取り上げたいと思います。github.com はじめに 使い方 仕組みについて さいごに 使い方 IEnumerableを実装しているオブジェクト,いわゆるデータの集まりを指すコレクションに対してToObservableメソッドを</t></t>…

【UniRx,UniTask】IObservable.ToUniTaskメソッドをうまく使いこなそう

はじめに 今回はIObservable.ToUniTaskメソッドについて紹介をしたいと思います。このメソッドを使う事でIObservableを実装しているオブジェクトに対して、OnNextもしくはOnCompletedがされるまで処理を待つようなUniTaskに変換することができます。github.c…

【C#, IL】C#の中間言語ILを読めるようになりたい(SharpLabの紹介)

C# IL

はじめに 私は普段Unityを触っているのですが、Unityのライブラリとして有名なUniRx・UniTaskを作られたneueccさんはIL単位での最適化も行なっているそうです。www.youtube.comいやはや凄すぎて良く分からない世界になってきました。ただ少しでもC#をうまく…

【Unity,UniTask】TestRunnerでasync/awaitを使った非同期処理のテストはUniTask.ToCoroutineを使うと簡単

はじめに 今回はasync/awaitのテストについて取り上げたいと思います。今までTask.Runを使ってみたりでなんとか対応させていましたが、UniTask.ToCoroutineを使うことでもっとスマートに書けることを後輩に教えてもらいました。github.com一応公式のGitHubに…

【UniTask】AsAsyncUnitUniTaskを使ってUniTaskからUniTask<AsyncUnit>に変換をする

はじめに 今回はAsAsyncUnitUniTaskを紹介したいと思います。突然ですが、UniTaskを利用していて以下のような状態になっとことはないでしょうか。 // 完了済のUniTaskを生成(awaitした瞬間10が返ってくる) UniTask<int> task1 = UniTask.FromResult(10); // 1フレ</int>…

【UniTask】UniTaskCompletionSourceを使って好きなタイミングで結果を確定させるUniTaskを生成する(ついでにUniTask.Voidの紹介)

はじめに 今回はUniTaskCompletionSourceについて紹介したいと思います。github.comUniTaskCompletionSourceを使うことで好きなタイミングで結果を確定させるUniTaskを生成することができます。早速見ていきましょう。 はじめに UniTaskCompletionSource Uni…

【UniRx, UniTask】ReactivePropertyをawaitしたらどうなるか(awaitした後ReactivePropertyの値が変わるまで)

はじめに UniRxを使っていたところ、PeactivePropertyをawaitしたらどうなるか気になりました。そこで今回は実験していきたいと思います。 はじめに ReactivePropertyをawaitする Observableをawaitする さいごに ReactivePropertyをawaitする 結論からいう…

【UniTask】SuppressCancellationThrowを使ってキャンセルを返り値として取り出す

はじめに 今回はSuppressCancellationThrowについて触れていきたいと思います。SuppressCancellationThrowの使い場面は簡単に言うと、タスクがキャンセルされたかどうかを返り値として取り出す場合です。 // 通常 try { await NormalTask(ctx.Token); } catc…

【C#,Unity】DIコンテナを使う前にPoor man’s dependency injectionを検討してみてはどうでしょうか

はじめに UnityでDI ContainerといったらZenjectやExtenject,VContainerあたりが有名ですよね。Dependency Injectionパターンを利用する場合は誰がインスタンスを生成・注入するかが難しい問題になりますが、その解決法の一つとしてDI Containerが利用され…

【C#】C#でAWS Lambda & API Gatewayを使ってWebAPIを作る(Windows)

はじめに 最近知ったのですが,AWS LambdaがC#に対応しているらしいです。C#大好きっ子としては触らなきゃということで簡単なWebAPIを作ってみました。 AWS Lambda はサーバーレスコンピューティングサービスで、サーバーのプロビジョニングや管理、ワークロ…

【C#】ovverrideとnewの挙動の違い(アップキャストしたときに違います)

C#

はじめに overrideとnewの二つのキーワードの挙動の違いについて書いていきたいと思います。詳細を知りたい方は公式ドキュメントを見てみてください↓ docs.microsoft.com はじめに 挙動の違い さいごに 挙動の違い overrideとnewキーワードは派生クラスをア…

【UniRx】IDisposableをまとめてDisposeするためのCompositeDisposableクラスを利用する

はじめに 今回はUniRxのCompositeDisposableクラスについて取り上げたいと思います。UniRx/CompositeDisposable.cs at master · neuecc/UniRx · GitHub具体的な使い方から,実際のコードを見ながらのTipsについても触れていきたいです。 はじめに 使い方 Tip…

【Unity】機能の階層と実装の階層を分けるBridgeパターンを学ぶ

はじめに 今回は機能の階層と実装の階層を分けるBridgeパターンを紹介したいと思います。 クラス図 はじめに 概要 登場人物 実装例 さいごに 概要 wikipedia先輩には以下のように表記されていました。 Bridge パターン(ブリッジ・パターン)とは、GoF(Gang…

【Unity】状態に応じてクラスの振る舞いを切り替えるStrategyパターンを学ぶ

はじめに 今回はアルゴリズムを切り替えるStrategyパターンについて紹介したいと思います。 クラス図 はじめに 概要 登場人物 実装例 さいごに 概要 wikipediaには以下のように表記されていました。 Strategy パターン(ストラテジー -)は、コンピューター…

【C#】最小頂点被覆問題の近似アルゴリズムを実装してみる

はじめに 今回は最小頂点被覆問題の近似アルゴリズムを実装してみたいと思います。最小頂点被覆問題の詳細は後述しますが、NP困難の問題と知られていて多項式時間で解くことできないことが証明されています。そういった解くことが難しい問題に関して、以下の…

【C#】インターフェイスの変換を行うAdapterパターンを学ぶ

はじめに 今回はインターフェイスの変換を行うAdapterパターンについて紹介したいと思います。 クラス図(左 : 継承を使ったもの, 右 : 委譲を使ったもの) はじめに 概要 登場人物 継承を使ったパターン 委譲を使ったパターン さいごに 概要 wikipediaには以…

【C#】命令をクラスにするCommandパターンを学ぶ

はじめに 今回は命令をクラスにするCommandパターンを紹介したいと思います。 クラス図 はじめに Commandパターンの定義 登場人物 Commnad Receiver ConcreteCommand Invoker Client さいごに Commandパターンの定義 Wikipediaにかなりわかりやすくまとめら…

【C#】責任をたらい回しするChain of Responsibilityパターンについて学ぶ

はじめに 今回は責任をたらい回しするChain of Responsibilityパターンを紹介したいと思います。 クラス図 はじめに 登場人物 Handlerのコード ConcreteHandler 動作確認 さいごに 登場人物 冒頭でも述べた通り,Chain of Responsibilityパターンは責任(要求…