カテゴリー
Docker

【Docker】よく使うコマンド

Dockerを使っていると、「毎回どのコマンドを打つんだっけ?」となることはよくあります。
特に開発環境では、起動・停止・確認といった基本操作を何度も繰り返します。

また、コンテナやDocker Desktopがフリーズしてしまい、どう対処すればいいか分からなくなる場面も少なくありません。

この記事では、
Dockerでよく使う基本コマンドと、
フリーズ時に使える強制終了コマンド
さらに Mac / Windows(PowerShell・cmd)での実行環境の違い をまとめて整理します。

Dockerでよく使われる基本コマンド

まずは、日常的によく使うDockerコマンドからです。

サービス起動

Bash
sudo systemctl start docker
Bash
sudo systemctl stop docker

コンテナの起動・停止・確認

Bash
docker ps -a

起動中のコンテナ一覧を表示します

-a を付けると停止中も含めて表示できます

Bash
docker ps -a
Bash
docker start コンテナ名(またはID)

停止中のコンテナを起動します

Bash
docker stop コンテナ名(またはID)

実行中のコンテナを停止します

Bash
docker restart コンテナ名

コンテナを再起動したいときに使います

Bash
docker logs コンテナ名

コンテナのログを確認できます

トラブルシュート時によく使います

イメージ関連のコマンド

Bash
docker images

ローカルに存在するDockerイメージ一覧を表示します

Bash
docker pull イメージ名

Docker Hubなどからイメージを取得します

Bash
docker rmi イメージ名
  • 不要になったイメージを削除します

docker-composeでよく使うコマンド

複数コンテナを扱う場合は、docker-compose を使うことが多いです。

Bash
docker-compose up

コンテナを起動します

-d を付けるとバックグラウンド実行になります

Bash
docker-compose up -d
Bash
docker-compose down

コンテナ・ネットワークを停止・削除します

Bash
docker-compose ps
  • composeで管理しているコンテナの状態を確認します

Dockerがフリーズした時に使う強制終了コマンド

Dockerを使っていると、稀にコンテナが停止できなくなることがあります。

コンテナ単体を強制停止する

Bash
docker kill コンテナ名

通常の docker stop が効かない場合に使います
即座にコンテナを停止します

Bash
docker rm -f コンテナ名
  • コンテナを強制的に削除します
  • 停止+削除を一気に行いたいときに便利です

Docker自体が応答しない場合の対処

  • Docker Desktopを再起動
  • それでもダメな場合はPC自体を再起動

Docker Desktopが固まっている場合、コマンドが一切通らないこともあります。
その場合は無理に操作せず、アプリ側の再起動が安全です。

  • コンテナを強制的に削除します
  • 停止+削除を一気に行いたいときに便利です

WindowsのPowerShellで実行するDockerコマンド

Windowsでは、PowerShell からDockerコマンドを実行するのが一般的です。

Bash
docker ps
docker-compose down
  • Macと同じコマンドが使えます
  • PowerShellでも特に違和感はありません

cmd(コマンドプロンプト)でも使える?

結論から言うと、cmdでもDockerコマンドは使えます

Bash
docker ps

ただし、

  • PowerShellの方が表示が見やすい
  • スクリプトやパイプ処理がしやすい

といった理由から、現在は PowerShell推奨 で使われることが多いです。

特別な理由がなければ、PowerShellを使っておくのが無難です。

カテゴリー
WSL

WSL2・Dockerで容量が逼迫したときのクリーンアップ方法【VHDX最適化】

SSD256GB環境で発生した深刻な容量不足

今回のトラブルが深刻だった理由は、
SSD256GBという比較的容量の小さい環境でWSL2+Dockerを運用していた点です。

ディスクが逼迫した結果、

  • WSLが頻繁にクラッシュする
  • 開発用コンテナが起動しない
  • Windows Updateが容量不足で失敗する
  • セキュリティソフトの定義ファイル更新すら行えない

という、Windows全体の運用に支障が出る状態に陥っていました。


今回のWSLクラッシュの原因

