{"id":3249,"date":"2025-03-24T08:46:35","date_gmt":"2025-03-23T23:46:35","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=3249"},"modified":"2025-03-24T08:47:06","modified_gmt":"2025-03-23T23:47:06","slug":"laravel%e3%81%aeview%e5%ae%8c%e5%85%a8%e7%90%86%e8%a7%a3%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e5%ae%9f%e8%b7%b5%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b15%e3%81%ae%e3%83%86%e3%82%af%e3%83%8b%e3%83%83","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=3249","title":{"rendered":"Laravel\u306eView\u5b8c\u5168\u7406\u89e3\u30ac\u30a4\u30c9\uff1a\u5b9f\u8df5\u3067\u4f7f\u3048\u308b15\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3068\u5b9f\u88c5\u4f8b"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Laravel\u306e\u30d3\u30e5\u30fc\u6a5f\u80fd\u3068\u306f\uff1a\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u3067<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3051\u308bView\u306e\u91cd\u8981\u306a\u5f79\u5272<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-4\">Laravel\u304c\u63d0\u4f9b\u3059\u308b\u30d3\u30e5\u30fc\u6a5f\u80fd\u306e\u7279\u5fb4\u3068\u6ce8\u76ee\u70b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-9\">Blade\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-10\">Blade\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u4f7f\u3063\u305f\u52b9\u7387\u7684\u306a\u30e1\u30bd\u30c3\u30c9<\/a>      <\/li>      <li>        <a href=\"#i-13\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u7d99\u627f\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5229\u7528<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">CustomBlade\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u4f5c\u6210\u3068\u6d3b\u7528\u4f8b<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-20\">\u30d3\u30e5\u30fc\u3068\u30c7\u30fc\u30bf\u306e\u9023\u643a\uff1a\u5b9f\u88c5\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-21\">\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304b\u3089\u30d3\u30e5\u30fc\u3078\u306e\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u624b\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-24\">\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc\u3092\u4f7f\u3063\u305f\u5171\u901a\u30c7\u30fc\u30bf\u306e\u7ba1\u7406\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-27\">\u30bb\u30c3\u30b7\u30e7\u30f3\u3068\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u306e\u52b9\u679c\u7684\u306a\u6d3b\u7528<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-31\">\u5b9f\u8df5\u7684\u306a\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\u624b\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-32\">\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u8a08\u539f\u5247<\/a>      <\/li>      <li>        <a href=\"#i-35\">Livewire\u3092\u6d3b\u7528\u3057\u305f\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-38\">\u91cd\u8981\u66ab\u5b9a\u30c7\u30fc\u30bf\u5171\u6709\u3068\u30a4\u30d9\u30f3\u30c8\u51e6\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-41\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u6700\u9069\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-42\">\u30d3\u30e5\u30fc\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-45\">XSS\u653b\u6483\u304b\u3089\u306e\u9632\u5fa1\u3068\u30a8\u30b9\u30b1\u30fc\u30d7\u51e6\u7406\u306e\u91cd\u8981\u6027<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-48\">\u5927\u898f\u6a21\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30d3\u30e5\u30fc\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-52\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-53\">\u4e00\u822c\u7684\u306a\u30d3\u30e5\u30fc\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-56\">\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u3068\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-59\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\u3068\u6700\u9069\u5316\u306e\u30a2\u30d7\u30ed\u30fc\u30c1<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Laravel\u306e\u30d3\u30e5\u30fc\u6a5f\u80fd\u3068\u306f\uff1a\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u3067<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3051\u308bView\u306e\u91cd\u8981\u306a\u5f79\u5272<\/h3>\n\n\n\n<p>Laravel\u306f\u3001MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u63a1\u7528\u3057\u305f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u3001\u30d3\u30e5\u30fc\uff08View\uff09\u5c64\u306b\u7279\u5225\u306a\u91cd\u8981\u6027\u3092\u7f6e\u3044\u3066\u3044\u307e\u3059\u3002\u30d3\u30e5\u30fc\u5c64\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u62c5\u5f53\u3057\u3001\u30c7\u30fc\u30bf\u306e\u8996\u899a\u7684\u306a\u8868\u73fe\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-2\">MVC\u306b\u304a\u3051\u308bView\u306e\u4f4d\u7f6e\u3065\u3051<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Controller\nclass UserController extends Controller\n{\n    public function show($id)\n    {\n        \/\/ \u30e2\u30c7\u30eb\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\n        $user = User::find($id);\n\n        \/\/ \u30d3\u30e5\u30fc\u306b\u30c7\u30fc\u30bf\u3092\u6e21\u3057\u3066\u8868\u793a\n        return view('users.show', ['user' =&gt; $user]);\n    }\n}<\/pre>\n\n\n\n<p>MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3044\u3066\u3001\u30d3\u30e5\u30fc\u306f\u4ee5\u4e0b\u306e\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u8868\u793a\u8cac\u4efb<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u30c7\u30fc\u30bf\u3092\u9069\u5207\u306a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u8868\u793a<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3068\u30b9\u30bf\u30a4\u30eb\u306e\u7ba1\u7406<\/li>\n\n\n\n<li>\u52d5\u7684\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u751f\u6210<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3068\u306e\u5206\u96e2<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8868\u793a\u30ed\u30b8\u30c3\u30af\u3068\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u660e\u78ba\u306a\u5206\u96e2<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u6027\u3068\u518d\u5229\u7528\u6027\u306e\u5411\u4e0a<\/li>\n\n\n\n<li>\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u5f79\u5272\u5206\u62c5\u306e\u660e\u78ba\u5316<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-3\">Laravel\u30d3\u30e5\u30fc\u306e\u7279\u5fb4\u7684\u306a\u6a5f\u80fd<\/h4>\n\n\n\n<p>Laravel\u306e\u30d3\u30e5\u30fc\u6a5f\u80fd\u306f\u3001\u4ee5\u4e0b\u306e\u7279\u5fb4\u3092\u6301\u3063\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u7d71\u5408<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ resources\/views\/welcome.blade.php\n   &lt;!DOCTYPE html&gt;\n   &lt;html&gt;\n      &lt;body&gt;\n         &lt;h1&gt;{{ $title }}&lt;\/h1&gt;\n         @foreach($items as $item)\n             &lt;p&gt;{{ $item-&gt;name }}&lt;\/p&gt;\n         @endforeach\n      &lt;\/body&gt;\n   &lt;\/html&gt;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u968e\u5c64\u7684\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ \u30d3\u30e5\u30fc\u306e\u968e\u5c64\u7684\u306a\u53c2\u7167\n   return view('admin.users.index');  \/\/ resources\/views\/admin\/users\/index.blade.php<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u5171\u6709\u30e1\u30ab\u30cb\u30ba\u30e0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ AppServiceProvider\u3067\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30c7\u30fc\u30bf\u5171\u6709\n   public function boot()\n   {\n       View::share('siteName', 'Laravel Blog');\n   }<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">Laravel\u304c\u63d0\u4f9b\u3059\u308b\u30d3\u30e5\u30fc\u6a5f\u80fd\u306e\u7279\u5fb4\u3068\u6ce8\u76ee\u70b9<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">1. Blade\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3<\/h4>\n\n\n\n<p>Laravel\u306e\u6a19\u6e96\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3067\u3042\u308bBlade\u306f\u3001\u5f37\u529b\u304b\u3064\u76f4\u611f\u7684\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210\u3068\u4f7f\u7528\n\/\/ resources\/views\/components\/alert.blade.php\n&lt;div class=\"alert alert-{{ $type }}\"&gt;\n    {{ $message }}\n&lt;\/div&gt;\n\n\/\/ \u4f7f\u7528\u4f8b\n&lt;x-alert type=\"danger\" message=\"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\" \/&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">2. \u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc<\/h4>\n\n\n\n<p>\u7279\u5b9a\u306e\u30d3\u30e5\u30fc\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u7684\u306b\u30c7\u30fc\u30bf\u3092\u7d50\u5408\u3059\u308b\u6a5f\u80fd\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ ViewComposer\u306e\u5b9a\u7fa9\nclass MenuComposer\n{\n    public function compose(View $view)\n    {\n        $view-&gt;with('menuItems', Menu::all());\n    }\n}\n\n\/\/ ServiceProvider\u3067\u306e\u767b\u9332\npublic function boot()\n{\n    View::composer('layouts.*', MenuComposer::class);\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">3. \u30ec\u30b9\u30dd\u30f3\u30b9\u6700\u9069\u5316<\/h4>\n\n\n\n<p>Laravel\u306f\u3001\u30d3\u30e5\u30fc\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d3\u30e5\u30fc\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\npublic function show()\n{\n    return Cache::remember('user-profile', 3600, function () {\n        return view('user.profile', ['user' =&gt; Auth::user()])-&gt;render();\n    });\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u5b9f\u88c5\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d3\u30e5\u30fc\u306e\u518d\u5229\u7528\u6027\u3092\u9ad8\u3081\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5171\u901a\u8981\u7d20\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316<\/li>\n\n\n\n<li>\u30ec\u30a4\u30a2\u30a6\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30d1\u30fc\u30b7\u30e3\u30eb\u30d3\u30e5\u30fc\u306e\u9069\u5207\u306a\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8003\u616e<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ XSS\u5bfe\u7b56\uff1a\u30a8\u30b9\u30b1\u30fc\u30d7\u51e6\u7406\u306e\u6d3b\u7528\n   {{ $userInput }}  \/\/ \u81ea\u52d5\u30a8\u30b9\u30b1\u30fc\u30d7\n   {!! $trustedHtml !!}  \/\/ \u30a8\u30b9\u30b1\u30fc\u30d7\u89e3\u9664\uff08\u4fe1\u983c\u3067\u304d\u308b\u5834\u5408\u306e\u307f\uff09<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ \u30b3\u30f3\u30d1\u30af\u30c8\u306a\u8a18\u6cd5\u306e\u6d3b\u7528\n   return view('user.profile', compact('user', 'posts'));<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001Laravel\u306eView\u6a5f\u80fd\u306f\u3001\u958b\u767a\u52b9\u7387\u3001\u4fdd\u5b88\u6027\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306a\u3069\u3001\u591a\u5c90\u306b\u308f\u305f\u308b\u5229\u70b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u3088\u308a\u8a73\u7d30\u306b\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">Blade\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6d3b\u7528\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">Blade\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u4f7f\u3063\u305f\u52b9\u7387\u7684\u306a\u30e1\u30bd\u30c3\u30c9<\/h3>\n\n\n\n<p>Blade\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3001PHP\u30b3\u30fc\u30c9\u3092\u3088\u308a\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u308b\u5f37\u529b\u306a\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u3068\u5b9f\u88c5\u4f8b\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">1. \u57fa\u672c\u7684\u306a\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- \u5909\u6570\u306e\u8868\u793a\u3068\u5236\u5fa1\u69cb\u6587 --}}\n&lt;div class=\"user-profile\"&gt;\n    {{-- \u5909\u6570\u306e\u8868\u793a\uff08\u81ea\u52d5\u30a8\u30b9\u30b1\u30fc\u30d7\uff09 --}}\n    &lt;h1&gt;{{ $user-&gt;name }}&lt;\/h1&gt;\n\n    {{-- \u6761\u4ef6\u5206\u5c90 --}}\n    @if($user-&gt;isAdmin)\n        &lt;span class=\"badge\"&gt;\u7ba1\u7406\u8005&lt;\/span&gt;\n    @elseif($user-&gt;isModerator)\n        &lt;span class=\"badge\"&gt;\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc&lt;\/span&gt;\n    @else\n        &lt;span class=\"badge\"&gt;\u4e00\u822c\u30e6\u30fc\u30b6\u30fc&lt;\/span&gt;\n    @endif\n\n    {{-- \u30eb\u30fc\u30d7\u51e6\u7406 --}}\n    &lt;ul class=\"posts\"&gt;\n        @foreach($user-&gt;posts as $post)\n            &lt;li&gt;{{ $post-&gt;title }}&lt;\/li&gt;\n        @empty\n            &lt;li&gt;\u6295\u7a3f\u304c\u3042\u308a\u307e\u305b\u3093&lt;\/li&gt;\n        @endforeach\n    &lt;\/ul&gt;\n&lt;\/div&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">2. \u9ad8\u5ea6\u306a\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- unless: \u6761\u4ef6\u304c\u507d\u306e\u5834\u5408\u306b\u5b9f\u884c --}}\n@unless(auth()-&gt;check())\n    &lt;p&gt;\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044&lt;\/p&gt;\n@endunless\n\n{{-- isset: \u5909\u6570\u306e\u5b58\u5728\u78ba\u8a8d --}}\n@isset($message)\n    &lt;div class=\"alert\"&gt;{{ $message }}&lt;\/div&gt;\n@endisset\n\n{{-- switch\u6587\u306e\u4f7f\u7528 --}}\n@switch($user-&gt;role)\n    @case('admin')\n        @include('user.admin-panel')\n        @break\n    @case('editor')\n        @include('user.editor-panel')\n        @break\n    @default\n        @include('user.default-panel')\n@endswitch<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u7d99\u627f\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5229\u7528<\/h3>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u7d99\u627f\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001DRY\u306e\u539f\u5247\u306b\u5f93\u3063\u305f\u52b9\u7387\u7684\u306a\u30d3\u30e5\u30fc\u958b\u767a\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">1. \u30ec\u30a4\u30a2\u30a6\u30c8\u7d99\u627f\u306e\u57fa\u672c<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- resources\/views\/layouts\/app.blade.php --}}\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;@yield('title', '\u30c7\u30d5\u30a9\u30eb\u30c8\u30bf\u30a4\u30c8\u30eb')&lt;\/title&gt;\n    @stack('styles')\n&lt;\/head&gt;\n&lt;body&gt;\n    @include('partials.header')\n\n    &lt;div class=\"container\"&gt;\n        @yield('content')\n    &lt;\/div&gt;\n\n    @include('partials.footer')\n    @stack('scripts')\n&lt;\/body&gt;\n&lt;\/html&gt;\n\n{{-- resources\/views\/posts\/show.blade.php --}}\n@extends('layouts.app')\n\n@section('title', '\u6295\u7a3f\u8a73\u7d30')\n\n@section('content')\n    &lt;article&gt;\n        &lt;h1&gt;{{ $post-&gt;title }}&lt;\/h1&gt;\n        &lt;div class=\"content\"&gt;{{ $post-&gt;content }}&lt;\/div&gt;\n    &lt;\/article&gt;\n@endsection\n\n@push('scripts')\n    &lt;script src=\"\/js\/posts.js\"&gt;&lt;\/script&gt;\n@endpush<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-15\">2. \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30d9\u30fc\u30b9\u306e\u958b\u767a<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9a\u7fa9 --}}\n{{-- resources\/views\/components\/alert.blade.php --}}\n&lt;div class=\"alert alert-{{ $type ?? 'info' }}\"&gt;\n    {{ $slot }}\n    @if(isset($action))\n        &lt;div class=\"alert-action\"&gt;{{ $action }}&lt;\/div&gt;\n    @endif\n&lt;\/div&gt;\n\n{{-- \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f7f\u7528 --}}\n&lt;x-alert type=\"danger\"&gt;\n    &lt;strong&gt;\u30a8\u30e9\u30fc!&lt;\/strong&gt; \u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\n    &lt;x-slot name=\"action\"&gt;\n        &lt;button onclick=\"retry()\"&gt;\u518d\u8a66\u884c&lt;\/button&gt;\n    &lt;\/x-slot&gt;\n&lt;\/x-alert&gt;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">CustomBlade\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u4f5c\u6210\u3068\u6d3b\u7528\u4f8b<\/h3>\n\n\n\n<p>\u30ab\u30b9\u30bf\u30e0\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u56fa\u6709\u306e\u8868\u793a\u30ed\u30b8\u30c3\u30af\u3092\u518d\u5229\u7528\u53ef\u80fd\u306a\u5f62\u3067\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">1. \u30ab\u30b9\u30bf\u30e0\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u767b\u9332<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ AppServiceProvider\u306eboot()\u30e1\u30bd\u30c3\u30c9\u5185\npublic function boot()\n{\n    \/\/ \u5358\u7d14\u306a\u7f6e\u63db\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    Blade::directive('datetime', function ($expression) {\n        return \"&lt;?php echo ($expression)-&gt;format('Y-m-d H:i:s'); ?&gt;\";\n    });\n\n    \/\/ \u6761\u4ef6\u4ed8\u304d\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    Blade::if('env', function ($environment) {\n        return app()-&gt;environment($environment);\n    });\n\n    \/\/ \u8907\u96d1\u306a\u30ed\u30b8\u30c3\u30af\u3092\u542b\u3080\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    Blade::directive('price', function ($expression) {\n        return \"&lt;?php echo '\u00a5' . number_format($expression); ?&gt;\";\n    });\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">2. \u30ab\u30b9\u30bf\u30e0\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u4f7f\u7528\u4f8b<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- \u30d3\u30e5\u30fc\u5185\u3067\u306e\u4f7f\u7528 --}}\n&lt;div class=\"product\"&gt;\n    &lt;h2&gt;{{ $product-&gt;name }}&lt;\/h2&gt;\n    &lt;p class=\"price\"&gt;@price($product-&gt;price)&lt;\/p&gt;\n    &lt;p class=\"updated\"&gt;\u6700\u7d42\u66f4\u65b0: @datetime($product-&gt;updated_at)&lt;\/p&gt;\n\n    @env('production')\n        &lt;!-- \u672c\u756a\u74b0\u5883\u3067\u306e\u307f\u8868\u793a --&gt;\n        &lt;div class=\"analytics-tag\"&gt;...&lt;\/div&gt;\n    @endenv\n&lt;\/div&gt;\n\n{{-- \u6a29\u9650\u30c1\u30a7\u30c3\u30af\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u4f8b --}}\n@can('edit', $post)\n    &lt;a href=\"{{ route('posts.edit', $post) }}\"&gt;\u7de8\u96c6&lt;\/a&gt;\n@endcan<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">3. \u5b9f\u8df5\u7684\u306a\u30ab\u30b9\u30bf\u30e0\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u5b9f\u88c5\u4f8b<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u96d1\u306a\u6761\u4ef6\u5206\u5c90\u3092\u7c21\u7565\u5316\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\nBlade::directive('status', function ($expression) {\n    return \"&lt;?php switch ($expression) {\n        case 'pending':\n            echo '&lt;span class=\\\"badge badge-warning\\\"&gt;\u4fdd\u7559\u4e2d&lt;\/span&gt;';\n            break;\n        case 'approved':\n            echo '&lt;span class=\\\"badge badge-success\\\"&gt;\u627f\u8a8d\u6e08&lt;\/span&gt;';\n            break;\n        case 'rejected':\n            echo '&lt;span class=\\\"badge badge-danger\\\"&gt;\u5374\u4e0b&lt;\/span&gt;';\n            break;\n        default:\n            echo '&lt;span class=\\\"badge badge-secondary\\\"&gt;\u4e0d\u660e&lt;\/span&gt;';\n    } ?&gt;\";\n});\n\n\/\/ \u4f7f\u7528\u4f8b\n&lt;div class=\"order-status\"&gt;\n    @status($order-&gt;status)\n&lt;\/div&gt;<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001Blade\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u518d\u5229\u7528\u53ef\u80fd\u306a\u30d3\u30e5\u30fc\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d3\u30e5\u30fc\u3068\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u9023\u643a\u3055\u305b\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">\u30d3\u30e5\u30fc\u3068\u30c7\u30fc\u30bf\u306e\u9023\u643a\uff1a\u5b9f\u88c5\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304b\u3089\u30d3\u30e5\u30fc\u3078\u306e\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u624b\u6cd5<\/h3>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304b\u3089\u30d3\u30e5\u30fc\u3078\u306e\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fdd\u5b88\u6027\u306b\u5927\u304d\u304f\u5f71\u97ff\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u69d8\u3005\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u5fdc\u3058\u305f\u6700\u9069\u306a\u5b9f\u88c5\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">1. \u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\npublic function show(Post $post)\n{\n    \/\/ \u5358\u4e00\u30c7\u30fc\u30bf\u306e\u53d7\u3051\u6e21\u3057\n    return view('posts.show', ['post' =&gt; $post]);\n\n    \/\/ \u307e\u305f\u306f\u3001compact()\u3092\u4f7f\u7528\n    return view('posts.show', compact('post'));\n\n    \/\/ with()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\n    return view('posts.show')-&gt;with('post', $post);\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">2. \u8907\u6570\u30c7\u30fc\u30bf\u306e\u52b9\u7387\u7684\u306a\u53d7\u3051\u6e21\u3057<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public function dashboard()\n{\n    \/\/ \u8907\u6570\u30c7\u30fc\u30bf\u306e\u4e00\u62ec\u53d7\u3051\u6e21\u3057\n    $data = [\n        'users' =&gt; User::latest()-&gt;take(5)-&gt;get(),\n        'posts' =&gt; Post::with('author')-&gt;latest()-&gt;take(10)-&gt;get(),\n        'statistics' =&gt; $this-&gt;getStatistics(),\n    ];\n\n    return view('admin.dashboard', $data);\n}\n\n\/\/ Eager\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6d3b\u7528\u3057\u305f\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u53d6\u5f97\npublic function index()\n{\n    $posts = Post::with(['author', 'comments', 'categories'])\n        -&gt;latest()\n        -&gt;paginate(20);\n\n    return view('posts.index', compact('posts'));\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc\u3092\u4f7f\u3063\u305f\u5171\u901a\u30c7\u30fc\u30bf\u306e\u7ba1\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u6570\u306e\u30d3\u30e5\u30fc\u3067\u5171\u901a\u3057\u3066\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-25\">1. \u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc\u306e\u57fa\u672c\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/ViewComposers\/SidebarComposer.php\nnamespace App\\Http\\ViewComposers;\n\nuse Illuminate\\View\\View;\nuse App\\Models\\Category;\n\nclass SidebarComposer\n{\n    public function compose(View $view)\n    {\n        $categories = Cache::remember('sidebar_categories', 3600, function () {\n            return Category::withCount('posts')\n                -&gt;having('posts_count', '&gt;', 0)\n                -&gt;orderBy('posts_count', 'desc')\n                -&gt;take(10)\n                -&gt;get();\n        });\n\n        $view-&gt;with('sidebarCategories', $categories);\n    }\n}\n\n\/\/ app\/Providers\/ViewServiceProvider.php\npublic function boot()\n{\n    \/\/ \u7279\u5b9a\u306e\u30d3\u30e5\u30fc\u306b\u5bfe\u3057\u3066\u30b3\u30f3\u30dd\u30fc\u30b6\u30fc\u3092\u9069\u7528\n    View::composer('partials.sidebar', SidebarComposer::class);\n\n    \/\/ \u8907\u6570\u306e\u30d3\u30e5\u30fc\u306b\u9069\u7528\n    View::composer(['posts.*', 'pages.*'], SidebarComposer::class);\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">2. \u52d5\u7684\u30c7\u30fc\u30bf\u306e\u52b9\u7387\u7684\u306a\u7ba1\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b0\u30ed\u30fc\u30d0\u30eb\u30c7\u30fc\u30bf\u306e\u5171\u6709\npublic function boot()\n{\n    \/\/ \u3059\u3079\u3066\u306e\u30d3\u30e5\u30fc\u3067\u5229\u7528\u53ef\u80fd\u306a\u5909\u6570\u3092\u5b9a\u7fa9\n    View::share('siteName', config('app.name'));\n\n    \/\/ \u8a8d\u8a3c\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u5171\u6709\n    View::composer('*', function ($view) {\n        if (auth()-&gt;check()) {\n            $view-&gt;with('currentUser', auth()-&gt;user()-&gt;load('notifications'));\n        }\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u30bb\u30c3\u30b7\u30e7\u30f3\u3068\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u306e\u52b9\u679c\u7684\u306a\u6d3b\u7528<\/h3>\n\n\n\n<p>\u30bb\u30c3\u30b7\u30e7\u30f3\u3068\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u9593\u3067\u306e\u30c7\u30fc\u30bf\u5171\u6709\u3084\u4e00\u6642\u7684\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">1. \u30d5\u30e9\u30c3\u30b7\u30e5\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u306e\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u306e\u8a2d\u5b9a\npublic function store(Request $request)\n{\n    $post = Post::create($request-&gt;validated());\n\n    \/\/ \u6210\u529f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u3068\u3057\u3066\u4fdd\u5b58\n    session()-&gt;flash('success', '\u6295\u7a3f\u304c\u6b63\u5e38\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002');\n\n    \/\/ \u8907\u6570\u306e\u30d5\u30e9\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u3092\u4e00\u62ec\u8a2d\u5b9a\n    return redirect()-&gt;route('posts.show', $post)\n        -&gt;with([\n            'status' =&gt; 'success',\n            'message' =&gt; '\u6295\u7a3f\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f',\n            'post_id' =&gt; $post-&gt;id\n        ]);\n}\n\n\/\/ \u30d3\u30e5\u30fc\u3067\u306e\u30d5\u30e9\u30c3\u30b7\u30e5\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n&lt;div class=\"container\"&gt;\n    @if(session()-&gt;has('success'))\n        &lt;x-alert type=\"success\" :message=\"session('success')\" \/&gt;\n    @endif\n\n    @if(session()-&gt;has('error'))\n        &lt;x-alert type=\"danger\" :message=\"session('error')\" \/&gt;\n    @endif\n&lt;\/div&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-29\">2. \u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u52b9\u7387\u7684\u306a\u7ba1\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u64cd\u4f5c\npublic function updatePreferences(Request $request)\n{\n    \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u3078\u306e\u30c7\u30fc\u30bf\u4fdd\u5b58\n    session([\n        'theme' =&gt; $request-&gt;theme,\n        'language' =&gt; $request-&gt;language,\n        'notifications_enabled' =&gt; $request-&gt;notifications_enabled\n    ]);\n\n    \/\/ \u914d\u5217\u5f62\u5f0f\u3067\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\n    session()-&gt;put('preferences', [\n        'theme' =&gt; $request-&gt;theme,\n        'language' =&gt; $request-&gt;language\n    ]);\n\n    \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3068\u52a0\u5de5\n    $theme = session('theme', 'light'); \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u6307\u5b9a\n\n    \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u5b58\u5728\u78ba\u8a8d\u3068\u524a\u9664\n    if (session()-&gt;has('temporary_data')) {\n        session()-&gt;forget('temporary_data');\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">3. \u5b9f\u8df5\u7684\u306a\u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u30d1\u30bf\u30fc\u30f3<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u306e\u7ba1\u7406\nclass UserPreferencesMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        if (auth()-&gt;check()) {\n            \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u304c\u672a\u4fdd\u5b58\u306e\u5834\u5408\u3001DB\u304b\u3089\u8aad\u307f\u8fbc\u307f\n            if (!session()-&gt;has('user_preferences')) {\n                $preferences = auth()-&gt;user()-&gt;preferences()-&gt;get();\n                session(['user_preferences' =&gt; $preferences]);\n            }\n\n            \/\/ \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u4f7f\u7528\u3059\u308b\u8a2d\u5b9a\u3092\u9069\u7528\n            app()-&gt;setLocale(session('user_preferences.language', 'ja'));\n        }\n\n        return $next($request);\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u30d3\u30e5\u30fc\u3068\u30c7\u30fc\u30bf\u306e\u9023\u643a\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u3067\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u9ad8\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u77e5\u8b58\u3092\u6d3b\u7528\u3057\u305f\u5b9f\u8df5\u7684\u306a\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-31\">\u5b9f\u8df5\u7684\u306a\u30d3\u30e5\u30fc\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\u624b\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u8a08\u539f\u5247<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u8a2d\u8a08\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u660e\u78ba\u306a\u8a2d\u8a08\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u8a2d\u8a08\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">1. \u30a2\u30ce\u30cb\u30de\u30b9\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{{-- resources\/views\/components\/card.blade.php --}}\n&lt;div {{ $attributes-&gt;merge(['class' =&gt; 'bg-white shadow rounded-lg p-6']) }}&gt;\n    @if(isset($header))\n        &lt;div class=\"border-b pb-4 mb-4\"&gt;\n            {{ $header }}\n        &lt;\/div&gt;\n    @endif\n\n    &lt;div class=\"space-y-4\"&gt;\n        {{ $slot }}\n    &lt;\/div&gt;\n\n    @if(isset($footer))\n        &lt;div class=\"border-t pt-4 mt-4\"&gt;\n            {{ $footer }}\n        &lt;\/div&gt;\n    @endif\n&lt;\/div&gt;\n\n{{-- \u4f7f\u7528\u4f8b --}}\n&lt;x-card class=\"mt-4\"&gt;\n    &lt;x-slot name=\"header\"&gt;\n        &lt;h2 class=\"text-lg font-semibold\"&gt;\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb&lt;\/h2&gt;\n    &lt;\/x-slot&gt;\n\n    &lt;div class=\"user-info\"&gt;\n        &lt;!-- \u30b3\u30f3\u30c6\u30f3\u30c4 --&gt;\n    &lt;\/div&gt;\n\n    &lt;x-slot name=\"footer\"&gt;\n        &lt;button class=\"btn btn-primary\"&gt;\u7de8\u96c6&lt;\/button&gt;\n    &lt;\/x-slot&gt;\n&lt;\/x-card&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">2. \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30af\u30e9\u30b9\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/View\/Components\/Alert.php\nnamespace App\\View\\Components;\n\nuse Illuminate\\View\\Component;\n\nclass Alert extends Component\n{\n    public $type;\n    public $dismissible;\n\n    public function __construct($type = 'info', $dismissible = false)\n    {\n        $this-&gt;type = $type;\n        $this-&gt;dismissible = $dismissible;\n    }\n\n    public function render()\n    {\n        return view('components.alert');\n    }\n\n    public function classes()\n    {\n        return [\n            'alert',\n            \"alert-{$this-&gt;type}\",\n            $this-&gt;dismissible ? 'alert-dismissible' : '',\n        ];\n    }\n}\n\n{{-- resources\/views\/components\/alert.blade.php --}}\n&lt;div {{ $attributes-&gt;merge(['class' =&gt; $classes()]) }}&gt;\n    @if($dismissible)\n        &lt;button type=\"button\" class=\"close\" data-dismiss=\"alert\"&gt;\n            &lt;span&gt;&amp;times;&lt;\/span&gt;\n        &lt;\/button&gt;\n    @endif\n\n    {{ $slot }}\n&lt;\/div&gt;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">Livewire\u3092\u6d3b\u7528\u3057\u305f\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>Livewire\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001JavaScript\u3092\u76f4\u63a5\u66f8\u304f\u3053\u3068\u306a\u304f\u3001\u52d5\u7684\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">1. \u57fa\u672c\u7684\u306aLivewire\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Livewire\/SearchUsers.php\nnamespace App\\Http\\Livewire;\n\nuse Livewire\\Component;\nuse App\\Models\\User;\n\nclass SearchUsers extends Component\n{\n    public $search = '';\n    public $users = [];\n\n    public function updatedSearch()\n    {\n        $this-&gt;users = User::where('name', 'like', \"%{$this-&gt;search}%\")\n            -&gt;orWhere('email', 'like', \"%{$this-&gt;search}%\")\n            -&gt;take(5)\n            -&gt;get();\n    }\n\n    public function render()\n    {\n        return view('livewire.search-users');\n    }\n}\n\n{{-- resources\/views\/livewire\/search-users.blade.php --}}\n&lt;div&gt;\n    &lt;input wire:model.debounce.300ms=\"search\" type=\"text\" \n           placeholder=\"\u30e6\u30fc\u30b6\u30fc\u3092\u691c\u7d22...\" class=\"form-input\"&gt;\n\n    &lt;div class=\"search-results mt-2\"&gt;\n        @foreach($users as $user)\n            &lt;div class=\"user-item p-2 hover:bg-gray-100\"&gt;\n                {{ $user-&gt;name }} ({{ $user-&gt;email }})\n            &lt;\/div&gt;\n        @endforeach\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-37\">2. \u8907\u96d1\u306a\u72b6\u614b\u7ba1\u7406\u3092\u542b\u3080\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Livewire\/ShoppingCart.php\nnamespace App\\Http\\Livewire;\n\nuse Livewire\\Component;\n\nclass ShoppingCart extends Component\n{\n    public $items = [];\n    public $total = 0;\n\n    protected $listeners = ['itemAdded' =&gt; 'updateCart'];\n\n    public function mount()\n    {\n        $this-&gt;items = auth()-&gt;user()-&gt;cart-&gt;items;\n        $this-&gt;calculateTotal();\n    }\n\n    public function updateQuantity($itemId, $quantity)\n    {\n        \/\/ \u6570\u91cf\u66f4\u65b0\u51e6\u7406\n        $this-&gt;items = array_map(function ($item) use ($itemId, $quantity) {\n            if ($item['id'] === $itemId) {\n                $item['quantity'] = $quantity;\n            }\n            return $item;\n        }, $this-&gt;items);\n\n        $this-&gt;calculateTotal();\n        $this-&gt;emit('cartUpdated');\n    }\n\n    private function calculateTotal()\n    {\n        $this-&gt;total = collect($this-&gt;items)-&gt;sum(function ($item) {\n            return $item['price'] * $item['quantity'];\n        });\n    }\n\n    public function render()\n    {\n        return view('livewire.shopping-cart');\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-38\">\u91cd\u8981\u66ab\u5b9a\u30c7\u30fc\u30bf\u5171\u6709\u3068\u30a4\u30d9\u30f3\u30c8\u51e6\u7406<\/h3>\n\n\n\n<p>\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u9593\u3067\u306e\u30c7\u30fc\u30bf\u5171\u6709\u3068\u30a4\u30d9\u30f3\u30c8\u51e6\u7406\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">1. \u30a4\u30d9\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30a4\u30d9\u30f3\u30c8\u306e\u767a\u884c\u3068\u8cfc\u8aad\npublic function addToCart($productId)\n{\n    \/\/ \u30ab\u30fc\u30c8\u306b\u5546\u54c1\u3092\u8ffd\u52a0\n    Cart::add($productId);\n\n    \/\/ \u30a4\u30d9\u30f3\u30c8\u306e\u767a\u884c\n    $this-&gt;emit('cartItemAdded', $productId);\n\n    \/\/ \u7279\u5b9a\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306b\u306e\u307f\u30a4\u30d9\u30f3\u30c8\u3092\u767a\u884c\n    $this-&gt;emitTo('cart-counter', 'itemAdded', $productId);\n}\n\n\/\/ \u30a4\u30d9\u30f3\u30c8\u306e\u30ea\u30c3\u30b9\u30f3\nprotected $listeners = [\n    'cartItemAdded' =&gt; 'handleItemAdded',\n    'checkout.completed' =&gt; 'refreshCart'\n];<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-40\">2. \u30c7\u30fc\u30bf\u5171\u6709\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Livewire\/SharedState.php\nnamespace App\\Http\\Livewire;\n\nclass SharedState\n{\n    protected static $state = [];\n\n    public static function get($key, $default = null)\n    {\n        return static::$state[$key] ?? $default;\n    }\n\n    public static function set($key, $value)\n    {\n        static::$state[$key] = $value;\n    }\n}\n\n\/\/ \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u306e\u4f7f\u7528\nclass CartCounter extends Component\n{\n    public function mount()\n    {\n        $this-&gt;count = SharedState::get('cart_count', 0);\n    }\n\n    public function updateCount($newCount)\n    {\n        SharedState::set('cart_count', $newCount);\n        $this-&gt;count = $newCount;\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068Livewire\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u6700\u9069\u5316\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-41\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u6700\u9069\u5316<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-42\">\u30d3\u30e5\u30fc\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-43\">1. \u30d3\u30e5\u30fc\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u30d3\u30e5\u30fc\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\npublic function show($id)\n{\n    $cacheKey = \"post.{$id}.view\";\n\n    return Cache::remember($cacheKey, 3600, function () use ($id) {\n        $post = Post::with(['author', 'comments'])-&gt;findOrFail($id);\n        return view('posts.show', compact('post'))-&gt;render();\n    });\n}\n\n\/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u305f\u9ad8\u5ea6\u306a\u7ba1\u7406\npublic function index()\n{\n    return Cache::tags(['posts', 'frontend'])-&gt;remember('posts.index', 3600, function () {\n        $posts = Post::latest()-&gt;paginate(20);\n        return view('posts.index', compact('posts'))-&gt;render();\n    });\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-44\">2. \u6761\u4ef6\u4ed8\u304d\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e6\u30fc\u30b6\u30fc\u72b6\u614b\u306b\u5fdc\u3058\u305f\u30ad\u30e3\u30c3\u30b7\u30e5\npublic function dashboard()\n{\n    $user = auth()-&gt;user();\n    $cacheKey = \"user.{$user-&gt;id}.dashboard\";\n\n    if (request()-&gt;query('fresh')) {\n        Cache::forget($cacheKey);\n    }\n\n    return Cache::remember($cacheKey, 1800, function () use ($user) {\n        $data = [\n            'activities' =&gt; $user-&gt;activities()-&gt;latest()-&gt;take(10)-&gt;get(),\n            'notifications' =&gt; $user-&gt;unreadNotifications,\n            'stats' =&gt; $this-&gt;getUserStats($user)\n        ];\n\n        return view('dashboard', $data)-&gt;render();\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-45\">XSS\u653b\u6483\u304b\u3089\u306e\u9632\u5fa1\u3068\u30a8\u30b9\u30b1\u30fc\u30d7\u51e6\u7406\u306e\u91cd\u8981\u6027<\/h3>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306f\u73fe\u4ee3\u306eWeb\u958b\u767a\u306b\u304a\u3044\u3066\u6700\u3082\u91cd\u8981\u306a\u8003\u616e\u4e8b\u9805\u306e\u4e00\u3064\u3067\u3059\u3002\u7279\u306bXSS\uff08\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0\uff09\u653b\u6483\u3078\u306e\u5bfe\u7b56\u306f\u5fc5\u9808\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">1. \u57fa\u672c\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u9069\u5207\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u51e6\u7406\nclass PostController extends Controller\n{\n    public function show(Post $post)\n    {\n        \/\/ HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30a8\u30f3\u30b3\u30fc\u30c9\n        $safeTitle = e($post-&gt;title);\n\n        \/\/ JavaScript\u30a8\u30b9\u30b1\u30fc\u30d7\n        $jsonData = json_encode($post-&gt;data, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);\n\n        return view('posts.show', [\n            'post' =&gt; $post,\n            'safeTitle' =&gt; $safeTitle,\n            'jsonData' =&gt; $jsonData\n        ]);\n    }\n}\n\n{{-- \u30d3\u30e5\u30fc\u3067\u306e\u5b89\u5168\u306a\u51fa\u529b --}}\n&lt;div class=\"post-content\"&gt;\n    {{-- \u81ea\u52d5\u30a8\u30b9\u30b1\u30fc\u30d7 --}}\n    {{ $post-&gt;content }}\n\n    {{-- HTML\u51fa\u529b\u304c\u5fc5\u8981\u306a\u5834\u5408 --}}\n    {!! clean($post-&gt;html_content) !!}\n&lt;\/div&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-47\">2. \u30ab\u30b9\u30bf\u30e0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Middleware\/SecurityHeaders.php\nnamespace App\\Http\\Middleware;\n\nclass SecurityHeaders\n{\n    public function handle($request, Closure $next)\n    {\n        $response = $next($request);\n\n        \/\/ \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\n        $response-&gt;headers-&gt;set('X-XSS-Protection', '1; mode=block');\n        $response-&gt;headers-&gt;set('X-Frame-Options', 'SAMEORIGIN');\n        $response-&gt;headers-&gt;set('X-Content-Type-Options', 'nosniff');\n        $response-&gt;headers-&gt;set('Referrer-Policy', 'strict-origin-when-cross-origin');\n\n        \/\/ Content Security Policy\u306e\u8a2d\u5b9a\n        $response-&gt;headers-&gt;set('Content-Security-Policy', \n            \"default-src 'self'; \" .\n            \"script-src 'self' 'unsafe-inline' 'unsafe-eval'; \" .\n            \"style-src 'self' 'unsafe-inline';\"\n        );\n\n        return $response;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-48\">\u5927\u898f\u6a21\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30d3\u30e5\u30fc\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u52b9\u7387\u7684\u306a\u30d3\u30e5\u30fc\u7ba1\u7406\u304c\u91cd\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30d3\u30e5\u30fc\u7ba1\u7406\u306e\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-49\">1. \u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Services\/ViewCacheService.php\nnamespace App\\Services;\n\nclass ViewCacheService\n{\n    public function getCachedView($key, $ttl, callable $callback)\n    {\n        if (app()-&gt;environment('local')) {\n            return $callback();\n        }\n\n        return Cache::tags(['views'])\n            -&gt;remember($key, $ttl, function () use ($callback) {\n                return $callback();\n            });\n    }\n\n    public function invalidateViewCache($tags = [])\n    {\n        Cache::tags(array_merge(['views'], $tags))-&gt;flush();\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nclass HomeController extends Controller\n{\n    protected $viewCache;\n\n    public function __construct(ViewCacheService $viewCache)\n    {\n        $this-&gt;viewCache = $viewCache;\n    }\n\n    public function index()\n    {\n        return $this-&gt;viewCache-&gt;getCachedView('home.index', 3600, function () {\n            $data = $this-&gt;getHomePageData();\n            return view('home', $data)-&gt;render();\n        });\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-50\">2. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u76e3\u8996\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Providers\/ViewServiceProvider.php\nnamespace App\\Providers;\n\nclass ViewServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        \/\/ \u30d3\u30e5\u30fc\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u6642\u9593\u306e\u8a08\u6e2c\n        View::composer('*', function ($view) {\n            $start = microtime(true);\n\n            $view-&gt;afterRendering(function () use ($start, $view) {\n                $duration = microtime(true) - $start;\n                Log::debug(\"View [{$view-&gt;getName()}] rendered in {$duration}s\");\n\n                if ($duration &gt; 1.0) {\n                    Log::warning(\"Slow view rendering detected: {$view-&gt;getName()}\");\n                }\n            });\n        });\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-51\">3. \u30ea\u30bd\u30fc\u30b9\u6700\u9069\u5316\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/view.php\nreturn [\n    'optimizations' =&gt; [\n        'cache' =&gt; [\n            'enabled' =&gt; env('VIEW_CACHE_ENABLED', true),\n            'ttl' =&gt; env('VIEW_CACHE_TTL', 3600),\n        ],\n        'minify' =&gt; [\n            'enabled' =&gt; env('VIEW_MINIFY_ENABLED', true),\n            'html' =&gt; true,\n            'css' =&gt; true,\n            'js' =&gt; true,\n        ],\n    ],\n];\n\n\/\/ app\/Services\/ViewOptimizationService.php\nclass ViewOptimizationService\n{\n    public function optimizeOutput($content)\n    {\n        if (config('view.optimizations.minify.enabled')) {\n            $content = $this-&gt;minifyHtml($content);\n        }\n\n        return $content;\n    }\n\n    protected function minifyHtml($content)\n    {\n        \/\/ HTML\u6700\u5c0f\u5316\u306e\u30ed\u30b8\u30c3\u30af\n        return preg_replace([\n            '\/\\&gt;[^\\S ]+\/s',  \/\/ \u30bf\u30b0\u5f8c\u306e\u7a7a\u767d\u3092\u524a\u9664\n            '\/[^\\S ]+\\&lt;\/s',  \/\/ \u30bf\u30b0\u524d\u306e\u7a7a\u767d\u3092\u524a\u9664\n            '\/(\\s)+\/s'       \/\/ \u8907\u6570\u306e\u7a7a\u767d\u30921\u3064\u306b\n        ], [\n            '&gt;',\n            '&lt;',\n            '\\\\1'\n        ], $content);\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u9069\u5207\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u5b89\u5168\u3067\u9ad8\u901f\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u5b9f\u88c5\u306b\u95a2\u9023\u3059\u308b\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-52\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-53\">\u4e00\u822c\u7684\u306a\u30d3\u30e5\u30fc\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<p>Laravel\u306e\u30d3\u30e5\u30fc\u958b\u767a\u306b\u304a\u3044\u3066\u906d\u9047\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">1. \u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u5bfe\u51e6\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ 1. Undefined Variable \u30a8\u30e9\u30fc\n\/\/ \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\uff1a\n\/\/ Undefined variable: user (View: \/path\/to\/view.blade.php)\n\n\/\/ \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\npublic function show()\n{\n    \/\/ \u5909\u6570\u306e\u6e21\u3057\u5fd8\u308c\n    return view('user.profile');\n}\n\n\/\/ \u89e3\u6c7a\u7b56\npublic function show()\n{\n    $user = Auth::user();\n    return view('user.profile', compact('user'));\n\n    \/\/ \u307e\u305f\u306f\n    if (!$user = Auth::user()) {\n        return redirect()-&gt;route('login');\n    }\n\n    return view('user.profile', compact('user'));\n}\n\n\/\/ 2. View Not Found \u30a8\u30e9\u30fc\n\/\/ \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\uff1a\n\/\/ View [user.profile] not found.\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u30d8\u30eb\u30d1\u30fc\u306e\u5b9f\u88c5\npublic function resolveViewPath($viewName)\n{\n    try {\n        $view = View::make($viewName);\n        return $view-&gt;getPath();\n    } catch (\\Exception $e) {\n        $searchPaths = config('view.paths');\n        $possibleLocations = collect($searchPaths)-&gt;map(function ($path) use ($viewName) {\n            return str_replace('.', '\/', $viewName) . '.blade.php';\n        });\n\n        return [\n            'error' =&gt; 'View not found',\n            'searched_locations' =&gt; $possibleLocations,\n        ];\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">2. \u30d3\u30e5\u30fc\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Helpers\/ViewDebugger.php\nnamespace App\\Helpers;\n\nclass ViewDebugger\n{\n    public static function dump($view, $data = [])\n    {\n        if (app()-&gt;environment('local')) {\n            echo \"&lt;pre class='debug-info'&gt;\";\n            echo \"&lt;h3&gt;View Data Debugging&lt;\/h3&gt;\";\n            echo \"View Name: \" . $view-&gt;getName() . \"\\n\";\n            echo \"View Path: \" . $view-&gt;getPath() . \"\\n\";\n            echo \"Data Variables:\\n\";\n            var_dump($data);\n            echo \"&lt;\/pre&gt;\";\n        }\n    }\n\n    public static function logRenderingTime($view, $callback)\n    {\n        $start = microtime(true);\n        $result = $callback();\n        $duration = microtime(true) - $start;\n\n        Log::debug(\"View [{$view-&gt;getName()}] rendered in {$duration}s\", [\n            'data_count' =&gt; count($view-&gt;getData()),\n            'memory_usage' =&gt; memory_get_usage(true)\n        ]);\n\n        return $result;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n@php\n    ViewDebugger::dump($this, get_defined_vars());\n@endphp<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u3068\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">1. \u30ab\u30b9\u30bf\u30e0Blade\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b\u3088\u308b\u30c7\u30d0\u30c3\u30b0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ AppServiceProvider\u3067\u306e\u767b\u9332\npublic function boot()\n{\n    \/\/ \u30c7\u30d0\u30c3\u30b0\u7528\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306e\u767b\u9332\n    Blade::directive('debug', function ($expression) {\n        return \"&lt;?php if (config('app.debug')): ?&gt;\\n\" .\n               \"    &lt;div class='debug-output'&gt;\\n\" .\n               \"        &lt;?php var_dump({$expression}); ?&gt;\\n\" .\n               \"    &lt;\/div&gt;\\n\" .\n               \"&lt;?php endif; ?&gt;\";\n    });\n\n    \/\/ \u5909\u6570\u306e\u5b58\u5728\u78ba\u8a8d\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    Blade::directive('varcheck', function ($expression) {\n        return \"&lt;?php if (isset({$expression})): ?&gt;\\n\" .\n               \"    &lt;div class='var-exists'&gt;Variable {$expression} exists&lt;\/div&gt;\\n\" .\n               \"&lt;?php else: ?&gt;\\n\" .\n               \"    &lt;div class='var-missing'&gt;Variable {$expression} is not set&lt;\/div&gt;\\n\" .\n               \"&lt;?php endif; ?&gt;\";\n    });\n}\n\n\/\/ \u30d3\u30e5\u30fc\u3067\u306e\u4f7f\u7528\n@debug($user)\n@varcheck($posts)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">2. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u30c4\u30fc\u30eb<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Services\/ViewProfiler.php\nnamespace App\\Services;\n\nclass ViewProfiler\n{\n    protected static $measurements = [];\n\n    public static function start($identifier)\n    {\n        static::$measurements[$identifier] = [\n            'start' =&gt; microtime(true),\n            'memory_start' =&gt; memory_get_usage(true)\n        ];\n    }\n\n    public static function end($identifier)\n    {\n        if (!isset(static::$measurements[$identifier])) {\n            return;\n        }\n\n        $measurement = static::$measurements[$identifier];\n        $duration = microtime(true) - $measurement['start'];\n        $memory = memory_get_usage(true) - $measurement['memory_start'];\n\n        Log::debug(\"Profile [$identifier]\", [\n            'duration' =&gt; $duration,\n            'memory_usage' =&gt; $memory,\n            'peak_memory' =&gt; memory_get_peak_usage(true)\n        ]);\n\n        return [\n            'duration' =&gt; $duration,\n            'memory_usage' =&gt; $memory\n        ];\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n@php ViewProfiler::start('main-content') @endphp\n    {{-- \u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u8868\u793a --}}\n@php\n    $metrics = ViewProfiler::end('main-content');\n    if (app()-&gt;environment('local')) {\n        echo \"Rendering time: {$metrics['duration']}s\";\n    }\n@endphp<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-59\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\u3068\u6700\u9069\u5316\u306e\u30a2\u30d7\u30ed\u30fc\u30c1<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-60\">1. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Services\/ViewPerformanceMonitor.php\nnamespace App\\Services;\n\nclass ViewPerformanceMonitor\n{\n    protected $threshold;\n    protected $measurements = [];\n\n    public function __construct($threshold = 1.0)\n    {\n        $this-&gt;threshold = $threshold;\n    }\n\n    public function measure($view, callable $callback)\n    {\n        $start = microtime(true);\n        $startMemory = memory_get_usage(true);\n\n        $result = $callback();\n\n        $duration = microtime(true) - $start;\n        $memoryUsage = memory_get_usage(true) - $startMemory;\n\n        $this-&gt;logMeasurement($view, $duration, $memoryUsage);\n\n        return $result;\n    }\n\n    protected function logMeasurement($view, $duration, $memoryUsage)\n    {\n        $this-&gt;measurements[] = [\n            'view' =&gt; $view,\n            'duration' =&gt; $duration,\n            'memory' =&gt; $memoryUsage,\n            'timestamp' =&gt; now()\n        ];\n\n        if ($duration &gt; $this-&gt;threshold) {\n            Log::warning(\"Slow view rendering detected\", [\n                'view' =&gt; $view,\n                'duration' =&gt; $duration,\n                'memory_usage' =&gt; $memoryUsage\n            ]);\n\n            \/\/ New Relic \u3084\u4ed6\u306e\u76e3\u8996\u30b5\u30fc\u30d3\u30b9\u3078\u306e\u901a\u77e5\n            if (extension_loaded('newrelic')) {\n                newrelic_notice_error(\"Slow view rendering: {$view}\");\n            }\n        }\n    }\n\n    public function getReport()\n    {\n        return [\n            'total_views' =&gt; count($this-&gt;measurements),\n            'average_duration' =&gt; collect($this-&gt;measurements)-&gt;avg('duration'),\n            'max_duration' =&gt; collect($this-&gt;measurements)-&gt;max('duration'),\n            'total_memory' =&gt; collect($this-&gt;measurements)-&gt;sum('memory'),\n            'slow_views' =&gt; collect($this-&gt;measurements)\n                -&gt;filter(fn($m) =&gt; $m['duration'] &gt; $this-&gt;threshold)\n                -&gt;values()\n        ];\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nclass HomeController extends Controller\n{\n    protected $performanceMonitor;\n\n    public function __construct(ViewPerformanceMonitor $monitor)\n    {\n        $this-&gt;performanceMonitor = $monitor;\n    }\n\n    public function index()\n    {\n        return $this-&gt;performanceMonitor-&gt;measure('home.index', function () {\n            $data = $this-&gt;getHomePageData();\n            return view('home', $data);\n        });\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u9069\u5207\u306a\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6e2c\u5b9a\u306e\u5b9f\u88c5\u306b\u3088\u308a\u3001\u52b9\u7387\u7684\u306a\u554f\u984c\u89e3\u6c7a\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,12],"tags":[],"class_list":{"0":"post-3249","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php-laravel","7":"category-php","8":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3249"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3249\/revisions"}],"predecessor-version":[{"id":3251,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3249\/revisions\/3251"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}