カテゴリ: Laravel 更新日: 2026/05/11

Laravelのストレージとは?storageとpublicの使い分けを初心者向けに徹底解説

Laravelのストレージとは?`storage`と`public`の使い分けを解説
Laravelのストレージとは?`storage`と`public`の使い分けを解説

先生と生徒の会話形式で理解しよう

生徒

「Laravelのストレージって何ですか?storageとpublicの違いもよくわからないです」

先生

「Laravelのストレージは、ファイルを保存するための仕組みです。画像やアップロードファイルを管理するときに使います。」

生徒

「storageとpublicってどっちに保存すればいいんですか?」

先生

「公開するファイルかどうかで使い分けます。それでは基本から順番に見ていきましょう。」

1. Laravelのストレージとは?

1. Laravelのストレージとは?
1. Laravelのストレージとは?

Laravelのストレージとは、画像やテキストファイルなどのデータを保存するための仕組みです。例えば、ユーザーがアップロードしたプロフィール画像や、PDFファイルなどを安全に管理するために使われます。

難しい言葉で言うと「ファイル管理システム」ですが、簡単に言えば「データをしまっておく倉庫」のようなものです。

Laravelでは、この倉庫を簡単に扱うためにStorageという便利な機能が用意されています。

2. storageディレクトリの役割

2. storageディレクトリの役割
2. storageディレクトリの役割

storageフォルダは、アプリの内部で使うファイルを保存する場所です。ユーザーには直接見えない場所にあり、安全にデータを保管できます。

例えば以下のような用途で使われます。

  • ログファイル
  • キャッシュデータ
  • 非公開のアップロードファイル

例えるなら「スタッフ専用の倉庫」のようなものです。

3. publicディレクトリの役割

3. publicディレクトリの役割
3. publicディレクトリの役割

publicフォルダは、ブラウザから直接アクセスできる公開用の場所です。画像やCSS、JavaScriptなど、ユーザーに見せるファイルを置きます。

例えば以下のような用途があります。

  • プロフィール画像
  • 商品画像
  • 公開ファイル

こちらは「お店のショーケース」のようなイメージです。

4. storageとpublicの違いをわかりやすく

4. storageとpublicの違いをわかりやすく
4. storageとpublicの違いをわかりやすく

初心者が迷いやすいポイントですが、次のように覚えると簡単です。

項目 storage public
公開 非公開 公開
用途 内部データ 画像やファイル
アクセス 直接不可 URLで可能

つまり「ユーザーに見せるならpublic、見せないならstorage」と考えるとわかりやすいです。

5. Storageを使った基本的な保存方法

5. Storageを使った基本的な保存方法
5. Storageを使った基本的な保存方法

LaravelではStorageを使って簡単にファイルを保存できます。


use Illuminate\Support\Facades\Storage;

Storage::put('test.txt', 'こんにちはLaravel');

このコードは、ファイルをstorageフォルダに保存します。


test.txtが保存される

6. publicに保存する方法

6. publicに保存する方法
6. publicに保存する方法

公開したいファイルは、publicディスクを指定して保存します。


Storage::disk('public')->put('sample.txt', '公開ファイル');

この場合、ユーザーからアクセスできる場所に保存されます。

7. storageとpublicをつなぐコマンド

7. storageとpublicをつなぐコマンド
7. storageとpublicをつなぐコマンド

Laravelでは、storageに保存したファイルをpublicからアクセスできるようにする仕組みがあります。それが「シンボリックリンク」です。

少し難しい言葉ですが、「ショートカット」のようなものと考えてください。


php artisan storage:link

このコマンドを実行すると、storageの中身をpublicから見られるようになります。

8. ファイルを表示する方法

8. ファイルを表示する方法
8. ファイルを表示する方法

保存したファイルはURLで表示できます。


echo asset('storage/sample.txt');

これでブラウザからアクセス可能になります。


http://example.com/storage/sample.txt

9. 使い分けの実践例

9. 使い分けの実践例
9. 使い分けの実践例

実際の開発では次のように使い分けます。

  • ユーザーのプロフィール画像はpublic
  • 管理用データやログはstorage

