CINXE.COM
[B! TypeScript] micknのブックマーク
<!DOCTYPE html> <html lang="ja" data-page-scope="User" data-stable-request-url="https://b.hatena.ne.jp/mickn/TypeScript/" data-device-type="PC" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-author-name="mickn" data-page-subtype="tag" data-page-type="user" data-platform="pc" data-search-query="" data-tag-filter="TypeScript" 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! TypeScript] micknのブックマーク</title> <script src="https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/js/v4/bookmark.js" async></script> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/css/v4/bookmark.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/css/v4/bookmark.star.css" /> <link rel="canonical" href="https://b.hatena.ne.jp/mickn/TypeScript/" /> <link rel="next" href="/mickn/TypeScript/?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="mickn のブックマーク内検索" href="/mickn/opensearch.xml"> <link rel="apple-touch-icon-precomposed" href="https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/apple-touch-icon-precomposed.png" /> <link rel="mask-icon" href="https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/icons/bookmark.ico" /> <meta name="msapplication-task" content="name=マイブックマーク; action-uri=/my; icon-uri=https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/icons/my-bookmark.ico" /> <meta name="msapplication-task" content="name=お気に入りのブックマーク; action-uri=/my/favorite; icon-uri=https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/icons/favorite-bookmark.ico" /> <meta name="msapplication-task" content="name=人気エントリー; action-uri=/hotentry; icon-uri=https://b.st-hatena.com/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/mickn/" /> <link rel="alternate" type="application/rss+xml" href="/mickn/bookmark.rss?tag=TypeScript" /> <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%2Fmickn%2FTypeScript%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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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="mickn" > <div class="centerarticle-wrapper"> <div class="left-container"> <div class="js-user-info" data-user-name="mickn"> <div class="centerarticle-profile"> <a href="http://profile.hatena.ne.jp/mickn/"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" class="centerarticle-profile-image"/> </a> <div class="centerarticle-profile-main"> <a href="http://profile.hatena.ne.jp/mickn/" class="centerarticle-profile-nickname js-user-info-nickname" target="_blank" rel="noopener">mickn</a> <a href="/mickn/bookmark" class="centerarticle-profile-username">id:mickn</a> </div> </div> <ul class="userprofile-status"> <li> <a href="/mickn/bookmark" class="userprofile-status-link" data-gtm-click-label="user-count-bookmark"> <span class="userprofile-status-count">120,652</span> <span class="userprofile-status-text">ブックマーク</span> </a> </li> <li> <a href="/mickn/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="/mickn/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="/mickn/bookmark" data-gtm-click-label="user-tags-all">すべて</a></li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/1seg/" data-gtm-click-label="user-tags"> 1seg <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/2ch/" data-gtm-click-label="user-tags"> 2ch <span class="count">(84)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/4%E3%82%B3%E3%83%9E/" data-gtm-click-label="user-tags"> 4コマ <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/6rd/" data-gtm-click-label="user-tags"> 6rd <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/AWS/" data-gtm-click-label="user-tags"> AWS <span class="count">(47)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ActiveDirectory/" data-gtm-click-label="user-tags"> ActiveDirectory <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ActivityPub/" data-gtm-click-label="user-tags"> ActivityPub <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Ajax/" data-gtm-click-label="user-tags"> Ajax <span class="count">(57)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/AngularJS/" data-gtm-click-label="user-tags"> AngularJS <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Atom/" data-gtm-click-label="user-tags"> Atom <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/BCL/" data-gtm-click-label="user-tags"> BCL <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Beyond%20the%20Bottom/" data-gtm-click-label="user-tags"> Beyond the Bottom <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/COCOA/" data-gtm-click-label="user-tags"> COCOA <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/CSS/" data-gtm-click-label="user-tags"> CSS <span class="count">(122)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/CVE/" data-gtm-click-label="user-tags"> CVE <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ChatGPT/" data-gtm-click-label="user-tags"> ChatGPT <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/D4DJ/" data-gtm-click-label="user-tags"> D4DJ <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/DMARC/" data-gtm-click-label="user-tags"> DMARC <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/EAI/" data-gtm-click-label="user-tags"> EAI <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ERP/" data-gtm-click-label="user-tags"> ERP <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ETF/" data-gtm-click-label="user-tags"> ETF <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/FON/" data-gtm-click-label="user-tags"> FON <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Flowery/" data-gtm-click-label="user-tags"> Flowery <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GAF/" data-gtm-click-label="user-tags"> GAF <span class="count">(51)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GDPR/" data-gtm-click-label="user-tags"> GDPR <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GNOME/" data-gtm-click-label="user-tags"> GNOME <span class="count">(169)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GPS/" data-gtm-click-label="user-tags"> GPS <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GTP/" data-gtm-click-label="user-tags"> GTP <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Get%20set,%20Go!/" data-gtm-click-label="user-tags"> Get set, Go! <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GraphDB/" data-gtm-click-label="user-tags"> GraphDB <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/GraphQL/" data-gtm-click-label="user-tags"> GraphQL <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/HDMI/" data-gtm-click-label="user-tags"> HDMI <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/HDR/" data-gtm-click-label="user-tags"> HDR <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/HRr/" data-gtm-click-label="user-tags"> HRr <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Hackadoll/" data-gtm-click-label="user-tags"> Hackadoll <span class="count">(89)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/IDN/" data-gtm-click-label="user-tags"> IDN <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/IE7/" data-gtm-click-label="user-tags"> IE7 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/IPFS/" data-gtm-click-label="user-tags"> IPFS <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ISRC/" data-gtm-click-label="user-tags"> ISRC <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ITIL/" data-gtm-click-label="user-tags"> ITIL <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Isomorphic/" data-gtm-click-label="user-tags"> Isomorphic <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/JANOG/" data-gtm-click-label="user-tags"> JANOG <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/JSON/" data-gtm-click-label="user-tags"> JSON <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/JSON-LD/" data-gtm-click-label="user-tags"> JSON-LD <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/KG/" data-gtm-click-label="user-tags"> KG <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/LDAP/" data-gtm-click-label="user-tags"> LDAP <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/LOD/" data-gtm-click-label="user-tags"> LOD <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Linux/" data-gtm-click-label="user-tags"> Linux <span class="count">(86)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/MIAU/" data-gtm-click-label="user-tags"> MIAU <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/MVC/" data-gtm-click-label="user-tags"> MVC <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/MyGO/" data-gtm-click-label="user-tags"> MyGO <span class="count">(112)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/NGN/" data-gtm-click-label="user-tags"> NGN <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/NetWalker/" data-gtm-click-label="user-tags"> NetWalker <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Next.JS/" data-gtm-click-label="user-tags"> Next.JS <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/NowPlaying/" data-gtm-click-label="user-tags"> NowPlaying <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/OpenID/" data-gtm-click-label="user-tags"> OpenID <span class="count">(150)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PDF/" data-gtm-click-label="user-tags"> PDF <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PEG/" data-gtm-click-label="user-tags"> PEG <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PFS/" data-gtm-click-label="user-tags"> PFS <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PHP/" data-gtm-click-label="user-tags"> PHP <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PLC/" data-gtm-click-label="user-tags"> PLC <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/POODLE/" data-gtm-click-label="user-tags"> POODLE <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PostgreSQL/" data-gtm-click-label="user-tags"> PostgreSQL <span class="count">(164)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/PrettySeries/" data-gtm-click-label="user-tags"> PrettySeries <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RDBMS/" data-gtm-click-label="user-tags"> RDBMS <span class="count">(53)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RDF/" data-gtm-click-label="user-tags"> RDF <span class="count">(118)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RDF-star/" data-gtm-click-label="user-tags"> RDF-star <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/REST/" data-gtm-click-label="user-tags"> REST <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RFC/" data-gtm-click-label="user-tags"> RFC <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RGR/" data-gtm-click-label="user-tags"> RGR <span class="count">(606)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RGR%20FINAL/" data-gtm-click-label="user-tags"> RGR FINAL <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RGR5th/" data-gtm-click-label="user-tags"> RGR5th <span class="count">(60)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/RSS/" data-gtm-click-label="user-tags"> RSS <span class="count">(53)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/React/" data-gtm-click-label="user-tags"> React <span class="count">(153)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SAML/" data-gtm-click-label="user-tags"> SAML <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SASL/" data-gtm-click-label="user-tags"> SASL <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SEA/" data-gtm-click-label="user-tags"> SEA <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SHACL/" data-gtm-click-label="user-tags"> SHACL <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SONY/" data-gtm-click-label="user-tags"> SONY <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SOX/" data-gtm-click-label="user-tags"> SOX <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SPARQL/" data-gtm-click-label="user-tags"> SPARQL <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SQL/" data-gtm-click-label="user-tags"> SQL <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/SSL/" data-gtm-click-label="user-tags"> SSL <span class="count">(151)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/TIF%20ASIA%20TOUR/" data-gtm-click-label="user-tags"> TIF ASIA TOUR <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/TLS/" data-gtm-click-label="user-tags"> TLS <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/TeX/" data-gtm-click-label="user-tags"> TeX <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/TypeScript/" class="is-current" data-gtm-click-label="user-tags"> TypeScript <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/VOCALOID/" data-gtm-click-label="user-tags"> VOCALOID <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/WUG/" data-gtm-click-label="user-tags"> WUG <span class="count">(2944)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/WUGZOO/" data-gtm-click-label="user-tags"> WUGZOO <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/WUG_JP/" data-gtm-click-label="user-tags"> WUG_JP <span class="count">(276)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/WordPress/" data-gtm-click-label="user-tags"> WordPress <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/X/" data-gtm-click-label="user-tags"> X <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/XSS/" data-gtm-click-label="user-tags"> XSS <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/Yahoo%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/" data-gtm-click-label="user-tags"> Yahooニュース <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/YouTube/" data-gtm-click-label="user-tags"> YouTube <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/aacs/" data-gtm-click-label="user-tags"> aacs <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ad/" data-gtm-click-label="user-tags"> ad <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/agile/" data-gtm-click-label="user-tags"> agile <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/agqr/" data-gtm-click-label="user-tags"> agqr <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/akiba/" data-gtm-click-label="user-tags"> akiba <span class="count">(287)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/alb4/" data-gtm-click-label="user-tags"> alb4 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/amazon/" data-gtm-click-label="user-tags"> amazon <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/amqp/" data-gtm-click-label="user-tags"> amqp <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/android/" data-gtm-click-label="user-tags"> android <span class="count">(134)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/anime/" data-gtm-click-label="user-tags"> anime <span class="count">(56)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/animesite/" data-gtm-click-label="user-tags"> animesite <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/anomaly/" data-gtm-click-label="user-tags"> anomaly <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ansible/" data-gtm-click-label="user-tags"> ansible <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/apache/" data-gtm-click-label="user-tags"> apache <span class="count">(142)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/aquarium/" data-gtm-click-label="user-tags"> aquarium <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/archives/" data-gtm-click-label="user-tags"> archives <span class="count">(92)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/aruaru/" data-gtm-click-label="user-tags"> aruaru <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/async/" data-gtm-click-label="user-tags"> async <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/atompub/" data-gtm-click-label="user-tags"> atompub <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/atproto/" data-gtm-click-label="user-tags"> atproto <span class="count">(71)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/authentication/" data-gtm-click-label="user-tags"> authentication <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/avchd/" data-gtm-click-label="user-tags"> avchd <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/azure/" data-gtm-click-label="user-tags"> azure <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bayes/" data-gtm-click-label="user-tags"> bayes <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bd/" data-gtm-click-label="user-tags"> bd <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/binaural/" data-gtm-click-label="user-tags"> binaural <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bitcoin/" data-gtm-click-label="user-tags"> bitcoin <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/blog/" data-gtm-click-label="user-tags"> blog <span class="count">(82)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bluesky/" data-gtm-click-label="user-tags"> bluesky <span class="count">(433)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bluetooth/" data-gtm-click-label="user-tags"> bluetooth <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/book/" data-gtm-click-label="user-tags"> book <span class="count">(91)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/booking/" data-gtm-click-label="user-tags"> booking <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bookmeter/" data-gtm-click-label="user-tags"> bookmeter <span class="count">(66)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bookshelf/" data-gtm-click-label="user-tags"> bookshelf <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bootstrap/" data-gtm-click-label="user-tags"> bootstrap <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bpm/" data-gtm-click-label="user-tags"> bpm <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/bus/" data-gtm-click-label="user-tags"> bus <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/buzz/" data-gtm-click-label="user-tags"> buzz <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/c72/" data-gtm-click-label="user-tags"> c72 <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/c73/" data-gtm-click-label="user-tags"> c73 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/c74/" data-gtm-click-label="user-tags"> c74 <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/c81/" data-gtm-click-label="user-tags"> c81 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/c85/" data-gtm-click-label="user-tags"> c85 <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cafehon/" data-gtm-click-label="user-tags"> cafehon <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/calendar/" data-gtm-click-label="user-tags"> calendar <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cap/" data-gtm-click-label="user-tags"> cap <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/captcha/" data-gtm-click-label="user-tags"> captcha <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/card/" data-gtm-click-label="user-tags"> card <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/catalyst/" data-gtm-click-label="user-tags"> catalyst <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/catv/" data-gtm-click-label="user-tags"> catv <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cgnat/" data-gtm-click-label="user-tags"> cgnat <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/chat/" data-gtm-click-label="user-tags"> chat <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/chef/" data-gtm-click-label="user-tags"> chef <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/chu2koi/" data-gtm-click-label="user-tags"> chu2koi <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cloud/" data-gtm-click-label="user-tags"> cloud <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/clubhouse/" data-gtm-click-label="user-tags"> clubhouse <span class="count">(61)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cmis/" data-gtm-click-label="user-tags"> cmis <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cms/" data-gtm-click-label="user-tags"> cms <span class="count">(54)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cojpin/" data-gtm-click-label="user-tags"> cojpin <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/colopl_msg/" data-gtm-click-label="user-tags"> colopl_msg <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/contactlist/" data-gtm-click-label="user-tags"> contactlist <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/cookie/" data-gtm-click-label="user-tags"> cookie <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/copyright/" data-gtm-click-label="user-tags"> copyright <span class="count">(117)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/coworking/" data-gtm-click-label="user-tags"> coworking <span class="count">(53)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/crm/" data-gtm-click-label="user-tags"> crm <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/crowds/" data-gtm-click-label="user-tags"> crowds <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dajax/" data-gtm-click-label="user-tags"> dajax <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/darkmail/" data-gtm-click-label="user-tags"> darkmail <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/datetime/" data-gtm-click-label="user-tags"> datetime <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dbic/" data-gtm-click-label="user-tags"> dbic <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/debian/" data-gtm-click-label="user-tags"> debian <span class="count">(113)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/design/" data-gtm-click-label="user-tags"> design <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dih/" data-gtm-click-label="user-tags"> dih <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/django/" data-gtm-click-label="user-tags"> django <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dns/" data-gtm-click-label="user-tags"> dns <span class="count">(361)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dnssec/" data-gtm-click-label="user-tags"> dnssec <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/docker/" data-gtm-click-label="user-tags"> docker <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dovecot/" data-gtm-click-label="user-tags"> dovecot <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dradio/" data-gtm-click-label="user-tags"> dradio <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/dreamweaver/" data-gtm-click-label="user-tags"> dreamweaver <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ebook/" data-gtm-click-label="user-tags"> ebook <span class="count">(70)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/economy/" data-gtm-click-label="user-tags"> economy <span class="count">(36)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/eft/" data-gtm-click-label="user-tags"> eft <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/elasticsearch/" data-gtm-click-label="user-tags"> elasticsearch <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/emacs/" data-gtm-click-label="user-tags"> emacs <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/email/" data-gtm-click-label="user-tags"> email <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/emoji/" data-gtm-click-label="user-tags"> emoji <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/epub/" data-gtm-click-label="user-tags"> epub <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/erlang/" data-gtm-click-label="user-tags"> erlang <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/eventernote/" data-gtm-click-label="user-tags"> eventernote <span class="count">(321)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/fabric/" data-gtm-click-label="user-tags"> fabric <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/facebook/" data-gtm-click-label="user-tags"> facebook <span class="count">(30)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/finance/" data-gtm-click-label="user-tags"> finance <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/firefox/" data-gtm-click-label="user-tags"> firefox <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/firefoxos/" data-gtm-click-label="user-tags"> firefoxos <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/flash/" data-gtm-click-label="user-tags"> flash <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/flask/" data-gtm-click-label="user-tags"> flask <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/fluentd/" data-gtm-click-label="user-tags"> fluentd <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/font/" data-gtm-click-label="user-tags"> font <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/framework/" data-gtm-click-label="user-tags"> framework <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gae/" data-gtm-click-label="user-tags"> gae <span class="count">(53)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gis/" data-gtm-click-label="user-tags"> gis <span class="count">(83)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/git/" data-gtm-click-label="user-tags"> git <span class="count">(127)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/github/" data-gtm-click-label="user-tags"> github <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gnucash/" data-gtm-click-label="user-tags"> gnucash <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/golang/" data-gtm-click-label="user-tags"> golang <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/google/" data-gtm-click-label="user-tags"> google <span class="count">(102)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gstreamer/" data-gtm-click-label="user-tags"> gstreamer <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gtk/" data-gtm-click-label="user-tags"> gtk <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/gumroad/" data-gtm-click-label="user-tags"> gumroad <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/hadoop/" data-gtm-click-label="user-tags"> hadoop <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/hanayamata/" data-gtm-click-label="user-tags"> hanayamata <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/haskell/" data-gtm-click-label="user-tags"> haskell <span class="count">(54)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/hddvd/" data-gtm-click-label="user-tags"> hddvd <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/heartbleed/" data-gtm-click-label="user-tags"> heartbleed <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/html/" data-gtm-click-label="user-tags"> html <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/html5/" data-gtm-click-label="user-tags"> html5 <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/http/" data-gtm-click-label="user-tags"> http <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/http-engine/" data-gtm-click-label="user-tags"> http-engine <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/iPad/" data-gtm-click-label="user-tags"> iPad <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/iPhone/" data-gtm-click-label="user-tags"> iPhone <span class="count">(69)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/iPhoneDev/" data-gtm-click-label="user-tags"> iPhoneDev <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/iTunes/" data-gtm-click-label="user-tags"> iTunes <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/i_Ris/" data-gtm-click-label="user-tags"> i_Ris <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/id/" data-gtm-click-label="user-tags"> id <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/identity/" data-gtm-click-label="user-tags"> identity <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/im/" data-gtm-click-label="user-tags"> im <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/inventory/" data-gtm-click-label="user-tags"> inventory <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/invest/" data-gtm-click-label="user-tags"> invest <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ipod/" data-gtm-click-label="user-tags"> ipod <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ipv4/" data-gtm-click-label="user-tags"> ipv4 <span class="count">(73)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ipv6/" data-gtm-click-label="user-tags"> ipv6 <span class="count">(248)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/irc/" data-gtm-click-label="user-tags"> irc <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/itmsj/" data-gtm-click-label="user-tags"> itmsj <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/iwatam/" data-gtm-click-label="user-tags"> iwatam <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/i%E2%98%86Ris/" data-gtm-click-label="user-tags"> i☆Ris <span class="count">(72)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/jabber/" data-gtm-click-label="user-tags"> jabber <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/japo/" data-gtm-click-label="user-tags"> japo <span class="count">(50)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/java/" data-gtm-click-label="user-tags"> java <span class="count">(46)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/javascript/" data-gtm-click-label="user-tags"> javascript <span class="count">(153)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/joqr/" data-gtm-click-label="user-tags"> joqr <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/jquery/" data-gtm-click-label="user-tags"> jquery <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/kindle/" data-gtm-click-label="user-tags"> kindle <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/kumofs/" data-gtm-click-label="user-tags"> kumofs <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/kvm/" data-gtm-click-label="user-tags"> kvm <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/l10n/" data-gtm-click-label="user-tags"> l10n <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/last/" data-gtm-click-label="user-tags"> last <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/lavabit/" data-gtm-click-label="user-tags"> lavabit <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/library/" data-gtm-click-label="user-tags"> library <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/libreoffice/" data-gtm-click-label="user-tags"> libreoffice <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/llfuture/" data-gtm-click-label="user-tags"> llfuture <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/load/" data-gtm-click-label="user-tags"> load <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/log4shell/" data-gtm-click-label="user-tags"> log4shell <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/lovelive/" data-gtm-click-label="user-tags"> lovelive <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mac/" data-gtm-click-label="user-tags"> mac <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/macdev/" data-gtm-click-label="user-tags"> macdev <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/machiasobi/" data-gtm-click-label="user-tags"> machiasobi <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/macosx/" data-gtm-click-label="user-tags"> macosx <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mail/" data-gtm-click-label="user-tags"> mail <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mailman/" data-gtm-click-label="user-tags"> mailman <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mailman3/" data-gtm-click-label="user-tags"> mailman3 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/manga/" data-gtm-click-label="user-tags"> manga <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mastodon/" data-gtm-click-label="user-tags"> mastodon <span class="count">(172)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/me/" data-gtm-click-label="user-tags"> me <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mediawiki/" data-gtm-click-label="user-tags"> mediawiki <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/memcached/" data-gtm-click-label="user-tags"> memcached <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/memento/" data-gtm-click-label="user-tags"> memento <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mercurial/" data-gtm-click-label="user-tags"> mercurial <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/metadata/" data-gtm-click-label="user-tags"> metadata <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/microformats/" data-gtm-click-label="user-tags"> microformats <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/miniskirt/" data-gtm-click-label="user-tags"> miniskirt <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mitt%20management/" data-gtm-click-label="user-tags"> mitt management <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mobile/" data-gtm-click-label="user-tags"> mobile <span class="count">(60)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/moe/" data-gtm-click-label="user-tags"> moe <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mogura/" data-gtm-click-label="user-tags"> mogura <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/moldova/" data-gtm-click-label="user-tags"> moldova <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mongodb/" data-gtm-click-label="user-tags"> mongodb <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mono/" data-gtm-click-label="user-tags"> mono <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/moose/" data-gtm-click-label="user-tags"> moose <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/multiprefix/" data-gtm-click-label="user-tags"> multiprefix <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/musicbrainz/" data-gtm-click-label="user-tags"> musicbrainz <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mutantworld/" data-gtm-click-label="user-tags"> mutantworld <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mynumber/" data-gtm-click-label="user-tags"> mynumber <span class="count">(84)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/mysql/" data-gtm-click-label="user-tags"> mysql <span class="count">(47)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/namesort/" data-gtm-click-label="user-tags"> namesort <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/namikichan/" data-gtm-click-label="user-tags"> namikichan <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ndl/" data-gtm-click-label="user-tags"> ndl <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/neo4j/" data-gtm-click-label="user-tags"> neo4j <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/nexusone/" data-gtm-click-label="user-tags"> nexusone <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/nosql/" data-gtm-click-label="user-tags"> nosql <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/nostr/" data-gtm-click-label="user-tags"> nostr <span class="count">(91)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/oauth/" data-gtm-click-label="user-tags"> oauth <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/objectivec/" data-gtm-click-label="user-tags"> objectivec <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/oculus/" data-gtm-click-label="user-tags"> oculus <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ogp/" data-gtm-click-label="user-tags"> ogp <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ohenro/" data-gtm-click-label="user-tags"> ohenro <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ontology/" data-gtm-click-label="user-tags"> ontology <span class="count">(91)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/openvz/" data-gtm-click-label="user-tags"> openvz <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/oricon/" data-gtm-click-label="user-tags"> oricon <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/osaifu/" data-gtm-click-label="user-tags"> osaifu <span class="count">(9)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/osm/" data-gtm-click-label="user-tags"> osm <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ostatus/" data-gtm-click-label="user-tags"> ostatus <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/osx/" data-gtm-click-label="user-tags"> osx <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/p2p/" data-gtm-click-label="user-tags"> p2p <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/panorama/" data-gtm-click-label="user-tags"> panorama <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/parser/" data-gtm-click-label="user-tags"> parser <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/party/" data-gtm-click-label="user-tags"> party <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/perl/" data-gtm-click-label="user-tags"> perl <span class="count">(366)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/photo/" data-gtm-click-label="user-tags"> photo <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/piketty/" data-gtm-click-label="user-tags"> piketty <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/pixiv/" data-gtm-click-label="user-tags"> pixiv <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/plack/" data-gtm-click-label="user-tags"> plack <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/plagger/" data-gtm-click-label="user-tags"> plagger <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/plone/" data-gtm-click-label="user-tags"> plone <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ponta/" data-gtm-click-label="user-tags"> ponta <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/portfolio/" data-gtm-click-label="user-tags"> portfolio <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/postfix/" data-gtm-click-label="user-tags"> postfix <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/prichan/" data-gtm-click-label="user-tags"> prichan <span class="count">(82)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/pripara/" data-gtm-click-label="user-tags"> pripara <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/privacy/" data-gtm-click-label="user-tags"> privacy <span class="count">(77)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/psgi/" data-gtm-click-label="user-tags"> psgi <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/pukiwiki/" data-gtm-click-label="user-tags"> pukiwiki <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/puppet/" data-gtm-click-label="user-tags"> puppet <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/python/" data-gtm-click-label="user-tags"> python <span class="count">(113)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/queue/" data-gtm-click-label="user-tags"> queue <span class="count">(59)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/radiko/" data-gtm-click-label="user-tags"> radiko <span class="count">(38)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/radio/" data-gtm-click-label="user-tags"> radio <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/realestate/" data-gtm-click-label="user-tags"> realestate <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/redmine/" data-gtm-click-label="user-tags"> redmine <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ren7/" data-gtm-click-label="user-tags"> ren7 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ruby/" data-gtm-click-label="user-tags"> ruby <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/rust/" data-gtm-click-label="user-tags"> rust <span class="count">(70)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/samba/" data-gtm-click-label="user-tags"> samba <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/scala/" data-gtm-click-label="user-tags"> scala <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/scrape/" data-gtm-click-label="user-tags"> scrape <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/secondlife/" data-gtm-click-label="user-tags"> secondlife <span class="count">(60)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/security/" data-gtm-click-label="user-tags"> security <span class="count">(248)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/semanticweb/" data-gtm-click-label="user-tags"> semanticweb <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/setlist/" data-gtm-click-label="user-tags"> setlist <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/shellshock/" data-gtm-click-label="user-tags"> shellshock <span class="count">(35)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/skype/" data-gtm-click-label="user-tags"> skype <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/slack/" data-gtm-click-label="user-tags"> slack <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/sns/" data-gtm-click-label="user-tags"> sns <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/solaris/" data-gtm-click-label="user-tags"> solaris <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/solr/" data-gtm-click-label="user-tags"> solr <span class="count">(49)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/spam/" data-gtm-click-label="user-tags"> spam <span class="count">(119)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/sso/" data-gtm-click-label="user-tags"> sso <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/storage/" data-gtm-click-label="user-tags"> storage <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/subversion/" data-gtm-click-label="user-tags"> subversion <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/swift/" data-gtm-click-label="user-tags"> swift <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/systemd/" data-gtm-click-label="user-tags"> systemd <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/t7s/" data-gtm-click-label="user-tags"> t7s <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/table/" data-gtm-click-label="user-tags"> table <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/tax/" data-gtm-click-label="user-tags"> tax <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/tel/" data-gtm-click-label="user-tags"> tel <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/template/" data-gtm-click-label="user-tags"> template <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/test/" data-gtm-click-label="user-tags"> test <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/thunderbird/" data-gtm-click-label="user-tags"> thunderbird <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/tipjar/" data-gtm-click-label="user-tags"> tipjar <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/trac/" data-gtm-click-label="user-tags"> trac <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/tti/" data-gtm-click-label="user-tags"> tti <span class="count">(75)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/twadbot/" data-gtm-click-label="user-tags"> twadbot <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/twitter/" data-gtm-click-label="user-tags"> twitter <span class="count">(199)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ubuntu/" data-gtm-click-label="user-tags"> ubuntu <span class="count">(99)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ui/" data-gtm-click-label="user-tags"> ui <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/unicode/" data-gtm-click-label="user-tags"> unicode <span class="count">(41)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/uri/" data-gtm-click-label="user-tags"> uri <span class="count">(43)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/vCard/" data-gtm-click-label="user-tags"> vCard <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/vagrant/" data-gtm-click-label="user-tags"> vagrant <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/validator/" data-gtm-click-label="user-tags"> validator <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/vista/" data-gtm-click-label="user-tags"> vista <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/w-zero3/" data-gtm-click-label="user-tags"> w-zero3 <span class="count">(27)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/waf/" data-gtm-click-label="user-tags"> waf <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wave/" data-gtm-click-label="user-tags"> wave <span class="count">(33)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/web/" data-gtm-click-label="user-tags"> web <span class="count">(52)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/web2.0/" data-gtm-click-label="user-tags"> web2.0 <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/webapp-N/" data-gtm-click-label="user-tags"> webapp-N <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wifi/" data-gtm-click-label="user-tags"> wifi <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wiki/" data-gtm-click-label="user-tags"> wiki <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wikidata/" data-gtm-click-label="user-tags"> wikidata <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wikipedia/" data-gtm-click-label="user-tags"> wikipedia <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/willcom/" data-gtm-click-label="user-tags"> willcom <span class="count">(42)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/windows/" data-gtm-click-label="user-tags"> windows <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/wowow/" data-gtm-click-label="user-tags"> wowow <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/ws027sh/" data-gtm-click-label="user-tags"> ws027sh <span class="count">(39)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/xml/" data-gtm-click-label="user-tags"> xml <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/xmpp/" data-gtm-click-label="user-tags"> xmpp <span class="count">(58)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/xz%20backdoor/" data-gtm-click-label="user-tags"> xz backdoor <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/yapcasia2010/" data-gtm-click-label="user-tags"> yapcasia2010 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%CE%BB/" data-gtm-click-label="user-tags"> λ <span class="count">(45)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%82%E3%81%AB%E3%82%85%E3%83%91/" data-gtm-click-label="user-tags"> あにゅパ <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%82%E3%81%AE%E9%A0%83%E3%80%82/" data-gtm-click-label="user-tags"> あの頃。 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%8B%E3%81%BF%E3%81%A1%E3%82%85!/" data-gtm-click-label="user-tags"> かみちゅ! <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%93%E3%81%AE%E4%B8%96%E7%95%8C%E3%81%AE%E7%89%87%E9%9A%85%E3%81%AB/" data-gtm-click-label="user-tags"> この世界の片隅に <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%A6%E3%82%93%E3%81%AE%E3%81%98%E6%9D%91/" data-gtm-click-label="user-tags"> てんのじ村 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%81%BC%E3%81%A3%E3%81%A1%E3%83%BB%E3%81%96%E3%83%BB%E3%82%8D%E3%81%A3%E3%81%8F%EF%BC%81/" data-gtm-click-label="user-tags"> ぼっち・ざ・ろっく! <span class="count">(1215)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%84%E3%81%8E%E3%81%AC%E3%81%BE%E3%81%8B%E3%81%AA/" data-gtm-click-label="user-tags"> やぎぬまかな <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%84%E3%81%8F%E3%81%AA%E3%82%89%E3%83%9E%E3%82%B0%E3%82%AB%E3%83%83%E3%83%97%E3%82%82/" data-gtm-click-label="user-tags"> やくならマグカップも <span class="count">(76)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%89%E3%81%8D%E2%98%86%E3%81%99%E3%81%9F/" data-gtm-click-label="user-tags"> らき☆すた <span class="count">(23)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A2%E3%82%A4%E3%83%89%E3%83%AB%E6%88%A6%E5%9B%BD%E6%99%82%E4%BB%A3/" data-gtm-click-label="user-tags"> アイドル戦国時代 <span class="count">(32)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A2%E3%83%8B%E3%83%A1/" data-gtm-click-label="user-tags"> アニメ <span class="count">(289)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A2%E3%83%8B%E3%83%A1%E5%8C%96/" data-gtm-click-label="user-tags"> アニメ化 <span class="count">(42)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A2%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%BF/" data-gtm-click-label="user-tags"> アニュータ <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A4%E3%82%BB%E3%82%B9%E3%83%9E/" data-gtm-click-label="user-tags"> イセスマ <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A6%E3%83%9E%E5%A8%98/" data-gtm-click-label="user-tags"> ウマ娘 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%A8%E3%83%B4%E3%82%A1/" data-gtm-click-label="user-tags"> エヴァ <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%AA%E3%82%BF%E3%82%AF/" data-gtm-click-label="user-tags"> オタク <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%AA%E3%83%AA%E3%83%BC%E3%83%96%E3%81%AE%E6%9C%A8/" data-gtm-click-label="user-tags"> オリーブの木 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%AC%E3%83%BC%E3%83%AB%E3%82%BA%E3%83%90%E3%83%B3%E3%83%89%E3%82%AF%E3%83%A9%E3%82%A4/" data-gtm-click-label="user-tags"> ガールズバンドクライ <span class="count">(64)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%B2%E3%83%BC%E3%83%A0%E8%84%B3/" data-gtm-click-label="user-tags"> ゲーム脳 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%B3%E3%82%B3%E3%81%A0%E3%81%91%E3%81%AE%E3%83%8F%E3%83%8A%E3%82%B7/" data-gtm-click-label="user-tags"> ココだけのハナシ <span class="count">(26)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%B3%E3%83%9F%E3%82%B1/" data-gtm-click-label="user-tags"> コミケ <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%E3%83%87%E3%83%A2/" data-gtm-click-label="user-tags"> サウンドデモ <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%88%E3%82%B2%E3%83%8A%E3%82%B7%E3%83%88%E3%82%B2%E3%82%A2%E3%83%AA/" data-gtm-click-label="user-tags"> トゲナシトゲアリ <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%88%E3%83%A9%E3%83%9A%E3%82%B8%E3%82%A6%E3%83%A0/" data-gtm-click-label="user-tags"> トラペジウム <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%89%E3%83%88%E3%83%BC%E3%83%AB/" data-gtm-click-label="user-tags"> ドトール <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%8D%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> ネット <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%8F%E3%83%83%E3%82%AB%E3%83%89%E3%83%BC%E3%83%AB/" data-gtm-click-label="user-tags"> ハッカドール <span class="count">(120)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%96%E3%82%B7%E3%83%AD%E3%83%BC%E3%83%89/" data-gtm-click-label="user-tags"> ブシロード <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%96%E3%83%AB%E3%83%BC%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%96/" data-gtm-click-label="user-tags"> ブルーアーカイブ <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%97%E3%83%AA%E3%82%BA%E3%83%A0%E3%83%BB%E3%83%8A%E3%83%8A/" data-gtm-click-label="user-tags"> プリズム・ナナ <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%9E%E3%82%A4%E3%83%8A%E3%83%93%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/" data-gtm-click-label="user-tags"> マイナビニュース <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%AF%E3%82%B0%E3%82%B9%E3%83%86/" data-gtm-click-label="user-tags"> ワグステ <span class="count">(21)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E3%83%BD(%60%D0%94%C2%B4)%EF%BE%89/" data-gtm-click-label="user-tags"> ヽ(`Д´)ノ <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%B8%80%E5%A4%9C%E3%81%A5%E3%81%91/" data-gtm-click-label="user-tags"> 一夜づけ <span class="count">(41)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%B8%89%E4%BA%95%E5%BE%8B%E9%83%8E/" data-gtm-click-label="user-tags"> 三井律郎 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%B8%8A%E7%94%B0%E9%BA%97%E5%A5%88/" data-gtm-click-label="user-tags"> 上田麗奈 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%B8%8B%E5%8C%97%E6%B2%A2/" data-gtm-click-label="user-tags"> 下北沢 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%B8%98%E3%83%95%E3%82%A7%E3%82%B9/" data-gtm-click-label="user-tags"> 丘フェス <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%BD%8F%E6%89%80/" data-gtm-click-label="user-tags"> 住所 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E4%BD%90%E3%80%85%E6%9C%A8%E6%9D%8E%E5%AD%90/" data-gtm-click-label="user-tags"> 佐々木李子 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%83%95%E3%81%A8%E4%B8%89%E5%8E%9F%E8%89%B2/" data-gtm-click-label="user-tags"> 僕と三原色 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF/" data-gtm-click-label="user-tags"> 初音ミク <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%89%8D%E7%94%B0%E4%BD%B3%E7%B9%94%E9%87%8C/" data-gtm-click-label="user-tags"> 前田佳織里 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%8A%A0%E8%97%A4%E8%8B%B1%E7%BE%8E%E9%87%8C/" data-gtm-click-label="user-tags"> 加藤英美里 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%8D%93%E7%90%83%E5%A8%98/" data-gtm-click-label="user-tags"> 卓球娘 <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%8E%9A%E6%9C%A8%E9%82%A3%E5%A5%88%E7%BE%8E/" data-gtm-click-label="user-tags"> 厚木那奈美 <span class="count">(166)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%90%89%E5%B2%A1%E8%8C%89%E7%A5%90/" data-gtm-click-label="user-tags"> 吉岡茉祐 <span class="count">(181)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%9C%B0%E7%90%83%E5%A4%96/" data-gtm-click-label="user-tags"> 地球外 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%A3%B0%E5%84%AA/" data-gtm-click-label="user-tags"> 声優 <span class="count">(19)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%A4%A7%E4%B9%85%E4%BF%9D%E7%91%A0%E7%BE%8E/" data-gtm-click-label="user-tags"> 大久保瑠美 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%A4%A7%E5%9D%AA%E7%94%B1%E4%BD%B3/" data-gtm-click-label="user-tags"> 大坪由佳 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%A5%A5%E9%87%8E%E9%A6%99%E8%80%B6/" data-gtm-click-label="user-tags"> 奥野香耶 <span class="count">(131)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B0%8F%E6%97%A5%E5%90%91%E7%BE%8E%E9%A6%99/" data-gtm-click-label="user-tags"> 小日向美香 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B0%8F%E6%9E%97%E7%AB%9C%E4%B9%8B/" data-gtm-click-label="user-tags"> 小林竜之 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B0%8F%E6%A8%BD%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%83%BC/" data-gtm-click-label="user-tags"> 小樽アニメパーティー <span class="count">(31)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B1%B1%E4%B8%8B%E4%B8%83%E6%B5%B7/" data-gtm-click-label="user-tags"> 山下七海 <span class="count">(199)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B1%B1%E5%B4%8E%E3%81%AF%E3%82%8B%E3%81%8B/" data-gtm-click-label="user-tags"> 山崎はるか <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B1%B1%E5%B4%8E%E3%82%A8%E3%83%AA%E3%82%A4/" data-gtm-click-label="user-tags"> 山崎エリイ <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B3%AF%E7%94%B0%E8%8C%89%E5%84%AA/" data-gtm-click-label="user-tags"> 峯田茉優 <span class="count">(22)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E5%B8%82%E5%B7%9D%E5%B8%82/" data-gtm-click-label="user-tags"> 市川市 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%81%8B%E6%84%9B%E6%9A%B4%E5%90%9B/" data-gtm-click-label="user-tags"> 恋愛暴君 <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%94%BF%E5%BA%9C%E7%B4%99%E5%B9%A3/" data-gtm-click-label="user-tags"> 政府紙幣 <span class="count">(37)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%96%87%E5%AD%97/" data-gtm-click-label="user-tags"> 文字 <span class="count">(55)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%99%82%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E5%B0%91%E5%A5%B3/" data-gtm-click-label="user-tags"> 時をかける少女 <span class="count">(92)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%99%AF%E8%A6%B3/" data-gtm-click-label="user-tags"> 景観 <span class="count">(12)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%9D%89%E4%B8%8B%E6%B7%B3%E7%94%9F/" data-gtm-click-label="user-tags"> 杉下淳生 <span class="count">(25)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%9E%97%E9%BC%93%E5%AD%90/" data-gtm-click-label="user-tags"> 林鼓子 <span class="count">(282)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%A3%AE%E5%B6%8B%E5%84%AA%E8%8A%B1/" data-gtm-click-label="user-tags"> 森嶋優花 <span class="count">(135)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%B0%B4%E9%87%8E%E6%9C%94/" data-gtm-click-label="user-tags"> 水野朔 <span class="count">(34)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%B0%B8%E9%87%8E%E6%84%9B%E7%90%86/" data-gtm-click-label="user-tags"> 永野愛理 <span class="count">(88)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%B1%9F%E5%8E%9F%E8%A3%95%E7%90%86/" data-gtm-click-label="user-tags"> 江原裕理 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%B6%BC%E5%AE%AE%E3%83%8F%E3%83%AB%E3%83%92/" data-gtm-click-label="user-tags"> 涼宮ハルヒ <span class="count">(165)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%B8%A9%E6%B3%89%E3%82%80%E3%81%99%E3%82%81/" data-gtm-click-label="user-tags"> 温泉むすめ <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E6%BC%AB%E7%94%BB/" data-gtm-click-label="user-tags"> 漫画 <span class="count">(17)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%80%AC%E5%B0%BB%E7%A8%9C/" data-gtm-click-label="user-tags"> 瀬尻稜 <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%94%B0%E4%B8%AD%E7%BE%8E%E6%B5%B7/" data-gtm-click-label="user-tags"> 田中美海 <span class="count">(228)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%A8%B2%E5%9E%A3%E5%A5%BD/" data-gtm-click-label="user-tags"> 稲垣好 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%AB%8B%E7%9F%B3%E5%87%9B/" data-gtm-click-label="user-tags"> 立石凛 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%B5%90%E6%9D%9F%E3%83%90%E3%83%B3%E3%83%89/" data-gtm-click-label="user-tags"> 結束バンド <span class="count">(120)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%B5%90%E6%9D%9F%E3%83%90%E3%83%B3%E3%83%89%E6%81%92%E6%98%9F/" data-gtm-click-label="user-tags"> 結束バンド恒星 <span class="count">(15)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E7%BE%8A%E5%AE%AE%E5%A6%83%E9%82%A3/" data-gtm-click-label="user-tags"> 羊宮妃那 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%87%AA%E8%BB%A2%E8%BB%8A/" data-gtm-click-label="user-tags"> 自転車 <span class="count">(84)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%88%9E%E5%8F%B0%E3%81%BC%E3%81%A3%E3%81%A1/" data-gtm-click-label="user-tags"> 舞台ぼっち <span class="count">(28)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%8A%8B%E5%B7%9D%E6%A4%8B%E4%B8%89/" data-gtm-click-label="user-tags"> 芋川椋三 <span class="count">(29)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%8A%B1%E9%9A%88%E5%8D%83%E5%86%AC/" data-gtm-click-label="user-tags"> 花隈千冬 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%8A%B9%E6%BE%A4%E5%84%AA/" data-gtm-click-label="user-tags"> 芹澤優 <span class="count">(18)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%8B%A5%E4%BA%95%E5%8F%8B%E5%B8%8C/" data-gtm-click-label="user-tags"> 若井友希 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%90%8C%E3%81%88/" data-gtm-click-label="user-tags"> 萌え <span class="count">(44)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E8%99%B9%E3%83%B6%E5%92%B2/" data-gtm-click-label="user-tags"> 虹ヶ咲 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%88%B4%E3%81%AE%E9%9F%B3/" data-gtm-click-label="user-tags"> 鈴の音 <span class="count">(10)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%88%B4%E4%BB%A3%E7%B4%97%E5%BC%93/" data-gtm-click-label="user-tags"> 鈴代紗弓 <span class="count">(24)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%88%B4%E6%9C%A8%E6%9D%8F%E5%A5%88/" data-gtm-click-label="user-tags"> 鈴木杏奈 <span class="count">(14)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%89%84/" data-gtm-click-label="user-tags"> 鉄 <span class="count">(16)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%95%B7%E8%B0%B7%E5%B7%9D%E8%82%B2%E7%BE%8E/" data-gtm-click-label="user-tags"> 長谷川育美 <span class="count">(40)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%96%83%E5%85%89%E3%83%A9%E3%82%A4%E3%82%AA%E3%83%83%E3%83%88/" data-gtm-click-label="user-tags"> 閃光ライオット <span class="count">(20)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%9B%BB%E6%B3%A2%E7%94%B7/" data-gtm-click-label="user-tags"> 電波男 <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%9D%92%E5%B1%B1%E5%90%89%E8%83%BD/" data-gtm-click-label="user-tags"> 青山吉能 <span class="count">(452)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%9D%92%E6%9C%A8%E9%99%BD%E8%8F%9C/" data-gtm-click-label="user-tags"> 青木陽菜 <span class="count">(11)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%A3%9B%E8%A1%8C%E8%88%B9%E3%82%B7%E3%82%A2%E3%82%BF%E3%83%BC/" data-gtm-click-label="user-tags"> 飛行船シアター <span class="count">(13)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%AB%98%E6%9C%A8%E7%BE%8E%E4%BD%91/" data-gtm-click-label="user-tags"> 高木美佑 <span class="count">(145)</span> </a> </li> <li class="js-frequent-tag is-hidden"> <a href="/mickn/%E9%AB%98%E9%87%8E%E9%BA%BB%E9%87%8C%E4%BD%B3/" data-gtm-click-label="user-tags"> 高野麻里佳 <span class="count">(17)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/WUG/" data-gtm-click-label="user-tags"> WUG <span class="count">(2944)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/%E3%81%BC%E3%81%A3%E3%81%A1%E3%83%BB%E3%81%96%E3%83%BB%E3%82%8D%E3%81%A3%E3%81%8F%EF%BC%81/" data-gtm-click-label="user-tags"> ぼっち・ざ・ろっく! <span class="count">(1215)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/RGR/" data-gtm-click-label="user-tags"> RGR <span class="count">(606)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/%E9%9D%92%E5%B1%B1%E5%90%89%E8%83%BD/" data-gtm-click-label="user-tags"> 青山吉能 <span class="count">(452)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/bluesky/" data-gtm-click-label="user-tags"> bluesky <span class="count">(433)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/perl/" data-gtm-click-label="user-tags"> perl <span class="count">(366)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/dns/" data-gtm-click-label="user-tags"> dns <span class="count">(361)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/eventernote/" data-gtm-click-label="user-tags"> eventernote <span class="count">(321)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/%E3%82%A2%E3%83%8B%E3%83%A1/" data-gtm-click-label="user-tags"> アニメ <span class="count">(289)</span> </a> </li> <li class="js-most-frequent-tag"> <a href="/mickn/akiba/" data-gtm-click-label="user-tags"> akiba <span class="count">(287)</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">関連タグで絞り込む (15)</h3> <ul class="centerarticle-sub-navi"> <li> <a href="/mickn/TypeScript/aspida/" > aspida </a> </li> <li> <a href="/mickn/TypeScript/BFF/" > BFF </a> </li> <li> <a href="/mickn/TypeScript/flow/" > flow </a> </li> <li> <a href="/mickn/TypeScript/GraphQL/" > GraphQL </a> </li> <li> <a href="/mickn/TypeScript/javascript/" > javascript </a> </li> <li> <a href="/mickn/TypeScript/JSX/" > JSX </a> </li> <li> <a href="/mickn/TypeScript/Nexus/" > Nexus </a> </li> <li> <a href="/mickn/TypeScript/OpenAPI/" > OpenAPI </a> </li> <li> <a href="/mickn/TypeScript/PostgreSQL/" > PostgreSQL </a> </li> <li> <a href="/mickn/TypeScript/react/" > react </a> </li> <li> <a href="/mickn/TypeScript/React/" > React </a> </li> <li> <a href="/mickn/TypeScript/Redux/" > Redux </a> </li> <li> <a href="/mickn/TypeScript/swr/" > swr </a> </li> <li> <a href="/mickn/TypeScript/typescript/" > typescript </a> </li> <li> <a href="/mickn/TypeScript/Typescript/" > Typescript </a> </li> </ul> <p class="centerarticle-sub-navi-more"> <a href="/mickn/bookmark">タグの絞り込みを解除</a> </p> </div> </div> <div class="center-container"> <div class="centerarticle-title-container"> <h2 class="centerarticle-title"> TypeScriptに関するmicknのブックマーク (24) </h2> </div> <div class="js-user-bookmark-item-autoload-container" data-next-page-path="/mickn/TypeScript/?page=2" data-next-xhr-path="/api/users/mickn/bookmarks?tag=TypeScript&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="/mickn/{{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="/mickn/{{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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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://blog.koh.dev/2024-04-23-nodejs-typescript-module/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://blog.koh.dev/2024-04-23-nodejs-typescript-module/" 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.koh.dev%2F2024-04-23-nodejs-typescript-module%2F" alt="">Node.js + TypeScriptのモジュールを整理してみる</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/blog.koh.dev/2024-04-23-nodejs-typescript-module/" class="js-keyboard-entry-page-openable" title="Node.js + TypeScriptのモジュールを整理してみる (179ブックマーク)" data-gtm-click-label="user-bookmark-users">179 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fblog.koh.dev%2F" title="『blog.koh.dev』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> blog.koh.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">はじめにlink 最近受けるNode.js + <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>環境の<a data-gtm-click-label="entry-summary-keyword" href="/q/%E7%9B%B8%E8%AB%87">相談</a>の中で、Co<a data-gtm-click-label="entry-summary-keyword" href="/q/MMO">mmo</a>nJSやECMAScript Modulesのあたりで落とし穴にはまっている人が多いという事に気づいた。 Node.jsは<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%AD%B4%E5%8F%B2">歴史</a>的にCo<a data-gtm-click-label="entry-summary-keyword" href="/q/MMO">mmo</a>nJSとECMAScript Modules(以後ESMと表記)がどうしても入り乱れる環境にあり、これに<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>のモジュールが加わると組み合わせでさらに複雑度が増すのが現状である。 説明する際に口頭より整理した文章が欲しいと思ったので記事にする。 以下のリポジトリで検証コードを管理している。 https://<a data-gtm-click-label="entry-summary-keyword" href="/q/github">github</a>.com/koh110/module_test Node.jsモジュールチェックシートlink まず最初にNode.jsにおけるCo<a data-gtm-click-label="entry-summary-keyword" href="/q/MMO">mmo</a>nJSとESMの挙動について整理する。 いきなり書かれても把握できないかもしれないが、一旦こ</p> <a href="https://blog.koh.dev/2024-04-23-nodejs-typescript-module/" 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/e433d2afc1db15fdf4fbbaa3d90f1713d49372cb/height=288;version=1;width=512/https%3A%2F%2Fblog.koh.dev%2Fogimg%2F2024-04-23-nodejs-typescript-module.png" alt="Node.js + TypeScriptのモジュールを整理してみる"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4752470174155965888"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://blog.koh.dev/2024-04-23-nodejs-typescript-module/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20240425#bookmark-4752470174155965888" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2024/04/25</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/javascript/" data-gtm-click-label="user-reaction-tag">javascript</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4752470174155965888/comment/mickn" 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://typescript-jp.gitbook.io/deep-dive/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://typescript-jp.gitbook.io/deep-dive/" 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%2Ftypescript-jp.gitbook.io%2Fdeep-dive" alt="">TypeScript Deep Dive 日本語版 | TypeScript Deep Dive 日本語版</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/typescript-jp.gitbook.io/deep-dive" class="js-keyboard-entry-page-openable" title="TypeScript Deep Dive 日本語版 | TypeScript Deep Dive 日本語版 (920ブックマーク)" data-gtm-click-label="user-bookmark-users">920 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Ftypescript-jp.gitbook.io%2F" title="『typescript-jp.gitbook.io』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> typescript-jp.gitbook.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">出典: https://www.n<a data-gtm-click-label="entry-summary-keyword" href="/q/PM">pm</a><a data-gtm-click-label="entry-summary-keyword" href="/q/trend">trend</a>s.com/<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">typescript</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>は<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>を拡張して作られたプログラミング言語です。トレンドが示すとおり、<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>は<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>に代わって第一に選択される言語になりました。<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>が提供する静的型システムは、コードの保守性と可読性を大幅に向上させます。またブラウザ等の互換性を心配することなく、モダンで便利な<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>の機能を利用できます。 <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> DeepDiveは初心者からベテランまで役立つオープンソースのドキュメントです。<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>のモダンな機能から<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>の様々な魔法に至るまで丁寧に説明されています。多くのコードサンプルがあり、具体的な<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>の使い方を簡単に理解できます。<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> DeepDive日<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a></p> <a href="https://typescript-jp.gitbook.io/deep-dive" 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/b34d4f23f185ffd20c2762acb9d62698d8f2fbd9/height=288;version=1;width=512/https%3A%2F%2Ftypescript-jp.gitbook.io%2Fdeep-dive%2F~gitbook%2Fogimage%2FvbcIMEdc8kpYel67jYSG" alt="TypeScript Deep Dive 日本語版 | TypeScript Deep Dive 日本語版"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-375094151"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://typescript-jp.gitbook.io/deep-dive/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20220530#bookmark-375094151" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2022/05/30</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="/mickn/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/375094151/comment/mickn" 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://qiita.com/suin/items/fc19f0109dd876e6ecbf"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/suin/items/fc19f0109dd876e6ecbf" 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%2Fqiita.com%2Fsuin%2Fitems%2Ffc19f0109dd876e6ecbf" alt="">SEOに強いTypeScript入門記事がミスリードを招いていて絶望しかけた - Qiita</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/suin/items/fc19f0109dd876e6ecbf" class="js-keyboard-entry-page-openable" title="SEOに強いTypeScript入門記事がミスリードを招いていて絶望しかけた - Qiita (210ブックマーク)" data-gtm-click-label="user-bookmark-users">210 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fqiita.com%2Fsuin" title="『qiita.com/suin』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> qiita.com/suin </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/TypeScript">TypeScript</a>とは」などシングルワードの検索結果に強い<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>入門記事の多くに、誤解を招く内容があることを確認しています。 以下にあげる記事を参考にされた方は情報のアップ<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%83%87%E3%83%BC%E3%83%88">デート</a>をしていただきたいですし、記事を公開しているメディアにおきましては内容を見直していただけるとありがたいです。 <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>ならクラスが書ける 「<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>にはクラスがない、<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>にはクラスがある」「ゆえに読みやすい短いコードが書ける」といった記述が見られますがこれは誤解です。 <a data-gtm-click-label="entry-summary-keyword" href="/q/udemy">Udemy</a> メディア - <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>と<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>の違い「<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</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/TypeScript">TypeScript</a>では、<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>でできなかった「クラス」の作成を実現しています。複雑で大規模な開発を行うとき、<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>ではコ</p> <a href="https://qiita.com/suin/items/fc19f0109dd876e6ecbf" 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/2e12420fc2e35c22ef8db8c81cd6f06e717c2ae5/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9U0VPJUUzJTgxJUFCJUU1JUJDJUI3JUUzJTgxJTg0VHlwZVNjcmlwdCVFNSU4NSVBNSVFOSU5NiU4MCVFOCVBOCU5OCVFNCVCQSU4QiVFMyU4MSU4QyVFMyU4MyU5RiVFMyU4MiVCOSVFMyU4MyVBQSVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MiU5MiVFNiU4QiU5QiVFMyU4MSU4NCVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MSVBNiVFNyVCNSVCNiVFNiU5QyU5QiVFMyU4MSU5NyVFMyU4MSU4QiVFMyU4MSU5MSVFMyU4MSU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MTBmZmZmZTUxNTI2MWRlZGVkMmVkNWU3YjU0MWY1NWM%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzdWluJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wMmNiMDRkYmM5YTE5NjlkMWUyMzlhNTg4NGFiYzQ4ZA%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Df48ebb696ccb37caaeedbe99bc8e6b19" alt="SEOに強いTypeScript入門記事がミスリードを招いていて絶望しかけた - Qiita"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4720141564234091522"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://qiita.com/suin/items/fc19f0109dd876e6ecbf" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20220527#bookmark-4720141564234091522" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2022/05/27</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/javascript/" data-gtm-click-label="user-reaction-tag">javascript</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4720141564234091522/comment/mickn" 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/purenium/articles/nextjs-recoil-tic-tac-toe"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/purenium/articles/nextjs-recoil-tic-tac-toe" 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%2Fpurenium%2Farticles%2Fnextjs-recoil-tic-tac-toe" alt="">Next.js + TypeScript + Recoil + Herp社ESLint Config でReactチュートリアルを作る。</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/purenium/articles/nextjs-recoil-tic-tac-toe" class="js-keyboard-entry-page-openable" title="Next.js + TypeScript + Recoil + Herp社ESLint Config でReactチュートリアルを作る。 (41ブックマーク)" data-gtm-click-label="user-bookmark-users">41 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fzenn.dev%2Fpurenium" title="『zenn.dev/purenium』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/purenium </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/react">React</a> のチュートリアルの三目並べを <a data-gtm-click-label="entry-summary-keyword" href="/q/Next.js">Next.js</a> 12 + <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> + Recoil + @herp-inc/es<a data-gtm-click-label="entry-summary-keyword" href="/q/lint">lint</a>-config の構成で、新しめの記述を取り入れた形に書き直してみた。 (上記のリポジトリにすべてのコードを掲載した。) コンセプトは、 <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>の型チェックと厳しめのES<a data-gtm-click-label="entry-summary-keyword" href="/q/lint">Lint</a>ルールでバグが起きづらい形にし、スケールしても内部品質を担保。 <a data-gtm-click-label="entry-summary-keyword" href="/q/Next.js">Next.js</a>で作ることにより、ブラウザでのパフォーマンスと開発体験の向上 である。 改良したいポイント <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> のチュートリアルの三目並べ(マルバツ<a data-gtm-click-label="entry-summary-keyword" href="/q/%E3%82%B2%E3%83%BC%E3%83%A0">ゲーム</a>)の公式サイトに掲載されている元のコードは以下である。 この code に関して、以下のような課題が考えられる。 <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> の書き方が、現在では非推奨のクラスコンポーネントである。(関数コンポーネント + <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a></p> <a href="https://zenn.dev/purenium/articles/nextjs-recoil-tic-tac-toe" 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/f89a053b1fd3fb1beb76f84cec1c03fae07e690a/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--Ls7PMhXC--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ANext.js%252520%25252B%252520TypeScript%252520%25252B%252520Recoil%252520%25252B%252520Herp%2525E7%2525A4%2525BEESLint%252520Config%252520%2525E3%252581%2525A7React...%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3A%2525E7%252584%2525A1%2525E5%252590%25258D%2525E9%25259A%2525B1%2525E8%252580%252585%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2FkNTlhNDlkYTMuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Next.js + TypeScript + Recoil + Herp社ESLint Config でReactチュートリアルを作る。"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4713614979101670466"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/purenium/articles/nextjs-recoil-tic-tac-toe" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20220107#bookmark-4713614979101670466" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2022/01/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="/mickn/react/" data-gtm-click-label="user-reaction-tag">react</a></li> <li><a href="/mickn/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/4713614979101670466/comment/mickn" 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://javascript.plainenglish.io/a-cleaner-api-for-react-ts-components-47d0704a508c"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://javascript.plainenglish.io/a-cleaner-api-for-react-ts-components-47d0704a508c" 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%2Fjavascript.plainenglish.io%2Fa-cleaner-api-for-react-ts-components-47d0704a508c" alt="">A cleaner API for React TS components</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/javascript.plainenglish.io/a-cleaner-api-for-react-ts-components-47d0704a508c" class="js-keyboard-entry-page-openable" title="A cleaner API for React TS components (4ブックマーク)" data-gtm-click-label="user-bookmark-users">4 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fjavascript.plainenglish.io%2F" title="『javascript.plainenglish.io』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> javascript.plainenglish.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">Photo by Danny Howe on UnsplashI hope this art<a data-gtm-click-label="entry-summary-keyword" href="/q/ICL">icl</a>e shares some light on how to <a data-gtm-click-label="entry-summary-keyword" href="/q/Build">build</a> better <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> components leveraging <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>. This post is an outcome of the efforts of <a data-gtm-click-label="entry-summary-keyword" href="/q/Build">build</a>ing taggr, the <a data-gtm-click-label="entry-summary-keyword" href="/q/privacy">privacy</a>-focused <a data-gtm-click-label="entry-summary-keyword" href="/q/ai">AI</a> gallery. While <a data-gtm-click-label="entry-summary-keyword" href="/q/Build">build</a>ing taggr, I <a data-gtm-click-label="entry-summary-keyword" href="/q/go">go</a>t deeper into <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>, and so far I am loving the added capabil<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>ies for annotating types and catching <a data-gtm-click-label="entry-summary-keyword" href="/q/ERR">err</a>ors at compile time, instead off at runtime</p> <a href="https://javascript.plainenglish.io/a-cleaner-api-for-react-ts-components-47d0704a508c" 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/d5c10bb43426209c26d653f45194d38280117129/height=288;version=1;width=512/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fda%3Atrue%2Fresize%3Afit%3A1200%2F0%2AtSW6AxNWNhUJcULK" alt="A cleaner API for React TS components"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4699876349904315906"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://javascript.plainenglish.io/a-cleaner-api-for-react-ts-components-47d0704a508c" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210316#bookmark-4699876349904315906" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/03/16</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="/mickn/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/4699876349904315906/comment/mickn" 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.typescriptlang.org/docs/handbook/intro.html"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://www.typescriptlang.org/docs/handbook/intro.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.typescriptlang.org%2Fdocs%2Fhandbook%2Fintro.html" alt="">Handbook - The TypeScript Handbook</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.typescriptlang.org/docs/handbook/intro.html" class="js-keyboard-entry-page-openable" title="Handbook - The TypeScript Handbook (101ブックマーク)" data-gtm-click-label="user-bookmark-users">101 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fwww.typescriptlang.org%2F" title="『www.typescriptlang.org』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.typescriptlang.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">About this Han<a data-gtm-click-label="entry-summary-keyword" href="/q/DB">db</a>ook Over 20 years after <a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>s introduction to the <a data-gtm-click-label="entry-summary-keyword" href="/q/programming">programming</a> comm<a data-gtm-click-label="entry-summary-keyword" href="/q/Unity">unity</a>, <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a> is now one of the most widespread 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> languages ever <a data-gtm-click-label="entry-summary-keyword" href="/q/CRE">cre</a>ated. Starting as a small scripting language for adding trivial interactiv<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>y to webpages, <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a> has grown to be a language of choice for both frontend and backend applications of every size. While the size, scope, and complex<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>y</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4689519992053243554"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.typescriptlang.org/docs/handbook/intro.html" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210306#bookmark-4689519992053243554" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/03/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="/mickn/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/4689519992053243554/comment/mickn" 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/himenon/articles/bebdd5e8fc215a"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/himenon/articles/bebdd5e8fc215a" 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%2Fhimenon%2Farticles%2Fbebdd5e8fc215a" alt="">OpenAPI SchemaからTypeScript Code Generatorを作ったので紹介します</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/himenon/articles/bebdd5e8fc215a" class="js-keyboard-entry-page-openable" title="OpenAPI SchemaからTypeScript Code Generatorを作ったので紹介します (60ブックマーク)" data-gtm-click-label="user-bookmark-users">60 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fzenn.dev%2Fhimenon" title="『zenn.dev/himenon』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/himenon </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/TypeScript">TypeScript</a>に変換する記事を観測したので、JSONSch<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>aを経由して<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>のコードに吐き出すライブラリを作りました。<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>記事のコアロジックの部分を抽出した形です。 <a data-gtm-click-label="entry-summary-keyword" href="/q/openapi">OpenAPI</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> Code Generatorとの違いとして、ルートの名前空間を廃止しているので、割と自由に書ける様になってます。 https://www.n<a data-gtm-click-label="entry-summary-keyword" href="/q/PM">pm</a>js.com/package/@himenon/jsonsch<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>a2ts</p> <a href="https://zenn.dev/himenon/articles/bebdd5e8fc215a" 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/a488d32ca7469a5486e9561451eaf055a7579ea7/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--_1OtfzF5--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AOpenAPI%252520Schema%2525E3%252581%25258B%2525E3%252582%252589TypeScript%252520Code%252520Generator%2525E3%252582%252592%2525E4%2525BD%25259C%2525E3%252581%2525A3%2525E3%252581%25259F%2525E3%252581%2525AE%2525E3%252581%2525A7%2525E7%2525B4%2525B9%2525E4%2525BB%25258B%2525E3%252581%252597%2525E3%252581%2525BE%2525E3%252581%252599%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AHimenon%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzAyYTk5ZGU3MDQuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="OpenAPI SchemaからTypeScript Code Generatorを作ったので紹介します"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4696968125748794722"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/himenon/articles/bebdd5e8fc215a" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210227#bookmark-4696968125748794722" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/02/27</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/OpenAPI/" data-gtm-click-label="user-reaction-tag">OpenAPI</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4696968125748794722/comment/mickn" 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/yutama_kotaro/articles/43ac06011d3b47"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/yutama_kotaro/articles/43ac06011d3b47" 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%2Fyutama_kotaro%2Farticles%2F43ac06011d3b47" alt="">TypeScript 4.2 覚書</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/yutama_kotaro/articles/43ac06011d3b47" class="js-keyboard-entry-page-openable" title="TypeScript 4.2 覚書 (94ブックマーク)" data-gtm-click-label="user-bookmark-users">94 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fzenn.dev%2Fyutama_kotaro" title="『zenn.dev/yutama_kotaro』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> zenn.dev/yutama_kotaro </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">こちらの記事のまとめになります。 タプルの先頭と途中でもRest El<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>entsを置けるようになる タプルの先頭と途中にRestEl<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>entsを置くことができるようになります。 タプルいいですよね。僕は好きです。 // leading Rest El<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>ent let a = [...string[], boolean]; a = [true]; a = ['1', '2', false]; // middle Rest El<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>ent let b = [boolean, ...string[], number]; b = [true, 10]; b = [true, 'a', 'b', 2];</p> <a href="https://zenn.dev/yutama_kotaro/articles/43ac06011d3b47" 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/4a98ca89ed1f06fa8f99f7c64599b89b1fec1278/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--inxmGBU0--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_66%3ATypeScript%2525204.2%2525E3%252580%252580%2525E8%2525A6%25259A%2525E6%25259B%2525B8%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3A%2525E3%252583%2525A6%2525E3%252582%2525BF%2525E3%252583%25259E%2525E3%252581%252593%2525E3%252581%25259F%2525E3%252582%25258D%2525E3%252581%252586%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzdjYzZlNzVmNjYuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="TypeScript 4.2 覚書"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4698962843745470818"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://zenn.dev/yutama_kotaro/articles/43ac06011d3b47" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210226#bookmark-4698962843745470818" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/02/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="/mickn/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/4698962843745470818/comment/mickn" 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://qiita.com/m_mitsuhide/items/337836c003e3e450884a"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/m_mitsuhide/items/337836c003e3e450884a" 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%2Fqiita.com%2Fm_mitsuhide%2Fitems%2F337836c003e3e450884a" alt="">SWR(React Hooks)とaspidaで型安全にREST APIをfetchする - Qiita</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/m_mitsuhide/items/337836c003e3e450884a" class="js-keyboard-entry-page-openable" title="SWR(React Hooks)とaspidaで型安全にREST APIをfetchする - Qiita (5ブックマーク)" data-gtm-click-label="user-bookmark-users">5 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fqiita.com%2Fm_mitsuhide" title="『qiita.com/m_mitsuhide』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> qiita.com/m_mitsuhide </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/TypeScript">TypeScript</a> 4.1 で使えるようになる <a data-gtm-click-label="entry-summary-keyword" href="/q/temp">temp</a>late string types が話題ですね 人類の悲願である Swagger/<a data-gtm-click-label="entry-summary-keyword" href="/q/openapi">OpenAPI</a> から静的型操作のみで使える型安全なクライアントを作製した猛者も現れました できました。 「型オンリーで」SwaggerのJSONを解析し、型安全な<a data-gtm-click-label="entry-summary-keyword" href="/q/API">API</a>クライアントを錬成しています。(URLが長すぎたので短縮してます) これは<a data-gtm-click-label="entry-summary-keyword" href="/q/temp">temp</a>late string typeなしではASTによるコード生成をしなければ達成できませんでした。https://t.co/jW98GIqMfz — ノーン (@nkowne63) Sept<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>ber 1, 2020 この記事では <a data-gtm-click-label="entry-summary-keyword" href="/q/temp">temp</a>late string types とは全く関係ない、上記ツイートでいうところの「 AST によるコード生成」によって型安全な HTTP リクエストを実現する「aspid</p> <a href="https://qiita.com/m_mitsuhide/items/337836c003e3e450884a" 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/2678be99f08403b892b59b395372b295acd35940/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9U1dSJTI4UmVhY3QlMjBIb29rcyUyOSVFMyU4MSVBOGFzcGlkYSVFMyU4MSVBNyVFNSU5RSU4QiVFNSVBRSU4OSVFNSU4NSVBOCVFMyU4MSVBQlJFU1QlMjBBUEklRTMlODIlOTJmZXRjaCVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9OWU0NDgzNTk4YzIwMTA4ZGM2ZTY3NTAwZDM1YjRkN2U%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtX21pdHN1aGlkZSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NWZlZjg0MjAxODI1ZGUxYzkyNWQ5Y2Q5ZTM4MDRiZTc%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Db2fc60dd399021360671f395f7b16d5e" alt="SWR(React Hooks)とaspidaで型安全にREST APIをfetchする - Qiita"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4696110104152848194"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://qiita.com/m_mitsuhide/items/337836c003e3e450884a" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210210#bookmark-4696110104152848194" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/02/10</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="/mickn/aspida/" data-gtm-click-label="user-reaction-tag">aspida</a></li> <li><a href="/mickn/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/4696110104152848194/comment/mickn" 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://github.com/aspida/aspida"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/aspida/aspida" 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%2Fgithub.com%2Faspida%2Faspida" alt="">GitHub - aspida/aspida: TypeScript friendly HTTP client wrapper for the browser and node.js.</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/aspida/aspida" class="js-keyboard-entry-page-openable" title="GitHub - aspida/aspida: TypeScript friendly HTTP client wrapper for the browser and node.js. (26ブックマーク)" data-gtm-click-label="user-bookmark-users">26 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fgithub.com%2Faspida" title="『github.com/aspida』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> github.com/aspida </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">You signed in w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. You signed out in another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. You <a data-gtm-click-label="entry-summary-keyword" href="/q/Switch">switch</a>ed accounts on another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. Dismiss alert</p> <a href="https://github.com/aspida/aspida" 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/3fd4bb9052d3868d3943c5eed72a4ac035790d3c/height=288;version=1;width=512/https%3A%2F%2Frepository-images.githubusercontent.com%2F213083762%2F635fb380-3dc5-11eb-8d3e-2925d8c1ed6b" alt="GitHub - aspida/aspida: TypeScript friendly HTTP client wrapper for the browser and node.js."> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4692894738887633442"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://github.com/aspida/aspida" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210210#bookmark-4692894738887633442" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/02/10</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="/mickn/aspida/" data-gtm-click-label="user-reaction-tag">aspida</a></li> <li><a href="/mickn/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/4692894738887633442/comment/mickn" 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://scrapbox.io/nishio/2021%E5%B9%B4%E3%81%AETypeScript%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://scrapbox.io/nishio/2021%E5%B9%B4%E3%81%AETypeScript%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9" 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%2Fscrapbox.io%2Fnishio%2F2021%25E5%25B9%25B4%25E3%2581%25AETypeScript%25E3%2583%2599%25E3%2582%25B9%25E3%2583%2588%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25AF%25E3%2583%2586%25E3%2582%25A3%25E3%2582%25B9" alt="">2021年のTypeScriptベストプラクティス - 西尾泰和の外部脳</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/scrapbox.io/nishio/2021%E5%B9%B4%E3%81%AETypeScript%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9" class="js-keyboard-entry-page-openable" title="2021年のTypeScriptベストプラクティス - 西尾泰和の外部脳 (567ブックマーク)" data-gtm-click-label="user-bookmark-users">567 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fscrapbox.io%2Fnishio%2F" title="『scrapbox.io/nishio』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> scrapbox.io/nishio </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">5: テストコードで、型の要求を部分的にしか満たさないアドホックなオブジェクトをanyにキャストしてモックとして使うのではなく、ちゃんとしたモックを一箇所で定義してそれを使え 6: オブジェクトの種類によってあるプロパティを持っていたり持っていなかったりする時に、?でオプショナルなプロパティにするのではなく、どういう種類の時に持っているのかをインターフェースで明示せよ</p> <a href="https://scrapbox.io/nishio/2021%E5%B9%B4%E3%81%AETypeScript%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9" 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/d777b269771fcdc3ceef7e29a87190beed3dbf63/height=288;version=1;width=512/https%3A%2F%2Fscrapbox.io%2Fassets%2Fimg%2Fcontent-logo.png" alt="2021年のTypeScriptベストプラクティス - 西尾泰和の外部脳"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4698272364076879394"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://scrapbox.io/nishio/2021%E5%B9%B4%E3%81%AETypeScript%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210210#bookmark-4698272364076879394" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/02/10</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="/mickn/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/4698272364076879394/comment/mickn" 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.typescriptlang.org/docs/handbook/jsx.html"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://www.typescriptlang.org/docs/handbook/jsx.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.typescriptlang.org%2Fdocs%2Fhandbook%2Fjsx.html" alt="">Documentation - JSX</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.typescriptlang.org/docs/handbook/jsx.html" class="js-keyboard-entry-page-openable" title="Documentation - JSX (13ブックマーク)" data-gtm-click-label="user-bookmark-users">13 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fwww.typescriptlang.org%2F" title="『www.typescriptlang.org』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.typescriptlang.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">JSX is an <a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>bedda<a data-gtm-click-label="entry-summary-keyword" href="/q/BL">bl</a>e XML-like syntax. <a data-gtm-click-label="entry-summary-keyword" href="/q/it">It</a> is meant to be tran<a data-gtm-click-label="entry-summary-keyword" href="/q/SF">sf</a><a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a>ed into valid <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>, though the s<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>antics of that tran<a data-gtm-click-label="entry-summary-keyword" href="/q/SF">sf</a><a data-gtm-click-label="entry-summary-keyword" href="/q/ORM">orm</a>ation are impl<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>entation-specific. JSX <a data-gtm-click-label="entry-summary-keyword" href="/q/ROS">ros</a>e to popular<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>y w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h the <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> framework, but has since seen other impl<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>entations as well. <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> supports <a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>bedding, type checking, and compiling JSX directly to <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>. Basic <a data-gtm-click-label="entry-summary-keyword" href="/q/usa">usa</a>ge In order to use JSX you must do two t</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-305712963"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.typescriptlang.org/docs/handbook/jsx.html" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20210207#bookmark-305712963" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2021/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="/mickn/JSX/" data-gtm-click-label="user-reaction-tag">JSX</a></li> <li><a href="/mickn/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/305712963/comment/mickn" 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.typescriptlang.org/"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://www.typescriptlang.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%2Fwww.typescriptlang.org%2F" alt="">JavaScript With Syntax For Types.</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.typescriptlang.org/" class="js-keyboard-entry-page-openable" title="JavaScript With Syntax For Types. (459ブックマーク)" data-gtm-click-label="user-bookmark-users">459 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fwww.typescriptlang.org%2F" title="『www.typescriptlang.org』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.typescriptlang.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"><a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> is <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a> w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h syntax for types.<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> is a strongly typed <a data-gtm-click-label="entry-summary-keyword" href="/q/programming">programming</a> language that <a data-gtm-click-label="entry-summary-keyword" href="/q/Build">build</a>s on <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>, giving you better tooling at any scale.</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-284626895"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.typescriptlang.org/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200821#bookmark-284626895" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/08/21</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="/mickn/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/284626895/comment/mickn" 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://fettblog.eu/typescript-react-component-patterns/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://fettblog.eu/typescript-react-component-patterns/" 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%2Foida.dev%2Ftypescript-react-component-patterns%2F" alt="">TypeScript + React: Component patterns</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/oida.dev/typescript-react-component-patterns/" class="js-keyboard-entry-page-openable" title="TypeScript + React: Component patterns (335ブックマーク)" data-gtm-click-label="user-bookmark-users">335 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Foida.dev%2F" title="『oida.dev』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> oida.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">This list is a collection of component patterns for <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> when working w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>. See th<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a> as an extension to the <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> + <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> <a data-gtm-click-label="entry-summary-keyword" href="/q/gui">Gui</a>de that deals w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h overall concepts and types. This list has been heavily inspired by chantastic’s original <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> patterns list. Contrary to chantastic’s <a data-gtm-click-label="entry-summary-keyword" href="/q/gui">gui</a>de I use m<a data-gtm-click-label="entry-summary-keyword" href="/q/ai">ai</a>nly modern-day <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a>, so function components and – if <a data-gtm-click-label="entry-summary-keyword" href="/q/NEC">nec</a>essary – hooks. I also focus exc</p> <a href="https://oida.dev/typescript-react-component-patterns/" 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/2512fb81461d5c64e28f51aa8117d9c07e2671fe/height=288;version=1;width=512/https%3A%2F%2Foida.dev%2Fteasers%2Ftypescript-react-component-patterns.jpg" alt="TypeScript + React: Component patterns"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4689243460950654658"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://fettblog.eu/typescript-react-component-patterns/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200806#bookmark-4689243460950654658" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/08/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="/mickn/React/" data-gtm-click-label="user-reaction-tag">React</a></li> <li><a href="/mickn/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/4689243460950654658/comment/mickn" 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://nexus.js.org/"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://nexus.js.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%2Fnexus.js.org%2F" alt="">302 - JS.ORG</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/nexus.js.org/" class="js-keyboard-entry-page-openable" title="302 - JS.ORG (8ブックマーク)" data-gtm-click-label="user-bookmark-users">8 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fnexus.js.org%2F" title="『nexus.js.org』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> nexus.js.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">Dedicated to <a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a> and <a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>s awesome comm<a data-gtm-click-label="entry-summary-keyword" href="/q/Unity">unity</a> since 2015</p> <a href="https://nexus.js.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/e8742fbf7a4dedad90175a51eec899d94e9b40f6/height=288;version=1;width=512/https%3A%2F%2Fnexus.js.org%2Fimg%2Fnexus-dark.png" alt="302 - JS.ORG"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4664454734723364481"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://nexus.js.org/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200601#bookmark-4664454734723364481" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/06/01</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="/mickn/Nexus/" data-gtm-click-label="user-reaction-tag">Nexus</a></li> <li><a href="/mickn/GraphQL/" data-gtm-click-label="user-reaction-tag">GraphQL</a></li> <li><a href="/mickn/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/4664454734723364481/comment/mickn" 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://qiita.com/ShUnO/items/f9003faec4b1a63e0cd1"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/ShUnO/items/f9003faec4b1a63e0cd1" 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%2Fqiita.com%2FShUnO%2Fitems%2Ff9003faec4b1a63e0cd1" alt="">React+Typescript+SWRでアプリをつくる - Qiita</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/ShUnO/items/f9003faec4b1a63e0cd1" class="js-keyboard-entry-page-openable" title="React+Typescript+SWRでアプリをつくる - Qiita (1ブックマーク)" data-gtm-click-label="user-bookmark-users">1 user</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fqiita.com%2F" title="『qiita.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> qiita.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"></p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4686521311063391234"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://qiita.com/ShUnO/items/f9003faec4b1a63e0cd1" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200601#bookmark-4686521311063391234" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/06/01</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/swr/" data-gtm-click-label="user-reaction-tag">swr</a></li> <li><a href="/mickn/React/" data-gtm-click-label="user-reaction-tag">React</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4686521311063391234/comment/mickn" 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://qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd" 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%2Fqiita.com%2Fabyssparanoia%2Fitems%2F53c4c77e29c84b9977fd" alt="">zeit製のswrがすごい - Qiita</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd" class="js-keyboard-entry-page-openable" title="zeit製のswrがすごい - Qiita (7ブックマーク)" data-gtm-click-label="user-bookmark-users">7 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fqiita.com%2Fabyssparanoia" title="『qiita.com/abyssparanoia』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> qiita.com/abyssparanoia </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/react">react</a> hooksの登場とある程度の枯れ具合を見せてきて、益々利用する機会が増えている<a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a>。 最近はred<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>を採用する/しないで議論が白熱することが多くなってきていますが、今回はred<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>を採用せずとも、ある程度のアプリケーションなら作れる選択肢の一つを紹介させていただきます。 初投稿なので、読みづらかったらスンマセン。 ze<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>製のライブラリ swr 今回の主役はこのswr。 <a data-gtm-click-label="entry-summary-keyword" href="/q/react">react</a>のSSRフレームワークである<a data-gtm-click-label="entry-summary-keyword" href="/q/nextjs">nextjs</a>やPaaSのNowなどのを開発・運用しているze<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>から最近登場したライブラリです。 このライブラリのREADMEの頭には、以下のように紹介されています。 SWR is a <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> Hooks library for r<a data-gtm-click-label="entry-summary-keyword" href="/q/EM">em</a>ote data f<a data-gtm-click-label="entry-summary-keyword" href="/q/etc">etc</a>hing. そう、つまり、data f<a data-gtm-click-label="entry-summary-keyword" href="/q/etc">etc</a>hをhooksベースで記述するためのライブラリです。 どん</p> <a href="https://qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd" 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/ce11f733a980a3f27358f147f476165bd251b26c/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9emVpdCVFOCVBMyVCRCVFMyU4MSVBRXN3ciVFMyU4MSU4QyVFMyU4MSU5OSVFMyU4MSU5NCVFMyU4MSU4NCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9YzU4OTljNmFkYmUwZjRjNmUyYTliOTUzZDExZGVkZWY%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBhYnlzc3BhcmFub2lhJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zOTc5YjFiY2UxNGM0OWI2MTU3ODcxM2E4OTU4YzE5MA%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D6f3c7beb3c25ea20ad24b77160f3c38e" alt="zeit製のswrがすごい - Qiita"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4686521300862837250"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200601#bookmark-4686521300862837250" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/06/01</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/swr/" data-gtm-click-label="user-reaction-tag">swr</a></li> <li><a href="/mickn/React/" data-gtm-click-label="user-reaction-tag">React</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4686521300862837250/comment/mickn" 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.techscore.com/blog/2019/12/01/typescript_idl/"> <div class="centerarticle-entry "> <h3 class="centerarticle-entry-title"> <a href="https://www.techscore.com/blog/2019/12/01/typescript_idl/" 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.techscore.com%2Fblog%2F2019%2F12%2F01%2Ftypescript_idl%2F" alt="">TypeScriptでReactとBFFの間の通信にカタをつける | TECHSCORE BLOG | TECHSCORE BLOG</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.techscore.com/blog/2019/12/01/typescript_idl/" class="js-keyboard-entry-page-openable" title="TypeScriptでReactとBFFの間の通信にカタをつける | TECHSCORE BLOG | TECHSCORE BLOG (2ブックマーク)" data-gtm-click-label="user-bookmark-users">2 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fwww.techscore.com%2F" title="『www.techscore.com』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> www.techscore.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/tech">TECH</a>SCORE Advent Calendar 2019 の1日目の記事です。 TL;DR <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> で <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> と BFF の間の通信に型をつけてみたよ。 インターフェース定義は <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> で書いてるので、実装がそのままドキュメントになるよ。 <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> 側も BFF 側もきっちり型がつくので開発捗るよ。 ここに実装置いたから見てね。 はじめに 最近半年ほど <a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> ばっかり書いてます。<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> で <a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> App 書いて、<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a> で BFF 書いて、「嗚呼、型があるって幸せだな」って思ってました。 でも唯一不満があります。<a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a> と BFF の間の通信。 f<a data-gtm-click-label="entry-summary-keyword" href="/q/etc">etc</a>hを使って書いてるんですが、 f<a data-gtm-click-label="entry-summary-keyword" href="/q/etc">etc</a>hで JSON 取ってくると戻り値は anyになっちゃうんですよね、当たり前ですけど。 const</p> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4686521288514798690"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://www.techscore.com/blog/2019/12/01/typescript_idl/" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200601#bookmark-4686521288514798690" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/06/01</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="/mickn/TypeScript/" data-gtm-click-label="user-reaction-tag">TypeScript</a></li> <li><a href="/mickn/BFF/" data-gtm-click-label="user-reaction-tag">BFF</a></li> <li><a href="/mickn/React/" data-gtm-click-label="user-reaction-tag">React</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4686521288514798690/comment/mickn" 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://github.com/adelsz/pgtyped"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/adelsz/pgtyped" 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%2Fgithub.com%2Fadelsz%2Fpgtyped" alt="">GitHub - adelsz/pgtyped: pgTyped - Typesafe SQL in TypeScript</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/adelsz/pgtyped" class="js-keyboard-entry-page-openable" title="GitHub - adelsz/pgtyped: pgTyped - Typesafe SQL in TypeScript (24ブックマーク)" data-gtm-click-label="user-bookmark-users">24 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Fgithub.com%2Fadelsz" title="『github.com/adelsz』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> github.com/adelsz </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">You signed in w<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>h another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. You signed out in another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. You <a data-gtm-click-label="entry-summary-keyword" href="/q/Switch">switch</a>ed accounts on another tab or window. Reload to refresh your <a data-gtm-click-label="entry-summary-keyword" href="/q/session">session</a>. Dismiss alert</p> <a href="https://github.com/adelsz/pgtyped" 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/ee7f239e233b9a64073749487771183f1a7190b7/height=288;version=1;width=512/https%3A%2F%2Fopengraph.githubassets.com%2Fab5cd7cacc4214ad69d90ace082fbbb3d165a25737d33746e52d39a003d132b4%2Fadelsz%2Fpgtyped" alt="GitHub - adelsz/pgtyped: pgTyped - Typesafe SQL in TypeScript"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4686216851380323874"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://github.com/adelsz/pgtyped" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200526#bookmark-4686216851380323874" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/05/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="/mickn/Typescript/" data-gtm-click-label="user-reaction-tag">Typescript</a></li> <li><a href="/mickn/PostgreSQL/" data-gtm-click-label="user-reaction-tag">PostgreSQL</a></li> </ul> </div> <div class="centerarticle-reaction-foot"> <div class="centerarticle-reaction-meta"> <span class="comment-permalink js-comment-permalink"> <a href="/entry/4686216851380323874/comment/mickn" 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://future-architect.github.io/articles/20200501/index.html"> <div class="centerarticle-entry is-image-entry-unit"> <h3 class="centerarticle-entry-title"> <a href="https://future-architect.github.io/articles/20200501/index.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%2Ffuture-architect.github.io%2Farticles%2F20200501%2F" alt="">TypeScriptでReactをやるときは、小さいアプリでもReduxを最初から使ってもいいかもねというお話 | フューチャー技術ブログ</a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/future-architect.github.io/articles/20200501/" class="js-keyboard-entry-page-openable" title="TypeScriptでReactをやるときは、小さいアプリでもReduxを最初から使ってもいいかもねというお話 | フューチャー技術ブログ (339ブックマーク)" data-gtm-click-label="user-bookmark-users">339 users</a> </span> </li> <li> <a href="/mickn/?url=https%3A%2F%2Ffuture-architect.github.io%2F" title="『future-architect.github.io』の新着エントリー" data-gtm-click-label="user-bookmark-domain"> future-architect.github.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"><a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>で<a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a>をやるときは、小さいアプリでもRed<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>を最初から使ってもいいかもねというお話 前日の丸野さんがRed<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>を分かりやすく解説してみたというRed<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>の基<a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>的な紹介を行いました。Red<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>はコンパクトなライブラリながらよく考えられた仕組みです。Jetpack Composeやら<a data-gtm-click-label="entry-summary-keyword" href="/q/Flutter">Flutter</a>やら、<a data-gtm-click-label="entry-summary-keyword" href="/q/react">React</a>インスパイアな<a data-gtm-click-label="entry-summary-keyword" href="/q/gui">GUI</a>フレームワークも増えているので、<a data-gtm-click-label="entry-summary-keyword" href="/q/Javascript">JavaScript</a>(<a data-gtm-click-label="entry-summary-keyword" href="/q/TypeScript">TypeScript</a>ではなく) + Red<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>をやってみるのは、ウェブに限らず、今後のユーザーインタフェース関連のコードを触るための理解力向上には良いと思います。 <a data-gtm-click-label="entry-summary-keyword" href="/q/%E6%9C%AC">本</a>エントリーは、プロダクションコードでたくさんRed<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>周りにもreducerなどを実装しなくてはいけなくなったときの次のステップとして、Red<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a> Toolk<a data-gtm-click-label="entry-summary-keyword" href="/q/it">it</a>の紹介をします。 たいてい、Red<a data-gtm-click-label="entry-summary-keyword" href="/q/UX">ux</a>は導入コストが大きく、</p> <a href="https://future-architect.github.io/articles/20200501/" 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/85916ceac5a9d466eee86dd83888eea8008478b4/height=288;version=1;width=512/https%3A%2F%2Ffuture-architect.github.io%2Fimages%2F20200501%2F1.png" alt="TypeScriptでReactをやるときは、小さいアプリでもReduxを最初から使ってもいいかもねというお話 | フューチャー技術ブログ"> </a> </div> </div> <div class="centerarticle-reaction js-user-bookmark-id-container" id="bookmark-4685074945543072418"> <div class="centerarticle-reaction-comment js-user-bookmark-comment " data-url="https://future-architect.github.io/articles/20200501/index.html" data-user-name="mickn"> <a href="/mickn/" data-gtm-click-label="user-reaction-usericon" class="centerarticle-reaction-thumb"> <img src="https://cdn.profile-image.st-hatena.com/users/mickn/profile.png" alt="mickn" title="mickn" class="centerarticle-reaction-image"> </a> <div class="centerarticle-reaction-main"> <span class="centerarticle-reaction-username"><a href="https://b.hatena.ne.jp/mickn/20200503#bookmark-4685074945543072418" class="js-anchor-path" data-gtm-click-label="user-reaction-username">mickn</a></span> <span class="centerarticle-reaction-timestamp">2020/05/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="/mickn/React/" data-gtm-click-label="user-reaction-tag">React</a></li> <li><a href="/mickn/Redux/" data-gtm-click-label="user-reaction-tag">Redux</a></li> <li><a href="/mickn/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/4685074945543072418/comment/mickn" 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/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/common/loading@2x.gif" alt="残りのブックマークを読み込んでいます" width="16" height="16" /></span> <span>1</span> <span><a href="/mickn/TypeScript/?page=2">2</a></span> <span class="centerarticle-pager-next"><a href="/mickn/TypeScript/?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/2025/03/11/113220?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=2025%2F03%2F11%2F113220" target="_blank"> <p class="centerarticle-aside-info-category">ランキング</p> <h4 class="centerarticle-aside-info-item-title">今週のはてなブックマーク数ランキング(2025年3月第2週)</h4> <time class="centerarticle-aside-info-item-time">2025/03/11</time> </a> </li> <li class="centerarticle-aside-info-item"> <a href="https://bookmark.hatenastaff.com/entry/2025/03/07/120023?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=2025%2F03%2F07%2F120023" target="_blank"> <p class="centerarticle-aside-info-category">ランキング</p> <h4 class="centerarticle-aside-info-item-title">月間はてなブックマーク数ランキング(2025年2月)</h4> <time class="centerarticle-aside-info-item-time">2025/03/07</time> </a> </li> <li class="centerarticle-aside-info-item"> <a href="https://bookmark.hatenastaff.com/entry/2025/03/05/192802?utm_source=user_page_side_column&utm_medium=official_announcement&utm_campaign=2025%2F03%2F05%2F192802" target="_blank"> <p class="centerarticle-aside-info-category">お知らせ</p> <h4 class="centerarticle-aside-info-item-title">旧バージョンのChrome拡張機能についてのお知らせと新バージョンご利用のお願い</h4> <time class="centerarticle-aside-info-item-time">2025/03/06</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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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/384dc1d336d3aaeb338666fdd1d11e38974714c5/images/v4/public/common/dl-button/googleplay@2x.png" alt="Google Playで手に入れよう"></a></li> </ul> </div> <div class="copyright">Copyright © 2005-2025 <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/384dc1d336d3aaeb338666fdd1d11e38974714c5/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>