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
KMPとApolloを利用したマルチプラットフォーム開発
Search
HAMADA
May 29, 2024
0
88
KMPとApolloを利用したマルチプラットフォーム開発
HAMADA
May 29, 2024
Tweet
Share
More Decks by HAMADA
See All by HAMADA
Unity as a Library で 3Dモデルを表示してみた話
hamashle
0
38
AndroidのWidget作ってみた
hamashle
0
25
Hiltのありがたさを知る
hamashle
0
16
Featured
See All Featured
Docker and Python
trallard
45
3.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
A Tale of Four Properties
chriscoyier
160
23k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Producing Creativity
orderedlist
PRO
347
40k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Building an army of robots
kneath
306
46k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Transcript
KMPとApolloを利用した マルチプラットフォーム開発 2024年5月11日Zli大LT HAMADA
自己紹介 名前 濵田翔真 学年 会津大学 4回生 (22歳) -> 院進予定 出身 京都 ハンドルネーム HAMADA 趣味 龍角散
ソフトテニス 阪神タイガース 音楽(合唱,カ ラオケ,ウクレレ, オカリナ等々) 技術 Android バックエンド etc 情報発信 Twitter AHMOS_HMD はてなブログ hahahamada.hatenablog.com 特技 人の名前を覚えること
agenda KMPについて 経緯 アプリのMVP Apolloについて UI実装
経緯
経緯 最終的に、WEB, iOS, Androidでアプリケーションを作成 KMPとGraphQLについて学びたかった 所属しているサークルのギャラリーアプリを作ることに 以上のような理由から、今回の仕様でアプリ開発をすることに
None
アプリのMVP 制作作品の画像とその他情報が記載されたページの作成 ページをリスト表示する 画像表示 作品の情報を表示する 登録画面(サークルメンバーのみが使える)の作成
使用技術
使用技術 Kotlin Jetpack Compose Kotlin MultiPlatform Apollo GraphQL Coil Go
graphql-go DynamoDB Swift SwiftUI
さまざまなプラットフォーム向けのアプリケーションを作成し、 ネイティブプログラミングのメリットを維持しながらプラットフ ォーム間でコードを再利用可能することのできる技術 Kotlin Mutiplatform iOS、Android、デスクトップ、ウェブなどのプラットフォー ムに対応しています
KMPのプロジェクト 今回作成したプロジェクト以下には Shared TegeiGallery-Android TegeiGallery-iOS 大きく三つのディレクトリがある
KMPのプロジェクト 今回作成したプロジェクト以下には Shared ← iOSとAndroidで共有するコード TegeiGallery-Android TegeiGallery-iOS 大きく三つのディレクトリがある
KMPのプロジェクト 今回作成したプロジェクト以下には Shared TegeiGallery-Android ← Androidで利用するコード UI TegeiGallery-iOS 大きく三つのディレクトリがある
KMPのプロジェクト 今回作成したプロジェクト以下には Shared TegeiGallery-Android TegeiGallery-iOS ← iOSで利用するコード UI 大きく三つのディレクトリがある
Apollo Android GraphQLクエリからKotlin、Javaのモデルを生成するGraphQL クライアント
を追加する Apolloを使う sharedのbuild.gradle.ktsに以下を追加 pluginsに, soucesets commonMain.dependenciesに,
shared/commonMain/graphql に schema.graphqlsをおく Apolloを使う
schemaの定義をもとにqueryを作成 buildすると shared/build/generated/source/apollo/ commonMain/service/AllItemQuery が生成されます Apolloを使う
Repositoryでこんな感じで定義する Flowで実装しているので、Swift側では ObservableObjectにする必要がある Apolloを使う
UI実装
昨日、モックのUIが渡されました
AndroidのUIを実装してみた
iOSは...?
iOS経験が無さすぎて 間に合いませんでした....
共通化する部分と共通化しない部分の解釈が難しかった ObservableObjectへの変更が,できていないのでそこの部分 を実装する。 XCodeと少し仲良くなれた GraphQLへの理解が深まった KMPと言いつつ、commonMainが抽象化されていないので 改善する 展望と感想
HAMADAの 次回作にご期待ください
ご清聴ありがとう ありがとうございました
今回のリポジトリ