commit 889da18
2026-11-12 15:08:07 +0900

トップ：ロボットに関わる人への節を足し、事業所についてに仕事の進め方（立ち位置の1文と考え方3つ）を足した

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LevEXUNCxhaiqKmAnsEaNK


diff --git a/src/pages/index.astro b/src/pages/index.astro
index 391fe9b..508da77 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -38,6 +38,35 @@ const series = [
   { href: '/series4', img: '/site/series4-behind-the-solo-lab-door.png', en: 'Behind the Solo Lab', ja: 'ひとり研究所の裏側', desc: 'フィジカルAIの研究をひとりで続けるために、AIと一緒に作ってきた仕組みの記録。サイト、動画、記録の整理など、研究の外側の作業をどう回しているかを残しています。' },
 ];
 const records = await allCards();
+// ロボットに関わる人へ・事業所についての仕事の進め方（2026-11-12 エイイチが B 案に決定）。裏づけは公開済みの記録
+const byLog = (n: number) => records.find((c) => c.day === `LOG${n}`)!;
+const shortTitle = (n: number) => byLog(n).title.replace(/^.*?\| /, '').replace(/ ― .*$/, '');
+const SOLVE = [
+  { who: 'ロボット会社の導入・営業の人へ',
+    pain: '導入先ごとに条件が違い、見積もりと段取りが毎回手作業になる',
+    make: '店や病院の形と運び方を入れると、台数・待ち時間・詰まる場所が出る導入前の試算。Unity で動きを見せる再現。導入先が変わっても使える手順の型。',
+    logs: [477, 485] },
+  { who: 'ロボットを入れる店や病院へ',
+    pain: 'メーカーの説明だけでは、自分の現場で回るかが分からない',
+    make: 'メーカーに寄らない立場での、入れる前の確かめ。通る道、待たせる場所、人の手が要る回数を、入れる前に数字で出します。',
+    logs: [404, 389] },
+  { who: 'ロボットに AI で動きを覚えさせる人へ',
+    pain: '学習させても、どこで失敗し、人がどれだけ手を出しているかが見えない',
+    make: '失敗した所を人がゲームパッドで直し、そのまま学習のお手本にする道具。直す時間の計測。借りた GPU で学習を回す手順。',
+    logs: [492, 419] },
+  { who: 'ロボットの横で働く人の画面と手順',
+    pain: 'ロボットが止まったとき、現場の人がどうすればいいか分からない',
+    make: '止まった理由と次にやることが分かる画面と手順。現場の人に伝えるための説明の絵や動画も作ります。',
+    logs: [439, 389] },
+];
+const WAYS = [
+  { h: 'ロボットより、現場に入れる手間を見る',
+    t: 'ロボットそのものは、大手とAIがこれからどんどん安く強くしていきます。それでも、現場ごとに違う導入の手間は残ります。その手間を、決まった見積もりと手順に変えるのが私の立ち位置です。', log: 481 },
+  { h: '入れる前に、現場ごと再現して数える',
+    t: '配膳ロボットならファミレスの店を、搬送ロボットなら病院のフロアを、人の動きごと Unity で再現します。どこで詰まるかを数えてから決めます。速さを上げるより通る道を変えたほうが効く、という答えも、導入の前に出せます。', log: 477 },
+  { h: '測ってから、縮める先を決める',
+    t: '実機のアームでは、AIの失敗を人が直す時間まで測りました。キーボードで直すと1回43.2秒、ゲームパッドに替えると14.5秒。どこに時間がかかっているかを数字にしてから、手を打ちます。', log: 492 },
+];
 // 立ち位置の1文（2026-11-08 エイイチが決定）。タイトル・説明文・AI 向けの案内（src/lib/llmsGuide.ts の GUIDE_LEAD）とそろえる
 const LINE = '現場で人が受け入れて、使い続けられるロボットを';
 const DESC = `${LINE}。そのために、サービスロボットを店に入れる前に何が起きるかを試算と3D（Unity）で確かめ、机の上のロボットアームにお手本から動きを覚えさせています。前提・結果・コードはすべて公開。29年のデザイナー経験をもつ島津 栄一（ADAPT DESIGN）の研究記録です。`;