原因は複合的でした。

  • メモリ16GB環境でのメモリ不足
  • WSL2・Dockerが使用するVHDXファイルの肥大化
  • EC-CUBEエンタープライズ版特有の環境設定による負荷増大の可能性

特にVHDXの肥大化は気づきにくく、
SSD256GB環境では致命的になりやすいと感じました。


VHDX肥大化を解消する全体の流れ

今回行ったクリーンアップは、次の3ステップです。

  1. Windows側の一時ファイル削除
  2. WSL/Docker内部の不要データ削除
  3. WSLを完全停止し、VHDXを物理的に最適化(圧縮)

手順① 一時ファイル(Temp)の削除

対象パス

PowerShell
C:\Users\[USER_NAME]\AppData\Local\Temp

DockerやWSL関連アプリを終了した状態で、
Windowsの「記憶域」設定から削除します。


手順② 仮想ディスク内部のクリーンアップ

Dockerを起動

Bash
sudo systemctl start docker

ゾンビファイルの削除

空き領域を「e」で埋め尽くす一時ファイルを作成:不要データが大きいと数十分かかります。メモリも圧迫されるので実行タイミングは業務終了前などご検討ください。

Bash
sudo dd if=/dev/zero of=/var/tmp/zero.fill bs=1M status=progress

作成した一時ファイルを削除

Bash
sudo rm /var/tmp/zero.fill

Docker(docker_data.vhdx)

Bash
docker system prune -a --volumes

未使用のコンテナ・イメージ・ボリュームを削除します。


WSL2(ext4.vhdx)

Bash
sudo apt autoremove -y && sudo apt Clean

不要なパッケージとキャッシュを削除し、
VHDX内部に空き領域を作ります。

Docker停止

Bash
sudo systemctl stop docker

手順③ DockerとWSL完全停止とVHDXの最適化

管理者権限のPowerShellで以下を実行します。

PowerShell
# Docker Desktopの主要プロセスを強制終了
Stop-Process -Name "Docker Desktop" -Force -ErrorAction SilentlyContinue
Stop-Process -Name "com.docker.backend" -Force -ErrorAction SilentlyContinue
Stop-Process -Name "com.docker.service" -Force -ErrorAction SilentlyContinue
PowerShell
wsl --shutdown

停止確認:

PowerShell
wsl --list --running

注意点
wsl --shutdown を実行する際、VS Code などで WSL 内のディレクトリを開いたままにしていると、WSL が自動的に再起動されてしまいます。

VHDX の最適化を確実に行うためには、

  • VS Code(Remote – WSL 接続)
  • WSL を参照しているターミナルやエクスプローラー

これらをすべて閉じた状態で wsl --shutdown を実行する必要があります。VScodeなどでWLS内のディレクトリを開いている場合は、wslが再起動されるので閉じる必要がある。

DockerのVHDXを圧縮する場合

PowerShell
Optimize-VHD -Path "C:\Users\[USER_NAME]\AppData\Local\Docker\wsl\disk\docker_data.vhdx" -Mode Full

WSL2のVHDXを圧縮する場合

PowerShell
Optimize-VHD -Path "C:\Users\[USER_NAME]\AppData\Local\Packages\<ディストリ名>\LocalState\ext4.vhdx" -Mode Full

大容量ファイルの洗い出し

以下のディレクトリへ移動します。

PowerShell
cd C:\Users\[USER_NAME]\AppData\

5GB以上のファイルを一覧表示します。

PowerShell
Get-ChildItem -Recurse -File |
Where-Object { $_.Length -gt 5GB } |
Select-Object FullName, LastWriteTime,
@{N='Size(GB)';E={[math]::Round($_.Length / 1GB, 2)}} |
Sort-Object 'Size(GB)' -Descending |
Format-Table -AutoSize

定期メンテナンスの重要性

今回の対応で、
SSD256GB環境でも実用レベルまで復旧できました。

ただし、DockerとWSLを使い続ける限り、
VHDXは再び肥大化します。

  • 月1回のDockerクリーン
  • WSL完全停止+VHDX最適化

この2点は、
SSD容量が小さい環境ほど必須だと感じました。


