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
78
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
80
GoConnect#9 2025.08.19
tabe
0
110
kanazawa.go 2025.07.27
tabe
0
94
ランドネットLT会.pdf
tabe
0
41
Tavinikkiyとかいう構想半年、開発2ヶ月みたいなプロダクトを個人開発している話
tabe
0
37
テテミート 2024.11.22
tabe
0
37
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
We Have a Design System, Now What?
morganepeng
55
8.3k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
A Tale of Four Properties
chriscoyier
163
24k
The browser strikes back
jonoalderson
0
1.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
We Are The Robots
honzajavorek
0
380
A better future with KSS
kneath
240
18k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1k
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
ご清聴ありがとうございました!