前回は、アプリの裏側で密かに動く「カードデータの定義」と、運命を決める「ランダムドローのロジック」を実装しました。今回からは、いよいよユーザーの目に直接触れる「表側の世界」、すなわちUI(ユーザーインターフェース)の構築へと入っていきます。
第7回となる今回は、ユーザーを最初に迎え入れる「トップ画面」を作成します。ただのWebサイトではなく、まるでネイティブのスマートフォンアプリのような、洗練されたモダンなデザインを作り上げていきましょう。
Tailwind CSSで描く、神秘的なダークグラデーション
UIを構築するにあたり、今回は「Tailwind CSS(テイルウィンド・シーエスエス)」という非常に強力なスタイリングツールを活用します。
従来のWeb開発では、HTMLで画面の骨組みを作り、別のファイル(CSS)で「背景を黒にして、文字を白にする」といったデザインの指示を個別に書いていく必要がありました。しかしTailwind CSSを使えば、HTML(ReactのJSX)のタグの中に直接 bg-slate-900(背景を濃いスレート色にする)や text-white(文字を白にする)といった短いクラス名を書き込むだけで、直感的にデザインを当てていくことができます。
タロット占いの神秘的な世界観を表現するため、トップ画面の背景には「深海」や「夜空」を連想させるダークトーンのグラデーションを採用します。画面の最も下層にあるコンテナ(枠組み)に対して、深いネイビーから紫へと滑らかに変化するグラデーションのクラス(bg-gradient-to-b from-slate-900 to-indigo-950 など)を指定するだけで、あっという間に雰囲気のある背景が完成します。
ユーザーを導く「テーマ選択ボタン」の配置
美しい背景が敷けたら、次はその上にユーザーの行動を促す要素を配置していきます。
占いアプリにおいて、トップ画面の役割は「何を占うか」をユーザーに選ばせることです。
今回は、「今日の運勢」「恋愛運」「仕事運」といった複数の占いのテーマ(カテゴリー)を用意し、それぞれをタップしやすい大きなボタンとして縦に並べていきます。
スマートフォンの画面幅にちょうど良く収まるよう、ボタンの横幅は広めに取り、角を少し丸くし(rounded-xl)、背景にはうっすらと半透明の白(bg-white/10)を敷くことで、背景のダークグラデーションを活かした「すりガラス」のような美しいボタン(グラスモーフィズムデザイン)を作ることができます。
Reactの強み「コンポーネント化」による整理
ボタンを複数並べる際、Reactの真価が発揮されます。
「アイコン、テキスト、すりガラス風の枠」という同じデザインパターンのボタンを何度もコピペして書くのではなく、1つの「テーマ選択ボタン」という部品(コンポーネント)として独立させます。
そして、あらかじめ定義しておいた「占いのテーマ一覧」のデータ(配列)をループ処理(map関数などを利用)で回し、その部品を順番に画面に並べていくのです。こうすることで、後から「金運」という新しいテーマを追加したくなった場合でも、データの設定に1行追加するだけで、画面上のボタンも自動的に1つ増えるという、非常にメンテナンス性の高いスマートな設計が実現します。
次回(第8回)は、トップ画面でテーマを選んだあとに遷移する「カード選択画面」を構築します。9枚のカードが画面上に美しく整列する、グリッドレイアウトの仕組みについて解説していきますのでお楽しみに!
【編集後記】
味気ない白背景に黒文字の初期画面から、一転して深い紫のグラデーションと半透明の美しいボタンが画面に浮かび上がった瞬間、開発のモチベーションは一気に最高潮に達します。ロジック(裏側)の実装はパズルを解くような地道な楽しさがありますが、UI(表側)の実装は、自分の頭の中にあったデザインが目の前で具現化していくという、圧倒的なカタルシスがありますね。ユーザーがワクワクしながらボタンを押したくなるような画面設計を考えるのは、開発工程の中でも特に贅沢な時間です。