まとめ

  • ゾンビファイルの削除が一番有用かもしれません。
  • WSL2のVHDXは117GBまで肥大化していた
  • Optimize-VHDにより約88GB削減できた
  • SSD256GB環境では放置するとWindows全体に影響する
  • クラッシュ後ではなく、定期的な最適化が重要

WSLが重くなったと感じた時点で対応することが、
結果的に一番楽だと思います。

カテゴリー
生成AI

保護中: プログラミング関連のプロンプト

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

カテゴリー
AWS システム開発技術

AWS CLI よく使うコマンド集(S3編)

バケット内の一覧表示

Bash
aws s3 ls s3://バケット名/オブジェクト名/

サブフォルダごとに一覧表示(再帰)

Bash
aws s3 ls s3://バケット名/オブジェクト名/ --recursive

ファイルをダウンロード

Bash
aws s3 cp s3://バケット名/オブジェクト名/backup.sql.gz ./backup.sql.gz

フォルダごとダウンロード

Bash
aws s3 cp s3://バケット名/オブジェクト名/ ./オブジェクト名/ --recursive

ファイルをアップロード

Bash
aws s3 cp ./backup.sql.gz s3://バケット名/オブジェクト名/backup.sql.gz

フォルダごとアップロード

Bash
aws s3 cp ./オブジェクト名/ s3://バケット名/オブジェクト名/ --recursive

同期(ローカル → S3)

Bash
aws s3 sync ./オブジェクト名/ s3://バケット名/オブジェクト名/

同期(S3 → ローカル)

Bash
aws s3 sync s3://バケット名/オブジェクト名/ ./オブジェクト名/

ファイル削除

Bash
aws s3 rm s3://バケット名/オブジェクト名/backup.sql.gz

フォルダごと削除(再帰)

Bash
aws s3 rm s3://バケット名/オブジェクト名/ --recursive
カテゴリー
システム開発技術

【VSCode】作業効率UP!知っておくべき小技まとめ

縦選択を使った便利な編集(Command + Shift + Option)

VSCodeには、特定の列や複数行を一括で編集できる「縦選択(マルチカーソル)」機能があります。特に、大量のデータを整理したり、同じ位置の文字を一括で修正する際に便利です。

縦選択の方法(Macの場合)

  1. Command + Shift + Option を押しながら、マウスでドラッグ:矢印キーも可能
    → 縦にカーソルが並び、同時に編集が可能になります。
  2. キーボードで編集を加える
    → 選択したすべての行に、同じ内容を一括入力・削除できます。
  3. Escキーで解除
    → 通常の編集モードに戻ります。

こんな時に便利!

  • リストの先頭に一括で記号を追加(例: - や * を入れる)
  • 同じ列のデータを一括変更(例: 価格 の単位を  に統一する)
  • 特定のカラムを削除・置換

この機能を活用すれば、手作業での修正時間を大幅に短縮できます!

タブ置換方法

「:」や全角スペース「 」をタブに置換し、ExcelやSpreadsheetに表として貼り付ける方法を紹介します。

Bash
からあげ:特大1000 大600円 小400円
ベビーカステラ:15個500円 30個1000円
焼きとうもろこし:600円
鮎の塩焼き:500円

手順

  1. Command + F(Mac)または Ctrl + F(Windows)を押して検索バーを表示
  2. 検索フィールドに「」を入力
  3. 「.*」のアイコン(正規表現を有効にするボタン)をクリック
  4. 左端の「>」をクリックして置換メニューを表示
  5. 置換フィールドへ「\t」(タブ)を入力
  6. 「置換」または「すべてを置換」をクリック

「\t」を「\n」に変更することにより、改行へも置換が可能です。

この状態でコピーすると、ExcelやGoogle Spreadsheetに表形式で貼り付けることができます。

カテゴリー
システム開発技術 ローカル環境 開発環境

【ローカル環境】Windows11×WSL2×Docker

近年、Windows環境でもLinuxを使いたいというニーズが増えています。特に、開発者やエンジニアにとっては、Linux環境が必要な場面が多くあります。

そんなときに便利なのが WSL2(Windows Subsystem for Linux 2) です!
WSL2を使えば、Windows上で簡単にLinuxを動かせます。

