Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆...

kazakago
February 07, 2018

Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!

DroidKaigi 2018発表資料
2018/02/08 16:50~17:20 Room5

スライド内のリンク・補足はこちらから
http://kazakago.hatenablog.jp/entry/2018/02/07/152011

kazakago

February 07, 2018
Tweet

More Decks by kazakago

Other Decks in Programming

Transcript

  1. 1. Annotation Processingͬͯʁ • Java5 SE͔Βొ৔ • @͔Β࢝·Δɺίʔ υʹରͯ͠஫ऍΛೖ ΕΔػೳ

    • @Override΍ @Deprecated͸Ұ౓ ͸ݟͨ͜ͱ͋Δ͸ͣ ←ίϨʂ ࣗ࡞Annotationͷྫ Α͘ݟΔAnnotationͷྫ
  2. 1. Annotation Processingͬͯʁ • ਖ਼֬ʹ͸Pluggable Annotation Processing API • Java6

    SE͔Βొ৔ • Ϗϧυ࣌ʹ Annotationʹରͯ͠ ಛఆͷॲཧΛߦ͏࢓ ૊Έ Ϗϧυ։࢝ ίϯύΠϧ࣮ߦ Annotation Processing࣮ߦ ͳΜ΍͔Μ΍ͷޙϏϧυऴྃ ※͍Ζ͍Ζ୺ંͬͯ·͢
  3. 3. JavaPoetͱKotlinPoet • جఈͱͳΔSuperΫϥεͷࢦఆ • ίϯετϥΫλͷఆٛ • private΍publicͳͲͷम০ࢠͷ෇༩ • ϝιουͷఆٛ

    • ϑΟʔϧυม਺ɺϩʔΧϧม਺ͷఆٛ • ͦͷଞ೚ҙͷίʔυͷૠೖ TypeSpecʹ͸ιʔείʔυΛಈతʹ
 هड़͢ΔͨΊʹ༷ʑͳ৘ใΛࢦఆͰ͖·͢
  4. 4. Android։ൃʹ͓͍ͯͲͷΑ͏ʹ׆༻Ͱ͖Δͷ͔ Application Module Processor Module Library Module Annotation Module

    ΞϓϦ ϥΠϒϥϦ Java Library Android Library Java Library annotationProcessor (kapt) implementation implementation api Android Application
  5. 5. Kotlin͔Β࢖͏৔߹ͷ஫ҙ఺ • ରࡦ1. ϦϑϨΫγϣϯͰΞΫηε͢ΔίʔυΛੜ੒͢ Δ • ϝϦοτɿJava͔Kotlin͔Λ΄΅ҙࣝͤͣ࢖͏͜ͱ͕ Ͱ͖Δ •

    σϝϦοτɿ࣮ߦ଎౓͕஗͘ɺProguard౳Λ༻͍ͨ ೉ಡԽΛߦ͏ͱ৔߹ʹΑͬͯ͸আ֎ઃఆ͕ඞཁʹͳ Δ