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
大切なことは全てLintが教えてくれた
Search
Ryota Sakaguchi
March 05, 2021
Technology
0
41
大切なことは全てLintが教えてくれた
YUMEMI.apk #3で発表した内容です。
Ryota Sakaguchi
March 05, 2021
Tweet
Share
More Decks by Ryota Sakaguchi
See All by Ryota Sakaguchi
時間を意識する推しツールたち / Time-aware tools
kuluna
1
570
DroidKaigi2020 - Data Bindingのイロハ
kuluna
1
1.1k
チームでつくる RESTful API
kuluna
1
12k
クリぼっちの自分が信じられるのはもはや型のみである
kuluna
1
450
Other Decks in Technology
See All in Technology
mikroBus HAT を用いた簡易ベアメタル開発
tarotene
0
330
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
110
私はこうやってマインドマップでテストすることを出す!
mineo_matsuya
0
340
Team Dynamicsを目指すウイングアーク1stのQAチーム
sadonosake
1
320
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
470
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
280
強いチームと開発生産性
onk
PRO
29
9.9k
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.7k
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
340
Lambdaと地方とコミュニティ
miu_crescent
2
340
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
340
Microsoft Intune アプリのトラブルシューティング
sophiakunii
1
450
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
We Have a Design System, Now What?
morganepeng
50
7.2k
Producing Creativity
orderedlist
PRO
341
39k
Designing for Performance
lara
604
68k
Practical Orchestrator
shlominoach
186
10k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
The Language of Interfaces
destraynor
154
24k
It's Worth the Effort
3n
183
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Transcript
大切なことは全て Lintが教えてくれた YUMEMI.apk #3
kuluna 株式会社Showcase Gig エンジニア募集中! SETエンジニアやってます Twitter: @kuluna I Love Kirby!
SETエンジニアって? Software Engineer in Test テストをがんばるエンジニア💪
普段やっていること • リグレッションテストの自動化 ◦ メインはこれ! • テスト仕様書の修正 ◦ 時間が経つと実装とテストが乖離することもしばしば... •
コードレビュー ◦ 普段から良いコードを書くのがだいじ!
レビュー 「この関数は使わずにこっち使ったほうがいいです〜」 「指摘あざす!直しました!」 「Thx!ちなみにこの関数って他でも使ってます?」 「あ〜結構使ってます〜全部リネームは厳しいです」 「時間とれたらなおしましょう〜」
レビュー 「この関数は使わずにこっち使ったほうがいいです〜」 「指摘あざます!直しました!」 「Thx!ちなみにこの関数って他でも使ってます?」 「あ〜結構使ってます〜全部リネームは厳しいです」 「時間とれたらなおしましょう〜」 その日が来ることは 二度となかったという...
1. コードレビューだけでは改善が追いつかない 2. 現時点では問題ないから優先度は下がりがち 3. 時間が経つと忘れる 4. 思い出した時にレビューで指摘する 5. 1.に戻る
Lint コード書いてるとたまに黄色のハイライトや取り消し線で教えて くれるやつ
Lint もとはC言語向けのツール 他の言語もこの仕組みを取り入れていった結果、Lintは言語のより良い書 き方を提案してくれるツールとして定着 Android向けにもいくつかLintが提供されている Java Lint Kotlin Lint Android
Studio(Intellij IDEA) Lint Android Lint
Lintをうまく使えば・・・ 開発者に常に修正したほうが良い箇所を教えてくれる (モノによっては) 代替案を提示できる (モノによっては) 自動で修正できる 指摘内容は自分で作れる!!
kuluna/DateUtilsCompat https://github.com/kuluna/DateUtilsCompat DateUtils.formatDateRangeは日本語のみ出力結果が微妙に異なる • 同じ日付の場合 4月29日 13時37分~15時37分 • 日付が異なる場合 4月29日
13:37~4月30日 13:37 • 年が異なる場合 2020年4月29日 13:37~2021年4月29日 13:37 「時分」と「:」の出力を統一するためのライブラリ
kuluna/DateUtilsCompat repositories { jcenter() } dependencies { implementation 'jp.kuluna:dateutilscompat:1.0.0' }
👈
kuluna/DateUtilsCompat オリジナルと比較して引数が1つ増えている Enumでどちらか選ぶ .COLONと.KANJIの2つ
kuluna/DateUtilsCompat このライブラリを使えば出力が統一される しかし、DateUtilsではなくDateUtilsCompatを使う必要がある えっ、これをまたコードレビューで指摘するんですか!
👍😁
Android Custom Lint Custom Lintの実装はここでは解説しきれないので、 DateUtilsCompatのソースを見てください! Lintのコードは40行ぐらいでできた👍 ぽこぽこ作っていくものではないけど、刺さる箇所は絶対あるので お試しに何か作ってみると良いかも
...これってホットな話題なの? Android Lintが自作できるというのは数年前からある _人人人人人人人人人人人人人人人人人人_ > 調べる度にAPI変わってるのでホット <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