本記事では、WSL2の概要、Ubuntuとの組み合わせのメリット、インストール手順、活用方法まで詳しく解説します。

WSL2とは?

WSL(Windows Subsystem for Linux)とは?

WSLは、Windows上でLinuxを動作させるための機能 です。Microsoftが開発し、Windows 10以降で利用できます。

WSLには WSL1 と WSL2 の2つのバージョンがありますが、WSL2は高速化と互換性の向上が図られており、現在の標準です。

WSL2の特徴

  • GUIアプリもサポート(Windows 11以降)
  • 本物のLinuxカーネルを搭載(仮想マシンベース)
  • ファイルI/Oのパフォーマンス向上
  • DockerなどのLinuxツールが使いやすい
  • WindowsとLinuxのシームレスな統合
  • GUIアプリもサポート(Windows 11以降)

なぜUbuntuを選ぶべき?

WSL2では、さまざまなLinuxディストリビューション(Ubuntu、Debian、Fedoraなど)を選べます。
その中でも Ubuntu は初心者から上級者まで幅広く使われる人気のディストリビューションです。

Ubuntuのメリット

✅ 初心者向けで情報が多い
✅ パッケージ管理が簡単(APTコマンド)
✅ デフォルトで多くのツールが使える
✅ サーバー用途にも最適

WSL2 + Ubuntu のインストール手順

① WSL2を有効化する

PowerShell(管理者権限) を開き、以下のコマンドを実行

Bash
wsl --install

PCを再起動すれば、WSL2が有効になります。

Ubuntuも合わせてインストールされる。

Ubuntuを起動し、ユーザー名とパスワードを設定

② Ubuntuをインストールする:Ubuntuがインストールされていない場合

  1. Microsoft Store を開く
  2. Ubuntu を検索し、最新版をインストール
  3. インストール後、Ubuntuを起動し、ユーザー名とパスワードを設定

これでUbuntu環境が使えるようになります!

便利ツール

zip主に主に解凍で使用する

Bash
sudo apt install unzip

使用方法

Bash
unzip [file_name.zip]

下記項目にチェック

Use WSL2 instead of Hyper-V (recommended)

Add shortcut to desktop

設定→General 下記項目にチェック

Use the WSL 2 based engine

Git×SourceTree

SourceTreeでのGitリポジトリ読込みエラー

WSL上でプロジェクトを作成後にSourceTreeにプロジェクト設定すると発生した。

Bash
エラーが発生しました
'git log'がコード128で終了しました:fatal: detected dubious ownership
in repository at '//XXXX/Ubuntu/home/XXXX/projects/test_project'
To add an exception for this directory, call:
git config --global --add safe.directory

Gitで安全なディレクトリとして設定を追加する必要がある。

WindowsのGitで設定する。

パス:C:¥Users¥XXXX¥.gitconfig

Bash
git config --global --add safe.directory //wsl.localhost/Ubuntu/home/XXXX/projects/*

設定の確認

Bash
git config --list --global | grep safe.directory

設定ファイルに直接追加でも可能:パス:C:¥Users¥XXXX¥.gitconfig

Bash
[safe]
directory = //wsl.localhost/Ubuntu/home/XXXX/projects/*
カテゴリー
PHP

【PHP】UbuntuでPHP設定

WindowsのUbuntuでのPHP設定

PHPのインストール

PHP のバージョン確認と設定

Bash
php -v  # PHPのバージョン確認
which php  # PHPのパス確認

現在インストールされているPHPパッケージを確認

Bash
dpkg -l | grep php

インストール済みのPHP関連パッケージが一覧で表示される。
ii の記載があればインストール済み。

PHPのバージョンを変更する場合、以下のコマンドでシンボリックリンクを作成します。

Bash
sudo ln -s /usr/bin/php8.2 /usr/bin/php

PHPがインストールされていない場合、以下の手順でインストールします。

Bash
sudo apt update  # パッケージリストの更新
sudo apt install software-properties-common  # 追加リポジトリの管理用ツール
sudo add-apt-repository ppa:ondrej/php  # PHP公式PPAの追加
sudo apt update  # 再度更新
sudo apt install php8.2 php8.2-cli  # PHP 8.2とCLI版のインストール
php -v  # PHPのバージョン確認
which php  # PHPのパス確認

