Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
†黒魔術† と Annotation と AspectJ
Search
kaiinui
August 23, 2014
Technology
3
1.2k
†黒魔術† と Annotation と AspectJ
Annotation と AspectJ で楽しい黒魔術 (▰╹◡╹▰)
kaiinui
August 23, 2014
Tweet
Share
More Decks by kaiinui
See All by kaiinui
Black Magic in Java
kaiinui
1
590
API開発自動化と量産
kaiinui
1
460
Other Decks in Technology
See All in Technology
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
1
220
AI時代のPMに求められるのは 「Ops」と「Enablement」
shimotaroo
1
330
Lambda Durable FunctionsでStep Functionsの代わりはできるのかを試してみた
smt7174
2
140
漸進的過負荷の原則
sansantech
PRO
3
380
ファシリテーション勉強中 その場に何が求められるかを考えるようになるまで / 20260123 Naoki Takahashi
shift_evolve
PRO
3
380
ドメイン駆動セキュリティへの道しるべ
pandayumi
0
180
Web Intelligence and Visual Media Analytics
weblyzard
PRO
1
6.8k
AWS Amplify Conference 2026 - 仕様からリリースまで一気通貫生成 AI 時代のフルスタック開発
inariku
3
380
BPaaSオペレーション・kubell社内 n8n活用による効率化検証事例紹介
kentarofujii
0
290
re:Inventで見つけた「運用を捨てる」技術。
ezaki
1
140
[Iceberg Meetup #4] ゼロからはじめる: Apache Icebergとはなにか? / Apache Iceberg for Beginners
databricksjapan
0
430
Riverpod3.xで実現する実践的UI実装
fumiyasac0921
2
340
Featured
See All Featured
Visualization
eitanlees
150
16k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
560
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
100
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
A Soul's Torment
seathinner
5
2.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
260
How GitHub (no longer) Works
holman
316
140k
GraphQLとの向き合い方2022年版
quramy
50
14k
Rails Girls Zürich Keynote
gr2m
96
14k
Designing Powerful Visuals for Engaging Learning
tmiket
0
210
The Spectacular Lies of Maps
axbom
PRO
1
450
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Transcript
†黒魔術† @_kaiinui
=
結論から? (▰╹◡╹▰)
@PotatoTip をつけるだけでトースト
Java の黒魔術: Annotation
Java の黒魔術: Annotation どうみても黒魔術
Java の黒魔術: Annotation Annotation as a code?
良さ? ・宣言的さ ・コードと「宣言」を分離出来る ・コードが短くなったり ・ミスを防止したり(@Nullable)
・ButterKnife の @InjectView ・Support Annotation の @NonNull ・AndroidAnnotations の @UiThread
・Rails の has_many 「する」と「である」を分ける
良い例: ButterKnife の @InjectView
する textView = (TextView) findViewById(R.id.text); である @InjectView(R.id.text) textView;
する runOnUiThread(new Runnable {...}); である @UiThread public void showToast() {..};
さて
Bring your own Annotation!
ツール • AspectJ • java.lang.annotation
初級編 Annotation を普通に使う(AspectJ じゃない)
1. Annotation をつくる(カンタン)
2. 黒魔術
3. 出来た
4. 完成 BananaKnife
中級編 AspectJ でアスペクトを織り込む
1. Annotation をつくる(カンタン)
2. AspectJ で黒魔術
@PotatoTip をつけるだけでトースト
AspectJ の良い例: Hugo
AspectJ の良い例: Hugo あまりに便利なので iOS 版もつくった kaiinui/KILogInjector
一言で? ・Annotation で @Hoge がついたメソッド、フィー ルド、クラスとかを弄れたりする ・AspectJ で処理をフックしてほげほげ、といった 処理がカンタンに書ける。 (▰╹◡╹▰)
きみだけのさいきょう @Annotation をつくろう!
「モデルと API 辛い」周りの話がしたかった あと自分で作るとかどうでもいいので既にある Annotation をまず使おう (▰╹◡╹▰) 最後に