Webサービス開発入門 - Svelte + Axum + SQLiteで作るブログサービス
本書について
この本では、モダンなWebサービス開発の基礎を学べます。Svelte(フロントエンド)、Axum(バックエンド)、SQLite(データベース)を使用して、実際に動作するブログ投稿サービスを最小構成で構築します。
対象読者
- プログラミング基礎知識がある方
- Webサービス開発が初めての方
- セキュリティや実用的な注意点を学びたい方
学習内容
- ユーザー認証(登録・ログイン)
- ブログ投稿のCRUD操作
- セキュリティ対策の実装
- エラーハンドリング
- 実際のデプロイ
技術スタック
フロントエンド: Svelte
- 軽量で学習コストが低い
- リアクティブなUI構築
- コンパイル時最適化
バックエンド: Axum
- Rust製の高速なWebフレームワーク
- 型安全性とパフォーマンス
- 非同期処理対応
データベース: SQLite
- ファイルベースで簡単セットアップ
- 軽量かつ高機能
- 開発・学習に最適
チュートリアルの進め方
Phase 1: 環境構築とプロジェクトセットアップ
- 必要なツールのインストール
- プロジェクト構造の作成
- 基本的な設定
Phase 2: データベース設計
- SQLiteセットアップ
- テーブル設計
- マイグレーション
Phase 3: バックエンド開発(Axum)
- 基本的なAPI作成
- ユーザー認証の実装
- ブログCRUD操作
- セキュリティ対策
Phase 4: フロントエンド開発(Svelte)
- 基本レイアウト作成
- ログイン・登録画面
- ブログ投稿画面
- ブログ一覧・詳細画面
Phase 5: セキュリティとエラーハンドリング
- CSRF対策
- XSS対策
- SQLインジェクション対策
- エラーハンドリング
- バリデーション
Phase 6: デプロイと運用
- 本番環境の準備
- デプロイ手順
- 監視とログ
完成イメージ
機能概要
- ユーザー管理: 新規登録、ログイン、ログアウト
- ブログ機能: 投稿作成、編集、削除、一覧表示、詳細表示
- セキュリティ: 認証・認可、CSRF保護、入力検証
API仕様
POST /api/auth/register - ユーザー登録
POST /api/auth/login - ログイン
POST /api/auth/logout - ログアウト
GET /api/posts - ブログ一覧
POST /api/posts - ブログ作成
GET /api/posts/:id - ブログ詳細
PUT /api/posts/:id - ブログ更新
DELETE /api/posts/:id - ブログ削除
データベーススキーマ
-- ユーザーテーブル
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- ブログ投稿テーブル
CREATE TABLE posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
user_id INTEGER NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users (id)
);
セキュリティ重点項目
🔒 認証・認可
- パスワードの適切なハッシュ化(bcrypt)
- JWTトークンによる認証
- セッション管理
🛡️ 攻撃対策
- CSRF対策: トークン検証
- XSS対策: 出力エスケープ
- SQLインジェクション対策: パラメータ化クエリ
- レート制限: API呼び出し制限
🔍 入力検証
- フロントエンド・バックエンド両方でのバリデーション
- サニタイゼーション
- 型安全性の活用
エラーハンドリング原則
フロントエンド
- ユーザーフレンドリーなエラーメッセージ
- 適切なローディング状態表示
- エラー境界の設定
バックエンド
- 構造化されたエラーレスポンス
- 適切なHTTPステータスコード
- ログ記録とモニタリング
章別詳細ガイド
各章の詳細は以下のファイルで確認できます:
サンプルコード
完全に動作するサンプルコードは以下にあります:
セキュリティチェックリスト
実装時に確認すべき項目は セキュリティチェックリスト で確認できます。
推奨開発環境
システム要件
- Node.js 18+
- Rust 1.70+
- Git
推奨エディタ
- VS Code
- 必要な拡張機能
- Rust Analyzer
- Svelte for VS Code
- SQLite Viewer
始める前に
このチュートリアルを始める前に、以下の基礎知識があることを前提としています:
- HTML/CSS/JavaScriptの基本
- Git基本操作
- コマンドライン操作
- データベースの基本概念
サポートとフィードバック
質問やフィードバックは以下の方法で受け付けています:
- GitHub Issues
- Pull Requests歓迎
次のステップ
準備ができたら 第1章: 環境構築 から始めましょう!
この本を通して、実用的なWebサービス開発のスキルを身につけ、セキュリティを意識した開発者になりましょう。