- 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>
187 lines
9.6 KiB
HTML
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&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> |