<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>型と抽象化 on GARNET LOG</title><link>https://garnetcode.jp/tags/%E5%9E%8B%E3%81%A8%E6%8A%BD%E8%B1%A1%E5%8C%96/</link><description>Recent content in 型と抽象化 on GARNET LOG</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 06 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://garnetcode.jp/tags/%E5%9E%8B%E3%81%A8%E6%8A%BD%E8%B1%A1%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>【Unity】インターフェイス</title><link>https://garnetcode.jp/blog/2025/09/interface/</link><pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate><guid>https://garnetcode.jp/blog/2025/09/interface/</guid><description>&lt;h2 id="インターフェイスとは"&gt;インターフェイスとは？&lt;/h2&gt;
&lt;p&gt;Unity開発でより柔軟で保守性の高いコードを書きたいと思ったことはありませんか？&lt;/p&gt;
&lt;p&gt;異なるクラス間で共通の機能を統一的に扱えるようになり、テストしやすく拡張性の高い設計を実現できる——それがインターフェイスの力です。&lt;/p&gt;
&lt;p&gt;インターフェイスとは、クラスが持つべき機能を決めるための設計図のようなものです。&lt;/p&gt;
&lt;p&gt;実際の処理は持っておらず、インターフェイスを継承したクラスに対して「この機能を必ず実装してね」という約束事を定義します。&lt;/p&gt;
&lt;p&gt;一見すると抽象的で難しく感じるかもしれませんが、実はUnity開発における多くの課題を解決してくれる強力な仕組みです。&lt;/p&gt;
&lt;p&gt;例えば、プレイヤーキャラクターの入力処理、敵AIの行動パターン、UIの表示切り替えなど、様々な場面でインターフェイスが活躍します。&lt;/p&gt;
&lt;div class="blogcard"&gt;
&lt;a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/interface" target="_blank" rel="noopener nofollow"&gt;
&lt;div class="blogcard-content"&gt;
&lt;span class="blogcard-label blogcard-label--external"&gt;&lt;i class="fas fa-arrow-up-right-from-square" aria-hidden="true"&gt;&lt;/i&gt;外部記事&lt;/span&gt;
&lt;div class="blogcard-title"&gt;interface キーワード - C# reference&lt;/div&gt;
&lt;div class="blogcard-site"&gt;learn.microsoft.com&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item><item><title>【Unity】ジェネリックの制約</title><link>https://garnetcode.jp/blog/2025/02/generic_where/</link><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><guid>https://garnetcode.jp/blog/2025/02/generic_where/</guid><description>&lt;h2 id="ジェネリックとは"&gt;ジェネリックとは？&lt;/h2&gt;
&lt;p&gt;ジェネリック(Generics)とは、プログラミング言語において重要な概念で、型に依存しない汎用的なコードを記述するための仕組みです。&lt;/p&gt;
&lt;p&gt;ジェネリックを使いこなすことで、コードの再利用性が増し、型安全性が確保されます。&lt;/p&gt;
&lt;p&gt;ジェネリックは、クラスやインターフェイス、メソッドに対して使用できます。&lt;/p&gt;
&lt;div class="blogcard"&gt;
&lt;a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/generic-type-parameters?source=recommendations" target="_blank" rel="noopener nofollow"&gt;
&lt;div class="blogcard-content"&gt;
&lt;span class="blogcard-label blogcard-label--external"&gt;&lt;i class="fas fa-arrow-up-right-from-square" aria-hidden="true"&gt;&lt;/i&gt;外部記事&lt;/span&gt;
&lt;div class="blogcard-title"&gt;ジェネリック型の型パラメーター - C#&lt;/div&gt;
&lt;div class="blogcard-site"&gt;learn.microsoft.com&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item><item><title>【Unity】C#のジェネリック</title><link>https://garnetcode.jp/blog/2025/02/generics/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://garnetcode.jp/blog/2025/02/generics/</guid><description>&lt;h2 id="ジェネリックとは"&gt;ジェネリックとは？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ジェネリック（Generics）&lt;/strong&gt; は、型に依存しない汎用的なコードを記述するための仕組みです。&lt;/p&gt;
&lt;p&gt;主なメリットは以下の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;コードの再利用性が向上&lt;/strong&gt;：異なる型でも同じロジックを使える&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;型安全性が確保される&lt;/strong&gt;：コンパイル時に型チェックが行われ、誤った型の使用を防げる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ジェネリックは、&lt;strong&gt;クラス・インターフェース・メソッド&lt;/strong&gt; に適用でき、特に &lt;strong&gt;コレクション（&lt;code&gt;List&amp;lt;T&amp;gt;&lt;/code&gt;, &lt;code&gt;Dictionary&amp;lt;TKey, TValue&amp;gt;&lt;/code&gt; など）&lt;/strong&gt; でよく使われます。&lt;/p&gt;
&lt;div class="blogcard"&gt;
&lt;a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/generic-type-parameters?source=recommendations" target="_blank" rel="noopener nofollow"&gt;
&lt;div class="blogcard-content"&gt;
&lt;span class="blogcard-label blogcard-label--external"&gt;&lt;i class="fas fa-arrow-up-right-from-square" aria-hidden="true"&gt;&lt;/i&gt;外部記事&lt;/span&gt;
&lt;div class="blogcard-title"&gt;ジェネリック型の型パラメーター - C#&lt;/div&gt;
&lt;div class="blogcard-site"&gt;learn.microsoft.com&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item><item><title>【Unity】拡張メソッド</title><link>https://garnetcode.jp/blog/2025/02/extension_method/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://garnetcode.jp/blog/2025/02/extension_method/</guid><description>&lt;h2 id="拡張メソッドとは"&gt;拡張メソッドとは？&lt;/h2&gt;
&lt;p&gt;拡張メソッド(&lt;code&gt;Extension Method&lt;/code&gt;)とは、既存のクラス、構造体を直接変更することなく、&lt;/p&gt;
&lt;p&gt;機能を追加できる方法です。&lt;/p&gt;
&lt;p&gt;主に&lt;code&gt;C#&lt;/code&gt;などのプログラミング言語でサポートされています。&lt;/p&gt;
&lt;p&gt;拡張メソッドを使用すると、ライブラリやフレームワークに含まれる、&lt;/p&gt;
&lt;p&gt;直接ソースコードを変更できないクラスであってもそのクラスに新しい機能を追加したかのように利用できます。&lt;/p&gt;
&lt;p&gt;実際に追加されるわけではないですが、そのクラスの一部のように動作させることが出来ます。&lt;/p&gt;
&lt;div class="blogcard"&gt;
&lt;a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods" target="_blank" rel="noopener nofollow"&gt;
&lt;div class="blogcard-content"&gt;
&lt;span class="blogcard-label blogcard-label--external"&gt;&lt;i class="fas fa-arrow-up-right-from-square" aria-hidden="true"&gt;&lt;/i&gt;外部記事&lt;/span&gt;
&lt;div class="blogcard-title"&gt;拡張メンバー - C#&lt;/div&gt;
&lt;div class="blogcard-site"&gt;learn.microsoft.com&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item><item><title>【Unity】Delegate</title><link>https://garnetcode.jp/blog/2025/01/delegate/</link><pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate><guid>https://garnetcode.jp/blog/2025/01/delegate/</guid><description>&lt;h2 id="デリゲートとは"&gt;デリゲートとは？&lt;/h2&gt;
&lt;p&gt;デリゲート（&lt;code&gt;delegate&lt;/code&gt;）とは、メソッドを参照するための型です。&lt;/p&gt;
&lt;p&gt;デリゲートを使用すると、メソッドを変数のように扱ったり、柔軟に呼び出すことができます。&lt;/p&gt;
&lt;p&gt;また、イベントの仕組みやコールバック処理など、さまざまな場面で活用されます。&lt;/p&gt;
&lt;div class="blogcard"&gt;
&lt;a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/" target="_blank" rel="noopener nofollow"&gt;
&lt;div class="blogcard-content"&gt;
&lt;span class="blogcard-label blogcard-label--external"&gt;&lt;i class="fas fa-arrow-up-right-from-square" aria-hidden="true"&gt;&lt;/i&gt;外部記事&lt;/span&gt;
&lt;div class="blogcard-title"&gt;C でデリゲート型を操作する# - C#&lt;/div&gt;
&lt;div class="blogcard-site"&gt;learn.microsoft.com&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item></channel></rss>