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
Android StudioのLiveTemplateの便利な使い方 / Android Li...
Search
shogo.yamada
July 11, 2023
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android StudioのLiveTemplateの便利な使い方 / Android LiveTemplate Method
shogo.yamada
July 11, 2023
More Decks by shogo.yamada
See All by shogo.yamada
Jetpack ComposeへのリファクタリングのTIPS: CustomViewの便利な使い方 / Refactoring TIPS to Jetpack Compose: Useful usage of CustomView
yshogo
0
1.1k
ZOZOの新規サービス 「FAANS」の開発 Android編/FAAN App Create on Android
yshogo
0
1.7k
PORT_Firebase___Algolia.pdf
yshogo
0
250
Flutter_meetup_tokyo__10.pdf
yshogo
0
6.1k
PORT Firebase x Flutter
yshogo
0
470
ZOZOTech meetup Frontend #10
yshogo
2
1.8k
flutter-meetup.pdf
yshogo
0
98
Potetochips #61
yshogo
1
570
Firebase ML Kitを使った デモアプリ活用事例 @Google App DOJO
yshogo
1
220
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Why Our Code Smells
bkeepers
PRO
340
58k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
430
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
First, design no harm
axbom
PRO
2
1.2k
Balancing Empowerment & Direction
lara
6
1.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
A Soul's Torment
seathinner
6
2.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Code Reviewing Like a Champion
maltzj
528
40k
Transcript
Android StudioのLiveTemplateの便 利な使い方 株式会社ZOZO ブランドソリューション開発本部 フロントエンド部 FAANSブロック 山田 尚吾 Copyright
© ZOZO, Inc. ZOZO Tech Meetup - iOS/Android (2023/07/11)
© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 フロントエンド部 FAANSブロック Android担当 山田
尚吾 ・Twitter: @yshogo87 ・2018年入社(入社5年目)ZOZOTOWN → FAANS ・趣味は、読書、eスポーツ鑑賞 (読書好きの方お話しましょう!) 2
© ZOZO, Inc. アジェンダ 3 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. アジェンダ 4 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. ショップスタッフの販売サポートツール「FAANS」 5 引用: https://corp.zozo.com/news/20220802-zozomofaans/
© ZOZO, Inc. アジェンダ 6 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. 7 いつも同じようなコードを書いていませんか?
© ZOZO, Inc. 8 こんなのとか? @Provides fun provide〇〇Repository( context: Context,
provider: 〇〇Provider, ): 〇〇Repository = 〇〇RepositoryImpl( context, provider, )
© ZOZO, Inc. 9 こんなのとか? @HiltViewModel class 〇〇ViewModel @Inject constructor(
private val handle: SavedStateHandle, private val △△UseCase: △△UseCase, ) : ViewModel() { init { fetchInitialData() } }
© ZOZO, Inc. 10 これLiveTemplateで解決できる!
© ZOZO, Inc. 11 LiveTemplateとは Jetbrain社のIDEに搭載されている機能 ライブテンプレートの略語を展開すると、その変数は値を入力できる入力フィールドとして表示されるか、値に置 き換えられます。これらは、変更可能なデフォルト値または関数を使用して計算された値です。 引用:https://pleiades.io/help/idea/template-variables.html
© ZOZO, Inc. 12 テンプレートを作っておくと略語でテンプレを呼び出せる
© ZOZO, Inc. 13 テンプレートの設定方法と中身 設定→LiveTemplate @Provides fun provide$NAME$Repository( context:
Context, provider: $NAME$Provider, ): $NAME$Repository = $NAME$RepositoryImpl( context, provider, ) $NAME$ みたいな変数を駆使することで同じ名前を一気に設定したりできる。
© ZOZO, Inc. 14 デフォルトでもいろいろ設定してある fun newInstance($args$): $fragment$ { val
args = Bundle() $addArgs$ val fragment = $fragment$() fragment.arguments = args return fragment } Toastを作る(「toast」と入力) android.widget.Toast.makeText($context$, "$text$", Toast.LENGTH_SHORT).show() Fragmentのインスタンスを作る(「newInstance」と入力する)
© ZOZO, Inc. 15 そして、このLiveTemplateは Git管理できます!!
© ZOZO, Inc. アジェンダ 16 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. 17 Settings→Editor→File and Code Templates
© ZOZO, Inc. 18 Settings→Editor→File and Code Templates
© ZOZO, Inc. 19 .idea/fileTemplateにファイルが作成される LiveTemplateの設定 ProjectのLiveTemplateの設定な どが自動で格納
© ZOZO, Inc. 20 できたファイルをGitで管理すれば、 他のメンバーも同じテンプレートを使用できる このファイルをGit管理している。
© ZOZO, Inc. アジェンダ 21 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. 22 FAANS Androidチームが使うことになった経緯 Repositoryを分割するリファクタリングとテスト コードを書くタスクをやることになった。
© ZOZO, Inc. 23 FAANS Androidチームが使うことになった経緯 Repositoryを分割するリファクタリングとテスト コードを書くタスクをやることになった。 同じようなコードを何回も書くことに。。。
© ZOZO, Inc. 24 FAANS Androidチームが使うことになった経緯 import javax.inject.Inject interface TestRepository
{ fun hoge(hogeId: Int): Response<Hoge> } class TestRepositoryImpl @Inject constructor( apiProvider: Provider ) : TestRepository { fun hoge(hogeId: Int): Response<Hoge> { } } ・赤いところが、毎回違う定義 ・他が同じコード
© ZOZO, Inc. 25 @ExperimentalCoroutinesApi class HogeRepositoryTest { @MockK lateinit
var provider: HogeProvider @Before fun setUp() { MockKAnnotations.init(this) } @After fun tearDown() { clearAllMocks() } @Test fun ``() = runTest { Truth.assertThat(-1).isNotNull() } } ・テストコードも大枠は大体同じ
© ZOZO, Inc. 26 これらをLiveTemplateで解決する package ${PACKAGE_NAME} import javax.inject.Inject interface
${Name}Repository {} class ${Name}RepositoryImpl @Inject constructor( ) : ${Name}Repository { }
© ZOZO, Inc. 27 @ExperimentalCoroutinesApi class ${Name}RepositoryTest { @MockK lateinit
var repository: ${Name}Repository @Before fun setUp() { MockKAnnotations.init(this) } @After fun tearDown() { clearAllMocks() } @Test fun ``() = runBlockingTest { Truth.assertThat(-1).isNotNull() } }
© ZOZO, Inc. 28 packageを右クリック→New→選ぶ
© ZOZO, Inc. 29 他の活用事例 FragmentとViewModelを同時に作って、設計通りのコードを生 成する
© ZOZO, Inc. 30 @AndroidEntryPoint class ${Name}Fragment : Fragment() {
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View = ComposeView(requireContext()).apply { setViewCompositionStrategy( ViewCompositionStrategy.DisposeOnLifecycleDestroyed(viewLifecycleOwner), ) @HiltViewModel class ${Name}ViewModel @Inject constructor() : ViewModel() { }
© ZOZO, Inc. 31 このLiveTemplateを使えば、 実装の手間を省くことの他に設計を強制できる
© ZOZO, Inc. アジェンダ 32 • FAANSとは • LiveTemplateって知ってますか? •
LiveTemplateはgit管理ができる! • FAANS Andridチームで使うことになった経緯と使い方 • まとめ
© ZOZO, Inc. 33 まとめ • LiveTemplateはJetbrain社のIDEにある機能 • 個人レベルで定義可能 •
Git管理もできるので、「チームの実装を楽にするために」 も、「設計を強制するために」も使える
None