はなちるのマイノート

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

【C#】コンソールアプリケーションで入力をパイプ(pipe)で受け取りたい

はじめに C#でコンソールアプリケーションを作成していたとき、以下のようにパイプで入力を受け取れたらなと思いました。 # プロジェクトを利用するパターン $ echo "Hello, World!" | dotnet run # ビルド済みのConsole Appを利用するパターン $ echo "Hell…

【React】状態管理ライブラリ「Recoil」を使ってみる

はじめに 今回はReactの状態管理ライブラリRecoilについて紹介したいと思います。 A state management library for React recoiljs.org はじめに インストール 概要 Atom Selector 使い方 RecoilRootで囲う Atom作成 Atomの読み込み・書き込み Selector作成 …

【Electron】Electron Forgeでnpm run makeを実行したときにexit code: 4294967295が出力される場合の対処法(Windows)

はじめに Electron Forgeで頒布形式を作成しようとした場合、以下のようなエラーが出力されました。 An unhandled rejection has occurred inside Forge: Error: Failed with exit code: 4294967295 一応解決策を見つけることができたので備忘録の意味合いも…

【Actions】GitHub Marketplace に公開するためにbrandingのiconとcolorに何を指定すれば良いのか

はじめに 先日初めてGitHub Marketplaceに自作OSSを公開してみたのですが、その際にbrandingに何を設定しようか迷いました。 github.com branding: icon: 'search' color: 'blue' その際に参考になるOSSを見つけてとても便利だったので、備忘録も兼ねて書き…

【C#】Encoding.UTF8.GetStringでBOM付きのutf8を読み込むとutf16のBOMが入ることに気づいた

C#

はじめに 以下のコードを書いていたときに、BOMに関して挙動が違うことに気づきました。 // utf-8のBOM付き.txtを読み込みたい // パターンA var x = File.ReadAllText(path); // パターンB var tmp = File.ReadAllBytes(path); var y = Encoding.UTF8.GetSt…

【git】個人プロジェクトでも最初にコミットを積んでから都度git commit --fixupとgit rebase --autosquashで修正するスタイルが結構良かった話

Git

はじめに 今まで個人プロジェクトでは正直コミットログは適当でも良いのではないかと思ってました。コミットログはレビューしやすくするためのもので、レビュワーがいないならやる意味ないのかなと。ただ最近以下の手順を試してみたところ、レビュー関係なく…

【Unity】Assets以下でファイル・フォルダに特定の名前をつけると非表示にすることができる

はじめに OSS見ていて気づいたのですが、Samples~のようなフォルダ名だとAssets以下に表示されていないことに気づきました。github.com知識がなくなんでだろうと思っていたところ、どうやら特定の命名をするとUnity上で非表示になるっぽいです。そこら辺を調…

【Unity】Unity 2023.1.0f1よりAssetDatabase.StartAssetEditing/StopAssetEditingをより安全に実行できるようにしたAssetEditingScopeが実装された

はじめに AssetDatabaseはアセットの作成・削除・移動・コピーなどの操作をすることができます。特に大量のアセットに大して操作を行ったりすると、なかなか処理が終わらずにパフォーマンス上の問題がでてきたりします。 docs.unity3d.comそこでAssetDatabas…

【C#】PackageReferenceとProjectReferenceでビルドの際に求められる.NET SDKの考え方の違い

C#

はじめに PackageReferenceとProjectReferenceを利用した下記のcsporjがあるとします。それぞれのプロジェクトをビルドする際に必要な.NET SDKのバージョンは何か分かるでしょうか? <TargetFramework>net8.0</TargetFramework> ... <ProjectReference Include="../Hoge/Hoge.csproj" /> <TargetFramework>net8.0</TargetFramework> ... </projectreference>

【C#】Directory.Build.propsとDirectory.Build.targetsを用いて特定フォルダ以下のcsprojに対して共通設定を記述する

C#

はじめに 今回はDirectory.Build.propsとDirectory.Build.targetsを用いて特定フォルダ以下の.csprojに対して共通設定を記述する方法を紹介したいと思います。 はじめに 概要 注意点 利用例 ちなみに 参考 概要 Directory.Build.propsとDirectory.Build.targ…

