CINXE.COM

Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog

<!DOCTYPE html><html lang="ja" data-admin-domain="//blog.hatena.ne.jp" data-admin-origin="https://blog.hatena.ne.jp" data-author="hatenatech" data-avail-langs="ja en" data-blog="developer.hatenastaff.com" data-blog-host="developer.hatenastaff.com" data-blog-is-public="1" data-blog-name="Hatena Developer Blog" data-blog-owner="hatenatech" data-blog-show-ads="" data-blog-show-sleeping-ads="" data-blog-uri="https://developer.hatenastaff.com/" data-blog-uuid="12704346814673975483" data-blogs-uri-base="https://developer.hatenastaff.com" data-brand="regular_plan" data-data-layer="{&quot;hatenablog&quot;:{&quot;admin&quot;:{},&quot;analytics&quot;:{&quot;brand_property_id&quot;:&quot;UA-69076420-1&quot;,&quot;measurement_id&quot;:&quot;G-3BWZEZJFYG&quot;,&quot;non_sampling_property_id&quot;:&quot;&quot;,&quot;property_id&quot;:&quot;UA-29716941-27&quot;,&quot;separated_property_id&quot;:&quot;UA-29716941-19&quot;},&quot;blog&quot;:{&quot;blog_id&quot;:&quot;12704346814673975483&quot;,&quot;content_seems_japanese&quot;:&quot;true&quot;,&quot;disable_ads&quot;:&quot;brand&quot;,&quot;enable_ads&quot;:&quot;false&quot;,&quot;enable_keyword_link&quot;:&quot;false&quot;,&quot;entry_show_footer_related_entries&quot;:&quot;false&quot;,&quot;force_pc_view&quot;:&quot;true&quot;,&quot;is_public&quot;:&quot;true&quot;,&quot;is_responsive_view&quot;:&quot;true&quot;,&quot;is_sleeping&quot;:&quot;false&quot;,&quot;lang&quot;:&quot;ja&quot;,&quot;name&quot;:&quot;Hatena Developer Blog&quot;,&quot;owner_name&quot;:&quot;hatenatech&quot;,&quot;uri&quot;:&quot;https://developer.hatenastaff.com/&quot;},&quot;brand&quot;:&quot;regular_plan&quot;,&quot;page_id&quot;:&quot;entry&quot;,&quot;permalink_entry&quot;:{&quot;author_name&quot;:&quot;hatenatech&quot;,&quot;categories&quot;:&quot;Hatena Engineer Seminar&quot;,&quot;character_count&quot;:2425,&quot;date&quot;:&quot;2025-02-04&quot;,&quot;entry_id&quot;:&quot;6802418398325895109&quot;,&quot;first_category&quot;:&quot;Hatena Engineer Seminar&quot;,&quot;hour&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Hatena Engineer Seminar #32 \u300c\u306f\u3066\u306a\u30d6\u30ed\u30b0\u65b0\u6a5f\u80fd\u57fa\u76e4\u306e\u958b\u767a\u7de8\u300d\u30922\u670825\u65e5\u306b\u30aa\u30f3\u30e9\u30a4\u30f3\u958b\u50ac\u3057\u307e\u3059 #hatenatech&quot;,&quot;uri&quot;:&quot;https://developer.hatenastaff.com/entry/engineer-seminar-32&quot;},&quot;pro&quot;:&quot;pro&quot;,&quot;router_type&quot;:&quot;blogs&quot;}}" data-device="pc" data-dont-recommend-pro="false" data-global-domain="https://hatena.blog" data-globalheader-color="b" data-globalheader-type="pc" data-has-touch-view="1" data-help-url="https://help.hatenablog.com" data-hide-header="1" data-no-suggest-touch-view="1" data-page="entry" data-parts-domain="https://hatenablog-parts.com" data-plus-available="1" data-pro="true" data-router-type="blogs" data-sentry-dsn="https://03a33e4781a24cf2885099fed222b56d@sentry.io/1195218" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-static-domain="https://cdn.blog.st-hatena.com" data-version="3302d0c519de548bcb3552ea0bf509" data-initial-state="{}"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# article: http://ogp.me/ns/article#"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="robots" content="max-image-preview:large"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7; IE=9; IE=10; IE=11"> <title>Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog</title> <link rel="canonical" href="https://developer.hatenastaff.com/entry/engineer-seminar-32"> <meta itemprop="name" content="Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog"> <meta itemprop="image" content="https://cdn.image.st-hatena.com/image/scale/66e02ff40d1d5a32f52fbf3be10ed80c31e687fa/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhatenatech%2F20220111%2F20220111165252.png"> <meta property="og:title" content="Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog"> <meta property="og:type" content="article"> <meta property="og:url" content="https://developer.hatenastaff.com/entry/engineer-seminar-32"> <meta property="og:image" content="https://cdn.image.st-hatena.com/image/scale/66e02ff40d1d5a32f52fbf3be10ed80c31e687fa/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhatenatech%2F20220111%2F20220111165252.png"> <meta property="og:image:alt" content="Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog"> <meta property="og:description" content="2025年2月25日(火)にHatena Engineer Seminar #32をオンライン開催します。はてなブログチームのエンジニア3名が登壇し、2025年2月3日にリリースされた「はてなCMS」の開発について発表します。皆様のご参加をお待ちしております!"> <meta property="og:site_name" content="Hatena Developer Blog"> <meta property="article:published_time" content="2025-02-04T09:30:00Z"> <meta property="article:tag" content="Hatena Engineer Seminar"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://cdn.image.st-hatena.com/image/scale/66e02ff40d1d5a32f52fbf3be10ed80c31e687fa/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhatenatech%2F20220111%2F20220111165252.png"> <meta name="twitter:title" content="Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech - Hatena Developer Blog"> <meta name="twitter:description" content="2025年2月25日(火)にHatena Engineer Seminar #32をオンライン開催します。はてなブログチームのエンジニア3名が登壇し、2025年2月3日にリリースされた「はてなCMS」の開発について発表します。皆様のご参加をお待ちしております!"> <meta name="twitter:app:name:iphone" content="はてなブログアプリ"> <meta name="twitter:app:id:iphone" content="583299321"> <meta name="twitter:app:url:iphone" content="hatenablog:///open?uri=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2Fengineer-seminar-32"> <meta name="twitter:site" content="@hatenatech"> <meta name="description" content="2025年2月25日(火)にHatena Engineer Seminar #32をオンライン開催します。はてなブログチームのエンジニア3名が登壇し、2025年2月3日にリリースされた「はてなCMS」の開発について発表します。皆様のご参加をお待ちしております!"> <script id="embed-gtm-data-layer-loader" data-data-layer-page-specific="{&quot;hatenablog&quot;:{&quot;blogs_permalink&quot;:{&quot;entry_afc_issued&quot;:&quot;false&quot;,&quot;blog_afc_issued&quot;:&quot;false&quot;,&quot;has_related_entries_with_elasticsearch&quot;:&quot;false&quot;,&quot;is_author_pro&quot;:&quot;true&quot;,&quot;is_blog_sleeping&quot;:&quot;false&quot;}}}"> (function() { function loadDataLayer(elem, attrName) { if (!elem) { return {}; } var json = elem.getAttribute(attrName); if (!json) { return {}; } return JSON.parse(json); } var globalVariables = loadDataLayer( document.documentElement, 'data-data-layer' ); var pageSpecificVariables = loadDataLayer( document.getElementById('embed-gtm-data-layer-loader'), 'data-data-layer-page-specific' ); var variables = [globalVariables, pageSpecificVariables]; if (!window.dataLayer) { window.dataLayer = []; } for (var i = 0; i < variables.length; i++) { window.dataLayer.push(variables[i]); } })(); </script> <!-- 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-P4CXTW');</script> <!-- End Google Tag Manager --> <!-- 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-T5VB5VT');</script> <!-- End Google Tag Manager --> <link rel="shortcut icon" href="https://developer.hatenastaff.com/icon/favicon"> <link rel="apple-touch-icon" href="https://developer.hatenastaff.com/icon/touch"> <link rel="icon" sizes="192x192" href="https://developer.hatenastaff.com/icon/link"> <link rel="alternate" type="application/atom+xml" title="Atom" href="https://developer.hatenastaff.com/feed"> <link rel="alternate" type="application/rss+xml" title="RSS2.0" href="https://developer.hatenastaff.com/rss"> <link rel="alternate" type="application/json+oembed" href="https://hatena.blog/oembed?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2Fengineer-seminar-32&amp;format=json" title="oEmbed Profile of Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech"> <link rel="alternate" type="text/xml+oembed" href="https://hatena.blog/oembed?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2Fengineer-seminar-32&amp;format=xml" title="oEmbed Profile of Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech"> <link rel="author" href="http://www.hatena.ne.jp/hatenatech/"> <link rel="stylesheet" type="text/css" href="https://cdn.blog.st-hatena.com/css/blog.css?version=3302d0c519de548bcb3552ea0bf509"> <link rel="stylesheet" type="text/css" href="https://usercss.blog.st-hatena.com/blog_style/12704346814673975483/1fa4bda2b838dbee663a43d9c2668709531ee66d"> <script> </script> <style> div#google_afc_user, div.google-afc-user-container, div.google_afc_image, div.google_afc_blocklink { display: block !important; } </style> <script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","dateModified":"2025-02-05T10:42:38+09:00","datePublished":"2025-02-04T18:30:00+09:00","headline":"Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech","image":["https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20220111/20220111165252.png"]}</script> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> <link rel="stylesheet" type="text/css" href="https://cdn.blog.st-hatena.com/files/12704346814673975483/4207112889961654141"> <link rel="preload" as="image" href="/file/8599973812307228497"> <link rel="preload" as="image" href="/file/8599973812307235616"> <link rel="preload" as="image" href="/file/8599973812307232702"> <link rel="preload" as="image" href="/file/8599973812307228478"> <link rel="preload" as="image" href="/file/8599973812307228480"> <meta name="google-site-verification" content="_wvN3qHawvIWkS6I_8lnJft96KtJduafGB4E5ddcxaA"> <meta name="google-site-verification" content="J3sw3XXusfz61jXgjxrw9RWJeqGmpH6CzQKGGjh9lp0"> <!-- ahrefs用設定追加 2020/11/19 --> <meta name="ahrefs-site-verification" content="36e3bc8bbce0396d9583e8a77f6497dad7343ca2ff9ca5d56a5a3fecb414306c"> </head> <body class="page-entry enable-top-editarea enable-bottom-editarea category-Hatena-Engineer-Seminar globalheader-off globalheader-ng-enabled"> <div id="globalheader-container" data-brand="hatenablog" style="display: none"> <iframe id="globalheader" height="37" frameborder="0" allowtransparency="true"></iframe> </div> <div id="container"> <div id="container-inner"> <div id="top-editarea"> <header id="global-header"> <div class="hatena-module hatena-module-search-box"> <div class="hatena-module-body"> <!-- icon-search.svg --> <img class="icon-search" src="https://cdn.blog.st-hatena.com/files/12704346814673975483/13574176438017835249" width="15" height="auto" alt="Search"> <form class="search-form unedited" role="search" action="/search" method="get"> <input tabindex="0" type="text" name="q" class="search-module-input" value="" placeholder="Search" required=""> </form> </div> </div> <div id="blog-title-local"> <a href="/"> <!-- logo-hatena-logomark.svg --> <span><img src="https://cdn.blog.st-hatena.com/files/12704346814673975483/13574176438017835249" width="auto" height="32" alt=""></span> <h1>Hatena Developer Blog</h1> </a> </div> <span id="sp-navigation"></span> <ul class="global-navigation"> <li class="sp-navigation-list"><a href="/">ブログトップ</a></li> <li class="sp-navigation-list"><a href="/archive">記事一覧</a></li> <li class="sp-navigation-list"><a href="/about">このブログについて</a></li> <li><a href="//hatenacorp.jp/">会社情報</a></li> <li><a href="//hatenacorp.jp/recruit/">採用情報</a></li> <li><a href="/presentations">登壇資料一覧</a></li> <li><a href="//hatena.connpass.com/" target="_blank">イベント</a></li> <li class="service-blogs">サービス開発ブログ <ul> <li class="service-bookmark"><a href="//bookmark.hatenastaff.com/">はてなブックマーク開発ブログ</a></li> <li class="service-blog"><a href="//staff.hatenablog.com/">はてなブログ開発ブログ</a></li> <li class="service-mackerel"><a href="//mackerel.io/ja/blog/">Mackerel ブログ</a></li> </ul> </li> </ul> </header> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"> </script> <script type="text/javascript"> var spViewWidth = 1100; var globalNavi = $('.global-navigation'); var windowWidth = $(window).width(); var windowHeight = $(window).height(); var naviTotalHeight = 0; var naviOpen = 0; var searchOpen = 0; var scrollTop = 0; function addClassScrolling() { if (windowWidth < spViewWidth) { scrollTop = document.documentElement.scrollTop || document.body.scrollTop; if (scrollTop > 0) { $('#global-header').addClass('scrolling'); } else { $('#global-header').removeClass('scrolling'); } } else { $('#global-header').removeClass('scrolling'); } } $(window).on('scroll', function() { addClassScrolling(); }); $('#sp-navigation').click(function() { naviOpen++; if (naviOpen % 2 == 0) { $(window).off('.noScroll'); $('.global-navigation').css('display','none'); } else { $('.global-navigation').fadeIn(400, function() { windowHeight = $(window).height(); $('.global-navigation > li').each(function() { naviTotalHeight += $(this).outerHeight(true); }); naviTotalHeight += globalNavi.position().top + parseInt(globalNavi.css('padding-top')) + parseInt(globalNavi.css('margin-top')); if (windowHeight > naviTotalHeight) { $(window).on('touchmove.noScroll', function(e) { e.preventDefault();}); } }); } $('html, body, #global-header').toggleClass('navOpen'); }); $('.icon-search').click(function() { if (windowWidth < spViewWidth) { searchOpen++; $('html, body, .hatena-module-search-box').toggleClass('searchOpen'); if (searchOpen % 2 == 0) { $(window).off('.noScroll'); $('#blog-title-local').fadeIn(120).css('display', 'flex'); } else { $(window).on('touchmove.noScroll', function(e) { e.preventDefault();}); $('#blog-title-local').fadeOut(60); $('.search-module-input').focus(); } } }); if (windowWidth < spViewWidth) { $('.search-module-input').focusout(function() { $('html, body, .hatena-module-search-box').removeClass('searchOpen'); searchOpen++; if (!$('#global-header').hasClass('navOpen')) { $(window).off('.noScroll'); } $('#blog-title-local').fadeIn(120).css('display', 'flex'); }); } $(window).on('resize', function() { windowWidth = $(window).width(); windowHeight = $(window).height(); if (windowWidth > spViewWidth) { $('.global-navigation').css('display','flex'); if (naviOpen % 2 != 0) { naviOpen++; $(window).off('.noScroll'); $('.global-navigation').css('display','flex'); $('html, body, #global-header').toggleClass('navOpen'); } } else { if (!$('#global-header').hasClass('navOpen')) { $('.global-navigation').css('display','none'); } } addClassScrolling(); }); </script> </div> <div id="content" class="hfeed"> <div id="content-inner"> <div id="wrapper"> <div id="main"> <div id="main-inner"> <!-- google_ad_section_start --> <!-- rakuten_ad_target_begin --> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-2800 words-200 mode-hatena entry-odd" id="entry-6802418398325895109" data-keyword-campaign="" data-uuid="6802418398325895109" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://developer.hatenastaff.com/archive/2025/02/04" rel="nofollow"> <time datetime="2025-02-04T09:30:00Z" title="2025-02-04T09:30:00Z"> <span class="date-year">2025</span><span class="hyphen">-</span><span class="date-month">02</span><span class="hyphen">-</span><span class="date-day">04</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://developer.hatenastaff.com/entry/engineer-seminar-32" class="entry-title-link bookmark">Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech</a> </h1> <div class="entry-categories categories"> <a href="https://developer.hatenastaff.com/archive/category/Hatena%20Engineer%20Seminar" class="entry-category-link category-Hatena-Engineer-Seminar">Hatena Engineer Seminar</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは。EM の <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a> です。</p><p>2025年2月25日(火)に Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を開催しますので、お知らせします。</p><p><span itemscope="" itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20220111/20220111165252.png" width="2000" height="1050" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>Hatena Engineer Seminar #32 では、はてなブログチームのエンジニア3名が登壇し、2025年2月3日にリリースされた「<a href="https://www.hatena.ne.jp/cms/">はてなCMS</a>」の開発について発表します。</p><p>「はてなCMS」では、はてながこれまで提供してきたオウンドメディアCMS「はてなブログMedia」の各種機能に加え、ノーコードで手軽にWebサイトを制作できる機能を新たに実装し提供しています。</p> <ul> <li>参考:2025-02-03 はてなプレスリリース <ul> <li><a href="https://hatena.co.jp/press/release/entry/2025/02/03/153000">はてな、Webサイト制作のための「はてなCMS」をリリース - プレスリリース - 株式会社はてな</a></li> </ul></li> </ul><p>「はてなCMS」の開発にあたっては、これまでのブログ基盤にそのまま機能を追加するのではなく、Next.js App Routerを採用した新基盤に機能を実装していく意思決定を行いました。</p><p>どうしてそのような判断を行ったのか、新基盤を既存システムと共存させるにはどうしたら良いか、App RouterやReact Server Componentといった新しい技術をどのように活用していくか、開発を通じて様々な経験と知見を獲得することができました。本イベントではその中でも選りすぐりの話題をご紹介します。</p><p>開催はオンラインです。(<a href="https://hatena.connpass.com/event/344958/">詳しくはconnpassのイベントページをご確認ください</a>)。皆様のご参加をお待ちしております!</p> <div class="section"> <h4 id="イベント概要">イベント概要</h4> <ul> <li>日時: 2025年2月25日(火) 13:00-14:00(予定)</li> <li>参加費: 無料</li> <li>開催形式: オンライン配信 YouTube Live <ul> <li>YouTube Live HatenaTech チャンネルにて <a href="https://www.youtube.com/channel/UCwqsFJGxzAZQdcT1xYZhhbw">https://www.youtube.com/channel/UCwqsFJGxzAZQdcT1xYZhhbw</a></li> <li>開催当日に connpass に登録されているメールアドレスや X の <a href="https://x.com/hatenatech">@hatenatech</a> アカウントにて配信 URL を共有いたします</li> </ul></li> <li>お申し込みURL: <a href="https://hatena.connpass.com/event/344958/">https://hatena.connpass.com/event/344958/</a></li> <li>ハッシュタグ: <code>#hatenatech</code> <ul> <li>ブログを書く際や SNS投稿の際にぜひお使いください</li> </ul></li> </ul><p>Hatena Engineer Seminar は、はてなのサービスを開発する上で、エンジニアがどのような事を考えているのか、どのような働き方をしているのかを語るイベントです。過去にも様々な技術レイヤーやサービスを軸としたテーマなどで開催してきました。</p> <ul> <li><a href="https://developer.hatenastaff.com/archive/category/Hatena%20Engineer%20Seminar">過去の Hatena Engineer Seminar に関する記事一覧</a></li> </ul> </div> <div class="section"> <h4 id="発表内容詳細">発表内容詳細</h4> <p><span style="font-size: 80%">(※ 内容は変更になる可能性がございます)</span><br> </p> <div class="section"> <h5 id="はてなCMSのアーキテクチャ-巨大な既存システムと共存して最新技術を取り入れるidnanimono_demonai">はてなCMSのアーキテクチャ; 巨大な既存システムと共存して最新技術を取り入れる<br>(<a class="hatena-id-icon" href="http://blog.hatena.ne.jp/nanimono_demonai/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16">id:nanimono_demonai</a>)</h5> <p><a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="id:nanimono_demonai" class="hatena-id-icon"></a> はてなCMSは、はてなブログと共存しています。複雑かつ歴史のあるプロダクトのはてなブログを壊さずに、最新技術を取り入れてはてなCMSを開発した方法とそのアーキテクチャを紹介します。Perlで作られたページからNext.jsで作られたページへのシームレスな移行、既存のプロダクトと認証認可を連携させる方法について、なぜこの選択をしたのか、どのように開発したのかをお話しします。<br> <br> </p> </div> <div class="section"> <h5 id="詳説コンテンツ配信システムの複数機能基盤への拡張idnanto_vi">【詳説】コンテンツ配信システムの複数機能基盤への拡張<br>(<a class="hatena-id-icon" href="http://blog.hatena.ne.jp/nanto_vi/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/nanto_vi/profile.png" width="16">id:nanto_vi</a>)</h5> <p><a href="http://blog.hatena.ne.jp/nanto_vi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanto_vi/profile.png" width="16" height="16" alt="id:nanto_vi" class="hatena-id-icon"></a> はてなCMSで新規に作ったページでも、配信は従来のはてなブログMediaと同じドメインから行われます。従来のアプリケーション基盤を通して配信するのはなぜなのか、どういうデータフローで配信を実現させたのか、ページ編集中のプレビューやページの公開後といった状況による違いも踏まえて解説します。<br> <br> </p> </div> <div class="section"> <h5 id="React-Server-Componentで生のHTMLを扱う技術idnakataki">React Server Componentで生のHTMLを扱う技術<br>(<a class="hatena-id-icon" href="http://blog.hatena.ne.jp/nakataki/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/nakataki/profile.png" width="16">id:nakataki</a>)</h5> <p><a href="http://blog.hatena.ne.jp/nakataki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nakataki/profile.png" width="16" height="16" alt="id:nakataki" class="hatena-id-icon"></a> はてなCMSはノーコードエディタが出力するHTML・CSSをReact Server Componentsでレンダリングしています。また、ユーザーが自由にHTML・CSSを記述する機能も備えています。Next.js App Router上において、ノーコードで作ったコンテンツをServer-Side Renderingしてパフォーマンスを確保することと、ユーザがHTMLやscriptタグを自由度高く埋め込めることを両立するために、どのような工夫を行ったのか解説します。</p> </div> </div> <div class="section"> <h4 id="タイムテーブル">タイムテーブル</h4> <table> <tbody><tr> <td> 時刻 </td> <td> id </td> <td> タイトル </td> </tr> <tr> <td> 13:00 </td> <td> <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a> </td> <td> 開会の挨拶 </td> </tr> <tr> <td> 13:05 </td> <td> <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a> </td> <td>はてなCMSのアーキテクチャ; 巨大な既存システムと共存して最新技術を取り入れる </td> </tr> <tr> <td> 13:25 </td> <td> <a href="http://blog.hatena.ne.jp/nanto_vi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanto_vi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanto_vi</a> </td> <td> 【詳説】コンテンツ配信システムの複数機能基盤への拡張 </td> </tr> <tr> <td> 13:40 </td> <td> <a href="http://blog.hatena.ne.jp/nakataki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nakataki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nakataki</a> </td> <td> React Server Componentで生のHTMLを扱う技術 </td> </tr> <tr> <td> 13:55 </td> <td> <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a> </td> <td> 閉会のご挨拶 </td> </tr> </tbody></table> </div> <div class="section"> <h4 id="お申し込み方法">お申し込み方法</h4> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatena.connpass.com%2Fevent%2F344958%2F" title="Hatena Engineer Seminar #32 はてなブログ新機能基盤の開発編 (2025/02/25 13:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://hatena.connpass.com/event/344958/">hatena.connpass.com</a></cite><br> </p> </div> <div class="section"> <h4 id="諸注意">諸注意</h4> <ul> <li>発表内容や時間は場合により変更となる可能性がございます。ご了承ください。</li> <li>お申し込み時やアンケートなどでいただいた個人情報は、<a href="https://hatena.co.jp/recruit/privacypolicy.html">個人情報の取り扱いについて - 採用情報 - 株式会社はてな</a>に準じ、セミナーの管理・品質改善・調査・採用のご案内目的に利用いたします。</li> </ul><p>みなさまのご参加をお待ちしております!</p> </div> <div class="section"> <h4 id="株式会社はてな-エンジニア採用資料会社紹介資料">株式会社はてな エンジニア採用資料(会社紹介資料)</h4> <p><iframe id="talk_frame_802621" class="speakerdeck-iframe" src="//speakerdeck.com/player/73919842c53c4af3a7d4025702e399fc" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <a href="https://speakerdeck.com/hatena/engineers-recruitment">株式会社はてな エンジニア採用資料 / Engineers Recruitment - Speaker Deck</a></p> </div> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="hatenatech">hatenatech</span></span> <span class="entry-footer-time"><a href="https://developer.hatenastaff.com/entry/engineer-seminar-32"><time data-relative="" datetime="2025-02-04T09:30:00Z" title="2025-02-04T09:30:00Z" class="updated">2025-02-04 18:30</time></a></span> </p> <div class="hatena-star-container" data-hatena-star-container="" data-hatena-star-url="https://developer.hatenastaff.com/entry/engineer-seminar-32" data-hatena-star-title="Hatena Engineer Seminar #32 「はてなブログ新機能基盤の開発編」を2月25日にオンライン開催します #hatenatech" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/"></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/developer.hatenastaff.com/entry/engineer-seminar-32" class="hatena-bookmark-button" data-hatena-bookmark-url="https://developer.hatenastaff.com/entry/engineer-seminar-32" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;"></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://developer.hatenastaff.com/entry/engineer-seminar-32"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?text=Hatena+Engineer+Seminar+%2332+%E3%80%8C%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%AD%E3%82%B0%E6%96%B0%E6%A9%9F%E8%83%BD%E5%9F%BA%E7%9B%A4%E3%81%AE%E9%96%8B%E7%99%BA%E7%B7%A8%E3%80%8D%E3%82%922%E6%9C%8825%E6%97%A5%E3%81%AB%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E9%96%8B%E5%82%AC%E3%81%97%E3%81%BE%E3%81%99+%23hatenatech+-+Hatena+Developer+Blog&amp;url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2Fengineer-seminar-32" title="X(Twitter)で投稿する"></a> </div> </div> <div class="customized-footer"> <div class="entry-footer-modules" id="entry-footer-secondary-modules"> <div class="hatena-module hatena-module-html"> <div class="hatena-module-body"> <div class="hatena-gig-ad-slot"></div> </div> </div> <div class="hatena-module hatena-module-html"> <div class="hatena-module-body"> <a href="https://hatena.blog/dev?utm_source=developer.hatenastaff.com&amp;utm_medium=referral&amp;utm_campaign=devblog_announcement" target="_blank" rel="noopener" class="entry-footer-devblog"> <div class="entry-footer-devblog-content"> <h3 id="400社以上の技術ブログが毎日読める">400社以上の技術ブログが<br>毎日読める</h3> <p>もっと技術ブログを読みたいあなたに! <br>現場のエンジニアの知見が満載。</p> </div> </a> </div> </div> </div> <div class="entry-footer-html"><div class="entry-footer-follow"> <h3>Hatena Developer Blogの<wbr>更新情報を<wbr>受け取る</h3> <iframe src="https://blog.hatena.ne.jp/hatenatech/developer.hatenastaff.com/subscribe/iframe" allowtransparency="true" frameborder="0" scrolling="no" width="130" height="28"></iframe> <a href="https://twitter.com/hatenatech" class="twitter-follow-button" data-show-count="false" data-lang="ja" data-show-screen-name="false">@hatenatechさんをフォロー</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </div> <div class="entry-footer-recruit"> <h3> <a href="https://hatena.co.jp/recruit">はてなで一緒に働きませんか?</a> </h3> <p>日本全国フルリモートOK!</p> <ul> <li><a href="http://hatenacorp.jp/recruit/career/application-engineer">Webアプリケーションエンジニア</a></li> <li><a href="http://hatenacorp.jp/recruit/career/sp-application-engineer">iOS、Androidアプリエンジニア</a></li> <li><a href="http://hatenacorp.jp/recruit/career/sre">SRE (Site Reliability Engineer)</a></li> <li><a href="http://hatenacorp.jp/recruit/career/cre">CRE (Customer Reliability Engineer)</a></li> </ul> </div> </div> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <!-- rakuten_ad_target_end --> <!-- google_ad_section_end --> <div class="pager pager-permalink permalink"> <span class="pager-prev"> <a href="https://developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-1" rel="prev"> <span class="pager-arrow">« </span> 『Inside GigaViewer for Apps』連載開始… </a> </span> <span class="pager-next"> <a href="https://developer.hatenastaff.com/entry/2025/01/31/185936" rel="next"> 2024年に始めたSRE連載について <span class="pager-arrow"> »</span> </a> </span> </div> </div> </div> <aside id="box1"> <div id="box1-inner"> </div> </aside> </div><!-- #wrapper --> <aside id="box2"> <div id="box2-inner"> <div class="hatena-module hatena-module-html"> <div class="hatena-module-body"> <script> const $allVideos = $("iframe[src*='vimeo.com'], iframe[src*='youtube.com'], iframe[src*='speakerdeck.com'], iframe[src*='slideshare'], iframe.flickr-embed-frame"); const $fluidEl = $(".entry-content"); $allVideos.each(function() { $(this) .attr('data-aspectRatio', this.height / this.width) .removeAttr('height') .removeAttr('width'); }); $(window).on('resize', function(){ let newWidth = $fluidEl.width(); $allVideos.each(function() { let $el = $(this); $el .width(newWidth) .height(newWidth * $el.attr('data-aspectRatio')); }); }).resize(); </script> </div> </div> <div class="hatena-module hatena-module-html"> <div class="hatena-module-body"> <script> if ($('input.search-result-input').length) { const inputElm = $('input.search-result-input'); const value = inputElm.val(); inputElm.val('').attr('placeholder', '').val(value).focus(); } $('.archive-entry').each(function() { if (!$('.entry-thumb-link', this).length) { $(this).addClass('no-included-image-entry'); } }); </script> </div> </div> <div class="hatena-module hatena-module-profile"> <div class="hatena-module-title"> プロフィール </div> <div class="hatena-module-body"> <a href="https://developer.hatenastaff.com/about" class="profile-icon-link"> <img src="https://cdn.profile-image.st-hatena.com/users/hatenatech/profile.png?1626690673" alt="id:hatenatech" class="profile-icon"> </a> <span class="id"> <a href="https://developer.hatenastaff.com/about" class="hatena-id-link"><span data-load-nickname="1" data-user-name="hatenatech">id:hatenatech</span></a> <a href="https://blog.hatena.ne.jp/-/pro?plus_via=blog_plus_badge&amp;utm_source=pro_badge&amp;utm_medium=referral&amp;utm_campaign=register_pro" title="はてなブログPro"><i class="badge-type-pro">はてなブログPro</i></a> </span> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box"> <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once=""> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> <div class="profile-about"> <a href="https://developer.hatenastaff.com/about">このブログについて</a> </div> </div> </div> <div class="hatena-module hatena-module-authors-list"> <div class="hatena-module-title"> 執筆者リスト </div> <div class="hatena-module-body"> <ul class="hatena-urllist authors-urllist"> <li> <a href="https://developer.hatenastaff.com/archive/author/gurrium"> <img src="https://cdn.profile-image.st-hatena.com/users/gurrium/profile.png?1615810806" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="gurrium"> id:gurrium </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/kouki_dan"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile.png?1448722593" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="kouki_dan"> id:kouki_dan </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/hatenatech"> <img src="https://cdn.profile-image.st-hatena.com/users/hatenatech/profile.png?1626690673" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="hatenatech"> id:hatenatech </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/cohalz"> <img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png?1551482788" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="cohalz"> id:cohalz </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/onk"> <img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="onk"> id:onk </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/k1s1eee"> <img src="https://cdn.profile-image.st-hatena.com/users/k1s1eee/profile.png?1659421184" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="k1s1eee"> id:k1s1eee </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/yigarashi"> <img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png?1554348534" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="yigarashi"> id:yigarashi </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/rskmm0chang"> <img src="https://cdn.profile-image.st-hatena.com/users/rskmm0chang/profile.png?1722834993" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="rskmm0chang"> id:rskmm0chang </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/daiksy"> <img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png?1512953941" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="daiksy"> id:daiksy </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/s-shiro"> <img src="https://cdn.profile-image.st-hatena.com/users/s-shiro/profile.png?1699544919" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="s-shiro"> id:s-shiro </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/masayoshi"> <img src="https://cdn.profile-image.st-hatena.com/users/masayoshi/profile.png?1511143704" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="masayoshi"> id:masayoshi </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/koudenpa"> <img src="https://cdn.profile-image.st-hatena.com/users/koudenpa/profile.png?1629369911" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="koudenpa"> id:koudenpa </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/yutailang0119"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png?1568353628" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="yutailang0119"> id:yutailang0119 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/mangano-ito"> <img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png?1725887797" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="mangano-ito"> id:mangano-ito </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/walnuts1018"> <img src="https://cdn.profile-image.st-hatena.com/users/walnuts1018/profile.png?1717401262" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="walnuts1018"> id:walnuts1018 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/chaya2z"> <img src="https://cdn.profile-image.st-hatena.com/users/chaya2z/profile.png?1671522946" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="chaya2z"> id:chaya2z </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/onishi"> <img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png?1711953087" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="onishi"> id:onishi </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/MysticDoll"> <img src="https://cdn.profile-image.st-hatena.com/users/MysticDoll/profile.png?1610948817" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="MysticDoll"> id:MysticDoll </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/lufiabb"> <img src="https://cdn.profile-image.st-hatena.com/users/lufiabb/profile.png?1539935021" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="lufiabb"> id:lufiabb </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/heleeen"> <img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png?1549545311" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="heleeen"> id:heleeen </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/fxwx23"> <img src="https://cdn.profile-image.st-hatena.com/users/fxwx23/profile.png?1560875953" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="fxwx23"> id:fxwx23 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/taxintt"> <img src="https://cdn.profile-image.st-hatena.com/users/taxintt/profile.png?1579445666" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="taxintt"> id:taxintt </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/cockscomb"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png?1512697380" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="cockscomb"> id:cockscomb </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/masayosu"> <img src="https://cdn.profile-image.st-hatena.com/users/masayosu/profile.png?1591081263" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="masayosu"> id:masayosu </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/Furutsuki"> <img src="https://cdn.profile-image.st-hatena.com/users/Furutsuki/profile.png?1503402472" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="Furutsuki"> id:Furutsuki </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/hagihala"> <img src="https://cdn.profile-image.st-hatena.com/users/hagihala/profile.png?1348931532" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="hagihala"> id:hagihala </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/maku693"> <img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png?1608107800" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="maku693"> id:maku693 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/blog-media"> <img src="https://cdn.profile-image.st-hatena.com/users/blog-media/profile.png?1627444619" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="blog-media"> id:blog-media </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/motemen"> <img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="motemen"> id:motemen </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/d-haru"> <img src="https://cdn.profile-image.st-hatena.com/users/d-haru/profile.png?1665992949" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="d-haru"> id:d-haru </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/kmuto"> <img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png?1669474947" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="kmuto"> id:kmuto </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/arthur-1"> <img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png?1648713639" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="arthur-1"> id:arthur-1 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/nabe1216"> <img src="https://cdn.profile-image.st-hatena.com/users/nabe1216/profile.png?1572919930" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="nabe1216"> id:nabe1216 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/tkzwtks"> <img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png?1473181177" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="tkzwtks"> id:tkzwtks </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/masawada"> <img src="https://cdn.profile-image.st-hatena.com/users/masawada/profile.png?1510304018" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="masawada"> id:masawada </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/momochi29"> <img src="https://cdn.profile-image.st-hatena.com/users/momochi29/profile.png?1550489611" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="momochi29"> id:momochi29 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/mizdra"> <img src="https://cdn.profile-image.st-hatena.com/users/mizdra/profile.png?1701668305" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="mizdra"> id:mizdra </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/KGA"> <img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="KGA"> id:KGA </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/tokizuoh"> <img src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png?1719729147" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="tokizuoh"> id:tokizuoh </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/miki_bene"> <img src="https://cdn.profile-image.st-hatena.com/users/miki_bene/profile.png?1445842470" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="miki_bene"> id:miki_bene </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/astj"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile.png?1375861047" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="astj"> id:astj </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/nanto_vi"> <img src="https://cdn.profile-image.st-hatena.com/users/nanto_vi/profile.png" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="nanto_vi"> id:nanto_vi </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/do-su-0805"> <img src="https://cdn.profile-image.st-hatena.com/users/do-su-0805/profile.png?1537317991" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="do-su-0805"> id:do-su-0805 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/nakiwo"> <img src="https://cdn.profile-image.st-hatena.com/users/nakiwo/profile.png?1603101572" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="nakiwo"> id:nakiwo </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/wtatsuru"> <img src="https://cdn.profile-image.st-hatena.com/users/wtatsuru/profile.png?1512697216" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="wtatsuru"> id:wtatsuru </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/missasan"> <img src="https://cdn.profile-image.st-hatena.com/users/missasan/profile.png?1614821959" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="missasan"> id:missasan </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/hogashi"> <img src="https://cdn.profile-image.st-hatena.com/users/hogashi/profile.png?1440928833" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="hogashi"> id:hogashi </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/polamjag"> <img src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png?1548587016" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="polamjag"> id:polamjag </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/susisu"> <img src="https://cdn.profile-image.st-hatena.com/users/susisu/profile.png?1688642403" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="susisu"> id:susisu </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/hitode909"> <img src="https://cdn.profile-image.st-hatena.com/users/hitode909/profile.png?1556637331" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="hitode909"> id:hitode909 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/Pasta-K"> <img src="https://cdn.profile-image.st-hatena.com/users/Pasta-K/profile.png?1512700207" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="Pasta-K"> id:Pasta-K </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/chris4403"> <img src="https://cdn.profile-image.st-hatena.com/users/chris4403/profile.png?1512697416" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="chris4403"> id:chris4403 </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/yashigani_w"> <img src="https://cdn.profile-image.st-hatena.com/users/yashigani_w/profile.png?1512697699" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="yashigani_w"> id:yashigani_w </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/ueday"> <img src="https://cdn.profile-image.st-hatena.com/users/ueday/profile.png?1513151360" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="ueday"> id:ueday </span> </a> </li> <li> <a href="https://developer.hatenastaff.com/archive/author/pokutuna"> <img src="https://cdn.profile-image.st-hatena.com/users/pokutuna/profile.png" class="authors-user-icon"> <span class="authors-user-name" data-load-nickname="1" data-user-name="pokutuna"> id:pokutuna </span> </a> </li> </ul> </div> </div> <div class="hatena-module hatena-module-recent-entries "> <div class="hatena-module-title"> <a href="https://developer.hatenastaff.com/archive"> 最新記事 </a> </div> <div class="hatena-module-body"> <ul class="recent-entries hatena-urllist "> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <div class="urllist-date-link recent-entries-date-link"> <a href="https://developer.hatenastaff.com/archive/2025/02/19" rel="nofollow"> <time datetime="2025-02-19T03:00:00Z" title="2025年2月19日"> 2025-02-19 </time> </a> </div> <a href="https://developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-2" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">様々なマンガアプリを素早く開発できる「GigaViewer for Apps」のしくみ iOS 編</a> <a href="https://b.hatena.ne.jp/entry/s/developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-2" class="bookmark-widget-counter"> <img src="https://b.hatena.ne.jp/entry/image/https://developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-2" alt="はてなブックマーク - 様々なマンガアプリを素早く開発できる「GigaViewer for Apps」のしくみ iOS 編"> </a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <div class="urllist-date-link recent-entries-date-link"> <a href="https://developer.hatenastaff.com/archive/2025/02/07" rel="nofollow"> <time datetime="2025-02-07T09:07:11Z" title="2025年2月7日"> 2025-02-07 </time> </a> </div> <a href="https://developer.hatenastaff.com/entry/2025/02/07/180711" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">はてなアイコンの裏側の紹介 CloudflareとHonoX</a> <a href="https://b.hatena.ne.jp/entry/s/developer.hatenastaff.com/entry/2025/02/07/180711" class="bookmark-widget-counter"> <img src="https://b.hatena.ne.jp/entry/image/https://developer.hatenastaff.com/entry/2025/02/07/180711" alt="はてなブックマーク - はてなアイコンの裏側の紹介 CloudflareとHonoX"> </a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <div class="urllist-date-link recent-entries-date-link"> <a href="https://developer.hatenastaff.com/archive/2025/02/05" rel="nofollow"> <time datetime="2025-02-05T03:00:00Z" title="2025年2月5日"> 2025-02-05 </time> </a> </div> <a href="https://developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-1" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">『Inside GigaViewer for Apps』連載開始!技術と開発の舞台裏 #GigaViewer</a> <a href="https://b.hatena.ne.jp/entry/s/developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-1" class="bookmark-widget-counter"> <img src="https://b.hatena.ne.jp/entry/image/https://developer.hatenastaff.com/entry/inside-gigaviewer-for-apps-1" alt="はてなブックマーク - 『Inside GigaViewer for Apps』連載開始!技術と開発の舞台裏 #GigaViewer"> </a> </div> </li> </ul> </div> </div> <div class="hatena-module hatena-module-archive" data-archive-type="default" data-archive-url="https://developer.hatenastaff.com/archive"> <div class="hatena-module-title"> <a href="https://developer.hatenastaff.com/archive">月別アーカイブ</a> </div> <div class="hatena-module-body"> <ul class="hatena-urllist"> <li class="archive-module-year archive-module-year-hidden" data-year="2025"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2025" class="archive-module-year-title archive-module-year-2025"> 2025 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2025/02" class="archive-module-month-title archive-module-month-2025-2"> 2025 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2025/01" class="archive-module-month-title archive-module-month-2025-1"> 2025 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2024"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2024" class="archive-module-year-title archive-module-year-2024"> 2024 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/12" class="archive-module-month-title archive-module-month-2024-12"> 2024 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/11" class="archive-module-month-title archive-module-month-2024-11"> 2024 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/10" class="archive-module-month-title archive-module-month-2024-10"> 2024 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/09" class="archive-module-month-title archive-module-month-2024-9"> 2024 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/08" class="archive-module-month-title archive-module-month-2024-8"> 2024 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/07" class="archive-module-month-title archive-module-month-2024-7"> 2024 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/06" class="archive-module-month-title archive-module-month-2024-6"> 2024 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/05" class="archive-module-month-title archive-module-month-2024-5"> 2024 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/04" class="archive-module-month-title archive-module-month-2024-4"> 2024 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/03" class="archive-module-month-title archive-module-month-2024-3"> 2024 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/02" class="archive-module-month-title archive-module-month-2024-2"> 2024 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2024/01" class="archive-module-month-title archive-module-month-2024-1"> 2024 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2023"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2023" class="archive-module-year-title archive-module-year-2023"> 2023 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/12" class="archive-module-month-title archive-module-month-2023-12"> 2023 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/11" class="archive-module-month-title archive-module-month-2023-11"> 2023 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/10" class="archive-module-month-title archive-module-month-2023-10"> 2023 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/09" class="archive-module-month-title archive-module-month-2023-9"> 2023 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/08" class="archive-module-month-title archive-module-month-2023-8"> 2023 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/07" class="archive-module-month-title archive-module-month-2023-7"> 2023 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/06" class="archive-module-month-title archive-module-month-2023-6"> 2023 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/05" class="archive-module-month-title archive-module-month-2023-5"> 2023 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/04" class="archive-module-month-title archive-module-month-2023-4"> 2023 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/03" class="archive-module-month-title archive-module-month-2023-3"> 2023 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/02" class="archive-module-month-title archive-module-month-2023-2"> 2023 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2023/01" class="archive-module-month-title archive-module-month-2023-1"> 2023 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2022"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2022" class="archive-module-year-title archive-module-year-2022"> 2022 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/12" class="archive-module-month-title archive-module-month-2022-12"> 2022 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/11" class="archive-module-month-title archive-module-month-2022-11"> 2022 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/10" class="archive-module-month-title archive-module-month-2022-10"> 2022 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/09" class="archive-module-month-title archive-module-month-2022-9"> 2022 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/08" class="archive-module-month-title archive-module-month-2022-8"> 2022 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/07" class="archive-module-month-title archive-module-month-2022-7"> 2022 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/06" class="archive-module-month-title archive-module-month-2022-6"> 2022 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/05" class="archive-module-month-title archive-module-month-2022-5"> 2022 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/04" class="archive-module-month-title archive-module-month-2022-4"> 2022 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/03" class="archive-module-month-title archive-module-month-2022-3"> 2022 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/02" class="archive-module-month-title archive-module-month-2022-2"> 2022 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2022/01" class="archive-module-month-title archive-module-month-2022-1"> 2022 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2021"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2021" class="archive-module-year-title archive-module-year-2021"> 2021 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/12" class="archive-module-month-title archive-module-month-2021-12"> 2021 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/11" class="archive-module-month-title archive-module-month-2021-11"> 2021 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/10" class="archive-module-month-title archive-module-month-2021-10"> 2021 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/09" class="archive-module-month-title archive-module-month-2021-9"> 2021 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/08" class="archive-module-month-title archive-module-month-2021-8"> 2021 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/07" class="archive-module-month-title archive-module-month-2021-7"> 2021 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/06" class="archive-module-month-title archive-module-month-2021-6"> 2021 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/05" class="archive-module-month-title archive-module-month-2021-5"> 2021 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/04" class="archive-module-month-title archive-module-month-2021-4"> 2021 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/03" class="archive-module-month-title archive-module-month-2021-3"> 2021 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/02" class="archive-module-month-title archive-module-month-2021-2"> 2021 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2021/01" class="archive-module-month-title archive-module-month-2021-1"> 2021 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2020"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2020" class="archive-module-year-title archive-module-year-2020"> 2020 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/12" class="archive-module-month-title archive-module-month-2020-12"> 2020 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/11" class="archive-module-month-title archive-module-month-2020-11"> 2020 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/10" class="archive-module-month-title archive-module-month-2020-10"> 2020 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/09" class="archive-module-month-title archive-module-month-2020-9"> 2020 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/08" class="archive-module-month-title archive-module-month-2020-8"> 2020 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/07" class="archive-module-month-title archive-module-month-2020-7"> 2020 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/06" class="archive-module-month-title archive-module-month-2020-6"> 2020 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/05" class="archive-module-month-title archive-module-month-2020-5"> 2020 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/04" class="archive-module-month-title archive-module-month-2020-4"> 2020 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/03" class="archive-module-month-title archive-module-month-2020-3"> 2020 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/02" class="archive-module-month-title archive-module-month-2020-2"> 2020 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2020/01" class="archive-module-month-title archive-module-month-2020-1"> 2020 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2019"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2019" class="archive-module-year-title archive-module-year-2019"> 2019 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/12" class="archive-module-month-title archive-module-month-2019-12"> 2019 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/11" class="archive-module-month-title archive-module-month-2019-11"> 2019 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/09" class="archive-module-month-title archive-module-month-2019-9"> 2019 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/08" class="archive-module-month-title archive-module-month-2019-8"> 2019 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/07" class="archive-module-month-title archive-module-month-2019-7"> 2019 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/06" class="archive-module-month-title archive-module-month-2019-6"> 2019 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/05" class="archive-module-month-title archive-module-month-2019-5"> 2019 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/04" class="archive-module-month-title archive-module-month-2019-4"> 2019 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/03" class="archive-module-month-title archive-module-month-2019-3"> 2019 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/02" class="archive-module-month-title archive-module-month-2019-2"> 2019 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2019/01" class="archive-module-month-title archive-module-month-2019-1"> 2019 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2018"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2018" class="archive-module-year-title archive-module-year-2018"> 2018 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/12" class="archive-module-month-title archive-module-month-2018-12"> 2018 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/11" class="archive-module-month-title archive-module-month-2018-11"> 2018 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/10" class="archive-module-month-title archive-module-month-2018-10"> 2018 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/09" class="archive-module-month-title archive-module-month-2018-9"> 2018 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/08" class="archive-module-month-title archive-module-month-2018-8"> 2018 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/07" class="archive-module-month-title archive-module-month-2018-7"> 2018 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/06" class="archive-module-month-title archive-module-month-2018-6"> 2018 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/05" class="archive-module-month-title archive-module-month-2018-5"> 2018 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/04" class="archive-module-month-title archive-module-month-2018-4"> 2018 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/03" class="archive-module-month-title archive-module-month-2018-3"> 2018 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/02" class="archive-module-month-title archive-module-month-2018-2"> 2018 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2018/01" class="archive-module-month-title archive-module-month-2018-1"> 2018 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2017"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2017" class="archive-module-year-title archive-module-year-2017"> 2017 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/12" class="archive-module-month-title archive-module-month-2017-12"> 2017 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/11" class="archive-module-month-title archive-module-month-2017-11"> 2017 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/10" class="archive-module-month-title archive-module-month-2017-10"> 2017 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/09" class="archive-module-month-title archive-module-month-2017-9"> 2017 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/08" class="archive-module-month-title archive-module-month-2017-8"> 2017 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/07" class="archive-module-month-title archive-module-month-2017-7"> 2017 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/06" class="archive-module-month-title archive-module-month-2017-6"> 2017 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/05" class="archive-module-month-title archive-module-month-2017-5"> 2017 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/04" class="archive-module-month-title archive-module-month-2017-4"> 2017 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/03" class="archive-module-month-title archive-module-month-2017-3"> 2017 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/02" class="archive-module-month-title archive-module-month-2017-2"> 2017 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2017/01" class="archive-module-month-title archive-module-month-2017-1"> 2017 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2016"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2016" class="archive-module-year-title archive-module-year-2016"> 2016 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/12" class="archive-module-month-title archive-module-month-2016-12"> 2016 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/11" class="archive-module-month-title archive-module-month-2016-11"> 2016 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/10" class="archive-module-month-title archive-module-month-2016-10"> 2016 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/09" class="archive-module-month-title archive-module-month-2016-9"> 2016 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/08" class="archive-module-month-title archive-module-month-2016-8"> 2016 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/07" class="archive-module-month-title archive-module-month-2016-7"> 2016 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/06" class="archive-module-month-title archive-module-month-2016-6"> 2016 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/05" class="archive-module-month-title archive-module-month-2016-5"> 2016 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/04" class="archive-module-month-title archive-module-month-2016-4"> 2016 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/03" class="archive-module-month-title archive-module-month-2016-3"> 2016 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/02" class="archive-module-month-title archive-module-month-2016-2"> 2016 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2016/01" class="archive-module-month-title archive-module-month-2016-1"> 2016 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2015"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2015" class="archive-module-year-title archive-module-year-2015"> 2015 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/12" class="archive-module-month-title archive-module-month-2015-12"> 2015 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/11" class="archive-module-month-title archive-module-month-2015-11"> 2015 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/10" class="archive-module-month-title archive-module-month-2015-10"> 2015 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/09" class="archive-module-month-title archive-module-month-2015-9"> 2015 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/08" class="archive-module-month-title archive-module-month-2015-8"> 2015 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/07" class="archive-module-month-title archive-module-month-2015-7"> 2015 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/06" class="archive-module-month-title archive-module-month-2015-6"> 2015 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/05" class="archive-module-month-title archive-module-month-2015-5"> 2015 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/04" class="archive-module-month-title archive-module-month-2015-4"> 2015 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/03" class="archive-module-month-title archive-module-month-2015-3"> 2015 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/02" class="archive-module-month-title archive-module-month-2015-2"> 2015 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2015/01" class="archive-module-month-title archive-module-month-2015-1"> 2015 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2014"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2014" class="archive-module-year-title archive-module-year-2014"> 2014 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/12" class="archive-module-month-title archive-module-month-2014-12"> 2014 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/11" class="archive-module-month-title archive-module-month-2014-11"> 2014 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/10" class="archive-module-month-title archive-module-month-2014-10"> 2014 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/09" class="archive-module-month-title archive-module-month-2014-9"> 2014 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/08" class="archive-module-month-title archive-module-month-2014-8"> 2014 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/07" class="archive-module-month-title archive-module-month-2014-7"> 2014 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/06" class="archive-module-month-title archive-module-month-2014-6"> 2014 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/05" class="archive-module-month-title archive-module-month-2014-5"> 2014 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/03" class="archive-module-month-title archive-module-month-2014-3"> 2014 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2014/02" class="archive-module-month-title archive-module-month-2014-2"> 2014 / 2 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2013"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2013" class="archive-module-year-title archive-module-year-2013"> 2013 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/12" class="archive-module-month-title archive-module-month-2013-12"> 2013 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/11" class="archive-module-month-title archive-module-month-2013-11"> 2013 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/10" class="archive-module-month-title archive-module-month-2013-10"> 2013 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/09" class="archive-module-month-title archive-module-month-2013-9"> 2013 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/08" class="archive-module-month-title archive-module-month-2013-8"> 2013 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/06" class="archive-module-month-title archive-module-month-2013-6"> 2013 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/05" class="archive-module-month-title archive-module-month-2013-5"> 2013 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2013/04" class="archive-module-month-title archive-module-month-2013-4"> 2013 / 4 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2012"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2012" class="archive-module-year-title archive-module-year-2012"> 2012 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2012/10" class="archive-module-month-title archive-module-month-2012-10"> 2012 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2012/09" class="archive-module-month-title archive-module-month-2012-9"> 2012 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2012/05" class="archive-module-month-title archive-module-month-2012-5"> 2012 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2012/04" class="archive-module-month-title archive-module-month-2012-4"> 2012 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2012/03" class="archive-module-month-title archive-module-month-2012-3"> 2012 / 3 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2011"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2011" class="archive-module-year-title archive-module-year-2011"> 2011 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/08" class="archive-module-month-title archive-module-month-2011-8"> 2011 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/07" class="archive-module-month-title archive-module-month-2011-7"> 2011 / 7 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/06" class="archive-module-month-title archive-module-month-2011-6"> 2011 / 6 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/04" class="archive-module-month-title archive-module-month-2011-4"> 2011 / 4 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/03" class="archive-module-month-title archive-module-month-2011-3"> 2011 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/02" class="archive-module-month-title archive-module-month-2011-2"> 2011 / 2 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2011/01" class="archive-module-month-title archive-module-month-2011-1"> 2011 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2010"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2010" class="archive-module-year-title archive-module-year-2010"> 2010 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2010/12" class="archive-module-month-title archive-module-month-2010-12"> 2010 / 12 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2010/11" class="archive-module-month-title archive-module-month-2010-11"> 2010 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2010/08" class="archive-module-month-title archive-module-month-2010-8"> 2010 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2010/07" class="archive-module-month-title archive-module-month-2010-7"> 2010 / 7 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2007"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2007" class="archive-module-year-title archive-module-year-2007"> 2007 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2007/08" class="archive-module-month-title archive-module-month-2007-8"> 2007 / 8 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2007/03" class="archive-module-month-title archive-module-month-2007-3"> 2007 / 3 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2007/01" class="archive-module-month-title archive-module-month-2007-1"> 2007 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2006"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2006" class="archive-module-year-title archive-module-year-2006"> 2006 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2006/05" class="archive-module-month-title archive-module-month-2006-5"> 2006 / 5 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2006/02" class="archive-module-month-title archive-module-month-2006-2"> 2006 / 2 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2005"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://developer.hatenastaff.com/archive/2005" class="archive-module-year-title archive-module-year-2005"> 2005 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2005/11" class="archive-module-month-title archive-module-month-2005-11"> 2005 / 11 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2005/10" class="archive-module-month-title archive-module-month-2005-10"> 2005 / 10 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2005/09" class="archive-module-month-title archive-module-month-2005-9"> 2005 / 9 </a> </li> <li class="archive-module-month"> <a href="https://developer.hatenastaff.com/archive/2005/08" class="archive-module-month-title archive-module-month-2005-8"> 2005 / 8 </a> </li> </ul> </li> </ul> </div> </div> <div class="hatena-module hatena-module-html"> <div class="hatena-module-title">ツイート</div> <div class="hatena-module-body"> <div class="sidebar-tweets-timeline"> <a class="twitter-timeline" href="https://twitter.com/hatenatech" data-width="100%" data-height="300" data-chrome="nofooter" data-tweet-limit="2"> </a> </div> </div> </div> </div> </aside> </div> </div> <div id="bottom-editarea"> <footer> <a href="//hatenacorp.jp/"> <img src="https://cdn.blog.st-hatena.com/files/12704346814673975483/13574176438017835249" width="auto" height="32" alt=""> <span id="footer-copyright">© Hatena Co., Ltd.</span> </a> </footer> </div> </div> </div> <script async="" src="https://s.hatena.ne.jp/js/widget/star.js"></script> <script> if (typeof window.Hatena === 'undefined') { window.Hatena = {}; } if (!Hatena.hasOwnProperty('Star')) { Hatena.Star = { VERSION: 2, }; } </script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v17.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div class="quote-box"> <div class="tooltip-quote tooltip-quote-stock"> <i class="blogicon-quote" title="引用をストック"></i> </div> <div class="tooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet"> <a class="js-tweet-quote" target="_blank" data-track-name="quote-tweet" data-track-once=""> <img src="https://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version=3302d0c519de548bcb3552ea0bf509" title="引用して投稿する"> </a> </div> </div> <div class="quote-stock-panel" id="quote-stock-message-box" style="position: absolute; z-index: 3000"> <div class="message-box" id="quote-stock-succeeded-message" style="display: none"> <p>引用をストックしました</p> <button class="btn btn-primary" id="quote-stock-show-editor-button" data-track-name="curation-quote-edit-button">ストック一覧を見る</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="message-box" id="quote-login-required-message" style="display: none"> <p>引用するにはまずログインしてください</p> <button class="btn btn-primary" id="quote-login-button">ログイン</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="quote-stock-failed-message" style="display: none"> <p>引用をストックできませんでした。再度お試しください</p> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="unstockable-quote-message-box" style="display: none; position: absolute; z-index: 3000;"> <p>限定公開記事のため引用できません。</p> </div> </div> <script type="x-underscore-template" id="js-requote-button-template"> <div class="requote-button js-requote-button"> <button class="requote-button-btn tipsy-top" title="引用する"><i class="blogicon-quote"></i></button> </div> </script> <div id="hidden-subscribe-button" style="display: none;"> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box"> <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once=""> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> </div> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <script src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script> <script type="text/javascript" src="https://cdn.blog.st-hatena.com/js/external/jquery.min.js?v=1.12.4&amp;version=3302d0c519de548bcb3552ea0bf509"></script> <script src="https://cdn.blog.st-hatena.com/js/texts-ja.js?version=3302d0c519de548bcb3552ea0bf509"></script> <script id="vendors-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/vendors.js?version=3302d0c519de548bcb3552ea0bf509" crossorigin="anonymous"></script> <script id="hatenablog-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/hatenablog.js?version=3302d0c519de548bcb3552ea0bf509" crossorigin="anonymous" data-page-id="entry"></script> <script>Hatena.Diary.GlobalHeader.init()</script> </body></html>

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