【第8回】直感で選ぶ体験作り:9枚の裏向きカードを美しく並べるグリッドレイアウト


前回は、深いグラデーションとすりガラス風のボタンを用いて、ユーザーを迎え入れる魅力的なトップ画面を構築しました。ユーザーが「今日の運勢」などのテーマをタップすると、いよいよ占いの本番となる「カード選択画面」へ遷移します。

第8回となる今回は、タロット占いにおいて最もワクワクする瞬間である「裏向きに並んだカードの中から、自分の直感で1枚を選ぶ」というユーザー体験(UX)を、画面上に実装していきます。

ユーザー自身に運命を選ばせるUIの重要性
プログラムのロジックだけで言えば、トップ画面のボタンを押した瞬間に「ランダムに結果の画面を表示する」ことも可能です。しかし、それでは単なる「おみくじツール」になってしまい、タロット占い特有の神秘性や納得感が失われてしまいます。

そこで、画面上に裏向きのカードを複数枚(今回は9枚)並べ、「ユーザー自身の手でタップして選ばせる」というワンクッションを挟みます。このひと手間があるからこそ、結果が出たときの「自分が引いたカードだ」という重みと体験の質が大きく向上するのです。

CSS Gridを活用した美しい整列
9枚のカードをスマートフォンの画面に美しく、かつ等間隔に並べるために、「CSS Grid(グリッド)」というレイアウト技術を採用します。

かつてのWeb開発では、要素を綺麗に縦横に並べるのは非常に骨の折れる作業でした。しかし現代では、親となるコンテナ(枠)に対してTailwind CSSで「これはグリッドレイアウトにする」「横に3列並べる」「要素同士の隙間(ギャップ)をこれくらい空ける」といった数個のクラスを指定するだけで、まるでエクセルのマスのようにお行儀よく3行×3列の美しいカード群が配置されます。スマートフォンの画面幅が変わっても自動で幅を調整してくれるため、非常に強力です。

カード裏面デザインの適用と「比率の罠」への対処
並べた9枚の枠の中に、あらかじめ「public」フォルダに用意しておいたアプリのオリジナルアイコン(裏面デザイン用の画像)をはめ込んでいきます。

ここで、開発中によく直面する「画像の比率」という壁にぶつかります。タロットカードは縦長(一般的に2:3の比率)ですが、用意したアイコン画像が正方形だった場合、そのまま枠に入れると上下や左右に不自然な余白(帯)ができてしまい、一枚の美しいカードに見えなくなってしまいます。

この問題を解決するために、CSSの「画像を枠に合わせて切り抜く(オブジェクトカバー)」という技術や、あえて画像を枠内で少しだけ拡大(スケール)させて余白を外に追い出すというテクニックを使います。こうした細かなスタイル調整を施すことで、背景色がはみ出ることなく、カードの隅から隅まで隙間なく裏面デザインが敷き詰められた、高級感のあるカードUIが完成します。

「選べる」ことを伝える視覚的なヒント
ただ画像を並べるだけでなく、ユーザーに「これは押せる画面なんだ」と直感的に伝える工夫も施します。
画面上部に「直感でカードを1枚選んでください」という静かなメッセージを配置し、カード自体にも薄い枠線や影(ドロップシャドウ)をつけることで、背景の暗闇からカードが少し浮き上がっているような立体感を持たせます。

次回(第9回)は、この並んだカードをユーザーがタップした瞬間に発動する「魔法のような演出」を実装します。Framer Motionを使ったカードのフリップ(裏返り)アニメーションの仕組みについて解説しますので、どうぞお楽しみに!

【編集後記】
コードの調整を終え、ブラウザを更新した瞬間。ダークトーンの画面上に、美しく統一された9枚のタロットカードがズラリと整列した光景を見たとき、まるで本物の占い師のテーブルの前に座ったかのような静かな興奮を覚えました。特に、画像の余白を消し去ってカードサイズにピタッとはめ込む作業は地道な微調整の連続でしたが、その1ピクセルの妥協をなくすことが、アプリ全体の「本物感」に直結するのだと深く実感した瞬間でした。