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
クラウドセキュリティの進化 — AWSの20年を振り返る
kei4eva4
0
160
Proxmoxで作る自宅クラウド入門
koinunopochi
0
180
Amazon Bedrock AgentCore EvaluationsでAIエージェントを評価してみよう!
yuu551
0
170
Vivre en Bitcoin : le tutoriel que votre banquier ne veut pas que vous voyiez
rlifchitz
0
360
re:Inventで出たインフラエンジニアが嬉しかったアップデート
nagisa53
4
210
Claude Codeベストプラクティスまとめ
minorun365
44
25k
いよいよ仕事を奪われそうな波が来たぜ
kazzpapa3
2
240
ドキュメントからはじめる未来のソフトウェア
pkshadeck
3
1k
ドメイン駆動セキュリティへの道しるべ
pandayumi
0
180
ビジュアルプログラミングIoTLT vol.22
1ftseabass
PRO
0
140
ALB「証明書上限問題」からの脱却
nishiokashinji
0
250
エンジニアとして長く走るために気づいた2つのこと_大賀愛一郎
nanaism
1
250
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
560
Ethics towards AI in product and experience design
skipperchong
2
180
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
110
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
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 をまず使おう (▰╹◡╹▰) 最後に