🥨

データサイエンスで楽々ドイツ語学習 vibecodingで自分専用の語学学習アプリを作ろう Day3

に公開

今までのお話

Day1, Day2では、フロントエンド開発経験ゼロの私がVibe Codingで自分専用の語学学習アプリをゼロから開発し、Webアプリの土台を作成しました。さらにWikipediaのコンテンツを参照し、「5分で読むドイツ語コンテンツ+4択クイズ(3問)」を生成するところまで実装しました。

Day3の目標と結果

Day3では、学習体験(UX)の改善に取り組みます。
具体的には次を狙います。

  • クリック数を減らして、学習までの到達を早くする
  • 画面の情報量を整理し、迷いを減らす
  • "アプリっぽさ"を出して継続しやすくする

Before

まず改善前の状態です。土台作りを優先した結果、UIはかなり素朴でした。

  • Wikipedia記事候補をランダムに5つ表示
  • ユーザーが記事を1つ選ぶ
  • 選択した記事を表示
  • B2〜C1レベルの文章に再生成
  • その内容に基づいてクイズ3問を生成

まずは土台作りを優先したため、現在のページはこのような見た目です。
Beforeの状態のスクリーンショット

なんとも縦に長いページができあがってしまいました。
さらにクイズが一部しか見えていないため、全体像が掴みにくい。ボタンもテキストだけで、どこが押せるのか視認性が弱い状態です。
今日はこちらの改善に挑みます。

After

ChatGPTと調整しながらUIを整理した結果、見た目と操作感が改善しました。
Afterの状態:ダークテーマを適用しUIを整理

変更点は主に3つです。

クリック数を「4回→1回」に削減

従来は、(1)記事選択 → (2)記事表示 → (3)B2〜C1へ再生成 → (4)クイズ生成 と、4回クリックが必要でした。
この「学習を始める前の操作」が煩わしい!!!
これでは、クリックしているうちにやる気が消えてしまいます。

そこで、記事を選択したら、残りの処理は自動で実行して表示する構造に変更し、「読む/解く」までの操作をスムーズにしました。

情報を絞って縦長を抑える

以前は、「Wikipediaの元ページ内容」と「B2~C1レベルに成形した文章」を両方表示していたため、似たような文章が縦に並び、画面が冗長になっていました。
そこで、今回は「B2〜C1レベルに整形した文章のみ」を表示し、元ページはリンクで参照する形に変更しました。必要な人だけが元ページに飛べるので、学習フローを壊さずに情報量を圧縮できます。

クイズは「全問同時表示」に

クイズも段階表示だと、結局クリックが増えます。
そこで3問を同時に表示する形にしました。結果としてページ全体の縦長さは大きくは変わりませんでしたが、少なくとも「何問あるのか」「どこまでやればよいのか」が一目で分かるようになりました。

なお、クイズを横並びにするなどのレイアウト最適化は、PC/スマホの表示差が大きいので、機能が揃ってから改めて調整する予定です。

デザインの奥の深さ

今回の改善は、「ブログに載せても耐えられる見た目」と「操作の迷いを減らす」ことを最優先にしました。実装としては src/app/globals.css を中心に触り、アプリ内で使う基本スタイル(背景・文字・余白・ボタン)を揃えました。

一方で、UIの作り方には別ルートもあります。たとえば UIコンポーネントライブラリや 「Tailwind CSS」 や「shadcn/ui」のような仕組みを使うと、設計の再利用性と見た目の品質を一気に上げられるようです。
ただ、現時点の私には学習コストが高いので、まずは語学学習アプリとしての機能を優先し、デザインは、今はここまでで止めます。
初めてのアプリ作成、完璧を求めず、少しずつ、積み上げていきます。

まとめ

今回はここまで。
学習体験の向上のため

  • クリック数 4→1
  • 操作ステップ削減
  • クイズ全体の視認性向上

に取り組みました。
次回は、いよいよ単語帳機能を追加したいと思います。

Discussion