2025年12月22日 KMPとCMPでモバイルアプリを作ってみた Android 検索する Popular tags 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category モバイル Author 松田 SHARE 目次 KMPとは CMPとは 今回作ったアプリ KMP・CMPを使ってみて さいごに We are hiring! Content みなさん、こんにちは。Androidエンジニアの松田です。 AndroidエンジニアでありながらiPhoneユーザである大矛盾を抱える私は、Androidの技術でiOSアプリが作れたらいいのに・・と感じており、そんな中KMP・CMPに興味を持ちました。 最近色々な場面でKMP・CMPという単語を耳にする機会が増え、KMP・CMPが盛り上がっている中に私も混ざりたい!ということで、KMP・CMPを使って簡単なアプリを作ってみました。 本記事では、実際に作ってみて感じたことを紹介いたします。 本記事を読んでいただく方々にとって、KMP・CMPに興味を持つ第一歩になれたら嬉しいです。 KMPとは KMP (Kotlin Multiplatform) とは、Android / iOS / Web / Desktopなど、様々なプラットフォームで動くコードをKotlinで記述できるフレームワークです。 KMP = ロジック部分の実装を共通化できるフレームワーク、と捉えていただくのがわかりやすいかと思います。 CMPとは CMP (Compose Multiplatform)とは、KotlinとJetpack Composeを使って、Android / iOS / Web / Desktopなど、複数のプラットフォームでUIを共有できるフレームワークです。 CMP = UI部分の実装を共通化できるフレームワーク、と捉えていただくのがわかりやすいかと思います。 今回作ったアプリ ロジック部分の実装を共通化するKMPと、UI部分の実装を共通化するCMPを組み合わせて、今回は、飲食店検索アプリを作ってみました。 概要 指定した条件をもとに、飲食店を検索できるアプリです。 今回は無料で使用できるホットペッパーAPIを利用して、データを取得しました。 アプリを起動すると、最初に飲食店検索画面が表示されます。右下のフローティング アクション ボタン (FAB) から検索条件設定画面を開き、調べたい飲食店の条件を指定することができます。 今回は条件として、都道府県 / ジャンル / キーワード を指定できるよう実装しました。 https://sight-r.sts-inc.co.jp/wp/wp-content/uploads/2025/12/ios_demo.mp4 使用したIDE 今回は、信頼と実績のAndroid Studioを使用しました。 Android Studioの他に、IntelliJ IDEAでもKMP・CMPを利用することができます。 使用したライブラリ 今回以下のライブラリを使用しました。 Ktor 主にKotlinで書かれた、非同期クライアントおよびサーバー用のライブラリです。 APIとの通信を行うために使用しました。 Kamel CMPプロジェクトのために設計された、画像などの非同期メディアの読み込み・キャッシュ・デコードおよび表示を扱うためのライブラリです。 飲食店の画像を表示させるために使用しました。 KMP・CMPを使ってみて 実際にKMPとCMPを使ってみてよかった点、あまりよくなかったと感じた点をそれぞれ紹介します。実装してみて思ったことと、ビルドしたアプリを使ってみて思ったこととで、2つの視点から紹介します。 よかった点 実装してみて KotlinでiOSアプリが作れたことに感動しました。 Swiftへの苦手意識が強く、iOSアプリを実装するハードルが高かったのですが、親しみのあるKotlinでiOSアプリを作ることができて嬉しかったです。 Androidのネイティブアプリを作るのと同じ要領で実装できました。 個人的に、普段ネイティブアプリを作る感覚とほぼ変わらず実装できたように感じます。 Android Studioで最初に作られるフォルダ構成もわかりやすく、抵抗感なく実装に着手できました。 Androidを実装していたら、iOSでも動くアプリが作れた!くらいの感覚でした。(個人の感想です) アプリを使ってみて iOSとAndroidとで、UXの一貫性が保たれていました。 このアプリには最低限の機能しかありませんが、この範囲内では、動作や挙動に大きな違いはなく、スムーズに操作できました。 左からAndroid、iOS あまりよくなかった点 実装してみて ビルドが少し不安定でした。 ビルド時間が長い時で5〜10分ほどかかる場合があり、大規模なプロダクトの場合はさらに時間がかかるかも、と感じました。 CMPに関連するiOSファイルでビルドが失敗することがありましたが、翌日には問題なくビルドできるようになるケースもありました。明確な原因特定には至っていませんが、CMPは安定版として提供されているものの、比較的新しい技術である点も影響している可能性があると感じました。 ライブラリ選定が難しかったです。 KMPに対応しているライブラリかどうか判断するのに初めのうちは苦労しましたが、klibs.ioと呼ばれる、KMPライブラリの検索プラットフォームに出会い、ライブラリ選定時に活用しました。 アプリを使ってみて UI面で少し違和感を感じました。 プルダウンなどのUIパーツがAndroidすぎるため、iPhoneユーザからすると使った時に違和感を感じてしまうかもと感じました。(CMPで共通化しているため、当たり前なのですが・・) 左からAndroid、iOS さいごに KMPとCMPを組み合わせることで、KotlinでもiOSアプリを作ることができました。 実際に触ってみて、KMPによるロジック共通化については有効であり、開発スピードが向上すると感じましたが、CMPによるUI共通化については、ビルドの安定性やUI要件によっては課題が出るかも、と感じました。 そのため、プロダクトの仕様と相談しながら技術選定するのが良いかと思います。 プロダクトの規模が大きいものについては、ロジックを KMP で共通化し、UI は各 OS ごとに実装するのがよさそうです。 反対に規模が小さい場合や UI/UX の差異が大きな問題にならない場合は、KMP と CMP を組み合わせるのも一つの選択肢だと感じました。 最後まで読んでいただき、ありがとうございました。 We are hiring! 現在、システムサポート株式会社ではAndroid/iOSエンジニアを募集しております。 一緒にモバイルアプリチームを発展していく仲間を心よりお待ちしておりますので、何なりとお問い合わせください! キャリアサイト: コチラ doda / リクルートなどでも公開しておりますのでご確認ください。 必須要件 Swift、Kotlinいずれかを用いたモバイルアプリ開発の経験 歓迎条件 Webアプリケーション開発経験をお持ちで自己研鑽にてSwift、Kotlinを用いたモバイルアプリ開発を経験されている方 魅力 MAU200k+を誇る規模のモバイルアプリ開発なども行えるSIerとしては珍しいtoC向けアプリもあります! また、DroidKaigiやiOSDCへの参加なども積極的に推奨しているため技術力向上も狙えちゃいます! リモートワーク+フルフレックスなどWLBも充実してますので是非是非ご応募ください! 関連コンテンツ DroidKaigi 2025をモバイルアプリチームで見てきた! by 松田on 2025年11月21日 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 非常に良かった とても良かった どちらでもない あまり良くなかった 非常に良くなかった Author 松田 つよつよAndroidエンジニアになりたい人です。 Android 2025年12月22日 KMPとCMPでモバイルアプリを作ってみた Category モバイル 前の記事を読む データサイエンスエージェントにポッドキャスト作成機能を持たせてみた! Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2025年12月22日 モバイル KMPとCMPでモバイルアプリを作ってみた 2025年12月22日 Google Cloud データサイエンスエージェントにポッドキャスト作成機能を持たせてみた! 2025年12月19日 Google Cloud Google Workspace Studioを使って毎日AIに最新ニュースを要約させてGoogle Chatで報告させてみた。 HOME モバイル KMPとCMPでモバイルアプリを作ってみた