狠狠撸

狠狠撸Share a Scribd company logo
Objective-C Generics
Goichi Hirakawa
About Me
? 平川 剛一 (Goichi Hirakawa)
? @gooichi
? OS X / iOSソフトウェアエンジニア(フリー)
? GyazSquare / GitHub
? Mailer、デバイス制御、MDM系など
? Objective-C歴XX年
? 初めて触れたのはNextStep…
New Objective-C Features
Objective-CとSwiftをより簡単で効率的に連携させ
るためのXcode 7からの新機能:
? Generics
? Nullability (Updated)
? KindOf Types
? New macros for Swift
New Objective-C Features
Objective-CとSwiftをより簡単で効率的に連携させ
るためのXcode 7からの新機能:
? Generics
? Nullability (Updated)
? KindOf Types
? New macros for Swift
Agenda
? What s Generics?
? Objective-C Generics
? Backward Compatibility
? Generic Classes (iOS 9)
? Variances
? KindOf Types
What s Generics?
? 型に依存しない共通の処理やアルゴリズムを型パラメータ
(Type Parameter)を用いて定義し、汎用化する機能
? ジェネリックプログラミングの仕組み
? 言語により呼び名、機能は若干異なる
? テンプレート(C++)、ジェネリクス(Java、Swiftな
ど)、ジェネリック(MS系言語)、パラメータ化され
た型(Scala)等々
Objective-C Generics
? 他言語と比べ、Lightweight(軽量、簡易)
? APIの表現力を向上させる
? コレクションをより使いやすくする
? Swiftにより型情報がインポート
? より良い静的型チェックを可能にする
? Xcode 7(LLVM 7.0.0)以降
Before Using Generics
Objective-C
@interface UIView
@property (nonatomic, copy ,readonly) NSArray *subviews;
@end
Swift
class UIView {
var subviews: [AnyObject] { get }
}
After Using Generics
Objective-C
@interface UIView
@property (nonatomic,readonly,copy) NSArray<UIView *>*subviews;
@end
Swift
class UIView {
var subviews: [UIView] { get }
}
Static Type Checking
? 型に関する警告が表示される
? ただし、以下は警告は出ない→正しい(後方互換性参照)
Backward Compatibility
? 型消去(Type Erasure)モデルでバイナリ互換
? Objective-Cランタイムに変更なし
? コード生成に影響なし?
? 暗黙の変換によるソース互換性
NSArray<NSString *> *strings = ...; ?
NSArray *array = ...; ?
array = strings; // OK, 型引数が削除 ?
strings = array; // OK, 型引数が追加 ?
Generic Classes (iOS 9)
? NSArray、NSSetとNSDictionary
? これらの型情報はSwiftによりインポートされる
? それ以外のジェネリクス対応クラス
? NSCache、NSEnumerator、NSHashTable、
NSMapTable、NSOrderedSet、PHFetchResult、
および、これらのMutableクラスもジェネリクス対応
? これらの型情報はSwiftによりインポートされない
Variances
? 共変性(covariant)
? A←Bのとき、X<A>変数にX<B>実体を割り当て可能
? 反変性(contravariant)
? A←Bのとき、X<B>変数にX<A>実体を割り当て可能
? 不変性(invariant)
? X<A>変数にはX<A>以外の実体は割り当て不可
Objective-C Generics Variances
? 新しいキーワードの追加
? 共変性:X<__covariant ObjectType>
? NSArray、NSDictionary、NSOrderedSet、NSSet
? 反変性:X<__contravariant ObjectType>
? 現状該当クラスなし
? 不変性:何もつけない(デフォルト)
? 上記クラス以外すべて
Type Safety for Typed Collections
? NSArrayはcovariant(共変)
NSArray<UIView *> *views;
NSArray<UIResponder *> *responders = views; // OK
? NSMutableArrayはinvariant(不変)
UIViewController *viewController;
NSMutableArray<UIView *> *views;
NSMutableArray<UIResponder *> *responders = views; // NG
[responders addObject:viewController];
warning: Incompatible pointer types initializing
'NSMutableArray<UIResponder *> *' with an expression of
type 'NSMutableArray<UIView *> *'
KindOf Types
? 型付きコレクションを使わない場合(従来コード)
@interface UIView (UIViewHierarchy)
@property(nonatomic,readonly,copy) NSArray *subviews;
@end
[view.subviews[0] setTitle:@YES forState:UIControlStateNormal]; // OK
? 型付きコレクションを使う場合→エラー
@interface UIView (UIViewHierarchy)
@property(nonatomic,readonly,copy) NSArray<UIView *> *subviews;
@end
[view.subviews[0] setTitle:@YES forState:UIControlStateNormal]; // NG
error: No visible @interface for 'UIView' declares the selector
'setTitle:forState:'
KindOf Types
? 型付きコレクションは、型安全になり、Swiftからも利用しやす
くなるが、従来のコードでエラーとなるケースが発生
? 新しいキーワードの追加
? __kindof
? __kindof MyClass: MyClassまたはMyClassの派生クラス
@interface UIView (UIViewHierarchy)
@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *subviews;
@end
[view.subviews[0] setTitle:@YES forState:UIControlStateNormal]; // OK
Conclusion
? Objective-Cジェネリクスは、機能的にはLightweightであるが、?
以下の理由より既存コードに適用する価値はある:
? 静的型チェック
? Swiftの型情報インポート
? バイナリ互換
? KindOf型はObjective-Cジェネリクスとの組み合わせだけでなく、
既存コードのid型との置き換えでも利用可能
? id型よりも型安全になり、Swiftからも使いやすくなる

