PageSourceSearch

https://www.stray-scrapbook.work/author

html stray-scrapbook.work collected 2026-10-05 04:55:58 UTC 91,624 bytes, 2,685 lines download raw bytes

1<!DOCTYPE html>
2<html
3  lang="ja"
4
5
6data-admin-domain="//blog.hatena.ne.jp"
7data-admin-origin="https://blog.hatena.ne.jp"
8data-author="ryota-17"
9data-avail-langs="ja en"
10data-blog="17number.hatenablog.jp"
11data-blog-comments-top-is-new="1"
12data-blog-host="17number.hatenablog.jp"
13data-blog-is-public="1"
14data-blog-name="野良ジニアのスクラップブック"
15data-blog-owner="ryota-17"
16data-blog-show-ads=""
17data-blog-show-sleeping-ads=""
18data-blog-uri="https://www.stray-scrapbook.work/"
19data-blog-uuid="10328749687202976935"
20data-blogs-uri-base="https://www.stray-scrapbook.work"
21data-brand="pro"
22data-data-layer="{&quot;hatenablog&quot;:{&quot;admin&quot;:{},&quot;analytics&quot;:{&quot;brand_property_id&quot;:&quot;&quot;,&quot;measurement_id&quot;:&quot;&quot;,&quot;non_sampling_property_id&quot;:&quot;&quot;,&quot;property_id&quot;:&quot;UA-90202851-1&quot;,&quot;separated_property_id&quot;:&quot;UA-29716941-17&quot;},&quot;blog&quot;:{&quot;blog_id&quot;:&quot;10328749687202976935&quot;,&quot;content_seems_japanese&quot;:&quot;true&quot;,&quot;disable_ads&quot;:&quot;custom_domain&quot;,&quot;enable_ads&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;true&quot;,&quot;lang&quot;:&quot;ja&quot;,&quot;name&quot;:&quot;\u91ce\u826f\u30b8\u30cb\u30a2\u306e\u30b9\u30af\u30e9\u30c3\u30d7\u30d6\u30c3\u30af&quot;,&quot;owner_name&quot;:&quot;ryota-17&quot;,&quot;uri&quot;:&quot;https://www.stray-scrapbook.work/&quot;},&quot;brand&quot;:&quot;pro&quot;,&quot;page_id&quot;:&quot;static_page&quot;,&quot;permalink_entry&quot;:{&quot;author_name&quot;:&quot;ryota-17&quot;,&quot;categories&quot;:&quot;&quot;,&quot;character_count&quot;:213,&quot;date&quot;:&quot;2018-03-29&quot;,&quot;entry_id&quot;:&quot;17391345971630358797&quot;,&quot;first_category&quot;:&quot;&quot;,&quot;hour&quot;:&quot;3&quot;,&quot;title&quot;:&quot;\u904b\u55b6\u8005\u60c5\u5831&quot;,&quot;uri&quot;:&quot;https://www.stray-scrapbook.work/author&quot;},&quot;pro&quot;:&quot;pro&quot;,&quot;router_type&quot;:&quot;blogs&quot;}}"
23data-device="pc"
24data-dont-recommend-pro="false"
25data-global-domain="https://hatena.blog"
26data-globalheader-color="b"
27data-globalheader-type="pc"
28data-has-touch-view="1"
29data-help-url="https://help.hatenablog.com"
30data-hide-header="1"
31data-no-suggest-touch-view="1"
32data-page="static_page"
33data-parts-domain="https://hatenablog-parts.com"
34data-plus-available="1"
35data-pro="true"
36data-router-type="blogs"
37data-sentry-dsn="https://[email protected]/1195218"
38data-sentry-environment="production"
39data-sentry-sample-rate="0.1"
40data-show-heading-anchor-link="1"
41data-static-domain="https://cdn.blog.st-hatena.com"
42data-version="89f69427ebf1344326896140241320"
43
44
45
46
47
48  itemscope
49  itemtype="http://schema.org/Blog"
50
51
52  data-initial-state="{}"
53
54  >
55  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# article: http://ogp.me/ns/article#">
56
57  
58
59  
60  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
61
62
63  
64
65
66  
67
68  <meta name="robots" content="max-image-preview:large" />
69
70
71  <meta charset="utf-8"/>
72  <meta http-equiv="X-UA-Compatible" content="IE=7; IE=9; IE=10; IE=11" />
73  <title>運営者情報 - 野良ジニアのスクラップブック</title>
74
75  
76  <link rel="canonical" href="https://www.stray-scrapbook.work/author"/>
77
78
79
80  
81
82<meta itemprop="name" content="運営者情報 - 野良ジニアのスクラップブック"/>
83
84  <meta itemprop="image" content="https://cdn.image.st-hatena.com/image/scale/df56668ba3840870aae485cfacccfd6d3d328732/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fdefault_entry_og_image%2F121310073%2F1514251611645666"/>
85
86
87  <meta property="og:title" content="運営者情報 - 野良ジニアのスクラップブック"/>
88<meta property="og:type" content="article"/>
89  <meta property="og:url" content="https://www.stray-scrapbook.work/author"/>
90
91  <meta property="og:image" content="https://cdn.image.st-hatena.com/image/scale/df56668ba3840870aae485cfacccfd6d3d328732/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fdefault_entry_og_image%2F121310073%2F1514251611645666"/>
92
93<meta property="og:image:alt" content="運営者情報 - 野良ジニアのスクラップブック"/>
94    <meta property="og:description" content="運営者について 野良エンジニア 福岡市在住 30代 IT エンジニア 技術、ガジェット、漫画、100均DIY が好み 100均 DIY からガチの DIY に手を伸ばそうか思案中 お問合せフォーム Twitter アカウント(@stray_engineer) 頂いたら泣いて喜びます 賢さの種(技術書)で智力アップ プライバシーポリシー プライバシーポリシーのページをご覧ください。 免責事項 免責事項のページをご覧ください。" />
95<meta property="og:site_name" content="野良ジニアのスクラップブック"/>
96
97  <meta property="article:published_time" content="2018-03-28T18:02:04Z" />
98
99      <meta name="twitter:card"  content="summary_large_image" />
100    <meta name="twitter:image" content="https://cdn.image.st-hatena.com/image/scale/df56668ba3840870aae485cfacccfd6d3d328732/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fdefault_entry_og_image%2F121310073%2F1514251611645666" />  <meta name="twitter:title" content="運営者情報 - 野良ジニアのスクラップブック" />    <meta name="twitter:description" content="運営者について 野良エンジニア 福岡市在住 30代 IT エンジニア 技術、ガジェット、漫画、100均DIY が好み 100均 DIY からガチの DIY に手を伸ばそうか思案中 お問合せフォーム Twitter アカウント(@stray_engineer) 頂いたら泣いて喜びます 賢さの種(技術書)で智力アップ プラ…" />  <meta name="twitter:app:name:iphone" content="はてなブログアプリ" />
101  <meta name="twitter:app:id:iphone" content="583299321" />
102  <meta name="twitter:app:url:iphone" content="hatenablog:///open?uri=https%3A%2F%2Fwww.stray-scrapbook.work%2Fauthor" />
103  
104    <meta name="description" content="運営者について 野良エンジニア 福岡市在住 30代 IT エンジニア 技術、ガジェット、漫画、100均DIY が好み 100均 DIY からガチの DIY に手を伸ばそうか思案中 お問合せフォーム Twitter アカウント(@stray_engineer) 頂いたら泣いて喜びます 賢さの種(技術書)で智力アップ プライバシーポリシー プライバシーポリシーのページをご覧ください。 免責事項 免責事項のページをご覧ください。" />
105    <meta name="google-site-verification" content="k8r9syVJUkMHRKn4ZL_naXNSUKdy5O28dBCtmKCD754" />
106
107
108  
109<script
110  id="embed-gtm-data-layer-loader"
111  data-data-layer-page-specific="{&quot;hatenablog&quot;:{&quot;blogs_permalink&quot;:{&quot;has_related_entries_with_elasticsearch&quot;:&quot;false&quot;,&quot;blog_afc_issued&quot;:&quot;false&quot;,&quot;is_author_pro&quot;:&quot;true&quot;,&quot;is_blog_sleeping&quot;:&quot;true&quot;,&quot;entry_afc_issued&quot;:&quot;false&quot;}}}"
112>
113(function() {
114  function loadDataLayer(elem, attrName) {
115    if (!elem) { return {}; }
116    var json = elem.getAttribute(attrName);
117    if (!json) { return {}; }
118    return JSON.parse(json);
119  }
120
121  var globalVariables = loadDataLayer(
122    document.documentElement,
123    'data-data-layer'
124  );
125  var pageSpecificVariables = loadDataLayer(
126    document.getElementById('embed-gtm-data-layer-loader'),
127    'data-data-layer-page-specific'
128  );
129
130  var variables = [globalVariables, pageSpecificVariables];
131
132  if (!window.dataLayer) {
133    window.dataLayer = [];
134  }
135
136  for (var i = 0; i < variables.length; i++) {
137    window.dataLayer.push(variables[i]);
138  }
139})();
140</script>
140
141
142<!-- Google Tag Manager -->
143<script>
vendor: 327 bytes, lines 143-147
143(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
144new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
145j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
146'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
147})(window,document,'script','dataLayer','
147GTM-P4CXTW
vendor: 3 bytes, line 147
147');
147</script>
147
148<!-- End Google Tag Manager -->
149
150
151
152
153
154
155
156
157
158
159
160  <link rel="shortcut icon" href="https://www.stray-scrapbook.work/icon/favicon">
161<link rel="apple-touch-icon" href="https://www.stray-scrapbook.work/icon/touch">
162<link rel="icon" sizes="192x192" href="https://www.stray-scrapbook.work/icon/link">
163
164  
165
166<link rel="alternate" type="application/atom+xml" title="Atom" href="https://www.stray-scrapbook.work/feed"/>
167<link rel="alternate" type="application/rss+xml" title="RSS2.0" href="https://www.stray-scrapbook.work/rss"/>
168
169  <link rel="alternate" type="application/json+oembed" href="https://hatena.blog/oembed?url=https%3A%2F%2Fwww.stray-scrapbook.work%2Fauthor&amp;format=json" title="oEmbed Profile of 運営者情報"/>
170<link rel="alternate" type="text/xml+oembed" href="https://hatena.blog/oembed?url=https%3A%2F%2Fwww.stray-scrapbook.work%2Fauthor&amp;format=xml" title="oEmbed Profile of 運営者情報"/>
171  
172  <link rel="author" href="http://www.hatena.ne.jp/ryota-17/">
173
174  
175
176  
177      <link rel="preload" href="http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryota-17/20170206/20170206164750.png" as="image"/>
178
179
180  
181    
182<link rel="stylesheet" type="text/css" href="https://cdn.blog.st-hatena.com/css/blog.css?version=89f69427ebf1344326896140241320"/>
183
184    
185  <link rel="stylesheet" type="text/css" href="https://usercss.blog.st-hatena.com/blog_style/10328749687202976935/2e72970d3386d831ca073b34e72345aeecd9eea8"/>
186  
187  
188  
189
190  
191
192  
193<script> </script>
193
194
195  
196<style>
197  div#google_afc_user,
198  div.google-afc-user-container,
199  div.google_afc_image,
200  div.google_afc_blocklink {
201      display: block !important;
202  }
203</style>
204
205
206  
207
208  
209
210  <!-- JQuery -->
211<!--[if lt IE 9]>
212<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script>
212
213<![endif]-->
214<!--[if gte IE 9]><!-->
215<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.4.min.js"></script>
215
216<!--<![endif]-->
217
218<!-- Google analytics -->
219<script>
vendor: 351 bytes, lines 219-225
219
220  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
221  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
222  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
223  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
224
225  ga('create', '
225UA-90202851-1
vendor: 15 bytes, lines 225-226
225', 'auto');
226  
226ga('require', 'displayfeatures');
227  ga('send', 'pageview');
228</script>
228
229
230
231
232<!-- Adsense -->
233<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
vendor: 2 bytes, line 233
233
234<script>
235     (adsbygoogle = window.adsbygoogle || []).push({
236          google_ad_client: "ca-pub-2090695631206296",
237          enable_page_level_ads: true
238     });
239</script>
239
240
241
242  
243
244</head>
245
246  <body class="page-static_page header-image-enable enable-top-editarea enable-bottom-editarea static-page-author static-page-layout-entry globalheader-off globalheader-ng-enabled">
247    
248    
249
250<div id="globalheader-container"
251  data-brand="hatenablog"
252  style="display: none"
253  >
254  <iframe id="globalheader" height="37" frameborder="0" allowTransparency="true"></iframe>
255</div>
256
257
258  
259  
260  
261
262  <div id="container">
263    <div id="container-inner">
264      <header id="blog-title" data-brand="hatenablog">
265  <div id="blog-title-inner" style="background-image: url('http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryota-17/20170206/20170206164750.png'); background-position: center -37px;">
266    <div id="blog-title-content">
267      <h1 id="title"><a href="https://www.stray-scrapbook.work/">野良ジニアのスクラップブック</a></h1>
268      
269        <h2 id="blog-description">野良エンジニアによる雑記帳。技術、本、便利グッズなどを気の向くままに。</h2>
270      
271    </div>
272  </div>
273</header>
274
275      
276
277  <div id="top-editarea">
278    <!-- グローバルメニュー -->
279<div id="trigger-point">
280</div>
281<div id="global-menu">
282  <div id="mobile-head">
283    <div id="nav-toggle">
284      <div>
285        <span></span>
286        <span></span>
287        <span></span>
288      </div>
289    </div>
290  </div>
291  <ul class="global-menu-list">
292    <li><a href="http://www.stray-scrapbook.work/">トップ</a></li>
293    <li><a href="http://www.stray-scrapbook.work/archive/category/Lisk">Lisk(LSK) 関連</a></li>
294    <li><a href="http://www.stray-scrapbook.work/recommended">オススメ記事</a></li>
295    <li><a href="http://www.stray-scrapbook.work/author">当ブログについて</a></li>
296  </ul>
297</div>
298
299  </div>
300
301
302      
303        
304      
305      
306
307
308
309
310<div id="content" class="hfeed"
311  
312  >
313  <div id="content-inner">
314    <div id="wrapper">
315      <div id="main">
316        <div id="main-inner">
317          
318
319          
320
321
322
323          
324  
325  <!-- google_ad_section_start -->
326  <!-- rakuten_ad_target_begin -->
327  
328  
329  
330
331  
332
333  
334    
335      
336        <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-400 words-100 mode-markdown entry-odd" id="entry-17391345971630358797" data-keyword-campaign="" data-uuid="17391345971630358797" data-publication-type="page">
337  <div class="entry-inner">
338    <header class="entry-header">
339  
340  
341  <h1 class="entry-title">
342  <a href="https://www.stray-scrapbook.work/author" class="entry-title-link bookmark">運営者情報</a>
343</h1>
344
345  
346  
347
348
349  
350
351  
352
353</header>
354
355    
356
357
358    <div class="entry-content hatenablog-entry">
359  
360    <h2>運営者について</h2>
361
362<ul>
363<li>野良エンジニア</li>
364<li>福岡市在住 30代 IT エンジニア</li>
365<li>技術、ガジェット、漫画、100均DIY が好み</li>
366<li>100均 DIY からガチの DIY に手を伸ばそうか思案中</li>
367<li><a href="https://form.run/@stray-engineer">お問合せフォーム</a></li>
368<li><a href="https://twitter.com/stray_engineer/">Twitter アカウント(@stray_engineer)</a></li>
369</ul>
370
371
372<p><span class="em-wishlist">
373<i class="fas fa-shopping-bag faa-pulse animated"></i> <a href="http://amzn.asia/7GIed6F">頂いたら泣いて喜びます</a><br>
374<i class="fas fa-book faa-pulse animated"></i> <a href="http://amzn.asia/bp02cpi">賢さの種(技術書)で智力アップ</a><br>
375</span></p>
376
377<p><br></p>
378
379<h2>プライバシーポリシー</h2>
380
381<p><a href="/privacyPolicy">プライバシーポリシー</a>のページをご覧ください。</p>
382
383<p><br></p>
384
385<h2>免責事項</h2>
386
387<p><a href="/disclaimer">免責事項</a>のページをご覧ください。</p>
388
389<p><br></p>
390
391    
392    
393
394
395
396
397    
398
399  
400</div>
401
402    
403
404  </div>
405</article>
406
407      
408      
409    
410  
411
412  
413  <!-- rakuten_ad_target_end -->
414  <!-- google_ad_section_end -->
415  
416
417  
418
419
420
421        </div>
422      </div>
423
424      <aside id="box1">
425  <div id="box1-inner">
426  </div>
427</aside>
428
429    </div><!-- #wrapper -->
430
431    
432<aside id="box2">
433  
434  <div id="box2-inner">
435    
436      <div class="hatena-module hatena-module-search-box">
437  <div class="hatena-module-title">
438    検索
439  </div>
440  <div class="hatena-module-body">
441    <form class="search-form" role="search" action="https://www.stray-scrapbook.work/search" method="get">
442  <input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required>
443  <input type="submit" value="検索" class="search-module-button" />
444</form>
445
446  </div>
447</div>
448
449    
450      
451
452<div class="hatena-module hatena-module-profile">
453  <div class="hatena-module-title">
454    プロフィール
455  </div>
456  <div class="hatena-module-body">
457    
458    <a href="https://www.stray-scrapbook.work/about" class="profile-icon-link">
459      <img src="https://cdn.profile-image.st-hatena.com/users/ryota-17/profile.png?1484126139"
460      alt="id:ryota-17" class="profile-icon" />
461    </a>
462    
463
464    
465
466    
467
468    
469    <div class="profile-description">
470      <p>福岡に住む野生のエンジニア。技術的な話題、ライフハック、便利グッズやDIYネタなどを書いてます。</p><p>お問い合わせは<a href="https://form.run/@stray-engineer" target="_blank">こちら</a></p><p><ul>
471<li><a href=/author>運営者情報</a></li>
472<li><a href=/privacyPolicy>プライバシーポリシー</a></li>
473<li><a href=/privacyPolicy>免責事項</a></li>
474</ul><span class="em-wishlist"><br />
475<i class="fas fa-shopping-bag faa-pulse animated"></i> <a href="https://amzn.to/2rJllBB">頂いたら泣いて喜びます</a><br><br />
476<i class="fas fa-book faa-pulse animated"></i> <a href="https://amzn.to/2rKEFyB">賢さの種(技術書)で智力アップ</a><br><br />
477</span><br />
478<a class="twitter-timeline" data-height="300" data-theme="light" href="https://twitter.com/stray_engineer?ref_src=twsrc%5Etfw">Tweets by stray_engineer</a> 
478<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
478</p>
479
480    </div>
481    
482
483    
484
485    
486
487    <div class="profile-about">
488      <a href="https://www.stray-scrapbook.work/about">このブログについて</a>
489    </div>
490
491  </div>
492</div>
493
494    
495      
496<div class="hatena-module hatena-module-html">
497    <div class="hatena-module-title">フォロー/お問合せ</div>
498  <div class="hatena-module-body">
499    <div class="custom-sns-follow-button narrow">
500  <ul>
501    <li>
502      <a class="hatena" href="http://blog.hatena.ne.jp/ryota-17/www.stray-scrapbook.work/subscribe" target="_blank">
503        <i class="blogicon-hatenablog faa-pulse animated"></i>
504        <span class="inner-text">Hatena</span>
505      </a>
506    </li>
507    <li>
508      <a class="twitter" href="https://twitter.com/intent/follow?screen_name=stray_engineer" target="_blank">
509        <i class="fab fa-twitter faa-pulse animated"></i>
510        <span class="inner-text">Twitter</span>
511      </a>
512    </li>
513    <li>
514      <a class="feedly" href="http://feedly.com/i/subscription/feed/http://www.stray-scrapbook.work/feed" target="_blank">
515        <i class="fas fa-rss faa-pulse animated"></i>
516        <span class="inner-text">Feedly</span>
517      </a>
518    </li>
519    <li>
520      <a class="form" href="https://form.run/@stray-engineer" target="_blank">
521        <i class="far fa-envelope faa-pulse animated"></i>
522        <span class="inner-text">Contact</span>
523      </a>
524    </li>
525  </ul>
526</div>
527
528  </div>
529</div>
530
531    
532      
533<div class="hatena-module hatena-module-html">
534    <div class="hatena-module-title">記事</div>
535  <div class="hatena-module-body">
536    <div class="hatena-module-title2">
537<span class="tab active">人気</span>
538<span class="tab">はてブ</span>
539<span class="tab">最新</span>
540<span class="tab">月別</span>
541<span class="tab">カテゴリ</span>
542</div>
543
544  </div>
545</div>
546
547    
548      
549<div class="hatena-module hatena-module-entries-access-ranking"
550  data-count="10"
551  data-source="access"
552  data-category_name=""
553  data-enable_customize_format="0"
554  data-display_entry_image_size_width="100"
555  data-display_entry_image_size_height="100"
556
557  data-display_entry_category="0"
558  data-display_entry_image="0"
559  data-display_entry_image_size_width="100"
560  data-display_entry_image_size_height="100"
561  data-display_entry_body_length="0"
562  data-display_entry_date="0"
563  data-display_entry_title_length="20"
564  data-restrict_entry_title_length="0"
565  data-display_bookmark_count="1"
566
567>
568  <div class="hatena-module-title">
569    
570      人気記事
571    
572  </div>
573  <div class="hatena-module-body">
574    
575  </div>
576</div>
577
578    
579      
580<div class="hatena-module hatena-module-entries-access-ranking"
581  data-count="10"
582  data-source="total_bookmark"
583  data-category_name=""
584  data-enable_customize_format="0"
585  data-display_entry_image_size_width="100"
586  data-display_entry_image_size_height="100"
587
588  data-display_entry_category="0"
589  data-display_entry_image="0"
590  data-display_entry_image_size_width="100"
591  data-display_entry_image_size_height="100"
592  data-display_entry_body_length="0"
593  data-display_entry_date="0"
594  data-display_entry_title_length="20"
595  data-restrict_entry_title_length="0"
596  data-display_bookmark_count="1"
597
598>
599  <div class="hatena-module-title">
600    
601      <a href="http://b.hatena.ne.jp/entrylist?url=https%3A%2F%2Fwww.stray-scrapbook.work%2F&amp;sort=count">注目記事</a>
602    
603  </div>
604  <div class="hatena-module-body">
605    
606  </div>
607</div>
608
609    
610      <div class="hatena-module hatena-module-recent-entries ">
611  <div class="hatena-module-title">
612    <a href="https://www.stray-scrapbook.work/archive">
613      最新記事
614    </a>
615  </div>
616  <div class="hatena-module-body">
617    <ul class="recent-entries hatena-urllist ">
618  
619  
620    
621    <li class="urllist-item recent-entries-item">
622      <div class="urllist-item-inner recent-entries-item-inner">
623        
624          
625          
626          <a href="https://www.stray-scrapbook.work/entry/almostDailyLisk28" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/06/06号</a>
627
628
629
630
631                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/almostDailyLisk28" class="bookmark-widget-counter">
632  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/almostDailyLisk28" alt="はてなブックマーク - ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/06/06号" />
633</a>
634
635          
636
637                </div>
638    </li>
639  
640    
641    <li class="urllist-item recent-entries-item">
642      <div class="urllist-item-inner recent-entries-item-inner">
643        
644          
645          
646          <a href="https://www.stray-scrapbook.work/entry/daisoSiliconeSpray" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">【100均】網戸サッシの滑りが悪いときの解決方法【ダイソー シリコンスプレー】</a>
647
648
649
650
651                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/daisoSiliconeSpray" class="bookmark-widget-counter">
652  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/daisoSiliconeSpray" alt="はてなブックマーク - 【100均】網戸サッシの滑りが悪いときの解決方法【ダイソー シリコンスプレー】" />
653</a>
654
655          
656
657                </div>
658    </li>
659  
660    
661    <li class="urllist-item recent-entries-item">
662      <div class="urllist-item-inner recent-entries-item-inner">
663        
664          
665          
666          <a href="https://www.stray-scrapbook.work/entry/tweetGithubUpdate" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">IFTTT で GitHub リポジトリの RSS(Atom) Feed を監視して Twitter に投稿する方法【仮想通貨 小ネタ】</a>
667
668
669
670
671                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/tweetGithubUpdate" class="bookmark-widget-counter">
672  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/tweetGithubUpdate" alt="はてなブックマーク - IFTTT で GitHub リポジトリの RSS(Atom) Feed を監視して Twitter に投稿する方法【仮想通貨 小ネタ】" />
673</a>
674
675          
676
677                </div>
678    </li>
679  
680    
681    <li class="urllist-item recent-entries-item">
682      <div class="urllist-item-inner recent-entries-item-inner">
683        
684          
685          
686          <a href="https://www.stray-scrapbook.work/entry/shardaxCoinVoting" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">イギリスの仮想通貨取引所 SHARDAX(シャーダックス) の上場候補への投票方法</a>
687
688
689
690
691                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/shardaxCoinVoting" class="bookmark-widget-counter">
692  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/shardaxCoinVoting" alt="はてなブックマーク - イギリスの仮想通貨取引所 SHARDAX(シャーダックス) の上場候補への投票方法" />
693</a>
694
695          
696
697                </div>
698    </li>
699  
700    
701    <li class="urllist-item recent-entries-item">
702      <div class="urllist-item-inner recent-entries-item-inner">
703        
704          
705          
706          <a href="https://www.stray-scrapbook.work/entry/almostDailyLisk27" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/05/29号</a>
707
708
709
710
711                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/almostDailyLisk27" class="bookmark-widget-counter">
712  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/almostDailyLisk27" alt="はてなブックマーク - ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/05/29号" />
713</a>
714
715          
716
717                </div>
718    </li>
719  
720    
721    <li class="urllist-item recent-entries-item">
722      <div class="urllist-item-inner recent-entries-item-inner">
723        
724          
725          
726          <a href="https://www.stray-scrapbook.work/entry/shardaxDiscord" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">イギリスの仮想通貨取引所 SHARDAX(シャーダックス) の Discord 参加方法・Airdrop の受け取り方</a>
727
728
729
730
731                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/shardaxDiscord" class="bookmark-widget-counter">
732  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/shardaxDiscord" alt="はてなブックマーク - イギリスの仮想通貨取引所 SHARDAX(シャーダックス) の Discord 参加方法・Airdrop の受け取り方" />
733</a>
734
735          
736
737                </div>
738    </li>
739  
740    
741    <li class="urllist-item recent-entries-item">
742      <div class="urllist-item-inner recent-entries-item-inner">
743        
744          
745          
746          <a href="https://www.stray-scrapbook.work/entry/shardaxRegistration" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">【最初の5万人は2019年まで取引手数料 無料】イギリスの仮想通貨取引所 SHARDAX の特徴・登録方法</a>
747
748
749
750
751                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/shardaxRegistration" class="bookmark-widget-counter">
752  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/shardaxRegistration" alt="はてなブックマーク - 【最初の5万人は2019年まで取引手数料 無料】イギリスの仮想通貨取引所 SHARDAX の特徴・登録方法" />
753</a>
754
755          
756
757                </div>
758    </li>
759  
760    
761    <li class="urllist-item recent-entries-item">
762      <div class="urllist-item-inner recent-entries-item-inner">
763        
764          
765          
766          <a href="https://www.stray-scrapbook.work/entry/twitterSearchRetweetWithComment" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">Twitter 引用RT(リツイート) 検索方法 と &quot;_&quot;(アンダーバー) 入りで検索できない理由</a>
767
768
769
770
771                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/twitterSearchRetweetWithComment" class="bookmark-widget-counter">
772  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/twitterSearchRetweetWithComment" alt="はてなブックマーク - Twitter 引用RT(リツイート) 検索方法 と &quot;_&quot;(アンダーバー) 入りで検索できない理由" />
773</a>
774
775          
776
777                </div>
778    </li>
779  
780    
781    <li class="urllist-item recent-entries-item">
782      <div class="urllist-item-inner recent-entries-item-inner">
783        
784          
785          
786          <a href="https://www.stray-scrapbook.work/entry/2018/05/24/070000" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/05/24号</a>
787
788
789
790
791                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/2018/05/24/070000" class="bookmark-widget-counter">
792  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/2018/05/24/070000" alt="はてなブックマーク - ほぼ日刊(かもしれない)Lisk界隈 雑まとめ 2018/05/24号" />
793</a>
794
795          
796
797                </div>
798    </li>
799  
800    
801    <li class="urllist-item recent-entries-item">
802      <div class="urllist-item-inner recent-entries-item-inner">
803        
804          
805          
806          <a href="https://www.stray-scrapbook.work/entry/entriesAboutTwitter" class="urllist-title-link recent-entries-title-link  urllist-title recent-entries-title">Twitter 関連記事 まとめ</a>
807
808
809
810
811                      <a href="https://b.hatena.ne.jp/entry/s/www.stray-scrapbook.work/entry/entriesAboutTwitter" class="bookmark-widget-counter">
812  <img src="https://b.hatena.ne.jp/entry/image/https://www.stray-scrapbook.work/entry/entriesAboutTwitter" alt="はてなブックマーク - Twitter 関連記事 まとめ" />
813</a>
814
815          
816
817                </div>
818    </li>
819  
820</ul>
821
822      </div>
823</div>
824
825    
826      
827
828<div class="hatena-module hatena-module-archive" data-archive-type="default" data-archive-url="https://www.stray-scrapbook.work/archive">
829  <div class="hatena-module-title">
830    <a href="https://www.stray-scrapbook.work/archive">月別アーカイブ</a>
831  </div>
832  <div class="hatena-module-body">
833    
834      
835        <ul class="hatena-urllist">
836          
837            <li class="archive-module-year archive-module-year-hidden" data-year="2018">
838              <div class="archive-module-button">
839                <span class="archive-module-hide-button">▼</span>
840                <span class="archive-module-show-button">▶</span>
841              </div>
842              <a href="https://www.stray-scrapbook.work/archive/2018" class="archive-module-year-title archive-module-year-2018">
843                2018
844              </a>
845              <ul class="archive-module-months">
846                
847                  <li class="archive-module-month">
848                    <a href="https://www.stray-scrapbook.work/archive/2018/06" class="archive-module-month-title archive-module-month-2018-6">
849                      2018 / 6
850                    </a>
851                  </li>
852                
853                  <li class="archive-module-month">
854                    <a href="https://www.stray-scrapbook.work/archive/2018/05" class="archive-module-month-title archive-module-month-2018-5">
855                      2018 / 5
856                    </a>
857                  </li>
858                
859                  <li class="archive-module-month">
860                    <a href="https://www.stray-scrapbook.work/archive/2018/04" class="archive-module-month-title archive-module-month-2018-4">
861                      2018 / 4
862                    </a>
863                  </li>
864                
865                  <li class="archive-module-month">
866                    <a href="https://www.stray-scrapbook.work/archive/2018/03" class="archive-module-month-title archive-module-month-2018-3">
867                      2018 / 3
868                    </a>
869                  </li>
870                
871                  <li class="archive-module-month">
872                    <a href="https://www.stray-scrapbook.work/archive/2018/02" class="archive-module-month-title archive-module-month-2018-2">
873                      2018 / 2
874                    </a>
875                  </li>
876                
877                  <li class="archive-module-month">
878                    <a href="https://www.stray-scrapbook.work/archive/2018/01" class="archive-module-month-title archive-module-month-2018-1">
879                      2018 / 1
880                    </a>
881                  </li>
882                
883              </ul>
884            </li>
885          
886            <li class="archive-module-year archive-module-year-hidden" data-year="2017">
887              <div class="archive-module-button">
888                <span class="archive-module-hide-button">▼</span>
889                <span class="archive-module-show-button">▶</span>
890              </div>
891              <a href="https://www.stray-scrapbook.work/archive/2017" class="archive-module-year-title archive-module-year-2017">
892                2017
893              </a>
894              <ul class="archive-module-months">
895                
896                  <li class="archive-module-month">
897                    <a href="https://www.stray-scrapbook.work/archive/2017/12" class="archive-module-month-title archive-module-month-2017-12">
898                      2017 / 12
899                    </a>
900                  </li>
901                
902                  <li class="archive-module-month">
903                    <a href="https://www.stray-scrapbook.work/archive/2017/10" class="archive-module-month-title archive-module-month-2017-10">
904                      2017 / 10
905                    </a>
906                  </li>
907                
908                  <li class="archive-module-month">
909                    <a href="https://www.stray-scrapbook.work/archive/2017/07" class="archive-module-month-title archive-module-month-2017-7">
910                      2017 / 7
911                    </a>
912                  </li>
913                
914                  <li class="archive-module-month">
915                    <a href="https://www.stray-scrapbook.work/archive/2017/06" class="archive-module-month-title archive-module-month-2017-6">
916                      2017 / 6
917                    </a>
918                  </li>
919                
920                  <li class="archive-module-month">
921                    <a href="https://www.stray-scrapbook.work/archive/2017/05" class="archive-module-month-title archive-module-month-2017-5">
922                      2017 / 5
923                    </a>
924                  </li>
925                
926                  <li class="archive-module-month">
927                    <a href="https://www.stray-scrapbook.work/archive/2017/04" class="archive-module-month-title archive-module-month-2017-4">
928                      2017 / 4
929                    </a>
930                  </li>
931                
932                  <li class="archive-module-month">
933                    <a href="https://www.stray-scrapbook.work/archive/2017/03" class="archive-module-month-title archive-module-month-2017-3">
934                      2017 / 3
935                    </a>
936                  </li>
937                
938                  <li class="archive-module-month">
939                    <a href="https://www.stray-scrapbook.work/archive/2017/02" class="archive-module-month-title archive-module-month-2017-2">
940                      2017 / 2
941                    </a>
942                  </li>
943                
944                  <li class="archive-module-month">
945                    <a href="https://www.stray-scrapbook.work/archive/2017/01" class="archive-module-month-title archive-module-month-2017-1">
946                      2017 / 1
947                    </a>
948                  </li>
949                
950              </ul>
951            </li>
952          
953        </ul>
954      
955    
956  </div>
957</div>
958
959    
960      
961
962<div class="hatena-module hatena-module-category">
963  <div class="hatena-module-title">
964    カテゴリー
965  </div>
966  <div class="hatena-module-body">
967    <ul class="hatena-urllist">
968      
969        <li>
970          <a href="https://www.stray-scrapbook.work/archive/category/100%E5%9D%87" class="category-100均">
971            100均 (6)
972          </a>
973        </li>
974      
975        <li>
976          <a href="https://www.stray-scrapbook.work/archive/category/Amazon" class="category-Amazon">
977            Amazon (10)
978          </a>
979        </li>
980      
981        <li>
982          <a href="https://www.stray-scrapbook.work/archive/category/Discord" class="category-Discord">
983            Discord (1)
984          </a>
985        </li>
986      
987        <li>
988          <a href="https://www.stray-scrapbook.work/archive/category/DIY%E3%83%BBDIY%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE" class="category-DIY・DIY的なもの">
989            DIY・DIY的なもの (7)
990          </a>
991        </li>
992      
993        <li>
994          <a href="https://www.stray-scrapbook.work/archive/category/Google%20Apps%20Script%28GAS%29" class="category-Google-Apps-Script(GAS)">
995            Google Apps Script(GAS) (3)
996          </a>
997        </li>
998      
999        <li>
1000          <a href="https://www.stray-scrapbook.work/archive/category/IFTTT" class="category-IFTTT">
1001            IFTTT (2)
1002          </a>
1003        </li>
1004      
1005        <li>
1006          <a href="https://www.stray-scrapbook.work/archive/category/Lisk" class="category-Lisk">
1007            Lisk (36)
1008          </a>
1009        </li>
1010      
1011        <li>
1012          <a href="https://www.stray-scrapbook.work/archive/category/Python" class="category-Python">
1013            Python (1)
1014          </a>
1015        </li>
1016      
1017        <li>
1018          <a href="https://www.stray-scrapbook.work/archive/category/SHARDAX%28%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%80%E3%83%83%E3%82%AF%E3%82%B9%29" class="category-SHARDAX(シャーダックス)">
1019            SHARDAX(シャーダックス) (3)
1020          </a>
1021        </li>
1022      
1023        <li>
1024          <a href="https://www.stray-scrapbook.work/archive/category/Twitter" class="category-Twitter">
1025            Twitter (9)
1026          </a>
1027        </li>
1028      
1029        <li>
1030          <a href="https://www.stray-scrapbook.work/archive/category/zaif" class="category-zaif">
1031            zaif (3)
1032          </a>
1033        </li>
1034      
1035        <li>
1036          <a href="https://www.stray-scrapbook.work/archive/category/%E3%81%94%E9%A3%AF" class="category-ご飯">
1037            ご飯 (1)
1038          </a>
1039        </li>
1040      
1041        <li>
1042          <a href="https://www.stray-scrapbook.work/archive/category/%E3%81%AF%E3%81%A6%E3%81%AA" class="category-はてな">
1043            はてな (11)
1044          </a>
1045        </li>
1046      
1047        <li>
1048          <a href="https://www.stray-scrapbook.work/archive/category/%E3%81%BB%E3%81%BC%E6%97%A5Lisk" class="category-ほぼ日Lisk">
1049            ほぼ日Lisk (33)
1050          </a>
1051        </li>
1052      
1053        <li>
1054          <a href="https://www.stray-scrapbook.work/archive/category/%E3%82%A2%E3%83%97%E3%83%AA%E3%83%BB%E3%82%BD%E3%83%95%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB" class="category-アプリ・ソフト・ツール">
1055            アプリ・ソフト・ツール (13)
1056          </a>
1057        </li>
1058      
1059        <li>
1060          <a href="https://www.stray-scrapbook.work/archive/category/%E3%82%AA%E3%82%B9%E3%82%B9%E3%83%A1%E5%95%86%E5%93%81%E3%81%BE%E3%81%A8%E3%82%81" class="category-オススメ商品まとめ">
1061            オススメ商品まとめ (4)
1062          </a>
1063        </li>
1064      
1065        <li>
1066          <a href="https://www.stray-scrapbook.work/archive/category/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA" class="category-カスタマイズ">
1067            カスタマイズ (4)
1068          </a>
1069        </li>
1070      
1071        <li>
1072          <a href="https://www.stray-scrapbook.work/archive/category/%E3%82%AD%E3%83%83%E3%83%81%E3%83%B3" class="category-キッチン">
1073            キッチン (1)
1074          </a>
1075        </li>
1076      
1077        <li>
1078          <a href="https://www.stray-scrapbook.work/archive/category/%E3%83%96%E3%83%AD%E3%82%B0%E5%86%85%E3%81%BE%E3%81%A8%E3%82%81" class="category-ブログ内まとめ">
1079            ブログ内まとめ (1)
1080          </a>
1081        </li>
1082      
1083        <li>
1084          <a href="https://www.stray-scrapbook.work/archive/category/%E3%83%96%E3%83%AD%E3%82%B0%E9%81%8B%E5%96%B6" class="category-ブログ運営">
1085            ブログ運営 (15)
1086          </a>
1087        </li>
1088      
1089        <li>
1090          <a href="https://www.stray-scrapbook.work/archive/category/%E3%83%9E%E3%83%B3%E3%82%AC" class="category-マンガ">
1091            マンガ (4)
1092          </a>
1093        </li>
1094      
1095        <li>
1096          <a href="https://www.stray-scrapbook.work/archive/category/%E3%83%A9%E3%82%A4%E3%83%95%E3%83%8F%E3%83%83%E3%82%AF" class="category-ライフハック">
1097            ライフハック (19)
1098          </a>
1099        </li>
1100      
1101        <li>
1102          <a href="https://www.stray-scrapbook.work/archive/category/%E4%B8%8D%E5%AE%9A%E6%9C%9F%E6%9B%B4%E6%96%B0" class="category-不定期更新">
1103            不定期更新 (33)
1104          </a>
1105        </li>
1106      
1107        <li>
1108          <a href="https://www.stray-scrapbook.work/archive/category/%E4%BB%AE%E6%83%B3%E9%80%9A%E8%B2%A8" class="category-仮想通貨">
1109            仮想通貨 (52)
1110          </a>
1111        </li>
1112      
1113        <li>
1114          <a href="https://www.stray-scrapbook.work/archive/category/%E5%86%85%E6%9D%91%E3%81%95%E3%81%BE%E3%81%81%EF%BD%9E%E3%81%9A%E3%83%BB%E5%86%85%E3%81%95%E3%81%BE" class="category-内村さまぁ~ず・内さま">
1115            内村さまぁ~ず・内さま (1)
1116          </a>
1117        </li>
1118      
1119        <li>
1120          <a href="https://www.stray-scrapbook.work/archive/category/%E5%8F%96%E5%BC%95%E6%89%80%20%E7%99%BB%E9%8C%B2%E6%96%B9%E6%B3%95" class="category-取引所-登録方法">
1121            取引所 登録方法 (1)
1122          </a>
1123        </li>
1124      
1125        <li>
1126          <a href="https://www.stray-scrapbook.work/archive/category/%E6%8A%80%E8%A1%93%E9%96%A2%E9%80%A3" class="category-技術関連">
1127            技術関連 (14)
1128          </a>
1129        </li>
1130      
1131        <li>
1132          <a href="https://www.stray-scrapbook.work/archive/category/%E6%94%BE%E8%AA%B2%E5%BE%8C%E3%81%95%E3%81%84%E3%81%93%E3%82%8D%E5%80%B6%E6%A5%BD%E9%83%A8" class="category-放課後さいころ倶楽部">
1133            放課後さいころ倶楽部 (1)
1134          </a>
1135        </li>
1136      
1137        <li>
1138          <a href="https://www.stray-scrapbook.work/archive/category/%E6%AC%B2%E3%81%97%E3%81%84%E7%89%A9" class="category-欲しい物">
1139            欲しい物 (3)
1140          </a>
1141        </li>
1142      
1143        <li>
1144          <a href="https://www.stray-scrapbook.work/archive/category/%E6%AC%B2%E3%81%97%E3%81%84%E7%89%A9%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E3%83%88" class="category-欲しい物プレゼント">
1145            欲しい物プレゼント (3)
1146          </a>
1147        </li>
1148      
1149        <li>
1150          <a href="https://www.stray-scrapbook.work/archive/category/%E7%9B%AE%E6%A8%99" class="category-目標">
1151            目標 (2)
1152          </a>
1153        </li>
1154      
1155        <li>
1156          <a href="https://www.stray-scrapbook.work/archive/category/%E7%A2%BA%E5%AE%9A%E7%94%B3%E5%91%8A" class="category-確定申告">
1157            確定申告 (3)
1158          </a>
1159        </li>
1160      
1161        <li>
1162          <a href="https://www.stray-scrapbook.work/archive/category/%E8%B2%B7%E3%81%A3%E3%81%A6%E8%89%AF%E3%81%8B%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE" class="category-買って良かったもの">
1163            買って良かったもの (7)
1164          </a>
1165        </li>
1166      
1167        <li>
1168          <a href="https://www.stray-scrapbook.work/archive/category/%E9%81%8B%E5%8B%95%E3%83%BB%E7%AD%8B%E3%83%88%E3%83%AC" class="category-運動・筋トレ">
1169            運動・筋トレ (1)
1170          </a>
1171        </li>
1172      
1173        <li>
1174          <a href="https://www.stray-scrapbook.work/archive/category/%E9%9B%91%E8%A8%98" class="category-雑記">
1175            雑記 (9)
1176          </a>
1177        </li>
1178      
1179        <li>
1180          <a href="https://www.stray-scrapbook.work/archive/category/%E9%9F%B3%E6%A5%BD%E3%83%BB%E5%8B%95%E7%94%BB" class="category-音楽・動画">
1181            音楽・動画 (3)
1182          </a>
1183        </li>
1184      
1185    </ul>
1186  </div>
1187</div>
1188
1189    
1190      
1191    
1192      
1193<div class="hatena-module hatena-module-html">
1194    <div class="hatena-module-title">ブログランキング</div>
1195  <div class="hatena-module-body">
1196    <a href="http://blog.with2.net/link.php?1889215:3938" title="人気ブログランキングへ"><img src="http://blog.with2.net/img/banner/banner_good.gif" width="80" height="35" border="0" /></a><br /><a href="http://blog.with2.net/link.php?1889215:3938" style="font-size:12px;">人気ブログランキングへ</a>
1197<br><br>
1198<a href="//www.blogmura.com/ranking.html" target="_blank"><img src="//www.blogmura.com/img/www88_31.gif" width="88" height="31" border="0" alt="ブログランキング・にほんブログ村へ" /></a><br /><a href="//www.blogmura.com/ranking.html" target="_blank">にほんブログ村</a>
1199  </div>
1200</div>
1201
1202    
1203      
1204<div class="hatena-module hatena-module-html">
1205    <div class="hatena-module-title">目次</div>
1206  <div class="hatena-module-body">
1207    <!-- -->
1208<nav id='stoc'></nav>
1209  </div>
1210</div>
1211
1212    
1213  </div>
1214</aside>
1215
1216
1217  </div>
1218</div>
1219
1220
1221
1222
1223      
1224
1225      
1226
1227  <div id="bottom-editarea">
1228    <!-- ********フッタ******** -->
1229<!-- 遅延読み込み -->
1230<script>
1231// Google Fonts
1232(function() {
1233let link = document.createElement('link');
1234link.rel = 'stylesheet';
1235link.href = 'https://fonts.googleapis.com/earlyaccess/roundedmplus1c.css';
1236document.head.appendChild(link);
1237})();
1238
1239
1240// Fontawesome animation
1241(function() {
1242let link = document.createElement('link');
1243link.rel = 'stylesheet';
1244link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome-animation/0.0.10/font-awesome-animation.css';
1245document.head.appendChild(link);
1246})();
1247
1248
1249// Cryptocoins icons
1250(function() {
1251let link = document.createElement('link');
1252link.rel = 'stylesheet';
1253link.href = 'https://cdn.jsdelivr.net/npm/[email protected]/webfont/cryptocoins.min.css';
1254document.head.appendChild(link);
1255})();
1256(function() {
1257let link = document.createElement('link');
1258link.rel = 'stylesheet';
1259link.href = 'https://cdn.jsdelivr.net/npm/[email protected]/webfont/cryptocoins-colors.min.css';
1260document.head.appendChild(link);
1261})();
1262
1263
1264$(function() {
1265  // キーワードリンク削除
1266  $('a.keyword').contents().unwrap();
1267
1268  // 外部リンクを別タブで開く
1269  $("a[href^='http']:not([href*='" + location.hostname + "'])").attr('target', '_blank');
1270
1271  // 外部リンクにアイコン追加
1272  $('a[href^="http"]:not([href*="' + location.hostname + '"])').attr('target', '_blank').attr('rel', 'noopener noreferrer')
1273      .append('<i class="fas fa-external-link-alt" style="margin-left: 3px"></i>');
1274  $('a[href^="//"]:not([href*="' + location.hostname + '"])').attr('target', '_blank').attr('rel', 'noopener noreferrer')
1275      .append('<i class="fas fa-external-link-alt" style="margin-left: 3px"></i>');
1276
1277  // クリックすると表示される目次
1278  var $Contents = $(".table-of-contents")
1279  $($Contents).before('<span class="fa-stack menu-icon"><i class="fas fa-stack-1x fa-circle" style="font-size: 230%;"></i><i class="fas fa-stack-1x fa-bars fa-inverse" style="left: 10px;"></i><i class="fas fa-stack-1x fa-ellipsis-v fa-inverse" style="font-size: 90%; left: -12px;"></i></span><span class="toc-head">目次</span><span class="show-area">[表示]</span>');
1280  $(".show-area").click(function(){
1281    var $this = $(this);
1282    if($Contents.css('display') == 'none'){
1283      $Contents.slideDown(200),
1284      $this.text("[隠す]");
1285    }else{
1286      $Contents.slideUp(200),
1287      $this.text("[表示]")
1288    };
1289  });
1290
1291  // グローバルメニュー
1292  // 変数に代入
1293  var $nav = $('#global-menu');
1294  var $topbox = $('#top-box');
1295  var $content = $('#content');
1296  var $offsetTop = $('#trigger-point').offset().top;
1297  var $win = $(window);
1298  // 固定メニューの設定
1299  function fixedNav() {
1300    if($(window).scrollTop() > $offsetTop){
1301      $nav.addClass('fixed');
1302      // ガタツキ調整
1303      var windowWidth = window.innerWidth;
1304      if (windowWidth > 680) {
1305        if ($topbox.size()) {
1306          $topbox.css('margin-top', '66px');
1307        }
1308        else {
1309          $content.css('margin-top', '66px');
1310        }
1311      }
1312    } else {
1313      $nav.removeClass('fixed');
1314      if ($topbox.size()) {
1315        $topbox.css('margin-top', '');
1316      }
1317      else {
1318        $content.css('margin-top', '');
1319      }
1320    }
1321  };
1322  $(window).scroll(fixedNav);
1323  $('body').on('touchmove', fixedNav);
1324  // Toggle メニューの設定
1325  $('#nav-toggle').click(function (){
1326    $nav.toggleClass('open');
1327  });
1328  $('#content').click(function (){
1329    if($nav.hasClass('open')){
1330      $nav.removeClass('open');
1331    }
1332  });
1333
1334  //トップに戻るボタン
1335  // スクロールした場合
1336  $(window).scroll(function() {
1337      // スクロール位置が200を超えた場合
1338      if ($(this).scrollTop() > 200) {
1339          $('#pagetop').fadeIn();
1340      } else {
1341          // ページトップへをフェードアウト
1342          $('#pagetop').fadeOut();
1343      }
1344  });
1345
1346  // ページトップクリック
1347  $('#pagetop').click(function() {
1348      // ページトップへスクロール
1349      $('html, body').animate({
1350          scrollTop: 0
1351      }, 300);
1352      return false;
1353  });
1354
1355  // ページ内リンク
1356  let link_icon = '<i class="blogicon-link lg" style="transform: rotate(-45deg);"></i>';
1357  let headings = $('.entry-content h2,.entry-content h3,.entry-content h4,.entry-content h5,.entry-content h6');
1358  $(headings).each(function(i) {
1359    let h_link_wrapper = $("<span></span>", {
1360      "class": "h_link_wrapper"
1361    });
1362    $(this).after(h_link_wrapper);
1363    let h_link = $(this).next();
1364
1365    let prev_link = "";
1366    if(i > 0) {
1367      prev_link = $("<a></a>", {
1368        href: "#" + $(headings[i - 1]).attr("id"),
1369        text: " 前へ",
1370        "class": "heading_link"
1371      });
1372      $(prev_link).prepend(link_icon);
1373      $(h_link).append(prev_link);
1374    }
1375
1376    let next_link = "";
1377    if(i < headings.length - 1) {
1378      if(i > 0) {
1379        $(h_link).append("  ");
1380      }
1381
1382      next_link = $("<a></a>", {
1383        href: "#" + $(headings[i + 1]).attr("id"),
1384        text: " 次へ",
1385        "class": "heading_link"
1386      });
1387      $(next_link).prepend(link_icon);
1388      $(h_link).append(next_link);
1389    }
1390  });
1391
1392  // スムーススクロール
1393  $('a[href^="#"]').click(function() {
1394     var speed = 400;
1395     var href= $(this).attr("href");
1396     var target = $(href == "#" || href == "" ? 'html' : href);
1397     var position = target.offset().top - 40;
1398     $('body,html').animate({scrollTop:position}, speed, 'swing');
1399     return false;
1400  });
1401
1402  // サイドバーのタブメニュー
1403  $(".hatena-module-entries-access-ranking,.hatena-module-recent-entries,.hatena-module-archive,.hatena-module-category").addClass("module");
1404  $(".hatena-module-title2").parents(".hatena-module-html").css("margin-bottom",0);
1405  var Module = $(".module");
1406  Module.hide();
1407  Module.first().show();
1408  Module.find(".hatena-module-title").hide();
1409
1410  $(".tab").click(function(){
1411      var index = $(this).index();
1412      $(".tab").removeClass("active");
1413      $(this).addClass("active");
1414      $(Module).hide();
1415      $(Module).eq(index).show();
1416  });
1417
1418});
1419</script>
1419
1420
1421<!-- Font Awesome -->
1422<script async defer src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>
1422
1423
1424
1425
1426
1427<!-- トップに戻るボタン -->
1428<a id="pagetop" href="#top" class="page_top" style="display: none;"><i class="fas fa-chevron-circle-up fa-3x"></i></a>
1429
1430
1431
1432
1433
1434
1435<!--シェア数の取得-->
1436<script>
1437//はてなブックマークのシェア数
1438function getHatenaBookmarkCount(entryUrl, selcter) {
1439  entryUrl = 'http://api.b.st-hatena.com/entry.count?url=' + encodeURIComponent(entryUrl)
1440  $.ajax({
1441    url:entryUrl,
1442    dataType:'jsonp',
1443  }).then(
1444    function(result){ $(selcter).text(result || 0); },
1445    function(){ $(selcter).text('0'); }
1446  );
1447}
1448//Facebookのシェア数
1449function getFacebookCount(entryUrl, selcter) {
1450  entryUrl = 'https://graph.facebook.com/' + encodeURIComponent(entryUrl)
1451  $.ajax({
1452    url:entryUrl,
1453    dataType:'jsonp'
1454  }).then(
1455    function(result){
1456      if(result.share && result.share.share_count) {
1457        $(selcter).text(result.share.share_count);
1458      } else {
1459        $(selcter).text('0');
1460      }
1461    },
1462    function(){ $(selcter).text('0'); }
1463  );
1464}
1465$(function(){
1466  getHatenaBookmarkCount('{Permalink}', '.hatena-bookmark-count');
1467  getFacebookCount('{Permalink}', '.facebook-count');
1468});
1469</script>
1469
1470
1471
1472
1473
1474<!-- コピペ検出 -->
1475<script>
1476document.addEventListener('copy', function(e) {
1477  let length_alert = 100;
1478  let dummy = document.createElement("div");
1479  dummy.appendChild(window.getSelection().getRangeAt(0).cloneContents())
1480
1481  if(dummy.innerText.length >= length_alert) {
1482    let value1 = "value1=" + "2.2.2.2";
1483    let value2 = "&value2=" + navigator.userAgent;
1484    let value3 = "&value3=" + encodeURI("リファラ: " + document.referrer + "<br>記事: " + document.title + "<br>URL: " + location.href + "<br>本文: <br>" + dummy.innerText.replace(/\r?\n/g, '<br>'));
1485    let data = value1 + value2 + value3;
1486
1487    // XMLHttpRequestオブジェクトの生成
1488    const xhr = new XMLHttpRequest();
1489    xhr.open("POST", `https://maker.ifttt.com/trigger/detectCopy/with/key/cEdnfNBUvwldretcjx7DyEB9yxBh_CQMpCb_wS-KLNN`);
1490    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
1491    xhr.send(data);
1492  }
1493});
1494</script>
1494
1495
1496
1497
1498
1499
1500
1501<!-- ブログタイトル:バブル -->
1502<script>
1503  //okpt("CSS Particle Effects");
1504  function initparticles() {
1505     bubbles();
1506  }
1507
1508  /*The measurements are ... whack (so to say), for more general text usage I would generate different sized particles for the size of text; consider this pen a POC*/
1509
1510  function bubbles() {
1511     $.each($("h1#title"), function(){
1512        var bubblecount = ($(this).width()/100)*5;
1513        for(var i = 0; i <= bubblecount; i++) {
1514           var size = ($.rnd(40,80)/10);
1515           $(this).append('<span class="particle" style="top:' + $.rnd(20,80) + '%; left:' + $.rnd(0,95) + '%;width:' + size + 'px; height:' + size + 'px;animation-delay: ' + ($.rnd(0,30)/10) + 's;"></span>');
1516        }
1517     });
1518  }
1519
1520  jQuery.rnd = function(m,n) {
1521      m = parseInt(m);
1522      n = parseInt(n);
1523      return Math.floor( Math.random() * (n - m + 1) ) + m;
1524  }
1525
1526  initparticles();
1527</script>
1527
1528<style type="text/css">
1529h1#title > .particle {
1530  opacity: 0;
1531  position: absolute;
1532  background-color: rgba(33, 150, 243, 0.5);
1533  -webkit-animation: bubbles 3s ease-in infinite;
1534          animation: bubbles 3s ease-in infinite;
1535  border-radius: 100%;
1536}
1537@-webkit-keyframes bubbles {
1538  0% {
1539    opacity: 0;
1540  }
1541  20% {
1542    opacity: 1;
1543    -webkit-transform: translate(0, -20%);
1544            transform: translate(0, -20%);
1545  }
1546  100% {
1547    opacity: 0;
1548    -webkit-transform: translate(0, -1000%);
1549            transform: translate(0, -1000%);
1550  }
1551}
1552@keyframes bubbles {
1553  0% {
1554    opacity: 0;
1555  }
1556  20% {
1557    opacity: 1;
1558    -webkit-transform: translate(0, -20%);
1559            transform: translate(0, -20%);
1560  }
1561  100% {
1562    opacity: 0;
1563    -webkit-transform: translate(0, -1000%);
1564            transform: translate(0, -1000%);
1565  }
1566}
1567</style>
1568
1569
1570
1571
1572
1573<!-- 表のソート機能 -->
1574<script>
1575  (function () {
1576    function sort(tbody, compareFunction) {
1577      var rows = tbody.children;
1578      if(!rows || !rows[0] || rows.length == 1) return;
1579      var size = rows.length;
1580      var arr = [];
1581      for(var i = 0; i < size; i++) {
1582        arr.push(rows[i]);
1583      }
1584      arr.sort(compareFunction);
1585      for(var i = size - 1; i > 0; i--) tbody.insertBefore(arr[i-1], arr[i]);
1586    }
1587  function numConvert(s) {
1588    return s == Number(s) ? Number(s) : s;
1589  }
1590  function asc(idx) {
1591    return function(a, b) {
1592      var a_ = numConvert(a.children[idx].innerText);
1593      var b_ = numConvert(b.children[idx].innerText);
1594      return a_ > b_ ? 1 : -1;
1595    };
1596  }
1597  function desc(idx) {
1598    return function(a, b) {
1599      var a_ = numConvert(a.children[idx].innerText);
1600      var b_ = numConvert(b.children[idx].innerText);
1601      return a_ < b_ ? 1 : -1;
1602    };
1603  }
1604  function sortEvent(tbody, idx) {
1605    var mode = true;
1606    return function(e) {
1607      if(mode) sort(tbody,  asc(idx));
1608      else     sort(tbody, desc(idx));
1609      mode = !mode;
1610    };
1611  }
1612  var ts = document.getElementsByTagName('table');
1613  for(var i = ts.length; i--; ) {
1614    var ths = ts[i].tHead.getElementsByTagName('th');
1615    for(var j = ths.length; j--; )
1616      ths[j].addEventListener("click", sortEvent(ts[i].tBodies[0], j));
1617  }
1618})();
1619</script>
1619
1620
1621
1622
1623
1624<!-- 関連記事の移動 -->
1625<style>
1626.hatena-module-related-entries {
1627  display: none;
1628}
1629.customized-footer {
1630  display: none;
1631}
1632</style>
1633
1634<div id="my-footer">
1635  <div id="customized-footer"></div>
1636  <div id="relateArticle"></div>
1637  
1637<script>
1638  var timer = setInterval(function() {
1639      if (typeof jQuery != 'undefined') {
1640          $("#customized-footer").html($(".customized-footer").html());
1641          $("#relateArticle").html($(".hatena-module-related-entries").html());
1642          clearInterval(timer);
1643      }
1644  }, 1000)
1645  </script>
1645
1646</div>
1647<script>
1648var myFooter=document.getElementById("my-footer");
1649if(myFooter !== null) {
1650  var temp=myFooter.cloneNode(true);
1651  myFooter.parentNode.removeChild(myFooter);
1652  document.getElementsByClassName("entry-content")[0].appendChild(temp);
1653}
1654</script>
1654
1655
1656
1657
1658<!-- 追尾する目次 ver3.1.0  https://git.io/stoc -->
1659<script>
1660(function() {
1661'use strict';
1662//----------------------
1663// ↓設定ここから↓
1664
1665const PAGES = [
1666  {
1667    class    : 'page-entry',
1668    title    : '目次',
1669    display  : true
1670  },
1671  {
1672    class    : 'page-index',
1673    title    : 'このページの記事一覧',
1674    listPage : false,
1675    display  : false
1676  },
1677  {
1678    class    : 'page-archive',
1679    title    : 'このページの記事一覧',
1680    listPage : false,
1681    display  : false
1682  },
1683  {
1684    class    : 'page-static_page',
1685    title    : 'entry-title',
1686    display  : true
1687  },
1688];
1689const MATCH_MEDIA         = true;
1690const MEDIA_QUERY_SIDEBAR = '(min-width: 920px)';
1691const MARGIN_TOP     = 40;
1692const MARGIN_BOTTOM  = 0;
1693const CURRENT_MARGIN = 50;
1694const ADJUST_FIXED   = 0;
1695const HEADLINE_QUERY = ['h2', 'h3', 'h4', 'h5'];
1696const HEADLINE_MIN   = 1;
1697const ADJUST_SCROLL  = -40;
1698const SCROLL_TIME_PC    = 400;
1699const SCROLL_TIME_TOUCH = 0;
1700const TOC_INSIDE_SCROLL = true;
1701const TOC_TITLE_TOP   = true;
1702const SCROLL_SHADOW   = true;
1703const LINK_HISTORY    = false;
1704const DELAY_TIME_DOM  = 250;
1705const DELAY_TIME_LOAD = 1000;
1706const GLOBAL_HEADER   = ['#globalheader-container'];
1707const CLICK_UPDATE    = [];
1708const CLICK_UPDATE_DELAY = 500;
1709const USE_LIST        = 'ol';
1710const TOUCH_DEVICE    = 'ontouchstart' in window;
1711const F_STICKY_MODE   = false;
1712const PAUSE_NO_SIDEBAR = true;
1713const PAUSE_MAIN_SMALL = true;
1714
1715// ↑設定ここまで↑
1716//----------------------
1717
1718// Define
1719const win = window;
1720const doc = document;
1721const ID_TOC = 'stoc';
1722const ID_TOC_MODULE = 'stoc-module';
1723const ID_TOC_TITLE = 'stoc-title';
1724const ID_TOC_BODY = 'stoc-body';
1725const ID_TOC_GUIDE = 'stoc-guide';
1726const ID_TOC_SUB_GUIDE = 'stoc-sub-guide';
1727const CLASS_HMT = 'hatena-module-title';
1728const CLASS_ENTRY = 'entry-title';
1729const CLASS_ENTRY_LINK = 'entry-title-link';
1730const CLASS_FADE_IN = 'fade-in';
1731const CLASS_TOUCH = 'touch';
1732const CLASS_SHADOW = 'shadow';
1733const CLASS_ACTIVE = 'active';
1734const CLASS_TRACKING = 'tracking';
1735const CLASS_FIXED = 'fixed';
1736const CLASS_ABSOLUTE = 'absolute';
1737const POSITION_STATIC = 'static';
1738const POSITION_FIXED = 'fixed';
1739const POSITION_ABSOLUTE = 'absolute';
1740const POSITION_STICKY = 'sticky';
1741const SUM_MARGIN_HEIGHT = ['marginTop', 'marginBottom'];
1742const SUM_PADDING_HEIGHT = ['paddingTop', 'borderTopWidth', 'paddingBottom', 'borderBottomWidth'];
1743const SCROLL_TIME = TOUCH_DEVICE ? SCROLL_TIME_TOUCH : SCROLL_TIME_PC;
1744const SMOOTH_SCROLL = SCROLL_TIME > 0 ? true : false;
1745
1746function convPX(num) {
1747  return num + 'px';
1748}
1749
1750function createDiv() {
1751  return doc.createElement('div');
1752}
1753
1754// 簡易シングルトンなgetComputedStyle(IDが設定されてない場合は毎回取得)
1755const getComputedStyleWrap = (function() {
1756  const data = {};
1757  return function(elem) {
1758    const id = hyphen2camel(elem.id);
1759    if (!data[id]) {
1760      console.assert(id, elem);
1761      const style = getComputedStyle(elem, null);
1762      if (id)
1763        data[id] = style;
1764      else
1765        return style;
1766    }
1767    return data[id];
1768  };
1769}());
1770
1771// 1文字目によってidかclass要素を取得する
1772function getElementsSelector(idORclass) {
1773  let elems = [];
1774  const first = idORclass.charAt(0);
1775  const name = idORclass.slice(1);
1776  if (first === '#')
1777    elems[0] = doc.getElementById(name);
1778  else if (first === '.')
1779    elems = doc.getElementsByClassName(name);
1780  return elems;
1781}
1782
1783// 指定したスタイルを数値に変換して取得
1784function getStyleFloat(elem, styleName) {
1785  const ret = parseFloat(getComputedStyleWrap(elem)[styleName]);
1786  console.assert(!isNaN(ret), elem.id + ' [' + styleName + '] NaN');
1787  return ret;
1788}
1789
1790// 特定のクラスが設定されていない状態の値を取得
1791function getUnsetClassStyleFloat(elem, styleNames, targetClassNames) {
1792  let ret = [];
1793  const classList = elem.classList;
1794  const existClassNames = targetClassNames.filter(function(e) {
1795    return classList.contains(e);
1796  });
1797
1798  existClassNames.forEach(function(e) {
1799    classList.remove(e);
1800  });
1801  styleNames.forEach(function(e) {
1802    ret.push(getStyleFloat(elem, e));
1803  });
1804  existClassNames.forEach(function(e) {
1805    classList.add(e);
1806  });
1807  return ret;
1808}
1809
1810// ハイフン区切りからキャメルケースに変換
1811function hyphen2camel(str) {
1812  return str.replace(/[-]./g, function(match) {
1813    return match.charAt(1).toUpperCase();
1814  });
1815}
1816
1817// $.outerHeight()
1818function getOuterHeight(elem, margin) {
1819  let ret = elem.offsetHeight;
1820  if (margin)
1821    ret += sumElementProps(elem, SUM_MARGIN_HEIGHT);
1822  return ret;
1823}
1824
1825// $.scrollTop()
1826function getScrollTop(elem, scrollTop) {
1827  return elem.getBoundingClientRect().top + (scrollTop !== void 0 ? scrollTop : win.pageYOffset);
1828}
1829
1830// 縦方向のスムーズスクロール
1831const smoothScrollY = (function() {
1832  const frameTime = 1000 / 30;
1833  const scrollTo = win.scrollTo;
1834  const timer = win.performance ? performance : Date;
1835  let requestId, request, cancel, exsitRAF;
1836  {
1837    const strRAF = 'requestAnimationFrame';
1838    exsitRAF = win.hasOwnProperty(strRAF);
1839    if (exsitRAF) {
1840      request = win[strRAF];
1841      cancel = win.cancelAnimationFrame;
1842    }
1843    else {
1844      request = win.setTimeout;
1845      cancel = win.clearTimeout;
1846    }
1847  }
1848
1849  function easeInOutQuad(t) {
1850    return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
1851  }
1852
1853  return function(target, duration) {
1854    const startTime = timer.now();
1855    const startY = win.pageYOffset;
1856    const startX = win.pageXOffset;
1857    const distance = target - startY;
1858    let elapsedTime;
1859
1860    cancel(requestId);
1861    requestId = request(exsitRAF ? step : step2);
1862
1863    // requestAnimationFrame
1864    function step(timestamp) {
1865      elapsedTime = timestamp - startTime;
1866      if (elapsedTime >= duration) {
1867        scrollTo(startX, target);
1868        return;
1869      }
1870      scrollTo(startX, easeInOutQuad(elapsedTime / duration) * distance + startY);
1871      requestId = request(step);
1872    }
1873
1874    // setTimeout
1875    function step2() {
1876      elapsedTime = timer.now() - startTime;
1877      if (elapsedTime >= duration) {
1878        scrollTo(startX, target);
1879        return;
1880      }
1881      scrollTo(startX, easeInOutQuad(elapsedTime / duration) * distance + startY);
1882      requestId = request(step2, frameTime);
1883    }
1884  };
1885}());
1886
1887// 指定したプロパティ値を足し合わせて返す
1888function sumElementProps(elem, props) {
1889  let ret = 0;
1890  const css = getComputedStyleWrap(elem);
1891  for (let i = 0, len = props.length; i < len; i++) {
1892    const num = parseInt(css[props[i]], 10);
1893    if (isNaN(num)) continue;
1894    ret += num;
1895  }
1896  return ret;
1897}
1898
1899(function() {
1900  const elSidebarToc = doc.getElementById(ID_TOC);
1901  if (!elSidebarToc) {
1902    console.error('sidebarToc: 要素が見つかりません');
1903    return;
1904  }
1905  const elSidebarTocModule = elSidebarToc.parentNode.parentNode;
1906  const stSidebarTocModule = elSidebarTocModule.style;
1907  const bodyClassList = doc.body.classList;
1908
1909  let currentPage;
1910  for (let i = 0, len = PAGES.length; i < len; i++) {
1911    if (bodyClassList.contains(PAGES[i].class)) {
1912      if (!PAGES[i].display)
1913        break;
1914      currentPage = PAGES[i];
1915      console.log('page:' + PAGES[i].class);
1916      break;
1917    }
1918  }
1919
1920  // 表示設定をしてあるページ以外の時は非表示にして終了
1921  if (!currentPage) {
1922    hideSidebarToc();
1923    return;
1924  }
1925
1926  console.log('%c---sidebar toc---  DELAY_TIME_DOM:' + DELAY_TIME_DOM, 'color:blue');
1927  console.time('sidebarToc add');
1928
1929
1930  const elMainInner = doc.getElementById('main-inner');
1931  const PAGE_LIST = currentPage.listPage;
1932  const PAGE_TITLE = currentPage.title;
1933  let elContentList = [];
1934  let elContentListText = [];
1935
1936  // 表示する見出しの一覧を取得
1937  if (PAGE_LIST) {
1938    const classNames = ['entry', 'archive-entry'];
1939    for (let i = 0, len = classNames.length; i < len; i++) {
1940      elContentList = elMainInner.getElementsByClassName(classNames[i]);
1941      if (elContentList.length > 1)
1942        break;
1943    }
1944    const elems = elMainInner.getElementsByClassName(CLASS_ENTRY_LINK);
1945    for (let i = 0, len = elems.length; i < len; i++)
1946      elContentListText[i] = elems[i].textContent;
1947  }
1948  else
1949    elContentList = elMainInner.getElementsByClassName('entry-content')[0].querySelectorAll(HEADLINE_QUERY.join());
1950
1951  // 見出しがn個以下なら目次を表示しない
1952  if (elContentList.length <= HEADLINE_MIN) {
1953    hideSidebarToc();
1954    return;
1955  }
1956
1957
1958  //----------------------
1959  const elHatenaToc = elMainInner.getElementsByClassName('table-of-contents');
1960  let hatenaTocFlg = false;
1961  let headlineList = [];
1962  let currentLevel = 0;
1963
1964  // 目次記法の目次にもスムーズスクロールを適用
1965  if (!PAGE_LIST && elHatenaToc.length) {
1966    const elHatenaTocAnchor = elHatenaToc[0].getElementsByTagName('a');
1967    for (let i = 0, len = elHatenaTocAnchor.length; i < len; i++)
1968      elHatenaTocAnchor[i].addEventListener('click', clickEvent, false);
1969    hatenaTocFlg = true;
1970  }
1971
1972  // タグの設定
1973  for (let i = 0, len = elContentList.length; i < len; i++) {
1974    const elem = elContentList[i];
1975    const text = PAGE_LIST ? elContentListText[i] : elem.textContent;
1976    let idName;
1977    let level = 0;
1978
1979    // a要素作成
1980    if (hatenaTocFlg) {
1981      // 目次記法がある時はすでにIDが設定されているのでそれを使う
1982      idName = elem.id;
1983    }
1984    else {
1985      idName = 'section' + i;
1986      elem.setAttribute('id', idName);
1987    }
1988    headlineList[i] = '<li><a href="#' + idName + '">' + text + '</a>';
1989
1990    // 段落が必要ないページ
1991    if (PAGE_LIST)
1992      continue;
1993
1994    // 段落作成
1995    const nodeName = elem.nodeName.toLowerCase();
1996    for (let j = 1, len = HEADLINE_QUERY.length; j < len; j++) {
1997      if (nodeName === HEADLINE_QUERY[j]) {
1998        level = j;
1999        break;
2000      }
2001    }
2002    while (currentLevel < level) {
2003      headlineList[i] = '<' + USE_LIST + '>' + headlineList[i];
2004      currentLevel++;
2005    }
2006    while (currentLevel > level) {
2007      headlineList[i] = '</' + USE_LIST + '></li>' + headlineList[i];
2008      currentLevel--;
2009    }
2010  }
2011
2012  // モジュールタイトルの追加(設定によっては追加しない)
2013  let elTocTitle = false, sidebarTocTitle;
2014  if (PAGE_TITLE !== '') {
2015    if (!PAGE_LIST && PAGE_TITLE === CLASS_ENTRY)
2016      sidebarTocTitle = elMainInner.getElementsByClassName(CLASS_ENTRY_LINK)[0].textContent;
2017    else
2018      sidebarTocTitle = PAGE_TITLE;
2019  }
2020
2021  // 最初に設定されているタイトルを削除
2022  const elTitle = elSidebarTocModule.getElementsByClassName(CLASS_HMT)[0];
2023  if (elTitle)
2024    elSidebarTocModule.removeChild(elTitle);
2025
2026  if (sidebarTocTitle) {
2027    const divTitle = createDiv();
2028    divTitle.id = ID_TOC_TITLE;
2029    divTitle.className = CLASS_HMT;
2030    // リンクとスムーズスクロールも追加
2031    divTitle.innerHTML = TOC_TITLE_TOP ? '<a href="#">' + sidebarTocTitle + '</a>' : sidebarTocTitle;
2032    elTocTitle = elSidebarTocModule.insertBefore(divTitle, elSidebarTocModule.firstElementChild);
2033    if (TOC_TITLE_TOP) {
2034      elTocTitle.getElementsByTagName('a')[0].addEventListener('click', function(e) {
2035        e.preventDefault();
2036        e.stopPropagation();
2037        if (SMOOTH_SCROLL)
2038          smoothScrollY(0, SCROLL_TIME);
2039        else
2040          win.scrollTo(win.pageXOffset, 0);
2041      }, false);
2042    }
2043  }
2044
2045  // module-bodyにIDを設定
2046  elSidebarToc.parentElement.id = ID_TOC_BODY;
2047
2048  // 目次本体の追加
2049  const ol = doc.createElement('ol');
2050  ol.innerHTML = headlineList.join('');
2051  elSidebarToc.appendChild(ol);
2052
2053  elSidebarTocModule.setAttribute('id', ID_TOC_MODULE);
2054  console.log('%c--add toc--', 'color:blue');
2055
2056
2057  // a要素一覧の取得とスムーズスクロールの設定
2058  const elSidebarTocAnchors = elSidebarToc.getElementsByTagName('a');
2059  const clSidebarTocAnchors = [];
2060  for (let i = 0, len = elSidebarTocAnchors.length; i < len; i++) {
2061    elSidebarTocAnchors[i].addEventListener('click', clickEvent, false);
2062    clSidebarTocAnchors[i] = elSidebarTocAnchors[i].classList;
2063  }
2064
2065  //----------------------
2066  // スクロール用
2067  const elMain = doc.getElementById('main');
2068  const elBox2 = doc.getElementById('box2');
2069  const clSidebarTocModule = elSidebarTocModule.classList;
2070  const elGhs = [];
2071  for (let i = 0, len = GLOBAL_HEADER.length; i < len; i++) {
2072    const elems = getElementsSelector(GLOBAL_HEADER[i]);
2073    if (elems[0])
2074      elGhs.push(elems[0]);
2075    else
2076      console.error('GLOBAL_HEADER: %s が見つかりません', GLOBAL_HEADER[i]);
2077  }
2078  const tocLastIndex = headlineList.length - 1;
2079  let headlineTopList = [];
2080  let scrollRange, scrollFixed, scrollAbsolute, followModule, tracking = false;
2081  let ghFixedHeight, marginComp, relativeOffset, leftMargin;
2082  let tocMaxHeight, tocScrollbar;
2083  let prevScrollLeft;
2084
2085  const tocModuleStyles = {};
2086  tocModuleStyles[POSITION_ABSOLUTE] = {left: ''};
2087  tocModuleStyles[POSITION_FIXED] = {};
2088  tocModuleStyles[POSITION_STATIC] = {};
2089
2090  // スクロール可能か判別しやすくする表示
2091  if (SCROLL_SHADOW)
2092    elSidebarToc.classList.add(CLASS_SHADOW);
2093
2094  // タッチデバイス用の処理
2095  if (TOUCH_DEVICE) {
2096    // 判定用のクラス追加
2097    elSidebarToc.classList.add(CLASS_TOUCH);
2098    clSidebarTocModule.add(CLASS_TOUCH);
2099  }
2100
2101  let stickyMode = false;
2102  if (TOUCH_DEVICE || F_STICKY_MODE) {
2103    // ブラウザが position:sticky に対応していればクラス追加
2104    const propName = ['-webkit-' + POSITION_STICKY, POSITION_STICKY];
2105    const stDiv = createDiv().style;
2106    for (let i = 0, len = propName.length; i < len; i++) {
2107      stDiv.position = propName[i];
2108      stickyMode = stDiv.position.indexOf(POSITION_STICKY) !== -1;
2109      if (stickyMode) {
2110        clSidebarTocModule.add('sticky');
2111        break;
2112      }
2113    }
2114  }
2115
2116  //----------------------
2117  // ガイド要素の作成と追加
2118  let elGuideModule, elSubGuideModule, lastModuleToc;
2119  const elBox2Inner = elSidebarTocModule.parentNode;
2120  const elChildren = elBox2Inner.children;
2121  const elChildrenLength = elChildren.length;
2122  const divGuide = createDiv();
2123  divGuide.id = ID_TOC_GUIDE;
2124  divGuide.className = 'hatena-module';
2125  divGuide.style.cssText = [
2126    'visibility: hidden;',
2127    'height: 0;',
2128    'margin-top: 0;',
2129    'margin-bottom: 0;',
2130    'padding-top: 0;',
2131    'padding-bottom: 0;',
2132    'border-top: 0;',
2133    'border-bottom: 0;'
2134  ].join('');
2135
2136  // 目次モジュールしか無い時はガイドを直前に追加
2137  if (elChildrenLength === 1) {
2138    elGuideModule = elBox2Inner.insertBefore(divGuide, elSidebarTocModule);
2139    lastModuleToc = true;
2140    console.log('%csingleModule', 'color:blue');
2141  }
2142  // 目次をサイドバーの最後に設置してる時はその一つ前に追加、それ以外の時は最後にガイドを追加
2143  else {
2144    lastModuleToc = elChildren[elChildrenLength - 1] === elSidebarTocModule;
2145    if (lastModuleToc) {
2146      // マージン相殺計測用
2147      elSubGuideModule = elSidebarTocModule.previousElementSibling;
2148      elSubGuideModule.id = ID_TOC_SUB_GUIDE;
2149      elGuideModule = elBox2Inner.insertBefore(divGuide, elSidebarTocModule);
2150    }
2151    else
2152      elGuideModule = elBox2Inner.appendChild(divGuide);
2153  }
2154
2155  console.timeEnd('sidebarToc add');
2156
2157
2158  //----------------------
2159  // イベント登録
2160
2161  // ウィンドウのリサイズ操作が終わった時に処理する
2162  let timer;
2163  win.addEventListener('resize', function() {
2164    clearTimeout(timer);
2165    timer = setTimeout(setTrackingPoint, 200);
2166  }, false);
2167
2168  // CSSのフェード終了時
2169  elSidebarTocModule.addEventListener('animationend', function() {
2170    clSidebarTocModule.remove(CLASS_FADE_IN);
2171  }, false);
2172
2173  //----------------------
2174  // 追尾処理開始部分
2175
2176  // HTMLの読込と解析が終わったら
2177  win.addEventListener('DOMContentLoaded', function() {
2178    console.time('Event:DOMContentLoaded -> load');
2179    // 少し遅らせてから追尾処理開始
2180    setTimeout(function() {
2181      // 最初に一度位置取得などを行う
2182      setTrackingPoint();
2183
2184      // 特定の要素をクリックした後に位置取得をやり直す
2185      let timer;
2186      for (let i = 0, len = CLICK_UPDATE.length; i < len; i++) {
2187        const elems = getElementsSelector(CLICK_UPDATE[i]);
2188        for (let j = 0, len = elems.length; j < len; j++) {
2189          elems[j].addEventListener('click', function() {
2190            clearTimeout(timer);
2191            timer = setTimeout(setTrackingPoint, CLICK_UPDATE_DELAY);
2192          }, false);
2193        }
2194      }
2195
2196      // ページの読込が完全に終わったタイミングで再度位置取得などを行う
2197      win.addEventListener('load', function() {
2198        console.timeEnd('Event:DOMContentLoaded -> load');
2199        setTimeout(setTrackingPoint, DELAY_TIME_LOAD);
2200      }, false);
2201    }, DELAY_TIME_DOM);
2202  }, false);
2203
2204
2205  //----------------------
2206  // 関数式
2207
2208  // 現在位置を表示するためのクラス設定とスクロール処理
2209  const setActive = (function() {
2210    let active = -1;
2211    return function(i) {
2212      if (i !== active) {
2213        if (active >= 0)
2214          clSidebarTocAnchors[active].remove(CLASS_ACTIVE);
2215        active = i;
2216        if (i < 0) return;
2217        let elAnchor = elSidebarTocAnchors[i];
2218        clSidebarTocAnchors[i].add(CLASS_ACTIVE);
2219        if (TOC_INSIDE_SCROLL && tocScrollbar && tracking)
2220          elSidebarToc.scrollTop = elAnchor.offsetTop + elAnchor.offsetHeight - tocMaxHeight;
2221      }
2222    };
2223  }());
2224
2225  // モジュール固定位置が変わったかチェック
2226  const confirmPosition = (function() {
2227    let current = 0;
2228    return {
2229      update : function(set, callback) {
2230        if (set !== current && followModule) {
2231          if (callback)
2232            callback(current);
2233          current = set;
2234          return true;
2235        }
2236        return false;
2237      },
2238      get : function() {
2239        return current;
2240      },
2241      set : function(set) {
2242        current = set;
2243      }
2244    };
2245  }());
2246  const updatePosition = confirmPosition.update;
2247  const getPosition = confirmPosition.get;
2248  const setPosition = confirmPosition.set;
2249
2250
2251  // スクロールイベントの追加と削除
2252  const setScrollEvent = (function() {
2253    let current = false;
2254    const event = 'scroll';
2255    return function(b) {
2256      if (b !== current) {
2257        if (current)
2258          win.removeEventListener(event, updateScroll, false);
2259        else
2260          win.addEventListener(event, updateScroll, false);
2261        current = b;
2262      }
2263    };
2264  }());
2265
2266
2267  //----------------------
2268  // 関数宣言
2269
2270  // 目次要素全体を非表示にする
2271  function hideSidebarToc() {
2272    stSidebarTocModule.display = 'none';
2273    console.log('---sidebar toc hide---');
2274  }
2275
2276  // スムーズスクロールと履歴を設定
2277  function clickEvent(e) {
2278    e.preventDefault();
2279    const hash = decodeURIComponent(e.currentTarget.hash);
2280    const target = getScrollTop(doc.getElementById(hash.substr(1))) - ghFixedHeight + ADJUST_SCROLL;
2281    if (SMOOTH_SCROLL)
2282      smoothScrollY(Math.min(target, scrollRange), SCROLL_TIME);
2283    else
2284      win.scrollTo(win.pageXOffset, target);
2285    if (LINK_HISTORY)
2286      win.history.pushState(null, hash, hash);
2287  }
2288
2289  // モジュール内スクロールバー表示を設定
2290  function setTocScrollBar(bool) {
2291    elSidebarToc.style.maxHeight = bool ? convPX(tocMaxHeight) : '';
2292    tocScrollbar = bool;
2293  }
2294
2295  // 目次モジュールの設定
2296  function setTocModuleOption(position) {
2297    const style = tocModuleStyles[position];
2298    tracking = position !== POSITION_STATIC ? true : false;
2299    Object.keys(style).forEach(function(key) {
2300      stSidebarTocModule[key] = style[key];
2301    });
2302    if (tracking) clSidebarTocModule.add(CLASS_TRACKING);
2303    else clSidebarTocModule.remove(CLASS_TRACKING);
2304    if (POSITION_FIXED === position) clSidebarTocModule.add(CLASS_FIXED);
2305    else clSidebarTocModule.remove(CLASS_FIXED);
2306    if (POSITION_ABSOLUTE === position) clSidebarTocModule.add(CLASS_ABSOLUTE);
2307    else clSidebarTocModule.remove(CLASS_ABSOLUTE);
2308    setTocScrollBar(tracking);
2309  }
2310
2311  // 追尾処理に必要な値を設定
2312  function setTrackingPoint() {
2313    // サイドバーが横に表示されているか
2314    function existSidebar() {
2315      if (MATCH_MEDIA)
2316        return win.matchMedia(MEDIA_QUERY_SIDEBAR).matches;
2317      return getComputedStyleWrap(elBox2).cssFloat !== 'none';
2318    }
2319
2320    // スクロールイベントと追尾設定
2321    function setEventAndFollow(event, follow, callback) {
2322      setScrollEvent(event);
2323      followModule = follow;
2324      console.log('%cscrollEvent:%s followModule:%s', 'color:blue', event, follow);
2325
2326      if (event && follow) {
2327        callback();
2328      }
2329      else {
2330        setPosition(0);
2331        setTocModuleOption(POSITION_STATIC);
2332        if (stickyMode)
2333          elBox2Inner.style.height = '';
2334
2335        if (!event)
2336          for (let i = 0, len = clSidebarTocAnchors.length; i < len; i++)
2337            clSidebarTocAnchors[i].remove(CLASS_ACTIVE);
2338      }
2339    }
2340
2341    // 指定したプロパティが設定されてない時の高さを取得
2342    function getStaticHeight(getElem, targetElem, styleName) {
2343      let ret;
2344      const style = targetElem.style;
2345      const mem = style[styleName];
2346      style[styleName] = '';
2347      ret = getOuterHeight(getElem, true);
2348      style[styleName] = mem;
2349      return ret;
2350    }
2351
2352    // マージンの相殺で失われた分を返す(引数配列は親→子の順番で書く)
2353    function marginCollapsingOverlap(elemsTop, elemsBottom) {
2354      // 各要素の指定したプロパティで一番大きい数値を返す
2355      function max(elems, styleName) {
2356        let arr = [];
2357        for (let i = 0, len = elems.length; i < len; i++)
2358          arr[i] = getStyleFloat(elems[i], styleName);
2359        return Math.max.apply(null, arr);
2360      }
2361      // padding,borderがあって相殺が起こらないパターンを除外する
2362      // 親要素にpadding,borderがなければそのまま、あれば親要素だけ返す
2363      // マージンの相殺が起こらないパターンは他にã
2363‚‚ある
2364      // tb 0:top 1:bottom
2365      function filter(elems, tb) {
2366        const maxIndex = elems.length - 1;
2367        const tbIndex = tb * 2;
2368        if (maxIndex > 0)
2369          for (let i = 0; i < maxIndex; i++)
2370            for (let j = 0; j < 2; j++)
2371              if (getStyleFloat(elems[i], SUM_PADDING_HEIGHT[j + tbIndex]) > 0)
2372                return elems.slice(0, i + 1);
2373        return elems;
2374      }
2375
2376      const marginTop = max(filter(elemsTop, 0), SUM_MARGIN_HEIGHT[0]);
2377      const marginBottom = max(filter(elemsBottom, 1), SUM_MARGIN_HEIGHT[1]);
2378      if (marginTop === 0 || marginBottom === 0)
2379        return 0;
2380      return Math.min(marginTop, marginBottom);
2381    }
2382
2383
2384    //----------------------
2385    console.log('%c--setTrackingPoint %s--', 'color:blue', Date().match(/\d\d:\d\d:\d\d/)[0]);
2386    const winHeight = win.innerHeight;
2387    const scrollbarX = winHeight - doc.documentElement.clientHeight;
2388    const mainHeight = Math.max(getOuterHeight(doc.getElementById('wrapper')), getOuterHeight(elMain));
2389    scrollRange = Math.max(doc.documentElement.scrollHeight - winHeight, 0);
2390    ghFixedHeight = 0;
2391    for (let i = 0, len = elGhs.length; i < len; i++)
2392      ghFixedHeight += getComputedStyleWrap(elGhs[i]).position === POSITION_FIXED ? getOuterHeight(elGhs[i]) : 0;
2393    console.log('ghFixedHeight:' + ghFixedHeight);
2394    marginComp = ghFixedHeight + MARGIN_TOP;
2395    leftMargin = elGuideModule.getBoundingClientRect().left + win.pageXOffset;
2396
2397    // 計測用に.trackingを付与。また後で戻せるように保存しておく。
2398    const existTracking = clSidebarTocModule.contains(CLASS_TRACKING);
2399    if (!existTracking)
2400      clSidebarTocModule.add(CLASS_TRACKING);
2401    tocMaxHeight = winHeight - scrollbarX - marginComp - MARGIN_BOTTOM
2402      - sumElementProps(elSidebarTocModule, SUM_PADDING_HEIGHT)
2403      - sumElementProps(elSidebarToc.parentElement, SUM_PADDING_HEIGHT);
2404    if (elTocTitle)
2405      tocMaxHeight -= getOuterHeight(elTocTitle, true);
2406    // .trackingでborder等を付与する時でもマージンの相殺が計測できるように外す
2407    clSidebarTocModule.remove(CLASS_TRACKING);
2408
2409    // 各見出しの位置を保存
2410    for (let i = 0, len = elContentList.length; i < len; i++)
2411      headlineTopList[i] = getScrollTop(elContentList[i]) - ghFixedHeight;
2412
2413    // 横幅を合わせる
2414    stSidebarTocModule.width = getComputedStyleWrap(elGuideModule).width;
2415
2416    // 現在位置表示をリセット
2417    setActive(-1);
2418
2419
2420    //----------------------
2421    // 追尾処理判定
2422    // サイドバーが横に表示されていない時
2423    if (!existSidebar()) {
2424      setEventAndFollow(!PAUSE_NO_SIDEBAR, false);
2425      if (PAUSE_NO_SIDEBAR) return;
2426    }
2427    // サイドバーより記事の方が小さい時
2428    else if (getStaticHeight(elBox2, elBox2Inner, 'height') > mainHeight) {
2429      setEventAndFollow(!PAUSE_MAIN_SMALL, false);
2430      if (PAUSE_MAIN_SMALL) return;
2431    }
2432    else {
2433      setEventAndFollow(true, true, function() {
2434        setTocScrollBar(tracking);
2435        setPosition(-1);
2436        prevScrollLeft = 0;
2437
2438        const mainInnerHeight = getOuterHeight(elMainInner);
2439        const margins = getUnsetClassStyleFloat(elSidebarTocModule, ['marginTop', 'marginLeft'], [CLASS_TRACKING, CLASS_FIXED, CLASS_ABSOLUTE]);
2440        const tocModuleMarginTopUnsetClass = margins[0];
2441        const tocModuleMarginLeftUnsetClass = margins[1];
2442        leftMargin -= tocModuleMarginLeftUnsetClass;
2443
2444        if (stickyMode) {
2445          // 親要素の高さを合わせる
2446          elBox2Inner.style.height = convPX(mainInnerHeight);
2447        }
2448
2449        //----------------
2450        // ウィンドウに固定開始する位置
2451        scrollFixed = getScrollTop(elGuideModule) - ghFixedHeight + tocModuleMarginTopUnsetClass + ADJUST_FIXED;
2452        if (elSubGuideModule)
2453          scrollFixed -= marginCollapsingOverlap([elSidebarTocModule, elTocTitle], [elSubGuideModule, elSubGuideModule.children[1]]);
2454
2455        if (lastModuleToc)
2456          scrollFixed -= MARGIN_TOP;
2457        else if (tracking)
2458          scrollFixed += getStaticHeight(elSidebarTocModule, elSidebarToc, 'maxHeight');
2459
2460        //----------------
2461        // 下までスクロールした時にページへ固定開始する位置
2462        const tocModuleMaxHeight = Math.min(winHeight - marginComp, getOuterHeight(elSidebarTocModule));
2463        scrollAbsolute = getScrollTop(elMainInner) + mainInnerHeight - tocModuleMaxHeight - marginComp;
2464
2465        // 親要素にposition:relativeがあれば位置を保存する
2466        relativeOffset = elGuideModule.offsetParent !== doc.body ? getScrollTop(elGuideModule.offsetParent) : 0;
2467
2468        //----------------
2469        // モジュール固定位置
2470        tocModuleStyles[POSITION_FIXED].top = convPX(marginComp - tocModuleMarginTopUnsetClass);
2471        tocModuleStyles[POSITION_ABSOLUTE].top = convPX(scrollAbsolute - relativeOffset + marginComp - tocModuleMarginTopUnsetClass);
2472
2473        console.log('relativeOffset:' + relativeOffset);
2474        if (elSubGuideModule)
2475          console.log('marginCollapsingOverlap:' + marginCollapsingOverlap([elSidebarTocModule, elTocTitle], [elSubGuideModule, elSubGuideModule.children[1]]));
2476        console.log('tocModuleMargin Top:%d Left:%d', tocModuleMarginTopUnsetClass, tocModuleMarginLeftUnsetClass);
2477        console.log('SidebarToc.top:' + getScrollTop(elSidebarTocModule));
2478        console.log('scrollFixed   :' + scrollFixed);
2479        console.log('scrollAbsolute:' + scrollAbsolute);
2480      });
2481    }
2482
2483    // .trackingを戻す
2484    if (existTracking)
2485      clSidebarTocModule.add(CLASS_TRACKING);
2486
2487    updateScroll();
2488  }
2489
2490  // 現在のスクロール位置をもとに表示を更新
2491  function updateScroll() {
2492    const scrollTop = win.pageYOffset;
2493    const scrollLeft = win.pageXOffset;
2494
2495    // モジュールを追従させる(followModuleがtrueの時だけ)
2496    if (scrollAbsolute < scrollTop) {
2497      // 固定解除(下)
2498      if (updatePosition(2)) {
2499        setTocModuleOption(POSITION_ABSOLUTE);
2500        prevScrollLeft = 0;
2501      }
2502    }
2503    else if (scrollFixed < scrollTop) {
2504      // 固定
2505      updatePosition(1, function(current) {
2506        // サイドバーの最後以外に設置されていて直前が初期位置の時はフェードインさせる
2507        if (!lastModuleToc && current === 0)
2508          clSidebarTocModule.add(CLASS_FADE_IN);
2509        setTocModuleOption(POSITION_FIXED);
2510      });
2511    }
2512    else {
2513      // 初期位置
2514      if (updatePosition(0))
2515        setTocModuleOption(POSITION_STATIC);
2516    }
2517
2518    // 横方向のスクロールに合わせる
2519    if (!stickyMode && getPosition() === 1 && scrollLeft !== prevScrollLeft) {
2520      stSidebarTocModule.left = convPX(leftMargin - scrollLeft);
2521      prevScrollLeft = scrollLeft;
2522    }
2523
2524    // 現在位置のクラス設定
2525    if (scrollTop <= headlineTopList[0] - CURRENT_MARGIN) {
2526      setActive(0);
2527    }
2528    else if ((scrollRange - scrollTop) <= CURRENT_MARGIN) {
2529      setActive(tocLastIndex);
2530    }
2531    else {
2532      for (let i = tocLastIndex; i >= 0; i--) {
2533        if (scrollTop > headlineTopList[i] - CURRENT_MARGIN) {
2534          setActive(i);
2535          break;
2536        }
2537      }
2538    }
2539  }
2540}());
2541}());
2542</script>
2542
2543
2544  </div>
2545
2546
2547    </div>
2548  </div>
2549  
2550
2551  
2552  
2552<script async src="https://s.hatena.ne.jp/js/widget/star.js"></script>
2552
2553  
2554  
2555  
2555<script>
2556    if (typeof window.Hatena === 'undefined') {
2557      window.Hatena = {};
2558    }
2559    if (!Hatena.hasOwnProperty('Star')) {
2560      Hatena.Star = {
2561        VERSION: 2,
2562      };
2563    }
2564  </script>
2564
2565
2566
2567  
2568  
2569
2570<div class="quote-box">
2571  <div class="tooltip-quote tooltip-quote-stock">
2572    <i class="blogicon-quote" title="引用をストック"></i>
2573  </div>
2574  <div class="tooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet">
2575    <a class="js-tweet-quote" target="_blank" data-track-name="quote-tweet" data-track-once>
2576      <img src="https://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version=89f69427ebf1344326896140241320" title="引用して投稿する" >
2577    </a>
2578  </div>
2579</div>
2580
2581<div class="quote-stock-panel" id="quote-stock-message-box" style="position: absolute; z-index: 3000">
2582  <div class="message-box" id="quote-stock-succeeded-message" style="display: none">
2583    <p>引用をストックしました</p>
2584    <button class="btn btn-primary" id="quote-stock-show-editor-button" data-track-name="curation-quote-edit-button">ストック一覧を見る</button>
2585    <button class="btn quote-stock-close-message-button">閉じる</button>
2586  </div>
2587
2588  <div class="message-box" id="quote-login-required-message" style="display: none">
2589    <p>引用するにはまずログインしてください</p>
2590    <button class="btn btn-primary" id="quote-login-button">ログイン</button>
2591    <button class="btn quote-stock-close-message-button">閉じる</button>
2592  </div>
2593
2594  <div class="error-box" id="quote-stock-failed-message" style="display: none">
2595    <p>引用をストックできませんでした。再度お試しください</p>
2596    <button class="btn quote-stock-close-message-button">閉じる</button>
2597  </div>
2598
2599  <div class="error-box" id="unstockable-quote-message-box" style="display: none; position: absolute; z-index: 3000;">
2600    <p>限定公開記事のため引用できません。</p>
2601  </div>
2602</div>
2603
2604<script type="x-underscore-template" id="js-requote-button-template">
2605  <div class="requote-button js-requote-button">
2606    <button class="requote-button-btn tipsy-top" title="引用する"><i class="blogicon-quote"></i></button>
2607  </div>
2608</script>
2608
2609
2610
2611
2612  
2613  <div id="hidden-subscribe-button" style="display: none;">
2614    <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box"
2615  
2616  >
2617
2618  <a href="#" class="hatena-follow-button js-hatena-follow-button">
2619    <span class="subscribing">
2620      <span class="foreground">読者です</span>
2621      <span class="background">読者をやめる</span>
2622    </span>
2623    <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once>
2624      <span class="foreground">読者になる</span>
2625      <span class="background">読者になる</span>
2626    </span>
2627  </a>
2628  <div class="subscription-count-box js-subscription-count-box">
2629    <i></i>
2630    <u></u>
2631    <span class="subscription-count js-subscription-count">
2632    </span>
2633  </div>
2634</div>
2635
2636  </div>
2637
2638  
2639
2640
2641
2642    
2643
2644
2645  
2645<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
2645
2646
2647<script src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
2647
2648
2649
2650<script type="text/javascript" src="https://cdn.blog.st-hatena.com/js/external/jquery.min.js?v=1.12.4&amp;version=89f69427ebf1344326896140241320"></script>
2650
2651
2652
2653
2654
2655
2656
2657
2658<script src="https://cdn.blog.st-hatena.com/js/texts-ja.js?version=89f69427ebf1344326896140241320"></script>
2658
2659
2660
2661
2662  
2662<script id="vendors-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/vendors.js?version=89f69427ebf1344326896140241320" crossorigin="anonymous"></script>
2662
2663
2664<script id="hatenablog-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/hatenablog.js?version=89f69427ebf1344326896140241320" crossorigin="anonymous" data-page-id="static_page"></script>
2664
2665
2666
2667  
2667<script>Hatena.Diary.GlobalHeader.init()</script>
2667
2668
2669
2670
2671
2672
2673
2674
2675    
2676
2677    
2678
2679
2680
2681
2682
2683  </body>
2684</html>
2685

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.