例えば画像アップロードの例です。


$file = $request->file('image');
$path = $file->store('images', 'public');

このようにすることで、安全かつ公開可能な形で保存できます。

まとめ

まとめ
まとめ

Laravelのストレージは、Webアプリケーション開発において非常に重要なファイル管理機能であり、画像アップロード、ファイル保存、ログ管理など、あらゆる場面で活用されます。本記事では、Laravelのストレージとは何かという基本から、storageディレクトリとpublicディレクトリの違い、Storageファサードの使い方、ファイル保存方法、公開方法、そして実務での使い分けまでを詳しく解説しました。

特に初心者がつまずきやすいポイントとして、「storageとpublicの違い」がありますが、これは「公開するかどうか」で判断するのが最もわかりやすいです。storageは非公開で安全にデータを管理するための場所であり、ログファイルや内部データの保存に適しています。一方、publicはブラウザから直接アクセスできる公開領域であり、画像やCSS、JavaScriptなどユーザーに見せるファイルを配置するために使用します。

また、LaravelのStorageファサードを使うことで、ファイル操作は非常にシンプルになります。putメソッドを使えば簡単にファイルを保存でき、diskメソッドを使えば保存先を柔軟に切り替えることができます。さらに、php artisan storage:linkコマンドを利用することで、storageに保存したファイルをpublicから安全に公開できる仕組みも理解できました。

実際の開発では、ユーザーのプロフィール画像や商品画像などはpublicディスクに保存し、ログや非公開データはstorageに保存することで、セキュリティと利便性のバランスを取ることが重要です。このような正しい使い分けを理解することで、Laravelのファイル管理はより安全で効率的になります。

サンプルプログラムで復習

ここで、Laravelのストレージ機能を使った基本的なファイル保存と公開処理を改めて確認しておきましょう。


use Illuminate\Support\Facades\Storage;

// 非公開ファイルの保存
Storage::put('private.txt', 'これは非公開データです');

// 公開ファイルの保存
Storage::disk('public')->put('public.txt', 'これは公開データです');

// URL取得
$url = asset('storage/public.txt');
echo $url;

実行結果は以下のようになります。


http://example.com/storage/public.txt

このように、Laravelのストレージ機能を活用することで、ファイル保存から公開までを一貫して簡単に管理できます。特にStorageファサードは、初心者でも扱いやすい設計になっているため、積極的に活用していきましょう。

先生と生徒の振り返り会話

生徒

「Laravelのストレージについてかなり理解できました。storageとpublicの違いもだいぶ整理できた気がします。」

先生

「いいですね。大事なのは公開するかどうかで使い分けることです。これが理解できていれば実務でも困りません。」

生徒

「Storageファサードを使うと、すごく簡単にファイル操作ができるのも驚きました。」

先生

「そうですね。Laravelは開発効率を上げるために設計されています。Storageを使えば、複雑なファイル操作もシンプルに書けます。」

生徒

「storageに保存したファイルを公開するには、storage:linkコマンドを使うんですよね?」

先生

「その通りです。シンボリックリンクを作ることで、安全に公開できます。この仕組みもLaravelの重要なポイントです。」

生徒

「今後は画像アップロードなどでも使えそうですね。」

先生

「はい。プロフィール画像や商品画像など、実務でよく使われる機能です。今回の内容は必ず役に立ちますよ。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説
New2
Laravel
Laravelでマルチ言語ルートを設定する方法!ロケールごとのprefixで簡単管理
New4
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
人気記事
No.1
Java&Spring記事人気No1
Symfony
SymfonyのRemember Me機能を完全解説!初心者でもわかるログイン保持の仕組み
No.2
Java&Spring記事人気No2
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.3
Java&Spring記事人気No3
Laravel
LaravelのFeatureテストとUnitテストの違いを理解しよう
No.4
Java&Spring記事人気No4
Laravel
Laravelでルートに中間処理を追加する方法!ミドルウェア活用ガイド
No.5
Java&Spring記事人気No5
CodeIgniter
CodeIgniterで多言語対応(Language)を徹底解説!言語切り替え機能を実装
No.6
Java&Spring記事人気No6
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説