このプロジェクトは、Markdownで書いたスライドをMarpを使ってHTMLとPDFに変換し、Webサイトで一覧表示して閲覧できるようにするシステムです。
- Dockerを使った開発環境(.devcontainerフォルダにある設定)
- Node.js 20をベースイメージとして使用
- Chromium, 日本語フォント(fonts-noto-cjk)をインストール済み
- Marpの実行環境として必要な設定が済んでいる
- VS Codeの拡張機能として、ESLint, Prettier, Marp VSCodeを使用
- React 18とTailwind CSSを使用したSPA
- Viteをビルドツールとして使用
- Lucide Reactをアイコンライブラリとして使用
- ファイル名の命名規則:
YYYYMMDD-タイトル.md
(例:20250216-sample-slide.md
) - スライドファイルは
src/slides
ディレクトリに保存 - Marpの形式で書かれたMarkdownファイル
- ビルド時に自動的にHTML版とPDF版が生成される
npm run build:slides
コマンドで実行scripts/build-slides.js
がビルドを担当- 新しいスライドや変更があったスライドのみビルド(既存のファイルは再ビルドしない)
- HTMLとPDF両方のバージョンを生成
public/slides/
ディレクトリに出力- すべてのスライド情報を
src/data/slides.json
に保存(日付降順でソート)
- トップページにすべてのスライドのリストを表示
- 各スライドエントリには:
- 日付(YYYY/MM/DD形式)
- タイトル
- 「スライドを閲覧」ボタン(HTML版をブラウザで開く)
- 「PDFをダウンロード」ボタン
npm run dev
: 開発サーバーを起動(Vite)npm run build
: Viteでフロントエンドをビルドnpm run preview
: ビルド後のプレビュー表示npm run build:slides
: スライドをHTMLとPDFにビルド
- GitHub Pagesでの公開を前提とした設計
- ビルド済みのHTMLとPDFが
public/slides
に格納される
- スライドのファイル名からタイトルと日付を自動的に抽出
- 日付は降順(新しい順)で表示される
もちろん!現在のファイルから読み取れるディレクトリ構成をまとめるね。
/
├── .devcontainer/ # VS Code開発コンテナの設定
│ ├── Dockerfile # 開発環境のDockerfile
│ └── devcontainer.json # 開発コンテナの設定ファイル
│
├── public/ # 静的ファイル(ビルド後のスライドが格納される)
│ └── slides/ # ビルドされたスライド(HTML, PDF)
│
├── scripts/ # スクリプト
│ └── build-slides.js # スライドのビルドスクリプト
│
├── src/ # ソースコード
│ ├── components/ # Reactコンポーネント
│ │ └── SlideList.jsx # スライド一覧表示コンポーネント
│ │
│ ├── data/ # データファイル
│ │ └── slides.json # ビルドされたスライド情報
│ │
│ ├── slides/ # Markdownで書かれたスライドファイル
│ │ ├── 20250216-sample-slide.md
│ │ ├── 20250217-another-sample.md
│ │ └── 20250218-third-sample.md
│ │
│ ├── App.jsx # メインのReactコンポーネント
│ ├── index.css # グローバルCSS(Tailwind CSSの設定)
│ └── main.jsx # エントリーポイント
│
├── index.html # メインのHTMLファイル
├── package.json # npm設定とスクリプト
├── package-lock.json # 依存関係のロックファイル
├── postcss.config.js # PostCSSの設定ファイル
├── README.md # プロジェクトの説明
├── tailwind.config.js # Tailwind CSSの設定
└── vite.config.js # Viteの設定
-
フロントエンド部分(src/):
- Reactアプリケーション
- Tailwind CSSでスタイリング
-
スライド(src/slides/):
- マークダウン形式のスライドファイル
- YYYYMMDDの日付とハイフン、タイトルの形式でファイル名が構成されている
-
ビルドシステム(scripts/):
- マークダウンのスライドをHTMLとPDFに変換
- スライド情報をJSONファイルとして生成