ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
「クラスの再読み込み」とは
サーバ側プログラムにおいて、編集したソースコードを再起動なしで反映させる仕組みを指します。言語・フレームワークごとに事情が異なります:
| 言語/環境 | デフォルト挙動 | キャッシュ層 | 再読み込み手段 |
|---|---|---|---|
| PHP(OPcache 無) | 毎リクエスト再読み込み | なし | 不要 |
| PHP(OPcache 有・本番) | 初回のみコンパイル | バイトコードキャッシュ | opcache_reset() |
| Laravel | config / route / view をキャッシュ | bootstrap/cache | artisan optimize:clear |
| Java (Tomcat 等) | 起動時に ClassLoader でロード | JVM Method Area | ClassLoader 再生成 / 再デプロイ |
| Node.js | require はキャッシュ | require.cache | nodemon / delete require.cache[...] |
PHP: OPcache のクリア
PHP 7+ では OPcache がデフォルト ON。本番でファイルを更新しても、OPcache の検証間隔(opcache.revalidate_freq)が経過するまで古いコードが動き続けることがあります。
本番サーバで反映するなら、Web からアクセスできる opcache-clear.php を一時的に置くか、CLI で cachetool を使います:
# cachetool で FPM の OPcache をクリア
cachetool opcache:reset --fcgi=127.0.0.1:9000
# php-fpm を reload する(USR2 シグナル)
sudo systemctl reload php8.2-fpm
# または
sudo killall -USR2 php-fpm
Laravel のキャッシュクリア
Laravel は OPcache に加え、設定/ルート/ビュー/イベントのキャッシュを独自に持ちます。クラスを追加・変更したら次のいずれかを実行:
# 全部まとめてクリア(推奨)
php artisan optimize:clear
# 個別
php artisan cache:clear # アプリケーションキャッシュ
php artisan config:clear # config キャッシュ
php artisan route:clear # route キャッシュ
php artisan view:clear # Blade コンパイル済キャッシュ
php artisan event:clear # イベント/リスナーキャッシュ
# 新しいクラスを追加した時
composer dump-autoload -o
# 本番再構築(キャッシュを作り直す)
php artisan config:cache
php artisan route:cache
php artisan view:cache
Composer Autoload マップ再生成
新しいクラスを追加したが Class not found が出る場合、autoload マップに登録されていません:
# autoload.php と classmap を再生成
composer dump-autoload
# 本番向け最適化(classmap-authoritative)
composer dump-autoload -o --classmap-authoritative
# composer.json の autoload セクション例
# "autoload": {
# "psr-4": { "App\\": "app/" },
# "classmap": ["database/seeders", "database/factories"]
# }
Java: ClassLoader 単位の再読み込み
JVM は同じ ClassLoader で同名クラスを二重にロードできない仕様。再読み込みするには新しい ClassLoader を作るか、既存をまるごと破棄します:
import java.net.URL;
import java.net.URLClassLoader;
import java.lang.reflect.Method;
public class ReloadDemo {
public static void main(String[] args) throws Exception {
URL[] urls = { new java.io.File("plugins/").toURI().toURL() };
// 1 回目のロード
URLClassLoader loader1 = new URLClassLoader(urls);
Class> c1 = loader1.loadClass("com.example.Plugin");
Method m1 = c1.getDeclaredMethod("run");
m1.invoke(c1.getDeclaredConstructor().newInstance());
loader1.close(); // 必須
// JAR を入れ替えてから 2 回目のロード(新しい ClassLoader で)
URLClassLoader loader2 = new URLClassLoader(urls);
Class> c2 = loader2.loadClass("com.example.Plugin");
Method m2 = c2.getDeclaredMethod("run");
m2.invoke(c2.getDeclaredConstructor().newInstance());
loader2.close();
}
}
Java: ホットデプロイの実用解
- Spring Boot DevTools:
spring-boot-devtools依存追加で、classpath 変更を自動検知 → アプリ再起動(高速) - JRebel: 商用ツール。クラス/メソッド追加もホット反映
- Tomcat Manager: WAR 再デプロイ用 API(
/manager/text/reload) - Jakarta EE 互換サーバ: WildFly / Payara は配布ディレクトリの WAR 入れ替えで自動再ロード
確認: 本当に新しいコードが動いているか
getFileName() . PHP_EOL;
echo $ref->getStartLine() . PHP_EOL;
// OPcache が見ているタイムスタンプを確認
$status = opcache_get_status(true);
foreach ($status['scripts'] as $file => $info) {
if (str_contains($file, 'MyService.php')) {
echo "timestamp=" . date('Y-m-d H:i:s', $info['timestamp']) . PHP_EOL;
}
}
FAQ
Q: optimize:clear しても反映されない
A: PHP-FPM の OPcache は別プロセスで保持されています。sudo systemctl reload php-fpm も併用してください。
Q: 本番で OPcache を切ってよいか
A: 切ると性能が 3〜10 倍劣化します。opcache.validate_timestamps=1 + revalidate_freq=2 で運用が現実解。
Q: Java で java.lang.LinkageError: loader constraint violation
A: 2 つの ClassLoader が同名クラスを別々にロードしました。Class インスタンスを ClassLoader 境界をまたいでキャストするとこのエラーになります。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- インストールと設定
- クイックスタート & チュートリアル(初心者向け)
- クイックスタート & チュートリアル(中級者向け)
- ルーティング
- Bladeテンプレート(ビュー/レイアウト)
- コントローラー
- マイグレーションとテーブル定義
- データベースの設定
- Eloquentモデル (ORM)
- SQLとクエリビルダー
- バリデーション
- .envファイルの設定値へのアクセス
- 動作環境による分岐処理
- configフォルダ配下の設定値へのアクセス
- assetヘルパーを利用したpublicフォルダへのアクセス
- storageフォルダへのアクセス
- アプリケーション名の変更
- メンテナンス
- ログイン画面(認証システム)の作成
- ログインの必須化
- ログインユーザー情報の取得
- ルートの認証化
- 本番サーバーへのデプロイ方法
- 多言語化
- csrf_field
- ファイルのダウンロード
- CSVのアップロードおよび読み込み(maatwebsite/excel)
- ページタイトルの設定
- コマンド一覧
- エラー一覧
- SQLの実行ログ出力方法
- キャッシュのクリア
- Selectの結果の最初もしくは最後に任意の値を追加する方法
- ajaxでPOST通信する際の注意点
- ソーシャルログインの実装
- セッション情報の確認
- ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
- redirectやreturn viewにメッセージを付与する方法
- クッキー(cookie)の設定と取得
- クラスの再読み込み
- csrfの有効時間を変更する方法
- ViewComposerを用いてviewに共通の値を付与する方法
- View::shareを用いて共通の値を各ビューに渡す方法
- ミドルウェアを用いた処理の共通化
- Middleware内でAuth::check()などを使用する方法
- Controller以外でリダイレクトする方法
- セッションの値の取得/保存/更新/削除
- $requestの値を変更する方法
- 常時SSL化
- ページング(ページネーション)をする方法
- vue.jsとの連携
- Vue.jsと連携するSPA実行環境構築
- .envの値をvue.jsで参照する方法
- vue.jsを本番環境にリリースする方法
- could not find driver(Windows, MySQL編)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?