PHPがインストールされていない場合、以下の手順でインストールします。

Windows の場合

Windowsでは、公式サイト(https://windows.php.net/download/)からPHPをダウンロードし、環境変数 PATH に追加してください。

PDO 拡張のインストール

Laravel ではデータベース接続に PDO (PHP Data Objects) が必要です。

Bash
sudo apt install php8.2-mysql  # MySQL用のPDO拡張をインストール
sudo apt install php8.2-xml  # PHPのDOM拡張をインストール
sudo systemctl restart apache2  # Apacheを再起動

PHP-FPM のインストール(Apache または Nginx 使用時)

Bash
sudo apt install php8.2-fpm  # PHP-FPMのインストール
systemctl list-units --type=service | grep php  # PHP-FPMのサービスを確認
sudo systemctl restart php8.2-fpm  # PHP-FPMの再起動
カテゴリー
Laravel

【Laravel】Breeze + React + TypeScriptインストール方法

はじめに

LaravelはPHPフレームワークの中でも人気が高く、フロントエンドとの連携が簡単に行えます。本記事では、Laravel 11にBreezeを導入し、ReactとTypeScriptを使ったモダンな開発環境をローカルで構築する手順を紹介します。


必要なツールと環境

事前に以下のツールをインストールしておきましょう。

  • PHP (バージョン8.1以上)
  • Composer
  • Node.js (LTS推奨)
  • npm または Yarn
  • データベース (例: MySQL)

また、Laravelの開発環境としてLaravel Sailを利用することもおすすめです。


環境構築手順

Laravel 11 プロジェクトの作成

まず、Composerを使って新しいLaravel 11プロジェクトを作成します。

Bash
composer create-project laravel/laravel laravel-react-ts
Bash
cd laravel-react-ts

Breezeのインストールと設定

Laravel Breezeは、認証を簡単にセットアップできる軽量なスターターパックです。

Bash
composer require laravel/breeze --dev

インストールが完了したら、BreezeをReactとTypeScriptオプション付きでセットアップします。

Bash
php artisan breeze:install react --typescript

npmパッケージのインストールとビルド

以下のコマンドを実行して、必要なnpmパッケージをインストールします。

Bash
npm install

コマンドを実行することで、フロントエンドの開発サーバーが起動します。

Bash
npm run dev

Laravel Debugbar追加

Bash
composer require --dev barryvdh/laravel-debugbar

設定ファイルの公開

Bash
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

データベースの設定

.envファイルを編集して、データベースの接続情報を設定します。

Bash
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_db DB_USERNAME=root
DB_PASSWORD=your_password

設定を反映するために、以下のコマンドを実行してデータベースをマイグレーションします。

Bash
php artisan migrate

ローカル開発サーバーの起動

以下のコマンドでLaravelの開発サーバーを起動します。

Bash
php artisan serve

ブラウザでhttp://localhost:8000を開き、Laravelのトップページが表示されることを確認します。


Breeze + React + TypeScriptの動作確認

Breezeの初期セットアップにより、ログイン・登録画面がReactとTypeScriptで構築されています。これらの画面が正しく動作しているか確認しましょう。


よくある問題と解決策

npmパッケージのインストール時にエラーが発生する

依存関係の不整合が原因の場合があります。以下のコマンドで解決できる場合があります。

Bash
npm install --legacy-peer-deps

おわりに

この記事では、Laravel 11、Breeze、React、TypeScriptを使ったモダンな開発環境を構築する手順を紹介しました。この環境を基に、さらなるカスタマイズやプロジェクトの開発を楽しんでください!

カテゴリー
Laravel

【Laravel】+Reactインストール方法:mac

はじめに

Laravelは、PHPの中でも便利なWebフレームワークの一つです。そしてReactは、モダンなUIの構築に便利なJavaScriptライブラリです。この記事では、Laravel 11とReactをインストールし、認証機能も含めたアプリの構築手順を解説します。デザイン系パッケージを使用するアプローチも追加しています。


システムの前提条件

  • macOS
  • PHP 8.2+ (バージョンにより違う可能性があります)
  • Composer
  • Node.js (最新バージョン)
  • NPMまたはYarn

Laravelの新規プロジェクト作成

Laravelのプロジェクトを作成します。

Bash
composer create-project laravel/laravel laravel-react "^11.0"

既存のディレクトリに作成する場合、gitlabなどからクローン後などはクローン後などは一度空にしてから行う

Bash
composer create-project laravel/laravel . "^11.0"

プロジェクトディレクトリに移動します。

Bash
cd laravel-react

Laravelをローカルサーバーで起動して、正常に動作しているか確認します。

Bash
php artisan serve

ブラウザでhttp://127.0.0.1:8000を開き、Laravelのデフォルトページが表示されれば成功です。

Laravel Debugbar追加

Bash
composer require --dev barryvdh/laravel-debugbar

設定ファイルの公開

Bash
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

Reactのインストール

Reactをインストールします。

Bash
composer require laravel/ui
php artisan ui react
npm install
npm run dev

この段階でReactのフロントエンドツールが構築され、resources/jsにReactのファイルが追加されます。

React Developer Toolsの追加

React Developer Toolsは、Reactアプリケーションのデバッグを支援するChrome拡張機能です。以下のリンクからインストールできます。

インストール後、Chromeのデベロッパーツールに「Components」や「Profiler」タブが追加され、Reactコンポーネントの構造や状態を視覚的に確認できます。

React Developer Toolsリンク


Breezeによる認証機能の構築

LaravelのBreezeパッケージを使用すると、認証機能を快速に構築できます。

Breezeのインストール

Bash
composer require laravel/breeze --dev
php artisan breeze:install react
npm install
npm run dev

.envを編集しMySQLを設定する:MySQLの起動が必要

rootやパスワードを変更の際は、MySQLから作成する必要がある。

Bash
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=local_XXXX
DB_USERNAME=root
DB_PASSWORD=

DBなど作成する

Bash
php artisan migrate

ブラウザで認証ページを確認します。

http://127.0.0.1:8000/register

http://127.0.0.1:8000/login

認証関連の画面が正常に表示されれば完了です。

デザイン系パッケージの追加

最近のUIフレームワークを利用すると、デザイン構築が楽になります。下記はTailwind CSSを使用する例です。

Tailwind CSSのインストールinit

Bash
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init

tailwind.config.jsに構成を追加:既にある場合は作業不要

JavaScript
module.exports = {
    content: [
        './resources/**/*.blade.php',
        './resources/**/*.js',
        './resources/**/*.vue',
    ],
    theme: {
        extend: {},
    },
    plugins: [],
}

Tailwind CSSをresources/css/app.cssで有効化:既にある場合は作業不要

@tailwindディレクティブを追加します。

CSS
@tailwind base;
@tailwind components;
@tailwind utilities;

CSSをビルド

Bash
npm run dev

Tailwind CSSが適用されることを確認LaravelのBladeテンプレート内でTailwindのクラスを使用して、デザインが適用されるか確認します。


開発の次のステップ

  • コンポーネントの分割: Reactコンポーネントを分割して再利用性を高める。
  • APIとの連携: LaravelのAPIとReactを連携して動的な機能を実装。
  • テスト: LaravelのPHPUnitとReactのJestを活用してテスト環境を整える。
  • デプロイ: 本番環境にデプロイし、パフォーマンスを最適化。

これでLaravel 11とReactを組み合わせたアプリケーションの基本的なセットアップが完了です! Tailwind CSSを使用してデザインも強化されたため、次のステップとしてアプリケーションの機能拡張を進めてみてください。

カテゴリー
Laravel

【Laravel】認証機能の追加方法

Laravelは、認証機能を迅速に実装できる強力な機能を提供しています。本記事では、Laravel 11を使用して、CoreUIデザインテンプレートで認証機能を実装する方法を解説します。

Laravel 11のインストール

まずはLaravel 11をインストールします。以下のコマンドで新しいLaravelプロジェクトを作成します。

Bash
composer create-project --prefer-dist laravel/laravel laravel-auth-example

インストールが完了したら、プロジェクトディレクトリに移動します。

Bash
cd laravel-auth-example

CoreUIテンプレートのインストール

CoreUIは、管理画面向けのレスポンシブでモダンなデザインテンプレートです。CoreUIを使用するために、まずnpmを使って依存関係をインストールします。

Bash
npm install @coreui/coreui

次に、resources/js/app.jsにCoreUIのスタイルとスクリプトをインポートします。

JavaScript
import { createApp } from 'vue'
import CoreUI from '@coreui/coreui';
import App from './App.vue';

CoreUIのスタイルシートも追加します。

JavaScript
import '@coreui/coreui/dist/css/coreui.min.css';

Laravelの認証機能をセットアップ

Laravel 11では、artisanコマンドを使用して簡単に認証機能を設定できます。以下のコマンドで認証機能をインストールします。

JavaScript
composer require laravel/ui php artisan ui vue --auth npm install npm run dev

これで、基本的な認証機能(ログイン、登録、パスワードリセット機能)がインストールされます。

CoreUIスタイルに合わせたカスタマイズ

次に、認証ビューをCoreUIに合わせてカスタマイズします。resources/views/authディレクトリ内のファイル(login.blade.phpregister.blade.php など)を開き、CoreUIのコンポーネントを使用してデザインを調整します。

例えば、ログインフォームのデザインを次のように変更します。

HTML
<div class="c-card">
    <div class="c-card-header">
        <h4 class="card-title">ログイン</h4>
    </div>
    <div class="c-card-body">
        <form method="POST" action="{{ route('login') }}">
            @csrf
            <div class="form-group">
                <label for="email">メールアドレス</label>
                <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autofocus>
                @error('email')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
            </div>
            <div class="form-group">
                <label for="password">パスワード</label>
                <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required>
                @error('password')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
            </div>
            <button type="submit" class="btn btn-primary btn-block">ログイン</button>
        </form>
    </div>
</div>

認証後のリダイレクト設定

認証が成功した後、ユーザーをどのページにリダイレクトするかを設定するには、app/Http/Controllers/Auth/LoginController.phpredirectToプロパティを設定します。

PHP
protected $redirectTo = '/dashboard';

これで、ログイン後にユーザーがダッシュボードページにリダイレクトされるようになります。

CoreUIダッシュボードの作成

次に、ログイン後に表示されるダッシュボードページを作成します。resources/views/dashboard.blade.phpを作成し、CoreUIのコンポーネントを使用して管理画面をデザインします。

HTML
<div class="c-dashboard">
    <h1>ダッシュボード</h1>
    <p>ようこそ、{{ Auth::user()->name }} さん!</p>
</div>

ユーザーの作成

usersテーブルのデータを作成する

Bash
php artisan make:seeder UsersTableSeeder 

シーダーファイルサンプル

database/seeders/UsersTableSeeder.php

PHP
use Illuminate\Database\Seeder;
use App\Models\User;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        // 管理者ユーザーを作成
        User::create([
            'name' => 'Admin User',
            'email' => 'admin@example.com',
            'password' => bcrypt('password123'), // パスワードは必ずハッシュ化
        ]);

        // 一般ユーザーを複数作成
        User::factory()->count(10)->create(); // Factoryが利用可能な場合
    }
}

DatabaseSeeder に登録

PHP
public function run()
{
    $this->call([
        UsersTableSeeder::class,
    ]);
}

シーディングを実行

Bash
php artisan db:seed

認証機能の確認

http://127.0.0.1:8000/loginへアクセス

認証機能Breezeのログイン画面

ログイン後の画面

認証機能Breezeのダッシュボード

セキュリティ強化の設定

Laravelはデフォルトでセキュリティが強化されていますが、必要に応じて、config/auth.php.envファイルで詳細な設定を行うことができます。特に、パスワードのハッシュアルゴリズムやセッションの設定などを確認しておきましょう。


結論

Laravel 11とCoreUIを使用することで、迅速に美しい認証機能を実装できます。基本的なセットアップが完了した後は、デザインやユーザー体験をカスタマイズして、自分のプロジェクトに最適な認証機能を作り上げていきましょう。