SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
APT




2010   12   23         1
@vvakame


                 Kinect   ↓

                               Android
                               appengine

2010   12   23                             2
APT



2010   12   23         3
APT
                 • Annotation Processing Tool

                 •

                 •

                     •


                     •

2010   12   23                                  4
meets Slim3




                       http://amzn.to/e8noW8

2010   12   23                                 5
Slim3        APT
                 • Entity ⇔ Model

                  • Map<String, Object>
                      POJO

                  •

                  • Reflection


2010   12   23                            6
←                    →
            •    Reflection   •


            •                •


            •                •


            •                •




2010   12   23                       7
                 
                 JavaSE5   JavaSE6   API
                 Slim3                   JavaSE5


                 JavaSE5 → com.sun.mirror     .
                 JavaSE6 → javax.model      . JSR 269


                     JavaSE6   API

2010   12   23                                          8
• AbstractProcessor
                   •
                 • Messager
                   •
                      Warning    Error
                 • ProcessingEnvironment
                   •               Elements, Types (Util   )

                 • RoundEnvironment
                   •
                     (Annotation    )

2010   12   23                                                 9
• Element
                  •


                  • javax.lang.model.element.*
                 • TypeMirror
                  •          Primitive
                  • javax.lang.model.type.*

2010   12   23                                   10
•       APT        jar

                 • META-INF/services/
                    javax.annotation.processing.Processor

                     •             Processor      FQN
                                FQN = package       +


2010   12   23                                              11
2010   12   23   12
• @Kazzz
                   • http://d.hatena.ne.jp/Kazzz/20101208
                 • Aptina

                   •        Processor     JUnit
                   • http://d.hatena.ne.jp/koichik/20090620
                 • printf

                   • Eclipse   ErrorLog

2010   12   23                                                13
×
                 •



                     •

                     • 2pass
                               →


2010   12   23                         14
FQN
                 •                      import

                     •

                         • List   java.util.List

                         •




2010   12   23                                     15
•

                     •

                     •

                 •

                     •

2010   12   23           16
• APT

                  •

                  • Annotation
                                         Annotation
                          …
                  •
                      • Retention SOURCE→CLASS …orz

2010   12   23                                        17
2010   12   23   18
JsonPullParser

             • https://github.com/vvakame/JSONPullParser

                 • APT Json→POJO             Java

                 • Android           http://bit.ly/hFTbtP

                  • Tweet          →1Tweet

                 • pom.xml   , Benchmark,        patch



2010   12   23                                              19
• 6000      Tweet         (MacBookPro)
                 • JsonPullParser (POJO Mapping)
                  • 1200ms
                 • Jsonic (POJO Mapping)
                  • 4400ms
                 • JsonLib(JSONArray convert)
                  • 3300ms
                 • Jackson
                  •                  orz

2010   12   23                                            20
• ClassWriterHelper.java
                  •                , 2pass   etc

                 • Log.java
                  • android.util.Log   APT



2010   12   23                                     21
Slim3 1.0.6
                               2.3.1




2010   12   23                         22

Contenu connexe

En vedette

なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発Hiroshi Kikuchi
 
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevSwift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevTomohiro Kumagai
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationichiko_revjune
 
Coding in the context era
Coding in the context eraCoding in the context era
Coding in the context eralestrrat
 
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02Masahiro Hidaka
 

En vedette (6)

Dependency injection
Dependency injectionDependency injection
Dependency injection
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
 
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevSwift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile application
 
Coding in the context era
Coding in the context eraCoding in the context era
Coding in the context era
 
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02
 

Similaire à Androidで部 第7回 APTすごい

Galaxy Developer Conference 2010 レポート
Galaxy Developer Conference 2010 レポートGalaxy Developer Conference 2010 レポート
Galaxy Developer Conference 2010 レポートMitsuteru Nakao
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveAlexandre Morgaut
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24quicky_osm
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24quicky_osm
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016Sébastien Le Marchand
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010JUG Lausanne
 

Similaire à Androidで部 第7回 APTすごい (6)

Galaxy Developer Conference 2010 レポート
Galaxy Developer Conference 2010 レポートGalaxy Developer Conference 2010 レポート
Galaxy Developer Conference 2010 レポート
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 

