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
Ankoでコンポーネント指向
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Keita Kagurazaka
December 13, 2016
Programming
8.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ankoでコンポーネント指向
第4回Kotlin勉強会 (
https://connpass.com/event/44710/
) で発表した資料です。
Keita Kagurazaka
December 13, 2016
More Decks by Keita Kagurazaka
See All by Keita Kagurazaka
三者三様 宣言的UI
kkagurazaka
0
520
SELECT FOR UPDATEの話
kkagurazaka
0
490
Mobileアプリのアーキテクチャ設計法
kkagurazaka
2
1.5k
原理から完全理解するDagger Hilt Migration
kkagurazaka
1
2k
今後のJetpackでAndroid開発はこう変わる!
kkagurazaka
16
6.4k
外部SDKのViewにマスク処理をする方法と罠
kkagurazaka
0
1.1k
AWAのフルリニューアルを支えたアーキテクチャ
kkagurazaka
1
970
CQRS Architecture on Android
kkagurazaka
7
3.2k
suspending functionの裏側
kkagurazaka
3
480
Other Decks in Programming
See All in Programming
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
110
Oxlintのカスタムルールの現況
syumai
6
1.1k
OSもどきOS
arkw
0
540
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
Oxcを導入して開発体験が向上した話
yug1224
4
310
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.1k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
320
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
390
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
220
Webフレームワークの ベンチマークについて
yusukebe
0
160
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.4k
Bash Introduction
62gerente
615
220k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
KATA
mclloyd
PRO
35
15k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Producing Creativity
orderedlist
PRO
348
40k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Transcript
Ankoでコンポーネント指向 2016/12/13 第4回 Kotlin勉強会 @ Sansan @kkagurazaka
自己紹介 • @kkagurazaka • 普段はC++で画像処理とか • Kotlin lover • 趣味Androider
RxProperty for Android https://github.com/k-kagurazaka/rx-property-android
初LTです
コンポーネント指向 • 近年Webフロント界隈で注目 • プレゼンテーション層のパラダイム
普通のModel-View-Presenter View Presenter • View Template • UI State •
Event Handling • View Controller
普通のModel-View-ViewModel View ViewModel • View Template • Event Handling •
UI State
コンポーネント指向 AllTasksComponent View ViewModel ToolbarComponent View ViewModel TaskListComponent View ViewModel
TaskComponent View ViewModel FABComponent View ViewModel
Reactの場合 UI State Event Handling View Template
なにが嬉しいのか? • 関心の分離 View TemplateとPresentation Logicの分離は「技術による分離」 • カプセル化 1つのコンポーネントに関心事項が収まる •
再利用性 一度定義したコンポーネントは使い回せる
Presentational / Container Component Presentational Container 関心 どう見えるか どう動くか データ読み込み
親コンポーネントから与え られる モデルから取得 データ書き込み 親コンポーネントから与え られるコールバックを呼ぶ モデルのロジックをキック 内部状態 (なるべく)持たない 持つ
Presentational / Container Component Container Presentational Container Presentational Presentational Presentational
Presentational Presentational Presentational
Androidの場合は?
• Container Component ◦ Activity / Fragment ◦ イベントを受けてモデルをキックする、実質Presenter •
Presentational Component ◦ (Custom) View / Composite View ◦ 親から受け取った値を表示するだけ • View Template ◦ layout.xml + DataBinding ◦ <include>でコンポーネントのネストを実現
layout.xml + DataBindingの辛み • XMLそのものが辛い ◦ タイプセーフじゃない ◦ DataBinding周りの補完が不十分 ◦
Javaコードと行ったり来たり • エラーの原因がわかりにくい ◦ Android Studioでうまくエラーメッセージ出ない経験ないですか? • Kotlinとの相性がイマイチ ◦ 大分マシにはなったものの、kaptは問題が起きやすい
None
Anko • KotlinでAndroidアプリ開発するのに便利な機能たくさん ◦ layout.xmlをKotlin上でDSLとして・・・ ◦ 非同期処理を簡単に・・・ ◦ SQLiteも簡単に・・・ ◦
その他便利なユーティリティ多数 • JetBrains製
Layout DSL • タイプセーフ・nullセーフ • 再利用性が高い • パース時間ゼロ • DataBinding不要
⇒コンポーネント作れる!
やってみよう
None
1. AnkoComponentを継承してLayout DSL
2. 外部とのI/F定義 ダサい・・・
Bound call references (since Kotlin 1.1)
Javaのgetter/setterから自動生成されたプロパティには未対応
気を取り直して・・・
3. DSL内で使える拡張関数を定義 あとは同じようにコンポーネントを作っていくだけ!
まとめ • Ankoを使えばAndroidでもコンポーネント指向はできる • ただし、まだネタ枠 ◦ タブレット対応どうする? ◦ アーキテクチャどうする? ◦
propsのバケツリレーどうする?
Thanks!