【C#】.NET10 Preview4からfile-based appsというcsprojなしで.csファイルを直接実行できる機能が追加された

C#

はじめに .NET10 Preview4からfile-based appsという.csprojなしで.csを実行できる機能が追加されました。devblogs.microsoft.com手軽に利用できるようになったのは勿論のこと、特にCI/CDで.csを利用する手法がより広がっていくのではと思っています。前にPr…

【C#】EmbeddedResource vs CopyToPublishDirectoryとCopyToOutputDirectory、どちらを選ぶべきか

C#

はじめに アプリケーションを開発している際に何かの設定ファイルや画像などのリソースも一緒に配布したいときがあると思います。.NETでは以下のような組み込み方法があります。 EmbeddedResource CopyToPublishDirectoryやCopyToOutputDirectory それぞれに…

【Docker】Dockerfileよりも上位階層に含まれるファイルをCOPYしたいときの対処法

はじめに 以下の構成の際にsample.txtをCOPYしたいというモチベがあったのですが、単純に以下のようにコマンドを実行しても動きませんでした。 parent ├── child1 │ └── Dockerfile └── child2 └── sample.txt # Dockerfile COPY ../child2/sample.txt ./sam…

【.NET】dotnet toolのglobalなインストール先パスの決定方法

はじめに 今回はdotnet toolをglobalにインストールした時にどのようなパスにインストールされるのか調べたので、その結果を備忘録も兼ねて残しておきたいと思います。 はじめに インストール先 実験 参考 インストール先 以下の優先順位で決定されます。 $D…

【.NET】dotnet toolが要求している.NET SDKのバージョンを調べることができるOSS「DotnetToolInspector」を作りました

C#

はじめに 先日dotnet toolが要求している.NET SDKのバージョンを調べることができるOSSを公開しました。dotnet toolが要求する.NET SDKの情報を取得できるOSSを公開しました!PowerShellのモジュールなのでmac・windows・linuxで簡単に利用することができま…

【C#】UniTaskのIObservable.ToUniTaskをR3でもやりたいときの対処法(FirstAsync・LastAsync)

はじめに UniRxを利用していたときはIObservable.ToUniTaskを活用したコードをよく書いてました。 // OnNextがされるまで待つ var result = await subject.ToUniTask(useFirstValue: true, cancellationToken: source.Token); // OnCompletedがされるまで待…

【Unity】Obi FluidでHDRPで利用するためのセットアップ方法

はじめに 今回はObi Fluidという流体シミュレーションを簡単に作成できるアセットのHDRPでのセットアップ方法を紹介したいと思います。 実際に利用している様子 Obi は、変形可能なさまざまなマテリアルの動作をシミュレートできる、高度な粒子ベースの物理…

【Rider】Rider 2025.1から"Explore LINQ"というLINQの各ステップでデータがどのように変換されているか可視化できるようになった

はじめに Rider 2025.1からExplore LINQ(LINQ chain debugging)という機能が追加されました。 www.jetbrains.com When working with LINQ expressions in C#, you can debug them visually with JetBrains Rider, with a clear representation of how data i…

【.NET】modelcontextprotocol/csharp-sdkを用いた自作MCP Serverを作成〜MCP Inspectorや自作MCP Clientで確認する方法

C#

はじめに 今回はmodelcontextprotocol/csharp-sdkを用いた自作MCP Serverを作成〜MCP Inspectorや自作MCP Clientで確認する方法を紹介したいと思います。 実際に利用している様子 はじめに MCPについて MCP Serverの実装 Minimal APIを活用したプロジェクト…

【PowerShell】Import-Moduleコマンドで古いモジュールが読み込まれるときの対処法

はじめに PowerShellのモジュール開発をしていた際にImport-Moduleを実行してもキャッシュが読み込まれてしまう現象にあいました。 # before.ps1 Import-Module "${PSScriptRoot}/../UnityPackageMaker" # モジュールを修正しても前回のモジュールが読み取ら…

