土屋つかさの技術ブログは今か無しか土屋つかさの技術ブログは今か無しか読者になる土屋つかさの技術ブログは今か無しか土屋つかさが主にプログラミングについて語るブログです。C#MemoryPackは、Neueccさんが開発し、CySharpからリリースされている、シリアライザーと呼ばれる機能を提供するOSSライブラリです。github.comシリアライザーは、データを永続化(シリアライズ)する為の物で、インスタンスが持つデータをバイナリデータに変換する「シリアライズ」と、そのバイナリデータからインスタンスを再構築する「デシリアライズ」という2つの機能から構成されます。今回MemoryPackを使ってみたところ、「これこそ求めていた物だ!」的な感触を得たので、触りの部分を何回かに分けて解説してみたいと思います。VisualStudio2022での環境構築から。関連コンポーネントの追加インストール今回はコンソールアプリを作ります。UnityのみでVisualStudio2022を使っている場合、コンソールアプリ開発に必要なコンポーネントをインストール出来てないかもしれません(土屋がそうでした)。「新しいプロジェクトの作成」ウィンドウで「コンソールアプリ」を選択出来ない場合は、「更にツールと機能をインストールする」を選択します。「.NETデスクトップ開発」を確認し、必要なコンポーネントをインストールしてください。準備が出来たので、新規プロジェクトを作成し、そのプロジェクトにMemoryPackをインストールします。「新しいプロジェクトの作成」で「コンソールアプリ」を選択します。プロジェクト名を入力して「次へ」を選択。追加情報のフレームワークはデフォルトの「.NET8.0(長期的なサポート)」を選択して「次へ」。これで新規プロジェクトが作成されます。NuGet経由でMemoryPackをインストールするプロジェクトが作成されたら、ツリー内のプロジェクト名を右クリックし「NuGetパッケージの管理」を選択します。「参照」タブを選択し、テキストボックスに"MemoryPack"と入力します。すると、NuGetに登録されたライブラリ内から検索結果が下部に列挙されます。上に表示される"MemoryPack"を選択し、右ペインの「インストール」を選択します。他にも"MemoryPack.Core""MemoryPack.Generator"など色々ありますが、これらは依存ライブラリだったり追加パックだったりするので気にしなくて大丈夫です。「変更のプレビュー」ダイアログが表示されるので「適用」を選択します。これで必要なパッケージが全てインストールされます。先程の画面に戻り「インストール済み」タブを開くと、MemoryPackパッケージがインストールされた事がシメされています。無事にパッケージのインストールが終わりました。次回はコードを書いてみます。"NuGet"について&名称の由来NuGetは、マイクロソフトが開発・運用しているパッケージマネージャーと呼ばれるwebサービスです。クラウドで.NETライブラリのデータベースを管理し、VS経由で任意のパッケージを、他ライブラリとの依存関係を自動的に対応しながらインストールできます。今回のMemoryPackのように、ユーザーもデータベースにパッケージを登録できます。ライブラリは依存性の管理というのが大変でして、例えばAというライブラリがBCDというライブラリを内部で参照している場合、ABCDを全部インストールする必要があります、もちろんBCDも他のライブラリに依存している場合があります。AはBのVer1.0には対応していますが、BのVer1.2は互換性が確認出来ていない場合とかが起こりえます。その為、適切なバージョンの依存ライブラリをインストールする必要があります。NuGetを使えば、このような依存性を自動的に対応してくれるわけです*1。この"NuGet(「ニューゲット」と読むのが一般的らしい)"が何故"NuGet"と名付けられたのか以前から疑問で、しかし調べる程には興味がなかったんですが、良い機会なので調べてみました。公式な記録が無いので以下は検索した結果からの推測です。"NuGet"は、元々は"NuPack"と言う名称で開発されていました。この名前は"新しい(Nu=New)パッケージ(Package)マネージャー"という意味だったと思われます。"NUPACK"というソフトウェア*2が存在したため、名前の混同を避ける為に"NuGet"に改名したそうです。"Pack"から"Get"への変更はまあ自然に思えます。ちなみに、"Nougat(ヌガー)"というお菓子を「ヌーゲット」と読む駄洒落みたいのがあり、それと"NuGet"をかけているのではないかとも言われているようです。参考リンクhttps://codeknowledge.livedoor.blog/archives/19433487.html今回及び次回以降のコンソールアプリで使うソースコードはこちらのサイトの記事を参考にしています。この記事が無ければMemoryPackに対する苦手意識を克服出来なかったので、大変感謝しています。*1:これがNuGetの機能なのかVisualStudioの機能なのかは知らない*2:核酸システムの分析と設計の為のソフトウェア。Microsoft.Unity.Analyzersを制御するおかげさまでシェーダー本5が無事リリースできました。VS2017からVS2019へ環境を移動する。10サイト情報プリバシーポリシーはてなブログをはじめよう!t_tutiyaさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。