Skip to content

Commit cb61ad1

Browse files
committed
ブログ追加
1 parent 596f642 commit cb61ad1

64 files changed

Lines changed: 3009 additions & 218 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

WebSite/assets/data/blogList_en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
[
22
{
33
"id": "blog_00031",
4-
"title": "GoFデザインパターン - 抽象ファクトリ編",
4+
"title": "GoF Design Patterns - Abstract Factory",
55
"date": "2026-02-03T00:00:00.000Z",
66
"category": "Coding",
7-
"description": "GoFコレクションにおける抽象ファクトリパターン実践ガイド:概念、使いどころ、C++の実装例、注意点と出典を実用的に解説します",
7+
"description": "A practical guide to the Abstract Factory pattern from the GoF collection: concept, when to use it, a C++ implementation example, caveats, and references.",
88
"tags": [
99
"Coding",
1010
"DesignPattern"

WebSite/blog/blog_00001.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,50 @@ <h2 class="section__title">関連記事</h2>
258258
<h2 class="section__title">おすすめ記事</h2>
259259
<div id="recommendList" class="recommend-grid"></div>
260260
</section>
261-
261+
<section class="section section--comments">
262+
<h2 class="section__title">コメント</h2>
263+
<div id="comments" class="post-comments">
264+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
265+
<p class="giscus-loading">コメントを読み込み中...</p>
266+
</div>
267+
</div>
268+
</section>
269+
<script>
270+
(function() {
271+
var placeholder = document.querySelector('.giscus-placeholder');
272+
if (!placeholder) return;
273+
var observer = new IntersectionObserver(function(entries) {
274+
entries.forEach(function(entry) {
275+
if (entry.isIntersecting) {
276+
observer.disconnect();
277+
try {
278+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
279+
var script = document.createElement('script');
280+
script.src = 'https://giscus.app/client.js';
281+
script.setAttribute('data-repo', config.repo);
282+
script.setAttribute('data-repo-id', config.repoId);
283+
script.setAttribute('data-category', config.category);
284+
script.setAttribute('data-category-id', config.categoryId);
285+
script.setAttribute('data-mapping', config.mapping);
286+
script.setAttribute('data-strict', '0');
287+
script.setAttribute('data-reactions-enabled', '1');
288+
script.setAttribute('data-emit-metadata', '0');
289+
script.setAttribute('data-input-position', 'bottom');
290+
script.setAttribute('data-theme', config.theme);
291+
script.setAttribute('crossorigin', 'anonymous');
292+
script.async = true;
293+
placeholder.innerHTML = '';
294+
placeholder.appendChild(script);
295+
} catch (e) {
296+
console.error('Failed to load Giscus comments:', e);
297+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
298+
}
299+
}
300+
});
301+
}, { rootMargin: '200px' });
302+
observer.observe(placeholder);
303+
})();
304+
</script>
262305
</main>
263306
<div class="toc-overlay"></div>
264307
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00002.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,50 @@ <h2 class="section__title">関連記事</h2>
386386
<h2 class="section__title">おすすめ記事</h2>
387387
<div id="recommendList" class="recommend-grid"></div>
388388
</section>
389-
389+
<section class="section section--comments">
390+
<h2 class="section__title">コメント</h2>
391+
<div id="comments" class="post-comments">
392+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
393+
<p class="giscus-loading">コメントを読み込み中...</p>
394+
</div>
395+
</div>
396+
</section>
397+
<script>
398+
(function() {
399+
var placeholder = document.querySelector('.giscus-placeholder');
400+
if (!placeholder) return;
401+
var observer = new IntersectionObserver(function(entries) {
402+
entries.forEach(function(entry) {
403+
if (entry.isIntersecting) {
404+
observer.disconnect();
405+
try {
406+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
407+
var script = document.createElement('script');
408+
script.src = 'https://giscus.app/client.js';
409+
script.setAttribute('data-repo', config.repo);
410+
script.setAttribute('data-repo-id', config.repoId);
411+
script.setAttribute('data-category', config.category);
412+
script.setAttribute('data-category-id', config.categoryId);
413+
script.setAttribute('data-mapping', config.mapping);
414+
script.setAttribute('data-strict', '0');
415+
script.setAttribute('data-reactions-enabled', '1');
416+
script.setAttribute('data-emit-metadata', '0');
417+
script.setAttribute('data-input-position', 'bottom');
418+
script.setAttribute('data-theme', config.theme);
419+
script.setAttribute('crossorigin', 'anonymous');
420+
script.async = true;
421+
placeholder.innerHTML = '';
422+
placeholder.appendChild(script);
423+
} catch (e) {
424+
console.error('Failed to load Giscus comments:', e);
425+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
426+
}
427+
}
428+
});
429+
}, { rootMargin: '200px' });
430+
observer.observe(placeholder);
431+
})();
432+
</script>
390433
</main>
391434
<div class="toc-overlay"></div>
392435
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00003.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,50 @@ <h2 class="section__title">関連記事</h2>
396396
<h2 class="section__title">おすすめ記事</h2>
397397
<div id="recommendList" class="recommend-grid"></div>
398398
</section>
399-
399+
<section class="section section--comments">
400+
<h2 class="section__title">コメント</h2>
401+
<div id="comments" class="post-comments">
402+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
403+
<p class="giscus-loading">コメントを読み込み中...</p>
404+
</div>
405+
</div>
406+
</section>
407+
<script>
408+
(function() {
409+
var placeholder = document.querySelector('.giscus-placeholder');
410+
if (!placeholder) return;
411+
var observer = new IntersectionObserver(function(entries) {
412+
entries.forEach(function(entry) {
413+
if (entry.isIntersecting) {
414+
observer.disconnect();
415+
try {
416+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
417+
var script = document.createElement('script');
418+
script.src = 'https://giscus.app/client.js';
419+
script.setAttribute('data-repo', config.repo);
420+
script.setAttribute('data-repo-id', config.repoId);
421+
script.setAttribute('data-category', config.category);
422+
script.setAttribute('data-category-id', config.categoryId);
423+
script.setAttribute('data-mapping', config.mapping);
424+
script.setAttribute('data-strict', '0');
425+
script.setAttribute('data-reactions-enabled', '1');
426+
script.setAttribute('data-emit-metadata', '0');
427+
script.setAttribute('data-input-position', 'bottom');
428+
script.setAttribute('data-theme', config.theme);
429+
script.setAttribute('crossorigin', 'anonymous');
430+
script.async = true;
431+
placeholder.innerHTML = '';
432+
placeholder.appendChild(script);
433+
} catch (e) {
434+
console.error('Failed to load Giscus comments:', e);
435+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
436+
}
437+
}
438+
});
439+
}, { rootMargin: '200px' });
440+
observer.observe(placeholder);
441+
})();
442+
</script>
400443
</main>
401444
<div class="toc-overlay"></div>
402445
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00004.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,50 @@ <h2 class="section__title">関連記事</h2>
259259
<h2 class="section__title">おすすめ記事</h2>
260260
<div id="recommendList" class="recommend-grid"></div>
261261
</section>
262-
262+
<section class="section section--comments">
263+
<h2 class="section__title">コメント</h2>
264+
<div id="comments" class="post-comments">
265+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
266+
<p class="giscus-loading">コメントを読み込み中...</p>
267+
</div>
268+
</div>
269+
</section>
270+
<script>
271+
(function() {
272+
var placeholder = document.querySelector('.giscus-placeholder');
273+
if (!placeholder) return;
274+
var observer = new IntersectionObserver(function(entries) {
275+
entries.forEach(function(entry) {
276+
if (entry.isIntersecting) {
277+
observer.disconnect();
278+
try {
279+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
280+
var script = document.createElement('script');
281+
script.src = 'https://giscus.app/client.js';
282+
script.setAttribute('data-repo', config.repo);
283+
script.setAttribute('data-repo-id', config.repoId);
284+
script.setAttribute('data-category', config.category);
285+
script.setAttribute('data-category-id', config.categoryId);
286+
script.setAttribute('data-mapping', config.mapping);
287+
script.setAttribute('data-strict', '0');
288+
script.setAttribute('data-reactions-enabled', '1');
289+
script.setAttribute('data-emit-metadata', '0');
290+
script.setAttribute('data-input-position', 'bottom');
291+
script.setAttribute('data-theme', config.theme);
292+
script.setAttribute('crossorigin', 'anonymous');
293+
script.async = true;
294+
placeholder.innerHTML = '';
295+
placeholder.appendChild(script);
296+
} catch (e) {
297+
console.error('Failed to load Giscus comments:', e);
298+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
299+
}
300+
}
301+
});
302+
}, { rootMargin: '200px' });
303+
observer.observe(placeholder);
304+
})();
305+
</script>
263306
</main>
264307
<div class="toc-overlay"></div>
265308
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00005.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,50 @@ <h2 class="section__title">関連記事</h2>
378378
<h2 class="section__title">おすすめ記事</h2>
379379
<div id="recommendList" class="recommend-grid"></div>
380380
</section>
381-
381+
<section class="section section--comments">
382+
<h2 class="section__title">コメント</h2>
383+
<div id="comments" class="post-comments">
384+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
385+
<p class="giscus-loading">コメントを読み込み中...</p>
386+
</div>
387+
</div>
388+
</section>
389+
<script>
390+
(function() {
391+
var placeholder = document.querySelector('.giscus-placeholder');
392+
if (!placeholder) return;
393+
var observer = new IntersectionObserver(function(entries) {
394+
entries.forEach(function(entry) {
395+
if (entry.isIntersecting) {
396+
observer.disconnect();
397+
try {
398+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
399+
var script = document.createElement('script');
400+
script.src = 'https://giscus.app/client.js';
401+
script.setAttribute('data-repo', config.repo);
402+
script.setAttribute('data-repo-id', config.repoId);
403+
script.setAttribute('data-category', config.category);
404+
script.setAttribute('data-category-id', config.categoryId);
405+
script.setAttribute('data-mapping', config.mapping);
406+
script.setAttribute('data-strict', '0');
407+
script.setAttribute('data-reactions-enabled', '1');
408+
script.setAttribute('data-emit-metadata', '0');
409+
script.setAttribute('data-input-position', 'bottom');
410+
script.setAttribute('data-theme', config.theme);
411+
script.setAttribute('crossorigin', 'anonymous');
412+
script.async = true;
413+
placeholder.innerHTML = '';
414+
placeholder.appendChild(script);
415+
} catch (e) {
416+
console.error('Failed to load Giscus comments:', e);
417+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
418+
}
419+
}
420+
});
421+
}, { rootMargin: '200px' });
422+
observer.observe(placeholder);
423+
})();
424+
</script>
382425
</main>
383426
<div class="toc-overlay"></div>
384427
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00006.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,50 @@ <h2 class="section__title">関連記事</h2>
335335
<h2 class="section__title">おすすめ記事</h2>
336336
<div id="recommendList" class="recommend-grid"></div>
337337
</section>
338-
338+
<section class="section section--comments">
339+
<h2 class="section__title">コメント</h2>
340+
<div id="comments" class="post-comments">
341+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
342+
<p class="giscus-loading">コメントを読み込み中...</p>
343+
</div>
344+
</div>
345+
</section>
346+
<script>
347+
(function() {
348+
var placeholder = document.querySelector('.giscus-placeholder');
349+
if (!placeholder) return;
350+
var observer = new IntersectionObserver(function(entries) {
351+
entries.forEach(function(entry) {
352+
if (entry.isIntersecting) {
353+
observer.disconnect();
354+
try {
355+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
356+
var script = document.createElement('script');
357+
script.src = 'https://giscus.app/client.js';
358+
script.setAttribute('data-repo', config.repo);
359+
script.setAttribute('data-repo-id', config.repoId);
360+
script.setAttribute('data-category', config.category);
361+
script.setAttribute('data-category-id', config.categoryId);
362+
script.setAttribute('data-mapping', config.mapping);
363+
script.setAttribute('data-strict', '0');
364+
script.setAttribute('data-reactions-enabled', '1');
365+
script.setAttribute('data-emit-metadata', '0');
366+
script.setAttribute('data-input-position', 'bottom');
367+
script.setAttribute('data-theme', config.theme);
368+
script.setAttribute('crossorigin', 'anonymous');
369+
script.async = true;
370+
placeholder.innerHTML = '';
371+
placeholder.appendChild(script);
372+
} catch (e) {
373+
console.error('Failed to load Giscus comments:', e);
374+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
375+
}
376+
}
377+
});
378+
}, { rootMargin: '200px' });
379+
observer.observe(placeholder);
380+
})();
381+
</script>
339382
</main>
340383
<div class="toc-overlay"></div>
341384
<button type="button" class="toc-toggle" aria-label="目次を開く">

WebSite/blog/blog_00007.html

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,50 @@ <h2 class="section__title">関連記事</h2>
365365
<h2 class="section__title">おすすめ記事</h2>
366366
<div id="recommendList" class="recommend-grid"></div>
367367
</section>
368-
368+
<section class="section section--comments">
369+
<h2 class="section__title">コメント</h2>
370+
<div id="comments" class="post-comments">
371+
<div class="giscus-placeholder" data-giscus-config="{&quot;repo&quot;:&quot;BreadMotion/breadmotion.github.io&quot;,&quot;repoId&quot;:&quot;R_kgDOM8I6Fg&quot;,&quot;category&quot;:&quot;Comment&quot;,&quot;categoryId&quot;:&quot;DIC_kwDOM8I6Fs4CzPPY&quot;,&quot;mapping&quot;:&quot;og:title&quot;,&quot;theme&quot;:&quot;preferred_color_scheme&quot;}">
372+
<p class="giscus-loading">コメントを読み込み中...</p>
373+
</div>
374+
</div>
375+
</section>
376+
<script>
377+
(function() {
378+
var placeholder = document.querySelector('.giscus-placeholder');
379+
if (!placeholder) return;
380+
var observer = new IntersectionObserver(function(entries) {
381+
entries.forEach(function(entry) {
382+
if (entry.isIntersecting) {
383+
observer.disconnect();
384+
try {
385+
var config = JSON.parse(placeholder.getAttribute('data-giscus-config'));
386+
var script = document.createElement('script');
387+
script.src = 'https://giscus.app/client.js';
388+
script.setAttribute('data-repo', config.repo);
389+
script.setAttribute('data-repo-id', config.repoId);
390+
script.setAttribute('data-category', config.category);
391+
script.setAttribute('data-category-id', config.categoryId);
392+
script.setAttribute('data-mapping', config.mapping);
393+
script.setAttribute('data-strict', '0');
394+
script.setAttribute('data-reactions-enabled', '1');
395+
script.setAttribute('data-emit-metadata', '0');
396+
script.setAttribute('data-input-position', 'bottom');
397+
script.setAttribute('data-theme', config.theme);
398+
script.setAttribute('crossorigin', 'anonymous');
399+
script.async = true;
400+
placeholder.innerHTML = '';
401+
placeholder.appendChild(script);
402+
} catch (e) {
403+
console.error('Failed to load Giscus comments:', e);
404+
placeholder.innerHTML = '<p style="color: var(--color-text-muted); text-align: center;">Failed to load comments.</p>';
405+
}
406+
}
407+
});
408+
}, { rootMargin: '200px' });
409+
observer.observe(placeholder);
410+
})();
411+
</script>
369412
</main>
370413
<div class="toc-overlay"></div>
371414
<button type="button" class="toc-toggle" aria-label="目次を開く">

0 commit comments

Comments
 (0)