Plus de Masahiro Wakame

GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話Masahiro Wakame
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るMasahiro Wakame
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべきMasahiro Wakame
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKMasahiro Wakame
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight schoolMasahiro Wakame
 
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Google Glassでできること XE11版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE11版 最新開発情報 Mirror API & GDK
Google Glassでできること XE11版 最新開発情報 Mirror API & GDKMasahiro Wakame
 
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例Masahiro Wakame
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築Masahiro Wakame
 
Firefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSFirefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSMasahiro Wakame
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会Masahiro Wakame
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までMasahiro Wakame
 
俺とお前とGoogleware
俺とお前とGoogleware俺とお前とGoogleware
俺とお前とGooglewareMasahiro Wakame
 
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったDatastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったMasahiro Wakame
 

Plus de Masahiro Wakame (20)

GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべき
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
Google Glass XE17版
Google Glass XE17版Google Glass XE17版
Google Glass XE17版
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school
 
TypeScript 独習会
TypeScript 独習会TypeScript 独習会
TypeScript 独習会
 
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Google Glassでできること XE11版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE11版 最新開発情報 Mirror API & GDK
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
 
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
 
Firefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSFirefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJS
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
 
俺とお前とGoogleware
俺とお前とGoogleware俺とお前とGoogleware
俺とお前とGoogleware
 
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったDatastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
 
TypeScript 勉強会
TypeScript 勉強会TypeScript 勉強会
TypeScript 勉強会
 
TypeScript Hands-on
TypeScript Hands-onTypeScript Hands-on
TypeScript Hands-on
 

Androidで部 第7回 APTすごい

  • 1. APT 2010 12 23 1
  • 2. @vvakame Kinect ↓ Android appengine 2010 12 23 2
  • 3. APT 2010 12 23 3
  • 4. APT • Annotation Processing Tool • • • • 2010 12 23 4
  • 5. meets Slim3 http://amzn.to/e8noW8 2010 12 23 5
  • 6. Slim3 APT • Entity ⇔ Model • Map<String, Object> POJO • • Reflection 2010 12 23 6
  • 7. → • Reflection • • • • • • • 2010 12 23 7
  • 8.  JavaSE5 JavaSE6 API Slim3 JavaSE5 JavaSE5 → com.sun.mirror . JavaSE6 → javax.model . JSR 269 JavaSE6 API 2010 12 23 8
  • 9. • AbstractProcessor • • Messager • Warning Error • ProcessingEnvironment • Elements, Types (Util ) • RoundEnvironment • (Annotation ) 2010 12 23 9
  • 10. • Element • • javax.lang.model.element.* • TypeMirror • Primitive • javax.lang.model.type.* 2010 12 23 10
  • 11. APT jar • META-INF/services/ javax.annotation.processing.Processor • Processor FQN FQN = package + 2010 12 23 11
  • 12. 2010 12 23 12
  • 13. • @Kazzz • http://d.hatena.ne.jp/Kazzz/20101208 • Aptina • Processor JUnit • http://d.hatena.ne.jp/koichik/20090620 • printf • Eclipse ErrorLog 2010 12 23 13
  • 14. × • • • 2pass → 2010 12 23 14
  • 15. FQN • import • • List java.util.List • 2010 12 23 15
  • 16. • • • • 2010 12 23 16
  • 17. • APT • • Annotation Annotation … • • Retention SOURCE→CLASS …orz 2010 12 23 17
  • 18. 2010 12 23 18
  • 19. JsonPullParser • https://github.com/vvakame/JSONPullParser • APT Json→POJO Java • Android http://bit.ly/hFTbtP • Tweet →1Tweet • pom.xml , Benchmark, patch 2010 12 23 19
  • 20. • 6000 Tweet (MacBookPro) • JsonPullParser (POJO Mapping) • 1200ms • Jsonic (POJO Mapping) • 4400ms • JsonLib(JSONArray convert) • 3300ms • Jackson • orz 2010 12 23 20
  • 21. • ClassWriterHelper.java • , 2pass etc • Log.java • android.util.Log APT 2010 12 23 21
  • 22. Slim3 1.0.6 2.3.1 2010 12 23 22