CINXE.COM
[B! web] R2Mのブックマーク
<!DOCTYPE html> <html lang="ja" data-page-scope="User" data-stable-request-url="https://b.hatena.ne.jp/R2M/web/" data-device-type="PC" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-author-name="R2M" data-page-subtype="tag" data-page-type="user" data-platform="pc" data-search-query="" data-tag-filter="web" data-visitor-name="ゲスト" > <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>[B! web] R2Mのブックマーク</title> <script src="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/js/v4/bookmark.js" async></script> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/css/v4/bookmark.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/css/v4/bookmark.star.css" /> <link rel="canonical" href="https://b.hatena.ne.jp/R2M/web/" /> <link rel="next" href="/R2M/web/?page=2"> <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="search" type="application/opensearchdescription+xml" title="R2M のブックマーク内検索" href="/R2M/opensearch.xml"> <link rel="apple-touch-icon-precomposed" href="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/apple-touch-icon-precomposed.png" /> <link rel="mask-icon" href="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/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/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/icons/bookmark.ico" /> <meta name="msapplication-task" content="name=マイブックマーク; action-uri=/my; icon-uri=https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/icons/my-bookmark.ico" /> <meta name="msapplication-task" content="name=お気に入りのブックマーク; action-uri=/my/favorite; icon-uri=https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/icons/favorite-bookmark.ico" /> <meta name="msapplication-task" content="name=人気エントリー; action-uri=/hotentry; icon-uri=https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/icons/hotentry.ico" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="referrer" content="always"> <link rel="author" href="http://www.hatena.ne.jp/R2M/" /> <link rel="alternate" type="application/rss+xml" href="/R2M/bookmark.rss?tag=web" /> <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 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&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%2FR2M%2Fweb%2F" 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/77d2ee6f79ddaf78eb2d198936bae315b6721993/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/77d2ee6f79ddaf78eb2d198936bae315b6721993/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/77d2ee6f79ddaf78eb2d198936bae315b6721993/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/77d2ee6f79ddaf78eb2d198936bae315b6721993/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" class="js-user-page-container" data-author-name="R2M" > <div class="centerarticle-wrapper"> <div class="left-container"> <div class="js-user-info" data-user-name="R2M"> <div class="centerarticle-profile"> <a href="http://profile.hatena.ne.jp/R2M/"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" class="centerarticle-profile-image"/> </a> <div class="centerarticle-profile-main"> <a href="http://profile.hatena.ne.jp/R2M/" class="centerarticle-profile-nickname js-user-info-nickname" target="_blank" rel="noopener">R2M</a> <a href="/R2M/bookmark" class="centerarticle-profile-username">id:R2M</a> </div> </div> <ul class="userprofile-status"> <li> <a href="/R2M/bookmark" class="userprofile-status-link" data-gtm-click-label="user-count-bookmark"> <span class="userprofile-status-count">37,644</span> <span class="userprofile-status-text">ブックマーク</span> </a> </li> <li> <a href="/R2M/follow" class="userprofile-status-link" data-gtm-click-label="user-count-follow"> <span class="userprofile-status-count js-total-followings">-</span> <span class="userprofile-status-text">お気に入り</span> </a> </li> <li> <a href="/R2M/follower" class="userprofile-status-link" data-gtm-click-label="user-count-follower"> <span class="userprofile-status-count js-total-followers">-</span> <span class="userprofile-status-text">お気に入られ</span> </a> </li> </ul> </div> <div class="centerarticle-mainNavi"> </div> <div class="centerarticle-sidebar-menu js-user-tags"> <h3 class="centerarticle-aside-title">タグ</h3> <ul class="centerarticle-sub-navi"> <li><a href="/R2M/bookmark" data-gtm-click-label="user-tags-all">すべて</a></li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%20%E3%83%8D%E3%82%BF/" data-gtm-click-label="user-tags"> ネタ <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/.net/" data-gtm-click-label="user-tags"> .net <span class="count">(113)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/2ch/" data-gtm-click-label="user-tags"> 2ch <span class="count">(497)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/3D/" data-gtm-click-label="user-tags"> 3D <span class="count">(142)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/3DCG/" data-gtm-click-label="user-tags"> 3DCG <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/3D%E3%83%97%E3%83%AA%E3%83%B3%E3%82%BF/" data-gtm-click-label="user-tags"> 3Dプリンタ <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/API/" data-gtm-click-label="user-tags"> API <span class="count">(119)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/AR/" data-gtm-click-label="user-tags"> AR <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/AV/" data-gtm-click-label="user-tags"> AV <span class="count">(109)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Amazon/" data-gtm-click-label="user-tags"> Amazon <span class="count">(78)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Arduino/" data-gtm-click-label="user-tags"> Arduino <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/C++/" data-gtm-click-label="user-tags"> C++ <span class="count">(47)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/CI/" data-gtm-click-label="user-tags"> CI <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/COVID-19/" data-gtm-click-label="user-tags"> COVID-19 <span class="count">(284)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/CPU/" data-gtm-click-label="user-tags"> CPU <span class="count">(109)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Chrome/" data-gtm-click-label="user-tags"> Chrome <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/DIY/" data-gtm-click-label="user-tags"> DIY <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/DirectX/" data-gtm-click-label="user-tags"> DirectX <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Dropbox/" data-gtm-click-label="user-tags"> Dropbox <span class="count">(8)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/EU/" data-gtm-click-label="user-tags"> EU <span class="count">(216)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Excel/" data-gtm-click-label="user-tags"> Excel <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/FPGA/" data-gtm-click-label="user-tags"> FPGA <span class="count">(52)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Firefox/" data-gtm-click-label="user-tags"> Firefox <span class="count">(8)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Framework/" data-gtm-click-label="user-tags"> Framework <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/GPGPU/" data-gtm-click-label="user-tags"> GPGPU <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/GPU/" data-gtm-click-label="user-tags"> GPU <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/GitHub/" data-gtm-click-label="user-tags"> GitHub <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Google/" data-gtm-click-label="user-tags"> Google <span class="count">(164)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Google%20App%20Engine/" data-gtm-click-label="user-tags"> Google App Engine <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/GraphQL/" data-gtm-click-label="user-tags"> GraphQL <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/HMD/" data-gtm-click-label="user-tags"> HMD <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/HPC/" data-gtm-click-label="user-tags"> HPC <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/HTML/" data-gtm-click-label="user-tags"> HTML <span class="count">(42)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/HTML5/" data-gtm-click-label="user-tags"> HTML5 <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/IMF/" data-gtm-click-label="user-tags"> IMF <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/ISIS/" data-gtm-click-label="user-tags"> ISIS <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/IT/" data-gtm-click-label="user-tags"> IT <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/LL/" data-gtm-click-label="user-tags"> LL <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/LLM/" data-gtm-click-label="user-tags"> LLM <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/LLVM/" data-gtm-click-label="user-tags"> LLVM <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/MVC/" data-gtm-click-label="user-tags"> MVC <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/MVNO/" data-gtm-click-label="user-tags"> MVNO <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/NHK/" data-gtm-click-label="user-tags"> NHK <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/OSS/" data-gtm-click-label="user-tags"> OSS <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Oculus%20Rift/" data-gtm-click-label="user-tags"> Oculus Rift <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/OculusRift/" data-gtm-click-label="user-tags"> OculusRift <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/OpenCV/" data-gtm-click-label="user-tags"> OpenCV <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/P2P/" data-gtm-click-label="user-tags"> P2P <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/PC/" data-gtm-click-label="user-tags"> PC <span class="count">(185)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/PC%E3%83%91%E3%83%BC%E3%83%84/" data-gtm-click-label="user-tags"> PCパーツ <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/PC%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/" data-gtm-click-label="user-tags"> PC周辺機器 <span class="count">(104)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Raspberry%20Pi/" data-gtm-click-label="user-tags"> Raspberry Pi <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Ruby/" data-gtm-click-label="user-tags"> Ruby <span class="count">(124)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/SF/" data-gtm-click-label="user-tags"> SF <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/SRE/" data-gtm-click-label="user-tags"> SRE <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/TPP/" data-gtm-click-label="user-tags"> TPP <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/TV/" data-gtm-click-label="user-tags"> TV <span class="count">(124)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Tensorflow/" data-gtm-click-label="user-tags"> Tensorflow <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Togetter/" data-gtm-click-label="user-tags"> Togetter <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/TypeScript/" data-gtm-click-label="user-tags"> TypeScript <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/UI/" data-gtm-click-label="user-tags"> UI <span class="count">(62)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/UML/" data-gtm-click-label="user-tags"> UML <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/USB/" data-gtm-click-label="user-tags"> USB <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Unix/" data-gtm-click-label="user-tags"> Unix <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/VR/" data-gtm-click-label="user-tags"> VR <span class="count">(165)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Visual%20Studio/" data-gtm-click-label="user-tags"> Visual Studio <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/Vue.js/" data-gtm-click-label="user-tags"> Vue.js <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/WebAssembly/" data-gtm-click-label="user-tags"> WebAssembly <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/YouTube/" data-gtm-click-label="user-tags"> YouTube <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/android/" data-gtm-click-label="user-tags"> android <span class="count">(418)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/art/" data-gtm-click-label="user-tags"> art <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/aws/" data-gtm-click-label="user-tags"> aws <span class="count">(138)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/azure/" data-gtm-click-label="user-tags"> azure <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/bash/" data-gtm-click-label="user-tags"> bash <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/bitcoin/" data-gtm-click-label="user-tags"> bitcoin <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/bluetooth/" data-gtm-click-label="user-tags"> bluetooth <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/business/" data-gtm-click-label="user-tags"> business <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/c%23/" data-gtm-click-label="user-tags"> c# <span class="count">(51)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/css/" data-gtm-click-label="user-tags"> css <span class="count">(72)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/database/" data-gtm-click-label="user-tags"> database <span class="count">(316)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/deep%20learning/" data-gtm-click-label="user-tags"> deep learning <span class="count">(61)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/docker/" data-gtm-click-label="user-tags"> docker <span class="count">(82)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/driver/" data-gtm-click-label="user-tags"> driver <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/electron/" data-gtm-click-label="user-tags"> electron <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/filesystem/" data-gtm-click-label="user-tags"> filesystem <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/git/" data-gtm-click-label="user-tags"> git <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/go/" data-gtm-click-label="user-tags"> go <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/hardware/" data-gtm-click-label="user-tags"> hardware <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/http/" data-gtm-click-label="user-tags"> http <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/ingress/" data-gtm-click-label="user-tags"> ingress <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/ios/" data-gtm-click-label="user-tags"> ios <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/iot/" data-gtm-click-label="user-tags"> iot <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/iphone/" data-gtm-click-label="user-tags"> iphone <span class="count">(65)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/ipv6/" data-gtm-click-label="user-tags"> ipv6 <span class="count">(8)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/jQuery/" data-gtm-click-label="user-tags"> jQuery <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/java/" data-gtm-click-label="user-tags"> java <span class="count">(69)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/javascript/" data-gtm-click-label="user-tags"> javascript <span class="count">(291)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/kernel/" data-gtm-click-label="user-tags"> kernel <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/kinect/" data-gtm-click-label="user-tags"> kinect <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/kubernetes/" data-gtm-click-label="user-tags"> kubernetes <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/library/" data-gtm-click-label="user-tags"> library <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/linux/" data-gtm-click-label="user-tags"> linux <span class="count">(222)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/markdown/" data-gtm-click-label="user-tags"> markdown <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/microservice/" data-gtm-click-label="user-tags"> microservice <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/microsoft/" data-gtm-click-label="user-tags"> microsoft <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/music/" data-gtm-click-label="user-tags"> music <span class="count">(88)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/mysql/" data-gtm-click-label="user-tags"> mysql <span class="count">(85)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/network/" data-gtm-click-label="user-tags"> network <span class="count">(145)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/node.js/" data-gtm-click-label="user-tags"> node.js <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/os/" data-gtm-click-label="user-tags"> os <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/php/" data-gtm-click-label="user-tags"> php <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/programming/" data-gtm-click-label="user-tags"> programming <span class="count">(126)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/python/" data-gtm-click-label="user-tags"> python <span class="count">(99)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/rails/" data-gtm-click-label="user-tags"> rails <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/react/" data-gtm-click-label="user-tags"> react <span class="count">(172)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/redmine/" data-gtm-click-label="user-tags"> redmine <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/rust/" data-gtm-click-label="user-tags"> rust <span class="count">(79)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/rx/" data-gtm-click-label="user-tags"> rx <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/science/" data-gtm-click-label="user-tags"> science <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/security/" data-gtm-click-label="user-tags"> security <span class="count">(121)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/serverless/" data-gtm-click-label="user-tags"> serverless <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/shop/" data-gtm-click-label="user-tags"> shop <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/software/" data-gtm-click-label="user-tags"> software <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/sql/" data-gtm-click-label="user-tags"> sql <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/sqlserver/" data-gtm-click-label="user-tags"> sqlserver <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/tool/" data-gtm-click-label="user-tags"> tool <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/twitter/" data-gtm-click-label="user-tags"> twitter <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/unity/" data-gtm-click-label="user-tags"> unity <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/web/" class="is-current" data-gtm-click-label="user-tags"> web <span class="count">(182)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9/" data-gtm-click-label="user-tags"> webサービス <span class="count">(320)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3/" data-gtm-click-label="user-tags"> webデザイン <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/web%E6%BC%AB%E7%94%BB/" data-gtm-click-label="user-tags"> web漫画 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/windows/" data-gtm-click-label="user-tags"> windows <span class="count">(242)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/x86/" data-gtm-click-label="user-tags"> x86 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80/" data-gtm-click-label="user-tags"> あとで読む <span class="count">(315)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%84%E3%81%98%E3%82%81/" data-gtm-click-label="user-tags"> いじめ <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%91%E3%81%97%E3%81%8B%E3%82%89%E3%82%93/" data-gtm-click-label="user-tags"> けしからん <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%93%E3%82%8C%E3%81%AF%E3%81%99%E3%81%94%E3%81%84/" data-gtm-click-label="user-tags"> これはすごい <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%93%E3%82%8C%E3%81%AF%E3%81%B2%E3%81%A9%E3%81%84/" data-gtm-click-label="user-tags"> これはひどい <span class="count">(74)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%AF%E3%81%A6%E3%81%AA/" data-gtm-click-label="user-tags"> はてな <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%AF%E3%81%A6%E3%83%96/" data-gtm-click-label="user-tags"> はてブ <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%81%BE%E3%81%A8%E3%82%81/" data-gtm-click-label="user-tags"> まとめ <span class="count">(66)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%8B%E3%83%A1/" data-gtm-click-label="user-tags"> アニメ <span class="count">(257)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB/" data-gtm-click-label="user-tags"> アフリカ <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%97%E3%83%AA/" data-gtm-click-label="user-tags"> アプリ <span class="count">(50)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB/" data-gtm-click-label="user-tags"> アメリカ <span class="count">(241)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0/" data-gtm-click-label="user-tags"> アルゴリズム <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> アーキテクチャ <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A2%E3%83%BC%E3%83%88/" data-gtm-click-label="user-tags"> アート <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9/" data-gtm-click-label="user-tags"> イギリス <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%82%B9%E3%83%A9%E3%83%A0/" data-gtm-click-label="user-tags"> イスラム <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%82%BF%E3%83%AA%E3%82%A2/" data-gtm-click-label="user-tags"> イタリア <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88/" data-gtm-click-label="user-tags"> イベント <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88/" data-gtm-click-label="user-tags"> イラスト <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%93%E3%83%A5%E3%83%BC/" data-gtm-click-label="user-tags"> インタビュー <span class="count">(91)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> インターネット <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%B3%E3%83%89/" data-gtm-click-label="user-tags"> インド <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9/" data-gtm-click-label="user-tags"> インフラ <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A6%E3%82%AF%E3%83%A9%E3%82%A4%E3%83%8A/" data-gtm-click-label="user-tags"> ウクライナ <span class="count">(250)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/" data-gtm-click-label="user-tags"> エディタ <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC/" data-gtm-click-label="user-tags"> エネルギー <span class="count">(550)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2/" data-gtm-click-label="user-tags"> エンジニア <span class="count">(115)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3/" data-gtm-click-label="user-tags"> エンジン <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AA%E3%83%AA%E3%83%B3%E3%83%94%E3%83%83%E3%82%AF/" data-gtm-click-label="user-tags"> オリンピック <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AA%E3%83%BC%E3%82%B9%E3%83%88%E3%83%A9%E3%83%AA%E3%82%A2/" data-gtm-click-label="user-tags"> オーストラリア <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9/" data-gtm-click-label="user-tags"> オープンソース <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AB%E3%83%A1%E3%83%A9/" data-gtm-click-label="user-tags"> カメラ <span class="count">(56)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AB%E3%83%AB%E3%83%88/" data-gtm-click-label="user-tags"> カルト <span class="count">(184)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> ガジェット <span class="count">(77)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AE%E3%83%AA%E3%82%B7%E3%83%A3/" data-gtm-click-label="user-tags"> ギリシャ <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89/" data-gtm-click-label="user-tags"> クラウド <span class="count">(75)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%83%89/" data-gtm-click-label="user-tags"> クレジットカード <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B2%E3%83%BC%E3%83%A0/" data-gtm-click-label="user-tags"> ゲーム <span class="count">(654)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3/" data-gtm-click-label="user-tags"> コミュニケーション <span class="count">(106)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A/" data-gtm-click-label="user-tags"> コンテナ <span class="count">(57)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9/" data-gtm-click-label="user-tags"> コンパイラ <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B5%E3%83%83%E3%82%AB%E3%83%BC/" data-gtm-click-label="user-tags"> サッカー <span class="count">(98)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC/" data-gtm-click-label="user-tags"> サーバー <span class="count">(79)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9/" data-gtm-click-label="user-tags"> サービス <span class="count">(63)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0/" data-gtm-click-label="user-tags"> システム <span class="count">(206)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA/" data-gtm-click-label="user-tags"> システム開発 <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B7%E3%83%AA%E3%82%A2/" data-gtm-click-label="user-tags"> シリア <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B9%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%87%E3%83%B3/" data-gtm-click-label="user-tags"> スウェーデン <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84/" data-gtm-click-label="user-tags"> スポーツ <span class="count">(152)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B9%E3%83%9E%E3%83%9B/" data-gtm-click-label="user-tags"> スマホ <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%B3/" data-gtm-click-label="user-tags"> スマートフォン <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3/" data-gtm-click-label="user-tags"> セキュリティ <span class="count">(128)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/" data-gtm-click-label="user-tags"> ソフトウェア <span class="count">(63)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%81%E3%83%99%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> チベット <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%84%E3%83%BC%E3%83%AB/" data-gtm-click-label="user-tags"> ツール <span class="count">(74)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%86%E3%82%B9%E3%83%88/" data-gtm-click-label="user-tags"> テスト <span class="count">(106)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%86%E3%83%AC%E3%83%93/" data-gtm-click-label="user-tags"> テレビ <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%86%E3%83%AD/" data-gtm-click-label="user-tags"> テロ <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4/" data-gtm-click-label="user-tags"> ディスプレイ <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3/" data-gtm-click-label="user-tags"> デザイン <span class="count">(84)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9/" data-gtm-click-label="user-tags"> デバイス <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%83%BC%E3%82%BF/" data-gtm-click-label="user-tags"> データ <span class="count">(125)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9/" data-gtm-click-label="user-tags"> データベース <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90/" data-gtm-click-label="user-tags"> データ分析 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB/" data-gtm-click-label="user-tags"> トラブル <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%88%E3%83%AB%E3%82%B3/" data-gtm-click-label="user-tags"> トルコ <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%88%E3%83%B3%E3%83%87%E3%83%A2/" data-gtm-click-label="user-tags"> トンデモ <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%89%E3%82%A4%E3%83%84/" data-gtm-click-label="user-tags"> ドイツ <span class="count">(139)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%89%E3%83%A9%E3%83%9E/" data-gtm-click-label="user-tags"> ドラマ <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E5%8B%95%E7%94%BB/" data-gtm-click-label="user-tags"> ニコニコ動画 <span class="count">(157)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8B%E3%82%BB%E5%8C%BB%E7%99%82/" data-gtm-click-label="user-tags"> ニセ医療 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8B%E3%82%BB%E7%A7%91%E5%AD%A6/" data-gtm-click-label="user-tags"> ニセ科学 <span class="count">(52)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/" data-gtm-click-label="user-tags"> ニュース <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8D%E3%82%BF/" data-gtm-click-label="user-tags"> ネタ <span class="count">(890)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8D%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> ネット <span class="count">(79)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF/" data-gtm-click-label="user-tags"> ネットワーク <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2/" data-gtm-click-label="user-tags"> ハードウェア <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%90%E3%83%83%E3%83%86%E3%83%AA%E3%83%BC/" data-gtm-click-label="user-tags"> バッテリー <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> パフォーマンス <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9/" data-gtm-click-label="user-tags"> ビジネス <span class="count">(496)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%95%E3%82%A1%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3/" data-gtm-click-label="user-tags"> ファッション <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88/" data-gtm-click-label="user-tags"> フォント <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%B9/" data-gtm-click-label="user-tags"> フランス <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88/" data-gtm-click-label="user-tags"> フリーソフト <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9/" data-gtm-click-label="user-tags"> フリーランス <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> フレームワーク <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> フロントエンド <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6/" data-gtm-click-label="user-tags"> ブラウザ <span class="count">(52)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF/" data-gtm-click-label="user-tags"> ブラック <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF%E4%BC%81%E6%A5%AD/" data-gtm-click-label="user-tags"> ブラック企業 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3/" data-gtm-click-label="user-tags"> ブロックチェーン <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> プログラミング <span class="count">(271)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/" data-gtm-click-label="user-tags"> プログラミング言語 <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/" data-gtm-click-label="user-tags"> プロジェクト <span class="count">(42)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%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="user-tags"> プロジェクト管理 <span class="count">(42)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%97%E3%83%AD%E3%83%AC%E3%82%B9/" data-gtm-click-label="user-tags"> プロレス <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%99%E3%83%88%E3%83%8A%E3%83%A0/" data-gtm-click-label="user-tags"> ベトナム <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC/" data-gtm-click-label="user-tags"> ベンチャー <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%9B%E3%83%A1%E3%82%AA%E3%83%91%E3%82%B7%E3%83%BC/" data-gtm-click-label="user-tags"> ホメオパシー <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%9E%E3%82%A4%E3%83%8A%E3%83%B3%E3%83%90%E3%83%BC/" data-gtm-click-label="user-tags"> マイナンバー <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%9E%E3%82%B9%E3%82%B3%E3%83%9F/" data-gtm-click-label="user-tags"> マスコミ <span class="count">(138)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88/" data-gtm-click-label="user-tags"> マネジメント <span class="count">(53)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%9E%E3%83%B3%E3%82%AC/" data-gtm-click-label="user-tags"> マンガ <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2/" data-gtm-click-label="user-tags"> メディア <span class="count">(130)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB/" data-gtm-click-label="user-tags"> メンタル <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%98%E3%83%AB%E3%82%B9/" data-gtm-click-label="user-tags"> メンタルヘルス <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB/" data-gtm-click-label="user-tags"> モバイル <span class="count">(56)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A9%E3%82%A4%E3%83%88%E3%83%8E%E3%83%99%E3%83%AB/" data-gtm-click-label="user-tags"> ライトノベル <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/" data-gtm-click-label="user-tags"> ライブラリ <span class="count">(54)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%AC%E3%82%B7%E3%83%94/" data-gtm-click-label="user-tags"> レシピ <span class="count">(262)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC/" data-gtm-click-label="user-tags"> レビュー <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%AD%E3%82%B7%E3%82%A2/" data-gtm-click-label="user-tags"> ロシア <span class="count">(407)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E3%83%AD%E3%83%9C%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> ロボット <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%B8%8D%E5%8B%95%E7%94%A3/" data-gtm-click-label="user-tags"> 不動産 <span class="count">(232)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%B8%AD%E5%9B%BD/" data-gtm-click-label="user-tags"> 中国 <span class="count">(748)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%B8%AD%E5%A4%AE%E9%8A%80%E8%A1%8C/" data-gtm-click-label="user-tags"> 中央銀行 <span class="count">(163)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%B8%AD%E6%9D%B1/" data-gtm-click-label="user-tags"> 中東 <span class="count">(80)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%8B%E4%BB%B6/" data-gtm-click-label="user-tags"> 事件 <span class="count">(562)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%8B%E6%95%85/" data-gtm-click-label="user-tags"> 事故 <span class="count">(146)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%8B%E6%A5%AD/" data-gtm-click-label="user-tags"> 事業 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%A4%E9%80%9A/" data-gtm-click-label="user-tags"> 交通 <span class="count">(129)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E4%BA%8B/" data-gtm-click-label="user-tags"> 人事 <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E5%8F%A3/" data-gtm-click-label="user-tags"> 人口 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD/" data-gtm-click-label="user-tags"> 人工知能 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E6%9D%90/" data-gtm-click-label="user-tags"> 人材 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E6%A8%A9/" data-gtm-click-label="user-tags"> 人権 <span class="count">(150)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E7%89%A9/" data-gtm-click-label="user-tags"> 人物 <span class="count">(79)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BA%BA%E7%94%9F/" data-gtm-click-label="user-tags"> 人生 <span class="count">(271)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BB%8B%E8%AD%B7/" data-gtm-click-label="user-tags"> 介護 <span class="count">(65)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BB%8F%E6%95%99/" data-gtm-click-label="user-tags"> 仏教 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BB%95%E4%BA%8B/" data-gtm-click-label="user-tags"> 仕事 <span class="count">(513)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BB%AE%E6%83%B3%E9%80%9A%E8%B2%A8/" data-gtm-click-label="user-tags"> 仮想通貨 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BC%81%E6%A5%AD/" data-gtm-click-label="user-tags"> 企業 <span class="count">(253)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BC%9A%E7%A4%BE/" data-gtm-click-label="user-tags"> 会社 <span class="count">(78)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BC%9A%E8%A8%88/" data-gtm-click-label="user-tags"> 会計 <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BD%8F%E5%AE%85/" data-gtm-click-label="user-tags"> 住宅 <span class="count">(96)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E4%BF%9D%E9%99%BA/" data-gtm-click-label="user-tags"> 保険 <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%81%A5%E5%BA%B7/" data-gtm-click-label="user-tags"> 健康 <span class="count">(135)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%86%99%E7%9C%9F/" data-gtm-click-label="user-tags"> 写真 <span class="count">(65)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%87%BA%E7%89%88/" data-gtm-click-label="user-tags"> 出版 <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8A%B4%E5%83%8D/" data-gtm-click-label="user-tags"> 労働 <span class="count">(1065)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8A%B4%E5%83%8D%E7%B5%84%E5%90%88/" data-gtm-click-label="user-tags"> 労働組合 <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8B%95%E7%89%A9/" data-gtm-click-label="user-tags"> 動物 <span class="count">(83)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8B%95%E7%94%BB/" data-gtm-click-label="user-tags"> 動画 <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8C%96%E5%AD%A6/" data-gtm-click-label="user-tags"> 化学 <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8C%97%E6%9C%9D%E9%AE%AE/" data-gtm-click-label="user-tags"> 北朝鮮 <span class="count">(74)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8C%BB%E7%99%82/" data-gtm-click-label="user-tags"> 医療 <span class="count">(925)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8D%8A%E5%B0%8E%E4%BD%93/" data-gtm-click-label="user-tags"> 半導体 <span class="count">(112)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8E%9F%E5%AD%90%E5%8A%9B/" data-gtm-click-label="user-tags"> 原子力 <span class="count">(80)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8E%9F%E7%99%BA/" data-gtm-click-label="user-tags"> 原発 <span class="count">(552)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8F%B0%E6%B9%BE/" data-gtm-click-label="user-tags"> 台湾 <span class="count">(51)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%8F%B8%E6%B3%95/" data-gtm-click-label="user-tags"> 司法 <span class="count">(140)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%90%8C%E4%BA%BA/" data-gtm-click-label="user-tags"> 同人 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%95%86%E5%93%81/" data-gtm-click-label="user-tags"> 商品 <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%96%B6%E6%A5%AD/" data-gtm-click-label="user-tags"> 営業 <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9B%B3%E6%9B%B8%E9%A4%A8/" data-gtm-click-label="user-tags"> 図書館 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9B%BD%E5%82%B5/" data-gtm-click-label="user-tags"> 国債 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9B%BD%E9%9A%9B/" data-gtm-click-label="user-tags"> 国際 <span class="count">(600)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E4%B8%AD%E7%86%B1/" data-gtm-click-label="user-tags"> 地中熱 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E5%9B%B3/" data-gtm-click-label="user-tags"> 地図 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E6%96%B9/" data-gtm-click-label="user-tags"> 地方 <span class="count">(148)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E7%86%B1/" data-gtm-click-label="user-tags"> 地熱 <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E7%86%B1%E7%99%BA%E9%9B%BB/" data-gtm-click-label="user-tags"> 地熱発電 <span class="count">(104)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E7%90%86/" data-gtm-click-label="user-tags"> 地理 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%9C%B0%E9%9C%87/" data-gtm-click-label="user-tags"> 地震 <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A0%B1%E9%81%93/" data-gtm-click-label="user-tags"> 報道 <span class="count">(61)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A2%97%E7%94%B0/" data-gtm-click-label="user-tags"> 増田 <span class="count">(550)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A4%96%E4%BA%A4/" data-gtm-click-label="user-tags"> 外交 <span class="count">(266)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A4%A7%E5%AD%A6/" data-gtm-click-label="user-tags"> 大学 <span class="count">(145)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A4%A7%E9%98%AA/" data-gtm-click-label="user-tags"> 大阪 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A4%AA%E9%99%BD%E5%85%89%E7%99%BA%E9%9B%BB/" data-gtm-click-label="user-tags"> 太陽光発電 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%A5%91%E7%B4%84/" data-gtm-click-label="user-tags"> 契約 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AD%90%E3%81%A9%E3%82%82/" data-gtm-click-label="user-tags"> 子ども <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AD%90%E4%BE%9B/" data-gtm-click-label="user-tags"> 子供 <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AD%90%E8%82%B2%E3%81%A6/" data-gtm-click-label="user-tags"> 子育て <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AD%A6%E7%BF%92/" data-gtm-click-label="user-tags"> 学習 <span class="count">(65)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%87%E5%AE%99/" data-gtm-click-label="user-tags"> 宇宙 <span class="count">(68)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%87%E5%AE%99%E9%96%8B%E7%99%BA/" data-gtm-click-label="user-tags"> 宇宙開発 <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%89%E5%85%A8%E4%BF%9D%E9%9A%9C/" data-gtm-click-label="user-tags"> 安全保障 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%97%E6%95%99/" data-gtm-click-label="user-tags"> 宗教 <span class="count">(197)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%9F%E9%A8%93/" data-gtm-click-label="user-tags"> 実験 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%B6%E5%BA%AD/" data-gtm-click-label="user-tags"> 家庭 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%B6%E6%97%8F/" data-gtm-click-label="user-tags"> 家族 <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%AE%B6%E9%9B%BB/" data-gtm-click-label="user-tags"> 家電 <span class="count">(126)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B0%86%E6%A3%8B/" data-gtm-click-label="user-tags"> 将棋 <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B0%8F%E8%AA%AC/" data-gtm-click-label="user-tags"> 小説 <span class="count">(54)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B0%91%E5%AD%90%E5%8C%96/" data-gtm-click-label="user-tags"> 少子化 <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B1%B1%E5%BD%A2/" data-gtm-click-label="user-tags"> 山形 <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B7%AE%E5%88%A5/" data-gtm-click-label="user-tags"> 差別 <span class="count">(134)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%B9%B4%E9%87%91/" data-gtm-click-label="user-tags"> 年金 <span class="count">(67)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BA%83%E5%91%8A/" data-gtm-click-label="user-tags"> 広告 <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BB%BA%E7%AF%89/" data-gtm-click-label="user-tags"> 建築 <span class="count">(102)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BB%BA%E8%A8%AD/" data-gtm-click-label="user-tags"> 建設 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BE%8C%E3%81%A7/" data-gtm-click-label="user-tags"> 後で <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BE%93%E8%BB%8D%E6%85%B0%E5%AE%89%E5%A9%A6/" data-gtm-click-label="user-tags"> 従軍慰安婦 <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E5%BF%83%E7%90%86/" data-gtm-click-label="user-tags"> 心理 <span class="count">(109)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%80%9D%E6%83%B3/" data-gtm-click-label="user-tags"> 思想 <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%80%A7/" data-gtm-click-label="user-tags"> 性 <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%83%85%E5%A0%B1/" data-gtm-click-label="user-tags"> 情報 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%85%B0%E5%AE%89%E5%A9%A6%E5%95%8F%E9%A1%8C/" data-gtm-click-label="user-tags"> 慰安婦問題 <span class="count">(57)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%86%B2%E6%B3%95/" data-gtm-click-label="user-tags"> 憲法 <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%88%A6%E4%BA%89/" data-gtm-click-label="user-tags"> 戦争 <span class="count">(254)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%8A%80%E8%A1%93/" data-gtm-click-label="user-tags"> 技術 <span class="count">(223)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%8A%95%E8%B3%87/" data-gtm-click-label="user-tags"> 投資 <span class="count">(169)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%8E%A1%E7%94%A8/" data-gtm-click-label="user-tags"> 採用 <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%8F%89%E3%82%81%E4%BA%8B/" data-gtm-click-label="user-tags"> 揉め事 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%90%BA%E5%B8%AF/" data-gtm-click-label="user-tags"> 携帯 <span class="count">(89)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%94%BE%E5%B0%84%E8%83%BD/" data-gtm-click-label="user-tags"> 放射能 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%94%BE%E9%80%81/" data-gtm-click-label="user-tags"> 放送 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%94%BF%E5%BA%9C/" data-gtm-click-label="user-tags"> 政府 <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%94%BF%E6%B2%BB/" data-gtm-click-label="user-tags"> 政治 <span class="count">(2271)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%94%BF%E7%AD%96/" data-gtm-click-label="user-tags"> 政策 <span class="count">(66)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%95%99%E8%82%B2/" data-gtm-click-label="user-tags"> 教育 <span class="count">(498)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%95%B0%E5%AD%A6/" data-gtm-click-label="user-tags"> 数学 <span class="count">(116)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%96%87%E5%8C%96/" data-gtm-click-label="user-tags"> 文化 <span class="count">(170)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%96%87%E5%AD%A6/" data-gtm-click-label="user-tags"> 文学 <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%96%87%E6%88%BF%E5%85%B7/" data-gtm-click-label="user-tags"> 文房具 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%96%87%E7%AB%A0/" data-gtm-click-label="user-tags"> 文章 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%96%99%E7%90%86/" data-gtm-click-label="user-tags"> 料理 <span class="count">(219)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%97%85/" data-gtm-click-label="user-tags"> 旅 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%97%85%E8%A1%8C/" data-gtm-click-label="user-tags"> 旅行 <span class="count">(86)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%97%A5%E6%9C%AC/" data-gtm-click-label="user-tags"> 日本 <span class="count">(204)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%97%A5%E9%8A%80/" data-gtm-click-label="user-tags"> 日銀 <span class="count">(324)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%98%A0%E5%83%8F/" data-gtm-click-label="user-tags"> 映像 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%98%A0%E7%94%BB/" data-gtm-click-label="user-tags"> 映画 <span class="count">(250)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9B%B8%E7%B1%8D/" data-gtm-click-label="user-tags"> 書籍 <span class="count">(103)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9B%B8%E8%A9%95/" data-gtm-click-label="user-tags"> 書評 <span class="count">(122)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9C%80%E9%81%A9%E5%8C%96/" data-gtm-click-label="user-tags"> 最適化 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9C%AC/" data-gtm-click-label="user-tags"> 本 <span class="count">(62)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9D%B1%E6%97%A5%E6%9C%AC%E5%A4%A7%E9%9C%87%E7%81%BD/" data-gtm-click-label="user-tags"> 東日本大震災 <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9D%B1%E9%9B%BB/" data-gtm-click-label="user-tags"> 東電 <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%9E%97%E6%A5%AD/" data-gtm-click-label="user-tags"> 林業 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%A0%BC%E5%B7%AE/" data-gtm-click-label="user-tags"> 格差 <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%A8%AA%E6%B5%9C/" data-gtm-click-label="user-tags"> 横浜 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92/" data-gtm-click-label="user-tags"> 機械学習 <span class="count">(309)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%AC%A7%E5%B7%9E/" data-gtm-click-label="user-tags"> 欧州 <span class="count">(70)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/" data-gtm-click-label="user-tags"> 正規表現 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%AD%AF%E7%A7%91/" data-gtm-click-label="user-tags"> 歯科 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%AD%B4%E5%8F%B2/" data-gtm-click-label="user-tags"> 歴史 <span class="count">(524)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%AD%B4%E5%8F%B2%E4%BF%AE%E6%AD%A3%E4%B8%BB%E7%BE%A9/" data-gtm-click-label="user-tags"> 歴史修正主義 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B0%97%E8%B1%A1/" data-gtm-click-label="user-tags"> 気象 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B1%BA%E6%B8%88/" data-gtm-click-label="user-tags"> 決済 <span class="count">(100)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B2%96%E7%B8%84/" data-gtm-click-label="user-tags"> 沖縄 <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B3%95%E5%BE%8B/" data-gtm-click-label="user-tags"> 法律 <span class="count">(76)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B5%B7%E5%A4%96/" data-gtm-click-label="user-tags"> 海外 <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B5%B7%E5%A4%96%E3%81%AE%E5%8F%8D%E5%BF%9C/" data-gtm-click-label="user-tags"> 海外の反応 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92/" data-gtm-click-label="user-tags"> 深層学習 <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%BC%81%E6%A5%AD/" data-gtm-click-label="user-tags"> 漁業 <span class="count">(69)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E6%BC%AB%E7%94%BB/" data-gtm-click-label="user-tags"> 漫画 <span class="count">(352)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%81%BD%E5%AE%B3/" data-gtm-click-label="user-tags"> 災害 <span class="count">(97)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%82%8E%E4%B8%8A/" data-gtm-click-label="user-tags"> 炎上 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%82%BA%E6%9B%BF/" data-gtm-click-label="user-tags"> 為替 <span class="count">(92)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%84%A1%E7%B7%9A/" data-gtm-click-label="user-tags"> 無線 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%89%A9%E6%B5%81/" data-gtm-click-label="user-tags"> 物流 <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%89%A9%E7%90%86/" data-gtm-click-label="user-tags"> 物理 <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%89%B9%E8%A8%B1/" data-gtm-click-label="user-tags"> 特許 <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%8A%AF%E7%BD%AA/" data-gtm-click-label="user-tags"> 犯罪 <span class="count">(143)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%8C%AB/" data-gtm-click-label="user-tags"> 猫 <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%92%B0%E5%A2%83/" data-gtm-click-label="user-tags"> 環境 <span class="count">(170)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%9F%E6%B4%BB/" data-gtm-click-label="user-tags"> 生活 <span class="count">(213)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%9F%E7%89%A9/" data-gtm-click-label="user-tags"> 生物 <span class="count">(63)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%9F%E7%94%A3%E6%80%A7/" data-gtm-click-label="user-tags"> 生産性 <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%A3%E6%A5%AD/" data-gtm-click-label="user-tags"> 産業 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%BB%E5%83%8F/" data-gtm-click-label="user-tags"> 画像 <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86/" data-gtm-click-label="user-tags"> 画像処理 <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%9A%87%E5%AE%A4/" data-gtm-click-label="user-tags"> 皇室 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%9B%A3%E8%A6%96/" data-gtm-click-label="user-tags"> 監視 <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A0%94%E7%A9%B6/" data-gtm-click-label="user-tags"> 研究 <span class="count">(402)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A4%BE%E4%BC%9A/" data-gtm-click-label="user-tags"> 社会 <span class="count">(1920)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A4%BE%E4%BC%9A%E4%BF%9D%E9%9A%9C/" data-gtm-click-label="user-tags"> 社会保障 <span class="count">(48)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A6%8F%E7%A5%89/" data-gtm-click-label="user-tags"> 福祉 <span class="count">(100)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A7%91%E5%AD%A6/" data-gtm-click-label="user-tags"> 科学 <span class="count">(212)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A8%8E/" data-gtm-click-label="user-tags"> 税 <span class="count">(120)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A8%8E%E5%88%B6/" data-gtm-click-label="user-tags"> 税制 <span class="count">(194)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%A8%8E%E9%87%91/" data-gtm-click-label="user-tags"> 税金 <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%AE%A1%E7%90%86/" data-gtm-click-label="user-tags"> 管理 <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B1%B3%E5%9B%BD/" data-gtm-click-label="user-tags"> 米国 <span class="count">(215)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B2%BE%E7%A5%9E/" data-gtm-click-label="user-tags"> 精神 <span class="count">(59)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B4%A0%E6%9D%90/" data-gtm-click-label="user-tags"> 素材 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF/" data-gtm-click-label="user-tags"> 組み込み <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%84%E7%B9%94/" data-gtm-click-label="user-tags"> 組織 <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%8C%E5%96%B6/" data-gtm-click-label="user-tags"> 経営 <span class="count">(91)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%8C%E6%B8%88/" data-gtm-click-label="user-tags"> 経済 <span class="count">(1994)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%8C%E6%B8%88%E5%AD%A6/" data-gtm-click-label="user-tags"> 経済学 <span class="count">(364)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%B1%E8%A8%88/" data-gtm-click-label="user-tags"> 統計 <span class="count">(131)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E7%B5%B1%E8%A8%88%E5%AD%A6/" data-gtm-click-label="user-tags"> 統計学 <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%82%B2%E5%85%90/" data-gtm-click-label="user-tags"> 育児 <span class="count">(75)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%84%B3/" data-gtm-click-label="user-tags"> 脳 <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%87%AA%E5%8B%95%E8%BB%8A/" data-gtm-click-label="user-tags"> 自動車 <span class="count">(213)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%87%AA%E5%8B%95%E9%81%8B%E8%BB%A2/" data-gtm-click-label="user-tags"> 自動運転 <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%87%AA%E6%B2%BB%E4%BD%93/" data-gtm-click-label="user-tags"> 自治体 <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86/" data-gtm-click-label="user-tags"> 自然言語処理 <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%87%AA%E8%A1%9B%E9%9A%8A/" data-gtm-click-label="user-tags"> 自衛隊 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%88%AA%E7%A9%BA/" data-gtm-click-label="user-tags"> 航空 <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%88%B9/" data-gtm-click-label="user-tags"> 船 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%8A%B8%E8%83%BD/" data-gtm-click-label="user-tags"> 芸能 <span class="count">(211)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%8A%B8%E8%A1%93/" data-gtm-click-label="user-tags"> 芸術 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%8B%B1%E5%9B%BD/" data-gtm-click-label="user-tags"> 英国 <span class="count">(48)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%8B%B1%E8%AA%9E/" data-gtm-click-label="user-tags"> 英語 <span class="count">(73)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%91%97%E4%BD%9C%E6%A8%A9/" data-gtm-click-label="user-tags"> 著作権 <span class="count">(68)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%99%90%E6%AE%BA/" data-gtm-click-label="user-tags"> 虐殺 <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A1%8C%E6%94%BF/" data-gtm-click-label="user-tags"> 行政 <span class="count">(838)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A1%A8%E7%8F%BE/" data-gtm-click-label="user-tags"> 表現 <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A3%81%E5%88%A4/" data-gtm-click-label="user-tags"> 裁判 <span class="count">(73)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A3%BD%E5%93%81/" data-gtm-click-label="user-tags"> 製品 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A3%BD%E9%80%A0/" data-gtm-click-label="user-tags"> 製造 <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A6%8F%E5%88%B6/" data-gtm-click-label="user-tags"> 規制 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A6%8F%E6%A0%BC/" data-gtm-click-label="user-tags"> 規格 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A6%B3%E5%85%89/" data-gtm-click-label="user-tags"> 観光 <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A8%80%E8%91%89/" data-gtm-click-label="user-tags"> 言葉 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A8%80%E8%AA%9E/" data-gtm-click-label="user-tags"> 言語 <span class="count">(60)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A8%AD%E8%A8%88/" data-gtm-click-label="user-tags"> 設計 <span class="count">(200)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%A8%B4%E8%A8%9F/" data-gtm-click-label="user-tags"> 訴訟 <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AA%8D%E8%A8%BC/" data-gtm-click-label="user-tags"> 認証 <span class="count">(96)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AA%AD%E3%81%BF%E7%89%A9/" data-gtm-click-label="user-tags"> 読み物 <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AA%BF%E6%9F%BB/" data-gtm-click-label="user-tags"> 調査 <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AB%96%E6%96%87/" data-gtm-click-label="user-tags"> 論文 <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AB%9C%E5%A0%B1/" data-gtm-click-label="user-tags"> 諜報 <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AD%A6%E5%AF%9F/" data-gtm-click-label="user-tags"> 警察 <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%AD%B0%E8%AB%96/" data-gtm-click-label="user-tags"> 議論 <span class="count">(50)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%B2%A1%E6%94%BF/" data-gtm-click-label="user-tags"> 財政 <span class="count">(100)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%B2%A7%E5%9B%B0/" data-gtm-click-label="user-tags"> 貧困 <span class="count">(66)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%B2%BF%E6%98%93/" data-gtm-click-label="user-tags"> 貿易 <span class="count">(93)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%B3%87%E6%96%99/" data-gtm-click-label="user-tags"> 資料 <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%B3%87%E6%BA%90/" data-gtm-click-label="user-tags"> 資源 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%BB%8A/" data-gtm-click-label="user-tags"> 車 <span class="count">(85)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%BB%8D%E4%BA%8B/" data-gtm-click-label="user-tags"> 軍事 <span class="count">(503)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E8%BE%B2%E6%A5%AD/" data-gtm-click-label="user-tags"> 農業 <span class="count">(195)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%80%9A%E4%BF%A1/" data-gtm-click-label="user-tags"> 通信 <span class="count">(97)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%80%9A%E8%B2%A8/" data-gtm-click-label="user-tags"> 通貨 <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%81%8B%E7%94%A8/" data-gtm-click-label="user-tags"> 運用 <span class="count">(93)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%81%93%E5%85%B7/" data-gtm-click-label="user-tags"> 道具 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%81%B8%E6%8C%99/" data-gtm-click-label="user-tags"> 選挙 <span class="count">(173)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%83%B5%E6%94%BF/" data-gtm-click-label="user-tags"> 郵政 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%83%BD%E5%B8%82/" data-gtm-click-label="user-tags"> 都市 <span class="count">(56)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%85%92/" data-gtm-click-label="user-tags"> 酒 <span class="count">(77)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%87%8E%E7%90%83/" data-gtm-click-label="user-tags"> 野球 <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%87%91%E8%9E%8D/" data-gtm-click-label="user-tags"> 金融 <span class="count">(559)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%87%91%E8%9E%8D%E6%94%BF%E7%AD%96/" data-gtm-click-label="user-tags"> 金融政策 <span class="count">(184)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%89%84%E9%81%93/" data-gtm-click-label="user-tags"> 鉄道 <span class="count">(63)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%8A%80%E8%A1%8C/" data-gtm-click-label="user-tags"> 銀行 <span class="count">(74)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%96%8B%E7%99%BA/" data-gtm-click-label="user-tags"> 開発 <span class="count">(493)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9A%9C%E5%AE%B3/" data-gtm-click-label="user-tags"> 障害 <span class="count">(100)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%87%E7%94%A8/" data-gtm-click-label="user-tags"> 雇用 <span class="count">(106)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%A3%E6%B0%91/" data-gtm-click-label="user-tags"> 難民 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E5%8A%9B/" data-gtm-click-label="user-tags"> 電力 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E5%8A%9B%E4%BC%9A%E7%A4%BE/" data-gtm-click-label="user-tags"> 電力会社 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E5%AD%90/" data-gtm-click-label="user-tags"> 電子 <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/" data-gtm-click-label="user-tags"> 電子工作 <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E5%AD%90%E6%9B%B8%E7%B1%8D/" data-gtm-click-label="user-tags"> 電子書籍 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E6%B0%97/" data-gtm-click-label="user-tags"> 電気 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9B%BB%E8%A9%B1/" data-gtm-click-label="user-tags"> 電話 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9F%93%E5%9B%BD/" data-gtm-click-label="user-tags"> 韓国 <span class="count">(186)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%9F%B3%E6%A5%BD/" data-gtm-click-label="user-tags"> 音楽 <span class="count">(173)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%A0%98%E5%9C%9F/" data-gtm-click-label="user-tags"> 領土 <span class="count">(70)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%A3%9F/" data-gtm-click-label="user-tags"> 食 <span class="count">(625)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%A3%9F%E5%93%81/" data-gtm-click-label="user-tags"> 食品 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/R2M/%E9%A6%99%E6%B8%AF/" data-gtm-click-label="user-tags"> 香港 <span class="count">(18)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E6%94%BF%E6%B2%BB/" data-gtm-click-label="user-tags"> 政治 <span class="count">(2271)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E7%B5%8C%E6%B8%88/" data-gtm-click-label="user-tags"> 経済 <span class="count">(1994)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E7%A4%BE%E4%BC%9A/" data-gtm-click-label="user-tags"> 社会 <span class="count">(1920)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E5%8A%B4%E5%83%8D/" data-gtm-click-label="user-tags"> 労働 <span class="count">(1065)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E5%8C%BB%E7%99%82/" data-gtm-click-label="user-tags"> 医療 <span class="count">(925)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E3%83%8D%E3%82%BF/" data-gtm-click-label="user-tags"> ネタ <span class="count">(890)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E8%A1%8C%E6%94%BF/" data-gtm-click-label="user-tags"> 行政 <span class="count">(838)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E4%B8%AD%E5%9B%BD/" data-gtm-click-label="user-tags"> 中国 <span class="count">(748)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E3%82%B2%E3%83%BC%E3%83%A0/" data-gtm-click-label="user-tags"> ゲーム <span class="count">(654)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/R2M/%E9%A3%9F/" data-gtm-click-label="user-tags"> 食 <span class="count">(625)</span> </a> </li> </ul> <p class="centerarticle-sub-navi-more"> <button type="button" class="js-display-all-tags" data-gtm-click-label="user-tags-show-all">タグをすべて表示</button> </p> </div> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">関連タグで絞り込む (90)</h3> <ul class="centerarticle-sub-navi"> <li> <a href="/R2M/web/.net/" > .net </a> </li> <li> <a href="/R2M/web/3D/" > 3D </a> </li> <li> <a href="/R2M/web/ad/" > ad </a> </li> <li> <a href="/R2M/web/API/" > API </a> </li> <li> <a href="/R2M/web/ASP.NET/" > ASP.NET </a> </li> <li> <a href="/R2M/web/asp.net/" > asp.net </a> </li> <li> <a href="/R2M/web/aws/" > aws </a> </li> <li> <a href="/R2M/web/cdn/" > cdn </a> </li> <li> <a href="/R2M/web/Chrome/" > Chrome </a> </li> <li> <a href="/R2M/web/ci/" > ci </a> </li> <li> <a href="/R2M/web/CMS/" > CMS </a> </li> <li> <a href="/R2M/web/Cookie/" > Cookie </a> </li> <li> <a href="/R2M/web/css/" > css </a> </li> <li> <a href="/R2M/web/database/" > database </a> </li> <li> <a href="/R2M/web/development/" > development </a> </li> <li> <a href="/R2M/web/docker/" > docker </a> </li> <li> <a href="/R2M/web/e2e/" > e2e </a> </li> <li> <a href="/R2M/web/EC/" > EC </a> </li> <li> <a href="/R2M/web/Framework/" > Framework </a> </li> <li> <a href="/R2M/web/go/" > go </a> </li> <li> <a href="/R2M/web/Google/" > Google </a> </li> <li> <a href="/R2M/web/GPU/" > GPU </a> </li> <li> <a href="/R2M/web/HTML/" > HTML </a> </li> <li> <a href="/R2M/web/http/" > http </a> </li> <li> <a href="/R2M/web/IIS/" > IIS </a> </li> <li> <a href="/R2M/web/java/" > java </a> </li> <li> <a href="/R2M/web/javascript/" > javascript </a> </li> <li> <a href="/R2M/web/MVC/" > MVC </a> </li> <li> <a href="/R2M/web/network/" > network </a> </li> <li> <a href="/R2M/web/OAuth/" > OAuth </a> </li> <li> <a href="/R2M/web/openID/" > openID </a> </li> <li> <a href="/R2M/web/performance/" > performance </a> </li> <li> <a href="/R2M/web/programming/" > programming </a> </li> <li> <a href="/R2M/web/pwa/" > pwa </a> </li> <li> <a href="/R2M/web/PWA/" > PWA </a> </li> <li> <a href="/R2M/web/python/" > python </a> </li> <li> <a href="/R2M/web/react/" > react </a> </li> <li> <a href="/R2M/web/Ruby/" > Ruby </a> </li> <li> <a href="/R2M/web/rust/" > rust </a> </li> <li> <a href="/R2M/web/security/" > security </a> </li> <li> <a href="/R2M/web/SRE/" > SRE </a> </li> <li> <a href="/R2M/web/Svelte/" > Svelte </a> </li> <li> <a href="/R2M/web/tool/" > tool </a> </li> <li> <a href="/R2M/web/TypeScript/" > TypeScript </a> </li> <li> <a href="/R2M/web/UI/" > UI </a> </li> <li> <a href="/R2M/web/UX/" > UX </a> </li> <li> <a href="/R2M/web/WEB/" > WEB </a> </li> <li> <a href="/R2M/web/Web/" > Web </a> </li> <li> <a href="/R2M/web/WebAPI/" > WebAPI </a> </li> <li> <a href="/R2M/web/WebAssembly/" > WebAssembly </a> </li> <li> <a href="/R2M/web/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80/" > あとで読む </a> </li> <li> <a href="/R2M/web/%E3%82%A2%E3%83%97%E3%83%AA/" > アプリ </a> </li> <li> <a href="/R2M/web/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3/" > アーキテクチャ </a> </li> <li> <a href="/R2M/web/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2/" > エンジニア </a> </li> <li> <a href="/R2M/web/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A/" > コンテナ </a> </li> <li> <a href="/R2M/web/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC/" > サーバー </a> </li> <li> <a href="/R2M/web/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AC%E3%82%B9/" > サーバーレス </a> </li> <li> <a href="/R2M/web/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9/" > サービス </a> </li> <li> <a href="/R2M/web/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0/" > システム </a> </li> <li> <a href="/R2M/web/%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0/" > スクレイピング </a> </li> <li> <a href="/R2M/web/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3/" > セキュリティ </a> </li> <li> <a href="/R2M/web/%E3%83%84%E3%83%BC%E3%83%AB/" > ツール </a> </li> <li> <a href="/R2M/web/%E3%83%86%E3%82%B9%E3%83%88/" > テスト </a> </li> <li> <a href="/R2M/web/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3/" > デザイン </a> </li> <li> <a href="/R2M/web/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9/" > データベース </a> </li> <li> <a href="/R2M/web/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E5%8B%95%E7%94%BB/" > ニコニコ動画 </a> </li> <li> <a href="/R2M/web/%E3%83%8D%E3%82%BF/" > ネタ </a> </li> <li> <a href="/R2M/web/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9/" > パフォーマンス </a> </li> <li> <a href="/R2M/web/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9/" > ビジネス </a> </li> <li> <a href="/R2M/web/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF/" > フレームワーク </a> </li> <li> <a href="/R2M/web/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89/" > フロントエンド </a> </li> <li> <a href="/R2M/web/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6/" > ブラウザ </a> </li> <li> <a href="/R2M/web/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/" > プログラミング </a> </li> <li> <a href="/R2M/web/%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2/" > メディア </a> </li> <li> <a href="/R2M/web/%E3%83%A9%E3%82%A4%E3%83%88%E3%83%8E%E3%83%99%E3%83%AB/" > ライトノベル </a> </li> <li> <a href="/R2M/web/%E4%BB%95%E4%BA%8B/" > 仕事 </a> </li> <li> <a href="/R2M/web/%E5%8B%95%E7%94%BB/" > 動画 </a> </li> <li> <a href="/R2M/web/%E6%8A%80%E8%A1%93/" > 技術 </a> </li> <li> <a href="/R2M/web/%E6%95%99%E8%82%B2/" > 教育 </a> </li> <li> <a href="/R2M/web/%E6%95%B0%E5%AD%A6/" > 数学 </a> </li> <li> <a href="/R2M/web/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92/" > 機械学習 </a> </li> <li> <a href="/R2M/web/%E6%AD%B4%E5%8F%B2/" > 歴史 </a> </li> <li> <a href="/R2M/web/%E6%BC%AB%E7%94%BB/" > 漫画 </a> </li> <li> <a href="/R2M/web/%E7%94%BB%E5%83%8F/" > 画像 </a> </li> <li> <a href="/R2M/web/%E7%A4%BE%E4%BC%9A/" > 社会 </a> </li> <li> <a href="/R2M/web/%E8%A1%8C%E6%94%BF/" > 行政 </a> </li> <li> <a href="/R2M/web/%E8%A8%AD%E8%A8%88/" > 設計 </a> </li> <li> <a href="/R2M/web/%E8%AA%8D%E8%A8%BC/" > 認証 </a> </li> <li> <a href="/R2M/web/%E8%AD%B0%E8%AB%96/" > 議論 </a> </li> <li> <a href="/R2M/web/%E9%96%8B%E7%99%BA/" > 開発 </a> </li> </ul> <p class="centerarticle-sub-navi-more"> <a href="/R2M/bookmark">タグの絞り込みを解除</a> </p> </div> </div> <div class="center-container"> <div class="centerarticle-title-container"> <h2 class="centerarticle-title"> webに関するR2Mのブックマーク (187) </h2> </div> <div class="js-user-bookmark-item-autoload-container" data-next-page-path="/R2M/web/?page=2" data-next-xhr-path="/api/users/R2M/bookmarks?tag=web&page=2" data-next-label="次のページ" > <script type="text/x-template" id="template-short-url-click"> {{#tweet_url}} <a href="{{tweet_url}}" target="_blank" rel="noopener noreferrer" data-gtm-click-label="reaction-twitter-clicks"><span>{{count}} clicks</span></a> {{/tweet_url}} {{^tweet_url}} <span>{{count}} clicks</span> {{/tweet_url}} </script> <script type="text/x-template" id="template-bookmark-item"> {{^is_wiped}} <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="{{url}}"> <div class="centerarticle-entry {{#has_image}}is-image-entry-unit{{/has_image}}"> <h3 class="centerarticle-entry-title"> <a href="{{url}}" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener{{#noreferrer}} noreferrer{{/noreferrer}}" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="{{favicon_url}}" alt="">{{title}}</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="{{page_url}}" class="js-keyboard-entry-page-openable" title="{{title}} ({{total_bookmarks}}ブックマーク)" data-gtm-click-label="user-bookmark-users">{{total_bookmarks_with_user_postfix}}</a> </span> </li> <li> <a href="/R2M/{{url_query}}" title="『{{root_title}}』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> {{root_title}} </a> </li> {{#is_categorized}} <li><a href="{{category_path}}" data-gtm-click-label="user-bookmark-category">{{category_title}}</a></li> {{/is_categorized}} </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">{{{summary_with_keyword_links}}}</p> {{#has_image}} <a href="{{canonical_url}}" class="centerarticle-entry-image" target="_blank" rel="noopener{{#noreferrer}} noreferrer{{/noreferrer}}" data-gtm-click-label="user-bookmark-thumb"> <img src="{{image_url}}" alt="{{title}}"> </a> {{/has_image}} </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-{{location_id}}"> <div class="centerarticle-reaction-comment js-user-bookmark-comment {{badge_icon}}" data-url="{{url}}" data-user-name="{{author_name}}"> <a href="{{top_page_path}}" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="{{profile_icon_url}}" alt="{{author_name}}" title="{{author_name}}" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="{{anchor_url}}" class="js-anchor-path" data-gtm-click-label="user-reaction-username">{{author_name}}</a></span> <span class="centerarticle-reaction-timestamp">{{created}}</span> <span class="js-private-icon status {{#is_public}}is-hidden{{/is_public}}"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment">{{{comment_expanded}}}</span> <ul class="centerarticle-reaction-tags js-tag-text"> {{#tags}} <li><a href="/{{author_name}}/{{escaped_label}}/" data-gtm-click-label="user-reaction-tag">{{label}}</a></li> {{/tags}} </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="{{#is_bookmark}}comment-permalink{{/is_bookmark}}{{^is_bookmark}}original-permalink{{/is_bookmark}} js-comment-permalink"> <a href="{{comment_page_path}}" data-gtm-click-label="user-reaction-permalink" rel="{{#should_nofollow}}nofollow{{/should_nofollow}}">{{#is_bookmark}}リスト{{/is_bookmark}}{{^is_bookmark}}リンク{{/is_bookmark}}</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> {{#following_bookmarks}} <li> <a href="{{anchor_url}}" class="following-bookmark-link" data-gtm-click-label="user-bookmark-following-bookmarker-icon"> <img src="{{profile_icon_url}}" alt="{{author_name}}" class="following-bookmark-icon" > </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{author_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> {{/following_bookmarks}} {{#following_bookmarks.length}} <li class="centerarticle-reaction-following-more"><button type="button" class="js-show-all-following-bookmarks" data-gtm-click-label="user-bookmark-showall-following-bookmarks">すべて表示</button></li> {{/following_bookmarks.length}} </ul> <div class="js-user-following-bookmarks-detail is-hidden"> {{#following_bookmarks}} <div class="centerarticle-reaction-comment js-user-bookmark-comment {{badge_icon}}" data-url="{{url}}" data-user-name="{{author_name}}"> <a href="{{top_page_path}}" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="{{profile_icon_url}}" alt="{{author_name}}" title="{{author_name}}" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="{{anchor_url}}" class="js-anchor-path" data-gtm-click-label="user-reaction-username">{{author_name}}</a></span> <span class="centerarticle-reaction-timestamp">{{created}}</span> <span class="js-private-icon status {{#is_public}}is-hidden{{/is_public}}"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment">{{{comment_expanded}}}</span> <ul class="centerarticle-reaction-tags js-tag-text"> {{#tags}} <li><a href="/{{author_name}}/{{escaped_label}}/" data-gtm-click-label="user-reaction-tag">{{label}}</a></li> {{/tags}} </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="{{#is_bookmark}}comment-permalink{{/is_bookmark}}{{^is_bookmark}}original-permalink{{/is_bookmark}} js-comment-permalink"> <a href="{{comment_page_path}}" data-gtm-click-label="user-reaction-permalink" rel="{{#should_nofollow}}nofollow{{/should_nofollow}}">{{#is_bookmark}}リスト{{/is_bookmark}}{{^is_bookmark}}リンク{{/is_bookmark}}</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> {{/following_bookmarks}} </div> </li> {{/is_wiped}} </script> <script type="text/x-template" id="template-following-bookmarker-icon"> <li> <a href="{{anchor_url}}" class="following-bookmark-link" data-gtm-click-label="user-bookmark-following-bookmarker-icon"> <img src="{{profile_icon_url}}" alt="{{author_name}}" class="following-bookmark-icon" > </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{author_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> <script type="text/x-template" id="template-bookmark-item-editor"> <div class="centerarticle-entry {{#has_image}}is-image-entry-unit{{/has_image}}"> <h3 class="centerarticle-entry-title"> <a href="{{url}}" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener{{#noreferrer}} noreferrer{{/noreferrer}}" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="{{favicon_url}}" alt="">{{title}}</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="{{page_url}}" class="js-keyboard-entry-page-openable" title="{{title}} ({{total_bookmarks}}ブックマーク)" data-gtm-click-label="user-bookmark-users">{{total_bookmarks_with_user_postfix}}</a> </span> </li> <li> <a href="/R2M/{{url_query}}" title="『{{root_title}}』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> {{root_title}} </a> </li> {{#is_categorized}} <li><a href="{{category_path}}" data-gtm-click-label="user-bookmark-category">{{category_title}}</a></li> {{/is_categorized}} </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">{{{summary_with_keyword_links}}}</p> {{#has_image}} <a href="{{canonical_url}}" class="centerarticle-entry-image" target="_blank" rel="noopener{{#noreferrer}} noreferrer{{/noreferrer}}" data-gtm-click-label="user-bookmark-thumb"> <img src="{{image_url}}" alt="{{title}}"> </a> {{/has_image}} </div> </div> </script> <script type="text/x-template" id="template-bookmark-pager"> <li> <div class="centerarticle-pager"> <span class="centerarticle-waiting js-read-more-waiting is-hidden"><img src="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/common/loading@2x.gif" alt="残りのブックマークを読み込んでいます" width="16" height="16" /></span> {{#previous}} <a href="{{page_path}}">{{label}}</a> {{/previous}} {{#pages}} {{#page_path}} <span><a href="{{page_path}}">{{label}}</a></span> {{/page_path}} {{^page_path}} <span>{{label}}</span> {{/page_path}} {{/pages}} {{#next}} <a href="{{page_path}}">{{label}}</a> {{/next}} </div> </li> </script> <ul class="js-user-bookmark-item-list js-keyboard-controllable-container"> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://zenn.dev/cybozu_frontend/articles/try-server-sent-events"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/cybozu_frontend/articles/try-server-sent-events" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fcybozu_frontend%2Farticles%2Ftry-server-sent-events" alt="">Server-Sent Events を複数パターンで実装して理解を試みる</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/cybozu_frontend/articles/try-server-sent-events" class="js-keyboard-entry-page-openable" title="Server-Sent Events を複数パターンで実装して理解を試みる (44ブックマーク)" data-gtm-click-label="user-bookmark-users">44 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fzenn.dev%2Fcybozu_frontend" title="『zenn.dev/cybozu_frontend』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/cybozu_frontend </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Server-Sent Events (SSE) 目新しい<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>というわけではありませんが、最近 Server-Sent Events (SSE) について言及する記事をよく見かけます。 何番煎じかはわかりませんが、個人的に興味があることと、正直触ってみたことがなかったので、コードを書きつつ調べてみました。 ※<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>記事で登場するサンプルコードは次のリポジトリで公開しています。 SSE とは SSE 自体を解説する記事は無数に存在するため詳細な説明は割愛しますが、簡単に言うと、サーバーからクライアントへ一方向の Push 通信を行うための仕組みです。 MDN にもページが存在するため、参考になります。 独自プロトコルを必要とせず、HTTP/1.1 でも動作するのも特徴です。 SSE の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%AD%B4%E5%8F%B2">歴史</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/wikipedia">wikipedia</a> に SSE に関するページが存在し、次のような記述があります。 SSE メカニズムは、</p> <a href="https://zenn.dev/cybozu_frontend/articles/try-server-sent-events" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/7d28c487034fa17c1d823869bbf8704ab07278b1/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--hj6Myka1--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AServer-Sent%252520Events%252520%2525E3%252582%252592%2525E8%2525A4%252587%2525E6%252595%2525B0%2525E3%252583%252591%2525E3%252582%2525BF%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252581%2525A7%2525E5%2525AE%25259F%2525E8%2525A3%252585%2525E3%252581%252597%2525E3%252581%2525A6%2525E7%252590%252586%2525E8%2525A7%2525A3%2525E3%252582%252592%2525E8%2525A9%2525A6%2525E3%252581%2525BF%2525E3%252582%25258B%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3Amugi%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2VjOTA1OThlNjEuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3A%2525E3%252582%2525B5%2525E3%252582%2525A4%2525E3%252583%25259C%2525E3%252582%2525A6%2525E3%252582%2525BA%252520%2525E3%252583%252595%2525E3%252583%2525AD%2525E3%252583%2525B3%2525E3%252583%252588%2525E3%252582%2525A8%2525E3%252583%2525B3%2525E3%252583%252589%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2lZS0x0S2tsVUwtM01qTkJ2YU1DWkZxdmFGTWtMVFl2T2pJT29SLVE9czI1MC1j%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Server-Sent Events を複数パターンで実装して理解を試みる"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4755081830867490720"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/cybozu_frontend/articles/try-server-sent-events" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20240619#bookmark-4755081830867490720" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2024/06/19</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4755081830867490720/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://techblog.raccoon.ne.jp/archives/1715040705.html"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://techblog.raccoon.ne.jp/archives/1715040705.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftechblog.raccoon.ne.jp%2Farchives%2F1715040705.html" alt="">Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/techblog.raccoon.ne.jp/archives/1715040705.html" class="js-keyboard-entry-page-openable" title="Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ] (56ブックマーク)" data-gtm-click-label="user-bookmark-users">56 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Ftechblog.raccoon.ne.jp%2F" title="『techblog.raccoon.ne.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> techblog.raccoon.ne.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">こんにちは羽山です。 現代の Webシステム界隈は昔よりもはるかに洗練され、初心者からでも簡単に開発方法を学び作れる時代になっています。その反面で例えば <a data-gtm-click-label="entry-summary-keyword" href="/q/Python">Python</a> なら WSGI や gunicorn、W<a data-gtm-click-label="entry-summary-keyword" href="/q/ai">ai</a>tress、uWSGI などが何のために存在しているのかが分かりにくいと思ったことはありませんか?<a data-gtm-click-label="entry-summary-keyword" href="/q/ruby">Ruby</a> の Rack、unicorn、<a data-gtm-click-label="entry-summary-keyword" href="/q/Puma">puma</a> だったり Fast<a data-gtm-click-label="entry-summary-keyword" href="/q/CG">CG</a>I など、いずれも Webシステムの構成要素として重要な一方で役割を理解しにくいのは事実です。 そこで今回は Webシステムが現代の形にたどり着くまでの先人達の葛藤の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%AD%B4%E5%8F%B2">歴史</a>を解説します。<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%AD%B4%E5%8F%B2">歴史</a>を知ればこれらの仕様やプロダクトが何の役になっているかが分かるはずです。 前提 動的な Webサイト(=Webシステム)を作りたいニーズはインターネット黎明期からありますが、ブラウザからのアクセスを適切に処理するには HTTPサー</p> <a href="https://techblog.raccoon.ne.jp/archives/1715040705.html" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/1de4f7647fc73bd264d932c4bca4a75a967a6b04/height=288;version=1;width=512/https%3A%2F%2Ftechblog.raccoon.ne.jp%2Fwp-content%2Fuploads%2F2024%2F05%2Fcloud-3406627_1280.jpg" alt="Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4753116346414295584"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://techblog.raccoon.ne.jp/archives/1715040705.html" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20240507#bookmark-4753116346414295584" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2024/05/07</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0/" data-gtm-click-label="user-reaction-tag">システム</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4753116346414295584/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://blog.jxck.io/entries/2024-04-26/csrf.html"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://blog.jxck.io/entries/2024-04-26/csrf.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fblog.jxck.io%2Fentries%2F2024-04-26%2Fcsrf.html" alt="">令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/blog.jxck.io/entries/2024-04-26/csrf.html" class="js-keyboard-entry-page-openable" title="令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io (550ブックマーク)" data-gtm-click-label="user-bookmark-users">550 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fblog.jxck.io%2F" title="『blog.jxck.io』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> blog.jxck.io </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Intro CSRF という古の攻撃がある。この攻撃を「古(いにしえ)」のものにすることができたプラットフォームの進化の背景を、「<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a> が SameS<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>e Lax by Default になったからだ」という解説を見ることがある。 確かに、現実的にそれによって攻撃の成立は難しくなり、救われているサービスもある。しかし、それはプラットフォームが用意した対策の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>質から言うと、解釈が少しずれていると言えるだろう。 今回は、「CSRF がどうして成立していたのか」を振り返ることで、<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>当にプラットフォームに足りていなかったものと、それを補っていった経緯、<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>当にすべき対策は何であるかを解説していく。 結果として見えてくるのは、今サービスを実装する上での「ベース」(not ベスト)となるプラクティスだと筆者は考えている。 CSRF 成立の条件 例えば、攻撃者が用意した attack.examp</p> <a href="https://blog.jxck.io/entries/2024-04-26/csrf.html" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/25f705929f7e98ea08f049f3c57b5de57a1b3ba0/height=288;version=1;width=512/https%3A%2F%2Fblog.jxck.io%2Fassets%2Fimg%2Fjxck.600x600.png" alt="令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4752612051500405344"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://blog.jxck.io/entries/2024-04-26/csrf.html" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20240426#bookmark-4752612051500405344" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2024/04/26</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/security/" data-gtm-click-label="user-reaction-tag">security</a></li> <li><a href="/R2M/API/" data-gtm-click-label="user-reaction-tag">API</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4752612051500405344/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://speakerdeck.com/nkzn/mo-zatsudan-passkey"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/nkzn/mo-zatsudan-passkey" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fnkzn%2Fmo-zatsudan-passkey" alt="">次世代Web認証「パスキー」 / mo-zatsudan-passkey</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/nkzn/mo-zatsudan-passkey" class="js-keyboard-entry-page-openable" title="次世代Web認証「パスキー」 / mo-zatsudan-passkey (505ブックマーク)" data-gtm-click-label="user-bookmark-users">505 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fspeakerdeck.com%2Fnkzn" title="『speakerdeck.com/nkzn』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> speakerdeck.com/nkzn </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">モニクル社内3分LTで発表しました。<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>職以外の人向けに話したので、抽象度高めにしてあります。</p> <a href="https://speakerdeck.com/nkzn/mo-zatsudan-passkey" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f4bdb801ea15cac8b9c27151afbbb0ae4c9eb541/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F9d7ec8b8611744afbfdaf59403904da6%2Fslide_0.jpg%3F29633617" alt="次世代Web認証「パスキー」 / mo-zatsudan-passkey"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4751661529614809408"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://speakerdeck.com/nkzn/mo-zatsudan-passkey" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20240406#bookmark-4751661529614809408" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2024/04/06</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/%E8%AA%8D%E8%A8%BC/" data-gtm-click-label="user-reaction-tag">認証</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4751661529614809408/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://zenn.dev/yusukebe/articles/0c7fed0949e6f7"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/yusukebe/articles/0c7fed0949e6f7" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fyusukebe%2Farticles%2F0c7fed0949e6f7" alt="">Hono[炎]っていうイケてる名前のフレームワークを作っている</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/yusukebe/articles/0c7fed0949e6f7" class="js-keyboard-entry-page-openable" title="Hono[炎]っていうイケてる名前のフレームワークを作っている (69ブックマーク)" data-gtm-click-label="user-bookmark-users">69 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fzenn.dev%2Fyusukebe" title="『zenn.dev/yusukebe』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/yusukebe </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary"><a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workersは「CDNのエッジで動く」という特徴だけでなく「サーバーレス」の環境としても非常に優秀です。<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88">プロジェクト</a>の作成からデプロイまで「4ステップ」で出来ます。 自動的に {project-name}.{user-name}.workers.dev といったURLを発行してくれて、すぐさま公開されます。この手軽さとスピード感はヤバい。スクリプトのサイズが1MB以内、使える<a data-gtm-click-label="entry-summary-keyword" href="/q/API">API</a>が極端に限られているなど制約がありますが、それはそれで単一機能のシンプルなアプリケーションを作る気にさせてくれます。 さて、この<a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> WokersでWebアプリを作っていたのですが、だんだんと<a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workersに特化した「Webアプリを作るためのフレームワーク」を作りたくなってきました。手段の目的化です。ということで作り始めました。「Hono[炎]」という</p> <a href="https://zenn.dev/yusukebe/articles/0c7fed0949e6f7" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/eaca1c6dcc954189f470035c2c3b14c4b1aef959/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--y8Q1KJtg--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AHono%25255B%2525E7%252582%25258E%25255D%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252581%252584%2525E3%252581%252586%2525E3%252582%2525A4%2525E3%252582%2525B1%2525E3%252581%2525A6%2525E3%252582%25258B%2525E5%252590%25258D%2525E5%252589%25258D%2525E3%252581%2525AE%2525E3%252583%252595%2525E3%252583%2525AC%2525E3%252583%2525BC%2525E3%252583%2525A0%2525E3%252583%2525AF%2525E3%252583%2525BC%2525E3%252582%2525AF%2525E3%252582%252592%2525E4%2525BD%25259C%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252581%252584%2525E3%252582%25258B%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Ayusukebe%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2pIMWY1VlpnSFMwLUJwekhzZjRGYXN0R1ZYTlpfZFh1U2pwdWNMNGc9czI1MC1j%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Hono[炎]っていうイケてる名前のフレームワークを作っている"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4714620111999495778"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/yusukebe/articles/0c7fed0949e6f7" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20240113#bookmark-4714620111999495778" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2024/01/13</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/Framework/" data-gtm-click-label="user-reaction-tag">Framework</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4714620111999495778/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://www.publickey1.jp/blog/23/webssrdenoisomorphic_javascriptuniversal_javascript.html"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://www.publickey1.jp/blog/23/webssrdenoisomorphic_javascriptuniversal_javascript.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F23%2Fwebssrdenoisomorphic_javascriptuniversal_javascript.html" alt="">Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か?</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.publickey1.jp/blog/23/webssrdenoisomorphic_javascriptuniversal_javascript.html" class="js-keyboard-entry-page-openable" title="Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か? (342ブックマーク)" data-gtm-click-label="user-bookmark-users">342 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fwww.publickey1.jp%2F" title="『www.publickey1.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.publickey1.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Webの将来はサーバサイドレンダリング(SSR)に回帰していく。<a data-gtm-click-label="entry-summary-keyword" href="/q/deno">Deno</a>が主張するIsomorphic <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>(もしくはUniversal <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>)とは何か? 静的な<a data-gtm-click-label="entry-summary-keyword" href="/q/HTML">HTML</a>ファイルをWebサーバが配信する仕組みから始まったWebは、サーバ側で動的に<a data-gtm-click-label="entry-summary-keyword" href="/q/HTML">HTML</a>を生成する<a data-gtm-click-label="entry-summary-keyword" href="/q/CG">CG</a>Iの仕組みや、Webブラウザ上で<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>を実行してインタラクティブな操作を実現するなどの仕組みを得たことでWebアプリケーション基盤へと発展しています。 現在、Webアプリケーションの仕組みとして代表的なものがSPA(Single Page Application)でしょう。 SPAはWebブラウザ上で多くの処理が行われるためユーザーの操作に対する反応が速く、インタラクティブ性の高い快適なWebアプリケーションを実現できる利点があります。 しかし、これからのWebはサーバサイドレンダ</p> <a href="https://www.publickey1.jp/blog/23/webssrdenoisomorphic_javascriptuniversal_javascript.html" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/901fb3bebdd09b291ffde091304bd7af083ae0bf/height=288;version=1;width=512/https%3A%2F%2Fwww.publickey1.jp%2F2023%2F1uUM3zku.jpg" alt="Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か?"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4732004999451508068"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.publickey1.jp/blog/23/webssrdenoisomorphic_javascriptuniversal_javascript.html" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20230207#bookmark-4732004999451508068" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2023/02/07</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment">「BlazorはWebAssemblyを使って.NETとRazorコンポーネントをサーバでもクライアントでも実行可能にするというアーキテクチャを備えています」</span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/javascript/" data-gtm-click-label="user-reaction-tag">javascript</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4732004999451508068/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://tech.leverages.jp/entry/2021/08/31/151529"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://tech.leverages.jp/entry/2021/08/31/151529" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftech.leverages.jp%2Fentry%2F2021%2F08%2F31%2F151529" alt="">frourioを使って1ヶ月で管理画面をリリースした話 - Leverages Tech Blog</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/tech.leverages.jp/entry/2021/08/31/151529" class="js-keyboard-entry-page-openable" title="frourioを使って1ヶ月で管理画面をリリースした話 - Leverages Tech Blog (155ブックマーク)" data-gtm-click-label="user-bookmark-users">155 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Ftech.leverages.jp%2F" title="『tech.leverages.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> tech.leverages.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">はじめに こんにちは、レバテック開発部の河村です。 私はレバテック各種メディアのリプレイスを担当しており、バックエンドを中心にフルスタック開発を行っています。 今回は管理画面のリリースで採用した、フルスタックフレームワークであるfrourioについて、frourioを採用した理由や使ってみて良かったこと、困ったことを紹介します。 この記事を通して、frourioのメリット、デメリットだけでなく、レバテック開発部ではどのような背景のもと、<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>・アーキテクチャの選定を行っているのか、どれくらいのスピード感で開発を行っているのかをお伝えできればと思います。 なお、この記事ではfrourioにおける環境構築や使い方等の説明は割愛させていただきます。 開発背景・経緯 今回、開発する対象となった管理画面は、レバテックの各メディアで運用する記事やセミナー情報、エントリー情報を管理するものになります。 す</p> <a href="https://tech.leverages.jp/entry/2021/08/31/151529" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/82b632bf790f87a7fc818d016847fdc85bf83157/height=288;version=1;width=512/https%3A%2F%2Fcamo.githubusercontent.com%2Fc019d7746c5356390ab51777a92f817f545bcb2912f3f9f6492a5a576b5beaa9%2F68747470733a2f2f66726f7572696f6a732e6769746875622e696f2f66726f7572696f2f6173736574732f696d616765732f6f67702e706e67" alt="frourioを使って1ヶ月で管理画面をリリースした話 - Leverages Tech Blog"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4709901025501543394"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://tech.leverages.jp/entry/2021/08/31/151529" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20221207#bookmark-4709901025501543394" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/12/07</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/%E9%96%8B%E7%99%BA/" data-gtm-click-label="user-reaction-tag">開発</a></li> <li><a href="/R2M/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4709901025501543394/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://yusukebe.com/posts/2022/pico/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://yusukebe.com/posts/2022/pico/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fyusukebe.com%2Fposts%2F2022%2Fpico%2F" alt="">1KBのWebフレームワークをつくる - ゆーすけべー日記</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/yusukebe.com/posts/2022/pico/" class="js-keyboard-entry-page-openable" title="1KBのWebフレームワークをつくる - ゆーすけべー日記 (197ブックマーク)" data-gtm-click-label="user-bookmark-users">197 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fyusukebe.com%2F" title="『yusukebe.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> yusukebe.com </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">1KBのWebフレームワークをつくりました。 名前は「Pico」。 minifyしてビルドした模様。 コードはこれだけ。依存なし。ほんとにこれだけです。 <a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workersと<a data-gtm-click-label="entry-summary-keyword" href="/q/deno">Deno</a>で動きます。 今回はこのPicoというフレームワーク、 それに必要不可欠なURLPattern、実装について、 そして僕がつくっているもう一つのフレームワークHonoとの関係などを紹介します。 Hello World <a data-gtm-click-label="entry-summary-keyword" href="/q/TeX">tex</a>t/pl<a data-gtm-click-label="entry-summary-keyword" href="/q/ai">ai</a>nでレスポンスを返す、“Hello World"相当のコードは4行で書けます。 import { Pico } from "@picojs/pico"; const app = new Pico(); app.get("/", (c) => c.<a data-gtm-click-label="entry-summary-keyword" href="/q/TeX">tex</a>t("Hello Pico!")); export default app;</p> <a href="https://yusukebe.com/posts/2022/pico/" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/0365022a3417cb0401a9c6e368fee4a55c0e6de6/height=288;version=1;width=512/https%3A%2F%2Fss.yusukebe.com%2F992d276a94adc2c66571adb2092fbdd013a080fb4ecc5ef7ca6d03a7b8fb4cb2.png" alt="1KBのWebフレームワークをつくる - ゆーすけべー日記"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4729045750870042212"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://yusukebe.com/posts/2022/pico/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20221206#bookmark-4729045750870042212" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/12/06</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/javascript/" data-gtm-click-label="user-reaction-tag">javascript</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/%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="user-reaction-tag">フレームワーク</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4729045750870042212/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://firebase.google.com/docs/auth/web/service-worker-sessions?hl=ja"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://firebase.google.com/docs/auth/web/service-worker-sessions?hl=ja" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ffirebase.google.com%2Fdocs%2Fauth%2Fweb%2Fservice-worker-sessions%3Fhl%3Dja" alt="">Service Worker によるセッション管理 | Firebase</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/firebase.google.com/docs/auth/web/service-worker-sessions?hl=ja" class="js-keyboard-entry-page-openable" title="Service Worker によるセッション管理 | Firebase (53ブックマーク)" data-gtm-click-label="user-bookmark-users">53 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Ffirebase.google.com%2F" title="『firebase.google.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> firebase.google.com </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">フィードバックを送信 Service Worker によるセッション管理 コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 Firebase Auth では、Service Worker を使用して Firebase ID トークンを処理し、セッション管理を行うことができます。この方法には、次のような利点があります。 追加の作業を行わずに、サーバーからの HTTP リクエストに ID トークンを渡すことができます。 追加のラウンド トリップやレイテンシを発生させずに、ID トークンを更新できます。 バックエンドと<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89">フロントエンド</a>のセッションを同期できます。この方法は、Realtime <a data-gtm-click-label="entry-summary-keyword" href="/q/Database">Database</a> や <a data-gtm-click-label="entry-summary-keyword" href="/q/Firestore">Firestore</a> などの Firebase サービスや、外部サーバーサイドのリソース(<a data-gtm-click-label="entry-summary-keyword" href="/q/SQL">SQL</a> データベースなど)にアクセスする必要のあるアプリケーションで</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4679906899213329730"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://firebase.google.com/docs/auth/web/service-worker-sessions?hl=ja" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20221023#bookmark-4679906899213329730" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/10/23</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/%E8%AA%8D%E8%A8%BC/" data-gtm-click-label="user-reaction-tag">認証</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4679906899213329730/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://asnokaze.hatenablog.com/entry/2022/10/20/013932"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://asnokaze.hatenablog.com/entry/2022/10/20/013932" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fasnokaze.hatenablog.com%2Fentry%2F2022%2F10%2F20%2F013932" alt="">CookieのPartitioned属性 (CHIPS) の標準化はじまる - ASnoKaze blog</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/asnokaze.hatenablog.com/entry/2022/10/20/013932" class="js-keyboard-entry-page-openable" title="CookieのPartitioned属性 (CHIPS) の標準化はじまる - ASnoKaze blog (90ブックマーク)" data-gtm-click-label="user-bookmark-users">90 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fasnokaze.hatenablog.com%2F" title="『asnokaze.hatenablog.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> asnokaze.hatenablog.com </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">サードパーティ<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>をトラッキングに使用できないようにする「<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>s Having Independent Part<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ioned State (CHIPS)」という仕組みが議論されています。 現在は、その仕組はW3Cの<a data-gtm-click-label="entry-summary-keyword" href="/q/privacy">Privacy</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/CG">CG</a>で議論されています。細かい仕組みは以前書いたとおりです。 ( トラッキングに利用できない3rdパーティクッキー「CHIPS」の仕組み (part<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ioned属性) - ASnoKaze <a data-gtm-click-label="entry-summary-keyword" href="/q/BL">bl</a>og ) このCHIPSは、<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>に新しいPart<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ioned属性を利用します。<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>自体の仕様は、I<a data-gtm-click-label="entry-summary-keyword" href="/q/ETF">ETF</a>が発行するRFC 6265で定義されており、そこにPart<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ioned属性を追加してやる必要があります。 そのためI<a data-gtm-click-label="entry-summary-keyword" href="/q/ETF">ETF</a>側にも「<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>s Having Independent Part<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ioned State specif</p> <a href="https://asnokaze.hatenablog.com/entry/2022/10/20/013932" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/6dba54253c83b72e54551e863ca0c5b4e0e16f03/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FA%2FASnoKaze%2F20221020%2F20221020010901.png" alt="CookieのPartitioned属性 (CHIPS) の標準化はじまる - ASnoKaze blog"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4726909350666284067"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://asnokaze.hatenablog.com/entry/2022/10/20/013932" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20221020#bookmark-4726909350666284067" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/10/20</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4726909350666284067/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://www.publickey1.jp/blog/22/cloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://www.publickey1.jp/blog/22/cloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F22%2Fcloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html" alt="">Cloudflare WorkersのJavaScript/WASMランタイム「workerd」がオープンソースで公開。NanoservicesやHomogeneous deploymentなど新技術を実装</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.publickey1.jp/blog/22/cloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html" class="js-keyboard-entry-page-openable" title="Cloudflare WorkersのJavaScript/WASMランタイム「workerd」がオープンソースで公開。NanoservicesやHomogeneous deploymentなど新技術を実装 (87ブックマーク)" data-gtm-click-label="user-bookmark-users">87 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fwww.publickey1.jp%2F" title="『www.publickey1.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.publickey1.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary"><a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workersの<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>/<a data-gtm-click-label="entry-summary-keyword" href="/q/wasm">WASM</a>ランタイム「workerd」がオープンソースで公開。NanoservicesやHomogeneous deploymentなど新<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>を実装 <a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a>は、同社のCDNエッジで<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>/<a data-gtm-click-label="entry-summary-keyword" href="/q/WebAssembly">WebAssembly</a>を実行するサービス「<a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workers」のコアランタイム部分を「workerd」(読み方はワーカーディー:worker- dee)としてオープンソースで公開しました。 <a data-gtm-click-label="entry-summary-keyword" href="/q/google">Google</a>がオープンソースの<a data-gtm-click-label="entry-summary-keyword" href="/q/chromium">Chromium</a>をベースに<a data-gtm-click-label="entry-summary-keyword" href="/q/google">Google</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/Chrome">Chrome</a>を製品として提供しているのと同様に、<a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a>はworkerdをベースに<a data-gtm-click-label="entry-summary-keyword" href="/q/CloudFlare">Cloudflare</a> Workersのソフトウェアを開発していると説明されています。 <a data-gtm-click-label="entry-summary-keyword" href="/q/it">It</a>’s here! workerd (no that’s not</p> <a href="https://www.publickey1.jp/blog/22/cloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/35c2c17ba6fc24369182cb7d211ba033da971b38/height=288;version=1;width=512/https%3A%2F%2Fwww.publickey1.jp%2F2022%2Fhd6eUopk.jpg" alt="Cloudflare WorkersのJavaScript/WASMランタイム「workerd」がオープンソースで公開。NanoservicesやHomogeneous deploymentなど新技術を実装"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4725921049192634371"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.publickey1.jp/blog/22/cloudflare_workersjavascriptwasmworkerdnanoserviceshomogeneous_deployment.html" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220929#bookmark-4725921049192634371" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/09/29</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/WebAssembly/" data-gtm-click-label="user-reaction-tag">WebAssembly</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4725921049192634371/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ffrontendmastery.com%2Fposts%2Fthe-new-wave-of-javascript-web-frameworks%2F" alt="">The new wave of Javascript web frameworks</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/" class="js-keyboard-entry-page-openable" title="The new wave of Javascript web frameworks (139ブックマーク)" data-gtm-click-label="user-bookmark-users">139 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Ffrontendmastery.com%2F" title="『frontendmastery.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> frontendmastery.com </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">The new wave of <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">Javascript</a> web frameworksMake sense of the proliferation of new <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">Javascript</a> web frameworks. A deep dive into the pro<a data-gtm-click-label="entry-summary-keyword" href="/q/BL">bl</a><a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>s at scale and the recent evolution of innovation. IntroductionStaying current in the <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">Javascript</a> ecosyst<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a> is not for the f<a data-gtm-click-label="entry-summary-keyword" href="/q/ai">ai</a>nt of heart. <a data-gtm-click-label="entry-summary-keyword" href="/q/it">It</a>’s challenging for those entering the industry to follow what’s happening amongst the new libraries, frameworks, concepts, an</p> <a href="https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/0849931ad6a570d5e660101ac6b5b0f9e8a59a09/height=288;version=1;width=512/https%3A%2F%2Ffrontendmastery.com%2Fassets%2Fposts%2Fthe-new-wave-of-javascript-web-frameworks.png%3Fv%3D2" alt="The new wave of Javascript web frameworks"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4725768613750275939"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220926#bookmark-4725768613750275939" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/09/26</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/javascript/" data-gtm-click-label="user-reaction-tag">javascript</a></li> <li><a href="/R2M/%E6%AD%B4%E5%8F%B2/" data-gtm-click-label="user-reaction-tag">歴史</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4725768613750275939/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://anond.hatelabo.jp/20220713222426"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://anond.hatelabo.jp/20220713222426" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fanond.hatelabo.jp%2F20220713222426" alt="">「エンジニア足りてない」は嘘</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/anond.hatelabo.jp/20220713222426" class="js-keyboard-entry-page-openable" title="「エンジニア足りてない」は嘘 (368ブックマーク)" data-gtm-click-label="user-bookmark-users">368 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fanond.hatelabo.jp%2F" title="『anond.hatelabo.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> anond.hatelabo.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">これまで<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a>でいろいろやってきたけど 最近は<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a>系で働く人が増えてきて案件がどんどん無くなってきている フルスタックでなんでもこなす<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">エンジニア</a>として業務に入ってるのでそれなりの報酬は頂いているのだが その単価だと案件が目減りしてるのが現状 実際に業務に入れば満足頂いているのだが、そもそもの面談までありつけないっていうのが非常に多い いろいろ事情を聞くと、どうやら単純に大手<a data-gtm-click-label="entry-summary-keyword" href="/q/sier">SIer</a>とかの<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>者レベルがだだ下がりしており その理由は再委託先企業の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>者が<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a>なり外資系なりに<a data-gtm-click-label="entry-summary-keyword" href="/q/%E8%BB%A2%E8%81%B7">転職</a>しているため、とのこと 一方で<a data-gtm-click-label="entry-summary-keyword" href="/q/sier">SIer</a>のように中間管理しない発注元企業は<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a>との契約なんて出来るはずがなく やるとしてもフルタイム希望みたいなのが多くて特に多数の案件をこなす<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a><a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">エンジニア</a>からは相性が悪く 暇をしてる新人<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9">フリーランス</a>とかが業務を奪うが、<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%8A%80%E8%A1%93">技術</a>レベルが足りずに契約解除、</p> <a href="https://anond.hatelabo.jp/20220713222426" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <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="「エンジニア足りてない」は嘘"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4722341848172458946"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://anond.hatelabo.jp/20220713222426" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220714#bookmark-4722341848172458946" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/07/14</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment">Twitterで#駆け出しエンジニアつけて呟いているような人達がフリーランスに増えまくってて混沌になっている話?</span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/Web/" data-gtm-click-label="user-reaction-tag">Web</a></li> <li><a href="/R2M/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2/" data-gtm-click-label="user-reaction-tag">エンジニア</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4722341848172458946/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://anond.hatelabo.jp/20220504211823"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://anond.hatelabo.jp/20220504211823" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fanond.hatelabo.jp%2F20220504211823" alt="">個人でWEB開発を15年くらいやってる者ですが</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/anond.hatelabo.jp/20220504211823" class="js-keyboard-entry-page-openable" title="個人でWEB開発を15年くらいやってる者ですが (516ブックマーク)" data-gtm-click-label="user-bookmark-users">516 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fanond.hatelabo.jp%2F" title="『anond.hatelabo.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> anond.hatelabo.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">この記事を見てびっくりした。 https://l<a data-gtm-click-label="entry-summary-keyword" href="/q/ai">ai</a>so.<a data-gtm-click-label="entry-summary-keyword" href="/q/hatena">hatena</a><a data-gtm-click-label="entry-summary-keyword" href="/q/BL">bl</a>og.com/entry/nope-<a data-gtm-click-label="entry-summary-keyword" href="/q/SQL">sql</a> 「<a data-gtm-click-label="entry-summary-keyword" href="/q/%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA">個人開発</a>のコストは<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>次第」 まずビックリしたのは「<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>ってそんなに<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%81%8A%E9%87%91">お金</a>かかる?」という点。 もちろん<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>がストレージ、<a data-gtm-click-label="entry-summary-keyword" href="/q/CPU">CPU</a>、メモリを<a data-gtm-click-label="entry-summary-keyword" href="/q/%E9%A3%9F">食</a>うのは分かる。 でも<a data-gtm-click-label="entry-summary-keyword" href="/q/vps">VPS</a>ならそんなにコストかからんだろう? 俺は1日100万PVほどのエロサイトを運営しているが、WEBサーバ1台、<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>サーバ1台、画像サーバ2台で動いているぞ? <a data-gtm-click-label="entry-summary-keyword" href="/q/vps">VPS</a>4台で月額6000円くらい。 次にビックリしたのは、<a data-gtm-click-label="entry-summary-keyword" href="/q/%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA">個人開発</a>なのに難しそうな<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>サーバを使っている事。 「Cloud <a data-gtm-click-label="entry-summary-keyword" href="/q/Firestore">Firestore</a>」「<a data-gtm-click-label="entry-summary-keyword" href="/q/Amazon">Amazon</a> Dynamo<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>」「Mon<a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a><a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a> Atlas」 ↑俺、全部知らない。。。 もちろん、こうした<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a>サーバの必要性は分かるのよ。 稼働率、安定性、拡張性などなど。 でもそれって、大規模サイト向けじゃない</p> <a href="https://anond.hatelabo.jp/20220504211823" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <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="個人でWEB開発を15年くらいやってる者ですが"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4719093249122059938"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://anond.hatelabo.jp/20220504211823" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220505#bookmark-4719093249122059938" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/05/05</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC/" data-gtm-click-label="user-reaction-tag">サーバー</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4719093249122059938/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://blog.flatt.tech/entry/xss_risk"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://blog.flatt.tech/entry/xss_risk" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fblog.flatt.tech%2Fentry%2Fxss_risk" alt="">開発者が知っておきたい「XSSの発生原理以外」の話 - Flatt Security Blog</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/blog.flatt.tech/entry/xss_risk" class="js-keyboard-entry-page-openable" title="開発者が知っておきたい「XSSの発生原理以外」の話 - Flatt Security Blog (371ブックマーク)" data-gtm-click-label="user-bookmark-users">371 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fblog.flatt.tech%2F" title="『blog.flatt.tech』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> blog.flatt.tech </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">はじめに こんにちは。株式会社Flatt <a data-gtm-click-label="entry-summary-keyword" href="/q/security">Security</a>の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3">セキュリティ</a><a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">エンジニア</a>の冨士です。 <a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>稿では、XSS(クロスサイトスクリプティング)が攻撃に用いられた時のリスクの大きさを紹介していきます。以降はクロスサイトスクリプティングをXSSと記載していきます。 XSSは<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3">セキュリティ</a><a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">エンジニア</a>ならもちろん、開発を行っている<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">エンジニア</a>の多くの方が知っている脆弱性です。ですが、私はWebアプリケーションの脆弱性診断を行ってきた経験の中で多くのXSSを目にしてきましたし、依然として検出率の多い脆弱性の一つだと感じています。 その認知度や、一般的な対策方法のハードルの低さ(設計や仕様によっては対策工数が大きい場合もありますが)にも関わらずXSSの検出率が多いのは、直感的にリスクがわかりづらく、アラートをあげるだけの紹介が多いことが一つの要因ではないかと考えています。 すなわち、興味範囲が「どのよう</p> <a href="https://blog.flatt.tech/entry/xss_risk" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bff3ebbfded25ab47d47ee7cf1c34ceccd2f3312/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ff%2Fflattsecurity%2F20220224%2F20220224211724.png" alt="開発者が知っておきたい「XSSの発生原理以外」の話 - Flatt Security Blog"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4716196081189793698"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://blog.flatt.tech/entry/xss_risk" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220303#bookmark-4716196081189793698" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/03/03</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/security/" data-gtm-click-label="user-reaction-tag">security</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4716196081189793698/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://web.dev/i18n/ja/sign-in-form-best-practices/"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://web.dev/i18n/ja/sign-in-form-best-practices/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fweb.dev%2Farticles%2Fsign-in-form-best-practices" alt="">Sign-in form best practices | Articles | web.dev</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/web.dev/articles/sign-in-form-best-practices" class="js-keyboard-entry-page-openable" title="Sign-in form best practices | Articles | web.dev (662ブックマーク)" data-gtm-click-label="user-bookmark-users">662 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fweb.dev%2F" title="『web.dev』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> web.dev </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Sign-in f<a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a> best practices Stay organized w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h collections Save and cate<a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a>rize content based on your preferences. Use c<a data-gtm-click-label="entry-summary-keyword" href="/q/ROS">ros</a>s-platf<a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a> browser features to <a data-gtm-click-label="entry-summary-keyword" href="/q/Build">build</a> sign-in f<a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a>s that are secure, accessi<a data-gtm-click-label="entry-summary-keyword" href="/q/BL">bl</a>e and easy to use. If users ever need to <a data-gtm-click-label="entry-summary-keyword" href="/q/log">log</a> in to your s<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>e, then <a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a>od sign-in f<a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a> design is cr<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ical. This is especially true for people on poor con<a data-gtm-click-label="entry-summary-keyword" href="/q/NEC">nec</a>tions, on mobile, in a hurry, or under stress.</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4715048734916303458"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://web.dev/i18n/ja/sign-in-form-best-practices/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220207#bookmark-4715048734916303458" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/02/07</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> <li><a href="/R2M/%E8%AA%8D%E8%A8%BC/" data-gtm-click-label="user-reaction-tag">認証</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4715048734916303458/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://strapi.io/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://strapi.io/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fstrapi.io%2F" alt="">Strapi - Open source Node.js Headless CMS 🚀</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/strapi.io/" class="js-keyboard-entry-page-openable" title="Strapi - Open source Node.js Headless CMS 🚀 (121ブックマーク)" data-gtm-click-label="user-bookmark-users">121 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fstrapi.io%2F" title="『strapi.io』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> strapi.io </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Design REST and <a data-gtm-click-label="entry-summary-keyword" href="/q/GraphQL">GraphQL</a> Content Delivery <a data-gtm-click-label="entry-summary-keyword" href="/q/API">API</a>s to con<a data-gtm-click-label="entry-summary-keyword" href="/q/NEC">nec</a>t to any frontend.</p> <a href="https://strapi.io/" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bb63560a9f649c54d8e6528c54778efd57fae3bc/height=288;version=1;width=512/https%3A%2F%2Fdelicate-dawn-ac25646e6d.media.strapiapp.com%2FHP_meta_b32f546a40.png" alt="Strapi - Open source Node.js Headless CMS 🚀"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-347291172"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://strapi.io/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220105#bookmark-347291172" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/01/05</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/CMS/" data-gtm-click-label="user-reaction-tag">CMS</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/347291172/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://www.netlifycms.org/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://www.netlifycms.org/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fdecapcms.org%2F" alt="">Decap CMS | Open-Source Content Management System</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/decapcms.org/" class="js-keyboard-entry-page-openable" title="Decap CMS | Open-Source Content Management System (60ブックマーク)" data-gtm-click-label="user-bookmark-users">60 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fdecapcms.org%2F" title="『decapcms.org』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> decapcms.org </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Integral part of the Jamstack Get the speed, <a data-gtm-click-label="entry-summary-keyword" href="/q/security">security</a>, and <a data-gtm-click-label="entry-summary-keyword" href="/q/Scala">scala</a>bil<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>y of a static s<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>e, while still providing a convenient ed<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ing in<a data-gtm-click-label="entry-summary-keyword" href="/q/TERF">terf</a>ace for content. Compared to server-side CMS like <a data-gtm-click-label="entry-summary-keyword" href="/q/WordPress">WordPress</a>, this means better perf<a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a>ance, higher <a data-gtm-click-label="entry-summary-keyword" href="/q/security">security</a>, lower cost of scaling, and a better developer experience. You can learn more about the Jamstack on jamstack.org. Works w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h most frontend toolsYou can ad</p> <a href="https://decapcms.org/" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/08f03896cadabeb4083ea8795f621983c90f12b5/height=288;version=1;width=512/https%3A%2F%2Fdecapcms.org%2Fimg%2Fog-image.jpg" alt="Decap CMS | Open-Source Content Management System"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-327551780"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.netlifycms.org/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20220105#bookmark-327551780" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2022/01/05</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/CMS/" data-gtm-click-label="user-reaction-tag">CMS</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/327551780/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://labs.cybozu.co.jp/blog/akky/2021/10/scaffoldy-scaffolds-your-docker-compose-project/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://labs.cybozu.co.jp/blog/akky/2021/10/scaffoldy-scaffolds-your-docker-compose-project/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-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%2F2021%2F10%2Fscaffoldy-scaffolds-your-docker-compose-project%2F" alt="">scaffoldy – よくあるwebサービス構成の Docker Compose ファイルを作ってくれるジェネレータ</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/labs.cybozu.co.jp/blog/akky/2021/10/scaffoldy-scaffolds-your-docker-compose-project/" class="js-keyboard-entry-page-openable" title="scaffoldy – よくあるwebサービス構成の Docker Compose ファイルを作ってくれるジェネレータ (64ブックマーク)" data-gtm-click-label="user-bookmark-users">64 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Flabs.cybozu.co.jp%2F" title="『labs.cybozu.co.jp』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> labs.cybozu.co.jp </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">Scaffoldy は、選択したサービスを組み合わせた <a data-gtm-click-label="entry-summary-keyword" href="/q/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9">webサービス</a>の <a data-gtm-click-label="entry-summary-keyword" href="/q/docker">Docker</a> Compose 設定ファイルを作ってくれる<a data-gtm-click-label="entry-summary-keyword" href="/q/web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9">webサービス</a>です。 対話式のフォームに回答していくだけで、<a data-gtm-click-label="entry-summary-keyword" href="/q/docker">docker</a> compose で動作する yml ファイルが作られます。現在選べるのは以下のような項目 言語/環境 – <a data-gtm-click-label="entry-summary-keyword" href="/q/Python">Python</a> / Node.js / その他 .g<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ignore 等 g<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a> の設定 データベース – <a data-gtm-click-label="entry-summary-keyword" href="/q/mysql">MySQL</a> / Maria<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a> / Po<a data-gtm-click-label="entry-summary-keyword" href="/q/stg">stg</a>re<a data-gtm-click-label="entry-summary-keyword" href="/q/SQL">SQL</a> / Mon<a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a><a data-gtm-click-label="entry-summary-keyword" href="/q/DB">DB</a> データベース管理web <a data-gtm-click-label="entry-summary-keyword" href="/q/UI">UI</a> – <a data-gtm-click-label="entry-summary-keyword" href="/q/php">php</a>MyAdmin / pgAdmin / Mon<a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a> Express キャッシュサーバ – M<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>cached / Redis メッセージング – <a data-gtm-click-label="entry-summary-keyword" href="/q/RabbitMQ">RabbitMQ</a> / NATS メトリクス – Prometheus / Grafana その他 – Clickhous</p> <a href="https://labs.cybozu.co.jp/blog/akky/2021/10/scaffoldy-scaffolds-your-docker-compose-project/" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/0a2f0ba9c336c6d824094bfe601583134f8c55b4/height=288;version=1;width=512/https%3A%2F%2Fi0.wp.com%2Flabs.cybozu.co.jp%2Fblog%2Fakky%2Fwp-content%2Fuploads%2F2021%2F10%2Fscaffoldy-choose-node-js.png%3Ffit%3D725%252C457%26ssl%3D1" alt="scaffoldy – よくあるwebサービス構成の Docker Compose ファイルを作ってくれるジェネレータ"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4709712340517741826"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://labs.cybozu.co.jp/blog/akky/2021/10/scaffoldy-scaffolds-your-docker-compose-project/" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20211018#bookmark-4709712340517741826" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2021/10/18</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/docker/" data-gtm-click-label="user-reaction-tag">docker</a></li> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4709712340517741826/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li class="bookmark-item js-user-bookmark-item js-intent-share-bookmark" data-target-url="https://zenn.dev/ritou/articles/4a5d6597a5f250"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ritou/articles/4a5d6597a5f250" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-title"><img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fritou%2Farticles%2F4a5d6597a5f250" alt="">"JWT=ステートレス"から一歩踏み出すための考え方</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ritou/articles/4a5d6597a5f250" class="js-keyboard-entry-page-openable" title=""JWT=ステートレス"から一歩踏み出すための考え方 (377ブックマーク)" data-gtm-click-label="user-bookmark-users">377 users</a> </span> </li> <li> <a href="/R2M/?url=https%3A%2F%2Fzenn.dev%2Fritou" title="『zenn.dev/ritou』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/ritou </a> </li> <li><a href="/hotentry/it" data-gtm-click-label="user-bookmark-category">テクノロジー</a></li> </ul> <div class="centerarticle-entry-contents"> <p class="centerarticle-entry-summary">おはようございます、r<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ouです。 この話に乗っかっていきます。 3行で ログアウト時にJWTを無効化できない実装は今後脆弱性診断で「OWASP <a data-gtm-click-label="entry-summary-keyword" href="/q/top">Top</a> 10 2021違反」と指摘されるようになりそう(今も個別にされてるかもしれないけど) JWTは単純なフォーマットなので、ステートレスなセッション管理においてログアウトしたときに文字列自体を無効化できない件は独自エンコード方式(一般的にフレームワークの<a data-gtm-click-label="entry-summary-keyword" href="/q/Cookie">Cookie</a>ストアと呼ばれているもの)でも起こり得る 「セッションID vs JWTで内包」 以外にも 「セッションIDをJWTに内包」もあり得る。既存の機能を残しつつ「JWTで武装」する選択肢も考えてみてはどうか。 ステートレスなセッション管理でログアウトの際に文字列自体を無効化できない問題 これは前から言われていますし、駆け出し何とか勢のQi<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>a記事に書かれるぐらいには一般的です。 2</p> <a href="https://zenn.dev/ritou/articles/4a5d6597a5f250" class="centerarticle-entry-image" target="_blank" rel="noopener" data-gtm-click-label="user-bookmark-thumb"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/a1fae406bee4090b9fc3d8ebaf92b7facbcc924d/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--dSDgMppg--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%252522JWT%25253D%2525E3%252582%2525B9%2525E3%252583%252586%2525E3%252583%2525BC%2525E3%252583%252588%2525E3%252583%2525AC%2525E3%252582%2525B9%252522%2525E3%252581%25258B%2525E3%252582%252589%2525E4%2525B8%252580%2525E6%2525AD%2525A9%2525E8%2525B8%25258F%2525E3%252581%2525BF%2525E5%252587%2525BA%2525E3%252581%252599%2525E3%252581%25259F%2525E3%252582%252581%2525E3%252581%2525AE%2525E8%252580%252583%2525E3%252581%252588%2525E6%252596%2525B9%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aritou%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2pRX2Zjd3NJUms2TGFsYm5qQ0hXeldmazdCa1l2WDlYQWtaUDhiOFE9czI1MC1j%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt=""JWT=ステートレス"から一歩踏み出すための考え方"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4708172513901571906"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/ritou/articles/4a5d6597a5f250" data-user-name="R2M"> <a href="/R2M/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/R2M/profile.png" alt="R2M" title="R2M" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/R2M/20210911#bookmark-4708172513901571906" class="js-anchor-path" data-gtm-click-label="user-reaction-username">R2M</a></span> <span class="centerarticle-reaction-timestamp">2021/09/11</span> <span class="js-private-icon status is-hidden"><img src="/images/v4/public/userpage/icon-private.svg" alt="非公開" width="10px" height="10px"></span> <div class="centerarticle-reaction-main-comment-tags"> <span class="js-comment"></span> <ul class="centerarticle-reaction-tags js-tag-text"> <li><a href="/R2M/web/" data-gtm-click-label="user-reaction-tag">web</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4708172513901571906/comment/R2M" data-gtm-click-label="user-reaction-permalink" rel="nofollow">リンク</a> </span> <span class="list-star-container js-list-star-container"></span> <span class="twitter-click js-short-url-clicks"></span> </div> <ul class="centerarticle-reaction-menu"> <li class="js-add-star-container add-star-container"></li> </ul> </div> </div> </div> </div> <ul class="centerarticle-reaction-following js-user-following-bookmarks-icon"> </ul> <div class="js-user-following-bookmarks-detail is-hidden"> </div> </li> <li> <div class="centerarticle-pager"> <span class="centerarticle-waiting js-read-more-waiting is-hidden"><img src="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/common/loading@2x.gif" alt="残りのブックマークを読み込んでいます" width="16" height="16" /></span> <span>1</span> <span><a href="/R2M/web/?page=2">2</a></span> <span><a href="/R2M/web/?page=3">3</a></span> <span><a href="/R2M/web/?page=4">4</a></span> <span><a href="/R2M/web/?page=5">5</a></span> <span><a href="/R2M/web/?page=6">6</a></span> <span><a href="/R2M/web/?page=7">7</a></span> <span><a href="/R2M/web/?page=8">8</a></span> <span><a href="/R2M/web/?page=9">9</a></span> <span><a href="/R2M/web/?page=10">10</a></span> <span class="centerarticle-pager-next"><a href="/R2M/web/?page=2">次のページ</a></span> </div> </li> </ul> </div> </div> <script type="text/javascript"> // ---------------- dfp section ---------------- var valve = valve || []; valve.push(function(v) { v.defineDFPSlot({ unit: '/4374287/b_pc_o_18_3025_0_no', sizes: [[300,250]], slotId: 'user-sidebar-ad-top' }); v.defineDFPSlot({ unit: '/4374287/b_pc_o_19_3060_0_no', sizes: [[300,600],[300,250]], slotId: 'user-sidebar-ad-bottom' }); v.sealDFPSlots(); }); </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, content: { result: "ng" }, service: 'bookmark' }); }); </script> <script src="https://cdn.pool.st-hatena.com/valve/valve.js" async></script> <div class="right-container"> <div id="user-sidebar-ad-top" class="centerarticle-aside-ad"></div> <section class="centerarticle-aside-section"> <div class="centerarticle-aside-info"> <h3 class="centerarticle-aside-info-title">お知らせ</h3> <ul class="centerarticle-aside-info-list"> <li class="centerarticle-aside-info-item"> <a href="https://bookmark.hatenastaff.com/entry/2024/11/26/120820?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=2024%2F11%2F26%2F120820" target="_blank"> <p class="centerarticle-aside-info-category">ランキング</p> <h4 class="centerarticle-aside-info-item-title">今週のはてなブックマーク数ランキング(2024年11月第4週)</h4> <time class="centerarticle-aside-info-item-time">2024/11/26</time> </a> </li> <li class="centerarticle-aside-info-item"> <a href="https://bookmark.hatenastaff.com/entry/transparencyreport_251q?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=transparencyreport_251q" target="_blank"> <p class="centerarticle-aside-info-category">透明性レポート</p> <h4 class="centerarticle-aside-info-item-title">はてなブックマーク透明性レポート(2024年8月~2024年10月)</h4> <time class="centerarticle-aside-info-item-time">2024/11/22</time> </a> </li> <li class="centerarticle-aside-info-item"> <a href="https://bookmark.hatenastaff.com/entry/transparencyreport_244q?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=transparencyreport_244q" target="_blank"> <p class="centerarticle-aside-info-category">透明性レポート</p> <h4 class="centerarticle-aside-info-item-title">はてなブックマーク透明性レポート(2024年5月~2024年7月)</h4> <time class="centerarticle-aside-info-item-time">2024/11/22</time> </a> </li> </ul> <div class="enterarticle-aside-info-readmore"> <a href="https://bookmark.hatenastaff.com/?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=readmore" class="enterarticle-aside-info-readmore-button" target="_blank">もっと読む</a> </div> </div> </section> <section class="centerarticle-aside-section"> <h3 class="centerarticle-aside-title">公式Twitter</h3> <ul class="centerarticle-aside-twitter"> <li><a href="https://twitter.com/HatenaBookmark" target="_blank" rel="noopener" data-gtm-click-label="user-officialTwitter-name">@HatenaBookmark</a><p>リリース、障害情報などのサービスのお知らせ</p></li> <li><a href="https://twitter.com/hatebu" target="_blank" rel="noopener" data-gtm-click-label="user-hotentryTwitter-name">@hatebu</a><p>最新の人気エントリーの配信</p></li> </ul> </section> <div id="user-sidebar-ad-bottom" class="centerarticle-aside-ad"></div> </div> </div> </div> <div class="progress-modal is-hidden js-progress-modal"> <div class="progress-modal-spiner"></div> <div class="progress-modal-message"> <p class="progress-modal-message-text js-progress-message">処理を実行中です</p> <button class="progress-modal-cancel js-cancel-button">中止</button> </div> </div> <div class="message-modal js-message-modal is-hidden auto-hide"> <div class="message-modal-message"> <p class="message-modal-message-text js-message-modal-message-text"></p> <button class="message-modal-btn js-message-modal-close-button">閉じる</button> </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> <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/77d2ee6f79ddaf78eb2d198936bae315b6721993/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&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/77d2ee6f79ddaf78eb2d198936bae315b6721993/images/v4/public/common/dl-button/googleplay@2x.png" alt="Google Playで手に入れよう"></a></li> </ul> </div> <div class="copyright">Copyright © 2005-2024 <a href="http://www.hatena.ne.jp/">Hatena</a>. All Rights Reserved.</div> </div> </div> <div class="modal-overlay"></div> <script type="text/javascript" src="https://b.st-hatena.com/77d2ee6f79ddaf78eb2d198936bae315b6721993/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>