【Actions】matrixでmax-parallelを1にした場合はジョブの実行順序が一意に決定されるかどうか

はじめに 以下のようなコードを書いた際に、果たして順序は常に同じになるでしょうか。 name: test on: workflow_dispatch: jobs: test-matrix: runs-on: ubuntu-latest # 実行される順番は常に 1 -> 2 -> 3 かどうか strategy: matrix: value: [1, 2, 3] ma…

【Actions】suzuki-shunsuke/github-action-tflintを用いてterraformのlinter(tflint)をActionsで活用する

はじめに 今回はsuzuki-shunsuke/github-action-tflintを用いてterraformのlinter(tflint)をActionsに導入する方法を紹介したいと思います。github.com 実際に動作している様子 はじめに reviewdog/action-tflintについて 概要 導入方法 reviewdog/action-tf…

【terraform】Cloud RunでIdentity-Aware Proxyを構成できるようになりterraformでも用意してくれた話

はじめに 先日Cloud Run 用にIdentity-Aware Proxyを構成できる機能がベータで入りました。 cloud.google.comそしてまだterraformではその設定ができなかったのですが、ついにその機能が追加されました。 github.comgithub.com楽に特定のユーザーにだけ利用…

【Unity】「UnityYAMLを紐解く!Unityを使わない自動化のすゝめ」という内容で登壇しました

はじめに Unity エディタ拡張 完全に理解した勉強会で「UnityYAMLを紐解く!Unityを使わない自動化のすゝめ」という内容で登壇をしました。 Unity エディタ拡張完全に理解した 勉強会 - connpass発表資料をブログでも載せておくのと、この記事ではちょっとコ…

【C#】MacのRiderで実行/デバッグ構成を用いてProcessX(Zx)を利用したときにコマンドが見つからない時の対処法

C#

はじめに ProcessX(Zx)で以下のようなコードを書き、MacのRiderで実行/デバッグ構成を用いて実行しようとしたところghが見つからないと言われてしまいました。 github.com using Zx; var prBody = await $"gh pr view 10 --json body"; var prDiff = await $…

【C#】dotnet tool updateの--allow-downgradeは.NET SDK v8.0.200から入った

C#

はじめに CIでキャッシュを効かせつつ.NET Toolのバージョンを適宜変更できるようにするなど、dotnet tool update --allow-downgradeは非常に便利で重宝しています。 $ dotnet tool update hogehoge --version 1.0.0 --allow-downgrade ただ.NET SDKのバージ…

【C#】.NET SDK9.0.200 & Rider 2024.3 EAPから対応した.slnxを.slnの代わりに使おう

C#

はじめに .NETのプロジェクトを管理するために.slnを利用していることが多いと思いますが、.slnは冗長で記述が多く、パス修正をしたりはたまにしますが基本手作業はかなりしづらい印象でした。learn.microsoft.com Microsoft Visual Studio Solution File, F…

【ASP.NET Core MVC】DockerでSQL Serverを立ち上げた時にDatabaseに接続できないときの対処法

はじめに DockerでMicrosoft SQL Server - Ubuntu based imagesのコンテナを立てた後、Entity Framework Coreを利用してマイグレーションを実行しようとしました。(エンティティ・コンテキスト定義、データベース接続文字列設定&アプリに紐づけ済) mcr.micro…

【PowerShell】bashのset -xと同じようにデバッグトレースをPowerShellで実現する方法

はじめに 最近PowerShellにハマっている私ですが、bash・zshで言うところのset -x(set -o xtrace)をPowerShellでもやりたいなと思いました。今回はそのやり方を紹介したいと思います。 はじめに その前に PowerShellでデバッグトレースを有効にする方法 その…

【C#】netstandard2.1・.NET Core3.0以前でSystem.HashCodeを利用するにはMicrosoft.Bcl.HashCodeへの参照が必要

C#

はじめに GetHashCodeを自前で実装するのにSystem.HashCodeはとても便利です。 learn.microsoft.com public class Sample : IEquatable<Sample> { public int Id { get; } public int Value { get; } public bool Equals(Sample other) { if (other is null) return </sample>…