YOMi

#

Next.js

#

Hono

#

Zod

一冊の本を一つの「星」に見立てて記録し、自分だけの星空を作る読書管理アプリ

##概要

2026 年 3 月に​開催された​「技育 CAMP ハッカソン vol.1」で​開発し、​最優秀賞を​いただきました!
人生初の​ハッカソンかつ個人チームでの​参加だったので​最初は​不安でしたが、​良い​結果を​残すことができて​良かったです!

##制作物に​ついて

制作したのは​「YOMi​(ヨミ)」と​いう​一冊の​本を​一つの​「星」に​見立てて​記録し、​自分だけの​星空を​作る​読書管理アプリです。

YOMi-1773656629803.webp

読書を​している​人なら​一度は​経験したことがある​「本を​買ったのに​結局​読んでいない」​「読書の​モチベーションが​続かない」​「読書記録アプリで​記録するのが​面倒」​「知識を​身に​付いている​実感が​湧かない」と​いう​悩み。
これらの​悩みを​解決し、​楽しく​読書管理を​して​もらう​ために​この​アプリを​制作しました。

##機能紹介

この​アプリでは本を​ 3D の​星で​管理します。​進捗が​進むと​星が​輝いていき、​最後まで本を​読むと​同ジャンルの​星同士が​線で​つながり​「星座」に​なります。​これで​知識の​繋がりを​可視化する​ことが​出来ます。

YOMi-1773658291457.webp

「化学の​本を​たくさん​読んだから​星座が​大きくなってる!」と​いうように​自分の​知識の​広がりを​眺めて​楽しむことができます。

星を​クリックすると、​登録した本の​詳細情報の​確認や​読書メモを​書いたり、​進捗を​変更できます。

YOMi-1773658452816.webp

160

星を​追加する​際は、​キーワード検索や​バーコード読み取りで​ ISBN を​使った​検索が​できます。​検索結果は​ Google Books API で​書籍情報を​取得し、​バーコード読み取りは​ zxing と​いう​ライブラリを​使いました。
(※ 動画は​発表の​スライドで​使っていた​ものを​転用しているので​倍速です)

検索機能

この​アプリでは、​スマホの​ジャイロ機能にも​対応しています。​単に​リストを​眺めるのではなく、​スマホを​ 360 度で​動かして、​自分の​作り上げた​星​空を​見渡すことができます。​自分の​星空を​探索しているような​気持ちに​なれ、​また、​読んでいない本は​「観測するのを​待っている​星」だと​思えば​少しは​前向きな​気持ちで​読書を​始められるようにしました。

また、​本を​星に​見立てて管理すると​いう​コンセプトや​使い方が​分かるように​アプリを​初めて​開いた​ときに​簡単な​チュートリアルを​表示するようにし、​初めての​ユーザーでも​迷わないような​設計に​なっています。

170

チュートリアルの​様子

##技術スタック

技術スタックは​こんな​感じです。​多いので​箇条​書きで​書きます。

  • フロントエンド
    • フレームワーク: Next.js
    • CSS フレームワーク: PandaCSS
    • UI フレームワーク: LIftKit
    • 3D グラフィック: Three.js
    • ホスティング: Cloudflare Pages
  • バックエンド
    • フレームワーク: Hono
    • バリデーション: Zod
    • ユーザー認証: Better Auth
    • ORM: Drizzle ORM
    • データベース: Cloudflare D1
    • 書籍情報: Google Books API

##こだわりポイント

今回の​制作で​特に​こだわった​部分は、​UI 関連の​表現と​ジャイロ機能です。
テーマが​「宇宙」と​いう​ことで、​UI で​世界観を​壊さないように、​綺麗に​見えるように​意識して​作りました。
また、​開発時に​使った​ UI フレームワークの​ LIftKit は​黄金比ベースで​作られている​ため、​人間が​無意識に​美しいと​感じられる​デザインに​なったと​思います。​フィードバックを​頂いた​方からも​「iOS の​ガラスのように​ UI が​綺麗で、​Web アプリだと​思わなかった。」と​いう​嬉しい​お言葉を​いただきました。

ジャイロ機能は​開発終了の​ 3 日前に​思い付いた​機能でしたが、​なんとか​実装まで​持っていけました。​PC の​ DevTools で​使える​デバイスモードでは、​ジャイロ機能の​検証が​できないため、​コードを​書いて​実機の​スマホで​テストして…を​繰り返す作業を​していました。​開発に​かなり​手間​取った​分、​良い​機能に​なったと​思います。

##リンク

###GitHub リポジトリ

###デプロイ先

Discussion