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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kaiinui
August 23, 2014
Technology
1.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
†黒魔術† と Annotation と AspectJ
Annotation と AspectJ で楽しい黒魔術 (▰╹◡╹▰)
kaiinui
August 23, 2014
More Decks by kaiinui
See All by kaiinui
Black Magic in Java
kaiinui
1
620
API開発自動化と量産
kaiinui
1
470
Other Decks in Technology
See All in Technology
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
150
手塩にかけりゃいいってもんじゃない
ming_ayami
0
610
ザ・データベース、MySQL ~ OSC 2026 Sendai ~
sakaik
0
150
Lightning近況報告
kozy4324
0
210
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
280
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
190
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
SONiCの統計情報を取得したい
sonic
0
250
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
270
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.1k
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
19
6.5k
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
140
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Google's AI Overviews - The New Search
badams
0
1k
The browser strikes back
jonoalderson
0
1.3k
GitHub's CSS Performance
jonrohan
1033
470k
Rails Girls Zürich Keynote
gr2m
96
14k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
How GitHub (no longer) Works
holman
316
150k
A Soul's Torment
seathinner
6
3k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
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 をまず使おう (▰╹◡╹▰) 最後に