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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryota Sakaguchi
March 05, 2021
Technology
58
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大切なことは全てLintが教えてくれた
YUMEMI.apk #3で発表した内容です。
Ryota Sakaguchi
March 05, 2021
More Decks by Ryota Sakaguchi
See All by Ryota Sakaguchi
時間を意識する推しツールたち / Time-aware tools
kuluna
1
640
DroidKaigi2020 - Data Bindingのイロハ
kuluna
1
1.5k
チームでつくる RESTful API
kuluna
1
12k
クリぼっちの自分が信じられるのはもはや型のみである
kuluna
1
490
Other Decks in Technology
See All in Technology
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
650
アカウントが増えてからでは遅い? ~ マルチアカウント統制の勘所 ~
kenichinakamura
0
250
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
260
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
300
発表と総括 / Presentations and Summary
ks91
PRO
0
130
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
550
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
270
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
100
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
2
690
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
170
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Building Applications with DynamoDB
mza
96
7.1k
Music & Morning Musume
bryan
47
7.3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
The SEO identity crisis: Don't let AI make you average
varn
0
510
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A Soul's Torment
seathinner
6
3.1k
Site-Speed That Sticks
csswizardry
13
1.3k
New Earth Scene 8
popppiees
3
2.4k
Automating Front-end Workflow
addyosmani
1370
210k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
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^ ̄