<!DOCTYPE html><html lang="ja"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>x86CSS — CSSだけで動くx86エミュレータ</title><meta name="description" content="x86CSSは、JavaScriptを一切使わずに「CSSだけ」で8086系の機械語（ネイティブx86バイナリ）を実行するという実験的プロジェクトです。GCCでコンパイルしたCプログラムを8086マシンコードにした上で、compile_c.pyなどのツールでそのバイナリを大量のCSSルールとHTML構造へ変換し、ブラウザのCSSレンダリング機構（アニメーション・セレクタ・擬似要素など）を駆使して命令の実行やレジスタ／メモリの状態を再現します。デモサイトも公開されており、表現の限界やブラウザ機能の面白さを学べるプロジェクトです。"><!-- Canonical URL --><link rel="canonical" href="https://github-matome.netlify.app/articles/github-trend-x86css.html"><!-- Robots meta --><!-- Open Graph --><meta property="og:title" content="x86CSS — CSSだけで動くx86エミュレータ"><meta property="og:description" content="x86CSSは、JavaScriptを一切使わずに「CSSだけ」で8086系の機械語（ネイティブx86バイナリ）を実行するという実験的プロジェクトです。GCCでコンパイルしたCプログラムを8086マシンコードにした上で、compile_c.pyなどのツールでそのバイナリを大量のCSSルールとHTML構造へ変換し、ブラウザのCSSレンダリング機構（アニメーション・セレクタ・擬似要素など）を駆使して命令の実行やレジスタ／メモリの状態を再現します。デモサイトも公開されており、表現の限界やブラウザ機能の面白さを学べるプロジェクトです。"><meta property="og:type" content="website"><meta property="og:url" content="https://github-matome.netlify.app/articles/github-trend-x86css.html"><meta property="og:image" content="https://github-matome.netlify.app/images/ogp/github-trend-x86css.png"><meta property="og:site_name" content="GitHub Trends Matome"><meta property="og:locale" content="ja_JP"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="x86CSS — CSSだけで動くx86エミュレータ"><meta name="twitter:description" content="x86CSSは、JavaScriptを一切使わずに「CSSだけ」で8086系の機械語（ネイティブx86バイナリ）を実行するという実験的プロジェクトです。GCCでコンパイルしたCプログラムを8086マシンコードにした上で、compile_c.pyなどのツールでそのバイナリを大量のCSSルールとHTML構造へ変換し、ブラウザのCSSレンダリング機構（アニメーション・セレクタ・擬似要素など）を駆使して命令の実行やレジスタ／メモリの状態を再現します。デモサイトも公開されており、表現の限界やブラウザ機能の面白さを学べるプロジェクトです。"><meta name="twitter:image" content="https://github-matome.netlify.app/images/ogp/github-trend-x86css.png"><meta name="twitter:site" content="@github_trends"><!-- Additional SEO meta --><meta name="keywords" content="GitHub, トレンド, オープンソース, プログラミング, 技術ブログ, OSS, 開発, テクノロジー"><meta name="author" content="GitHub Trends Matome"><meta name="theme-color" content="#667eea"><!-- Icons --><link rel="icon" type="image/x-icon" href="/icon.ico"><link rel="apple-touch-icon" href="/icon.png"><!-- RSS Feed --><link rel="alternate" type="application/rss+xml" title="GitHub Trends Matome RSS Feed" href="/feed.xml"><!-- Sitemap --><link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap-index.xml"><!-- Generator --><meta name="generator" content="Astro v5.8.0"><!-- Google Site Verification --><meta name="google-site-verification" content="tcI0Y7cBw4URlDPWaZMdp5lNcqzDCSDtAC4EIhvWdLE"><!-- Content Security Policy --><meta http-equiv="Content-Security-Policy" content="
      default-src 'self';
      script-src 'self' 'unsafe-inline' 'unsafe-eval' https://pagead2.googlesyndication.com https://www.google.com https://www.gstatic.com https://www.google-analytics.com https://www.googletagmanager.com https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://ep1.adtrafficquality.google https://ep2.adtrafficquality.google https://*.doubleclick.net https://*.googlesyndication.com https://fundingchoicesmessages.google.com https://googleads.g.doubleclick.net;
      style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
      img-src 'self' data: https: https://*.google.com https://*.googleapis.com https://*.gstatic.com https://*.doubleclick.net https://*.google-analytics.com https://*.googletagmanager.com https://img.shields.io https://ep1.adtrafficquality.google https://ep2.adtrafficquality.google https://*.googlesyndication.com;
      font-src 'self' https://fonts.gstatic.com;
      frame-src 'self' https://googleads.g.doubleclick.net https://www.google.com/recaptcha/ https://recaptcha.google.com/recaptcha/ https://ep1.adtrafficquality.google https://ep2.adtrafficquality.google https://*.doubleclick.net https://*.googlesyndication.com https://fundingchoicesmessages.google.com;
      fenced-frame-src *;
      connect-src 'self' https://*.google.com https://*.googleapis.com https://*.gstatic.com https://*.doubleclick.net https://*.google-analytics.com https://*.googletagmanager.com https://ep1.adtrafficquality.google https://ep2.adtrafficquality.google https://*.googlesyndication.com;
      object-src 'none';
      base-uri 'self';
      form-action 'self';
      upgrade-insecure-requests;
    "><!-- Preconnect for performance --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&display=swap" rel="stylesheet"><!-- Slot for additional head content --><meta property="og:title" content="x86CSS — CSSだけで動くx86エミュレータ"><meta property="og:description" content="x86CSSは、JavaScriptを一切使わずに「CSSだけ」で8086系の機械語（ネイティブx86バイナリ）を実行するという実験的プロジェクトです。GCCでコンパイルしたCプログラムを8086マシンコードにした上で、compile_c.pyなどのツールでそのバイナリを大量のCSSルールとHTML構造へ変換し、ブラウザのCSSレンダリング機構（アニメーション・セレクタ・擬似要素など）を駆使して命令の実行やレジスタ／メモリの状態を再現します。デモサイトも公開されており、表現の限界やブラウザ機能の面白さを学べるプロジェクトです。"><meta property="og:type" content="article"><meta property="og:url" content="https://github-matome.netlify.app/articles/github-trend-x86css"><meta property="og:image" content="https://github-matome.netlify.app/images/ogp/github-trend-x86css.png"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json">{JSON.stringify(breadcrumbJsonLd)}</script><!-- Google AdSense --><meta name="google-adsense-account" content="ca-pub-5738402533793947"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5738402533793947" crossorigin="anonymous"></script><!-- Google Analytics --><!-- Google Consent Mode --><script>
  // Consent Mode設定（デフォルトは拒否状態）
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  
  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
  });
  
  // 注意: Cookie同意管理はCookieConsent.astroで処理
  // 初期設定は拒否状態、同意後にCookieConsentコンポーネントが更新
