†黒魔術† と Annotation と AspectJ

C8c01faf0b26eedf0f0f81ebfadefe81?s=47 kaiinui
August 23, 2014

†黒魔術† と Annotation と AspectJ

Annotation と AspectJ で楽しい黒魔術 (▰╹◡╹▰)

C8c01faf0b26eedf0f0f81ebfadefe81?s=128

kaiinui

August 23, 2014
Tweet

Transcript

  1. †黒魔術† @_kaiinui

  2. =

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

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

  5. Java の黒魔術: Annotation

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

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

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

  9. ・ButterKnife の @InjectView ・Support Annotation の @NonNull ・AndroidAnnotations の @UiThread

    ・Rails の has_many 「する」と「である」を分ける
  10. 良い例: ButterKnife の @InjectView

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

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

  13. さて

  14. Bring your own Annotation!

  15. ツール • AspectJ • java.lang.annotation

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

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

  18. 2. 黒魔術

  19. 3. 出来た

  20. 4. 完成 BananaKnife

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

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

  23. 2. AspectJ で黒魔術

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

  25. AspectJ の良い例: Hugo

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

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

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

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