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
40
KMPとApolloを利用したマルチプラットフォーム開発
HAMADA
May 29, 2024
Tweet
Share
More Decks by HAMADA
See All by HAMADA
Unity as a Library で 3Dモデルを表示してみた話
hamashle
0
27
AndroidのWidget作ってみた
hamashle
0
13
Hiltのありがたさを知る
hamashle
0
11
Featured
See All Featured
Visualization
eitanlees
146
15k
Designing Experiences People Love
moore
138
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Producing Creativity
orderedlist
PRO
342
39k
Automating Front-end Workflow
addyosmani
1366
200k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
1
120
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Mobile First: as difficult as doing things right
swwweet
222
9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
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の 次回作にご期待ください
ご清聴ありがとう ありがとうございました
今回のリポジトリ