includeとrequireの違いとは?初心者向けにPHPでの使い分けを分かりやすく解説
結論として、includeは「読み込みに失敗しても処理を続行する」、requireは「読み込みに失敗すると処理を停止する」という違いがあります。
どちらもPHPで別のファイルを読み込むために使用しますが、読み込みに失敗した場合の動作が異なります。
初心者は「どちらを使っても同じ」と考えがちですが、実務では読み込むファイルの重要度によって使い分けます。
includeとrequireとは?
includeとは
include(インクルード)は、指定したファイルを現在のプログラムへ読み込む命令です。
読み込みに失敗しても警告(Warning)が表示されるだけで、プログラムは可能な限り処理を続けます。
| 特徴 | 内容 |
|---|---|
| 読み込み失敗時 | 警告を表示して処理を続行 |
| 用途 | なくても致命的ではないファイル |
requireとは
require(リクワイア)は、指定したファイルを必ず読み込む命令です。
読み込みに失敗すると致命的なエラー(Fatal Error)が発生し、プログラムは停止します。
| 特徴 | 内容 |
|---|---|
| 読み込み失敗時 | エラーで処理を停止 |
| 用途 | 必須となるファイル |
イメージで理解する
| 例 | include | require |
|---|---|---|
| 会社の備品 | ホワイトボードがなくても会議は続けられる | パソコンがなければ業務を続けられない |
ホワイトボードはなくても会議はできますが、業務で使用するパソコンが起動しなければ仕事になりません。
このように、「なくても動くもの」はinclude、「必ず必要なもの」はrequireを使用します。
主な違い
| 比較項目 | include | require |
|---|---|---|
| ファイルが存在しない | 警告を表示 | 致命的エラー |
| 処理の継続 | 〇 | × |
| 利用目的 | 任意のファイル | 必須ファイル |
| 実務での用途 | ヘッダー・フッターなど | 設定ファイル・共通関数など |
なぜ使い分けるのか
システムには、「読み込めなくても動作できるファイル」と「必ず読み込まなければ動作できないファイル」があります。
- なくても動作できる → include
- なければシステムが動かない → require
重要なファイルでincludeを使用すると、エラーに気付かず不完全な状態で処理が続く可能性があります。
IT現場ではどんな場面で使われるのか
includeが使われる例
- ヘッダー
- フッター
- サイドメニュー
- 広告表示
- テンプレートファイル
requireが使われる例
- データベース接続設定
- 設定ファイル
- 認証処理
- 共通関数
- オートローダー
これらのファイルが読み込めなければシステムは正常に動作しないため、requireを使用するのが一般的です。
初心者が混乱しやすいポイント
処理内容はほぼ同じ
どちらもファイルを読み込む点は共通しています。
違いは、読み込みに失敗したときの動作です。
requireの方が高速ではない
「requireの方が高速」というわけではありません。
性能ではなく、エラー時の動作で選択します。
includeでもエラーは表示される
includeはエラーが出ないわけではありません。
警告(Warning)が表示されますが、プログラムは可能な限り処理を続行します。
require_once・include_onceとの違い
PHPには、一度だけ読み込むための命令も用意されています。
| 命令 | 特徴 |
|---|---|
| include | 何度でも読み込む |
| include_once | 一度だけ読み込む |
| require | 必須ファイルを読み込む |
| require_once | 必須ファイルを一度だけ読み込む |
実務では、設定ファイルや共通関数を重複して読み込まないように、require_onceが利用されるケースが多くあります。
実際のIT現場での利用例
PHPの業務システムでは、データベース接続や設定ファイルはrequire_onceで読み込み、ヘッダーやフッターなどの画面部品はincludeで読み込む設計をよく見かけます。
このように使い分けることで、システムの安全性と保守性を高めることができます。
筆者が新人時代に失敗したこと
新人の頃、データベース接続ファイルをincludeで読み込んでいました。
ファイルパスが間違っていたため接続に失敗しましたが、処理だけは続いてしまい、原因の特定に時間がかかりました。
その後、require_onceへ変更したところ、起動直後にエラーで停止し、問題箇所をすぐに特定できるようになりました。
業務でよくあるトラブル例
| トラブル | 原因 |
|---|---|
| 画面が真っ白になる | requireの読み込みエラー |
| Warningが表示される | include先が存在しない |
| 関数が二重定義される | 同じファイルを複数回読み込んでいる |
| 設定値が取得できない | 必須ファイルの読み込み失敗 |
原因の切り分け
- 読み込むファイルが存在するか確認する
- ファイルパスを確認する
- includeかrequireか確認する
- 重複読み込みがないか確認する
- PHPのエラーログを確認する
ログの確認方法
PHPでは、WebサーバーやPHPのエラーログを確認することで、読み込みエラーの原因を調査できます。
代表的な確認対象は次のとおりです。
- Apacheのerror.log
- Nginxのerror.log
- PHPのerror_log
- Webサーバーのイベントログ(Windows環境)
確認方法
GUIで確認する方法
Visual Studio CodeやPhpStormでは、存在しないファイルを指定すると警告が表示される場合があります。
また、デバッグ機能を利用すると、どこで読み込みに失敗したかを確認できます。
CUIで確認する方法
PHPをコマンドラインで実行すると、読み込みエラーやWarningが表示されます。
また、設定を確認する場合は次のコマンドが役立ちます。
php --ini
このコマンドで、読み込まれているPHP設定ファイル(php.ini)の場所を確認できます。
確認結果の見方
- Warningならincludeの読み込み失敗
- Fatal Errorならrequireの読み込み失敗
- ファイルパスが正しいか確認する
- アクセス権限も確認する
初心者がやりがちなミス
- すべてincludeを使う
- 必須ファイルまでincludeにする
- ファイルパスを間違える
- 同じファイルを何度も読み込む
- include_once・require_onceを使わない
業務で上司へ報告するポイント
- 読み込みに失敗したファイル名
- 発生したエラーメッセージ
- ファイルパス
- 変更内容
- 修正後の動作確認結果
エスカレーションするタイミング
- 設定ファイルが読み込めない場合
- 本番環境だけでエラーが発生する場合
- アクセス権限が関係している場合
- サーバー設定の変更が必要な場合
応用知識
現在のPHP開発では、Composerを利用したライブラリ管理が一般的です。
Composerを導入したプロジェクトでは、自動生成されるオートローダーをrequire ‘vendor/autoload.php’;で読み込む構成がよく採用されています。
また、PSR(PHP Standards Recommendations)に沿った設計では、手動でincludeを多用する機会は以前より減っています。
関連するIT用語
- Composer
- オートローダー(Autoloader)
- require_once
- include_once
- ライブラリ(Library)
- モジュール(Module)
- ファイルパス
- PHPエラーログ
よくある質問(FAQ)
includeとrequireはどちらを使えばよいですか?
システムに必須のファイルならrequire、なくても動作できるファイルならincludeを選びましょう。
実務ではどちらをよく使いますか?
設定ファイルや共通関数にはrequire_once、画面テンプレートにはincludeを使用するケースが多くあります。
include_onceとrequire_onceは何が違いますか?
どちらも同じファイルを一度しか読み込みませんが、読み込みに失敗した場合の動作が異なります。include_onceは警告を表示して処理を続行し、require_onceは致命的なエラーで処理を停止します。
requireの方が性能は高いですか?
性能差を理由に選ぶものではありません。ファイルが必須かどうかを基準に使い分けることが重要です。
まとめ
includeとrequireはどちらもPHPでファイルを読み込むための命令ですが、読み込み失敗時の動作が異なります。
- includeは失敗しても処理を続行する
- requireは失敗すると処理を停止する
- 必須ファイルにはrequire(実務ではrequire_onceが一般的)
- 任意の画面部品にはincludeを利用する
- 迷ったら「このファイルがなければシステムは動くか?」で判断する
適切に使い分けることで、エラーの早期発見や保守性の向上につながり、実務でもトラブルを未然に防ぎやすくなります。

コメント