CINXE.COM

laravelの人気記事 413件 - はてなブックマーク

<!DOCTYPE html> <html lang="ja" data-page-scope="EntrySearch" data-stable-request-url="https://b.hatena.ne.jp/q/laravel" data-device-type="PC" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-entry-search-query="laravel" data-page-subtype="entrysearch" data-page-type="entrysearch" > <head> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5TDHQX'); </script> <!-- End Google Tag Manager --> <meta charset="UTF-8"> <title>laravelの人気記事 413件 - はてなブックマーク</title> <script src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/js/v4/bookmark.js" async></script> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/css/v4/pikaday.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/css/v4/triangle.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/css/v4/bookmark.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/css/v4/bookmark.star.css" /> <link rel="canonical" href="https://b.hatena.ne.jp/q/laravel" /> <link rel="next" href="/q/laravel?page=2&amp;safe=on&amp;date_range=5y&amp;users=3&amp;target=tag&amp;sort=popular"> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> <meta name="viewport" content="width=device-width"> <link rel="search" type="application/opensearchdescription+xml" title="はてなブックマーク検索" href="/opensearch.xml" /> <link rel="apple-touch-icon-precomposed" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/apple-touch-icon-precomposed.png" /> <link rel="mask-icon" href="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/safari-pinned-tab-icon.svg" color="#00A4DE" /> <meta name="msapplication-navbutton-color" content="#2C6EBD" /> <meta name="msapplication-task" content="name=はてなブックマーク; action-uri=/; icon-uri=https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/icons/bookmark.ico" /> <meta name="msapplication-task" content="name=マイブックマーク; action-uri=/my; icon-uri=https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/icons/my-bookmark.ico" /> <meta name="msapplication-task" content="name=お気に入りのブックマーク; action-uri=/my/favorite; icon-uri=https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/icons/favorite-bookmark.ico" /> <meta name="msapplication-task" content="name=人気エントリー; action-uri=/hotentry; icon-uri=https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/icons/hotentry.ico" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="referrer" content="origin"> <link rel="alternate" type="application/rss+xml" href="/q/laravel?date_range=5y&amp;users=3&amp;target=tag&amp;sort=popular&amp;mode=rss&amp;safe=on" /> <script> function isMobile() { const html = document.documentElement; const deviceType = html.dataset.deviceType || ''; if (deviceType.length > 0) { return deviceType === 'MOBILE'; } else { const maxMobileWidth = 480; const windowWidth = window.innerWidth; return maxMobileWidth >= windowWidth; } } </script> </head> <body class="page-centerarticle page-entrysearch fixed-header"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5TDHQX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="link-app-banner js-dynamic-link-app-banner is-hidden"> <button class="link-app-banner-btn-close js-dynamic-link-app-banner-close-button"><span>close</span></button> <a class="link-app-banner-btn" href="https://hatenabookmark.page.link/app"> <div class="link-app-banner-btn-detail"> <div class="link-app-banner-icon"><img src="/images/v4/public/app/ic-ios.svg" alt="はてなブックマークアプリ"></div> <p class="link-app-banner-text">サクサク読めて、<br class="link-app-banner-text-newline">アプリ限定の機能も多数!</p> </div> <div class="link-app-banner-btn-open">アプリで開く</div> </a> </div> <header id="global-header" data-portal-static-origin="//cdn.www.st-hatena.com"> <div id="header" class="global-header-inner js-global-header-inner"> <h2 id="gh-logo"><a href="/" data-gtm-label="gh-blogo"><span>はてなブックマーク</span></a></h2> <div class="is-guest js-guest is-hidden"> <input id="gh-search-icon-check" type="checkbox" checked="checked" /> <label class="gh-search-icon" for="gh-search-icon-check" aria-label="検索を閉じる"><span>閉じる</span></label> <form class="gh-searchbox" method="get" action="/search_dwim" role="search"> <input value="" name="q" type="search" class="gh-inputtext" placeholder="キーワード・URLを検索" size="40" /> <input value="" type="submit" class="gh-search-button" /> </form> <ul class="gh-service-menu"> <li><a href="/guide" data-gtm-label="gh-guest-guide">はてなブックマークって?</a></li> <li><a href="/guide/tools" data-gtm-label="gh-guest-tools">アプリ・拡張の紹介</a></li> <li><a href="https://www.hatena.ne.jp/register?location=https%3A%2F%2Fb.hatena.ne.jp%2F%3Fregistered_from%3Dglobal-header&amp;via=201037" class="gh-guest-register" data-gtm-label="gh-guest-register">ユーザー登録</a></li> <li><a href="https://www.hatena.ne.jp/login?location=https%3A%2F%2Fb.hatena.ne.jp%2Fq%2Flaravel" rel="nofollow" class="gh-guest-login" data-gtm-label="gh-guest-login">ログイン</a></li> <li class="gh-hatena-logo"><a href="http://www.hatena.ne.jp/"><img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/logo/logo-global-white.svg" alt="Hatena" width="74px" height="13px"/></a></li> </ul> </div> <noscript> <ul class="gh-service-menu"> <li><a href="https://www.hatena.ne.jp/logout?location=https%3A%2F%2Fb.hatena.ne.jp%2F">ログアウト</a></li> </ul> </noscript> <script type="text/x-template" id="template-menu-hatena-user"> <form class="gh-searchbox" method="get" action="/search_dwim" role="search"> <input value="" name="q" type="search" class="gh-inputtext" placeholder="キーワード・URLを検索" size="40" /> <input value="" type="submit" class="gh-search-button" /> </form> <ul class="gh-service-menu"> <li><a class="hotentry" data-gtm-label="gh-mypage" href="{{hotentry_url}}"><img src="{{user_image_url}}" class="header-profile-icon" width="16" height="16" alt="{{username}}" /></a><a class="hotentry" data-gtm-label="gh-mypage" href="{{hotentry_url}}">マイページ</a></li> <li><a class="bookmark" data-gtm-label="gh-bookmark" href="{{bookmark_url}}">ブックマーク</a></li> <li><a class="unread_bookmark" data-gtm-label="gh-ril" href="{{bookmark_stock_url}}">あとで読む</a></li> <li><a class="add" data-gtm-label="gh-add" href="{{add_bookmark_url}}">追加</a></li> <li><a class="tools" data-gtm-label="gh-tools" href="/guide/tools">ツール</a></li> <li><a class="config" data-gtm-label="gh-config" href="/-/my/config/profile">設定</a></li> <li><a class="feedback" data-gtm-label="gh-feedback" href="/-/feedback/hatena_bookmark" target="_blank">フィードバック</a></li> <li id="header-username" class="gh-dropdown-services" data-gtm-label="gh-services" title="利用中のサービス" data-name="{{username}}"> <span class="header-dropdown gh-dropdown" tabindex="0"> <img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/common/usermenu-wh.svg" alt="利用中のサービス" width="24" height="24" /> </span> <dl class="header-window" id="username-window"></dl> </li> <li id="header-notify" data-gtm-label="gh-notify" class="gh-dropdown-notify" title="あなたへのお知らせ"> <span class="header-dropdown gh-dropdown" tabindex="0"> <img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/common/notify-wh.svg" alt="あなたへのお知らせ" width="25" height="25" /> <span class="notify-count"></span> </span> <div id="notify-window" class="header-window header-notify"></div> </li> <li class="gh-hatena-logo"><a href="http://www.hatena.ne.jp/"><img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/logo/logo-global-white.svg" alt="Hatena" width="74px" height="13px"/></a></li> </ul> </script> </div> </header> <div id="info-header"><div id="info-header-message"></div><span></span></div> <div class="global-notification is-hidden js-global-notification"></div> <div id="container"> <div class="entrysearch-searchbox"> <form class="entrysearch-searchbox-body js-entrysearch-form" method="get"> <input value="laravel" type="text" class="entrysearch-searchbox-textInput js-entrysearch-form-text-input" size="40" aria-label="検索キーワードを入力"> <input value="tag" name="target" type="hidden"> <input value="popular" name="sort" type="hidden"> <input value="3" name="users" type="hidden"> <input value="on" name="safe" type="hidden"> <input value="検索" type="submit" class="entrysearch-searchbox-btn js-entrysearch-form-button" aria-label="検索"> </form> </div> <div class="centerarticle-wrapper"> <div class="left-container"> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">検索対象</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/laravel?target=all&amp;users=3&amp;date_range=5y&amp;sort=popular&amp;safe=on" >すべて</a></li> <li><a href="/q/laravel?users=3&amp;date_range=5y&amp;target=tag&amp;sort=popular&amp;safe=on" class="is-current">タグ</a></li> <li><a href="/q/laravel?sort=popular&amp;date_range=5y&amp;users=3&amp;target=title&amp;safe=on" >タイトル</a></li> <li><a href="/q/laravel?users=3&amp;date_range=5y&amp;target=text&amp;sort=popular&amp;safe=on" >本文</a></li> </ul> </div> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">並び順</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/laravel?safe=on&amp;sort=recent&amp;target=tag&amp;users=3&amp;date_range=5y" >新着</a></li> <li><a href="/q/laravel?safe=on&amp;date_range=5y&amp;users=3&amp;target=tag&amp;sort=popular" class="is-current">人気</a></li> </ul> </div> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">ブックマーク数</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/laravel?users=1&amp;date_range=5y&amp;target=tag&amp;sort=popular&amp;safe=on" >1 user</a></li> <li><a href="/q/laravel?target=tag&amp;date_range=5y&amp;users=3&amp;sort=popular&amp;safe=on" class="is-current">3 users</a></li> <li><a href="/q/laravel?safe=on&amp;sort=popular&amp;target=tag&amp;users=50&amp;date_range=5y" >50 users</a></li> <li><a href="/q/laravel?sort=popular&amp;users=100&amp;date_range=5y&amp;target=tag&amp;safe=on" >100 users</a></li> <li><a href="/q/laravel?sort=popular&amp;target=tag&amp;date_range=5y&amp;users=500&amp;safe=on" >500 users</a></li> </ul> </div> <div class="centerarticle-sidebar-menu js-safe-search-div is-hidden" title="セーフサーチはログイン時にのみoffにできます"> <h3 class="centerarticle-aside-title">セーフサーチ</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/laravel?safe=on&amp;sort=popular&amp;users=3&amp;date_range=5y&amp;target=tag" class="is-current">オン</a></li> <li><a href="/q/laravel?safe=off&amp;sort=popular&amp;date_range=5y&amp;users=3&amp;target=tag" >オフ</a></li> </ul> </div> <div class="centerarticle-sidebar-menu js-entrysearch-date"> <h3 class="centerarticle-aside-title">期間指定</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/laravel?safe=on&amp;target=tag&amp;date_range=all&amp;users=3&amp;sort=popular" >すべて</a></li> <li><a href="/q/laravel?sort=popular&amp;target=tag&amp;date_range=w&amp;users=3&amp;safe=on" >1週間</a></li> <li><a href="/q/laravel?sort=popular&amp;target=tag&amp;users=3&amp;date_range=m&amp;safe=on" >1ヶ月</a></li> <li><a href="/q/laravel?safe=on&amp;sort=popular&amp;date_range=y&amp;users=3&amp;target=tag" >1年</a></li> </ul> <form method="get" class="js-entrysearch-datepicker-form"> <input value="laravel" class="js-entrysearch-form-text-input" type="hidden"> <input value="tag" name="target" type="hidden"> <input value="popular" name="sort" type="hidden"> <input value="3" name="users" type="hidden"> <input value="on" name="safe" type="hidden"> <ul class="centerarticle-sub-navi"> <li><input class="js-entrysearch-datepicker-start entrysearch-searchbox-dateInput" value="" type="text" name="date_begin"> から</li> <li><input class="js-entrysearch-datepicker-end entrysearch-searchbox-dateInput" value="" type="text" name="date_end"> まで</li> <li><input value="検索" type="submit" class="entrysearch-searchbox-btn js-entrysearch-form-button"><li> </ul> </form> </div> </div> <div class="entrysearch-bar"> <p class="entrysearch-bar-results">1 - 40 件 / 413件</p> <div class="entrysearch-bar-inner"> <button class="entrysearch-filter-btn js-entrysearch-filter-btn">絞り込み</button> <a class="entrysearch-sort-btn" href="/q/laravel?target=tag&amp;date_range=5y&amp;users=3&amp;sort=popular&amp;safe=on">新着順</a> <a class="entrysearch-sort-btn is-current" href="/q/laravel?safe=on&amp;target=tag&amp;users=3&amp;date_range=5y&amp;sort=recent">人気順</a> </div> </div> <div class="entrysearch-filter js-entrysearch-filter is-hidden"> <div class="entrysearch-filter-header"> <h2 class="entrysearch-filter-title">絞り込み</h2> <button class="entrysearch-filter-close js-entrysearch-filter-close"></button> </div> <ul class="entrysearch-filter-list"> <li class="entrysearch-filter-item js-entrysearch-target-dropdown"> <h3 class="entrysearch-filter-item-head">検索対象</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-target"> <option value="all" >すべて</option> <option value="tag" selected>タグ</option> <option value="title" >タイトル</option> <option value="text" >本文</option> </select> </div> </li> <li class="entrysearch-filter-item"> <h3 class="entrysearch-filter-item-head">ブックマーク数</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-users"> <option value="1" >1 user</option> <option value="3" selected>3 users</option> <option value="50" >50 users</option> <option value="100" >100 users</option> <option value="500" >500 users</option> </select> </div> </li> <li class="entrysearch-filter-item"> <h3 class="entrysearch-filter-item-head">期間</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-daterange"> <option value="all">すべて</option> <option value="w" >1週間</option> <option value="m" >1ヶ月</option> <option value="y" >1年</option> </select> </div> </li> <li class="entrysearch-filter-item js-safe-search-div is-hidden"> <h3 class="entrysearch-filter-item-head">セーフサーチ</h3> <div class="entrysearch-filter-checkbox"> <input type="checkbox" name="safesearch" id="safesearch" class="js-entryseach-safesearch" checked> <label class="entrysearch-filter-checkbox-label" for="safesearch"></label> </div> </li> </ul> <div class="entrysearch-filter-footer"> <button class="entrysearch-filter-search-btn styleguide-btn-primary js-entrysearch-filter-search-btn">検索する</button> <button class="entrysearch-filter-clear-btn styleguide-btn-text js-entrysearch-filter-clear-btn">条件をクリアする</button> </div> </div> <div class="search-container"> <h2 class="entrysearch-title"> <span class="entrysearch-word">laravelの検索結果</span><span class="entrysearch-result">1 - 40 件 / 413件</span> </h2> <div class="entrysearch-summary-text"> <span>laravel</span>に関するエントリは<span>413</span>件あります。 <span>php</span>、 <span>Laravel</span>、 <span>開発</span> などが関連タグです。 人気エントリには <span>『ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました』</span>などがあります。 </div> <div class="entrysearch-related-entries" data-gtm-inview-label="entry-search-recommend-header"> <h3 class="entrysearch-related-title">laravelの関連エントリー</h3> <ul class="entrysearch-related-list"> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3ef7bc99350f88cd54bc99cc0ed1c732e5f3a4f8/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F7d7f42c7f7bc4601aa27f2bcac0a9fdb%2Fslide_0.jpg%3F34341788" alt="私の愛したLaravel 〜レールを超えたその先へ〜"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> 私の愛したLaravel 〜レールを超えたその先へ〜 </a> </h4> <a href="/entry/s/speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 119 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://it.kensan.net/laravel-11-aws-lambda.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/9e7f1245e148b133e26a4afbbfc853301a0e2187/height=288;version=1;width=512/https%3A%2F%2Fit.kensan.net%2Fwp-content%2Fuploads%2F2023%2F02%2Flambda.png" alt="Laravel 11をAWS Lambdaで動くようにして簡単なAPIを作ってみる"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://it.kensan.net/laravel-11-aws-lambda.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> Laravel 11をAWS Lambdaで動くようにして簡単なAPIを作ってみる </a> </h4> <a href="/entry/s/it.kensan.net/laravel-11-aws-lambda.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 57 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://qiita.com/ucan-lab/items/a9a5c55ce12a6d8752d3" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/common/noimage.png" alt="Laravel から一歩先へ。クリーンアーキテクチャによる柔軟な設計パターン - Qiita"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://qiita.com/ucan-lab/items/a9a5c55ce12a6d8752d3" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> Laravel から一歩先へ。クリーンアーキテクチャによる柔軟な設計パターン - Qiita </a> </h4> <a href="/entry/s/qiita.com/ucan-lab/items/a9a5c55ce12a6d8752d3" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 11 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://levtech.jp/media/article/interview/detail_561/" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5f8b28319e5bc83fa51537faefc4ab8ab59f197c/height=288;version=1;width=512/https%3A%2F%2Flevtech.jp%2Fmedia%2Fwp-content%2Fuploads%2F2024%2F11%2F241119_LTlab_eyecatch_focus_214_B.png" alt="「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 | レバテックラボ(レバテックLAB)"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://levtech.jp/media/article/interview/detail_561/" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> 「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 | レバテックラボ(レバテックLAB) </a> </h4> <a href="/entry/s/levtech.jp/media/article/interview/detail_561/" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 105 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/78cbd4cdf2d0afaf389229466ca6242be51e1084/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F303995c6909544adadb2a0a9760da2ce%2Fslide_0.jpg%3F32607847" alt="見せてあげますよ、「本物のLaravel批判」ってやつを。"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> 見せてあげますよ、「本物のLaravel批判」ってやつを。 </a> </h4> <a href="/entry/s/speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 149 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3b42152a9753d064444d58ecb4e3cb3d82776cca/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTkxMTg1JTJGcHJvZmlsZS1pbWFnZXMlMkYxNzE3ODU0ODk3P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWM3NDQxMjEyMTI4Njk0NmJjNDViNjZiODAzNDQ3NDdj%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6ef635a782fb7f7acfd4ec7b4098f80c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9TGFyYXZlbCVFMyU4MSU4QyVFNSVBNiU4MiVFNCVCRCU5NSVFMyU4MSVBQiVFMyU4MyU4MCVFMyU4MyVBMSVFMyU4MSVBNyVFNiU5OSU4MiVFNCVCQiVBMyVFOSU4MSU4NSVFMyU4MiU4QyVFMyU4MSU4QiVFMyU4MiU5MiVFOCVBQSVBQyVFNiU5OCU4RSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTI1MGNkZjRmZDM5MzFlNjIwZjk5N2M0YTYyYTlmNDY5%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBNYWRha2FIZXJpJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NjEyM2E0YTBlNmQ1OGVmMzkxMGZkZWI2NzI0ZDcyMzQ%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D9139e533e340e897f0c218ebc3c52cc3" alt="Laravelが如何にダメで時代遅れかを説明する - Qiita"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> Laravelが如何にダメで時代遅れかを説明する - Qiita </a> </h4> <a href="/entry/s/qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 151 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3b42152a9753d064444d58ecb4e3cb3d82776cca/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTkxMTg1JTJGcHJvZmlsZS1pbWFnZXMlMkYxNzE3ODU0ODk3P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWM3NDQxMjEyMTI4Njk0NmJjNDViNjZiODAzNDQ3NDdj%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6ef635a782fb7f7acfd4ec7b4098f80c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9TGFyYXZlbCVFMyU4MSU4QyVFNSVBNiU4MiVFNCVCRCU5NSVFMyU4MSVBQiVFMyU4MyU4MCVFMyU4MyVBMSVFMyU4MSVBNyVFNiU5OSU4MiVFNCVCQiVBMyVFOSU4MSU4NSVFMyU4MiU4QyVFMyU4MSU4QiVFMyU4MiU5MiVFOCVBQSVBQyVFNiU5OCU4RSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTI1MGNkZjRmZDM5MzFlNjIwZjk5N2M0YTYyYTlmNDY5%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBNYWRha2FIZXJpJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NjEyM2E0YTBlNmQ1OGVmMzkxMGZkZWI2NzI0ZDcyMzQ%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D9139e533e340e897f0c218ebc3c52cc3" alt="Laravelが如何にダメで時代遅れかを説明する - Qiita"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> Laravelが如何にダメで時代遅れかを説明する - Qiita </a> </h4> <a href="/entry/s/qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 175 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://atmarkit.itmedia.co.jp/ait/articles/2410/28/news008.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/ca00f2cd7b65d9f459d0153c0cd55a0f10fc090f/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fait%2Farticles%2F2410%2F28%2Ftitle_itsosyo.jpg" alt="ReactJSで作るはずだったのに、Laravelで作ったので訴えます"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://atmarkit.itmedia.co.jp/ait/articles/2410/28/news008.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> ReactJSで作るはずだったのに、Laravelで作ったので訴えます </a> </h4> <a href="/entry/s/atmarkit.itmedia.co.jp/ait/articles/2410/28/news008.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 39 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/802f5aed5917e5ee6e754ebf65053c3876951183/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--hM8D-rHP--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ALaravel%2525E3%252581%2525AF%2525E3%252581%2525A9%2525E3%252581%2525AE%2525E3%252582%252588%2525E3%252581%252586%2525E3%252581%2525ABCSRF%2525E5%2525AF%2525BE%2525E7%2525AD%252596%2525E3%252582%252592%2525E3%252581%252597%2525E3%252581%2525A6%2525E3%252581%252584%2525E3%252582%25258B%2525E3%252581%2525AE%2525E3%252581%25258B%2525EF%2525BC%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AKanon%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzM1OTY4ZjJmNWUuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="LaravelはどのようにCSRF対策をしているのか?"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> LaravelはどのようにCSRF対策をしているのか? </a> </h4> <a href="/entry/s/zenn.dev/yskn_sid25/articles/3008cf70c5a560" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 130 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://techfeed.io/entries/66d0e61686341e6ef0ecef26" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/08c6f6038266d3805ac30f35089d0b6f2fe6c144/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Ftechfeed%2Fimage%2Fupload%2Fw_1200%2Ch_630%2Cc_fill%2Ff_auto%2Fv1724966152%2Fentries%2Fuvnvehwyl9dodllweq3b.png" alt="Laravel Cloud登場!Laravelアプリケーションを即時デプロイ、自動スケーリングも可能"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://techfeed.io/entries/66d0e61686341e6ef0ecef26" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-a-title"> Laravel Cloud登場!Laravelアプリケーションを即時デプロイ、自動スケーリングも可能 </a> </h4> <a href="/entry/s/techfeed.io/entries/66d0e61686341e6ef0ecef26" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-a-users"> 20 users </a> </div> </li> </ul> </div> <ul class="entrysearch-articles"> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/ttskch/articles/1f1572cfd2e375"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ttskch/articles/1f1572cfd2e375" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fttskch%2Farticles%2F1f1572cfd2e375" alt="">ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ttskch/articles/1f1572cfd2e375" class="js-keyboard-entry-page-openable" title="ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました (1085 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 1085 users </a> </span> </li> <li> <a href="/site/zenn.dev/ttskch" title="『zenn.dev/ttskch』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/ttskch </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/06/05</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">この記事で紹介した手順をライブラリ化して公開しました🎉 こちらの別記事 で使い方など詳しくご紹介していますので、ぜひご参照ください! 2024/05/07 追記 最新の登壇スライドバージョンはこちらです。 登壇時の様子がYouTubeに上がっているのでよろしければあわせてご覧ください。 はじめに 言い切りタイトルすみません 僕を含む一定数の人にとって現時点でのベストプラクティスとなりうる手法という意味で紹介しています 極めてシビアな帳票出力の世界にいる人から見ると使い物にならない内容かもしれないと思います 帳票印刷の世界では SVF というサービスが有名らしいです。が、こういった外部サービスは使わずに自力で実装するというのがこの記事の前提です 動的に明細行の数が増減する連票はこの記事の解説では考慮していませんが、追加で実装するのはそれほど難しくないということは読んでいただければ分かるかな</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E5%B8%B3%E7%A5%A8" data-gtm-click-label="entry-search-result-item-tag">帳票</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/svg" data-gtm-click-label="entry-search-result-item-tag">svg</a></li> <li><a href="/q/pdf" data-gtm-click-label="entry-search-result-item-tag">pdf</a></li> <li><a href="/q/%E6%8A%80%E8%A1%93" data-gtm-click-label="entry-search-result-item-tag">技術</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E3%82%A2%E3%83%97%E3%83%AA" data-gtm-click-label="entry-search-result-item-tag">アプリ</a></li> <li><a href="/q/%E5%8D%B0%E5%88%B7" data-gtm-click-label="entry-search-result-item-tag">印刷</a></li> <li><a href="/q/print" data-gtm-click-label="entry-search-result-item-tag">print</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/ttskch/articles/1f1572cfd2e375"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/ttskch/articles/1f1572cfd2e375" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/1d333b0a803254a51bb67f85d82792b14c716d75/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--qDOTW7FI--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252581%2525A4%2525E3%252581%252584%2525E3%252581%2525AB%2525E3%252580%252581Web%2525E3%252582%2525A2%2525E3%252583%252597%2525E3%252583%2525AA%2525E3%252581%2525A7%2525E3%252581%2525AE%2525E5%2525B8%2525B3%2525E7%2525A5%2525A8%2525E5%25258D%2525B0%2525E5%252588%2525B7%2525E3%252581%2525AE%2525E3%252583%252599%2525E3%252582%2525B9%2525E3%252583%252588%2525E3%252583%252597%2525E3%252583%2525A9%2525E3%252582%2525AF%2525E3%252583%252586%2525E3%252582%2525A3%2525E3%252582%2525B9%2525E3%252582%252592%2525E7%2525B7%2525A8%2525E3%252581%2525BF%2525E5%252587%2525BA%2525E3%252581%252597%2525E3%252581%2525BE%2525E3%252581%252597%2525E3%252581%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Attskch%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2RhY2Y2ZmZjMDcuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://togetter.com/li/1623931"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://togetter.com/li/1623931" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftogetter.com%2Fli%2F1623931" alt="">「自立とは”依存先を増やすこと”」障害を持つ東大の先生の言葉に反響「依存しないことではなく、多くのものに浅く依存すること」 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/togetter.com/li/1623931" class="js-keyboard-entry-page-openable" title="「自立とは”依存先を増やすこと”」障害を持つ東大の先生の言葉に反響「依存しないことではなく、多くのものに浅く依存すること」 (774 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 774 users </a> </span> </li> <li> <a href="/site/togetter.com/" title="『togetter.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> togetter.com </a> </li> <li> <a href="/hotentry/social" data-gtm-click-label="entry-search-result-item-category">世の中</a> </li> <li><span class="entry-contents-date">2020/11/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">リンク www.univcoop.or.jp 自立とは「依存先を増やすこと」|全国大学生活協同組合連合会(全国大学生協連) 全国大学生活協同組合連合会(全国大学生協連)のホームページ。大学生協の組織や事業、活動の紹介や、充実した大学生活を送るためのアドバイスなどを掲載しています。 11 users 957 リンク Wikipedia 熊谷晋一郎 熊谷 晋一郎(くまがや しんいちろう、1977年(昭和52年)- )は、日本の医師、科学者。専門は小児科学、当事者研究。博士(学術)(2014年、東京大学)。東京大学先端科学技術研究センター准教授。「ちいさい・おおきい・よわい・つよい」編集長。山口県出身。 山口県新南陽市生まれ。新生児仮死の後遺症で脳性麻痺となり、車椅子生活を送る。小学校・中学校と普通学校で統合教育を経験し、山口県立徳山高等学校、東京大学医学部医学科を卒業。小児科医として病院勤務を</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/togetter" data-gtm-click-label="entry-search-result-item-tag">togetter</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E8%A8%80%E8%91%89" data-gtm-click-label="entry-search-result-item-tag">言葉</a></li> <li><a href="/q/%E7%94%9F%E6%B4%BB" data-gtm-click-label="entry-search-result-item-tag">生活</a></li> <li><a href="/q/%E8%80%83%E3%81%88%E6%96%B9" data-gtm-click-label="entry-search-result-item-tag">考え方</a></li> <li><a href="/q/%E9%9A%9C%E5%AE%B3" data-gtm-click-label="entry-search-result-item-tag">障害</a></li> <li><a href="/q/%E7%A4%BE%E4%BC%9A" data-gtm-click-label="entry-search-result-item-tag">社会</a></li> <li><a href="/q/%E4%BA%BA%E7%94%9F" data-gtm-click-label="entry-search-result-item-tag">人生</a></li> <li><a href="/q/%E5%BF%83%E7%90%86" data-gtm-click-label="entry-search-result-item-tag">心理</a></li> <li><a href="/q/twitter" data-gtm-click-label="entry-search-result-item-tag">twitter</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://togetter.com/li/1623931"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://togetter.com/li/1623931" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/53c97e6f685bd5f649af4f6ba4b3c86468550c50/height=288;version=1;width=512/https%3A%2F%2Fs.tgstc.com%2Fogp3%2Fc33c7cf57e610dbabadd8a4338ea827b-1200x630.jpeg" alt="「自立とは”依存先を増やすこと”」障害を持つ東大の先生の言葉に反響「依存しないことではなく、多くのものに浅く依存すること」" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://note.com/erukiti/n/n6eec3ad83ebb"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://note.com/erukiti/n/n6eec3ad83ebb" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnote.com%2Ferukiti%2Fn%2Fn6eec3ad83ebb" alt="">10年引きこもりニートしてた就職氷河期直撃アラフィフでも社会復帰してReactで成り上がれるよ|erukiti </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/note.com/erukiti/n/n6eec3ad83ebb" class="js-keyboard-entry-page-openable" title="10年引きこもりニートしてた就職氷河期直撃アラフィフでも社会復帰してReactで成り上がれるよ|erukiti (643 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 643 users </a> </span> </li> <li> <a href="/site/note.com/erukiti" title="『note.com/erukiti』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> note.com/erukiti </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/11/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">社会問題にもなっている就職氷河期直撃世代のえるきちです。クッソどうでもいい専門学校を出てから10年引きこもりニートしてました。 どん底(と言っても本当にどん底ではないかもしれない)からでも、普通に人生なんとかなるみたいな話です。あと、怪しげなサロンやスクールに通うくらいならN予備校に通う方がいいと思いますという話です。 ワナビー界隈だと年収公開したりするようなキラキラパリピが人気集めるんですって?わざわざ金の話をこれ見よがしに語る人、まっとうなエンジニアではないので気をつけた方がいいですよ。 年収は特に書きませんが、スタートアップに勤めて、同人誌書いたりしつつ、面白おかしく生きるのに問題無い金額は稼いでおります。 前提: 他の世代の人への補足アラフィフ4x歳だったら、経験も豊富で金も一杯もらってんだろ当然だろみたいに考える人もいるかもしれませんが、それは必ずしもそうとはいえません。 たとえ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/react" data-gtm-click-label="entry-search-result-item-tag">react</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/javascript" data-gtm-click-label="entry-search-result-item-tag">javascript</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E4%BB%95%E4%BA%8B" data-gtm-click-label="entry-search-result-item-tag">仕事</a></li> <li><a href="/q/note" data-gtm-click-label="entry-search-result-item-tag">note</a></li> <li><a href="/q/%E5%B0%B1%E8%81%B7" data-gtm-click-label="entry-search-result-item-tag">就職</a></li> <li><a href="/q/%E3%83%89%E3%83%AF%E3%83%B3%E3%82%B4" data-gtm-click-label="entry-search-result-item-tag">ドワンゴ</a></li> <li><a href="/q/%E5%8A%B4%E5%83%8D" data-gtm-click-label="entry-search-result-item-tag">労働</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://note.com/erukiti/n/n6eec3ad83ebb"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://note.com/erukiti/n/n6eec3ad83ebb" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/72c89d7c80331a74ad8637caa231101dd9aad4c1/height=288;version=1;width=512/https%3A%2F%2Fassets.st-note.com%2Fproduction%2Fuploads%2Fimages%2F38893911%2Frectangle_large_type_2_a438c6d2c6cdb1460101a5f9bcf6a363.jpg%3Ffit%3Dbounds%26quality%3D85%26width%3D1280" alt="10年引きこもりニートしてた就職氷河期直撃アラフィフでも社会復帰してReactで成り上がれるよ|erukiti" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://www.docswell.com/s/ockeghem/K2PPNK-phpconf2022"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://www.docswell.com/s/ockeghem/K2PPNK-phpconf2022" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.docswell.com%2Fs%2Fockeghem%2FK2PPNK-phpconf2022" alt="">SPAセキュリティ超入門 | ドクセル </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.docswell.com/s/ockeghem/K2PPNK-phpconf2022" class="js-keyboard-entry-page-openable" title="SPAセキュリティ超入門 | ドクセル (607 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 607 users </a> </span> </li> <li> <a href="/site/www.docswell.com/" title="『www.docswell.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> www.docswell.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/09/24</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">スライド概要 SPA(Single Page Application)の普及が一層進んでおり、従来型のMPAを知らないウェブ開発者も生まれつつあるようです。SPA対応のフレームワークでは基本的な脆弱性については対策機能が用意されていますが、それにも関わらず、脆弱性診断等で基本的な脆弱性が指摘されるケースはむしろ増えつつあります。 本セッションでは、LaravelとReactで開発したアプリケーションをモデルとして、SQLインジェクション、クロスサイトスクリプティング、認可制御不備等の脆弱性の実例を紹介しながら、現実的な対策について紹介します。LaravelやReact以外のフレームワーク利用者にも役立つ説明を心がけます。 PHPカンファレンス2022での講演資料です。 PHPカンファレンスでの動画URL https://www.youtube.com/watch?v=jZ6sWyGxcCs</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/SPA" data-gtm-click-label="entry-search-result-item-tag">SPA</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/react" data-gtm-click-label="entry-search-result-item-tag">react</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/XSS" data-gtm-click-label="entry-search-result-item-tag">XSS</a></li> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/SQL" data-gtm-click-label="entry-search-result-item-tag">SQL</a></li> <li><a href="/q/JavaScript" data-gtm-click-label="entry-search-result-item-tag">JavaScript</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://www.docswell.com/s/ockeghem/K2PPNK-phpconf2022"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://www.docswell.com/s/ockeghem/K2PPNK-phpconf2022" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5d229c211a751911552a15377515ee3185a4b091/height=288;version=1;width=512/https%3A%2F%2Fbcdn.docswell.com%2Fpage%2FDEYPZD19EM.jpg%3Fwidth%3D480" alt="SPAセキュリティ超入門 | ドクセル" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <div class="related-entry-wrapper"> <div class="entrysearch-related-entries" data-gtm-inview-label="entry-search-recommend-middle"> <h3 class="entrysearch-related-title">laravelの関連エントリー</h3> <ul class="entrysearch-related-list"> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://zenn.dev/ubie_dev/articles/f927aaff02d618" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/dd29b09d9ce603e77897214e177849c665e0f1dc/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--DBUQX0IA--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E7%2525A4%2525BE%2525E5%252586%252585%2525E3%252583%252587%2525E3%252582%2525B6%2525E3%252582%2525A4%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252582%2525B9%2525E3%252583%252586%2525E3%252583%2525A0%2525E3%252582%252592MCP%2525E3%252582%2525B5%2525E3%252583%2525BC%2525E3%252583%252590%2525E3%252583%2525BC%2525E5%25258C%252596%2525E3%252581%252597%2525E3%252581%25259F%2525E3%252582%252589UI%2525E5%2525AE%25259F%2525E8%2525A3%252585%2525E3%252581%25258C%2525E7%252588%252586%2525E9%252580%25259F%2525E3%252581%2525AB%2525E3%252581%2525AA%2525E3%252581%2525A3%2525E3%252581%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3A%2525E3%252581%252590%2525E3%252582%25258A%2525E3%252581%252593%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2VlOWMzMWRhODMuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3AUbie%252520%2525E3%252583%252586%2525E3%252583%252583%2525E3%252582%2525AF%2525E3%252583%252596%2525E3%252583%2525AD%2525E3%252582%2525B0%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzliOWQ4NDA0ZjYuanBlZw%3D%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="社内デザインシステムをMCPサーバー化したらUI実装が爆速になった"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://zenn.dev/ubie_dev/articles/f927aaff02d618" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 社内デザインシステムをMCPサーバー化したらUI実装が爆速になった </a> </h4> <a href="/entry/s/zenn.dev/ubie_dev/articles/f927aaff02d618" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 334 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://note.com/kokushing/n/n115ad60e0ead" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/a7bd42b0723c4553db7e0b9940bb054772f35f1a/height=288;version=1;width=512/https%3A%2F%2Fassets.st-note.com%2Fproduction%2Fuploads%2Fimages%2F182039783%2Frectangle_large_type_2_84e61721611e42dc983dd4a334ffd131.png%3Ffit%3Dbounds%26quality%3D85%26width%3D1280" alt="ローカルLLMは次世代エロゲの夢を見るか|黒神"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://note.com/kokushing/n/n115ad60e0ead" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> ローカルLLMは次世代エロゲの夢を見るか|黒神 </a> </h4> <a href="/entry/s/note.com/kokushing/n/n115ad60e0ead" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 368 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://jp.reuters.com/markets/japan/funds/YQMU562NKZKC7JWOYLXIKZPMKU-2025-04-05/" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/86404748443e7bbe8ecb95c9dbe7263d190148c1/height=288;version=1;width=512/https%3A%2F%2Fwww.reuters.com%2Fresizer%2Fv2%2FY4FWEFCHENKVBKE3NGIXTLAZUI.jpg%3Fauth%3Dfc3af98a27afe6888d54c6f323397604ef8d94234eae033e547592676e562f01%26height%3D1005%26width%3D1920%26quality%3D80%26smart%3Dtrue" alt="ベッセント氏「株価下落は中国AIに関連」、米政策が要因との見方否定"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://jp.reuters.com/markets/japan/funds/YQMU562NKZKC7JWOYLXIKZPMKU-2025-04-05/" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> ベッセント氏「株価下落は中国AIに関連」、米政策が要因との見方否定 </a> </h4> <a href="/entry/s/jp.reuters.com/markets/japan/funds/YQMU562NKZKC7JWOYLXIKZPMKU-2025-04-05/" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 80 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://smhn.info/202504-docomo-anshin-security" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/e2fa4a6c96b1b162cc6f05289b16d5739055c3cd/height=288;version=1;width=512/https%3A%2F%2Fsmhn.info%2Fwp-content%2Fuploads%2F2025%2F04%2Fshot_250404_214203.png" alt="ドコモが独占禁止法違反か。明らかに劣った自社アプリを強制、他社アプリ排除 - すまほん!!"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://smhn.info/202504-docomo-anshin-security" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> ドコモが独占禁止法違反か。明らかに劣った自社アプリを強制、他社アプリ排除 - すまほん!! </a> </h4> <a href="/entry/s/smhn.info/202504-docomo-anshin-security" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 66 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://gigazine.net/news/20250405-oracle-hack-data/" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/c54509bc535a4882f8d2eaa19dd2b3a91a70f5ae/height=288;version=1;width=512/https%3A%2F%2Fi.gzn.jp%2Fimg%2F2025%2F04%2F05%2Foracle-hack-data%2F00.jpg" alt="Oracleがログインデータが流出したセキュリティインシデントを公式に認める"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://gigazine.net/news/20250405-oracle-hack-data/" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> Oracleがログインデータが流出したセキュリティインシデントを公式に認める </a> </h4> <a href="/entry/s/gigazine.net/news/20250405-oracle-hack-data/" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 91 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://posfie.com/@blackstaragent/p/K1UEdth" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/07b73398aa7b7279cf6b6a52f56cacd5bbee954b/height=288;version=1;width=512/https%3A%2F%2Fs.tgstc.com%2Fogp3%2F037665277907d812da8ac78c80c27100-1200x630.jpeg" alt="AIのClineで3Dソフトの「Blender」を操って、3Dモデリングが可能に。特にGemini 2.5 Proが上手→「これはやばい」「AIで3Dモデルが作れるようになるなんて」"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://posfie.com/@blackstaragent/p/K1UEdth" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> AIのClineで3Dソフトの「Blender」を操って、3Dモデリングが可能に。特にGemini 2.5 Proが上手→「これはやばい」「AIで3Dモデルが作れるようになるなんて」 </a> </h4> <a href="/entry/s/posfie.com/@blackstaragent/p/K1UEdth" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 287 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://pc.watch.impress.co.jp/docs/column/ubuntu/2004458.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/353b3cac30c7dffd80cb80f95fc0a3a913cae45e/height=288;version=1;width=512/https%3A%2F%2Fpc.watch.impress.co.jp%2Fimg%2Fpcw%2Flist%2F2004%2F458%2F000.png" alt="【Ubuntu日和】 【第72回】Windows上でシームレスにLinuxを動かせる! WSLで改めてUbuntuに入門しよう"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://pc.watch.impress.co.jp/docs/column/ubuntu/2004458.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 【Ubuntu日和】 【第72回】Windows上でシームレスにLinuxを動かせる! WSLで改めてUbuntuに入門しよう </a> </h4> <a href="/entry/s/pc.watch.impress.co.jp/docs/column/ubuntu/2004458.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 100 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://anond.hatelabo.jp/20250405150848" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/b1638cdb5807a4788e4ba3c1109a984166e095fc/height=288;version=1;width=512/https%3A%2F%2Fanond.hatelabo.jp%2Fimages%2Fog-image-1500.gif" alt="テクウヨ(テック右翼)のアホ共が「AI以下の人文学者は不要!」とかほざいてるけど"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://anond.hatelabo.jp/20250405150848" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> テクウヨ(テック右翼)のアホ共が「AI以下の人文学者は不要!」とかほざいてるけど </a> </h4> <a href="/entry/s/anond.hatelabo.jp/20250405150848" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 41 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.itmedia.co.jp/news/articles/2504/05/news061.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f3150dde65b07c5faad631376b3833869afe794f/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fnews%2Farticles%2F2504%2F05%2Fcover_news061.png" alt="ダイソーから“ジェネリックAirタグ” Apple「探す」対応 1100円"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.itmedia.co.jp/news/articles/2504/05/news061.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> ダイソーから“ジェネリックAirタグ” Apple「探す」対応 1100円 </a> </h4> <a href="/entry/s/www.itmedia.co.jp/news/articles/2504/05/news061.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 39 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://note.com/google_gemini/n/n4e77355194db" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/0250eaece43318c84e8e585c1a361454fed4a6ae/height=288;version=1;width=512/https%3A%2F%2Fassets.st-note.com%2Fproduction%2Fuploads%2Fimages%2F182419773%2Frectangle_large_type_2_32a36b844cf7a17966e4b718ad2926fe.png%3Ffit%3Dbounds%26quality%3D85%26width%3D1280" alt="今日からできる!スプレッドシート × Gemini の連携術で、スマートなデータ活用|Gemini - Google の AI"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://note.com/google_gemini/n/n4e77355194db" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 今日からできる!スプレッドシート × Gemini の連携術で、スマートなデータ活用|Gemini - Google の AI </a> </h4> <a href="/entry/s/note.com/google_gemini/n/n4e77355194db" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 212 users </a> </div> </li> </ul> </div> </div> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/mpyw/articles/ce7d09eb6d8117"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/mpyw/articles/ce7d09eb6d8117" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fmpyw%2Farticles%2Fce7d09eb6d8117" alt="">5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/mpyw/articles/ce7d09eb6d8117" class="js-keyboard-entry-page-openable" title="5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ (539 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 539 users </a> </span> </li> <li> <a href="/site/zenn.dev/mpyw" title="『zenn.dev/mpyw』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/mpyw </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/12/24</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">この記事は Laravel Advent Calendar 2020 - Qiita 最終日の記事です。 TL;DR DDD や &quot;真の&quot; クリーンアーキテクチャは, Web 業界における大抵の現場ではオーバースペックだし,導入しても全員がついてこれるとは限らない app/UseCases ディレクトリだけ切って,ドメインごとに単一責務なクラスを置くと使いやすいよ ActiveRecord 指向のフレームワークで Repository パターンを無理に導入すると死ぬので, UseCase で Eloquent Model の機能を使うことを恐れるな はじめに Zenn では初投稿です。日本の Laravel コミュニティではもうお馴染みのようで実はあまり顔を出していない(?) @mpyw と申します。オンラインサロンの火付け役となった Synapse が最初の仕事でしたが,就職後すぐ会社が</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" data-gtm-click-label="entry-search-result-item-tag">アーキテクチャ</a></li> <li><a href="/q/DDD" data-gtm-click-label="entry-search-result-item-tag">DDD</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81" data-gtm-click-label="entry-search-result-item-tag">クリーンアーキテクチ</a></li> <li><a href="/q/CleanArchitecture" data-gtm-click-label="entry-search-result-item-tag">CleanArchitecture</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/mpyw/articles/ce7d09eb6d8117"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/mpyw/articles/ce7d09eb6d8117" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/834295b59d0179c35943fea21e0d3018904e82b3/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--Jmqf5W4B--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A5%2525E5%2525B9%2525B4%2525E9%252596%252593%252520Laravel%252520%2525E3%252582%252592%2525E4%2525BD%2525BF%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E8%2525BE%2525BF%2525E3%252582%25258A%2525E7%25259D%252580%2525E3%252581%252584%2525E3%252581%25259F%2525EF%2525BC%25258C%2525E5%252585%2525A8%2525E7%252584%2525B6%2525E9%2525A0%252591%2525E5%2525BC%2525B5%2525E3%252582%252589%2525E3%252581%2525AA%2525E3%252581%252584%2525E3%252580%25258C%2525E3%252581%2525AA%2525E3%252582%252593%2525E3%252581%2525A1%2525E3%252582%252583%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525A2%2525E3%252583%2525BC%2525E3%252582%2525AD%2525E3%252583%252586%2525E3%252582%2525AF%2525E3%252583%252581%2525E3%252583%2525A3%2525E3%252580%25258D%2525E3%252581%2525A8%2525E3%252581%252584%2525E3%252581%252586%2525E8%252590%2525BD%2525E3%252581%2525A8%2525E3%252581%252597%2525E3%252581%2525A9%2525E3%252581%252593%2525E3%252582%25258D%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Ampyw%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzk0ZWM3OGU4NDYuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/mpyw/articles/rdb-ids-and-timestamps-best-practices"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/mpyw/articles/rdb-ids-and-timestamps-best-practices" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fmpyw%2Farticles%2Frdb-ids-and-timestamps-best-practices" alt="">Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/mpyw/articles/rdb-ids-and-timestamps-best-practices" class="js-keyboard-entry-page-openable" title="Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス (499 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 499 users </a> </span> </li> <li> <a href="/site/zenn.dev/mpyw" title="『zenn.dev/mpyw』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/mpyw </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">読者対象 ある程度データベースに関する知識を持っている,経験年数 1 年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降 id (データ型と INSERT 時のデフォルト埋め) 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7(ドラフト): 単調増加であるタイムスタンプとラ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/postgresql" data-gtm-click-label="entry-search-result-item-tag">postgresql</a></li> <li><a href="/q/mysql" data-gtm-click-label="entry-search-result-item-tag">mysql</a></li> <li><a href="/q/db" data-gtm-click-label="entry-search-result-item-tag">db</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/SQL" data-gtm-click-label="entry-search-result-item-tag">SQL</a></li> <li><a href="/q/database" data-gtm-click-label="entry-search-result-item-tag">database</a></li> <li><a href="/q/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">データベース</a></li> <li><a href="/q/UUID" data-gtm-click-label="entry-search-result-item-tag">UUID</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/id" data-gtm-click-label="entry-search-result-item-tag">id</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/mpyw/articles/rdb-ids-and-timestamps-best-practices"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/mpyw/articles/rdb-ids-and-timestamps-best-practices" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/4a8a21d7c70672f98ac4d8e29aa8de1c7c74119d/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--0IUWsA3C--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3APostgres%252520%2525E3%252581%2525A8%252520MySQL%252520%2525E3%252581%2525AB%2525E3%252581%25258A%2525E3%252581%252591%2525E3%252582%25258B%252520id%25252C%252520created_at%25252C%252520updated_at%252520%2525E3%252581%2525AB%2525E9%252596%2525A2%2525E3%252581%252599%2525E3%252582%25258B%2525E3%252583%252599%2525E3%252582%2525B9%2525E3%252583%252588%2525E3%252583%252597...%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Ampyw%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzk0ZWM3OGU4NDYuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://github.com/Katsukiniwa/awesome-software-design-ja"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/Katsukiniwa/awesome-software-design-ja" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgithub.com%2FKatsukiniwa%2Fawesome-software-design-ja" alt="">GitHub - Katsukiniwa/awesome-software-design-ja: 日本語でのソフトウェア開発・設計に関する記事や書籍をまとめたリポジトリです </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/Katsukiniwa/awesome-software-design-ja" class="js-keyboard-entry-page-openable" title="GitHub - Katsukiniwa/awesome-software-design-ja: 日本語でのソフトウェア開発・設計に関する記事や書籍をまとめたリポジトリです (422 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 422 users </a> </span> </li> <li> <a href="/site/github.com/Katsukiniwa" title="『github.com/Katsukiniwa』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> github.com/Katsukiniwa </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/11/13</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/DDD" data-gtm-click-label="entry-search-result-item-tag">DDD</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">ソフトウェア</a></li> <li><a href="/q/software" data-gtm-click-label="entry-search-result-item-tag">software</a></li> <li><a href="/q/design" data-gtm-click-label="entry-search-result-item-tag">design</a></li> <li><a href="/q/github" data-gtm-click-label="entry-search-result-item-tag">github</a></li> <li><a href="/q/architecture" data-gtm-click-label="entry-search-result-item-tag">architecture</a></li> <li><a href="/q/development" data-gtm-click-label="entry-search-result-item-tag">development</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://github.com/Katsukiniwa/awesome-software-design-ja"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://github.com/Katsukiniwa/awesome-software-design-ja" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/be874de02787c9a5071440032d9a799b094bcb5e/height=288;version=1;width=512/https%3A%2F%2Fopengraph.githubassets.com%2F59a90bd02ce692e2029a5002e2c22c61d1c2537b7786116d922d0965d4effe53%2FKatsukiniwa%2Fawesome-software-design-ja" alt="GitHub - Katsukiniwa/awesome-software-design-ja: 日本語でのソフトウェア開発・設計に関する記事や書籍をまとめたリポジトリです" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/imah/articles/3c587fb6d29eb7"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/imah/articles/3c587fb6d29eb7" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fimah%2Farticles%2F3c587fb6d29eb7" alt="">ランニングコストほぼゼロから始めるスケーラブルな本番環境 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/imah/articles/3c587fb6d29eb7" class="js-keyboard-entry-page-openable" title="ランニングコストほぼゼロから始めるスケーラブルな本番環境 (400 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 400 users </a> </span> </li> <li> <a href="/site/zenn.dev/imah" title="『zenn.dev/imah』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/imah </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/03/27</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに 私は個人開発で一山当てたいと常々思っていて、そのためにいくつかヒットしそうなサービスのアイデアがあります。エンジニアであればアイデアを具現化することに躊躇してはいけないと思うわけですが、一度リリースしてしまうとランニングコストが発生するわけで、仮に全く人気がでなかったとしたらランニングコスト分の赤字を垂れ流すことになります。 一方、個人開発者というのはおそらく誰しも夢見がちなので、リリース後バズったりしてユーザーが大量に押し寄せてきてしまってサーバーダウンする可能性も考えてしまいます。 その結果、「全く誰も来なくてランニングコストが赤字になったらどうしよう」という不安と「めちゃくちゃバズってしまってサーバーダウンしてチャンスを逃したらどうしよう」という不安が、心の中でせめぎ合うことになります。 そこで、今回はその2つの不安を一気に解消する「使われなければランニングコストが限りなく</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%90" data-gtm-click-label="entry-search-result-item-tag">サーバ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/serverless" data-gtm-click-label="entry-search-result-item-tag">serverless</a></li> <li><a href="/q/%E7%92%B0%E5%A2%83" data-gtm-click-label="entry-search-result-item-tag">環境</a></li> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4" data-gtm-click-label="entry-search-result-item-tag">デプロイ</a></li> <li><a href="/q/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9" data-gtm-click-label="entry-search-result-item-tag">インフラ</a></li> <li><a href="/q/lambda" data-gtm-click-label="entry-search-result-item-tag">lambda</a></li> <li><a href="/q/%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">個人開発</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/imah/articles/3c587fb6d29eb7"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/imah/articles/3c587fb6d29eb7" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bad6a15d62342365c1f0c02402bb34c8fd5f63ce/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--5tK5mZMw--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252583%2525A9%2525E3%252583%2525B3%2525E3%252583%25258B%2525E3%252583%2525B3%2525E3%252582%2525B0%2525E3%252582%2525B3%2525E3%252582%2525B9%2525E3%252583%252588%2525E3%252581%2525BB%2525E3%252581%2525BC%2525E3%252582%2525BC%2525E3%252583%2525AD%2525E3%252581%25258B%2525E3%252582%252589%2525E5%2525A7%25258B%2525E3%252582%252581%2525E3%252582%25258B%2525E3%252582%2525B9%2525E3%252582%2525B1%2525E3%252583%2525BC%2525E3%252583%2525A9%2525E3%252583%252596%2525E3%252583%2525AB%2525E3%252581%2525AA%2525E6%25259C%2525AC%2525E7%252595%2525AA%2525E7%252592%2525B0%2525E5%2525A2%252583%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aimah%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2FkMzg4N2VjZDIuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="ランニングコストほぼゼロから始めるスケーラブルな本番環境" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/ad5/articles/5e4e67c9663e4e0d0cb0"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ad5/articles/5e4e67c9663e4e0d0cb0" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fad5%2Farticles%2F5e4e67c9663e4e0d0cb0" alt="">駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ad5/articles/5e4e67c9663e4e0d0cb0" class="js-keyboard-entry-page-openable" title="駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。 (378 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 378 users </a> </span> </li> <li> <a href="/site/zenn.dev/ad5" title="『zenn.dev/ad5』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/ad5 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/09/26</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">セキュリティは難しいです。 ですが、プログラミング初学者の皆さんは必要以上に萎縮せず、どんどんアプリケーションを作り、公開することにチャレンジして欲しいと私は思っています。 一方、事実として、脆弱なアプリケーションが公開されている(サーバ上でアクセス可能な状態になっている)だけで、全く無関係な第三者が被害を被る可能性があることは知っておく必要があります。 それはWordPressを使った単なるWebサイトであったとしても同じです。 また、あなたのアプリケーションが破壊されて困らないものであったり、 個人情報を保持していないものであったとしても、です。 だから、知らなかった、では済まされないこともあります。 この記事では、PHPのソースを例に、 特にプログラミング初学者が生み出しやすいアプリケーションの脆弱性について、 具体的なコードを挙げながら解説します。 なお、本記事のサンプルコードはも</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> <li><a href="/q/web%E5%88%B6%E4%BD%9C" data-gtm-click-label="entry-search-result-item-tag">web制作</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/XSS" data-gtm-click-label="entry-search-result-item-tag">XSS</a></li> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/ad5/articles/5e4e67c9663e4e0d0cb0"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/ad5/articles/5e4e67c9663e4e0d0cb0" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/707e0f811d3f01f4928815059d32b9153f1674c3/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--6AspJQ5k--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E9%2525A7%252586%2525E3%252581%252591%2525E5%252587%2525BA%2525E3%252581%252597%2525E3%252582%2525A8%2525E3%252583%2525B3%2525E3%252582%2525B8%2525E3%252583%25258B%2525E3%252582%2525A2%2525E3%252581%2525AE%2525E7%25259A%252586%2525E3%252581%252595%2525E3%252582%252593%2525E3%252581%2525AB%2525E7%25259F%2525A5%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252581%2525BB%2525E3%252581%252597%2525E3%252581%252584%2525E8%252584%252586%2525E5%2525BC%2525B1%2525E6%252580%2525A7%2525E3%252581%2525AE%2525E3%252581%252593%2525E3%252581%2525A8%2525E3%252580%252582%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3ARoku%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzAzMmUzNjRjMTUuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/3y9Mz/items/a6cfb2fba87058f02b83"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/3y9Mz/items/a6cfb2fba87058f02b83" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2F3y9Mz%2Fitems%2Fa6cfb2fba87058f02b83" alt="">完全未経験が半年で個人サービスをリリースした話 - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/3y9Mz/items/a6cfb2fba87058f02b83" class="js-keyboard-entry-page-openable" title="完全未経験が半年で個人サービスをリリースした話 - Qiita (353 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 353 users </a> </span> </li> <li> <a href="/site/qiita.com/3y9Mz" title="『qiita.com/3y9Mz』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/3y9Mz </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/01/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに この度、転職とスキル向上を目的に個人サービス(Football League)をリリースしました。 ITに関する学習は約1年ほど、その内の半年でサービスの開発をしました! まだまだ修正箇所はあるものの、ひとまず形にはなったのでサービスの使用技術や開発過程を共有したいと思います。 私自身、独学で学習してきたのでそういった方々にとって少しでも参考になれば幸いです。 自己紹介 商業高校卒(サッカー部⚽️) 25歳 青森住み🍏 職業はトマト農家です🍅 どのようなサービスか 本サービスは、欧州5大リーグのサッカーの試合結果やチーム情</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">個人開発</a></li> <li><a href="/q/AWS" data-gtm-click-label="entry-search-result-item-tag">AWS</a></li> <li><a href="/q/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">webサービス</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">サービス</a></li> <li><a href="/q/Qiita" data-gtm-click-label="entry-search-result-item-tag">Qiita</a></li> <li><a href="/q/%E5%AD%A6%E7%BF%92" data-gtm-click-label="entry-search-result-item-tag">学習</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/3y9Mz/items/a6cfb2fba87058f02b83"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/3y9Mz/items/a6cfb2fba87058f02b83" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/ad701d4f48069c339afb12ef6ab9bb77e4c9a1cf/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnBicy50d2ltZy5jb20lMkZwcm9maWxlX2ltYWdlcyUyRjE1NzE4MTQ2MTMxNjMwNjEyNTAlMkZ6VFJNQUNtRF9iaWdnZXIuanBnP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTljMWM2YWQ4NmU2NTk0MjFiYmIzMzc3M2I0Mzg0NDhm%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D0194c5ede51bc80ba33704a8390b21b0%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUU1JUFFJThDJUU1JTg1JUE4JUU2JTlDJUFBJUU3JUI1JThDJUU5JUE4JTkzJUUzJTgxJThDJUU1JThEJThBJUU1JUI5JUI0JUUzJTgxJUE3JUU1JTgwJThCJUU0JUJBJUJBJUUzJTgyJUI1JUUzJTgzJUJDJUUzJTgzJTkzJUUzJTgyJUI5JUUzJTgyJTkyJUUzJTgzJUFBJUUzJTgzJUFBJUUzJTgzJUJDJUUzJTgyJUI5JUUzJTgxJTk3JUUzJTgxJTlGJUU4JUE5JUIxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9YTE0ODgwZDkzYjlmYTU3NDc5OGU1YjVmMTkxMzU1MmI%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDAzeTlNeiZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTYyNzkzYjNhYTg3YTI3MmEzZTMyZGE4ZDYwY2Y5ZTBk%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D9b25d5edef6cb34818dcbd8b5a1ab906" alt="完全未経験が半年で個人サービスをリリースした話 - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://biz-journal.jp/company/post_383968.html"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://biz-journal.jp/company/post_383968.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fbiz-journal.jp%2Fcompany%2Fpost_383968.html" alt="">「2038年問題」が2000年問題と比べ桁違いにヤバい…社会インフラで障害も </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/biz-journal.jp/company/post_383968.html" class="js-keyboard-entry-page-openable" title="「2038年問題」が2000年問題と比べ桁違いにヤバい…社会インフラで障害も (300 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 300 users </a> </span> </li> <li> <a href="/site/biz-journal.jp/" title="『biz-journal.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> biz-journal.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/10/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">「gettyimages」より 一部システムが2038年1月19日3時14分8秒以降の時刻になると誤作動を起こす可能性があるとされる「西暦2038年問題」。新たな論文が発表され、一般的に想定されているより広い範囲で大きな影響が出るのではないかという声が広まっている。どのような規模の影響の発生が想定されるのか。また、システム運用者はどのような対策をすべきなのか。9月に論文「32bitを超えるtime_t型を持つ環境における2038年問題とその検出」を発表した立命館情報理工学部教授の上原哲太郎氏に聞いた。 2038年問題とは、LinuxなどのUNIX環境、C言語プログラムのUNIX timeで表現されたタイムスタンプ値が32bit符号付き整数型で定義されている場合、2038年1月19日3時14分8秒以降の時刻で整数オーバーフローが生じ、それを参照したシステムが不具合・障害を起こすというもの。対</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/IT" data-gtm-click-label="entry-search-result-item-tag">IT</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB" data-gtm-click-label="entry-search-result-item-tag">トラブル</a></li> <li><a href="/q/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" data-gtm-click-label="entry-search-result-item-tag">システム</a></li> <li><a href="/q/%E9%9A%9C%E5%AE%B3" data-gtm-click-label="entry-search-result-item-tag">障害</a></li> <li><a href="/q/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9" data-gtm-click-label="entry-search-result-item-tag">インフラ</a></li> <li><a href="/q/%E7%A4%BE%E4%BC%9A" data-gtm-click-label="entry-search-result-item-tag">社会</a></li> <li><a href="/q/2038%E5%B9%B4%E5%95%8F%E9%A1%8C" data-gtm-click-label="entry-search-result-item-tag">2038年問題</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://biz-journal.jp/company/post_383968.html"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://biz-journal.jp/company/post_383968.html" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/c60ca6e7ad65e6d9faf9c4af603cdc6ec348b9ee/height=288;version=1;width=512/https%3A%2F%2Fbiz-journal.jp%2Fwp-content%2Fuploads%2F2024%2F10%2Fpost_383968_2038.jpg" alt="「2038年問題」が2000年問題と比べ桁違いにヤバい…社会インフラで障害も" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/mpyw/items/c944d4fcbb45c1a3924c"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/mpyw/items/c944d4fcbb45c1a3924c" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Fmpyw%2Fitems%2Fc944d4fcbb45c1a3924c" alt="">Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/mpyw/items/c944d4fcbb45c1a3924c" class="js-keyboard-entry-page-openable" title="Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた - Qiita (279 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 279 users </a> </span> </li> <li> <a href="/site/qiita.com/mpyw" title="『qiita.com/mpyw』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/mpyw </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/26</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">元ネタ @localdisk さんの記事です。 こちらで概ね適切に説明されているものの,文章のみで図が無くて直感的に把握しづらいので,初心者にもすぐ飲み込ませられるように図に描き起こしてみました。 図 解説 illuminate/auth: 最小限の認証認可コアロジック コアコンポーネント群の laravel/framework に含まれているものです。 Socialite 以外のすべてのパッケージが,実質このコアに依存していることになります。 以下の記事でこのパッケージの詳細について説明しているので,ここでは端折って説明します。 伝統的 Cookie ベースのセッション認証 こちらでも解説している, 「Cookie に識別子を載せ,それに対応する情報はサーバ側のファイルに記録する」 という手法に近いものです。 実装は illuminate/session にあり, PHP ネイティブのセ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/qiita" data-gtm-click-label="entry-search-result-item-tag">qiita</a></li> <li><a href="/q/%E8%AA%8D%E5%8F%AF" data-gtm-click-label="entry-search-result-item-tag">認可</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/auth" data-gtm-click-label="entry-search-result-item-tag">auth</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/mpyw/items/c944d4fcbb45c1a3924c"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/mpyw/items/c944d4fcbb45c1a3924c" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/66258f7b9075929c240e8f89f261e2d3246449be/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TGFyYXZlbCUyMCVFMyU4MSVBRSVFOCVBQSU4RCVFOCVBOCVCQyVFMyU4MyVCQiVFOCVBQSU4RCVFNSU4RiVBRiVFMyU4MyU5MSVFMyU4MyU4MyVFMyU4MiVCMSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSU4QyVFNSVBNCU5QSVFMyU4MSU5OSVFMyU4MSU4RSVFMyU4MSVBNiVFMyU4MiU4RiVFMyU4MSU5MSVFMyU4MiU4RiVFMyU4MSU4QiVFMyU4MiU4OSVFMyU4MiU5MyVFMyU4MSVBRSVFMyU4MSVBNyVFNSU5QiVCMyVFMyU4MSVBQiVFMyU4MSVCRSVFMyU4MSVBOCVFMyU4MiU4MSVFMyU4MSU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZjVjMWMwODg3MzMzNDFkOGY0NWZhZjkxYTAxYmU2MjY%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtcHl3JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05YWI3NzllNDFiNDU0ODg3NzdmYTFhYmQ2ZDA3MzIzYQ%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4g5qCq5byP5Lya56S-44KG44KB44G_%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D0c2b49d8c75ca121d13f0a707576c4df" alt="Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/ad5/articles/fae2e929fca79e"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ad5/articles/fae2e929fca79e" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fad5%2Farticles%2Ffae2e929fca79e" alt="">APIトークン認証の論理設計 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ad5/articles/fae2e929fca79e" class="js-keyboard-entry-page-openable" title="APIトークン認証の論理設計 (271 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 271 users </a> </span> </li> <li> <a href="/site/zenn.dev/ad5" title="『zenn.dev/ad5』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/ad5 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/09/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">SPAやモバイルアプリから利用するAPIを開発する際の、トークン認証のお話です。 どの認証ライブラリを使うべきという話ではなく、トークン認証の論理的な設計について考察します。 私自身も結論が出ていないので、色んな意見が聞けると嬉しいです。 出発点 ユーザテーブルにアクセストークンを持つのが最も安直な発想だと思います。 ログイン成功時にアクセストークンを発行し、該当ユーザレコードにセット。 同時に有効期限もセットします。 認証時には、アクセストークンが存在し有効期限内であれば、認証を通過させ、 そうでなければ認証失敗とします。 ログアウト時には、該当ユーザレコードのアクセストークンを空にします。 発行日時を持ち、システム内に定義された有効期間をもとに、認証時に計算する方法もあると思います。 Laravel Sanctum 等はそういう実装です(しかもデフォルトでは有効期限なし)。 有効かどう</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/API" data-gtm-click-label="entry-search-result-item-tag">API</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/WebAPI" data-gtm-click-label="entry-search-result-item-tag">WebAPI</a></li> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/OAuth" data-gtm-click-label="entry-search-result-item-tag">OAuth</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/ad5/articles/fae2e929fca79e"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/ad5/articles/fae2e929fca79e" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3b1381d725aa5cc03f349e729e747ad6c424a4e9/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--ssix_YIO--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AAPI%2525E3%252583%252588%2525E3%252583%2525BC%2525E3%252582%2525AF%2525E3%252583%2525B3%2525E8%2525AA%25258D%2525E8%2525A8%2525BC%2525E3%252581%2525AE%2525E8%2525AB%252596%2525E7%252590%252586%2525E8%2525A8%2525AD%2525E8%2525A8%252588%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3ARoku%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzAzMmUzNjRjMTUuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="APIトークン認証の論理設計" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/manalink_dev/articles/not-perfectionist-architecture"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/manalink_dev/articles/not-perfectionist-architecture" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fmanalink_dev%2Farticles%2Fnot-perfectionist-architecture" alt="">弊社の「意識チョット低いアーキテクチャ」10選 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/manalink_dev/articles/not-perfectionist-architecture" class="js-keyboard-entry-page-openable" title="弊社の「意識チョット低いアーキテクチャ」10選 (268 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 268 users </a> </span> </li> <li> <a href="/site/zenn.dev/manalink_dev" title="『zenn.dev/manalink_dev』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/manalink_dev </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/10/30</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">「CTOの視点で選ぶ「最適な」アーキテクチャとは?」というイベントで登壇しました。 本記事は登壇資料をMarkdownとしてそのまま記事化したものです。スライドのほうが読みやすい方は、Speaker Deckで御覧ください! 自己紹介1|職歴、趣味など 職種・SNS 株式会社NoSchool CTO 2016年〜Webエンジニア。2019年〜現職 Twitter(X): 名人|マナリンクCTO Zenn: https://zenn.dev/meijin 好きなHTTPヘッダーはCache-Control 趣味 将棋☗、カメラ📸、ラム酒🥃、個人開発💻、筋トレ💪、高校野球観戦⚾ 自己紹介2|外部発信・諸活動 ZennでReact記事が人気 歴代記事でLike数1位(登壇時点) 個人開発 テストメーカー(ユーザー20,000人以上) エンジニア向け教材執筆 「LaravelでFat Co</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" data-gtm-click-label="entry-search-result-item-tag">アーキテクチャ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/architecture" data-gtm-click-label="entry-search-result-item-tag">architecture</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/manalink_dev/articles/not-perfectionist-architecture"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/manalink_dev/articles/not-perfectionist-architecture" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/2f48d7733c86d2f67e34010199157dadb095f0ed/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--bfryVtPb--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E5%2525BC%25258A%2525E7%2525A4%2525BE%2525E3%252581%2525AE%2525E3%252580%25258C%2525E6%252584%25258F%2525E8%2525AD%252598%2525EF%2525BE%252581%2525EF%2525BD%2525AE%2525EF%2525BD%2525AF%2525EF%2525BE%252584%2525E4%2525BD%25258E%2525E3%252581%252584%2525E3%252582%2525A2%2525E3%252583%2525BC%2525E3%252582%2525AD%2525E3%252583%252586%2525E3%252582%2525AF%2525E3%252583%252581%2525E3%252583%2525A3%2525E3%252580%25258D10%2525E9%252581%2525B8%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3Ameijin%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2FmZjliMGZlZjIuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3A%2525E3%252583%25259E%2525E3%252583%25258A%2525E3%252583%2525AA%2525E3%252583%2525B3%2525E3%252582%2525AF%252520Tech%252520Blog%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2pPWmtyWk1nS3djRXl5a2w1X2lVTFZFVmtVVUpkNzkzcjlfejhERjRzPXMyNTAtYw%3D%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="弊社の「意識チョット低いアーキテクチャ」10選" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/myamagishi/miao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/myamagishi/miao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fmyamagishi%2Fmiao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji" alt="">秒間 10,000 リクエストを &quot;簡単に&quot;いなすゲームサーバーを Laravel で作る設計 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/myamagishi/miao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji" class="js-keyboard-entry-page-openable" title="秒間 10,000 リクエストを &quot;簡単に&quot;いなすゲームサーバーを Laravel で作る設計 (262 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 262 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/myamagishi" title="『speakerdeck.com/myamagishi』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/myamagishi </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/07/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">1秒間に PHP が受信する HTTP リクエストが最大 10,000 回以上——— そんな世界が存在します。その一つが 「ソーシャルゲーム」 です。メンテナンスが明けた瞬間、イベントが始まった・終わる瞬間、様々なタイミングでゲームサーバーは瞬間的に高負荷になります。もちろん、サービスをリリースし P…</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%90" data-gtm-click-label="entry-search-result-item-tag">サーバ</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%82%B2%E3%83%BC%E3%83%A0" data-gtm-click-label="entry-search-result-item-tag">ゲーム</a></li> <li><a href="/q/DDD" data-gtm-click-label="entry-search-result-item-tag">DDD</a></li> <li><a href="/q/DB" data-gtm-click-label="entry-search-result-item-tag">DB</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/myamagishi/miao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/myamagishi/miao-jian-10000-rikuesutowo-jian-dan-ni-inasugemusabawo-laravel-dezuo-rushe-ji" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/e76f4714ffb2a036e765cf8b2feec9cb8a4ad94a/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F8efed2188f8c4cb59fbb385ab0addf7e%2Fslide_0.jpg%3F26133772" alt="秒間 10,000 リクエストを &quot;簡単に&quot;いなすゲームサーバーを Laravel で作る設計" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://www.yuu-progra.com/2021/09/12/laravel-vue-cal/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://www.yuu-progra.com/2021/09/12/laravel-vue-cal/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.yuu-progra.com%2F2021%2F09%2F12%2Flaravel-vue-cal%2F" alt="">Laravel + Vue.jsでGoogleカレンダーのクローンを作ろう!!【Laravel8対応】準備編|Yuu&#39;s Memo </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.yuu-progra.com/2021/09/12/laravel-vue-cal/" class="js-keyboard-entry-page-openable" title="Laravel + Vue.jsでGoogleカレンダーのクローンを作ろう!!【Laravel8対応】準備編|Yuu&#39;s Memo (260 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 260 users </a> </span> </li> <li> <a href="/site/www.yuu-progra.com/" title="『www.yuu-progra.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> www.yuu-progra.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/09/12</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">皆さんこんにちは!! 今日から何回かに分けて、Laravel8とVue.jsを使用して「スケジュール管理アプリ」を作成したいと思います。 簡単に言えば、「Googleカレンダーのクローン」を作成していくチュートリアルです。 WEBアプリケーションにスケジュール管理機能を組み込む場合、「FullCalendar」を利用することが多いと思いますが、今回はFullCalendarなどは使用しません。 LaravelとVue.jsは非常に人気が高いので、多くの解説記事やチュートリアルが出ています。 ただ、どれも小さなサンプルを作ったり、解説が断片的で、実際の開発に活かせないものが多いです。 今回から皆さんと作る「Google Calendar Clone」は、LaravelやVueを触ったことがない方には少し難しいかも知れませんが、中規模のアプリケーションを開発することで、LaravelやVue.</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/Vue" data-gtm-click-label="entry-search-result-item-tag">Vue</a></li> <li><a href="/q/vue.js" data-gtm-click-label="entry-search-result-item-tag">vue.js</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/PHP" data-gtm-click-label="entry-search-result-item-tag">PHP</a></li> <li><a href="/q/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB" data-gtm-click-label="entry-search-result-item-tag">チュートリアル</a></li> <li><a href="/q/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">データベース</a></li> <li><a href="/q/db" data-gtm-click-label="entry-search-result-item-tag">db</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://www.yuu-progra.com/2021/09/12/laravel-vue-cal/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://www.yuu-progra.com/2021/09/12/laravel-vue-cal/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/e7464e5c174cb740620cba406eedc28c2100a27b/height=288;version=1;width=512/https%3A%2F%2Fi0.wp.com%2Fwww.yuu-progra.com%2Fstorage%2F2021%2F09%2Fgoogle-calendar-clone.png%3Ffit%3D599%252C400%26ssl%3D1" alt="Laravel + Vue.jsでGoogleカレンダーのクローンを作ろう!!【Laravel8対応】準備編|Yuu&#39;s Memo" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/mejileben/items/48473a572ec07cbaf65f"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/mejileben/items/48473a572ec07cbaf65f" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Fmejileben%2Fitems%2F48473a572ec07cbaf65f" alt="">ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが? - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/mejileben/items/48473a572ec07cbaf65f" class="js-keyboard-entry-page-openable" title="ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが? - Qiita (258 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 258 users </a> </span> </li> <li> <a href="/site/qiita.com/mejileben" title="『qiita.com/mejileben』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/mejileben </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/07/15</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが?LaravelDDD設計アーキテクチャCleanArchitecture ある日夢の中で設計に詳しい悪役令嬢が現れてこんなことを言い放ったので、考察してみましたという設定のポエムです。 問題提起 ドメイン駆動設計、オニオンアーキテクチャ、クリーンアーキテクチャといった考え方はもちろん重要なものの、僕は難しく考えずに「削除しやすいように機能を作る」のが第一歩として重要ではないかと考えています。 本記事では「削除しやすい設計」について持論を展開してみます。 ※議論のスコープはWebサービスに限定し、例示としてPHPのフレームワークであるLaravelを用います 削除しやすいことがなぜ重要か 一度開発した機能は、それで終わりではなく、改修、改善を繰り返し、そして場合によっては仕様が廃止さ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/DDD" data-gtm-click-label="entry-search-result-item-tag">DDD</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" data-gtm-click-label="entry-search-result-item-tag">アーキテクチャ</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/architecture" data-gtm-click-label="entry-search-result-item-tag">architecture</a></li> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/qiita" data-gtm-click-label="entry-search-result-item-tag">qiita</a></li> <li><a href="/q/%E3%82%B3%E3%83%BC%E3%83%89" data-gtm-click-label="entry-search-result-item-tag">コード</a></li> <li><a href="/q/development" data-gtm-click-label="entry-search-result-item-tag">development</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/mejileben/items/48473a572ec07cbaf65f"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/mejileben/items/48473a572ec07cbaf65f" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/e83893874990679fd1a1baa38c890fa3ae65f531/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgxJTk0JUU0JUI4JUJCJUU0JUJBJUJBJUU2JUE3JTk4JUUzJTgwJTgxJUU1JUIwJThGJUU5JTlCJUEzJUUzJTgxJTk3JUUzJTgxJTg0REREJUUzJTgyJTg0JUUzJTgyJUFGJUUzJTgzJUFBJUUzJTgzJUJDJUUzJTgzJUIzJUUzJTgyJUEyJUUzJTgzJUJDJUUzJTgyJUFEJUUzJTgzJTg2JUUzJTgyJUFGJUUzJTgzJTgxJUUzJTgzJUEzJUUzJTgxJUFGJUUzJTgxJThBJUU1JUJGJTk4JUUzJTgyJThDJUUzJTgxJUFCJUUzJTgxJUFBJUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgwJTgxJUUyJTgwJTlEJUU1JTg5JThBJUU5JTk5JUE0JUUzJTgxJTk3JUUzJTgyJTg0JUUzJTgxJTk5JUUzJTgxJTg0JUU4JUE4JUFEJUU4JUE4JTg4JUUyJTgwJTlEJUUzJTgxJThCJUUzJTgyJTg5JUU1JUE3JThCJUUzJTgyJTgxJUUzJTgyJTg5JUUzJTgyJThDJUUzJTgxJUE2JUUzJTgxJUFGJUUyJTgwJUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz00Yzg3MGU4YTZjNWU3ZTY2YjU4ZTE0ZDU3MmU4MzFiYg%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtZWppbGViZW4mdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTE4ZTM5M2Q2ZDQwNzI2NjMwMjM0YjQ0YTU5YzRlNGNj%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D7727d7cb1e6dc15a8ca3b4f40b9ea80b" alt="ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが? - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/SFITB/items/27cb917945fa9e721f34"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/SFITB/items/27cb917945fa9e721f34" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2FSFITB%2Fitems%2F27cb917945fa9e721f34" alt="">WebのフロントエンドでもDockerで開発環境を構築する理由。(余談としての脱node依存開発) - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/SFITB/items/27cb917945fa9e721f34" class="js-keyboard-entry-page-openable" title="WebのフロントエンドでもDockerで開発環境を構築する理由。(余談としての脱node依存開発) - Qiita (251 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 251 users </a> </span> </li> <li> <a href="/site/qiita.com/SFITB" title="『qiita.com/SFITB』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/SFITB </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/09/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">要は、手元のMacやWindows、Ubuntuなど開発端末上に直接、複数のプロジェクトを配置して開発しつつ、nodeを共有したり、安易にバージョンアップとかしているとビルドができないなどのエラーが発生したりします。 2.nodeをつかったフロントエンドのビルドの脆さ (1)特定の団体がビルドツールをメンテしてくれる言語 ビルドというのは、Java、Go、Rustなど型付きの言語ではよくしますが、ビルドツール自体が単一のもので特定の開発団体がそれら全体をメンテしてくれています。 もちろん、これらのツールであっても、バージョンが違えばビルドは通らなくなることがあります。ただ、後方互換があって、多少バージョンがあがっても動くこともままあります。 (2)ビルドという行為が不要な言語 PHPやRubyのようなスクリプト言語の場合、ビルドという行為がそもそもありません。ただ、ランタイムのバージョン違</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/docker" data-gtm-click-label="entry-search-result-item-tag">docker</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89" data-gtm-click-label="entry-search-result-item-tag">フロントエンド</a></li> <li><a href="/q/%E7%92%B0%E5%A2%83" data-gtm-click-label="entry-search-result-item-tag">環境</a></li> <li><a href="/q/node" data-gtm-click-label="entry-search-result-item-tag">node</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/frontend" data-gtm-click-label="entry-search-result-item-tag">frontend</a></li> <li><a href="/q/development" data-gtm-click-label="entry-search-result-item-tag">development</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/SFITB/items/27cb917945fa9e721f34"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/SFITB/items/27cb917945fa9e721f34" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/44377298e4c639334997c4bf5eda54af20ae79ec/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTU5NzIlMkZwcm9maWxlLWltYWdlcyUyRjE2NDIzMjAwNTM_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmZtPXBuZzMyJnM9ZGM2ODBjNTBlYTdlY2UzMTllZjFjZjRmZDdlOGZjMjg%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253Df3c68a84b090a81dcdf744fa68cf0574%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9V2ViJUUzJTgxJUFFJUUzJTgzJTk1JUUzJTgzJUFEJUUzJTgzJUIzJUUzJTgzJTg4JUUzJTgyJUE4JUUzJTgzJUIzJUUzJTgzJTg5JUUzJTgxJUE3JUUzJTgyJTgyRG9ja2VyJUUzJTgxJUE3JUU5JTk2JThCJUU3JTk5JUJBJUU3JTkyJUIwJUU1JUEyJTgzJUUzJTgyJTkyJUU2JUE3JThCJUU3JUFGJTg5JUUzJTgxJTk5JUUzJTgyJThCJUU3JTkwJTg2JUU3JTk0JUIxJUUzJTgwJTgyJUVGJUJDJTg4JUU0JUJEJTk5JUU4JUFCJTg3JUUzJTgxJUE4JUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgxJUFFJUU4JTg0JUIxbm9kZSVFNCVCRSU5RCVFNSVBRCU5OCVFOSU5NiU4QiVFNyU5OSVCQSVFRiVCQyU4OSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPWM4M2NlZjQxYzkyNDAzMmJiODUwYzRhZmM5Njc2ZDNl%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBTRklUQiZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPWMyZWZjMDVjMjQ1N2YxZTg2ZGRlMWYxN2M5ZWMxNTcw%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D02ca5a60820e098c92da615710c32258" alt="WebのフロントエンドでもDockerで開発環境を構築する理由。(余談としての脱node依存開発) - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/nrikiji/articles/d5b991402ea89c"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/nrikiji/articles/d5b991402ea89c" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fnrikiji%2Farticles%2Fd5b991402ea89c" alt="">Laravelでの開発でいつもやってること </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/nrikiji/articles/d5b991402ea89c" class="js-keyboard-entry-page-openable" title="Laravelでの開発でいつもやってること (243 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 243 users </a> </span> </li> <li> <a href="/site/zenn.dev/nrikiji" title="『zenn.dev/nrikiji』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/nrikiji </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/11/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">・・・ &#39;channels&#39; =&gt; [ &#39;daily&#39; =&gt; [ &#39;driver&#39; =&gt; &#39;daily&#39;, &#39;days&#39; =&gt; 90, &#39;permission&#39; =&gt; 0664, ], ], class Handler extends ExceptionHandler { protected $dontReport = [ \Illuminate\Auth\AuthenticationException::class, \Illuminate\Validation\ValidationException::class, \Illuminate\Auth\Access\AuthorizationException::class, \Illuminate\Database\Eloquent\ModelNotFoundException::class, \Symfony\Component\Ht</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/Tips" data-gtm-click-label="entry-search-result-item-tag">Tips</a></li> <li><a href="/q/development" data-gtm-click-label="entry-search-result-item-tag">development</a></li> <li><a href="/q/Framework" data-gtm-click-label="entry-search-result-item-tag">Framework</a></li> <li><a href="/q/dev" data-gtm-click-label="entry-search-result-item-tag">dev</a></li> <li><a href="/q/%E6%8A%80%E8%A1%93" data-gtm-click-label="entry-search-result-item-tag">技術</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/nrikiji/articles/d5b991402ea89c"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/nrikiji/articles/d5b991402ea89c" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/2e682991950db0540777fc759865c95587d25518/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--oOGwBRIK--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ALaravel%2525E3%252581%2525A7%2525E3%252581%2525AE%2525E9%252596%25258B%2525E7%252599%2525BA%2525E3%252581%2525A7%2525E3%252581%252584%2525E3%252581%2525A4%2525E3%252582%252582%2525E3%252582%252584%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252582%25258B%2525E3%252581%252593%2525E3%252581%2525A8%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Anrikiji%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2U1MGQ2NTQ4ZjQuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Laravelでの開発でいつもやってること" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://www.publickey1.jp/blog/23/nativephpphp.html"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://www.publickey1.jp/blog/23/nativephpphp.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F23%2Fnativephpphp.html" alt="">「NativePHP」、PHPでデスクトップアプリを開発できるフレームワークが登場 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.publickey1.jp/blog/23/nativephpphp.html" class="js-keyboard-entry-page-openable" title="「NativePHP」、PHPでデスクトップアプリを開発できるフレームワークが登場 (238 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 238 users </a> </span> </li> <li> <a href="/site/www.publickey1.jp/" title="『www.publickey1.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> www.publickey1.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/08/07</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHP言語を用いてデスクトップアプリケーションを開発可能にするフレームワーク「NativePHP」が登場しました。現在アルファ版として公開されています。 PHPランタイムとElectron/Tauriをバンドル NativePHPはHTML、CSS、JavascriptそしてPHPを用いてWindows、Mac、Linuxのクロスプラットフォームに対応したデスクトップアプリケーションを開発可能にするフレームワークです。 PHPランタイムと、アプリケーションからホストOSへアクセスするためのクラス群、Web技術でデスクトップアプリケーションを開発可能にするフレームワークであるElectronもしくはTauriをバンドルし、アプリケーションとしてビルドする機能を備えています。 現時点ではPHPのフレームワークとしてLaravelをベースにしていますが、特定のフレームワーク依存をなくしていく方向</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/mac" data-gtm-click-label="entry-search-result-item-tag">mac</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/windows" data-gtm-click-label="entry-search-result-item-tag">windows</a></li> <li><a href="/q/Electron" data-gtm-click-label="entry-search-result-item-tag">Electron</a></li> <li><a href="/q/linux" data-gtm-click-label="entry-search-result-item-tag">linux</a></li> <li><a href="/q/OS" data-gtm-click-label="entry-search-result-item-tag">OS</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://www.publickey1.jp/blog/23/nativephpphp.html"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://www.publickey1.jp/blog/23/nativephpphp.html" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f1caf93f947e76d5cc61285c865f01d8cb47679f/height=288;version=1;width=512/https%3A%2F%2Fwww.publickey1.jp%2F2023%2Fnativephp_la.png" alt="「NativePHP」、PHPでデスクトップアプリを開発できるフレームワークが登場" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Fucan-lab%2Fitems%2F29614d0f3ded1d3a94fb" alt="">【超入門】Laravelのデバッグ手法22選 - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb" class="js-keyboard-entry-page-openable" title="【超入門】Laravelのデバッグ手法22選 - Qiita (209 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 209 users </a> </span> </li> <li> <a href="/site/qiita.com/ucan-lab" title="『qiita.com/ucan-lab』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/ucan-lab </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/12/07</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに Laravel Advent Calendar 2021 7日目の投稿です。 枠があまっていたので1日目に続いて7日目も投稿します。 他の記事のタイトルを見ると応用的な内容が多かったのでLaravel初心者の方向けにおすすめのLaravelデバッグ方法(tips)を22個ご紹介します。 思ったより数が多くなったので、1つ1つは掘り下げず概要と簡単な使い方をご紹介します。 公式ドキュメントや参考リンクも載せているので詳細はそちらを見てください。 どれか一つでもLaravel開発のヒントになれれば幸いです。 おすすめの手法 特におすすめの方法をご紹介します。 2.17. テストコードを書く 一番のおすすめはテストコードを書くことです。 予期する値と実際の値をテストしながらコードを書くことで一つ一つの処理を確認しながら進めることができます。 2.5. beyondcode/larave</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">デバッグ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/qiita" data-gtm-click-label="entry-search-result-item-tag">qiita</a></li> <li><a href="/q/debug" data-gtm-click-label="entry-search-result-item-tag">debug</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88" data-gtm-click-label="entry-search-result-item-tag">ドキュメント</a></li> <li><a href="/q/%E5%85%A5%E9%96%80" data-gtm-click-label="entry-search-result-item-tag">入門</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/7be6e93f1e66c80b56f709e84e931b8c99d2a4c2/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwJUU4JUI2JTg1JUU1JTg1JUE1JUU5JTk2JTgwJUUzJTgwJTkxTGFyYXZlbCVFMyU4MSVBRSVFMyU4MyU4NyVFMyU4MyU5MCVFMyU4MyU4MyVFMyU4MiVCMCVFNiU4OSU4QiVFNiVCMyU5NTIyJUU5JTgxJUI4JnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01YzMwMTU0YzM4ODY4MWI4ZTE2OGYwOWNhNjk5YTY3Yg%26mark-x%3D142%26mark-y%3D100%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDB1Y2FuLWxhYiZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjdhZDFlZmJkMTFjYzczZTM0MjUyZjc2ZTM2ZmExOTQ%26blend-x%3D142%26blend-y%3D504%26blend-mode%3Dnormal%26s%3Dcfe8f818a3b7cad92f42983f1563cfc6" alt="【超入門】Laravelのデバッグ手法22選 - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/kusuke/articles/972fc135f85b86"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/kusuke/articles/972fc135f85b86" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fkusuke%2Farticles%2F972fc135f85b86" alt="">Cline / RooCodeを安全に使うためにDevContainerを使い始めた </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/kusuke/articles/972fc135f85b86" class="js-keyboard-entry-page-openable" title="Cline / RooCodeを安全に使うためにDevContainerを使い始めた (203 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 203 users </a> </span> </li> <li> <a href="/site/zenn.dev/kusuke" title="『zenn.dev/kusuke』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/kusuke </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2025/03/02</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">AIコーディングエージェントは便利ですが、意図しない挙動を行った時に、被害を最小限にとどめる工夫がいるな〜と思っています。例えば、なんらかの設定をミスって、rm -rfが暴走するとか、無限ループを実行してしまうといったインシデントが考えられます。 当初そのために、今お買い得なXserver VPSを借りて快適な独立した作業環境を構築していました。4GBインスタンスでVSCode ServerとDockerを動かしてたんですが、メモリ使用に耐えられなくなってきて。ちょくちょくOOM(Out of Memory)が出て、「うーん、これは厳しいかな」と感じてました。 そこで、自宅PCを刷新して開発用VMをプロジェクトごとに建てようかと思ったんですが、それはそれでオーバーヘッドでかいですよね。OS管理とかアップデートとか考えると面倒くさい。 要は、プロセスが分離されてて、ワーキングディレクトリ外に</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/docker" data-gtm-click-label="entry-search-result-item-tag">docker</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/VSCode" data-gtm-click-label="entry-search-result-item-tag">VSCode</a></li> <li><a href="/q/AI" data-gtm-click-label="entry-search-result-item-tag">AI</a></li> <li><a href="/q/cline" data-gtm-click-label="entry-search-result-item-tag">cline</a></li> <li><a href="/q/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A" data-gtm-click-label="entry-search-result-item-tag">コンテナ</a></li> <li><a href="/q/Agent" data-gtm-click-label="entry-search-result-item-tag">Agent</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E7%AE%A1%E7%90%86" data-gtm-click-label="entry-search-result-item-tag">プロジェクト管理</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/kusuke/articles/972fc135f85b86"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/kusuke/articles/972fc135f85b86" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3ce595509909592644da5f08eb2b115744caa655/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--9Srho9pv--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ACline%252520%25252F%252520RooCode%2525E3%252582%252592%2525E5%2525AE%252589%2525E5%252585%2525A8%2525E3%252581%2525AB%2525E4%2525BD%2525BF%2525E3%252581%252586%2525E3%252581%25259F%2525E3%252582%252581%2525E3%252581%2525ABDevContainer%2525E3%252582%252592%2525E4%2525BD%2525BF%2525E3%252581%252584%2525E5%2525A7%25258B%2525E3%252582%252581%2525E3%252581%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AYusuke%252520Kawabata%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzFiNjBjMzBiZjEuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Cline / RooCodeを安全に使うためにDevContainerを使い始めた" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/imah/articles/31c28f306487e2e5d141"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/imah/articles/31c28f306487e2e5d141" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fimah%2Farticles%2F31c28f306487e2e5d141" alt="">Laravel使いの情報源まとめ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/imah/articles/31c28f306487e2e5d141" class="js-keyboard-entry-page-openable" title="Laravel使いの情報源まとめ (191 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 191 users </a> </span> </li> <li> <a href="/site/zenn.dev/imah" title="『zenn.dev/imah』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/imah </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/10/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに 最近Laravelの情報収集用にTwitterアカウントを作ってみました。結果、海外に比べて日本は情報が散逸していてちょっと辛いぞという気持ちになりました。そのためLaravelの情報を集約するためのリンク集を作ることにしました。このリンク集が、業務や学習の手助けになればと思います。もし追加した方が良いリンクがあれば、コメント欄で教えてください。 基本 Laravel学習の時も、実業務で使う時も一貫してお世話になるであろうリンクを集めています。 Laravel公式 主にLaravelの機能を調査したいときに参照します。 https://laravel.com/ https://readouble.com/laravel/ (非公式和訳) アップグレードガイド バージョンアップ時の差分と対応方法を知りたいときに参照します。 https://laravel.com/docs/6.x/</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3" data-gtm-click-label="entry-search-result-item-tag">webアプリケーション</a></li> <li><a href="/q/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">フレームワーク</a></li> <li><a href="/q/%E4%BE%BF%E5%88%A9" data-gtm-click-label="entry-search-result-item-tag">便利</a></li> <li><a href="/q/HTTPS" data-gtm-click-label="entry-search-result-item-tag">HTTPS</a></li> <li><a href="/q/%E3%83%84%E3%83%BC%E3%83%AB" data-gtm-click-label="entry-search-result-item-tag">ツール</a></li> <li><a href="/q/com" data-gtm-click-label="entry-search-result-item-tag">com</a></li> <li><a href="/q/%E3%82%B3%E3%83%BC%E3%83%89" data-gtm-click-label="entry-search-result-item-tag">コード</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/imah/articles/31c28f306487e2e5d141"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/imah/articles/31c28f306487e2e5d141" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/42a8ea97b8fd9f8fa72b59dc503f2a0805637bc8/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--jEALSKW3--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ALaravel%2525E4%2525BD%2525BF%2525E3%252581%252584%2525E3%252581%2525AE%2525E6%252583%252585%2525E5%2525A0%2525B1%2525E6%2525BA%252590%2525E3%252581%2525BE%2525E3%252581%2525A8%2525E3%252582%252581%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aimah%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2FkMzg4N2VjZDIuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Laravel使いの情報源まとめ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/kentaroutakeda/laravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/kentaroutakeda/laravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fkentaroutakeda%2Flaravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka" alt="">Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/kentaroutakeda/laravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka" class="js-keyboard-entry-page-openable" title="Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか (177 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 177 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/kentaroutakeda" title="『speakerdeck.com/kentaroutakeda』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/kentaroutakeda </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/03/25</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">動画: https://youtu.be/QHjRGPw34EI?si=MWb-1v1i1S5MG0eE プロポーザル: https://fortee.jp/phperkaigi-2023/proposal/6211083d-fc51-49a3-8b27-485d8e231b1f</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0" data-gtm-click-label="entry-search-result-item-tag">システム</a></li> <li><a href="/q/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">パフォーマンス</a></li> <li><a href="/q/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">フレームワーク</a></li> <li><a href="/q/performance" data-gtm-click-label="entry-search-result-item-tag">performance</a></li> <li><a href="/q/mysql" data-gtm-click-label="entry-search-result-item-tag">mysql</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/kentaroutakeda/laravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/kentaroutakeda/laravelhenoyi-chang-naai-qing-matahasi-haru-he-nisitexin-pei-surunowozhi-meteeloquentwoai-suruyouninatutaka" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/7f9ff1ec0b60e00e9b85b9d63677e614d292f26a/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ff00f406d0022403fb45c57ef0b64138b%2Fslide_0.jpg%3F25008764" alt="Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://labs.cybozu.co.jp/blog/akky/2020/09/iranian-reject-pull-request-because-of-israel/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://labs.cybozu.co.jp/blog/akky/2020/09/iranian-reject-pull-request-because-of-israel/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Flabs.cybozu.co.jp%2Fblog%2Fakky%2F2020%2F09%2Firanian-reject-pull-request-because-of-israel%2F" alt="">「イスラエルからのプルリクエストは受けられません」- オープンソース貢献と国際紛争 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/labs.cybozu.co.jp/blog/akky/2020/09/iranian-reject-pull-request-because-of-israel/" class="js-keyboard-entry-page-openable" title="「イスラエルからのプルリクエストは受けられません」- オープンソース貢献と国際紛争 (175 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 175 users </a> </span> </li> <li> <a href="/site/labs.cybozu.co.jp/" title="『labs.cybozu.co.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> labs.cybozu.co.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/09/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHPの人気フレームワーク Laravel にダウンロードリンク生成機能を追加するオープンソースのパッケージで、機能追加の提案がイラン人の作者によって却下されるという事件が発生しました。却下の理由はイランの法律だそうです。 armancodes/laravel-download-link は、Laravel 上でファイルダウンロードのリンクを生成するパッケージ。GitHub で管理されるオープンソースのライブラリで、ダウンロードリンクの時間による失効や IPアドレスによるアクセス制限などの機能を持っています。作者は @armancodes で、プロフィールではテヘラン在住となっています。 これに対し、ユーザー @Yiddishe-Kop が、特定のユーザーにだけダウンロードを有効化させることができる改造を提案しました。当初は受け入れられそうなコメントの流れでしたが、作者による以下のようなコ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/OSS" data-gtm-click-label="entry-search-result-item-tag">OSS</a></li> <li><a href="/q/github" data-gtm-click-label="entry-search-result-item-tag">github</a></li> <li><a href="/q/%E5%9B%BD%E9%9A%9B" data-gtm-click-label="entry-search-result-item-tag">国際</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> <li><a href="/q/%E6%B3%95%E5%BE%8B" data-gtm-click-label="entry-search-result-item-tag">法律</a></li> <li><a href="/q/%E6%94%BF%E6%B2%BB" data-gtm-click-label="entry-search-result-item-tag">政治</a></li> <li><a href="/q/%E8%BB%8D%E4%BA%8B" data-gtm-click-label="entry-search-result-item-tag">軍事</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://labs.cybozu.co.jp/blog/akky/2020/09/iranian-reject-pull-request-because-of-israel/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://labs.cybozu.co.jp/blog/akky/2020/09/iranian-reject-pull-request-because-of-israel/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/79f0fc0eeee544ad86db92ece6d26b1e6fa6eb42/height=288;version=1;width=512/https%3A%2F%2Fi0.wp.com%2Flabs.cybozu.co.jp%2Fblog%2Fakky%2Fwp-content%2Fuploads%2F2020%2F01%2Fcropped-apple-touch-icon-152x152-1.png%3Ffit%3D512%252C512%26ssl%3D1" alt="「イスラエルからのプルリクエストは受けられません」- オープンソース貢献と国際紛争" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2FMadakaHeri%2Fitems%2Fe6034727fcab8b61b55e" alt="">Laravelが如何にダメで時代遅れかを説明する - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" class="js-keyboard-entry-page-openable" title="Laravelが如何にダメで時代遅れかを説明する - Qiita (175 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 175 users </a> </span> </li> <li> <a href="/site/qiita.com/MadakaHeri" title="『qiita.com/MadakaHeri』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/MadakaHeri </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/11/04</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">2024.11.05「追記1:問題編」を追加しました! 2024.11.06「追記2:回答編」を追加しました! 2024.11.06 [補足]を追加しました! 前提 LaravelはWordPressからステップアップしたい人に丁度フィットしたような作りになっており、オンプレ前提であり、MVC構成の簡単なSSR(サーバーサイドレンダリング)を推しています。 WordPressの次のステップと捉えると納得できますし、小さなアプリを簡単に作るには丁度良いと思います。 しかし、これで大きなサービスを作ろうとすると途端に崩壊します。 基本的にドキュメント通りに作成すると画面とインターフェースが密結合し、サービスとしてのインターフェースが固まらない状態になります。 結果的に私が関わったプロジェクトは全て密結合で触れない状態に陥っていました… たぶん日本中、いや世界中がこうなってると思います。 決して</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">フレームワーク</a></li> <li><a href="/q/Qiita" data-gtm-click-label="entry-search-result-item-tag">Qiita</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">webサービス</a></li> <li><a href="/q/%E6%9C%AA%E5%88%86%E9%A1%9E" data-gtm-click-label="entry-search-result-item-tag">未分類</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3b42152a9753d064444d58ecb4e3cb3d82776cca/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTkxMTg1JTJGcHJvZmlsZS1pbWFnZXMlMkYxNzE3ODU0ODk3P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWM3NDQxMjEyMTI4Njk0NmJjNDViNjZiODAzNDQ3NDdj%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6ef635a782fb7f7acfd4ec7b4098f80c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9TGFyYXZlbCVFMyU4MSU4QyVFNSVBNiU4MiVFNCVCRCU5NSVFMyU4MSVBQiVFMyU4MyU4MCVFMyU4MyVBMSVFMyU4MSVBNyVFNiU5OSU4MiVFNCVCQiVBMyVFOSU4MSU4NSVFMyU4MiU4QyVFMyU4MSU4QiVFMyU4MiU5MiVFOCVBQSVBQyVFNiU5OCU4RSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTI1MGNkZjRmZDM5MzFlNjIwZjk5N2M0YTYyYTlmNDY5%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBNYWRha2FIZXJpJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NjEyM2E0YTBlNmQ1OGVmMzkxMGZkZWI2NzI0ZDcyMzQ%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D9139e533e340e897f0c218ebc3c52cc3" alt="Laravelが如何にダメで時代遅れかを説明する - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://en-ambi.com/itcontents/entry/2021/05/28/160000/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://en-ambi.com/itcontents/entry/2021/05/28/160000/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fen-ambi.com%2Fitcontents%2Fentry%2F2021%2F05%2F28%2F160000%2F" alt="">Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について|ハイクラス転職・求人情報サイト AMBI(アンビ) </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/en-ambi.com/itcontents/entry/2021/05/28/160000/" class="js-keyboard-entry-page-openable" title="Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について|ハイクラス転職・求人情報サイト AMBI(アンビ) (157 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 157 users </a> </span> </li> <li> <a href="/site/en-ambi.com/" title="『en-ambi.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> en-ambi.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/05/31</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について ナイル株式会社メディアテクノロジー事業本部の工藤さんにMVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について解説いただきました。 こんにちは、ナイル株式会社メディアテクノロジー事業本部で開発マネージャをしています工藤@ta99toです。 今回は大規模で複雑度の高い開発をMVCフレームワークベースで構築する際に僕が課題と捉えているポイントやその具体的な解決手法について解説させていただきたいと思います。 「MVC以上の責任分離イメージがつかないよ!」 「DDDとかクリーンとかオニオンとかあのへんの設計パターンの導入モチベーションが不明」 「どうやっても最終的には複雑になって追加開発や修正開発が怖い状態になっちゃう」 ↑このような悩みを持った方に対して</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/MVC" data-gtm-click-label="entry-search-result-item-tag">MVC</a></li> <li><a href="/q/PHP" data-gtm-click-label="entry-search-result-item-tag">PHP</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/dev" data-gtm-click-label="entry-search-result-item-tag">dev</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://en-ambi.com/itcontents/entry/2021/05/28/160000/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://en-ambi.com/itcontents/entry/2021/05/28/160000/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f07c10a17f0270380a44bd4cf15d1f085144b173/height=288;version=1;width=512/https%3A%2F%2Fen-ambi.com%2FimageFile%2Fuser%2Fglobal%2Fogp_01.png" alt="Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について|ハイクラス転職・求人情報サイト AMBI(アンビ)" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2FMadakaHeri%2Fitems%2Fe6034727fcab8b61b55e%3Futm_campaign%3Dpost_article%26utm_medium%3Dtwitter%26utm_source%3Dtwitter_share" alt="">Laravelが如何にダメで時代遅れかを説明する - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" class="js-keyboard-entry-page-openable" title="Laravelが如何にダメで時代遅れかを説明する - Qiita (151 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 151 users </a> </span> </li> <li> <a href="/site/qiita.com/MadakaHeri" title="『qiita.com/MadakaHeri』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/MadakaHeri </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/11/04</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">2024.11.05「追記1:問題編」を追加しました! 2024.11.06「追記2:回答編」を追加しました! 2024.11.06 [補足]を追加しました! 前提 LaravelはWordPressからステップアップしたい人に丁度フィットしたような作りになっており、オンプレ前提であり、MVC構成の簡単なSSR(サーバーサイドレンダリング)を推しています。 WordPressの次のステップと捉えると納得できますし、小さなアプリを簡単に作るには丁度良いと思います。 しかし、これで大きなサービスを作ろうとすると途端に崩壊します。 基本的にドキュメント通りに作成すると画面とインターフェースが密結合し、サービスとしてのインターフェースが固まらない状態になります。 結果的に私が関わったプロジェクトは全て密結合で触れない状態に陥っていました… たぶん日本中、いや世界中がこうなってると思います。 決して</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/Qiita" data-gtm-click-label="entry-search-result-item-tag">Qiita</a></li> <li><a href="/q/architecture" data-gtm-click-label="entry-search-result-item-tag">architecture</a></li> <li><a href="/q/service" data-gtm-click-label="entry-search-result-item-tag">service</a></li> <li><a href="/q/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">webサービス</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/MadakaHeri/items/e6034727fcab8b61b55e?utm_campaign=post_article&amp;utm_medium=twitter&amp;utm_source=twitter_share" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3b42152a9753d064444d58ecb4e3cb3d82776cca/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTkxMTg1JTJGcHJvZmlsZS1pbWFnZXMlMkYxNzE3ODU0ODk3P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWM3NDQxMjEyMTI4Njk0NmJjNDViNjZiODAzNDQ3NDdj%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6ef635a782fb7f7acfd4ec7b4098f80c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9TGFyYXZlbCVFMyU4MSU4QyVFNSVBNiU4MiVFNCVCRCU5NSVFMyU4MSVBQiVFMyU4MyU4MCVFMyU4MyVBMSVFMyU4MSVBNyVFNiU5OSU4MiVFNCVCQiVBMyVFOSU4MSU4NSVFMyU4MiU4QyVFMyU4MSU4QiVFMyU4MiU5MiVFOCVBQSVBQyVFNiU5OCU4RSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTI1MGNkZjRmZDM5MzFlNjIwZjk5N2M0YTYyYTlmNDY5%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBNYWRha2FIZXJpJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NjEyM2E0YTBlNmQ1OGVmMzkxMGZkZWI2NzI0ZDcyMzQ%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D9139e533e340e897f0c218ebc3c52cc3" alt="Laravelが如何にダメで時代遅れかを説明する - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2F77web%2Fjian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" alt="">見せてあげますよ、「本物のLaravel批判」ってやつを。 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" class="js-keyboard-entry-page-openable" title="見せてあげますよ、「本物のLaravel批判」ってやつを。 (149 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 149 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/77web" title="『speakerdeck.com/77web』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/77web </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/11/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">第40回関西PHP勉強会 https://phpkansai.connpass.com/event/335411/ にて発表</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E6%9C%AA%E5%88%86%E9%A1%9E" data-gtm-click-label="entry-search-result-item-tag">未分類</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/77web/jian-seteagemasuyo-ben-wu-nolaravelpi-pan-tuteyatuwo" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/78cbd4cdf2d0afaf389229466ca6242be51e1084/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F303995c6909544adadb2a0a9760da2ce%2Fslide_0.jpg%3F32607847" alt="見せてあげますよ、「本物のLaravel批判」ってやつを。" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/reopa_sharkun/items/f3819b2e8727728da82a"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/reopa_sharkun/items/f3819b2e8727728da82a" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Freopa_sharkun%2Fitems%2Ff3819b2e8727728da82a" alt="">laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129 - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/reopa_sharkun/items/f3819b2e8727728da82a" class="js-keyboard-entry-page-openable" title="laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129 - Qiita (145 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 145 users </a> </span> </li> <li> <a href="/site/qiita.com/reopa_sharkun" title="『qiita.com/reopa_sharkun』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/reopa_sharkun </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/04/07</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129PHPSecurityLaravelkinsingkdevtmpfsi webサーバー上でlaravelを動かしていれば、ちょっとした設定のミスで誰でもマルウェアに感染する可能性がある激ヤバセキュリティホール(CVE-2021-3129)が2021年1月20日に報告されています! composerでインストールしたパッケージをバージョンアップせずに使っていませんか? インターネット上に公開されているサーバー、特にステージングや開発環境でDEBUG=ONにしていませんか? エラー画面がこんな風に見えますか? この3つの条件を満たしていると、あなたのlaravelは、今すぐにでもマルウェアに感染する可能性があります。 laravelの脆弱性をついたkinsing(k</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/qiita" data-gtm-click-label="entry-search-result-item-tag">qiita</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%90" data-gtm-click-label="entry-search-result-item-tag">サーバ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/reopa_sharkun/items/f3819b2e8727728da82a"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/reopa_sharkun/items/f3819b2e8727728da82a" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/75de78030daeb3c87f650c335075cfb10f2ba43c/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9bGFyYXZlbCVFMyU4MSVBRSVFMyU4MyVBNCVFMyU4MyU5MCVFMyU4MSU4NCVFOCU4NCU4NiVFNSVCQyVCMSVFNiU4MCVBNyVFMyU4MiU5MiVFMyU4MSVBNCVFMyU4MSU4NCVFMyU4MSU5RmtpbnNpbmclMjhrZGV2dG1wZnNpJTI5JUUzJTgxJUE4JUUzJTgxJTg0JUUzJTgxJTg2JUUzJTgzJTlFJUUzJTgzJUFCJUUzJTgyJUE2JUUzJTgyJUE3JUUzJTgyJUEyJUUzJTgxJUFCJUU2JTg0JTlGJUU2JTlGJTkzJUUzJTgxJTk3JUUzJTgxJTlGJUU4JUE5JUIxJTIwQ1ZFLTIwMjEtMzEyOSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NjU5YzY2MzhkNjE4MDYxNTZmZmI5NThiMzhkNzU1ZDM%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDByZW9wYV9zaGFya3VuJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00MjVmNjE2N2Y4YmQ1ZWMyMGY1YTU2NTU4NDcwY2YxNg%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D1334fdd4f99748b9e4db677373dc9d0a" alt="laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129 - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fyskn_sid25%2Farticles%2F3008cf70c5a560" alt="">LaravelはどのようにCSRF対策をしているのか? </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/yskn_sid25/articles/3008cf70c5a560" class="js-keyboard-entry-page-openable" title="LaravelはどのようにCSRF対策をしているのか? (130 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 130 users </a> </span> </li> <li> <a href="/site/zenn.dev/yskn_sid25" title="『zenn.dev/yskn_sid25』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/yskn_sid25 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/10/19</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">技術記事は はてなブログ へお引越ししました。 興味を持ってくださった方はZennではなくこちらをご購読いただければと思います🙏 誰しもLaravelのbladeでformを書くにあたって、@csrfという魔法の呪文を書いたことがあるかと思います。 「これを書いておけばCSRF対策はOK」 ドキュメントにも要約するとそういう旨が書いてあります。 この記事では@csrfについてLaravelの実装を実際に見てみることで、CSRFとその対策への理解を深めたいと思います。 ちなみにこの記事はぺちこん2024で残念ながら採択に至らなかったCfPの供養です。[1] 利用するサンプルアプリ @csrf はなにをしているのか? そもそもですが、@csrfが何をしているのかを見てみます。 bladeに@csrfを埋め込んだ場所を、HTML変換後の状態から見てみます。 &lt;input type=&quot;hidde</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/CSRF" data-gtm-click-label="entry-search-result-item-tag">CSRF</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/article" data-gtm-click-label="entry-search-result-item-tag">article</a></li> <li><a href="/q/web%E5%88%B6%E4%BD%9C" data-gtm-click-label="entry-search-result-item-tag">web制作</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/yskn_sid25/articles/3008cf70c5a560" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/802f5aed5917e5ee6e754ebf65053c3876951183/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--hM8D-rHP--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ALaravel%2525E3%252581%2525AF%2525E3%252581%2525A9%2525E3%252581%2525AE%2525E3%252582%252588%2525E3%252581%252586%2525E3%252581%2525ABCSRF%2525E5%2525AF%2525BE%2525E7%2525AD%252596%2525E3%252582%252592%2525E3%252581%252597%2525E3%252581%2525A6%2525E3%252581%252584%2525E3%252582%25258B%2525E3%252581%2525AE%2525E3%252581%25258B%2525EF%2525BC%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AKanon%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzM1OTY4ZjJmNWUuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="LaravelはどのようにCSRF対策をしているのか?" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/memory1994/zerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/memory1994/zerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fmemory1994%2Fzerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon" alt="">ゼロベースから Laravel を用いた
 API 実装オートメーション - Speaker Deck </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/memory1994/zerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon" class="js-keyboard-entry-page-openable" title="ゼロベースから Laravel を用いた
 API 実装オートメーション - Speaker Deck (129 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 129 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/memory1994" title="『speakerdeck.com/memory1994』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/memory1994 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/12/12</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Speaker Deck This deck requires a password Password</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/API" data-gtm-click-label="entry-search-result-item-tag">API</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/Development" data-gtm-click-label="entry-search-result-item-tag">Development</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/%E8%B3%87%E6%96%99" data-gtm-click-label="entry-search-result-item-tag">資料</a></li> <li><a href="/q/%E3%81%93%E3%82%8C%E3%81%AF%E3%81%99%E3%81%94%E3%81%84" data-gtm-click-label="entry-search-result-item-tag">これはすごい</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/memory1994/zerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/memory1994/zerobesukara-laravel-woyong-ita-api-shi-zhuang-otomesiyon" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f6fa07b3208d7794c531c3df4264cc84199d0071/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fbc48a276aa9c48f0bec8fa27519f4d70%2Fslide_0.jpg%3F16901137" alt="ゼロベースから Laravel を用いた
 API 実装オートメーション - Speaker Deck" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://blog.shin1x1.com/entry/getting-stated-with-phpstan"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://blog.shin1x1.com/entry/getting-stated-with-phpstan" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fblog.shin1x1.com%2Fentry%2Fgetting-stated-with-phpstan" alt="">level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/blog.shin1x1.com/entry/getting-stated-with-phpstan" class="js-keyboard-entry-page-openable" title="level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog (128 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 128 users </a> </span> </li> <li> <a href="/site/blog.shin1x1.com/" title="『blog.shin1x1.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> blog.shin1x1.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/08/25</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHP にはアプリケーションを実行せずに静的にコード品質をチェックする静的解析ツールがいくつかあります。有名なところでは、PHPStan や Psalm、Phan、PHPMD などがあります。本エントリでは、まだこうした静的解析ツールを導入していないプロジェクト向けに PHPStan 導入の流れをまとめてみました。 3(4) 行まとめ サンプルコード PHPStan とは 適用方針 Playground PHPStan のインストール Composer Composer(Larastan) Docker 設定ファイルの作成 PHPStan の実行 主なエラー(level=0) baseline ファイルの作成 baseline ファイルの修正 CI での自動実行 GitHub Actions の設定 ブランチ保護ルール さいごに 3(4) 行まとめ composer もしくは Docker</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/phpstan" data-gtm-click-label="entry-search-result-item-tag">phpstan</a></li> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/%E9%9D%99%E7%9A%84%E8%A7%A3%E6%9E%90" data-gtm-click-label="entry-search-result-item-tag">静的解析</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://blog.shin1x1.com/entry/getting-stated-with-phpstan"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://blog.shin1x1.com/entry/getting-stated-with-phpstan" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bb41f39beb1071623c8c7f97610c173c82e56b96/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2Feb43aec204fb20d2c5d2bfea9e710d7733a9d06a%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fs%252Fshin1x1%252F20210824%252F20210824195250.png" alt="level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fkentaroutakeda%2Fsi-noai-sitalaravel-reruwochao-etasonoxian-he" alt="">私の愛したLaravel 〜レールを超えたその先へ〜 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" class="js-keyboard-entry-page-openable" title="私の愛したLaravel 〜レールを超えたその先へ〜 (119 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 119 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/kentaroutakeda" title="『speakerdeck.com/kentaroutakeda』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/kentaroutakeda </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2025/03/25</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHPerKaigi 2025 #phperkaigi #a 2025-03-22 13:35 - Track A / レギュラー…</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%2A%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">*あとで読む</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/tech" data-gtm-click-label="entry-search-result-item-tag">tech</a></li> <li><a href="/q/technology" data-gtm-click-label="entry-search-result-item-tag">technology</a></li> <li><a href="/q/%E6%8A%80%E8%A1%93" data-gtm-click-label="entry-search-result-item-tag">技術</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/kentaroutakeda/si-noai-sitalaravel-reruwochao-etasonoxian-he" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3ef7bc99350f88cd54bc99cc0ed1c732e5f3a4f8/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F7d7f42c7f7bc4601aa27f2bcac0a9fdb%2Fslide_0.jpg%3F34341788" alt="私の愛したLaravel 〜レールを超えたその先へ〜" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://levtech.jp/media/article/interview/detail_561/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://levtech.jp/media/article/interview/detail_561/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Flevtech.jp%2Fmedia%2Farticle%2Finterview%2Fdetail_561%2F" alt="">「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 | レバテックラボ(レバテックLAB) </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/levtech.jp/media/article/interview/detail_561/" class="js-keyboard-entry-page-openable" title="「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 | レバテックラボ(レバテックLAB) (105 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 105 users </a> </span> </li> <li> <a href="/site/levtech.jp/" title="『levtech.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> levtech.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/11/21</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 2024年11月21日 Laravelスペシャリスト/OSSコントリビューター 武田憲太郎 Webアプリケーションエンジニア。正しく書けば自然と堅牢な設計になっていくような技術が好き。 Laravel / Symfony / PHP / TypeScript / Next.js / NestJS / Angular / PostgreSQL X Blog 「不慣れなソフトウェアのコードを解読し、その内容を正しく理解すること」は、業務のなかでエンジニアが苦労することのひとつです。迷宮のように入り組んだソースコードを読んで、意味がわからず途方に暮れたり、自分のスキルの無さを嘆いたり――。こうした経験を持つ方も少なくないのではないでしょうか。 LaravelのスペシャリストでありOSSへのコントリビ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/OSS" data-gtm-click-label="entry-search-result-item-tag">OSS</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://levtech.jp/media/article/interview/detail_561/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://levtech.jp/media/article/interview/detail_561/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5f8b28319e5bc83fa51537faefc4ab8ab59f197c/height=288;version=1;width=512/https%3A%2F%2Flevtech.jp%2Fmedia%2Fwp-content%2Fuploads%2F2024%2F11%2F241119_LTlab_eyecatch_focus_214_B.png" alt="「コンセプト」に気づけば実装の意図が分かる。Laravelスペシャリストに聞く、OSSを読む意義 | レバテックラボ(レバテックLAB)" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/taku_0728/php-laravel-toaws-fargatefalsedeployzhan-lue"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/taku_0728/php-laravel-toaws-fargatefalsedeployzhan-lue" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Ftaku_0728%2Fphp-laravel-toaws-fargatefalsedeployzhan-lue" alt="">PHP_Laravel_とAWS_FargateのDeploy戦略.pdf </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/taku_0728/php-laravel-toaws-fargatefalsedeployzhan-lue" class="js-keyboard-entry-page-openable" title="PHP_Laravel_とAWS_FargateのDeploy戦略.pdf (99 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 99 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/taku_0728" title="『speakerdeck.com/taku_0728』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/taku_0728 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/10/02</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHPカンファレンス2021で使用した登壇資料です。</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/fargate" data-gtm-click-label="entry-search-result-item-tag">fargate</a></li> <li><a href="/q/Deploy" data-gtm-click-label="entry-search-result-item-tag">Deploy</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/taku_0728/php-laravel-toaws-fargatefalsedeployzhan-lue"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/taku_0728/php-laravel-toaws-fargatefalsedeployzhan-lue" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bd14b6d879d6d10d3a3c4288fe8fffcd04f06ae8/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fbc077f583ffe4535a5f693bd03e8a25b%2Fslide_0.jpg%3F19180478" alt="PHP_Laravel_とAWS_FargateのDeploy戦略.pdf" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://knqyf263.hatenablog.com/entry/2021/10/09/165405"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://knqyf263.hatenablog.com/entry/2021/10/09/165405" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fknqyf263.hatenablog.com%2Fentry%2F2021%2F10%2F09%2F165405" alt="">PHPでログファイルへの読み書きを通して任意コード実行をする方法 - knqyf263&#39;s blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/knqyf263.hatenablog.com/entry/2021/10/09/165405" class="js-keyboard-entry-page-openable" title="PHPでログファイルへの読み書きを通して任意コード実行をする方法 - knqyf263&#39;s blog (95 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 95 users </a> </span> </li> <li> <a href="/site/knqyf263.hatenablog.com/" title="『knqyf263.hatenablog.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> knqyf263.hatenablog.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/10/09</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">以前少し話題になったLaravelのデバッグモード有効時の脆弱性であるCVE-2021-3129のPoCを読んでいたのですが、思ったより難しくて何でこんなことをしているんだろうと思ったら発見者による解説ブログがありました。読んでみたらバイパスのために思ったより色々していて普通に勉強になったのでメモを残しておきます。CTFerからすると常識な内容かもしれないので、何か間違いや補足があれば指摘をお願いします。 www.ambionics.io 前提知識1 前提知識2 本題 問題点 = によるエラー 日付のデコード ログファイル内の他エントリ バイパス方法 consumedの利用 iconvの利用 パディングの利用 UTF-16のための調整 NULLバイトの回避 最終形 まとめ 前提知識1 上の脆弱性を理解するためにはいくつかの前提知識を必要とするため最初にまとめておきます。 まず、PHPでは外</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/tech" data-gtm-click-label="entry-search-result-item-tag">tech</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://knqyf263.hatenablog.com/entry/2021/10/09/165405"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://knqyf263.hatenablog.com/entry/2021/10/09/165405" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/77a88dfbd8c0244861d2407437c2687f56761d0e/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F12921228815715408059%2F13574176438020687654%2F1634147503" alt="PHPでログファイルへの読み書きを通して任意コード実行をする方法 - knqyf263&#39;s blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Fucan-lab%2Fitems%2F5fc1281cd8076c8ac9f4" alt="">最強のLaravel開発環境をDockerを使って構築する - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4" class="js-keyboard-entry-page-openable" title="最強のLaravel開発環境をDockerを使って構築する - Qiita (93 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 93 users </a> </span> </li> <li> <a href="/site/qiita.com/ucan-lab" title="『qiita.com/ucan-lab』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/ucan-lab </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/05/09</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">※Linuxはもちろんですが、Docker for Mac(M1 Mac含む), Docker for Windows で動作します。 Dockerの勉強をしたい方向け ハンズオン形式の記事を書いてるので、DockerでLaravel環境する方法を一から勉強したい人はこちらの記事がおすすめです。 【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン 概要 Docker, Docker Compose を使って、nginx, php-fpm, MySQLの実行環境(LEMP)を構築して、最強のLaravel開発環境を構築する記事です。 Laravelが最低限動作して、シンプルで軽量かつベストプラクティスなコンテナ、ディレクトリ構成を考えました。 最小限の構成なので、DockerイメージのビルドはLaradockより10倍以上高速にビルド完了します。 リポジトリ h</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/docker" data-gtm-click-label="entry-search-result-item-tag">docker</a></li> <li><a href="/q/laravel" data-gtm-click-label="entry-search-result-item-tag">laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/nginx" data-gtm-click-label="entry-search-result-item-tag">nginx</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/qiita" data-gtm-click-label="entry-search-result-item-tag">qiita</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/9a29f7a457f6d42f5827adf9a40245f1bdc0204a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU2JTlDJTgwJUU1JUJDJUI3JUUzJTgxJUFFTGFyYXZlbCVFOSU5NiU4QiVFNyU5OSVCQSVFNyU5MiVCMCVFNSVBMiU4MyVFMyU4MiU5MkRvY2tlciVFMyU4MiU5MiVFNCVCRCVCRiVFMyU4MSVBMyVFMyU4MSVBNiVFNiVBNyU4QiVFNyVBRiU4OSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9N2Y1ZTFiOTQxYTIzNmQ2ZmU1NmE2MmM0NTEzMGQzYTI%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB1Y2FuLWxhYiZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NTFkNDFlN2E0MjE0MTJkM2ZjYWVjYWQyN2IzNTQyOGU%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D1e57109309be3d38d2faa52a2e54ca3e" alt="最強のLaravel開発環境をDockerを使って構築する - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://en-ambi.com/itcontents/entry/2020/10/20/103000/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://en-ambi.com/itcontents/entry/2020/10/20/103000/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fen-ambi.com%2Fitcontents%2Fentry%2F2020%2F10%2F20%2F103000%2F" alt="">Laravel実践入門! シンプルなREST APIを実装して学ぶ、多機能なPHPフレームワークの使い方|ハイクラス転職・求人情報サイト AMBI(アンビ) </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/en-ambi.com/itcontents/entry/2020/10/20/103000/" class="js-keyboard-entry-page-openable" title="Laravel実践入門! シンプルなREST APIを実装して学ぶ、多機能なPHPフレームワークの使い方|ハイクラス転職・求人情報サイト AMBI(アンビ) (87 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 87 users </a> </span> </li> <li> <a href="/site/en-ambi.com/" title="『en-ambi.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> en-ambi.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/10/20</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">これからLaravelを利用するのであれば、どのバージョンを使えばよいでしょうか? 現在(2020年9月時点)の状況であれば、6もしくは8のいずれかを選択することになります。どちらを選ぶかはアプリケーションの要件次第です。長期間安定したバージョンを利用したいのであれば6を、最新機能を利用していきたければ8を選ぶことになります。 この選択はさらに、セキュリティフィックス期限が切れた後にも影響します。例えば6を選択した場合、おそらく長期間利用することになるので、次にバージョンを上げる際は最新バージョンとの差異が大きくなり、アップグレードに手間がかかる可能性があります。 一方、8を選択して最新バージョンに適宜アップグレードしていけば、頻度は増えますが、都度の手間は小さくなります。ご自身やチームの開発状況や方針などを鑑みて、どちらを選ぶか検討してください。 なお、Laravelは6以降、セマンティ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">システム開発</a></li> <li><a href="/q/%E3%82%AD%E3%83%A3%E3%83%AA%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">キャリア</a></li> <li><a href="/q/docker" data-gtm-click-label="entry-search-result-item-tag">docker</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> <li><a href="/q/api" data-gtm-click-label="entry-search-result-item-tag">api</a></li> <li><a href="/q/Tutorial" data-gtm-click-label="entry-search-result-item-tag">Tutorial</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://en-ambi.com/itcontents/entry/2020/10/20/103000/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://en-ambi.com/itcontents/entry/2020/10/20/103000/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f07c10a17f0270380a44bd4cf15d1f085144b173/height=288;version=1;width=512/https%3A%2F%2Fen-ambi.com%2FimageFile%2Fuser%2Fglobal%2Fogp_01.png" alt="Laravel実践入門! シンプルなREST APIを実装して学ぶ、多機能なPHPフレームワークの使い方|ハイクラス転職・求人情報サイト AMBI(アンビ)" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://developers.cyberagent.co.jp/blog/archives/35832/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://developers.cyberagent.co.jp/blog/archives/35832/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fdevelopers.cyberagent.co.jp%2Fblog%2Farchives%2F35832%2F" alt="">スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP | CyberAgent Developers Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/developers.cyberagent.co.jp/blog/archives/35832/" class="js-keyboard-entry-page-openable" title="スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP | CyberAgent Developers Blog (86 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 86 users </a> </span> </li> <li> <a href="/site/developers.cyberagent.co.jp/" title="『developers.cyberagent.co.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> developers.cyberagent.co.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/01</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">3月24日、サイバーエージェントのエンジニア・クリエイターによる技術カンファレンス「CyberAgent Developer Conference2022」を開催しました。本記事では、「スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP」の様子をお届けします。 目次 ■サイバーエージェントグループのゲーム事業の歴史とPHP ■PHPで培ったもの ■多様化するゲームの要件とサイバーエージェントグループでの事例 ■PHPの変革「Swoole」「Laravel Octane」の登場 ■Laravel Octane Deep Dive ■まとめ ■サイバーエージェントグループのゲーム事業の歴史とPHP まずはサイバーエージェントグループのゲーム事業の歴史とPHPについて振り返ります。サイバーエージェントグループでは2009年からゲーム事業に参入しており、20</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Laravel" data-gtm-click-label="entry-search-result-item-tag">Laravel</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%90" data-gtm-click-label="entry-search-result-item-tag">サーバ</a></li> <li><a href="/q/programming" data-gtm-click-label="entry-search-result-item-tag">programming</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://developers.cyberagent.co.jp/blog/archives/35832/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://developers.cyberagent.co.jp/blog/archives/35832/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/4b88bf17d1692d7a620e34a2eafab7a9acb28470/height=288;version=1;width=512/https%3A%2F%2Fdevelopers.cyberagent.co.jp%2Fblog%2Fwp-content%2Fuploads%2F2022%2F05%2Fphp-in-the-mobile-game-with-laravel-octane.jpg" alt="スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP | CyberAgent Developers Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> </ul> <div class="centerarticle-pager "> <span>1</span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=2" class="js-keyboard-openable">2</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=3" class="js-keyboard-openable">3</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=4" class="js-keyboard-openable">4</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=5" class="js-keyboard-openable">5</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=6" class="js-keyboard-openable">6</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=7" class="js-keyboard-openable">7</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=8" class="js-keyboard-openable">8</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=9" class="js-keyboard-openable">9</a></span> <span class="js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=10" class="js-keyboard-openable">10</a></span> <span class="centerarticle-pager-next js-keyboard-selectable-item"><a href="https://b.hatena.ne.jp/q/laravel?page=2" class="js-keyboard-openable">次のページ</a></span> </div> </div> <ins id="entrysearch-ad-rectangle-middle-sp" class="entrylist-ad-sp-fluid for-sp"></ins> <div id="entrysearch-ad-rectangle-bottom-sp" class="touch-ad-rectangle"></div> </div> <div class="entry-wrapper"> <section class="entry-group"> <h2 class="entry-group-sectionTitle">新着記事</h2> <ul class="entry-group-list"> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/note.com/omori_aiko/n/na22c1c64cad4" title="徳島で一番奇妙なレストラン【バレンシーア】|喫茶そよ風のママ" data-gtm-label="entry-recentEntriesInEntrySearch-title">徳島で一番奇妙なレストラン【バレンシーア】|喫茶そよ風のママ</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/note.com/omori_aiko/n/na22c1c64cad4" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/note.com/omori_aiko" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnote.com%2Fomori_aiko%2Fn%2Fna22c1c64cad4" alt="">note.com/omori_aiko</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/note.com/el_el_san/n/na6ca9be57f7b" title="Nimの動画生成(i2v)で遊ぶ ~主にVeo2~|える" data-gtm-label="entry-recentEntriesInEntrySearch-title">Nimの動画生成(i2v)で遊ぶ ~主にVeo2~|える</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/note.com/el_el_san/n/na6ca9be57f7b" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/note.com/el_el_san" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnote.com%2Fel_el_san%2Fn%2Fna6ca9be57f7b" alt="">note.com/el_el_san</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/www.gizmodo.jp/2025/03/sonet122025.html" title="「10ギガネット回線×月額基本料金最大12か月額無料」って、もう試すしかないじゃん" data-gtm-label="entry-recentEntriesInEntrySearch-title">「10ギガネット回線×月額基本料金最大12か月額無料」って、もう試すしかないじゃん</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/www.gizmodo.jp/2025/03/sonet122025.html" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/www.gizmodo.jp/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.gizmodo.jp%2F2025%2F03%2Fsonet122025.html" alt="">www.gizmodo.jp</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/spo-zatsu.com/catchers-mitt-kataduke-shippai/" title="キャッチャーミット型付けを失敗しないやり方とは?原因と正しい直し方も徹底解説 | スポーツ雑学王" data-gtm-label="entry-recentEntriesInEntrySearch-title">キャッチャーミット型付けを失敗しないやり方とは?原因と正しい直し方も徹底解説 | スポーツ雑学王</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/spo-zatsu.com/catchers-mitt-kataduke-shippai/" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/spo-zatsu.com/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspo-zatsu.com%2Fcatchers-mitt-kataduke-shippai%2F" alt="">spo-zatsu.com</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/www.famitsu.com/article/202504/38823" title="『メトロイドプライム4 ビヨンド』Switch2でのマウス操作はかなり快適。アクション要素たっぷりのボス戦が楽しい!【Switch2体験会】 | ゲーム・エンタメ最新情報のファミ通.com" data-gtm-label="entry-recentEntriesInEntrySearch-title">『メトロイドプライム4 ビヨンド』Switch2でのマウス操作はかなり快適。アクション要素たっぷりのボス戦が楽しい!【Switch2体験会】 | ゲーム・エンタメ最新情報のファミ通.com</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/www.famitsu.com/article/202504/38823" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/www.famitsu.com/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.famitsu.com%2Farticle%2F202504%2F38823" alt="">www.famitsu.com</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/note.com/hanakolondon" title="メアリー・ポピンズ研究所: 華子です|note" data-gtm-label="entry-recentEntriesInEntrySearch-title">メアリー・ポピンズ研究所: 華子です|note</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/note.com/hanakolondon" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/note.com/hanakolondon" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnote.com%2Fhanakolondon" alt="">note.com/hanakolondon</a></span></p> </div> </div> </li> </ul> </section> </div> </div> <div id="keyboard-shortcut-help" class="shortcut-help is-hidden"> <h3 class="shortcut-help-title">キーボードショートカット一覧</h3> <p><span class="shortcut-help-key">j</span>次のブックマーク</p> <p><span class="shortcut-help-key">k</span>前のブックマーク</p> <p><span class="shortcut-help-key">l</span>あとで読む</p> <p><span class="shortcut-help-key">e</span>コメント一覧を開く</p> <p><span class="shortcut-help-key">o</span>ページを開く</p> <button tyle="button" class="shortcut-help-close js-close-button">✕</button> </div> <script type="text/javascript"> // ---------------- dfp section ---------------- var valve = valve || []; if (isMobile()) { valve.push(function(v) { v.defineDFPSlot({ unit: '/4374287/bookmark_overlay_sp', sizes: [[320,80],[320,70],[320,50]], slotId: 'touch-footer-ad' }); v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_rectangle_bottom_sp', sizes: [[300,250]], slotId: 'entrysearch-ad-rectangle-bottom-sp' }); v.sealDFPSlots(); }); } else { valve.push(function(v) { v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_sidebar_top_pc', sizes: [[300,250]], slotId: 'entrysearch-ad-sidebar-top' }); v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_sidebar_bottom_pc', sizes: [[300,250]], slotId: 'entrysearch-ad-sidebar-bottom' }); v.sealDFPSlots(); }); } // ---------------- ydn section ---------------- if (isMobile()) { valve.push(function(v) { v.defineFluidSlot({ insId: 'entrysearch-ad-rectangle-middle-sp', yadsAdDs: '62199_242886' }); }); } </script> <script> var valve = window.valve || []; valve.push(function(v) { var pageKeyValues = {}; if (document.cookie.split(';').some(function(item) { return item.indexOf('202011_guest_status=register_incomplete') >= 0})) { pageKeyValues.bookmark_status = 'register_incomplete'; } v.config({ pageKeyValues: pageKeyValues, textSelector: ".entry-search-articles", content: { result: "ng" }, service: 'bookmark' }); }); </script> <script src="https://cdn.pool.st-hatena.com/valve/valve.js" async></script> <div class="footer"> <div class="footer-inner"> <div class="footer-inner-group footer-bookmark"> <h2 class="footer-title"><a href="/" data-gtm-label="footer-btop">はてなブックマーク</a></h2> <div class="footer-list-wrapper"> <ul class="footer-list footer-list--pc"> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/all" class="hotentry js-keyboard-openable" data-gtm-label="footerCategories-hotentry">総合</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/general" class="general js-keyboard-openable" data-gtm-label="footerCategories-general">一般</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/social" class="cat-social js-keyboard-openable" data-gtm-label="footerCategories-social">世の中</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/economics" class="cat-economics js-keyboard-openable" data-gtm-label="footerCategories-economics">政治と経済</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/life" class="cat-life js-keyboard-openable" data-gtm-label="footerCategories-life">暮らし</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/knowledge" class="cat-knowledge js-keyboard-openable" data-gtm-label="footerCategories-knowledge">学び</a></li> </ul> <ul class="footer-list footer-list--pc"> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/it" class="cat-it js-keyboard-openable" data-gtm-label="footerCategories-it">テクノロジー</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/entertainment" class="cat-entertainment js-keyboard-openable" data-gtm-label="footerCategories-entertainment">エンタメ</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/game" class="cat-game js-keyboard-openable" data-gtm-label="footerCategories-game">アニメとゲーム</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/fun" class="cat-fun js-keyboard-openable" data-gtm-label="footerCategories-fun">おもしろ</a></li> </ul> <ul class="footer-list"> <li class="footer-list-item"><a href="/guide/tools">アプリ・拡張機能</a></li> <li class="footer-list-item"><a href="https://bookmark.hatenastaff.com/">開発ブログ</a></li> <li class="footer-list-item"><a href="/help/">ヘルプ</a></li> <li class="footer-list-item"><a href="https://hatena.zendesk.com/hc/ja/categories/900000153166">お問い合わせ</a></li> <li class="footer-list-item footer-list-item--sp"><a href="/guide/guideline">ガイドライン</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/rule">利用規約</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/privacypolicy-ja">プライバシーポリシー</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/cookie-policy">利用者情報の外部送信について</a></li> </ul> <ul class="footer-list footer-list--pc"> <li class="footer-list-item footer-list-item--pc"><a href="/guide/guideline">ガイドライン</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/rule">利用規約</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/privacypolicy-ja">プライバシーポリシー</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/cookie-policy">利用者情報の外部送信について</a></li> </ul> </div> </div> <div class="footer-inner-group footer-bookmark-sns"> <h2 class="footer-title">公式Twitter</h2> <div class="footer-bookmark-list"> <ul class="footer-list"> <li class="footer-list-item"><a href="https://twitter.com/HatenaBookmark" target="_blank" rel="noopener" data-gtm-click-label="footer-officialTwitter-name">公式アカウント</a></li> <li class="footer-list-item"><a href="https://twitter.com/hatebu" target="_blank" rel="noopener" data-gtm-click-label="footer-hotentryTwitter-name">ホットエントリー</a></li> </ul> </div> </div> <div class="footer-inner-group footer-hatena"> <h2 class="footer-title">はてなのサービス</h2> <ul class="footer-list"> <li class="footer-list-item"><a href="https://hatenablog.com/" data-gtm-label="footerServices-blog">はてなブログ</a></li> <li class="footer-list-item"><a href="https://hatenablog.com/guide/pro?plus_via=hatenabookmark_footer&utm_source=hatenabookmark&utm_medium=referral&utm_campaign=hatenabookmark_to_hatenablog_pro&utm_content=hatenabookmark_footer" data-gtm-label="footerServices-blog-pro">はてなブログPro</a></li> <li class="footer-list-item"><a href="https://q.hatena.ne.jp/" data-gtm-label="footerServices-question">人力検索はてな</a></li> <li class="footer-list-item"><a href="http://d.hatena.ne.jp/" data-gtm-label="footerServices-keyword">はてなブログ タグ</a></li> <li class="footer-list-item"><a href="http://hatenanews.com/" data-gtm-label="footerServices-hatenanews">はてなニュース</a></li> <li class="footer-list-item"><a href="https://soredoko.jp/" data-gtm-label="footerServices-soredoko">ソレドコ</a></li> </ul> </div> </div> <div class="footer-bottom"> <div class="footer-app"> <ul> <li class="footer-list-item"><a href="https://apps.apple.com/jp/app/hatenabukkumaku/id354976659?mt=8" target="_blank" rel="noopener" data-gtm-click-label="footer-app-ios"><img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/common/dl-button/appstore@2x.png" alt="App Storeからダウンロード"></a></li> <li class="footer-list-item"><a href="https://play.google.com/store/apps/details?id=com.hatena.android.bookmark&amp;referrer=utm_source%3Dbookmark_sp%26utm_campaign%3Dbookmark_sp_user&hl=ja" target="_blank" rel="noopener" data-gtm-click-label="footer-app-android"><img src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/images/v4/public/common/dl-button/googleplay@2x.png" alt="Google Playで手に入れよう"></a></li> </ul> </div> <div class="copyright">Copyright &copy; 2005-2025 <a href="http://www.hatena.ne.jp/">Hatena</a>. All Rights Reserved.</div> </div> </div> <div id="touch-footer-ad"></div> <div id="touch-footer-ad-placeholder"></div> <div class="modal-overlay"></div> <script type="text/javascript" src="https://b.st-hatena.com/1b3c3aaeeb3650284f153f8a5a507d736736a15d/js/v4/bookmark.star.js" async></script> <div class="js-head-notify is-hidden">設定を変更しました<span class="js-head-notify-close-button">x</span></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10