Slide 1

Slide 1 text

†黒魔術† @_kaiinui

Slide 2

Slide 2 text

=

Slide 3

Slide 3 text

結論から? (▰╹◡╹▰)

Slide 4

Slide 4 text

@PotatoTip をつけるだけでトースト

Slide 5

Slide 5 text

Java の黒魔術: Annotation

Slide 6

Slide 6 text

Java の黒魔術: Annotation どうみても黒魔術

Slide 7

Slide 7 text

Java の黒魔術: Annotation Annotation as a code?

Slide 8

Slide 8 text

良さ? ・宣言的さ ・コードと「宣言」を分離出来る ・コードが短くなったり ・ミスを防止したり(@Nullable)

Slide 9

Slide 9 text

・ButterKnife の @InjectView ・Support Annotation の @NonNull ・AndroidAnnotations の @UiThread ・Rails の has_many 「する」と「である」を分ける

Slide 10

Slide 10 text

良い例: ButterKnife の @InjectView

Slide 11

Slide 11 text

する textView = (TextView) findViewById(R.id.text); である @InjectView(R.id.text) textView;

Slide 12

Slide 12 text

する runOnUiThread(new Runnable {...}); である @UiThread public void showToast() {..};

Slide 13

Slide 13 text

さて

Slide 14

Slide 14 text

Bring your own Annotation!

Slide 15

Slide 15 text

ツール ● AspectJ ● java.lang.annotation

Slide 16

Slide 16 text

初級編 Annotation を普通に使う(AspectJ じゃない)

Slide 17

Slide 17 text

1. Annotation をつくる(カンタン)

Slide 18

Slide 18 text

2. 黒魔術

Slide 19

Slide 19 text

3. 出来た

Slide 20

Slide 20 text

4. 完成 BananaKnife

Slide 21

Slide 21 text

中級編 AspectJ でアスペクトを織り込む

Slide 22

Slide 22 text

1. Annotation をつくる(カンタン)

Slide 23

Slide 23 text

2. AspectJ で黒魔術

Slide 24

Slide 24 text

@PotatoTip をつけるだけでトースト

Slide 25

Slide 25 text

AspectJ の良い例: Hugo

Slide 26

Slide 26 text

AspectJ の良い例: Hugo あまりに便利なので iOS 版もつくった kaiinui/KILogInjector

Slide 27

Slide 27 text

一言で? ・Annotation で @Hoge がついたメソッド、フィー ルド、クラスとかを弄れたりする ・AspectJ で処理をフックしてほげほげ、といった 処理がカンタンに書ける。 (▰╹◡╹▰)

Slide 28

Slide 28 text

きみだけのさいきょう @Annotation をつくろう!

Slide 29

Slide 29 text

「モデルと API 辛い」周りの話がしたかった あと自分で作るとかどうでもいいので既にある Annotation をまず使おう (▰╹◡╹▰) 最後に