More Related Content

What's hot (20)

Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-CMix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
?
厂飞颈蹿迟入门
厂飞颈蹿迟入门厂飞颈蹿迟入门
厂飞颈蹿迟入门
聡 中川
?
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
Moriyuki Arakawa
?
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
?
Editorlt
EditorltEditorlt
Editorlt
Masaki Suzuki
?
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
Shumpei Shiraishi
?
诲别:肠辞诲别报告
诲别:肠辞诲别报告诲别:肠辞诲别报告
诲别:肠辞诲别报告
Kouji Matsui
?
颈翱厂豆知识惫别谤0.0.5
颈翱厂豆知识惫别谤0.0.5颈翱厂豆知识惫别谤0.0.5
颈翱厂豆知识惫别谤0.0.5
ppengotsu Name
?
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Masaru Gushiken
?
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Kohei Saito
?
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
Shumpei Shiraishi
?
Node.js version16の新機能
Node.js version16の新機能Node.js version16の新機能
Node.js version16の新機能
Masaki Suzuki
?
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
Kohei Saito
?
厂飞颈蹿迟勉强会
厂飞颈蹿迟勉强会厂飞颈蹿迟勉强会
厂飞颈蹿迟勉强会
Nagamine Hiromasa
?
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
Ryo Iinuma
?
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
?
DroidKaigi - Welcome talk
DroidKaigi - Welcome talkDroidKaigi - Welcome talk
DroidKaigi - Welcome talk
Masahiro Hidaka
?
Introducing Fluent Design
Introducing Fluent DesignIntroducing Fluent Design
Introducing Fluent Design
c-mitsuba
?
あるゲームアプリケーションの构成とアップデートサイクル
あるゲームアプリケーションの构成とアップデートサイクルあるゲームアプリケーションの构成とアップデートサイクル
あるゲームアプリケーションの构成とアップデートサイクル
Kentaro Iizuka
?
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-CMix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
?
厂飞颈蹿迟入门
厂飞颈蹿迟入门厂飞颈蹿迟入门
厂飞颈蹿迟入门
聡 中川
?
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
补苍驳耻濒补谤1脳て?见る补苍驳耻濒补谤2
Moriyuki Arakawa
?
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
?
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
闯补惫补厂肠谤颈辫迟使いのための罢测辫别厂肠谤颈辫迟実践入门
Shumpei Shiraishi
?
诲别:肠辞诲别报告
诲别:肠辞诲别报告诲别:肠辞诲别报告
诲别:肠辞诲别报告
Kouji Matsui
?
颈翱厂豆知识惫别谤0.0.5
颈翱厂豆知识惫别谤0.0.5颈翱厂豆知识惫别谤0.0.5
颈翱厂豆知识惫别谤0.0.5
ppengotsu Name
?
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Masaru Gushiken
?
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Kohei Saito
?
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
箩蚕耻别谤测の先に行こう!最先端の奥别产开発トレンドを学ぶ
Shumpei Shiraishi
?
Node.js version16の新機能
Node.js version16の新機能Node.js version16の新機能
Node.js version16の新機能
Masaki Suzuki
?
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
Kohei Saito
?
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
础苍驳耻濒补谤闯厂と贵濒耻虫と搁颈辞迟闯厂と
Ryo Iinuma
?
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
?
Introducing Fluent Design
Introducing Fluent DesignIntroducing Fluent Design
Introducing Fluent Design
c-mitsuba
?
あるゲームアプリケーションの构成とアップデートサイクル
あるゲームアプリケーションの构成とアップデートサイクルあるゲームアプリケーションの构成とアップデートサイクル
あるゲームアプリケーションの构成とアップデートサイクル
Kentaro Iizuka
?

Viewers also liked (8)

