Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Genericsについて改めて学んでみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
o-ga
June 26, 2024
0
49
Genericsについて改めて学んでみた
TypescriptとGoのGenericsについて改めて学んだときに発表した資料です。
o-ga
June 26, 2024
Tweet
Share
More Decks by o-ga
See All by o-ga
GoConnect#9 2025.08.19
tabe
0
69
kanazawa.go 2025.07.27
tabe
0
57
ランドネットLT会.pdf
tabe
0
11
Tavinikkiyとかいう構想半年、開発2ヶ月みたいなプロダクトを個人開発している話
tabe
0
9
テテミート 2024.11.22
tabe
0
11
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
4 Signs Your Business is Dying
shpigford
187
22k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
160
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
190
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
It's Worth the Effort
3n
188
29k
Transcript
Genericsについて改めて学んでみた 株式会社ワクト ソフトウェアエンジニア 阿部太一
自己紹介 • 名前 : 阿部太一 • Twitter : オーガ (@o_ga09) • GitHub : o-ga09 •
エンジニア歴 : 4年 • 領域 : バックエンド • 趣味 : ゲーム、ダーツ、お酒 • 所属 : 株式会社ワクト https://github.com/o-ga09/convert-yaml-go https://github.com/o-ga09/spec2scenarigo
宣伝 • Zennで本書いてます! ◦ あと少しでいいね200いきそうです ◦ Go大好きまんです
最近のニュース • Typeormのバージョンアップで変更差分400ファイルのPR作ってしまった • Node.jsお腹いっぱい
目次 • Genericsとは? • 使い所 • TypescriptのGenerics • GoのGenerics •
Tってなんなのさ • まとめ
突然ですが、Generics使っていますか・・・?
私は、全然使っていません
いろんな言語に備わっていて、便利だけど使い所と
仕組みとか使い方を理解していなかったです
Genericsを理解すると、軽い認識ですが、以下のようなメリットがあると考えています • 引数や戻り値の型だけ違うコードを共通化できる • ライブラリを作成する際にコードをスタイリッシュにできる • OSSのライブラリを簡単に読めるようになる
Today’s Goal • GoとTypescriptのGenericsをなんとなく理解する • コードを共通化したい時の引き出しにできる • Tが何者かわかる
Today’s Target • Genericsって何って思っている方 • Genericsがふんわり理解の方 • コードの共通化、リファクタリングのモチベーションが高い方
Genericsとは?
AIに聞いてみた! プログラミングにおけるGenericsとは Generics(ジェネリクス)、総称型とも呼ばれる、は、プログラミングにおいて、型を抽象 化し、汎用的なコードを書くための手法です。具体的なデータ型に依存せず、型パラメー タと呼ばれる変数のようなものを使用することで、様々なデータ型に対して同じ処理を適 用することができます。
メリット Genericsを活用することで、以下のような利点を得ることができます。 • コードの再利用性向上: 同じ処理を異なる型に対して記述する必要がなくなり、コードの重 複を削減できます。 • 保守性の向上: コードが簡潔になり、理解しやすくなるため、メンテナンスが容易になりま す。
• 型安全性の向上: コンパイラによる型チェックが強化され、実行時エラーを防ぐことができ ます。
使い所
Genericsの利用例 Genericsは、様々な場面で利用することができます。以下に、いくつか例を挙げます。 • コレクションライブラリ: JavaのArrayListやHashMapなどのコレクションライブラリは、 Genericsで作られています。 • アルゴリズム: 汎用的なアルゴリズムは、Genericsを使って実装することができます。 •
データ構造: 独自のデータ構造を、Genericsを使って抽象化することができます。
Genericsをサポートする言語 Genericsは、 • Java • C# • TypeScript • Kotlin
• Go などの多くのプログラミング言語でサポートされています。
TypescriptのGenerics
引数のみがstring, number, URLと 違う関数があったときに
型の部分をTとしてまとめられちゃ うのが、ジェネリクス
GoのGenerics
Typescriptと異なり、Tの取りうる型を指定しな ければなりません あとは同じ
それは、分かった。Tってなんなのさ
• 型パラメータと呼ばれる • 関数やデータ構造の方の具体を定めずに定義できる • 言語によって指定方法は異なる
• Template (テンプレート) の略 • Type (型) の略 • 他のプログラミング言語の影響(例:C++など)
なぜ、Tか? 絶対これでなければいけないという 決まりはなく、慣習的なものです ね!
まとめ
• 言語によって微妙に書き方は異なる • 基本形を覚えればわりと使えるなという印象 • 一旦、リファクタリングする際に使ってみたいな
• 自分含めですが、意外と苦手な人いるじゃないかな・・・? • 思ったより怖くない! • これは、ハンズオンとかの方が理解進むな! LTの内容ミスったか
参考情報 • Goのジェネリクス - Zenn • なぜ、ジェネリクスはTなのか - Qiita •
サバイバルTypescript
ご清聴ありがとうございました!