PageSourceSearch

https://www.eisbahn.jp/yoichiro/about/

html eisbahn.jp collected 2026-10-01 13:04:27 UTC 15,618 bytes, 129 lines download raw bytes

1<!DOCTYPE html><html lang="ja" data-astro-cid-37fxchfa> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>About | 天使やカイザーと呼ばれて | 天使やカイザーと呼ばれて</title><meta name="description" content="Yoichiro Tanaka のプロフィール、書籍、Lunakey、サポート方法をまとめたページ。"><link rel="alternate" type="application/rss+xml" title="天使やカイザーと呼ばれて" href="/yoichiro/feed.xml"><link rel="icon" href="/yoichiro/images/favicon.ico">
1<script>
2      (function () {
3        try {
4          var stored = localStorage.getItem('theme');
5        } catch (_) { var stored = null; }
6        var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
7        var theme = (stored === 'light' || stored === 'dark')
8          ? stored
9          : (prefersDark ? 'dark' : 'light');
10        document.documentElement.dataset.theme = theme;
11      })();
12    </script>
vendor: 63 bytes, line 12
12<script async src="https://www.googletagmanager.com/gtag/js?id=
12G-2VJSBFQ6TS
vendor: 11 bytes, line 12
12"></script>
12<script>
13      
vendor: 145 bytes, lines 13-16
13window.dataLayer = window.dataLayer || [];
14      function gtag(){dataLayer.push(arguments);}
15      gtag('js', new Date());
16      gtag('config', '
16G-2VJSBFQ6TS
vendor: 8 bytes, lines 16-17
16');
17    
17</script>
17<link rel="stylesheet" href="/yoichiro/_astro/index.B4ZUFRWN.css">
18<style>article[data-astro-cid-fwdcsva6]{max-width:100%}h2[data-astro-cid-fwdcsva6]{margin-top:2em}img[data-astro-cid-fwdcsva6]{max-width:100%;height:auto;border-radius:4px}.profile-header[data-astro-cid-fwdcsva6]{display:flex;gap:20px;align-items:flex-start}.profile-header[data-astro-cid-fwdcsva6]>div[data-astro-cid-fwdcsva6]{flex:1;min-width:0}.profile-header[data-astro-cid-fwdcsva6]>div[data-astro-cid-fwdcsva6]>p[data-astro-cid-fwdcsva6]:first-child{margin-top:0}.profile-avatar[data-astro-cid-fwdcsva6]{width:120px;height:120px;border-radius:50%;object-fit:cover;flex-shrink:0}@media(max-width:480px){.profile-header[data-astro-cid-fwdcsva6]{flex-direction:column;align-items:center;text-align:center}}.books[data-astro-cid-fwdcsva6]{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:24px}.books[data-astro-cid-fwdcsva6] li[data-astro-cid-fwdcsva6]{margin:0}.books[data-astro-cid-fwdcsva6] a[data-astro-cid-fwdcsva6]{display:flex;flex-direction:column;align-items:center;gap:8px;width:160px;text-decoration:none;color:inherit}.books[data-astro-cid-fwdcsva6] img[data-astro-cid-fwdcsva6]{width:160px;height:auto;box-shadow:0 2px 8px #00000026;transition:transform .2s ease}@media(hover:hover){.books[data-astro-cid-fwdcsva6] a[data-astro-cid-fwdcsva6]:hover img[data-astro-cid-fwdcsva6]{transform:translateY(-2px)}.books[data-astro-cid-fwdcsva6] a[data-astro-cid-fwdcsva6]:hover span[data-astro-cid-fwdcsva6]{color:var(--accent)}}.books[data-astro-cid-fwdcsva6] span[data-astro-cid-fwdcsva6]{font-size:13px;text-align:center;line-height:1.4}
19</style></head> <body data-astro-cid-37fxchfa> <a href="#main" class="skip-link" data-astro-cid-37fxchfa>本文へスキップ</a> <header class="mobile-header" data-astro-cid-qlfjksao> <div class="header-inner" data-astro-cid-qlfjksao> <a href="/yoichiro/" class="brand" data-astro-cid-qlfjksao> <span class="sprout-icon" aria-hidden="true" data-astro-cid-qlfjksao>🌱</span> <span class="site-name" data-astro-cid-qlfjksao>天使やカイザーと呼ばれて</span> </a> <nav class="nav-links" aria-label="モバイルナビゲーション" data-astro-cid-qlfjksao> <a href="/yoichiro/archives/" data-astro-cid-qlfjksao>年別</a> <a href="/yoichiro/search/" data-astro-cid-qlfjksao>検索</a> <a href="/yoichiro/about/" class="active" data-astro-cid-qlfjksao>About</a> <button type="button" class="theme-toggle" aria-label="テーマを切り替え" title="テーマを切り替え" data-astro-cid-efubawbo> <svg class="icon-sun" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-efubawbo> <circle cx="12" cy="12" r="5" data-astro-cid-efubawbo></circle> <line x1="12" y1="1" x2="12" y2="3" data-astro-cid-efubawbo></line> <line x1="12" y1="21" x2="12" y2="23" data-astro-cid-efubawbo></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" data-astro-cid-efubawbo></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" data-astro-cid-efubawbo></line> <line x1="1" y1="12" x2="3" y2="12" data-astro-cid-efubawbo></line> <line x1="21" y1="12" x2="23" y2="12" data-astro-cid-efubawbo></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" data-astro-cid-efubawbo></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" data-astro-cid-efubawbo></line> </svg> <svg class="icon-moon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-efubawbo> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" data-astro-cid-efubawbo></path> </svg> </button> 
19<script>
20  (function () {
21    function updateAllToggles(theme) {
22      const isDark = theme === 'dark';
23      document.querySelectorAll('.theme-toggle').forEach(function (btn) {
24        btn.setAttribute('aria-label', isDark ? 'ライトモードに切り替え' : 'ダークモードに切り替え');
25        btn.setAttribute('title', isDark ? 'ライトモードに切り替え' : 'ダークモードに切り替え');
26        const sun = btn.querySelector('.icon-sun');
27        const moon = btn.querySelector('.icon-moon');
28        if (sun && moon) {
29          sun.style.display = isDark ? 'block' : 'none';
30          moon.style.display = isDark ? 'none' : 'block';
31        }
32      });
33    }
34
35    const currentTheme = document.documentElement.dataset.theme || 'light';
36    updateAllToggles(currentTheme);
37
38    if (window.__themeToggleListenerAttached) return;
39    window.__themeToggleListenerAttached = true;
40
41    document.addEventListener('click', function (e) {
42      const btn = e.target.closest('.theme-toggle');
43      if (!btn) return;
44      const cur = document.documentElement.dataset.theme || 'light';
45      const next = cur === 'dark' ? 'light' : 'dark';
46
47      const applyTheme = function () {
48        document.documentElement.dataset.theme = next;
49        updateAllToggles(next);
50      };
51
52      const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
53      if (typeof document.startViewTransition === 'function' && !reduced) {
54        document.startViewTransition(applyTheme);
55      } else {
56        applyTheme();
57      }
58
59      try {
60        localStorage.setItem('theme', next);
61      } catch (_) {}
62    });
63  })();
64</script>
64  </nav> </div> </header>  <div class="layout-wrapper" data-astro-cid-37fxchfa> <aside class="sidebar-rail" data-astro-cid-kx45rens> <div class="rail-sticky" data-astro-cid-kx45rens> <div class="rail-brand" data-astro-cid-kx45rens> <a href="/yoichiro/" class="brand-link" data-astro-cid-kx45rens> <div class="logo-circle" aria-hidden="true" data-astro-cid-kx45rens>🌱</div> <div class="site-title" data-astro-cid-kx45rens>天使やカイザーと呼ばれて</div> </a> <div class="tagline-chip" data-astro-cid-kx45rens>Google Tech, Web & Keyboards</div> </div> <nav class="rail-nav" aria-label="メインナビゲーション" data-astro-cid-kx45rens> <a href="/yoichiro/" class="nav-item" data-astro-cid-kx45rens> <span class="nav-label" data-astro-cid-kx45rens>記事一覧</span> </a> <a href="/yoichiro/archives/" class="nav-item" data-astro-cid-kx45rens> <span class="nav-label" data-astro-cid-kx45rens>年別アーカイブ</span> </a> <a href="/yoichiro/search/" class="nav-item" data-astro-cid-kx45rens> <span class="nav-label" data-astro-cid-kx45rens>記事検索</span> </a> <a href="/yoichiro/about/" class="nav-item active" data-astro-cid-kx45rens> <span class="nav-label" data-astro-cid-kx45rens>About</span> </a> </nav> <div class="author-blurb" data-astro-cid-kx45rens> <div class="blurb-title" data-astro-cid-kx45rens>Author</div> <p class="blurb-text" data-astro-cid-kx45rens>Yoichiro Tanaka (田中 洋一郎)</p> <p class="blurb-desc" data-astro-cid-kx45rens>Google 関連技術、Web 標準、自作キーボードなどの開発記録。</p> </div> <div class="rail-footer" data-astro-cid-kx45rens> <button type="button" class="theme-toggle" aria-label="テーマを切り替え" title="テーマを切り替え" data-astro-cid-efubawbo> <svg class="icon-sun" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-efubawbo> <circle cx="12" cy="12" r="5" data-astro-cid-efubawbo></circle> <line x1="12" y1="1" x2="12" y2="3" data-astro-cid-efubawbo></line> <line x1="12" y1="21" x2="12" y2="23" data-astro-cid-efubawbo></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" data-astro-cid-efubawbo></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" data-astro-cid-efubawbo></line> <line x1="1" y1="12" x2="3" y2="12" data-astro-cid-efubawbo></line> <line x1="21" y1="12" x2="23" y2="12" data-astro-cid-efubawbo></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" data-astro-cid-efubawbo></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" data-astro-cid-efubawbo></line> </svg> <svg class="icon-moon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-efubawbo> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" data-astro-cid-efubawbo></path> </svg> </button> 
64<script>
65  (function () {
66    function updateAllToggles(theme) {
67      const isDark = theme === 'dark';
68      document.querySelectorAll('.theme-toggle').forEach(function (btn) {
69        btn.setAttribute('aria-label', isDark ? 'ライトモードに切り替え' : 'ダークモードに切り替え');
70        btn.setAttribute('title', isDark ? 'ライトモードに切り替え' : 'ダークモードに切り替え');
71        const sun = btn.querySelector('.icon-sun');
72        const moon = btn.querySelector('.icon-moon');
73        if (sun && moon) {
74          sun.style.display = isDark ? 'block' : 'none';
75          moon.style.display = isDark ? 'none' : 'block';
76        }
77      });
78    }
79
80    const currentTheme = document.documentElement.dataset.theme || 'light';
81    updateAllToggles(currentTheme);
82
83    if (window.__themeToggleListenerAttached) return;
84    window.__themeToggleListenerAttached = true;
85
86    document.addEventListener('click', function (e) {
87      const btn = e.target.closest('.theme-toggle');
88      if (!btn) return;
89      const cur = document.documentElement.dataset.theme || 'light';
90      const next = cur === 'dark' ? 'light' : 'dark';
91
92      const applyTheme = function () {
93        document.documentElement.dataset.theme = next;
94        updateAllToggles(next);
95      };
96
97      const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
98      if (typeof document.startViewTransition === 'function' && !reduced) {
99        document.startViewTransition(applyTheme);
100      } else {
101        applyTheme();
102      }
103
104      try {
105        localStorage.setItem('theme', next);
106      } catch (_) {}
107    });
108  })();
109</script>
109  <a href="/yoichiro/feed.xml" class="rss-btn" title="RSS Feed" aria-label="RSS Feed" data-astro-cid-kx45rens> <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-kx45rens> <path d="M4 11a9 9 0 0 1 9 9" data-astro-cid-kx45rens></path> <path d="M4 4a16 16 0 0 1 16 16" data-astro-cid-kx45rens></path> <circle cx="5" cy="19" r="1" data-astro-cid-kx45rens></circle> </svg> </a> </div> </div> </aside>  <main id="main" class="main-content" data-astro-cid-37fxchfa> <div class="content-surface" data-astro-cid-37fxchfa>  <article data-astro-cid-fwdcsva6> <h1 data-astro-cid-fwdcsva6>About</h1> <h2 data-astro-cid-fwdcsva6>プロフィール</h2> <div class="profile-header" data-astro-cid-fwdcsva6> <img class="profile-avatar" src="/yoichiro/images/5-vol1-tanaka.jpg" alt="田中 洋一郎" width="120" height="120" loading="lazy" decoding="async" data-astro-cid-fwdcsva6> <div data-astro-cid-fwdcsva6> <p data-astro-cid-fwdcsva6>
110Yoichiro Tanaka (田中 洋一郎)。1975 年生まれ。Google 関連技術 / Web 標準 / 自作キーボードについて書いてます。
111          2005 年からこのブログを続けてます。
112</p> <p data-astro-cid-fwdcsva6> <a href="https://x.com/yoichiro" target="_blank" rel="noopener" data-astro-cid-fwdcsva6>X</a> ·
113<a href="https://github.com/yoichiro" target="_blank" rel="noopener" data-astro-cid-fwdcsva6>GitHub</a> ·
114<a href="https://www.facebook.com/yoichiro6642" target="_blank" rel="noopener" data-astro-cid-fwdcsva6>Facebook</a> </p> <p data-astro-cid-fwdcsva6>
115さらに詳しく:
116<a href="/yoichiro/2005/03/post_11.html" data-astro-cid-fwdcsva6>自己紹介(バイオグラフィ)</a> ·
117<a href="/yoichiro/2005/03/post_12.html" data-astro-cid-fwdcsva6>経歴(ポートフォリオ)</a> </p> </div> </div> <h2 data-astro-cid-fwdcsva6>書籍</h2> <ul class="books" data-astro-cid-fwdcsva6> <li data-astro-cid-fwdcsva6> <a href="https://amzn.to/4edb4D6" target="_blank" rel="noopener" data-astro-cid-fwdcsva6> <img src="/yoichiro/images/engineer_team_productivity.jpg" alt="エンジニアチームの生産性向上" width="160" loading="lazy" decoding="async" data-astro-cid-fwdcsva6> <span data-astro-cid-fwdcsva6>エンジニアチームの生産性向上</span> </a> </li> <li data-astro-cid-fwdcsva6> <a href="https://amzn.to/4fz960L" target="_blank" rel="noopener" data-astro-cid-fwdcsva6> <img src="/yoichiro/images/platform-building-guide.jpg" alt="プラットフォーム構築ガイド" width="160" loading="lazy" decoding="async" data-astro-cid-fwdcsva6> <span data-astro-cid-fwdcsva6>プラットフォーム構築ガイド</span> </a> </li> </ul> <h2 data-astro-cid-fwdcsva6>自作キーボード「Lunakey」シリーズ</h2> <p data-astro-cid-fwdcsva6>
118コンパクトな分割キーボードキット。
119<a href="https://yoichiro.booth.pm/" target="_blank" rel="noopener" data-astro-cid-fwdcsva6>BOOTH ストア</a>
120で発売中。
121</p> <p data-astro-cid-fwdcsva6> <img src="/yoichiro/images/lunakey-mini-200.jpg" alt="Lunakey Mini" width="200" data-astro-cid-fwdcsva6> </p> <h2 data-astro-cid-fwdcsva6>サポート</h2> <p data-astro-cid-fwdcsva6>
122ブログを応援してくださる方は、
123<a href="https://github.com/sponsors/yoichiro" target="_blank" rel="noopener" data-astro-cid-fwdcsva6>GitHub Sponsors</a>
124からご支援いただけます。
125</p> </article>   </div> </main> </div> <footer class="site-footer" data-astro-cid-35ed7um5> <div class="footer-inner" data-astro-cid-35ed7um5> <p class="copyright" data-astro-cid-35ed7um5>
126&copy; 2004–2026 Yoichiro Tanaka. All rights reserved.
127</p> <div class="footer-links" data-astro-cid-35ed7um5> <a href="/yoichiro/feed.xml" class="rss-link" data-astro-cid-35ed7um5> <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-35ed7um5> <path d="M4 11a9 9 0 0 1 9 9" data-astro-cid-35ed7um5></path> <path d="M4 4a16 16 0 0 1 16 16" data-astro-cid-35ed7um5></path> <circle cx="5" cy="19" r="1" data-astro-cid-35ed7um5></circle> </svg>
128RSS Feed
129</a> <a href="/yoichiro/about/" data-astro-cid-35ed7um5>About</a> </div> </div> </footer>   </body> </html>

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.