Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Genericsについて改めて学んでみた
Search
o-ga
June 26, 2024
83
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Genericsについて改めて学んでみた
TypescriptとGoのGenericsについて改めて学んだときに発表した資料です。
o-ga
June 26, 2024
More Decks by o-ga
See All by o-ga
GoConferenceMini2026inSendai_-_2026.02.21.pdf
tabe
0
93
GoConnect#9 2025.08.19
tabe
0
120
kanazawa.go 2025.07.27
tabe
0
100
ランドネットLT会.pdf
tabe
0
44
Tavinikkiyとかいう構想半年、開発2ヶ月みたいなプロダクトを個人開発している話
tabe
0
40
テテミート 2024.11.22
tabe
0
44
Featured
See All Featured
Building an army of robots
kneath
307
47k
Believing is Seeing
oripsolob
1
240
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
270
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Rails Girls Zürich Keynote
gr2m
96
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
310
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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
ご清聴ありがとうございました!