記事システム_セットアップガイド-~夢へ道~
傍観者k
投稿日: 2026年02月25日 00:52
# ~夢へ道~ - 完全セットアップガイド
## 作成日: 2026年2月3日
---
## 📋 プロジェクト概要
Laravel 6.x を使用した本格的な記事管理システムです。
### 主な機能
- ✅ ユーザー認証(登録・ログイン・ログアウト)
- ✅ ダッシュボード(統計情報、最新記事)
- ✅ 記事CRUD機能(作成・閲覧・編集・削除)
- ✅ Markdownエディタ(EasyMDE、リアルタイムプレビュー)
- ✅ Markdown表示(HTMLレンダリング、コードハイライト)
- ✅ 記事一覧画面(1列レイアウト、ページネーション付き)
- ✅ 記事詳細画面(Markdown to HTML変換)
- ✅ Bootstrap 5 によるレスポンシブUI
- ✅ SQLite/MySQL データベース対応
---
## 🗂️ ファイル構成
```
myapp/
├── app/
│ ├── Article.php # 記事モデル
│ ├── User.php # ユーザーモデル
│ └── Http/Controllers/
│ ├── ArticleController.php # 記事コントローラー(CRUD)
│ └── HomeController.php # ダッシュボードコントローラー
├── database/
│ ├── migrations/
│ └── seeds/
├── resources/views/
│ ├── layouts/
│ │ └── app.blade.php # マスターレイアウト
│ ├── home.blade.php # ダッシュボード
│ ├── auth/ # 認証関連ビュー
│ └── articles/
│ ├── index.blade.php # 一覧画面
│ ├── show.blade.php # 詳細画面
│ ├── create.blade.php # 作成画面(Markdown)
│ └── edit.blade.php # 編集画面(Markdown)
├── routes/
│ └── web.php # ルート定義
└── .env # 環境設定
```
---
## 🚀 セットアップ手順
### ステップ 1: MySQL のインストール確認
MySQL がインストールされていない場合は、以下のいずれかをインストールしてください:
#### オプション A: XAMPP(推奨)
1. https://www.apachefriends.org/jp/index.html からダウンロード
2. インストール後、XAMPP Control Panel から MySQL を起動
#### オプション B: MySQL Community Server
1. https://dev.mysql.com/downloads/mysql/ からダウンロード
2. インストール後、サービスを起動
#### オプション C: 開発用に SQLite を使用(簡単)
SQLite を使用する場合は、次のステップに進んでください。
---
### ステップ 2A: MySQL を使用する場合
#### 2A-1. データベースの作成
XAMPPの場合、phpMyAdminを使用:
1. ブラウザで http://localhost/phpmyadmin にアクセス
2. 「新規作成」をクリック
3. データベース名: `laravel_articles`
4. 照合順序: `utf8mb4_unicode_ci`
5. 「作成」をクリック
または、MySQLコマンドラインから:
```bash
mysql -u root -p
CREATE DATABASE laravel_articles CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit;
```
#### 2A-2. .env ファイルの確認
`.env` ファイルのデータベース設定を確認(既に設定済み):
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_articles
DB_USERNAME=root
DB_PASSWORD=
```
パスワードが設定されている場合は `DB_PASSWORD` を設定してください。
---
### ステップ 2B: SQLite を使用する場合(MySQL なしで試す)
#### 2B-1. SQLite データベースファイルの作成
PowerShell で以下を実行:
```powershell
# データベースファイルを作成
New-Item -Path database/database.sqlite -ItemType File -Force
```
#### 2B-2. .env ファイルの編集
`.env` ファイルを以下のように変更:
```env
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel_articles
# DB_USERNAME=root
# DB_PASSWORD=
```
---
### ステップ 3: マイグレーションとシーダーの実行
プロジェクトディレクトリ(myapp)で以下のコマンドを実行:
```powershell
# マイグレーションの実行(テーブル作成)
php artisan migrate
# シーダーの実行(サンプルデータ15件を投入)
php artisan db:seed
# または、両方を一度に実行
php artisan migrate:fresh --seed
```
**実行結果例:**
```
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2026_02_03_003543_create_articles_table
Migrated: 2026_02_03_003543_create_articles_table
Seeding: ArticlesTableSeeder
```
---
### ステップ 4: 開発サーバーの起動
```powershell
php artisan serve
```
**実行結果:**
```
Laravel development server started: http://127.0.0.1:8000
```
ブラウザで **http://127.0.0.1:8000** にアクセスしてください。
---
## 📱 画面説明
### 1. ユーザー認証画面
#### 新規登録 (`/register`)
- 名前、メールアドレス、パスワードで新規登録
- 登録後自動ログイン
#### ログイン (`/login`)
- メールアドレスとパスワードでログイン
- デフォルト管理者: admin@example.com / password
---
### 2. ダッシュボード (`/home`)
※ログイン必須
**機能:**
- 総記事数の統計表示
- 本日の投稿数表示
- 最新記事5件のリスト表示
- 新規作成・記事一覧へのクイックリンク
---
### 3. 記事一覧画面 (`/` または `/articles`)
**機能:**
- すべての記事を1列形式で表示
- 各カードに表示される情報:
- 記事タイトル
- 本文の抜粋(Markdown、150文字まで)
- 著者名
- 投稿日
- ページネーション(1ページ10件表示)
- 認証済みユーザー:編集・削除ボタン表示
- レスポンシブデザイン対応
**アクセス方法:**
- URL: `http://127.0.0.1:8000/articles`
- ルート名: `articles.index`
---
### 4. 記事詳細画面 (`/articles/{id}`)
**機能:**
- 記事の全文をMarkdown形式でHTML表示
- コードブロックのシンタックスハイライト対応
- 表示される情報:
- 記事タイトル
- 著者名
- 投稿日時
- 最終更新日時
- 記事本文(Markdownレンダリング)
- パンくずリスト
- 一覧に戻るボタン
- 認証済みユーザー:編集・削除ボタン表示
**アクセス方法:**
- URL: `http://127.0.0.1:8000/articles/1`(数字は記事ID)
- ルート名: `articles.show`
---
### 5. 記事作成画面 (`/articles/create`)
※ログイン必須
**機能:**
- Markdownエディタ(EasyMDE)を使用
- リアルタイムプレビュー機能
- ツールバー:見出し、太字、斜体、リスト、リンク、画像、テーブル等
- Markdown記法ガイドへのリンク
- カスタムバリデーション(空欄チェック)
**アクセス方法:**
- URL: `http://127.0.0.1:8000/articles/create`
- ルート名: `articles.create`
---
### 6. 記事編集画面 (`/articles/{id}/edit`)
※ログイン必須
**機能:**
- 既存記事をMarkdownエディタで編集
- 作成画面と同じEasyMDEエディタ
- リアルタイムプレビュー機能
- 既存データの読み込み
**アクセス方法:**
- URL: `http://127.0.0.1:8000/articles/1/edit`
- ルート名: `articles.edit`
---
## 🗄️ データベース構造
### users テーブル
| カラム名 | データ型 | 説明 | 制約 |
|---------|---------|------|------|
| id | BIGINT | ユーザーID | PRIMARY KEY, AUTO_INCREMENT |
| name | VARCHAR(255) | ユーザー名 | NOT NULL |
| email | VARCHAR(255) | メールアドレス | NOT NULL, UNIQUE |
| password | VARCHAR(255) | パスワード(ハッシュ化) | NOT NULL |
| email_verified_at | TIMESTAMP | メール認証日時 | NULLABLE |
| created_at | TIMESTAMP | 作成日時 | NOT NULL |
| updated_at | TIMESTAMP | 更新日時 | NOT NULL |
### articles テーブル
| カラム名 | データ型 | 説明 | 制約 |
|---------|---------|------|------|
| id | BIGINT | 記事ID | PRIMARY KEY, AUTO_INCREMENT |
| title | VARCHAR(255) | 記事タイトル | NOT NULL |
| content | TEXT | 記事本文(Markdown形式) | NOT NULL |
| author | VARCHAR(255) | 著者名 | NULLABLE |
| created_at | TIMESTAMP | 作成日時 | NOT NULL |
| updated_at | TIMESTAMP | 更新日時 | NOT NULL |
---
## 🎨 使用技術
### バックエンド
- **Laravel**: 6.20.45
- **PHP**: 7.2.18
- **Eloquent ORM**: データベース操作
- **Laravel Authentication**: ユーザー認証
- **MySQL**: 5.7+ または **SQLite**: 開発環境
### フロントエンド
- **Bootstrap**: 5.1.3(CDN)- レスポンシブUI
- **EasyMDE**: 2.18.0 - Markdownエディタ
- **Marked.js**: 11.1.1 - Markdown → HTMLパーサー
- **Highlight.js**: 11.9.0 - コードシンタックスハイライト
- **Blade テンプレート**: Laravel のテンプレートエンジン
---
## 📝 主要なファイルの説明
### 1. モデル: `app/Article.php`
```php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = ['title', 'content', 'author'];
}
```
### 2. コントローラー: `app/Http/Controllers/ArticleController.php`
```php
public function index()
{
// 最新順に10件ずつページネーション
$articles = Article::orderBy('created_at', 'desc')->paginate(10);
return view('articles.index', compact('articles'));
}
public function show($id)
{
// IDで記事を取得(存在しない場合は404エラー)
$article = Article::findOrFail($id);
return view('articles.show', compact('article'));
}
```
### 3. ルート: `routes/web.php`
```php
Route::get('/', function () {
return redirect('/articles');
});
Route::get('/articles', 'ArticleController@index')->name('articles.index');
Route::get('/articles/{id}', 'ArticleController@show')->name('articles.show');
```
---
## 🔧 トラブルシューティング
### 問題 1: データベース接続エラー
**エラーメッセージ:**
```
SQLSTATE[HY000] [1049] Unknown database 'laravel_articles'
```
**解決方法:**
1. データベースが作成されているか確認
2. `.env` ファイルの設定を確認
3. MySQL/MariaDB が起動しているか確認(XAMPP の場合)
---
### 問題 2: Class 'Article' not found
**解決方法:**
```powershell
composer dump-autoload
```
---
### 問題 3: ページネーションリンクが表示されない
Laravel 6 では Bootstrap 4 がデフォルトです。Bootstrap 5 用に設定する場合:
`app/Providers/AppServiceProvider.php` に追加:
```php
use Illuminate\Pagination\Paginator;
public function boot()
{
Paginator::useBootstrap();
}
```
---
## 🎯 次のステップ(拡張案)
### 機能追加のアイデア
1. **記事の作成・編集・削除機能**
```powershell
php artisan make:controller ArticleController --resource
```
2. **カテゴリ機能**
```powershell
php artisan make:model Category -m
```
3. **検索機能**
4. **タグ機能**
5. **コメント機能**
6. **ユーザー認証**
```powershell
composer require laravel/ui
php artisan ui bootstrap --auth
```
7. **画像アップロード機能**
8. **マークダウンエディタ**
---
## 📚 参考資料
- **Laravel 6 公式ドキュメント**: https://laravel.com/docs/6.x
- **Laravel 6 日本語ドキュメント**: https://readouble.com/laravel/6.x/ja/
- **Bootstrap 5 ドキュメント**: https://getbootstrap.jp/docs/5.0/getting-started/introduction/
---
## 🐛 デバッグのヒント
### ルート一覧の確認
```powershell
php artisan route:list
```
### データベースの確認
```powershell
# Laravel Tinker(対話型シェル)
php artisan tinker
# 記事の件数を確認
>>> App\Article::count()
# 最初の記事を取得
>>> App\Article::first()
# 全記事を取得
>>> App\Article::all()
```
### ログの確認
```
storage/logs/laravel.log
```
---
## ✅ チェックリスト
セットアップが完了したら、以下を確認してください:
- [ ] MySQL または SQLite が正しく設定されている
- [ ] `php artisan migrate` が正常に実行された
- [ ] `php artisan db:seed` が正常に実行された
- [ ] `php artisan serve` でサーバーが起動した
- [ ] ブラウザで一覧画面が表示される
- [ ] 記事をクリックして詳細画面が表示される
- [ ] ページネーションが正しく動作する
---
**最終更新**: 2026年2月3日
**プロジェクト名**: ~夢へ道~
最終更新: 2026年03月06日 05:27