</script> <!-- Google tag (gtag.js) --><script async src="https://www.googletagmanager.com/gtag/js?id=G-HH6STHXMN6"></script> <script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-HH6STHXMN6', {
    // ドメイン設定
    'cookie_domain': 'github-matome.netlify.app',
    'send_page_view': true,
    // クロスドメイン測定
    'linker': {
      'domains': ['github-matome.netlify.app', 'netlify.app']
    },
    // パフォーマンス設定
    'page_title': document.title,
    'page_location': window.location.href,
    // カスタムパラメータ
    'custom_map': {
      'custom_parameter_1': 'site_type'
    },
    'site_type': 'github_trends'
  });

  // 手動ページビュー送信（確実性向上）
  gtag('event', 'page_view', {
    'page_title': document.title,
    'page_location': window.location.href,
    'page_path': window.location.pathname
  });
</script><link rel="stylesheet" href="/assets/about.DIe75Ezi.css">
<link rel="stylesheet" href="/assets/about.CSVu_tdJ.css">
<style>.ads-container[data-astro-cid-z4sygbdc]{margin:2rem 0;display:none;justify-content:center;align-items:center;width:100%;max-width:100%;overflow:hidden}.ads-container[data-astro-cid-z4sygbdc].loaded{display:flex}.codefund-container[data-astro-cid-ks44opzc]{margin:2rem 0;display:flex;justify-content:center;align-items:center;width:100%;max-width:100%;overflow:hidden}.prose[data-astro-cid-xw3clhsd]{max-width:65ch;margin:0 auto}.prose[data-astro-cid-xw3clhsd] h1{font-size:2.25rem;line-height:2.5rem;margin-top:2rem;margin-bottom:2rem}.prose[data-astro-cid-xw3clhsd] h2{font-size:1.875rem;line-height:2.25rem;margin-top:1.5rem;margin-bottom:1.5rem}.prose[data-astro-cid-xw3clhsd] h3{font-size:1.5rem;line-height:2rem;margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] p{margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] ul{list-style-type:disc;margin-top:1.25rem;margin-bottom:1.25rem;padding-left:1.5rem}.prose[data-astro-cid-xw3clhsd] ol{list-style-type:decimal;margin-top:1.25rem;margin-bottom:1.25rem;padding-left:1.5rem}.prose[data-astro-cid-xw3clhsd] blockquote{border-left:4px solid #e5e7eb;padding-left:1rem;font-style:italic;margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] code{background-color:#f3f4f6;padding:.2rem .4rem;border-radius:.25rem;font-size:.875rem}.prose[data-astro-cid-xw3clhsd] pre{background-color:#1f2937;color:#f3f4f6;padding:1rem;border-radius:.5rem;overflow-x:auto;margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] img{max-width:100%;height:auto;margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] table{width:100%;border-collapse:collapse;margin-top:1.25rem;margin-bottom:1.25rem}.prose[data-astro-cid-xw3clhsd] th,.prose[data-astro-cid-xw3clhsd] td{border:1px solid #e5e7eb;padding:.5rem}.prose[data-astro-cid-xw3clhsd] th{background-color:#f3f4f6}
</style></head> <body class="min-h-screen flex flex-col"> <header class="bg-[var(--header-bg)] shadow-sm sticky top-0 z-40"> <div class="container mx-auto px-4 py-4"> <nav class="flex justify-between items-center"> <a href="/" class="text-2xl font-bold text-[var(--link-color)] hover:opacity-80 transition-opacity">GitHubトレンドまとめ</a> <!-- デスクトップメニュー --> <div class="desktop-menu flex gap-2 items-center"> <a href="/" class="header-link">トップ</a> <div class="relative group"> <a href="/category/" class="header-link flex items-center gap-1">
カテゴリー
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> </svg> </a> <div class="absolute left-0 mt-2 w-56 dropdown-menu opacity-0 group-hover:opacity-100 pointer-events-none group-hover:pointer-events-auto transition-all duration-200"> <ul> <li><a href="/category/ai-ml/" class="dropdown-item">AI/ML</a></li> <li><a href="/category/web/" class="dropdown-item">Web</a></li> <li><a href="/category/mobile/" class="dropdown-item">Mobile</a></li> <li><a href="/category/devops/" class="dropdown-item">DevOps</a></li> <li><a href="/category/security/" class="dropdown-item">Security</a></li> <li><a href="/category/data/" class="dropdown-item">Data</a></li> <li><a href="/category/tool/" class="dropdown-item">Tool</a></li> <li><a href="/category/library/" class="dropdown-item">Library</a></li> <li><a href="/category/other/" class="dropdown-item">Other</a></li> </ul> </div> </div> <a href="https://github.com/trending" target="_blank" rel="noopener noreferrer" class="header-link">GitHubトレンド</a> <a href="/contact/" class="header-link">お問い合わせ</a> <button id="themeToggle" class="theme-toggle" aria-label="テーマ切り替え"> <svg class="sun-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path> </svg> <svg class="moon-icon hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path> </svg> </button> </div> <!-- スマホメニュー --> <div class="mobile-menu"> <button id="menuButton" class="mobile-menu-button"> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path> </svg> </button> <div id="mobileMenuOverlay" class="mobile-menu-overlay"></div> <div id="mobileMenuContent" class="mobile-menu-content"> <div class="mobile-menu-header"> <span class="mobile-menu-title">メニュー</span> <button id="closeButton" class="mobile-menu-close" aria-label="メニューを閉じる"> <svg fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path> </svg> </button> </div> <div class="mobile-menu-items"> <a href="/" class="mobile-menu-item">トップ</a> <div class="mobile-menu-category"> <div id="categoryButton" class="mobile-menu-category-header"> <span>カテゴリー</span> <svg class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> </svg> </div> <div id="mobileCategoryMenu" class="mobile-menu-category-content"> <a href="/category/ai-ml/" class="mobile-menu-category-item">AI/ML</a> <a href="/category/web/" class="mobile-menu-category-item">Web</a> <a href="/category/mobile/" class="mobile-menu-category-item">Mobile</a> <a href="/category/devops/" class="mobile-menu-category-item">DevOps</a> <a href="/category/security/" class="mobile-menu-category-item">Security</a> <a href="/category/data/" class="mobile-menu-category-item">Data</a> <a href="/category/tool/" class="mobile-menu-category-item">Tool</a> <a href="/category/library/" class="mobile-menu-category-item">Library</a> <a href="/category/other/" class="mobile-menu-category-item">Other</a> </div> </div> <a href="https://github.com/trending" target="_blank" rel="noopener noreferrer" class="mobile-menu-item">GitHubトレンド</a> <a href="/contact/" class="mobile-menu-item">お問い合わせ</a> <button id="mobileThemeToggle" class="mobile-menu-item w-full text-left" aria-label="テーマ切り替え"> <div class="flex items-center justify-between"> <span>テーマ切り替え</span> <svg class="sun-icon w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path> </svg> <svg class="moon-icon hidden w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path> </svg> </div> </button> </div> </div> </div> </nav> </div> </header> <main class="flex-grow py-8">        <main class="container mx-auto px-4 py-8" data-astro-cid-xw3clhsd> <article class="max-w-4xl mx-auto" data-astro-cid-xw3clhsd> <header class="mb-8" data-astro-cid-xw3clhsd> <h1 class="text-4xl font-bold mb-4" data-astro-cid-xw3clhsd>x86CSS — CSSだけで動くx86エミュレータ</h1> <div class="flex items-center gap-4 text-gray-600 dark:text-gray-400" data-astro-cid-xw3clhsd> <time datetime="2026-02-24" data-astro-cid-xw3clhsd>2026/2/24</time> <span class="px-2 py-1 bg-gray-100 dark:bg-gray-800 rounded" data-astro-cid-xw3clhsd>Web</span> </div> </header> <!-- GitHubリポジトリのOGPカード --> <div class="mb-8 -mx-4 md:mx-0" data-astro-cid-xw3clhsd> <a href="https://github.com/rebane2001/x86CSS" target="_blank" rel="noopener noreferrer" class="block my-4 no-underline"> <div class="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden hover:shadow-lg transition-shadow duration-200"> <div class="flex flex-col md:flex-row"> <div class="md:w-1/3 bg-gray-100 dark:bg-gray-800 min-h-[200px] relative"> <img src="https://avatars.githubusercontent.com/u/6316541?v=4" alt="x86CSS — CSSだけで動くx86エミュレータ" class="w-full h-full object-cover absolute inset-0" loading="lazy" onerror="this.onerror=null; this.src='/images/github-ogp.png';" crossorigin="anonymous"> </div> <div class="p-4 md:w-2/3"> <h3 class="text-lg font-semibold mb-2 text-gray-900 dark:text-gray-100">x86CSS — CSSだけで動くx86エミュレータ</h3> <p class="text-gray-600 dark:text-gray-400 text-sm mb-2">x86CSSは、JavaScriptを一切使わずに「CSSだけ」で8086系の機械語（ネイティブx86バイナリ）を実行するという実験的プロジェクトです。GCCでコンパイルしたCプログラムを8086マシンコードにした上で、compile_c.pyなどのツールでそのバイナリを大量のCSSルールとHTML構造へ変換し、ブラウザのCSSレンダリング機構（アニメーション・セレクタ・擬似要素など）を駆使して命令の実行やレジスタ／メモリの状態を再現します。デモサイトも公開されており、表現の限界やブラウザ機能の面白さを学べるプロジェクトです。</p> <p class="text-gray-500 dark:text-gray-500 text-xs truncate">https://github.com/rebane2001/x86CSS</p> </div> </div> </div> </a> </div> <!-- 記事上部広告 --> <div class="ads-container" data-ad-position="header" data-ad-size="large" data-lazy-load="false" data-cache-time="1800000" data-astro-cid-z4sygbdc><ins class="adsbygoogle" style="display:block; width: 100%;" data-ad-client="ca-pub-5738402533793947" data-ad-slot="8888222262" data-ad-format="auto" data-full-width-responsive="true" data-astro-cid-z4sygbdc></ins></div><script type="module" src="/assets/GoogleAdsense.astro_astro_type_script_index_0_lang.VUqcu3Pn.js"></script> <!-- CodeFund広告（記事上部） --> <div id="codefund" class="codefund-container" data-position="header" data-lazy-load="false" data-cache-time="3600000" style="min-width:300px;min-height:250px;" data-astro-cid-ks44opzc> <script src="https://codefund.app/properties/YOUR_PROPERTY_ID/funder.js" async data-cfasync="false"></script> </div> <script type="module" src="/assets/CodeFund.astro_astro_type_script_index_0_lang.oXBmRrri.js"></script>  <div class="prose dark:prose-invert max-w-none" data-astro-cid-xw3clhsd> <h2 id="概要">概要</h2>
<p>x86CSSは「CSSのみ」で動作するx86（8086相当）エミュレータ／コンピュータを実現した実験リポジトリです。GCCでコンパイルしたCプログラムを8086マシンコードへ変換し、そのバイナリをCSSルールとHTMLに置き換えることで、ブラウザ上で命令フェッチ・実行・メモリ更新・レジスタ表示といった動作をCSSのレンダリング機構だけで再現します。JavaScriptを使わずに「スタイルシートでプログラムを動かす」こと自体が狙いで、視覚的デモと教育的価値があります。ライブデモは公開されており、ソースを変換するツールやサンプルCコードも収録されています。</p>
<p><a href="https://github.com/rebane2001/x86CSS"><img src="https://img.shields.io/badge/GitHub-x86CSS-181717?style=for-the-badge&#x26;logo=github&#x26;logoColor=white" alt="GitHub"></a></p>
<h2 id="リポジトリの統計情報">リポジトリの統計情報</h2>
<ul>
<li>スター数: 55</li>
<li>フォーク数: 1</li>
<li>ウォッチャー数: 55</li>
<li>コミット数: 5</li>
<li>ファイル数: 12</li>
<li>メインの言語: HTML</li>
</ul>
<h2 id="主な特徴">主な特徴</h2>
<ul>
<li>CSSだけで8086の機械語を「実行」する独創的なエミュレーション実験</li>
<li>GCCでコンパイルしたCプログラムを入力に、バイナリ→CSSへ変換するツールを同梱</li>
<li>ブラウザのCSS機能（アニメーションや擬似要素など）を活用した非伝統的な実装</li>
<li>ライブデモ公開で視覚的に動作確認が可能</li>
</ul>
<h2 id="技術的なポイント">技術的なポイント</h2>
<p>x86CSSの本質は「状態（レジスタ・メモリ・フラグ）と制御（命令のステップ）を、ブラウザのCSS表現で表す」ことにあります。READMEが示す通り、実際の8086マシンコードを用いており、リポジトリにはその変換に使うスクリプト（compile_c.py）やテンプレート（base_template.html）、サンプルCソースが含まれています。</p>
<p>実現手法として考えられる主要アプローチは次の通りです（実装詳細はソースを参照してください）：</p>
<ul>
<li>バイナリの各バイトや命令ごとにHTML要素・CSSセレクタを生成し、該当命令に応じて擬似要素の表示やスタイル変更で「動作」を表す。</li>
<li>CSSアニメーションやanimation-delayをクロックやステップ制御に流用し、連続した状態変化（フェッチ→デコード→実行）を時間的に表現する。</li>
<li>CSSの擬似要素（::before/::after）やcontentプロパティ、カウンタ（counter）を使って数値表示やビット列表示を作ることで、レジスタ値やメモリダンプを可視化する。</li>
<li>属性セレクタや大量のルールで状態マッチングを実現し、compile_c.pyはバイナリをこれらのルール群に変換してHTML/CSSを生成する役割を担う。</li>
<li>JavaScriptを使わないため、インタラクションはアンカー(:target)やチェックボックスハック(:checked)、もしくはアニメーションの自動進行を用いて行う可能性が高い（実装により手法は異なる）。</li>
</ul>
<p>こうした手法は「CSSの本来想定されていない用途」への応用であり、利点としては「ブラウザの標準機能だけで表現できる面白さ」と「教育的インパクト」が挙げられます。一方で課題も明確で、生成されるCSS/HTMLのサイズ爆発、パフォーマンス制約、ブラウザ互換性、動的入力の難しさ（外部データやユーザーイベントの処理）などは避けられません。とはいえ、compile_c.pyやテンプレートの存在により、C→バイナリ→CSSという変換パイプラインが用意されており、実際のコンパイラ出力を素材に実験できる点は貴重です。</p>
<h2 id="プロジェクトの構成">プロジェクトの構成</h2>
<p>主要なファイルとディレクトリ：</p>
<ul>
<li>.gitignore: file</li>
<li>README.md: file</li>
<li>base_template.html: file</li>
<li>c: dir</li>
<li>compile_c.py: file</li>
</ul>
<p>…他 7 ファイル</p>
<p>（注）c ディレクトリにはサンプルCソースやコンパイル対象が入っており、compile_c.pyはそれらのコンパイル結果（バイナリ）をCSS/HTMLへ変換するためのユーティリティです。base_template.htmlは生成されたスタイルと要素を埋め込むための土台を提供します。</p>
<h2 id="まとめ">まとめ</h2>
<p>CSSの表現力を極限まで利用した教育的かつ挑戦的な実験プロジェクトです（約50字）。</p>
<p>リポジトリ情報：</p>
<ul>
<li>名前: x86CSS</li>
<li>説明: x86CSS is a working CSS-only x86 CPU/emulator/computer. No JavaScript required.</li>
<li>スター数: 55</li>
<li>言語: HTML</li>
<li>URL: <a href="https://github.com/rebane2001/x86CSS">https://github.com/rebane2001/x86CSS</a></li>
<li>オーナー: rebane2001</li>
<li>アバター: <a href="https://avatars.githubusercontent.com/u/6316541?v=4">https://avatars.githubusercontent.com/u/6316541?v=4</a></li>
</ul>
<p>READMEの抜粋：</p>
<h1 id="x86css">x86CSS</h1>
<p><strong>Check out the live website <a href="https://lyra.horse/x86css">here</a>.</strong></p>
<p><strong>x86CSS</strong> is a working CSS-only x86 CPU/emulator/computer. Yes, the <em>Cascading Style Sheets</em> CSS. No JavaScript required.</p>
<p>What you’re seeing above is a <a href="#">C program</a> that was compiled using <a href="https://en.wikipedia.org/wiki/GNU_Compiler_Collection">GCC</a> into native <a href="https://en.wikipedia.org/wiki/Intel_8086">8086</a> machine code being executed fully within CSS.</p>
<h2 id="frequently-asked-questions">Frequently Asked Questions</h2>
<h3 id="is-css-a-programming-langu">Is CSS a programming langu…</h3> </div> <!-- 記事中部広告 --> <div class="ads-container" data-ad-position="content" data-ad-size="large" data-lazy-load="true" data-cache-time="3600000" data-astro-cid-z4sygbdc><ins class="adsbygoogle" style="display:block; width: 100%;" data-ad-client="ca-pub-5738402533793947" data-ad-slot="2458545283" data-ad-format="fluid" data-full-width-responsive="true" data-astro-cid-z4sygbdc></ins></div> <!-- CodeFund広告（記事中部） --> <div id="codefund" class="codefund-container" data-position="content" data-lazy-load="true" data-cache-time="3600000" style="min-width:300px;min-height:250px;" data-astro-cid-ks44opzc> <script src="https://codefund.app/properties/YOUR_PROPERTY_ID/funder.js" async data-cfasync="false"></script> </div>   <!-- 記事下部広告 --> <div class="ads-container" data-ad-position="footer" data-ad-size="large" data-lazy-load="true" data-cache-time="3600000" data-astro-cid-z4sygbdc><ins class="adsbygoogle" style="display:block; width: 100%;" data-ad-client="ca-pub-5738402533793947" data-ad-slot="7371126469" data-ad-format="auto" data-full-width-responsive="true" data-astro-cid-z4sygbdc></ins></div> <!-- CodeFund広告（記事下部） --> <div id="codefund" class="codefund-container" data-position="footer" data-lazy-load="true" data-cache-time="3600000" style="min-width:300px;min-height:250px;" data-astro-cid-ks44opzc> <script src="https://codefund.app/properties/YOUR_PROPERTY_ID/funder.js" async data-cfasync="false"></script> </div>   </article> </main>  </main> <div id="cookie-consent-banner" class="cookie-consent-banner" data-astro-cid-garwan2p> <div class="cookie-consent-content" data-astro-cid-garwan2p> <div class="cookie-consent-text" data-astro-cid-garwan2p> <p data-astro-cid-garwan2p>
🍪 このサイトでは、サイト改善とアクセス解析のためにCookieを使用しています。
        引き続きサイトをご利用いただく場合、Cookieの使用に同意したものとみなします。
        詳細は<a href="/privacy/" target="_blank" data-astro-cid-garwan2p>プライバシーポリシー</a>をご確認ください。
</p> </div> <div class="cookie-consent-buttons" data-astro-cid-garwan2p> <button id="cookie-accept" class="cookie-btn cookie-accept" data-astro-cid-garwan2p>同意する</button> <button id="cookie-decline" class="cookie-btn cookie-decline" data-astro-cid-garwan2p>拒否する</button> </div> </div> </div> <script>
  // Cookie同意管理
  (function() {
    const CONSENT_KEY = 'cookie-consent';
    const CONSENT_EXPIRY = 365; // 365日間有効
    
    // Cookieの読み書き
    function setCookie(name, value, days) {
      const expires = new Date();
      expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
      document.cookie = name + '=' + value + ';expires=' + expires.toUTCString() + ';path=/';
    }
    
    function getCookie(name) {
      const nameEQ = name + '=';
      const ca = document.cookie.split(';');
      for(let i = 0; i < ca.length; i++) {
        let c = ca[i];
        while (c.charAt(0) === ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
      }
      return null;
    }
    
    // Consent Mode更新
    function updateConsentMode(analytics, ads) {
      if (typeof gtag !== 'undefined') {
        gtag('consent', 'update', {
          'analytics_storage': analytics ? 'granted' : 'denied',
          'ad_storage': ads ? 'granted' : 'denied',
          'ad_user_data': ads ? 'granted' : 'denied',
          'ad_personalization': ads ? 'granted' : 'denied',
        });
      }
    }
    
    // バナーを隠す
    function hideBanner() {
      const banner = document.getElementById('cookie-consent-banner');
      if (banner) {
        banner.style.display = 'none';
      }
    }
    
    // 同意処理
    function acceptCookies() {
      setCookie(CONSENT_KEY, 'accepted', CONSENT_EXPIRY);
      updateConsentMode(true, true);
      hideBanner();
    }
    
    // 拒否処理
    function declineCookies() {
      setCookie(CONSENT_KEY, 'declined', CONSENT_EXPIRY);
      updateConsentMode(false, false);
      hideBanner();
    }
    
    // 初期化
    function initCookieConsent() {
      const consent = getCookie(CONSENT_KEY);
      
      if (consent === 'accepted') {
        updateConsentMode(true, true);
        hideBanner();
      } else if (consent === 'declined') {
        updateConsentMode(false, false);
        hideBanner();
      } else {
        // 日本のユーザーには自動同意（GDPR適用外）
        if (navigator.language && navigator.language.startsWith('ja')) {
          acceptCookies();
        } else {
          // その他の地域にはバナー表示
          document.getElementById('cookie-consent-banner').style.display = 'block';
        }
      }
    }
    
    // DOMが読み込まれたら初期化
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', initCookieConsent);
    } else {
      initCookieConsent();
    }
    
    // ボタンのイベントリスナー
    document.addEventListener('DOMContentLoaded', function() {
      const acceptBtn = document.getElementById('cookie-accept');
      const declineBtn = document.getElementById('cookie-decline');
      
      if (acceptBtn) {
        acceptBtn.addEventListener('click', acceptCookies);
      }
      
      if (declineBtn) {
        declineBtn.addEventListener('click', declineCookies);
      }
    });
  })();
</script>  <footer class="bg-[var(--footer-bg)] text-[var(--footer-text)] py-8 mt-12"> <div class="container mx-auto px-4"> <div class="grid md:grid-cols-2 gap-8"> <div> <h3 class="text-xl font-bold mb-4">GitHubトレンドリポジトリ</h3> <p class="text-[var(--footer-link)]">注目のオープンソースプロジェクトを自動でまとめて紹介しています。</p> <p class="text-[var(--footer-link)] text-sm mt-2">Powered by Astro & ChatGPT</p> </div> <div> <h3 class="text-xl font-bold mb-4">カテゴリー</h3> <ul class="space-y-2"> <li><a href="/category/ai-ml/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">AI/ML</a></li> <li><a href="/category/web/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Web</a></li> <li><a href="/category/mobile/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Mobile</a></li> <li><a href="/category/devops/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">DevOps</a></li> <li><a href="/category/security/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Security</a></li> <li><a href="/category/data/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Data</a></li> <li><a href="/category/tool/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Tool</a></li> <li><a href="/category/library/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Library</a></li> <li><a href="/category/other/" class="text-[var(--footer-link)] hover:text-[var(--footer-text)] transition-colors">Other</a></li> </ul> </div> </div> <div class="border-t border-[var(--border-color)] mt-8 pt-8 text-center text-[var(--footer-link)]"> <p>&copy; 2026 GitHubトレンドまとめ. All rights reserved.</p> </div> </div> </footer> <script type="module">const r=document.getElementById("themeToggle"),i=document.getElementById("mobileThemeToggle"),u=document.querySelectorAll(".sun-icon"),g=document.querySelectorAll(".moon-icon");function o(e){if(e==="auto"){const t=window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.setAttribute("data-theme",t?"dark":"light"),localStorage.removeItem("theme"),s(t)}else document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e),s(e==="dark")}function s(e){u.forEach(t=>t.classList.toggle("hidden",e)),g.forEach(t=>t.classList.toggle("hidden",!e))}const l=localStorage.getItem("theme");o(l||"auto");const h=window.matchMedia("(prefers-color-scheme: dark)");h.addEventListener("change",e=>{localStorage.getItem("theme")||o("auto")});r?.addEventListener("click",()=>{const e=document.documentElement.getAttribute("data-theme");o(e==="dark"?"light":"dark")});i?.addEventListener("click",()=>{const e=document.documentElement.getAttribute("data-theme");o(e==="dark"?"light":"dark")});const y=document.getElementById("menuButton"),E=document.getElementById("closeButton"),m=document.getElementById("mobileMenuContent"),d=document.getElementById("mobileMenuOverlay"),n=document.getElementById("categoryButton"),c=document.getElementById("mobileCategoryMenu");function v(){m?.classList.add("open"),d?.classList.add("open"),document.body.style.overflow="hidden"}function a(){m?.classList.remove("open"),d?.classList.remove("open"),document.body.style.overflow=""}y?.addEventListener("click",v);E?.addEventListener("click",a);d?.addEventListener("click",a);n?.addEventListener("click",()=>{c?.classList.toggle("hidden"),n.querySelector("svg")?.classList.toggle("rotate-180")});if(c){c.classList.remove("hidden");const e=n?.querySelector("svg");e&&e.classList.add("rotate-180")}</script> </body> </html> <script type="module">function n(e,o){let t=localStorage.getItem(`abtest_${e}`);return t||(t=o[Math.floor(Math.random()*o.length)],localStorage.setItem(`abtest_${e}`,t)),t}function d(e,o){typeof gtag<"u"&&gtag("event","ab_test_view",{event_category:"A/B Test",event_label:`${e}: ${o}`})}document.addEventListener("DOMContentLoaded",()=>{const e=n("ad-size",["large","small"]);d("ad-size",e);const o=n("ad-position",["header","content","footer"]);d("ad-position",o),document.querySelectorAll("[data-ad-position]").forEach(t=>{const s=t.getAttribute("data-ad-position"),a=t.querySelector(".adsbygoogle");a&&(s===o?(t.style.display="flex",a.setAttribute("data-ad-size",e),(window.adsbygoogle=window.adsbygoogle||[]).push({})):t.style.display="none")})});</script> 