iOSとAndroid、それぞれにしか出せない空気感がある
Liquid GlassとMaterial 3 Expressiveを見比べてみて思うこと
ついにWWDC2025が終了し、そこでは様々な発表がありましたが、デザインの面においては、Liquid Glass
が発表されました。その約1ヶ月前には、Google I/O 2025ではMaterial 3 Expressive
が発表され、どちらもこれからののOSデザインの新たなスタンダードとなることが期待されています。
一見、どちらも洗練されたアニメーションやレイアウトで構成されていて、「あ、時代はこういう方向に進んでいるんだな」と思わせてくれます。 でも、公式の映像を見たり、実際に触ってみたりすると、共通点と異なる点とそれぞれ見えてきます。
AppleのLiquid Glassは、質感や存在感を重視した世界観。まるでそこに物質が“ある”ように感じられるような、光の透過やレイヤー構造の演出が目を引きます。 一方でGoogleのMaterial 3 Expressiveは、構造的で論理的なアプローチ。インターフェースを“意味のある構造物”として捉え、明快で柔軟なUIを構成しています。
どちらも触っていて楽しいという気持ちにさせてくれるのですが、質感はやっぱり違う。
Appleはよりリアルなデザイン、Googleはよりフラットなデザイン。
共通点はどちらもリッチなアニメーション
Liquid GlassもMaterial 3 Expressiveも、どちらもアニメーションはほんとうに洗練されているなと感じます。
Appleでは以前からすりガラスのような半透明な背景にblurがかかったUIをOSレベルで導入しており、アプリに実装することもとても簡単でした。
SomeView()
.background(.ultraThinMaterial)
こんな感じで。
今回の新しいLiquid Glass
でも簡単に導入できるようになっています。
SomeView()
.background(.glass)
こんな感じで。
その他にもToolBarやTabBar、SegmentedControlなど、iOSのデフォルトのUIコンポーネントはすべてLiquid Glassに対応しており、アプリ全体で統一感のあるリッチなアニメーションを実現できます。
実際にアプリにリッチなアニメーションを導入することは簡単ではなく、結構時間のかかる作業でもあったりするのですが、やっぱりこれからはさらにデフォルトのモジュールを使いまわして行くことが良いなかなと思っています。つまりカスタムなコンポネントを作りすぎないことが大事なのかなと。
そういった背景の透明感やレイヤーが重なっている表現は確かにリッチになったのですが、今回重要なのは、それよりも、流体的なアニメーションかと思います。
GoogleのMaterial 3 Expressiveも、アニメーションのクオリティは非常に高いです。特に、コンポーネント間の遷移や、ユーザーの操作に対するフィードバックがスムーズで、直感的な操作感を提供しています。
フラットかリアルかの違いはあるが、どちらも滑らかで楽しいアニメーション
現代のUIで“動き”は欠かせません。静的なインターフェースは情報を伝えるには十分でも、体験としては物足りない。Liquid GlassもMaterial 3も、アニメーションのクオリティは驚くほど高く、スムーズで自然な動きを実現しています。
ただ、決定的に違うのはそのアニメーションが伝える「意味」と「質感」です。
Louis Glassのアニメーションは、まるで物理法則に従って動いているような、重力や慣性を感じさせるものが多い。影の落ち方、レイヤーの奥行き、動きの減速。そのすべてが「そこに実体がある」ような錯覚を与えてきます。
一方でMaterial 3は、スケール・高さ・空間の変化に軸を置いた、情報設計的な動きが主役。操作の意味が明快に伝わるように、動きが構造の理解を助けてくれる。フラットでありながらも、奥行きとリズムを生む工夫が詰まっています。
つまり、どちらもリッチなアニメーションなんですが、「手触り」が全く異なる。それはただの演出ではなく、OSの文化そのものが動きに表れているように感じます。
「同じデザインにしておけば安心」はむしろ危険かも
UIは“合わせる”より“馴染ませる”が大事だと思う理由
デザインガイドラインを無視して“全く違う見た目”にするのは問題ですが、逆に「完全に同じ見た目にしておけば間違いない」と思っていると、それはそれで落とし穴になります。
たとえば、iOSの戻る操作はナビゲーションバー左の“戻るボタン”やスワイプ操作が主流。一方Androidでは画面下の戻るジェスチャーやボタン操作が基本です。 同じUIでも、それに合った動線を設計しないと「なんか変」「使いにくい」と思われてしまう。
これはビジュアルだけでなく、フォントのサイズ感、タップエリアの広さ、角丸の扱い、色の階調の使い方など、すべてに共通しています。
本当にユーザーにとって快適なUIを目指すなら、「合わせる」のではなく、「馴染ませる」必要がある。OSに自然と溶け込むような設計が、結果として一番使いやすくなるんです。
日本ではiOSの普及率のほうが圧倒的に多いため、iOSベースでデザインを作成し、iOS/Android両方のOSで実装する、という流れで行うことがこれまで多かった気がします。それはそれで良いのですが、そのままAndroidでも実装してしまうとやっぱりなんか違和感があります。iOSのデフォルトのコンポネントをAndroidでもカスタムで実装してしまうのは、やっぱり違和感があるし、ユーザーにとっても使いにくい。できる限り、デフォルトのコンポネントを使うことが大事だと思います。
そのうえで、デフォルトのコンポネントの色合いやその周りのUIなどをOSに応じて柔軟に馴染むように調整するというのが大事かなと思っています。
これをデザインファイルの段階から行うと、個人開発者としてはタスクが増えすぎるので、できればフロント開発の部分で柔軟に対応していきたい。大きい会社なら話は別かもしれませんが。
FlutterもReact Nativeもすごい。でもやっぱりネイティブで作りたい
FlutterやReact Nativeといったクロスプラットフォームのフレームワークは、ここ数年で一気に普及しました。 一つのコードベースでiOSにもAndroidにも対応できるというのは、開発者からすると本当にありがたい選択肢です。
Reactの開発者がモバイルに参入しやすいというのも、重要な観点かと思います。
実際、私も何度か触れたことがあります。触ってみて「これでここまでできるのか」と思ったこともあります。
でも、結局自分のアプリは今でもすべてネイティブで作っています。 その理由は単純で、私自身がもともとiOSやAndroidのネイティブアプリを作ってきた開発者だということ。そして、自分が毎日使っているようなアプリも、ほとんどすべてがネイティブで作られているという現実があるからです。
LINEもInstagramも、カメラアプリも銀行系アプリも。みんなスムーズで、自然に動いて、安心して使える。あの「なんとなく良い」感じって、細かい違いの積み重ねなんですよね。
たとえば、スイッチの挙動やスクロールの慣性、アラートの表示位置。 一つ一つは大したことがなくても、クロスプラットフォームで一律に作ってしまうと、どこかに“違和感”が生まれてしまうことがある。 ユーザーはそれを無意識に察知して、「なんかこのアプリ使いにくいな」と感じてしまう。
もちろんFlutterでも、工夫すればネイティブっぽい体験に寄せることはできます。 でも、そこには結局「ネイティブを理解していること」が前提として必要になります。iOSらしさ、Androidらしさに精通していないと、本物の“らしさ”は作れないんです。
だから私は、最初からネイティブで、それぞれのOSにしっかり向き合いながら作る方が、結局は手っ取り早いし、なによりユーザーにとっても気持ちの良い体験になると思っています。
クロスプラットフォームが悪いわけではありません。選択肢が増えるのは良いことだし、うまく使えば強力な武器になります。 でも、自分の中では「本当に毎日使ってもらえるものを作るなら、ネイティブで」という考えが今も変わらずあります。
デザインだって、OSごとに柔軟に調整していきたい。そのときに細かく動けるのは、やっぱりネイティブなんですよね。
本当に良い体験を作るなら、両OSにちゃんと向き合うしかない
ちょっと遠回りだけど、それが結局一番近道だったりする
最終的に、良いアプリを作りたいならどうすればいいか。
答えはシンプルです。それぞれのOSに向き合うこと。それだけ。
UI設計も開発技術も、一つで済ませようとするより、それぞれに合った最適解を考える方が、結果的にクオリティが上がります。そして何より、ユーザーに「ちゃんと考えて作ってくれてる」と伝わる。
もちろん、iOSもAndroidも両方学ぶのは大変です。でも、それをやっている人やチームこそが、今“本当に選ばれているアプリ”を作っていると感じます。
「ユーザーにとって自然で気持ちいい体験を作りたい」 その気持ちがあるなら、遠回りに見える選択肢の方が、むしろ近道になることもあると思っています。
iOS、Andoridの両方のOSに同じアプリをいくつか出していますが、今回のデザインの大きなアップデートを受けて、それぞれのOSらしさもっと追求して、より使いやすいアプリを作っていきたい。