@@ -128,6 +157,25 @@ const jsonLd = [
     <div class="embed-banner"><iframe src="/embeds/top-banner.html" sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation" title="お知らせ" data-embed style="height:240px"></iframe></div>
   </div></section>
 
+  <!-- ロボットに関わる人へ（2026-11-12）。相手ごとに、困りごと → 作れるもの → 裏づけの記録。
+       MASTER：トップに相談の窓口は出さないため、ボタンは置かない -->
+  <section class="sec" id="for-robotics"><div class="panel">
+    <h2 class="sec-h">ロボットに関わる人へ | For Robotics Teams</h2>
+    <p class="sv-lead">ロボットを作る人、売る人、入れる人、横で働く人。それぞれの困りごとに、これまでの記録から作れるものです。</p>
+    <div class="sv-grid">
+      {SOLVE.map((s) => (
+        <div class="sv">
+          <p class="sv-who">{s.who}</p>
+          <p class="sv-pain">{s.pain}</p>
+          <div class="sv-make"><span class="sv-tag">作れるもの</span><p>{s.make}</p></div>
+          <div class="sv-links">{s.logs.map((n) => (
+            <a href={`/record/${byLog(n).slug}`}><span class="sv-log">LOG{n}</span>{shortTitle(n)}<i class="ms" aria-hidden="true">arrow_forward</i></a>
+          ))}</div>
+        </div>
+      ))}
+    </div>
+  </div></section>
+
   <section class="sec" id="about"><div class="panel">
     <h2 class="sec-h">事業所について | Sole Prop</h2>
     <div class="prop">
@@ -139,6 +187,19 @@ const jsonLd = [
       <div class="prop-body">
         <p class="prop-lead">画面（Pixels）のデザインから、動き（Motors）のデザインへ</p>
         <p class="prop-text">フィジカルAIの技術で作られたロボットが、現場で使い続けられるためのサービスやプロダクトをつくる。そのための研究所を目指しています。<br><br>29年にわたるデザイナーとしての知見を土台に、人とロボットの関わり（HRI）と、ロボットが学習できる環境づくりに取り組むデザイン事務所です。Unityでのシミュレーション、実機のロボットアーム、借りたGPUでの学習・推論までを自分の手で回し、AIエージェント（Claude Code）を設計と実装の相棒にしています。基準は物理精度ではなく体験の成立。画面上の「Pixels（デジタル）」の設計を、現実の「Motors（モーター）」へ——その過程を公開しています。</p>
+        <!-- 仕事の進め方（2026-11-12）。立ち位置の1文を黒い面に、その下に考え方3つ -->
+        <div class="ways">
+          <p class="ways-stance">現場ごとに違う導入の手間を、<br>決まった見積もりと手順に変える。</p>
+          <div class="ways-cols">
+            {WAYS.map((w) => (
+              <div class="way">
+                <p class="way-h">{w.h}</p>
+                <p class="way-t">{w.t}</p>
+                <a class="way-link" href={`/record/${byLog(w.log).slug}`}>LOG{w.log} を読む<i class="ms" aria-hidden="true">arrow_forward</i></a>
+              </div>
+            ))}
+          </div>
+        </div>
         <dl class="prop-facts">
           <div><dt>事業所名</dt><dd>ADAPT DESIGN</dd></div>
           <div><dt>設立</dt><dd>2021年10月</dd></div>
@@ -202,12 +263,36 @@ const jsonLd = [
   .prop-facts { margin: 8px 0 0; display: flex; flex-wrap: wrap; gap: 16px 40px; }
   .prop-facts dt { font: 300 12px/15.6px var(--sans); color: #888; }
   .prop-facts dd { margin: 4px 0 0; font: 400 14px/1.5 var(--sans); }
+  /* 仕事の進め方：黒い面に立ち位置の1文、その下に考え方3つ */
+  .ways { margin-top: 12px; border-radius: 8px; overflow: hidden; }
+  .ways-stance { margin: 0; padding: 32px; background: var(--ink); color: #fff; font: 600 26px/1.5 var(--sans); }
+  .ways-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); background: #f7f7f7; }
+  .way { padding: 24px; display: flex; flex-direction: column; gap: 8px; }
+  .way + .way { box-shadow: inset 1px 0 0 #e6e6e6; }
+  .way-h { margin: 0; font: 600 16px/1.5 var(--sans); }
+  .way-t { margin: 0; font: 400 13px/1.7 var(--sans); color: #333; flex: 1; }
+  .way-link { color: var(--ink); font: 500 14px/1.5 var(--sans); }
+  .way-link .ms, .sv-links .ms { vertical-align: -3px; margin-left: 4px; }
+  /* ロボットに関わる人へ：2×2。困りごとを見出しに、作れるものを白い面に */
+  .sv-lead { margin: -16px 0 24px; font: 400 14px/1.7 var(--sans); color: #333; }
+  .sv-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
+  .sv { display: flex; flex-direction: column; gap: 12px; padding: 28px; background: #f7f7f7; border-radius: 8px; }
+  .sv-who { margin: 0; font: 500 13px/1.4 var(--sans); color: #666; }
+  .sv-pain { margin: 0; font: 600 20px/1.5 var(--sans); }
+  .sv-make { padding: 16px 20px; background: #fff; border-radius: 8px; flex: 1; }
+  .sv-make p { margin: 6px 0 0; font: 400 14px/1.7 var(--sans); color: #333; }
+  .sv-tag { font: 600 12px/1 var(--sans); }
+  .sv-links { display: flex; flex-direction: column; gap: 6px; }
+  .sv-links a { color: var(--ink); font: 500 14px/1.5 var(--sans); text-decoration: underline; text-underline-offset: 3px; }
+  .sv-log { display: inline-block; margin-right: 8px; font: 600 13px/1 Inter, sans-serif; }
   .sns { display: flex; gap: 12px; }
   .sns a { display: inline-flex; color: #242424; }
   .sns a :global(svg) { height: 18px; width: auto; display: block; }
   .sns a:hover { color: #666; }
 
   @media (max-width: 1023px) {
+    .ways-cols, .sv-grid { grid-template-columns: 1fr; }
+    .way + .way { box-shadow: inset 0 1px 0 #e6e6e6; }
     .hero-wrap { padding: 0 24px; }
     .hero { padding: 96px 0 32px; gap: 32px; }
     .hero-head { flex-direction: column; align-items: flex-start; gap: 20px; }
@@ -227,6 +312,10 @@ const jsonLd = [
     .grid2 { grid-template-columns: 1fr; gap: 24px; }
     .grid4 { gap: 16px; }
     .prop { flex-direction: column; align-items: center; gap: 24px; }
+    .ways-stance { padding: 24px; font-size: 20px; }
+    .ways-stance br { display: none; }
+    .sv { padding: 20px; }
+    .sv-pain { font-size: 18px; }
   }
   .guide-wrap { max-width: 1280px; margin: 0 auto; }
 </style>

