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.1k
†黒魔術† と Annotation と AspectJ
Annotation と AspectJ で楽しい黒魔術 (▰╹◡╹▰)
kaiinui
August 23, 2014
Tweet
Share
More Decks by kaiinui
See All by kaiinui
Black Magic in Java
kaiinui
1
450
API開発自動化と量産
kaiinui
0
410
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
170
プロデザ! BY リクルート vol.18_リクルートのリサーチ実践組織「リサーチブーストコミュニティ」
recruitengineers
PRO
3
260
JAWS-UG Bedrock Claude Night
yamahiro
3
430
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
730
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
170
Databricks:『生成AI World Cup』のご案内
databricksjapan
2
160
自動生成を活用した、運用保守コストを抑える Error/Alert/Runbook の一元集約管理 / Centralized management of Error/Alert/Runbook to minimize operational costs using automated code generation
biwashi
12
2.3k
Databricks における 『MLOps』
databricksjapan
2
160
JSON攻略法.pdf
miyakemito
8
4.3k
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.8k
VS CodeでAWSを操作しよう
smt7174
7
1.6k
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
270
Featured
See All Featured
Become a Pro
speakerdeck
PRO
10
4.5k
Bootstrapping a Software Product
garrettdimon
PRO
301
110k
How STYLIGHT went responsive
nonsquared
92
4.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
It's Worth the Effort
3n
180
27k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Adopting Sorbet at Scale
ufuk
67
8.6k
The Invisible Side of Design
smashingmag
294
49k
Producing Creativity
orderedlist
PRO
336
39k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
356
22k
The Power of CSS Pseudo Elements
geoffreycrofte
59
5k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
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 をまず使おう (▰╹◡╹▰) 最後に