· ウェブアプリ  · 6 min read

Syllabus Hack開発記:メンテナンス性を高めるファイル構成と実装戦略

個人開発サイトを長く、楽しく育てるために。AstroとPage Bundleパターンを採用したSyllabus Hackの内部構造を技術解説します。

個人開発サイトを長く、楽しく育てるために。AstroとPage Bundleパターンを採用したSyllabus Hackの内部構造を技術解説します。

なぜAstroを選んだのか?静的部分と動的部分(React)の共存

サイトの表示速度と、クイズアプリのような動的機能を両立させるための選択として、 Astro を採用しました。

「Island Architecture」を活用し、いかに軽量でパワフルな学習プラットフォームを構築したか、その選定理由から紐解きます。

アイランド・アーキテクチャ:必要な部分だけを「動的」に

Astroの最大の特徴は、ページ全体を静的なHTMLとして出力しつつ、クイズの操作部分だけを Reactコンポーネント として動作させる「アイランド・アーキテクチャ」です。

これにより、学習記事の読み込みは一瞬で終わり、かつクイズを解く際にはアプリのような 滑らかな操作感 を提供することが可能になりました。

Page Bundle パターンの採用:コンテンツとアセットをひとまとめに管理

記事フォルダの中に markdown と画像を同居させる Page Bundle パターンを徹底しています。

これにより、記事の移動や削除が容易になり、メンテナンス性が劇的に向上しました。具体的なディレクトリ構造とそのメリットについて解説します。

ディレクトリ単位での自己完結による高い運用の柔軟性

src/data/post/{category}/{slug}/ というフォルダの中に、記事本文(index.md)とカバー画像(cover.png)をセットで配置しています。

この構成により、アセット管理が 直感的 になり、将来的に数千記事へと増大しても、リンク切れやファイル迷子を防げる堅牢な構造を実現しました。

クイズデータの構造化:JSONによる拡張性と試験マスタデータの分離

膨大な試験問題を効率的に管理するため、問題データを JSON として外部化。さらに、試験名やIDを定義する マスタデータ と分離することで、新しい試験区分(APや高度試験など)の追加をスムーズに行える設計思想を紹介します。

ロジックとデータの分離:多角的な試験区分への対応

クイズの表示ロジックは一つですが、読み込む JSONファイル を切り替えるだけで、ITパスポートから高度試験まで瞬時に対応できます。

データの構造を統一し、マスタデータでメタ情報を管理することで、開発の手間を最小限に抑えつつ、コンテンツの 網羅性 を高めることができました。

デザインシステムの設計:Tailwind CSS とダークモード対応の工夫

統一感のあるデザインをスピーディーに実装するため、 Tailwind CSS をフル活用。さらに、学習者の集中力を妨げないよう、OS設定に連動したシームレスなダークモード対応をどのように実装したか、そのこだわりを共有します。

Tailwind CSS による高速開発とダークモードの最適化

ユーティリティファーストなスタイリングにより、 レスポンシブ対応 やコンポーネントのデザイン調整を、極めて短期間で完了させることができました。

また、夜間の学習でも目が疲れにくいよう、 ダークモード を標準搭載し、学習に没頭できるミニマルな視覚体験を追求しています。

今後の機能拡張を見据えたアーキテクチャの解説

現在の構成は完成形ではありません。フラッシュカード機能や学習ログの保存など、将来の 機能拡張 を見据えて、どのような「遊び」を設計に持たせているか、開発者視点での裏話を公開します。

モジュール化された設計がもたらす将来の拡張性

各パーツを独立した コンポーネント として設計しているため、後から新しい学習機能を追加することが容易です。

今後、学習データをローカルストレージと連携させたり、AIによるパーソナライズ機能を統合したりと、プロダクトを 永続的 に進化させていくための盤石な土台を築いています。


まとめ:学習効率を最大化するためのシステム設計思想

良い学習体験は、良いシステム設計から生まれます。

SyllabusHackが技術的にどのような思想で成り立っているかを知ることで、あなたの 個人開発 や技術への理解がより深まることを願っています。

Back to Blog

Related Posts

View All Posts »