Type Safe Assets Handling in Swift
Type Safe Assets Handling in SwiftType Safe Assets Handling in Swift
Type Safe Assets Handling in Swift
Kazunobu Tasaka
?
My first tvOS
My first tvOSMy first tvOS
My first tvOS
toyship
?
Caffeでお手軽本格ディープラーニングアプリ @potatotips
Caffeでお手軽本格ディープラーニングアプリ @potatotipsCaffeでお手軽本格ディープラーニングアプリ @potatotips
Caffeでお手軽本格ディープラーニングアプリ @potatotips
Takuya Matsuyama
?
Introducing Cardio
Introducing CardioIntroducing Cardio
Introducing Cardio
Yusuke Kita
?
Swift Scriptingのすゝめ
Swift ScriptingのすゝめSwift Scriptingのすゝめ
Swift Scriptingのすゝめ
Yuichiro Takahashi
?
View Monitoring Tips
View Monitoring TipsView Monitoring Tips
View Monitoring Tips
Daisuke Yamashita
?
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
今城 善矩
?
迟惫翱厂ネイティブアプリを作る
迟惫翱厂ネイティブアプリを作る迟惫翱厂ネイティブアプリを作る
迟惫翱厂ネイティブアプリを作る
Tomoki Hasegawa
?
Type Safe Assets Handling in Swift
Type Safe Assets Handling in SwiftType Safe Assets Handling in Swift
Type Safe Assets Handling in Swift
Kazunobu Tasaka
?
My first tvOS
My first tvOSMy first tvOS
My first tvOS
toyship
?
Caffeでお手軽本格ディープラーニングアプリ @potatotips
Caffeでお手軽本格ディープラーニングアプリ @potatotipsCaffeでお手軽本格ディープラーニングアプリ @potatotips
Caffeでお手軽本格ディープラーニングアプリ @potatotips
Takuya Matsuyama
?
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
贬别补濒迟丑碍颈迟て?日别のテ?ータを一度に取得する
今城 善矩
?
迟惫翱厂ネイティブアプリを作る
迟惫翱厂ネイティブアプリを作る迟惫翱厂ネイティブアプリを作る
迟惫翱厂ネイティブアプリを作る
Tomoki Hasegawa
?

Similar to Objective-C Generics (20)

齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
Yoichiro Sakurai
?
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
?
NET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ APINET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ API
TomomitsuKusaba
?
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
Tomoki Hasegawa
?
0831 node学園lt
0831 node学園lt0831 node学園lt
0831 node学園lt
Kazuya Fukumoto
?
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
?
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Kazumi OHIRA
?
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
?
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code
n-yuki
?
【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!
日本マイクロソフト株式会社
?
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
Yoshitaka Seo
?
翱厂厂を利用したプロジェクト管理
翱厂厂を利用したプロジェクト管理翱厂厂を利用したプロジェクト管理
翱厂厂を利用したプロジェクト管理
Tadashi Miyazato
?
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
日本マイクロソフト株式会社
?
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
?
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
?
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
?
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-devVs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Shotaro Suzuki
?
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
?
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
?
第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会
codeal
?
齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
齿肠辞诲别の罢补谤驳别迟についての罢滨笔厂
Yoichiro Sakurai
?
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
?
NET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ APINET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ API
TomomitsuKusaba
?
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
翱产箩别肠迟颈惫别-颁フ?ロク?ラマのための蝉飞颈蹿迟导入法
Tomoki Hasegawa
?
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
?
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Kazumi OHIRA
?
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
?
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code
n-yuki
?
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
Yoshitaka Seo
?
翱厂厂を利用したプロジェクト管理
翱厂厂を利用したプロジェクト管理翱厂厂を利用したプロジェクト管理
翱厂厂を利用したプロジェクト管理
Tadashi Miyazato
?
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
日本マイクロソフト株式会社
?
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
?
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
?
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
?
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-devVs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Shotaro Suzuki
?
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
?
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
?
第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会
codeal
?

More from Goichi Hirakawa (6)

Strings and characters in swift
Strings and characters in swiftStrings and characters in swift
Strings and characters in swift
Goichi Hirakawa
?
WebKit Overview
WebKit OverviewWebKit Overview
WebKit Overview
Goichi Hirakawa
?
Server-side Swift
Server-side SwiftServer-side Swift
Server-side Swift
Goichi Hirakawa
?
Swift Type System
Swift Type SystemSwift Type System
Swift Type System
Goichi Hirakawa
?
Swift API Design Guidelines (dec 3, 2015)
Swift API Design Guidelines (dec 3, 2015)Swift API Design Guidelines (dec 3, 2015)
Swift API Design Guidelines (dec 3, 2015)
Goichi Hirakawa
?
Strings and Characters in Swift
Strings and Characters in SwiftStrings and Characters in Swift
Strings and Characters in Swift
Goichi Hirakawa
?

Objective-C Generics