mingle-website/ja/devlog.html
68893236+KINDNICK@users.noreply.github.com 5a0c6a8f70 Add: DevLog 페이지 + 블로그 빌드 시스템 + 팝업 제거 + 싸인 이미지 추가
- DevLog(블로그) 인프라: build-blog.js (MD→HTML), devlog.css, devlog.js
- DevLog 목록/포스트 페이지 4개 언어 (ko/en/ja/zh)
- 글 2편 작성 + 번역: 관성식vs광학식, 광학식 파이프라인
- 전체 네비게이션에 DevLog 탭 추가 (37+ HTML)
- 메인 팝업(요금제 변경 안내) 제거 (ko/en/ja/zh)
- i18n.js: 언어별 페이지에서 번역 JSON 항상 로드하도록 수정
- 방문자 싸인 이미지 3장 추가 (webp 변환)
- sitemap, i18n JSON, package.json 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 03:10:04 +09:00

187 lines
9.6 KiB
HTML

<!DOCTYPE html><html lang="ja"><head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-PPTNN6WD');</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-R0PBYHVQBS"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-R0PBYHVQBS');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DevLog - ミングルスタジオ</title>
<!-- 파비콘 -->
<link rel="icon" type="image/x-icon" href="/images/logo/mingle-logo.ico">
<link rel="shortcut icon" href="/images/logo/mingle-logo.ico">
<link rel="icon" type="image/webp" href="/images/logo/mingle-logo.webp">
<!-- Canonical URL -->
<link rel="canonical" href="https://minglestudio.co.kr/ja/devlog">
<!-- Theme Color -->
<meta name="theme-color" content="#ff8800">
<!-- SEO 메타 태그 -->
<meta name="description" content="Mingle Studio DevLog - モーションキャプチャー技術、制作過程、バーチャルコンテンツ制作のストーリーを共有します。">
<meta name="keywords" content="Mingle Studio, DevLog, モーションキャプチャー, バーチャルコンテンツ, VTuber, モーキャプ技術">
<meta name="author" content="Mingle Studio">
<!-- Open Graph -->
<meta property="og:title" content="DevLog - ミングルスタジオ">
<meta property="og:description" content="モーションキャプチャー技術と制作過程を共有します。Mingle Studioの最新ニュースと技術ストーリー。">
<meta property="og:url" content="https://minglestudio.co.kr/ja/devlog">
<meta property="og:type" content="website">
<meta property="og:image" content="https://minglestudio.co.kr/images/logo/mingle-OG.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:locale" content="ja_JP">
<meta property="og:site_name" content="Mingle Studio">
<meta property="og:image:alt" content="Mingle Studio - DevLog">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="DevLog - ミングルスタジオ">
<meta name="twitter:description" content="モーションキャプチャー技術と制作過程を共有します。Mingle Studioの最新ニュースと技術ストーリー。">
<meta name="twitter:image" content="https://minglestudio.co.kr/images/logo/mingle-OG.png">
<meta name="twitter:site" content="@mingle_studio">
<meta name="twitter:creator" content="@mingle_studio">
<!-- 폰트 -->
<link href="https://hangeul.pstatic.net/hangeul_static/css/nanum-square.css" rel="stylesheet">
<!-- Icons -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
<!-- CSS -->
<link rel="stylesheet" href="/css/common.css?v=20260404">
<link rel="stylesheet" href="/css/devlog.css?v=20260404">
<link rel="alternate" hreflang="ko" href="https://minglestudio.co.kr/devlog">
<link rel="alternate" hreflang="en" href="https://minglestudio.co.kr/en/devlog">
<link rel="alternate" hreflang="ja" href="https://minglestudio.co.kr/ja/devlog">
<link rel="alternate" hreflang="zh" href="https://minglestudio.co.kr/zh/devlog">
<link rel="alternate" hreflang="x-default" href="https://minglestudio.co.kr/devlog">
<!-- JSON-LD 구조화 데이터 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Blog",
"name": "Mingle Studio DevLog",
"description": "モーションキャプチャー技術と制作過程を共有します",
"url": "https://minglestudio.co.kr/ja/devlog",
"publisher": {
"@type": "Organization",
"name": "Mingle Studio",
"logo": {
"@type": "ImageObject",
"url": "https://minglestudio.co.kr/images/logo/mingle-logo.webp"
}
},
"inLanguage": "ja"
}
</script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PPTNN6WD"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<a href="#main-content" class="skip-to-content" data-i18n="common.skipToContent">本文へスキップ</a>
<!-- 헤더 -->
<div id="header-placeholder">
<!-- 공통 헤더 컴포넌트 -->
<nav class="navbar" aria-label="メインナビゲーション">
<div class="nav-container">
<div class="nav-logo">
<a href="/ja/">
<img src="/images/logo/mingle-logo.webp" alt="ミングルスタジオ ロゴ">
<span data-i18n="header.studioName">ミングルスタジオ</span>
</a>
</div>
<ul id="nav-menu" class="nav-menu">
<li><a href="/ja/about" class="nav-link" data-i18n="header.nav.about">About</a></li>
<li><a href="/ja/services" class="nav-link" data-i18n="header.nav.services">Services</a></li>
<li><a href="/ja/portfolio" class="nav-link" data-i18n="header.nav.portfolio">Portfolio</a></li>
<li><a href="/ja/gallery" class="nav-link" data-i18n="header.nav.gallery">Gallery</a></li>
<li><a href="/schedule" class="nav-link" data-i18n="header.nav.schedule">Schedule</a></li>
<li><a href="/ja/devlog" class="nav-link active" data-i18n="header.nav.devlog">DevLog</a></li>
<li><a href="/ja/contact" class="nav-link" data-i18n="header.nav.contact">Contact</a></li>
<li><a href="/ja/qna" class="nav-link" data-i18n="header.nav.qna">Q&amp;A</a></li>
</ul>
<div class="nav-actions">
<div class="lang-switcher">
<button class="lang-btn" aria-label="言語選択" data-i18n-aria="header.langSelect">
<span class="lang-current">KO</span>
<svg class="lang-chevron" viewBox="0 0 10 6" width="10" height="6" aria-hidden="true">
<path d="M1 1l4 4 4-4" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
<ul class="lang-dropdown">
<li><button data-lang="ko">🇰🇷 한국어</button></li>
<li><button data-lang="en">🇺🇸 English</button></li>
<li><button data-lang="zh">🇨🇳 中文</button></li>
<li><button data-lang="ja">🇯🇵 日本語</button></li>
</ul>
</div>
<button class="theme-toggle" id="themeToggle" aria-label="ダークモード切替" title="ダーク/ライトモード切替">
<div class="theme-toggle-thumb">
<svg class="theme-toggle-icon theme-toggle-icon--sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
<svg class="theme-toggle-icon theme-toggle-icon--moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
</div>
</button>
</div>
<button class="hamburger" aria-label="メニューを開く" aria-expanded="false" aria-controls="nav-menu">
<span></span>
<span></span>
<span></span>
</button>
</div>
</nav>
</div>
<main id="main-content">
<section class="blog-hero">
<div class="container">
<h1>DevLog</h1>
<p>モーションキャプチャー技術と制作過程を共有します</p>
</div>
</section>
<section class="blog-list-section">
<div id="blogFilters" class="blog-filters"></div>
<div id="blogLoading" class="blog-loading">
<div class="loading-spinner"></div>
</div>
<div id="blogGrid" class="blog-grid"></div>
</section>
</main>
<!-- 푸터 -->
<div id="footer-placeholder"></div>
<!-- JavaScript -->
<script src="/js/i18n.js"></script>
<script src="/js/common.js"></script>
<script src="/js/devlog.js"></script>
</body></html>