推しアイデア
4つのアプリを無理やり一つのアプリにした! 企画・設計をすべて見直し、すべてのアプリを十分に活かしながらまとまりのある一つのアプリに仕上げた!!!
4つのアプリを無理やり一つのアプリにした! 企画・設計をすべて見直し、すべてのアプリを十分に活かしながらまとまりのある一つのアプリに仕上げた!!!
今日は58ハッカソン、先週はまた別のハッカソン、、、 先週はメンバー4人全員が別チームだったから、手元にアプリが4つあるなぁ、キメラにしちゃうか!
versel rewrite ↑こいつのせいで! めちゃ困ってる!
本プロジェクトは、独立していた4つのアプリの機能を1つに融合(キメラ化)させた、「インプットから習慣化、アウトプットの可視化」までを一気通貫でサポートするエンジニア向け成長プラットフォームです。
日々の勉強会やLT(ライトニングトーク)での学びを「聞きっぱなし」にせず、確実に自分のスキルとして定着させることを目的としています。
このアプリは、以下の4つの異なるコンセプトを持つ機能を統合しています。
インプットとアウトプットの両立 聞き流しを防ぎ、テストを通じて知識を定着させます。
復習の習慣化 Discordへの自動通知により、意識せずとも復習サイクルが回ります。
モチベーション維持スキルツリーによる視覚的な成長実感と、仲間との共有によるコミュニティ形成を促します。
プラットフォームとしての核となる部分は、今回のためにゼロから構築しました。
既存のUIパーツやロジックを流用しつつも、コードレベルでは「一新」に近い修正を加えています。
あえて手を加えず、既存の安定した機能を「部品」として組み込みました。
今回最も苦労したのは、「4つのNext.jsプロジェクトを1つのリポジトリで共存させ、シームレスな体験を作る」 ことでした。
リダイレクトではなく「リライト」の採用 当初は単純なページ遷移(Redirect)を考えましたが、それではローカルストレージに保持した認証用IDなどがリセットされてしまう課題がありました。
解決策 Vercel等のデプロイ環境で「Rewrites」を設定。URL構造を維持したまま、中身のアプリを切り替えることで、ユーザー体験を損なわずに独立した4つのフロントエンドを統合しました。
既存アプリのロジックをそのまま使うのではなく、今回の「学習サイクル」に合わせて大幅なスクラップ&ビルドを行いました。
RealYouの役割変更 元々「性格診断」だったアプリを、クイズ回答と理解度分析のコアエンジンへとロジック・DB構造ともに完全書き換え。
APIの集約 各アプリがバラバラに持っていたデータを、RealU側のバックエンドへ集約。既存のレイヤードアーキテクチャを維持しつつ、仕様変更に強い設計へとリファクタリングしました。
勉強会の内容からクイズを自動生成する機能では、AI(LLM)の出力の不安定さが課題でした。
Zod × Swagger による実行時バリデーション TypeScriptの型定義だけでなく、Zodを用いた実行時のスキーマ検証を徹底。AIが出力するJSONが期待した形式(クイズデータ)に合致するかを厳格にチェックしました。
堅牢なデータフロー AIの出力が揺れた場合に備え、フロントエンド・バックエンドの両方でバリデーションを行い、不正なデータがDBやUIに流れない「防御的プログラミング」を実践しました。