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
98
KMPとApolloを利用したマルチプラットフォーム開発
HAMADA
May 29, 2024
Tweet
Share
More Decks by HAMADA
See All by HAMADA
Unity as a Library で 3Dモデルを表示してみた話
hamashle
0
43
AndroidのWidget作ってみた
hamashle
0
29
Hiltのありがたさを知る
hamashle
0
18
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
78
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
From π to Pie charts
rasagy
0
100
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
34
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Documentation Writing (for coders)
carmenintech
77
5.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
170
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
420
We Have a Design System, Now What?
morganepeng
54
8k
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の 次回作にご期待ください
ご清聴ありがとう ありがとうございました
今回のリポジトリ