commit 889da18 2026-11-12 15:08:07 +0900 トップ:ロボットに関わる人への節を足し、事業所についてに仕事の進め方(立ち位置の1文と考え方3つ)を足した Co-Authored-By: Claude Opus 5.5 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 = [
+ +
+

ロボットに関わる人へ | For Robotics Teams

+

ロボットを作る人、売る人、入れる人、横で働く人。それぞれの困りごとに、これまでの記録から作れるものです。

+
+ {SOLVE.map((s) => ( +
+

{s.who}

+

{s.pain}

+
作れるもの

{s.make}

+ +
+ ))} +
+
+

事業所について | Sole Prop

@@ -139,6 +187,19 @@ const jsonLd = [

画面(Pixels)のデザインから、動き(Motors)のデザインへ

フィジカルAIの技術で作られたロボットが、現場で使い続けられるためのサービスやプロダクトをつくる。そのための研究所を目指しています。

29年にわたるデザイナーとしての知見を土台に、人とロボットの関わり(HRI)と、ロボットが学習できる環境づくりに取り組むデザイン事務所です。Unityでのシミュレーション、実機のロボットアーム、借りたGPUでの学習・推論までを自分の手で回し、AIエージェント(Claude Code)を設計と実装の相棒にしています。基準は物理精度ではなく体験の成立。画面上の「Pixels(デジタル)」の設計を、現実の「Motors(モーター)」へ——その過程を公開しています。

+ +
+

現場ごとに違う導入の手間を、
決まった見積もりと手順に変える。

+
+ {WAYS.map((w) => ( +
+

{w.h}

+

{w.t}

+ LOG{w.log} を読む +
+ ))} +
+
事業所名
ADAPT DESIGN
設立
2021年10月
@@ -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; }