---
title: "デザインを詰める ― ひと晩65回の公開で、色を1つまで減らした"
slug: how-to-finish-a-design
date: 2026-10-23
day: 369
meta_description: "導入比較ガイドのデザインを、案出しから仕上げまでひと晩で詰めた記録。方向の違う案で土台を決め、全体を白黒で組み、1セクションずつ画面で見て直して公開した。色は最後に意味を1つ決めて戻した。"
tags: [Webデザイン, デザインの進め方, LP, 差し色, タイポグラフィ, レイアウト, CTA, Astro, Claude Design, ffmpeg, Playwright]
series: "ひとり研究所の裏側"
cover: "/media/LOG369_cover.jpg"
---

学習用GPUを買うか借りるかを決めるための1ページ（導入比較ガイド、pixelstomotors.com/gpu-buy-or-rent）を、ひと晩で作りました。なぜ作ったか、誰に向けてどう並べたかは LOG368 に書きました。この記事は、そのページのデザインをどう進め、細部をどう詰めて仕上げたかの記録です。

最初に公開した版から最後の版まで、サイトへの公開は65回でした。翌朝、スマホで見直して、もう5回直しています。1回ずつの直しは小さく、「この行を2行に」「この数字をもっと強く」「この線はいらない」といったものです。ただ、65回分を並べると、デザインを詰めるときに何を見て、どの順に決めていったかが見えてきます。

**一番効いたのは、色を全部いったん外し、形と文字だけで組み終えてから、意味を1つ決めて色を戻したことでした。** 色が付いたまま形を直していると、色の強さに目を取られて、並べ方や文字の大きさの問題が見えにくくなります。

| 段階 | やったこと | 決め手 |
|---|---|---|
| 方向を決める | 最初の画面の案を、方向の違うものだけ並べた | 「見積書と利用明細を並べる」案。数字の差が一目で伝わる |
| 土台を詰める | 最初の画面1枚だけを、写真の重ね方や濃さまで詰めた | 実機の写真を網点に加工し、切り抜いた写真を重ねる |
| 全体に広げる | 土台に合わせて全体を組み、単調な所を組み替えた | セクションごとに並べ方を変える。色はいったん全部外す |
| 1セクションずつ詰める | 画面写真に一言 → 直して公開 → 公開した画面で確かめる、を繰り返した | 読む人のノイズを消す。同じ形を並べない。数字を強く |
| 色を戻す | 色の意味を1つに決め、その意味の場所にだけ入れた | 橙＝実際に払った分と、押してほしいボタン |
| 最後の CTA | 背景違いの案で決まらず、考え方から出し直した | 「次は、あなたのロボットで。」と、橙のボタン1つ |
| スマホの幅で詰める | 翌朝、iPhone で見て、PC の並べ方のまま残っていた所を直した | 縦1列で見る形に合わせる。見出しは言葉の切れ目で折る |

進め方はエイイチが決め、Claude が案を出して直し、公開して画面を確かめる、という分担でした。エイイチは公開されたページを見て、気になった所の画面写真に一言を添えて送ります。Claude はその場で直し、PCとスマホの幅で画面を撮って確かめてから公開します。

ここから下は作業ログです。段階ごとに、直したねらい、それで何が変わったか、どんな効果が見込めるかを添えました。効果は、アクセスの数字で確かめたものではありません。直した画面を見て、読む人の動きがこう変わるはずだ、という見込みです。


## 作業ログ ― 案出しから仕上げまで

### 方向を決める：案は「並べ方」ではなく「方向」で分ける

最初の画面の案は、Claude のデザイン用のキャンバス（Claude Design）に並べて比べました。最初に出した案は、写真と見出しの置き方を少しずつ変えただけで、前に出した案とほとんど同じものでした。エイイチからは「前に見た案と変わらない」と指摘されました。

案を並べる意味は、方向の違うものを見比べて選ぶことにあります。置き方の違いだけでは、選ぶ材料になりません。出し直した案は、何を主役にするかで分けました。手元とGPUをつなぐ図、大きな数字、動きの時間軸、AIが見ている画像、の4つです。

【画像】LOG369_01_fv_four_ideas.png 最初の画面の4案。主役にするものを、図・数字・時間軸・AIの見ている画像で分けた

写真については、次の指示がありました。

- 生成AIで作った画像ではなく、実際の画像を使う
- いくつか画像があるので、画像を変えて提案する
- 写真はデザインで手を入れる。元の画像そのままで出さない
- 書体も別のパターンを用意する（今のサイトと同じ書体の案も入れる）

この中から選んだのが、見積書と利用明細を同じ大きさで並べる案です。左に買わなかったPCの見積書（打ち消し線の ¥750,000）、右に借りたGPUの利用明細（¥4,677）、間に「およそ1/160」を置きます。説明を読まなくても、2枚の書類の数字の差で話が伝わります。

- ねらい：最初の画面だけで、このページが何の話かを伝える
- 変わったこと：置き方だけが違う案から、主役の違う4案になり、選ぶ材料ができた。選んだ案では、見積書と利用明細の金額の差が、説明を読む前に目に入る
- 見込める効果：「買うより借りた方がずっと安かった」が最初の画面で伝われば、それが続きを読む理由になる

### 土台を詰める：最初の画面1枚だけを、先に仕上げる

全体を組む前に、最初の画面だけをキャンバスの上で詰めました。ここで決めたことが、ページ全体の基準になるからです。

| 詰めた所 | 直す前 | 直した後 |
|---|---|---|
| 書類の飾り | 見積書と利用明細の上に色の線 | 線をなくす |
| 書類の大きさ | 2枚の大きさが違う | 同じ大きさ |
| 背景の写真 | 写真をそのまま薄く敷く | 実機の写真を網点に加工し、アームだけを切り抜いた写真を同じ大きさで重ねる |
| 写真の重ね方 | 写真が網点を隠す | 乗算で重ね、網点が少し透ける濃さ（不透明度82%）にする |
| 背景の色 | ベージュ寄り | ベージュをやめる |
| 色のトーン | 青と橙がくすむ | 2色の明るさと鮮やかさをそろえる |

網点（細かい点の集まり）の画像は、写真から Python で作りました。切り抜きは、写真の背景を自動で消す道具（rembg）を使っています。

- ねらい：最初の画面を、ページ全体の基準にする（写真の扱い・色の明るさ・書類の形）
- 変わったこと：2枚の書類が同じ大きさになり、比べる2つとして読めるようになった。写真は網点と重なって、ページの白黒の調子になじんだ
- 見込める効果：あとのセクションで迷ったときに、最初の画面に合わせればよくなる。全体を組むときの迷いと直しが減る

### 全体に広げる：単調、色が多い、で組み替えた

この最初の画面を土台に全体を組むと、セクションがどれも「左に文、右に図」の同じ並べ方になりました。画面を上から下まで撮った画像が送られてきて、一言だけ添えてありました。

> 全体にレイアウトが単調

【画像】LOG369_02_colored_build.png 色を付けたまま全体を組んだ版。青と橙の2色で、セクションの並べ方が似ていた

ここで次のように組み替えました。

- セクションごとに並べ方を変えた。左右に分ける、上下に積む、中央に寄せる、全幅の表、黒い帯
- 差し色を薄めた水色の背景をやめて、灰色にした
- 英字と数字の書体を Manrope にした
- 見出し・本文・注記の文字の大きさの段差をはっきりさせた
- 計算機の入力欄の名前が折り返していたので、短い言葉に言い換えた
- 角丸を全部なくした
- 色をいったん全部外した

色を外すときは、色の指定を1か所にまとめ、それぞれに「色あり」の値を書き残しました。あとで戻すときに、どこに何色が入っていたかが分かるようにするためです。

- ねらい：スクロールしても同じ景色が続かないようにする。色の問題と形の問題を、分けて見られるようにする
- 変わったこと：セクションごとに並べ方が違うので、どこで話が変わったかが形で分かる。色を外したことで、文字の大きさや並べ方の粗が見えるようになった
- 見込める効果：長いページでも、途中で読むのをやめにくくなる

### 1セクションずつ詰める：画面写真に一言、直して公開、画面で確かめる

ここからは、エイイチが最初の画面以外を1セクションずつ見て、直していきました。

> FV以外1セクションづつ修正していきます

1回の流れは次のとおりです。

1. エイイチが公開中のページを見て、気になった所の画面写真に一言を添えて送る
2. Claude が直し、PCの幅（1440px）とスマホの幅（390px）で画面を撮って確かめる
3. 公開する（約1分で反映される）
4. エイイチが公開された画面を見て、次の指摘を送る

手元の試しの画面ではなく、公開したページで判断しています。サイトのヘッダーや前後のセクションと並んだ状態で見ないと、幅や色の釣り合いが分からないからです。直しは小さいので、1回が数分で回ります。最初の公開（18時17分）から最後の公開（23時18分）まで、5時間で65回でした。

- ねらい：直した結果を、読む人と同じ画面で確かめる
- 変わったこと：1回の直しが小さいので、外れてもすぐ戻せた。手元の画面だけで良しとして公開することがなくなった
- 見込める効果：ヘッダーや前後のセクションと並べて初めて分かるずれを、公開してすぐ拾える

直した内容を、見ていたものごとに分けると次のとおりです。

### 細部1：読む人にとってのノイズを消す

一番多かったのは「これはいらない」という指摘でした。

- 最初の画面の下の「読む時間・公開日・価格を確認した日」と写真の説明
- 図の下の、色の意味や計算の前提を書いた長い注記
- 3つの数字のグラフに入れていた文字
- メモリの図の下の目盛りの数字（0・16・32…）
- 2つ目のボタン。最初の画面と最後の CTA に2つずつあった

> こんな情報ユーザーはノイズにしか感じない

注記の中には、数字の根拠として必要なもの（価格を確認した日・為替）もあります。それはページ下の「出典と記録」の中にだけ残しました。消すか残すかではなく、読む流れの中に置くか、確かめたい人のための場所に置くかを分けています。

- ねらい：判断に使う情報だけを、読む流れに残す
- 変わったこと：最初の画面と図の周りが、見出し・数字・図だけになった。数字の根拠は「出典と記録」を開けば確かめられる
- 見込める効果：数字と結論が先に目に入る。根拠を確かめたい人も、迷わずたどり着ける

### 細部2：幅と揃えをそろえる

- 中身の幅：最初の画面・3つの数字・03・「予想と逆だったこと」・最後の CTA を1080pxにそろえた。最初は1200pxで、広すぎた
- 中央寄せ：見出しと注記を中央に寄せた。注記は、PCでちょうど2行に収まるように幅を調整した。言葉の途中で折り返さないようにした
- 折り返しの位置：3つの数字の見出しを「、」の後で改行し、3つとも同じ位置で2行にした。左右が折り返しているのに、真ん中だけ1行だった
- 間隔：3つの数字の小さなグラフで、左のグラフだけ棒の間が10px空いていた。右のグラフと同じ4pxにした

- ねらい：セクションが変わっても、目が読み始める位置を同じにする
- 変わったこと：幅と、中央・左の揃えが、セクションの間でそろった。3つの数字は、同じ形の3つとして読める
- 見込める効果：並びのずれに目が止まらず、中身を読むことに集中できる

### 細部3：数字を強く、単位を小さく

このページは数字で話すページなので、数字が弱いと話が弱くなります。

> 全体的に数字が弱い！統一

- 数字はすべて Manrope の太字にそろえた。計算機の結果や図の目盛りが、等幅の細い書体のまま残っていた
- 「約」「月」「円/時」「GB超」は数字より一回り小さくした。大きく見えるのは数字だけ
- 「3つの数字」の「3」と「つ」の間に空きが出ていた。ブラウザが英数字と日本語の間に自動で入れる空きで、止めた
- 最初の画面の見出しの「AI」「GPU」が、日本語より細く見えた。英字の書体は一番太い字でも日本語の極太より細いので、英字だけ字の輪郭を少し太らせた
- メモリの図の型番（RTX 5080・A40 など）を太字にした

- ねらい：数字で話すページなので、数字を最初に読ませる
- 変わったこと：数字が一番強く、単位は従になった。数字の書体がページ全体で1つになった
- 見込める効果：拾い読みでも、22.5GB・180時間・¥4,677 が頭に残る

### 細部4：グラフは、文章で説明できるところまで削る

3つの数字には、それぞれ小さなグラフを付けました。最初は軸の文字や数値、灰色の棒が入っていました。

> グラフはテキスト内で説明できるくらい抽象化

グラフの下には見出しと本文があり、数字はそこで説明しています。グラフは「差がある」「交わる」「3割」という形だけを見せればよいので、文字を全部外しました。次に灰色をやめ、黒の面と斜線だけで描くことにしました。

【画像】LOG369_03_chart_variants.png 3つの数字のグラフの4案。横棒と線、マス目、円と面、縦棒

斜線は、最初は灰色の地に灰色の線で、ぼやけて見えました。太さと間隔を変えた案を何度か並べ、黒と白が同じ太さの斜線1種類に決めました。そのあと、ページ中の斜線（メモリの図の足りないGPU、費用の図の置いていた時間、凡例）を全部この1種類にそろえています。

【画像】LOG369_04_stripe_options.png 黒の面はそのままに、斜線の比率と向きを変えた8案。1の「斜め・黒1：白1」に決めた

- ねらい：グラフに、1つのことだけを言わせる
- 変わったこと：文字のないグラフになり、差・交わり・3割という形の違いだけが見える。斜線が1種類になり、ページのどこでも「足りない／置いていた」の意味で読める
- 見込める効果：グラフを読み解く手間がなくなり、見出しを読む前に結論の形がつかめる

### 細部5：同じ形を、続けて並べない

> さっきのセクションと全く同じレイアウト！単調でNGです。同じレイアウトを並べない。

01（GPUのメモリ）と 02（実際の費用）が、どちらも「左に見出しと文、右に横棒のグラフ」でした。02 を「見出しと大きな金額の横並び」と「全幅のグラフ」の上下2段に組み替えました。それでも、グラフが 01 と同じ横棒だったので、02 のグラフは縦棒にしました。7回分の棒が横に並び、下に何をした回かを置く形です。

04（9項目の比較）は、表のままだと単調だったので、別の形を4案出しました。

【画像】LOG369_05_compare_options.png 04 の比較の4案。左右の対決、強い項目ごとの2列、中央から伸びる棒、9枚のタイル

選んだのはA案（項目名を真ん中に置き、強い側のマスを黒で塗る形）です。元の表の読みやすさを残したまま、どちらが強いかが黒の面で一目で分かります。

- ねらい：セクションの境目を、形の違いで見せる
- 変わったこと：01 は横棒、02 は縦棒、04 は左右の対決になり、続けて同じ形が来なくなった。04 は、どちらが強いかが黒の面の多さで分かる
- 見込める効果：飽きずに下まで読める。04 は表を読み込まなくても、黒の多い側が強いと分かる

### 細部6：押せるものは、押せる形にする

- 目次：文字だけで、押せると分からなかった。灰色の面に分け、右下に下向きの矢印を付けた。マウスを乗せると黒地に白文字になる
- 文中のリンク：色を外したとき、リンクも本文と同じ黒になっていた。下線を付けた
- ボタン：角丸を全部なくしていたが、ボタンだけはサイトのほかのボタンと同じ角丸（4px）に戻した。矢印も、文字の「→」からサイト共通の矢印アイコンに替えた
- ボタンの二重枠：押したあとに出る印（フォーカスの枠）が、ボタンの枠と重なって二重に見えた。枠で囲むのをやめ、黒地に白文字に反転する形にした

角丸を全部なくしたのは、グラフや書類の角が丸いと柔らかく見えすぎたからです。ボタンだけ戻したのは、サイトのどのページでも同じ形のものが押せる、とそろえるためです。

- ねらい：押せるものと押せないものを、見た目で分ける
- 変わったこと：目次・リンク・ボタンが、それぞれ押せる形になった。ボタンはサイトのほかのページと同じ形になった
- 見込める効果：目次から読みたいセクションへ飛べる。押せる所の見落としが減る

### 細部7：線より面、細かすぎる模様は目に痛い

06 の7枚のカードには、最初は番号（01〜07）を大きく置いていました。内容を表すアイコンに替えましたが、細い線のアイコンは貧弱に見えました。黒く塗った形に描き直し、中の線や印は白く抜いています。

最後の CTA で、黒の細い斜線を一面に敷いた版は「目が痛い」と言われました。白地に細い黒線が細かく並ぶと、画面がちらついて見えます。斜線は面の一部だけにして、線の間を広げました。

- ねらい：小さくても形が読めるようにする。目に負担をかけない
- 変わったこと：アイコンが黒い面になり、カードの文字に負けなくなった。斜線は面の一部だけになった
- 見込める効果：スマホの小さな画面でもアイコンの形が読める。最後まで見ても目が疲れにくい

### 色の決め方：全部外してから、意味を1つ決めて戻す

白黒で形が決まったところで、色をどこに入れるかを決めました。

> 差し色をどこに入れるか検討

Claude が出した案は、橙の意味を「実際に借りて払った分（A40・実費）」に決めて、その意味の場所にだけ入れるものでした。最初の画面で、利用明細の「実費」の札と ¥4,677 を橙にしています。同じ意味をページの最後まで通せば、読む人は「橙＝実際に払った額」と読めます。

> 1〜3を入れて公開でやってみて。入ってから判断します

入れる前に机の上で議論するより、入れて公開した画面で判断する、という進め方です。入れた場所は、メモリの図の A40 の行、02 の大きな ¥4,677、03 の計算機の「借りる」の線と結論の文字です。

【図解】LOG369_accent_map.html

途中、色の入れ方を2回直しています。

- いったん見積書の側に橙を入れたが、「逆かな」と言われて利用明細の側に移した。見積書は「買わなかった」ものなので、目立たせる理由がない
- 見積書の注記の色が濁って見えた。茶色寄りの橙の文字に、ベージュがかった地を合わせていた。文字を澄んだ橙に、地を黄みのないごく薄い橙にして直した（その後、見積書は白黒に戻した）

最初の画面の写真は、アームがつかんだブロックの赤だけを残して、ほかを白黒にしました。02 の実機の動画も、同じようにブロックの赤だけを残した版を作って差し替えています。写真の中の赤は、ページの橙とは別に、「このブロックを運んだ」という話の主役として残しました。

【画像】LOG369_11_video_red_only.png 動画の元（左上）と、赤だけを残した版のコマ3枚

- ねらい：色に意味を1つだけ持たせる
- 変わったこと：橙が「実際に払った分」と「押してほしいボタン」の2つの場所にだけ入り、ページの中で目が止まる場所が決まった
- 見込める効果：橙を追えば実費の話をたどれる。最後の橙のボタンが、押す場所としてすぐ分かる

### 最後の CTA：背景の違う案をいくら並べても決まらなかった

最後の「次の一歩」は、一番時間がかかりました。

最初は青地にしました。これは、色を外したときに残しておいた差し色の値が青だったので、確かめずにそれを使ったものです。

> なんで青？ばっかり？

【画像】LOG369_06_cta_ten_ideas.png 最初の10案のうち5案。どれも青地で、背景の写真や数字の置き方だけを変えていた

青以外の6色も並べましたが、「いまいち」でした。

【画像】LOG369_07_cta_colors.png 同じ形で色だけを変えた6案。橙・赤・黄・ライム・緑・紫

背景の色や写真を替えるのをやめて、ページの流れから「最後に何を押させるか」を考え直した案を6つ出しました。最初の画面の見積書に続く3枚目の書類、計算機の結果をそのまま持ってきて相談する形、06 の続きの8枚目のカード、実機の写真を全面に敷いて一言を大きく、などです。

【画像】LOG369_08_cta_six_ideas.png 考え方を変えた案のうち3つ。06 の8枚目、実機の写真に「次は、あなたのロボットで。」、買うと借りるの2択

> EのコピーはOK。あとはCTAっぽさを出そう

コピーが決まったので、形と色の組み合わせを詰めました。斜線の地に白いカードを置く形で、斜線の太さと色を変えた10案を並べ、黒の細い斜線にボタンだけ橙、という組み合わせに決まりました。

【画像】LOG369_09_cta_stripe_colors.png 斜線の地＋白いカードの形で、斜線の太さと色を変えた10案

ここから先は、細かい直しが続きました。

- 斜線が一面だと目が痛い → ベタ（黒の面）を7割にして、斜線は一部だけにする案を4つ並べた
- 黒の面に、実機のアームの写真を薄く入れる
- 写真をもう少し暗く。斜線の範囲をもう少し広く
- 「全記録を読む」のボタンは外す（2つあると迷う）

【画像】LOG369_10_cta_stripe_mix.png 黒の面を7割にし、斜線を一部だけに入れた4案

途中、写真のアームを見せようとして、Claude が頼まれていないカードの形（幅と並べ方）まで変えました。

> あれ？なんで中のパネルのデザイン変更した？そんなこと言ったっけ？

カードは元の形に戻しています。1セクションずつ詰める進め方では、直す範囲は言われた所だけにしないと、前に決まった所が崩れます。

【画像】LOG369_13_cta_final.png 仕上がった CTA。黒地に薄いアームの写真、右端の斜線、白いカードと橙のボタン1つ

- ねらい：読み終えた人に、次にすることを1つだけ示す
- 変わったこと：背景の工夫ではなく、「次は、あなたのロボットで。」の一言と、ボタン1つになった。どちらを押すか迷う2つ目のボタンはない
- 見込める効果：相談のボタンが押されやすくなる見込み。実際に押されたかは、公開後の問い合わせで確かめる

### 仕上がった最初の画面

【画像】LOG369_12_fv_final.png 仕上がった最初の画面。白黒の網点のアームに、ブロックの赤だけ。利用明細の ¥4,677 と「実費」の札が橙

### 翌朝：スマホで見直す

翌朝、エイイチが iPhone で公開中のページを見て、前の晩と同じように、画面写真に一言を添えて送ってきました。直しは約15分、公開は5回です。

直した所の多くは、PC で組んだ並べ方が、スマホでそのまま残っていた所でした。PC で横に並んでいたものが縦1列に積まれると、左にそろえた物、見出しの折り返し、横に長い図の見え方が変わります。

#### 3つの数字：中央にそろえる

> 3つの数字で、先に結論セクションはグラフはセンター合わせ。各ミドルタイトルは折り返しなし（センター合わせ）説明文はそのまま。

> グラフの数字もセンター合わせ

数字・グラフ・見出しを中央にそろえました。見出しは「、」の後の改行をやめて1行にし、画面の幅に合わせて字を少し小さくしています。説明文は左にそろえたままです。PC で3列に並べるために付けていた右の余白（28px）が、1列になっても残っていたので、スマホでは外しました。これが残っていると、中央に寄せた物が少し左にずれます。

【画像】LOG369_15_sp_three_numbers.png 左が直す前、右が直した後。数字・グラフ・見出しが、画面の中央の1本の線に乗った

- ねらい：PC では3つが横に並ぶので、左にそろえると3つの頭がそろう。スマホでは1つずつ縦に見るので、1つずつが画面の真ん中でまとまる方が読みやすい
- 変わったこと：数字、グラフ、見出しが中央の1本の線に乗った。見出しが1行になり、1つ分の高さも縮んだ
- 見込める効果：視線が上から下へまっすぐ流れ、3つの結論を続けて読める

#### 01：グラフと価格の間を詰める

> 01セクションはグラフと価格の間が空きすぎ（グラフを大きくするなど調整）

スマホでは、棒グラフの右に価格の列を残していたため、棒が短く、棒と価格の間が大きく空いていました。価格を GPU の名前と同じ行の右に上げ、棒はその下の行で横幅いっぱいに使うようにしました。

【画像】LOG369_16_sp_memory.png 左が直す前、右が直した後。棒が長くなり、価格は名前の行の右に並んだ

- ねらい：GPU のメモリの量（棒の長さ）と、必要な量（破線）の関係を、はっきり見せる
- 変わったこと：棒が長くなり、16GB と 48GB の差や、破線をこえるかどうかが見やすくなった。名前と価格が同じ行に並ぶので、「この GPU はいくら」が一続きで読める
- 見込める効果：足りる GPU と足りない GPU の区別が、数字を読む前につく

#### 02：横に送れると分かるようにする

> 02のグラフ横にスクロールするか、わからない。

7回分の縦棒は、スマホの幅には入りきらないので横に送る形にしていました。ところが、最初の画面に4本目までがほぼ全部収まっていて、グラフがそこで終わっているように見えていました。

Claude は手元で、縦棒を横棒に組み替えて7回分を縦に並べる案を作りました。公開する前に、エイイチから画面写真と次の一言が届きました。

> こんな感じで少し横のグラフがちょい見せしてた方がいい。

縦棒のままにすれば、細部5で決めた「同じ形を続けて並べない」（01 は横棒）も崩れません。横棒の案は使わず、縦棒のまま次の棒が少し見える形にしました。最初は次の棒を9割ほど見せましたが、それでも終わりに見えました。

> 右のグラフもう少しだけ食い込んでいた方が横にスクロールするってわかりやすくなる

列の幅を画面の幅から決め、3本と半分が画面に入るようにしました。4本目は、どの機種でも右端で半分ほど切れます。凡例と合計は動かさず、棒の並びだけが横に送れます。

【画像】LOG369_17_sp_cost.png 左が直す前、右が直した後。4本目の棒が右端で半分切れて、続きがあると分かる

- ねらい：続きがあることを、説明の文ではなく、切れている形で伝える
- 変わったこと：4本目が半分で切れ、横に送れる図だと見て分かるようになった
- 見込める効果：一番高い回（¥1,422）を含む5本目以降が、見落とされにくくなる

#### 見出し：言葉の途中で折り返さない、英数字を日本語の太さに

> 05タイトル 折り返し修正

> 01タイトル折り返し修正。日本語と英字の太さ合わせる（日本語に合わせる）

iPhone では、05 の見出しが「あなたの場合はど／ちらか」と言葉の途中で折り返していました。ページには、日本語の言葉の切れ目を自動で判断して折り返す指定（word-break: auto-phrase）を入れていました。Chrome はこれに対応していますが、iPhone の Safari は対応していません。そのため iPhone でだけ、言葉の途中で切れていました。Claude は画面の確かめを Chrome と同じ仕組みのブラウザ（Chromium）で行っていたので、この違いには気づけませんでした。

見出しを言葉のまとまりに分け、まとまりの途中では折り返さないようにしました。たとえば「あなたの場合はどちらか：／4つの質問」です。01〜06のどの見出しも同じように直しています。英数字（GPU・7・4,700 など）は、最初の画面の見出しと同じように輪郭を少し太らせ、日本語の太さに合わせました。

- ねらい：見出しを、1行ずつ意味の通るまとまりで読ませる
- 変わったこと：見出しが言葉の途中で切れなくなった。英数字だけが細く浮いて見えることもなくなった
- 見込める効果：見出しの1行目だけで意味が取れ、拾い読みでも話の流れが追える

#### 06：アイコンの横に文字を並べる

> 06セクションはアイコンの横にテキスト並べる。

カード1枚の中で、アイコンを上、文字を下に積んでいたのを、アイコンを左、見出しと説明を右に並べる形にしました。

- ねらい：縦に積むと1枚が高くなり、7枚で画面の何枚分にもなる
- 変わったこと：1枚の高さが縮み、7つが画面の中に多く収まるようになった
- 見込める効果：7つの決めごとを、続けて見比べやすくなる

#### CTA：斜めの向きを PC とそろえる

> CTAの背景の斜め具合がPCと違う。修正

スマホでは、斜線の帯が PC と逆向きに傾いていました。PC と同じ向き（上が右寄り、下が左寄り）に直しました。角度まで PC と同じにすると、縦長のスマホの画面では下の斜線の面が大きくなりすぎるので、角度は少しゆるくしています。

- ねらい：同じページは、どの画面で見ても同じ形に見えるようにする
- 変わったこと：PC とスマホで、CTA の形が同じに見えるようになった
- 見込める効果：PC で見た人がスマホで開き直しても、同じページだとすぐ分かる

#### 最初の画面：短くする

> FVが長いのでテキストセクションを画像にもっと食い込ませるように上に上げる（ロボットの台座の下くらいまで）

スマホでは、写真の下に文字が続く形で、最初の画面が縦に長くなっていました。文字を、ロボットの台座のすぐ下まで上げて写真に重ねました。重なる所は、写真の下側を背景の色にぼかして、文字が読めるようにしています。

【画像】LOG369_14_sp_fv.png 左が直す前、右が直した後。文字が台座のすぐ下まで上がり、「自分の条件で計算する」のボタンまでが最初の画面に入った

- ねらい：開いてすぐの画面に、見出し・説明・ボタンまでを入れる
- 変わったこと：直す前は、ボタンが画面の下の端で、ブラウザのバーの裏に隠れていた。直した後は、スクロールしなくてもボタンが見える
- 見込める効果：開いてすぐ、何のページで、次に何を押せばよいかが分かる

#### スマホで見て分かったこと

- PC で左にそろえた物は、縦1列になると、中央にそろえた方がまとまる所がある。1つずつを順に見る場所がそうだった
- PC の並べ方のために付けた余白や列は、1列になっても残る。スマホの幅で見るまで気づかない
- 横に送る図は、次の列が半分ほど切れていないと、送れると分からない
- Chromium で確かめても、iPhone の Safari では折り返しが違うことがある。最後の確かめは iPhone で行う

### 進め方を並べると

この晩の進め方を、決めた順に並べると次のとおりです。

| 順 | 決めたこと | 見ていたもの |
|---|---|---|
| 1 | 何を主役にするか（方向） | 方向の違う案を並べて選ぶ |
| 2 | 最初の画面1枚 | 写真・書類・文字の釣り合い |
| 3 | 全体の並べ方 | 同じ形が続いていないか |
| 4 | 形と文字（色なし） | ノイズ・幅と揃え・数字の強さ・押せる形 |
| 5 | 色の意味と場所 | 意味を1つに決め、その場所にだけ入れる |
| 6 | 最後の CTA | 背景ではなく、何を押させるか |
| 7 | ボタン・矢印・角丸 | サイトのほかのページとそろっているか |
| 8 | スマホの幅 | 縦1列になったときの揃え・見出しの折り返し・横に送る図 |


## 記録 ― この晩の公開の記録（git のコミット 65件）

```text
fde7f80 2026-10-23 18:17 導入比較ガイド /gpu-buy-or-rent を追加（GPU PCを買うか Runpod で借りるか）。トップと /series6 に入口を置いた
5a97456 2026-10-23 18:53 導入比較ガイド：ChatGPT の検証の指摘を反映（放置の割合の計算・速さの比・判定フロー・言い過ぎの修正）。タイトルを誰向けか分かる形に
75d1fb7 2026-10-23 20:08 導入比較ガイド：最初の画面を見積書と利用明細の形に作り直し、セクションごとに帯・番号・レイアウトを変えた。色と書体をそろえ直した
89dedba 2026-10-23 20:24 導入比較ガイド：セクションごとに組み方を変え、英数字を Manrope に、角丸をなくし、色をいったん白黒にした（差し色は .gbr の色の札で戻せる）
2f2a33e 2026-10-23 20:24 導入比較ガイド：最初の画面の下の読む時間・日付・写真の説明を消した
52485a3 2026-10-23 20:26 導入比較ガイド：最初の画面のボタンを「自分の条件で計算する」の1つにした
744e0dc 2026-10-23 20:29 導入比較ガイド：最初の画面の下のセクションの幅を1080pxにした
7c0e6dc 2026-10-23 20:30 導入比較ガイド：比べる範囲の注記を中央揃えにした
4063a2f 2026-10-23 20:32 導入比較ガイド：3つの数字それぞれに小さなグラフを入れた（メモリの量・損益分岐・置いていた分）
99b1c0c 2026-10-23 20:33 導入比較ガイド：比べる範囲の注記の行の長さをそろえた
f1a7908 2026-10-23 20:34 導入比較ガイド：比べる範囲の注記をPCで2行にした
64b0fa5 2026-10-23 20:35 導入比較ガイド：比べる範囲の注記の幅の上限を外し、PCで確実に2行にした
d80ce79 2026-10-23 20:37 導入比較ガイド：3つの数字のグラフから文字を外して形だけにした・文中のリンクに下線を付けた
5125667 2026-10-23 20:37 導入比較ガイド：π0.5 の読み仮名を外した
896b0d8 2026-10-23 20:39 導入比較ガイド：「忙しい月（120時間）」を「GPUを一番多く使う月でも約120時間」に言い換えた
552f7d4 2026-10-23 20:40 導入比較ガイド：3つの数字の見出しを、どれも同じ位置で2行に折り返した
1df95ee 2026-10-23 20:41 導入比較ガイド：「3つの数字で、先に結論」の見出しを中央に寄せた
a1acf8d 2026-10-23 20:42 導入比較ガイド：目次を押せる形にした（灰色の面・下向きの矢印・乗せると黒）
2f15d4f 2026-10-23 20:43 導入比較ガイド：最初の画面の中身の幅を1080pxにして中央へ寄せた
dfc41e2 2026-10-23 20:45 導入比較ガイド：3つの数字のグラフから灰色をなくし、黒と斜線だけで描いた
955d01c 2026-10-23 20:48 導入比較ガイド：「3つの数字」の3を大きくし、つとの間の空きをなくした
743ce98 2026-10-23 20:49 導入比較ガイド：3つの数字の「月」「約」を単位と同じ大きさにした
385e481 2026-10-23 20:54 導入比較ガイド：22.5GBのグラフの2本の棒の間を、右のグラフと同じ4pxにした
cab29f5 2026-10-23 20:55 導入比較ガイド：3つの数字のグラフのストライプを、黒と白が同じ太さの斜線にした
e0d4ae3 2026-10-23 20:56 導入比較ガイド：01の左の本文を短くして、右の図と同じ高さに収めた・図の説明から色の名前を外した
d83f012 2026-10-23 21:00 導入比較ガイド：ページ中のストライプを1種類（黒と白が同じ太さの斜線）にそろえた・図の説明の文字を小さくした・01の本文をさらに短くした
d90b158 2026-10-23 21:03 導入比較ガイド：02を見出しと金額の横並び＋全幅のグラフに組み替えた（01と同じ左右の形を避けた）・01の図の目盛りの数字を消した
5d75cea 2026-10-23 21:03 導入比較ガイド：01の本文に、メモリが要る理由とπ0.5が何かの説明を足した
c197ea0 2026-10-23 21:07 導入比較ガイド：01の本文を中くらいの長さにした・図の価格を太く大きく、足りる／足りないを小さな補足にした・図の中の余白を広げた
89dd1d1 2026-10-23 21:07 導入比較ガイド：01の本文から「使ったのは、」を外した
45ce133 2026-10-23 21:14 導入比較ガイド：02の見出しを「約4,700円。」のあとで改行した
58280cb 2026-10-23 21:15 導入比較ガイド：02の費用の図の下の説明を消した
289006e 2026-10-23 21:16 導入比較ガイド：02の費用の図の金額を太く大きくした（合計はさらに大きく）
9935c0f 2026-10-23 21:20 導入比較ガイド：02の費用の図を縦棒にした（01の横棒と見分ける）・01の図の「約」「円/時」を小さくした・セクション番号の輪郭の小さな三角を消した
7d96bf2 2026-10-23 21:23 導入比較ガイド：「この金額で学習したAI」を見出しの大きさにした
6bff7ba 2026-10-23 21:24 導入比較ガイド：03（計算機）の中身の幅を1080pxにした
610b326 2026-10-23 21:28 導入比較ガイド：計算機を黒地にした・買うの点線を細くした・選択欄の矢印を太くし右の余白を足した・数字をすべてManropeの太字にそろえた
7db3c47 2026-10-23 21:34 導入比較ガイド：04の比較を、項目を真ん中に置いて強い側を黒で塗る形（案A）にした・実際に起きたことの4枚は下に横並び
9603254 2026-10-23 21:35 導入比較ガイド：「予想と逆だったこと」の本文を2段落に分けた
d8b5f06 2026-10-23 21:36 導入比較ガイド：判定フローの結果の枠から左の線を消した
d95ccbd 2026-10-23 21:38 導入比較ガイド：判定フローの結果の枠の灰色を薄くした
7d13024 2026-10-23 21:40 導入比較ガイド：「予想と逆だったこと」の背景に、データセンターのイメージ写真（生成画像）を敷いた
ca97a7e 2026-10-23 21:47 導入比較ガイド：06の7枚の番号を、内容を表す線のアイコンに替えた
46d7f16 2026-10-23 21:50 導入比較ガイド：入口のバナーをデータセンターの写真入りにした・最後のCTAを青地にした・「予想と逆だったこと」の中身の幅を1080pxにした
136da0d 2026-10-23 21:52 導入比較ガイド：試算の相談の枠を白地にし、ボタンの二重枠をなくした
db70e94 2026-10-23 21:53 導入比較ガイド：06のアイコンを黒く塗った形にし、説明文の行の高さを詰めた
e8e18d1 2026-10-23 22:12 導入比較ガイド：最後のCTAを、黒の細いストライプ地に白いカード＋橙のボタンにした（コピー「次は、あなたのロボットで。」）
ec03a75 2026-10-23 22:20 導入比較ガイド：最後のCTAのボタンを「相談する」1つにした
4ef0a59 2026-10-23 22:24 導入比較ガイド：最後のCTAを黒地にし、左に実機のアームの写真を薄く、右端だけ斜めにストライプを入れた・カードを右に寄せた
43accbb 2026-10-23 22:29 導入比較ガイド：最後のCTAのカードを元の横並びに戻し、背景の写真を暗くした
81fe569 2026-10-23 22:35 導入比較ガイド：最後のCTAのストライプの範囲を広げた
91a44db 2026-10-23 22:37 導入比較ガイド：最初の画面の写真で、アームがつかんだブロックの赤だけを残した
d2d5006 2026-10-23 22:39 導入比較ガイド：ボタンだけサイト共通の角丸（4px）にした
b4e0256 2026-10-23 22:40 導入比較ガイド：ボタンの矢印をサイト共通の矢印アイコン（arrow_forward）にした
b3bc204 2026-10-23 22:41 導入比較ガイド：見積書に、最後のCTAのボタンと同じ橙を入れた
bece55a 2026-10-23 22:42 導入比較ガイド：「およそ1/160」を丸にした
1509bc6 2026-10-23 22:44 導入比較ガイド：見積書の注記の色を、茶色寄りから澄んだ橙に直した
025d846 2026-10-23 22:46 導入比較ガイド：色を見積書から利用明細に移した（見積書は白黒に戻した）
e4be496 2026-10-23 22:50 導入比較ガイド：差し色（橙）を「実際に借りて払った分」に入れた（01のA40・02の¥4,677・03の借りる線と結論）
60a5f99 2026-10-23 22:55 導入比較ガイド：02の動画を、ブロックの赤だけ残した版に差し替えた
0a9ba45 2026-10-23 22:58 導入比較ガイド：01の図の型番を太字にした・スマホで80GBと価格が重なるのを直した
2a56019 2026-10-23 22:59 導入比較ガイド：計算機の選択欄の矢印を少し細く、右の余白を少し狭くした
1374a75 2026-10-23 23:04 導入比較ガイドの入口：トップの白い枠を外した・¥4,700と「読む」ボタンに差し色（橙）を入れた（トップと/series6）
64ced32 2026-10-23 23:10 導入比較ガイド：検索向けの設定を整えた（短いタイトル・数字入りの説明文・構造化データにパンくずと計算機・共有画像を今のデザインで作り直し）
7da14ea 2026-10-23 23:18 導入比較ガイド：最初の画面の見出しの英字（AI・GPU）を、日本語と同じ太さに見えるようにした
```

翌朝、スマホで見直したときの公開の記録（git のコミット 5件）。

```text
a80b15b 2026-10-24 06:58 導入比較ガイド：スマートフォンの表示を直した
f80494e 2026-10-24 07:01 導入比較ガイド：見出しの折り返しを言葉の切れ目に。英数字の太さを日本語に合わせた
0594920 2026-10-24 07:03 導入比較ガイド：スマートフォンのFVを短く（文字を画像に重ねる）、3つの数字の数字も中央に
61b5ccd 2026-10-24 07:06 導入比較ガイド：スマートフォンの02のグラフは、次の列を少し見せて横に送れるとわかるようにした
b3dde58 2026-10-24 07:10 導入比較ガイド：02のグラフの4本目が画面の右端で半分ほど切れるようにした
```


## 写真と動画から、ブロックの赤だけを残した手順

### 写真：赤い部分だけ色を残す Python（Pillow・NumPy）

最初の画面の網点の画像と、切り抜いたアームの写真の両方にかけた。赤みと彩度の両方が高い画素だけ元の色を残し、それ以外は白黒にする。ケーブルにも赤い点が1つ出たので、画像の右側（ブロックのある範囲）だけに限った。

```python
from PIL import Image
import numpy as np, os
def sel(src,dst,fmt,**kw):
    i=Image.open(src).convert('RGBA'); a=np.array(i).astype(np.float32)
    r,g,b=a[...,0],a[...,1],a[...,2]
    gray=0.299*r+0.587*g+0.114*b
    mx=np.maximum(np.maximum(r,g),b); mn=np.minimum(np.minimum(r,g),b)
    sat=(mx-mn)/(mx+1e-6)
    red=np.clip((r-np.maximum(g,b))/60,0,1)*np.clip((sat-0.25)/0.25,0,1)
    H,W=red.shape
    ys,xs=np.where(red>0.5)
    # keep only the dense cluster: right side
    keep=np.zeros_like(red); x0=int(W*0.6)
    keep[:,x0:]=1
    red*=keep
    out=a.copy()
    for k,c in enumerate([r,g,b]): out[...,k]=gray*(1-red)+c*red
    Image.fromarray(out.clip(0,255).astype(np.uint8),'RGBA').save(dst,fmt,**kw)
sel('public/site/gbr/arm.webp','public/site/gbr/arm-red.webp','WEBP',quality=80)
sel('public/site/gbr/halftone.png','public/site/gbr/halftone-red.png','PNG',optimize=True)
```

### 動画：ffmpeg の colorhold で赤だけ残す

```bash
# 試しに3コマだけ書き出して、色の残り方を確かめた
for t in 5 100 190; do
  ffmpeg -v error -y -ss $t -i ../real/LOG361_v3_success_181602.mp4 -frames:v 1 -vf "colorhold=color=0xC8302C:similarity=0.22:blend=0.08" f_$t.png
  ffmpeg -v error -y -ss $t -i ../real/LOG361_v3_success_181602.mp4 -frames:v 1 o_$t.png
done

# 全編（3分20秒・854×480・24fps）を書き出し、表紙の画像も同じ処理の版から切り出した
ffmpeg -v error -y -i ../real/LOG361_v3_success_181602.mp4 -vf "colorhold=color=0xC8302C:similarity=0.22:blend=0.08" -c:v libx264 -crf 24 -preset slow -pix_fmt yuv420p -movflags +faststart -c:a copy LOG361_v3_success_181602_red.mp4
ffmpeg -v error -y -ss 5 -i LOG361_v3_success_181602_red.mp4 -frames:v 1 -q:v 3 LOG361_01_success_181602_red.jpg
ls -la LOG361_v3_success_181602_red.mp4 LOG361_01_success_181602_red.jpg
```

```text
-rw-r--r-- 1 root root    44968 Oct 23 22:52 LOG361_01_success_181602_red.jpg
-rw-r--r-- 1 root root 14212038 Oct 23 22:52 LOG361_v3_success_181602_red.mp4
```

### 動画をサイトの動画置き場（Cloudflare R2）へ入れる

できた動画と表紙は、KIOXIA の `r2r2r-data/lab/Log12/` に置いてから、Mac 連携の shell で R2 に入れた。鍵は KIOXIA のファイルからスクリプトが読み、画面には出していない。

```python
import urllib.request, urllib.parse, json, mimetypes
from pathlib import Path
ACC='21d7aed1b193796b89287df10913f2dc'
API=f'https://api.cloudflare.com/client/v4/accounts/{ACC}/r2/buckets/p2m-media/objects'
tok=(Path.home()/'mnt/KIOXIA/p2m_cloudflare_token.txt').read_text().strip().split()[0]
base=Path.home()/'mnt/KIOXIA/r2r2r-data/lab/Log12'
for n in ['LOG361_v3_success_181602_red.mp4','LOG361_01_success_181602_red.jpg']:
    r=urllib.request.Request(API+'/'+urllib.parse.quote(n),data=(base/n).read_bytes(),method='PUT')
    r.add_header('Authorization','Bearer '+tok); r.add_header('Content-Type',mimetypes.guess_type(n)[0])
    with urllib.request.urlopen(r,timeout=300) as res: d=json.loads(res.read() or b'{}')
    print(n,d.get('success'),d.get('errors'))
```

```text
LOG361_v3_success_181602_red.mp4 True []
LOG361_01_success_181602_red.jpg True []
```


## ページのソースコード

### src/pages/gpu-buy-or-rent.astro（導入比較ガイドのページ全体）

```astro
---
// 導入比較ガイド：学習用GPU PCを買うか、Runpod で借りるか（LP。LOG の記事ではない）
// 元はClaudeのアーティファクトで作った試作。数字の出典はページ下の「出典と記録」
import Base from '../layouts/Base.astro';
import { SITE, AUTHOR, PUBLISHER } from '../lib/seo';
const title = 'ロボットAIの学習用GPU、買うか借りるか ― 実費と計算機で決める導入ガイド';
// 検索結果に出すタイトルは短くする（全角32字前後で切れるため）。ページの見出し（h1）は上の title のまま
const seoTitle = 'ロボットAIの学習用GPU、買うか借りるか｜実費と損益分岐の計算機';
const description = 'ロボットAI（π0.5）の学習用GPUを、PCで買うかクラウド（Runpod）で借りるか。実際にA40を借りて学習させた費用（記録のある7回で4,677円）、RTX 5090 PCとの損益分岐を出す計算機、4つの質問の判定フローで決められる導入ガイド。';
const path = '/gpu-buy-or-rent';
const url = SITE + path;
const jsonLd = [
  {
    '@context': 'https://schema.org', '@type': 'Article', headline: title, description,
    url, mainEntityOfPage: url, image: [SITE + '/og/gpu-buy-or-rent.jpg'], inLanguage: 'ja',
    datePublished: '2026-10-23', dateModified: '2026-10-23', author: AUTHOR, publisher: PUBLISHER,
    articleSection: '導入比較ガイド',
    keywords: 'GPU 買うか借りるか, 学習用GPU, クラウドGPU, Runpod, A40, RTX 5090, RTX 5080, π0.5, openpi, LoRA, GPUメモリ, 損益分岐, フィジカルAI, ロボットAI',
    about: [
      { '@type': 'Thing', name: 'クラウドGPU' },
      { '@type': 'Thing', name: 'ロボット学習' },
      { '@type': 'SoftwareApplication', name: 'π0.5（openpi）', applicationCategory: 'Robot foundation model' },
    ],
    isPartOf: { '@type': 'CollectionPage', name: 'フィジカルAI研究室', url: SITE + '/series6' },
    hasPart: { '@type': 'WebApplication', name: '買う方が安くなる使用時間の計算機', url: url + '#calc', applicationCategory: 'BusinessApplication', operatingSystem: 'Web', offers: { '@type': 'Offer', price: 0, priceCurrency: 'JPY' } },
  },
  {
    '@context': 'https://schema.org', '@type': 'BreadcrumbList',
    itemListElement: [
      { '@type': 'ListItem', position: 1, name: 'Pixels to Motors', item: SITE + '/' },
      { '@type': 'ListItem', position: 2, name: 'フィジカルAI研究室', item: SITE + '/series6' },
      { '@type': 'ListItem', position: 3, name: 'ロボットAIの学習用GPU、買うか借りるか', item: url },
    ],
  },
];
---
<Base title={`${seoTitle} | Pixels to Motors`} description={description} path={path} ogImage="/og/gpu-buy-or-rent.jpg" ogType="article" published="2026-10-23" modified="2026-10-23" jsonLd={jsonLd}>
  <link slot="head" rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Noto+Sans+JP:wght@400;500;700;900&family=IBM+Plex+Mono:wght@400;500;600&display=swap" />
  <div class="gbr">
<section class="fv" aria-labelledby="fv-h">
  <div class="fv-art" aria-hidden="true"><img class="fv-arm" src="/site/gbr/arm-red.webp" alt="" width="930" height="858"></div>
  <div class="fv-in">
    <div class="fv-text">
      <p class="who">これからロボットAIの学習環境を用意する、<br>企業の担当者・研究者・エンジニア向け</p>
      <h1 id="fv-h">ロボット<span class="lat">AI</span>の<br>学習用<span class="lat">GPU</span>、<br>買うか借りるか</h1>
      <p class="fv-lead">買う前に借りて、実際に学習させました。見積書と、利用明細を並べます。実費と計算機で、自分の場合どちらが合うかを決められる導入ガイドです。</p>
      <div class="fv-cta"><a class="btn dark" href="#calc">自分の条件で計算する<i class="ms" aria-hidden="true">arrow_forward</i></a></div>
    </div>
    <div class="fv-docs">
      <div class="doc">
        <div class="doc-top">
          <div class="doc-h"><span>見積書</span><em class="tag-buy">買わなかった</em></div>
          <p class="doc-sub">自作の学習用 Linux PC（2026年7月に検討した構成）</p>
          <dl class="doc-rows">
            <div><dt>GPU</dt><dd><b>RTX 5080 <u class="gb16">16GB</u></b></dd></div>
            <p class="doc-warn">学習に要るGPUメモリの目安（22.5GB超）に届かない</p>
            <div><dt>CPU</dt><dd>Ryzen 9 9950X</dd></div>
            <div><dt>メモリ・電源</dt><dd>64〜128GB・1000W級</dd></div>
          </dl>
        </div>
        <div class="doc-total"><span>合計（概算）</span><s class="big-buy">¥750,000</s></div>
      </div>
      <div class="ratio" aria-label="およそ160分の1"><span>およそ</span><b>1/160</b></div>
      <div class="doc rcpt">
        <div class="doc-top">
          <div class="doc-h"><span>利用明細</span><em class="tag-rent">実費</em></div>
          <p class="doc-sub mono">Runpod A40 48GB ／ 2026年10月 ／ 記録のある7回</p>
          <ul class="rcpt-rows mono">
            <li><span>推論を初めて動かす</span><span>¥54</span></li>
            <li><span>GPUメモリを測る</span><span>¥81</span></li>
            <li><span>試しに200ステップ学習</span><span>¥95</span></li>
            <li><span>2,000ステップ学習</span><span>¥1,153</span></li>
            <li><span>実機で推論＋追加学習</span><span>¥1,422</span></li>
            <li><span>4,000ステップ学習し直し</span><span>¥861</span></li>
            <li><span>4,000ステップ学習</span><span>¥1,011</span></li>
          </ul>
        </div>
        <div class="doc-total rcpt-total"><span>合計</span><b class="big-rent">¥4,677</b></div>
      </div>
    </div>
  </div>
</section>

<section id="summary" class="band-white">
  <div class="wrap wide">
    <h2 class="sum-title"><span class="h-num">3</span>つの数字で、先に結論</h2>
    <div class="facts3">
      <div class="fact"><b class="fact-n">22.5<small>GB超</small></b><svg class="fact-chart" viewBox="0 0 300 58" role="img" aria-label="RTX 5080の16GBは、学習に要る22.5GBに届かない。借りたA40は48GB。"><defs><pattern id="fcHatchA" width="5" height="5" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="2.5" height="5" style="fill:var(--ink)"/></pattern></defs><rect x="0" y="11" width="96" height="16" fill="url(#fcHatchA)"/><rect x="0" y="31" width="288" height="16" style="fill:var(--ink)"/><line x1="135" y1="1" x2="135" y2="57" class="fc-th"/></svg><h3>GPUは、速さより先に<br>メモリの量で決まる</h3><p>Physical Intelligence の π0.5 の追加学習は、公開コードの説明書の目安でGPU1枚に22.5GB超が要る。16GBのRTX 5080では届かない。</p></div>
      <div class="fact"><b class="fact-n"><small class="pre">月</small>180<small>時間</small></b><svg class="fact-chart" viewBox="0 0 300 58" role="img" aria-label="借りる費用は使う時間に比例して増え、買う費用はほぼ一定。約178時間で交わる。"><defs><pattern id="fcHatchB" width="5" height="5" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="2.5" height="5" style="fill:var(--ink)"/></pattern></defs><polygon points="150,30 300,4 300,26" fill="url(#fcHatchB)"/><line x1="0" y1="56" x2="300" y2="56" class="fc-axis"/><line x1="0" y1="56" x2="300" y2="4" class="fc-rent"/><line x1="0" y1="34" x2="300" y2="26" class="fc-buy"/><line x1="150" y1="30" x2="150" y2="56" class="fc-th"/><circle cx="150" cy="30" r="4" style="fill:var(--sheet);stroke:var(--ink);stroke-width:2"/></svg><h3>これより使うなら、<br>買う方が安い</h3><p>RTX 5090のPC（約124万円）を4年使う場合の目安。私たちがGPUを一番多く使う月でも約120時間なので、借りる方が安い。買うGPUと借りるGPUの速さの違いは測っていない。</p></div>
      <div class="fact"><b class="fact-n"><small class="pre">約</small>3<small>割</small></b><svg class="fact-chart" viewBox="0 0 300 58" role="img" aria-label="借りた費用のうち、約7割が作業していた時間、約3割が置いていた時間。"><defs><pattern id="fcHatchC" width="5" height="5" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="2.5" height="5" style="fill:var(--ink)"/></pattern></defs><rect x="0" y="14" width="210" height="30" style="fill:var(--ink)"/><rect x="214" y="14" width="86" height="30" fill="url(#fcHatchC)"/></svg><h3>借りた費用のうち、<br>置いていただけの分</h3><p>借りる側の損は、使っていない時間の課金と、毎回の立ち上げ。学習のあと Pod を止めずに待っていた時間に払っていた。</p></div>
    </div>
    <nav class="toc" aria-label="目次">
      <a href="#memory"><i>01</i>メモリが足りるか</a><a href="#cost"><i>02</i>実際の費用</a><a href="#calc"><i>03</i>損益分岐の計算</a><a href="#compare"><i>04</i>9項目の比較</a><a href="#flow"><i>05</i>判定フロー</a><a href="#checklist"><i>06</i>借りる前のチェック</a>
    </nav>
    <p class="scope">比べているのは、機材とサービスの料金だけです。人の作業時間は入れていません。借りる側は Runpod の場合で、国内・円建てのクラウド（<a href="https://ai.sakura.ad.jp/gpu/">さくらインターネットの高火力</a>など）や、中古のGPU・今あるPCへの増設は比べていません。</p>
  </div>
</section>

<section id="memory" class="band-ink">
  <div class="wrap wide side">
    <div class="side-l">
      <div class="sec-head"><span class="sec-no" aria-hidden="true">01</span><h2><span class="ph">最初に決めるのは、</span><span class="ph"><span class="lat">GPU</span>のメモリが足りるか</span></h2></div>
    <div class="prose">
      <p>AIの学習では、モデルと計算途中のデータをGPUのメモリに載せます。足りなければ、学習は始まりません。</p>
      <p>Physical Intelligence 社のロボット用AIモデル π0.5 は、カメラの画像と指示の文から、アームを動かします。その LoRA学習（一部だけ学習し直す方法）には、GPU1枚に22.5GB超が要ります。</p>
      <p>計画したRTX 5080は16GBで届きません。24GB以上は、買うと約100万円から。借りれば、48GBのA40が1時間約93円です。</p>
    </div>
    </div>
    <div class="side-r">
      <figure>
      <div class="seg" role="group" aria-label="用途を選ぶ">
        <button type="button" data-th="8" aria-pressed="false">推論 8GB超</button>
        <button type="button" data-th="22.5" aria-pressed="true">LoRA学習 22.5GB超</button>
        <button type="button" data-th="70" aria-pressed="false">全体の学習 70GB超</button>
      </div>
      <div class="memrows" id="memrows"></div>
      <figcaption>破線は、選んだ用途に要るGPUメモリ。斜線は足りないGPU、灰色は買うGPU（価格.comの単体最安）、黒は借りるGPU、橙は実際に借りたGPU（Runpod の1時間あたり・Secure Cloud）。</figcaption>
    </figure>
    </div>
  </div>
</section>

<section id="cost">
  <div class="wrap wide">
    <div class="cost-hero">
      <div class="cost-head">
        <div class="sec-head stack"><span class="sec-no" aria-hidden="true">02</span><h2><span class="ph">記録のある<span class="lat">7</span>回で</span><span class="ph">約<span class="lat">4,700</span>円。</span><br><span class="ph"><span class="lat">3</span>割は使っていない</span><span class="ph">時間の分だった</span></h2></div>
      <div class="cost-num">
        <b class="huge">¥4,677</b>
        <p class="huge-sub">Runpod の A40（48GB）を借りた、記録のある7回のGPU代</p>
        <p class="cost-split"><span><i class="sw sw-w"></i>作業していた時間 約3,300円</span><span><i class="sw sw-i"></i>置いていた時間 約1,400円</span></p>
      </div>
      </div>
      <div class="cost-chart">
        <figure>
      <div class="legend"><span><i style="background:var(--rent)"></i>作業していた時間</span><span><i style="background:var(--stripe)"></i>何もせずに置いていた時間</span></div>
      <div class="costcols" id="costrows"></div>
      <div class="costsum"><span>合計（記録のある回）</span><span class="costsum-sub">うち置いていた分 約1,400円</span><span class="v">¥4,677</span></div>
    </figure>
      </div>
    </div>
    <div class="video-row">
      <figure class="clip">
      <video src="/media/LOG361_v3_success_181602_red.mp4" poster="/media/LOG361_01_success_181602_red.jpg" controls muted playsinline preload="none"></video>
      <figcaption>この費用で学習させた π0.5 が、机の上のアーム（mechArm 270）で初めてブロックを箱に入れた回。横から撮った約3分20秒の動画です。<a href="/record/pi05-first-block-in-box">この回の記録を読む</a></figcaption>
    </figure>
      <div class="video-note">
        <span class="kicker">この金額で学習したAI</span>
    <div class="prose">
      <p>借りていた時間は記録のある回で約48時間、そのうち学習は、ログに残った時間の合計で約23.6時間でした（1ステップ6.5〜7.1秒）。<b>置いていた約1,400円は、学習が終わってから実機の準備ができるまで、Podを止めずに待っていた分です。</b>時間で払う以上、使わない時間にも料金はかかります。</p>
    </div>
      </div>
    </div>
  </div>
</section>

<section id="calc" class="band-tint">
  <div class="wrap wide">
    <div class="sec-head center"><span class="sec-no" aria-hidden="true">03</span><h2><span class="ph">買う方が安くなるのは、</span><span class="ph">月に何時間使うときか</span></h2></div>
    <div class="prose center-p"><p>PCの価格を使う年数で割った1か月分と、借りた場合の1か月分を比べます。初期値は、このプロジェクトの実際の使い方です。機材とサービスの料金だけの比較で、人の作業時間は入れていません。</p></div>
    <div class="calc">
      <div class="inputs">
        <div class="field">
          <label for="pc">買うPC</label>
          <select id="pc">
            <option value="1244980|0.75|32" selected>RTX 5090 32GB 搭載BTO（1,244,980円）</option>
            <option value="998800|0.65|24">RTX 4090 24GB 単体（998,800円・PC本体は別）</option>
            <option value="750000|0.55|16">RTX 5080 16GB 自作の見積もり（750,000円）</option>
            <option value="3400000|0.75|96">RTX PRO 6000 96GB 自作（約340万円）</option>
          </select>
        </div>
        <div class="field">
          <label for="cloud">借りるGPU</label>
          <select id="cloud">
            <option value="0.62|48" selected>A40 48GB Secure</option>
            <option value="0.38|48">A40 48GB Community</option>
            <option value="0.37|24">RTX 4090 24GB Community</option>
            <option value="1.22|32">RTX 5090 32GB Secure</option>
            <option value="1.82|80">A100 80GB Secure</option>
          </select>
        </div>
        <div class="field">
          <label for="hours"><span>使う時間</span><output id="hoursO">月120時間</output></label>
          <input type="range" id="hours" min="10" max="720" step="10" value="120">
          <span class="hint">借りるGPUで換算。私たちが一番多く使う月で約120時間。720時間＝毎日24時間</span>
        </div>
        <div class="field">
          <label for="idle"><span>置いておく時間</span><output id="idleO">30%</output></label>
          <input type="range" id="idle" min="0" max="60" step="5" value="30">
          <span class="hint">借りていた時間のうち、何もしていなかった割合。実績は約3割</span>
        </div>
        <div class="field">
          <label for="speed"><span>買うGPUの速さ</span><output id="speedO">1倍</output></label>
          <input type="range" id="speed" min="0.5" max="3" step="0.25" value="1">
          <span class="hint">借りるGPUの何倍か。私たちは測っていない（1倍＝同じ時間で終わる前提）
        </div>
        <div class="twocol">
          <div class="field">
            <label for="years"><span>使う年数</span><output id="yearsO">4年</output></label>
            <input type="range" id="years" min="1" max="6" step="1" value="4">
          </div>
          <div class="field">
            <label for="resale"><span>売って戻る</span><output id="resaleO">20%</output></label>
            <input type="range" id="resale" min="0" max="50" step="5" value="20">
          </div>
        </div>
        <div class="twocol">
          <div class="field"><label for="kwh">電気（円/kWh）</label><input type="number" id="kwh" value="31" min="0" step="1"></div>
          <div class="field"><label for="fx">1ドル（円）</label><input type="number" id="fx" value="158" min="1" step="1"></div>
        </div>
      </div>
      <div class="result">
        <p class="verdict-big" id="verdict"></p>
        <div class="kpis">
          <div class="kpi"><div class="k">借りる 1か月</div><div class="v" id="kRent"></div></div>
          <div class="kpi"><div class="k">買う 1か月（PC代＋電気）</div><div class="v" id="kBuy"></div></div>
          <div class="kpi"><div class="k">買う方が安くなる使用時間</div><div class="v" id="kBe"></div></div>
        </div>
        <div id="memWarn" class="warn" hidden></div>
        <div class="chartbox" id="chartbox"><svg id="chart" viewBox="0 0 560 250" role="img" aria-label="使った月数ごとの合計費用。買う場合と借りる場合"></svg><div class="tip" id="tip" hidden></div></div>
        <details>
          <summary>計算式と前提</summary>
          <pre>借りる（円/月）＝ 1時間の料金（円）× 使う時間 ÷（1 − 置く時間の割合）
買う（円/月）　＝（PC価格 − 売却額）÷（年数×12）＋ 消費電力kW ×（使う時間 ÷ 速さ）× 電気単価
買う方が安くなる時間 ＝ PC代の月額 ÷［1時間の料金 ÷（1 − 置く時間の割合）− 消費電力kW × 電気単価 ÷ 速さ］

・使う時間は、借りるGPUで同じ学習にかかる時間
・消費電力はPC全体の目安で、実測ではない（RTX 5090はGPUだけで575W）
・1時間の料金は、Runpod のドル建ての公開価格（秒単位で課金）に、Pod のディスク200GB（動いている間だけ課金）の分を足し、為替で円にした値。止めている間の保存料は入れていない
・RTX 5090 搭載BTOはドスパラの GALLERIA XPR7A-R59（2026年10月23日の価格）
・売却で戻る割合と電気単価は仮の値。自社の値に変えて使う</pre>
        </details>
      </div>
    </div>
    <div class="cta-inline">
      <span>自社の台数・使い方で試算したい場合は、条件を送ってもらえれば計算します。</span>
      <a class="btn" href="/message?topic=physical-ai">試算を相談する<i class="ms" aria-hidden="true">arrow_forward</i></a>
    </div>
  </div>
</section>

<section id="compare" class="band-white">
  <div class="wrap wide">
    <div class="sec-head"><span class="sec-no" aria-hidden="true">04</span><h2><span class="ph">買うと借りるを</span><span class="ph"><span class="lat">9</span>項目で比べる</span></h2></div>
    <div class="duel" role="table" aria-label="買うと借りるの比較。強い側を黒で塗っている">
      <div class="duel-row duel-head" role="row"><div class="d-b" role="columnheader">自宅に買う</div><div class="d-n" role="columnheader"><span class="sr">項目</span></div><div class="d-r" role="columnheader">Runpod で借りる</div></div>
      <div class="duel-row" role="row"><div class="d-b" role="cell">75万〜124万円</div><div class="d-n" role="rowheader">はじめる費用</div><div class="d-r win" role="cell"><span class="sr">強い：</span>約1,600円（10ドル）の入金から</div></div>
      <div class="duel-row" role="row"><div class="d-b" role="cell">買ったGPUで固定</div><div class="d-n" role="rowheader">使えるメモリ</div><div class="d-r win" role="cell"><span class="sr">強い：</span>回ごとに16〜180GBから選べる</div></div>
      <div class="duel-row" role="row"><div class="d-b win" role="cell"><span class="sr">強い：</span>電気代だけ（1時間約23円）</div><div class="d-n" role="rowheader">長く回すときの費用</div><div class="d-r" role="cell">A40で1時間約98円。止め忘れも課金</div></div>
      <div class="duel-row" role="row"><div class="d-b win" role="cell"><span class="sr">強い：</span>電源を入れるだけ</div><div class="d-n" role="rowheader">すぐ使えるか</div><div class="d-r" role="cell">立ち上げ約1時間10分。空き待ちもある</div></div>
      <div class="duel-row" role="row"><div class="d-b win" role="cell"><span class="sr">強い：</span>同じ机の上</div><div class="d-n" role="rowheader">ロボットとの距離</div><div class="d-r" role="cell">私たちの環境（秋田→米国）で往復0.6〜1.6秒</div></div>
      <div class="duel-row" role="row"><div class="d-b win" role="cell"><span class="sr">強い：</span>社外に出さずに済む</div><div class="d-n" role="rowheader">データの扱い</div><div class="d-r" role="cell">社外に出してよいかの確認が要る。転送に時間がかかる</div></div>
      <div class="duel-row" role="row"><div class="d-b" role="cell">同じ部品を同じ値段でそろえにくい</div><div class="d-n" role="rowheader">他人が同じ環境を作れるか</div><div class="d-r win" role="cell"><span class="sr">強い：</span>空きと地域の条件が合えば、同じGPUを借りられる</div></div>
      <div class="duel-row" role="row"><div class="d-b" role="cell">自分で持つ</div><div class="d-n" role="rowheader">置き場所・熱・故障</div><div class="d-r win" role="cell"><span class="sr">強い：</span>持たない</div></div>
      <div class="duel-row" role="row"><div class="d-b win" role="cell"><span class="sr">強い：</span>円</div><div class="d-n" role="rowheader">支払いの通貨</div><div class="d-r" role="cell">ドル建て。円の額は為替で変わる</div></div>
      <div class="duel-row duel-foot" role="row"><div class="d-b" role="cell"><b>5</b>項目</div><div class="d-n" role="cell">強い項目の数</div><div class="d-r" role="cell"><b>4</b>項目</div></div>
    </div>
    <div class="cmp-bottom">
        <p class="cmp-note">借りる側の弱い項目は、どれも実際に起きたことです。</p>
        <div class="cons">
      <div class="con"><div class="v">約3割</div><h3>使っていない時間の課金</h3><p>学習が終わってから実機の準備ができるまで、Podを置いたままにした。</p></div>
      <div class="con"><div class="v">4時間20分</div><h3>空き待ち</h3><p>早朝にA40を予約したが、起動は11時前後。空いていたのは16GBのGPUだけだった。</p></div>
      <div class="con"><div class="v">1時間10分</div><h3>毎回の立ち上げ</h3><p>起動6分、ライブラリの導入約20分、学習済みモデルの送信約40分。</p></div>
      <div class="con"><div class="v">0.6〜1.6秒</div><h3>往復の遅れ</h3><p>秋田のMacから米国のデータセンターまで。1回目は準備で約55秒かかる。</p></div>
    </div>
    </div>
  </div>
</section>

<section id="reverse" class="band-quote">
  <div class="wrap wide quote">
    <span class="kicker">予想と逆だったこと</span>
    <blockquote>借りた環境は、他人が再現できないと思っていた。</blockquote>
    <p>研究室を作り始めたときは、借りた環境は他人が再現できないと考えて、PCを自作するつもりでした。実際には、GPUの型番と手順を書いておけば、読んだ人は空きと地域の条件が合う限り、同じA40を1時間約93円で借りられます。</p>
    <p>自作のPCは、同じ部品を同じ値段でそろえるのが難しくなっています。RTX 5090を積んだBTOの最安は、5月に約60万円だったものが、10月は約124万円です（同じ構成どうしの比較ではありません）。どちらの場合も、同じ結果にたどり着くには、コードの版・使ったライブラリ・学習の設定・データの記録が要ります。</p>
  </div>
</section>

<section id="flow">
  <div class="wrap wide side">
    <div class="side-l">
      <div class="sec-head"><span class="sec-no" aria-hidden="true">05</span><h2><span class="ph">あなたの場合はどちらか：</span><span class="ph"><span class="lat">4</span>つの質問</span></h2></div>
      <div class="prose"><p>答えを選ぶと、次の質問が出ます。最後に「借りる」「買う」「併用」「まず借りて測る」のどれが合うかを出します。使用時間の分かれ目は、上の計算機の条件に合わせて変わります。</p></div>
    </div>
    <div class="side-r">
      <div class="flow" id="flowbox" aria-live="polite"></div>
    </div>
  </div>
</section>

<section id="checklist">
  <div class="wrap wide">
    <div class="chk-head">
      <div class="sec-head"><span class="sec-no" aria-hidden="true">06</span><h2><span class="ph">借りるなら、</span><span class="ph">最初に決めておく<span class="lat">7</span>つ</span></h2></div>
      <p class="chk-lead">どれも、このプロジェクトで一度失敗したことです。</p>
    </div>
    <ol class="checks">
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><rect x="18" y="2" width="12" height="5"/><circle cx="24" cy="27" r="19"/><path class="w" d="M24 16v11l7 5"/></svg></span><div><b>実機を動かす時間を決めてから Pod を作る</b><span>置いていた時間の約1,400円は、これで払わずに済んだ。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><rect x="3" y="7" width="42" height="34"/><path class="w" d="M11 18l7 6-7 6"/><path class="w" d="M22 31h13"/></svg></span><div><b>作るときにSSHのポート（TCP 22）を開けておく</b><span>後から開けると Pod が作り直され、準備が消えた。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><rect x="5" y="8" width="38" height="32"/><rect class="wf" x="17" y="15" width="5" height="12"/><rect class="wf" x="26" y="15" width="5" height="12"/><rect class="wf" x="5" y="31" width="38" height="2.5"/></svg></span><div><b>止めるか削除するかを、保存料と作り直す手間で決める</b><span>停止中もディスクの料金はかかる。作り直すと、私たちの場合は約1時間10分かかった。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><path d="M19 3h10v18h9L24 35 10 21h9z"/><path d="M3 30h7v8h28v-8h7v15H3z"/></svg></span><div><b>削除の前に、モデルとログを手元へ</b><span>届いたファイルが読み込めるかまで確かめる。サイズだけ見て、途中で切れたまま読み込んで失敗した。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><rect x="3" y="6" width="42" height="36"/><rect class="wf" x="25" y="6" width="3" height="36"/><rect class="wf" x="28" y="23" width="17" height="3"/></svg></span><div><b>学習は tmux の中で動かす</b><span>手元のターミナルが固まっても、学習は止まらなかった。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><path class="s" d="M9 25A15 15 0 0 1 35 14"/><path d="M41 5v15H26z"/><path class="s" d="M39 23A15 15 0 0 1 13 34"/><path d="M7 43V28h15z"/></svg></span><div><b>学習した Pod で、そのまま推論する</b><span>モデルの往復の転送（約1時間）がなくなる。</span></div></li>
      <li><span class="n"><svg class="ico" viewBox="0 0 48 48" aria-hidden="true"><path d="M8 2h32v44l-5.3-3.5L29.3 46 24 42.5 18.7 46l-5.4-3.5L8 46z"/><path class="w" d="M15 13h18M15 21h18M15 29h11"/></svg></span><div><b>GPUの型番・時間・費用を毎回書く</b><span>書かなかった回は、合計に入れられなかった。</span></div></li>
    </ol>
  </div>
</section>

<section id="next" class="cta-x">
  <div class="wrap wide">
    <div class="cta-x-in">
      <div class="cta-x-copy">
        <p class="cta-x-k">GPU代 ¥4,677 で、ここまで動いた。</p>
        <h2>次は、<br>あなたのロボットで。</h2>
        <p class="cta-x-sub">台数・使い方・データの条件を送ってもらえれば、このページと同じ計算で、買う場合と借りる場合を並べてお返しします。学習環境の立ち上げの相談も受け付けています。</p>
      </div>
      <div class="cta-x-act">
        <a class="cta-x-main" href="/message?topic=physical-ai"><span><small>自社の条件で</small>試算・立ち上げを相談する</span><i class="ms" aria-hidden="true">arrow_forward</i></a>
      </div>
    </div>
  </div>
</section>

<section style="padding-top:32px">
  <div class="wrap sources">
    <details>
      <summary>出典と記録</summary>
      <ul>
        <li>実測：フィジカルAI研究室 <a href="/record/building-a-physical-ai-lab-at-home">Log#1（PCの計画）</a>・<a href="/record/openpi-remote-inference-first-run">Log#2</a>・<a href="/record/pi05-libero-benchmark-first-run">Log#3</a>・<a href="/record/pi05-mecharm-demo-to-inference">Log#4</a>・<a href="/record/pi05-mecharm-lora-2000-steps">Log#5</a>・<a href="/record/pi05-mecharm-first-real-run">Log#6</a>・<a href="/record/pi05-mecharm-4000-steps">Log#7</a>・<a href="/record/pi05-retrain-five-positions">Log#10</a>・<a href="/record/pi05-learned-the-pauses">Log#11</a>・<a href="/record/pi05-first-block-in-box">Log#12</a></li>
        <li>GPUメモリの目安：<a href="https://github.com/Physical-Intelligence/openpi">openpi README</a>（GPU1枚の場合の推定。推論 >8GB・LoRA >22.5GB・全体 >70GB）</li>
        <li>借りる価格：<a href="https://www.runpod.io/pricing">Runpod Pricing</a>（2026年10月8日更新）、<a href="https://docs.runpod.io/pods/pricing">Pod の料金とディスク</a>、<a href="https://docs.runpod.io/pods/storage/types">ストレージの種類</a>、<a href="https://docs.runpod.io/references/security-and-compliance">セキュリティ</a></li>
        <li>買う価格：<a href="https://kakaku.com/pc/videocard/itemlist.aspx?pdf_Spec103=500">価格.com</a>（RTX 5090 1,199,800円・RTX 5080 295,799円・RTX 4090 998,800円）、<a href="https://www.dospara.co.jp/gamepc?prefn1=txGraphicFilter&prefv1=GeForce%20RTX%205090">ドスパラ RTX 5090搭載モデル</a>（デスクトップ最安 GALLERIA XPR7A-R59・1,244,980円・2026年10月23日）、<a href="https://gazlog.jp/entry/geforce-rtx5090-bto-more-cheap/">GAZLOG 2026年5月</a></li>
        <li>電気：<a href="https://www.eftc.or.jp/qa/">全国家庭電気製品公正取引協議会</a>（目安単価31円/kWh）、<a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5090/">NVIDIA RTX 5090</a>（575W）</li>
        <li>為替：欧州中央銀行の参照レート（2026年10月19〜22日、157〜158円）</li>
        <li>検証：このページは公開後に、別のAI（ChatGPT）に誤りや言い過ぎを探してもらい、指摘をもとに直しています（2026年10月23日）</li>
      </ul>
    </details>
  </div>
</section>
  </div>
</Base>
<script is:inline>
(function(){
  // ---- 1. GPUメモリの図 ----
  var gpus=[
    {n:"RTX 5080",s:"最初に計画したPC",gb:16,price:"¥295,799",cls:"buyg"},
    {n:"RTX 4090",s:"買う",gb:24,price:"¥998,800",cls:"buyg"},
    {n:"RTX 5090",s:"買う",gb:32,price:"¥1,199,800",cls:"buyg"},
    {n:"A40",s:"実際に借りたGPU",gb:48,price:"<small>約</small>93<small>円/時</small>",cls:"rentg",act:1},
    {n:"A100",s:"借りる",gb:80,price:"<small>約</small>283<small>円/時</small>",cls:"rentg"}
  ];
  var MAX=90, rows=document.getElementById("memrows");
  gpus.forEach(function(g){
    var r=document.createElement("div");r.className="memrow"+(g.act?" actual":"");
    r.innerHTML='<div class="name">'+g.n+(g.s?'<small>'+g.s+'</small>':'')+'</div>'+
      '<div class="track"><div class="bar '+g.cls+'" style="width:'+(g.gb/MAX*100)+'%"><span class="gb">'+g.gb+'GB</span></div><div class="thresh"></div></div>'+
      '<div class="res"><b></b>'+g.price+'</div>';
    rows.appendChild(r);g.el=r;
  });
  function setTh(th){
    gpus.forEach(function(g){
      var ok=g.gb>=th, bar=g.el.querySelector(".bar");
      bar.classList.toggle("ok",ok);bar.classList.toggle("ng",!ok);
      g.el.querySelector(".thresh").style.left=(th/MAX*100)+"%";
      g.el.querySelector(".res b").textContent=ok?"足りる":"足りない";
    });
    document.querySelectorAll(".seg button").forEach(function(b){b.setAttribute("aria-pressed",String(+b.dataset.th===th));});
  }
  document.querySelectorAll(".seg button").forEach(function(b){b.addEventListener("click",function(){setTh(+b.dataset.th);});});
  setTh(22.5);

  // ---- 2. 費用の図 ----
  var runs=[
    ["Log#2","推論を初めて動かす（35分）",0.34,0],
    ["Log#3","GPUメモリを測る（52分）",0.51,0],
    ["Log#4","試しに200ステップ学習",0.6,0],
    ["Log#5","2,000ステップ学習",7.3,3.7],
    ["Log#6・7","実機で推論＋2,050ステップ追加",9.0,5.0],
    ["Log#10","4,000ステップ学習し直し",5.45,0],
    ["Log#11","4,000ステップ学習",6.4,0]
  ];
  var FX=158, CM=9.5, cr=document.getElementById("costrows");
  runs.forEach(function(r){
    var work=r[2]-r[3], d=document.createElement("div");d.className="costcol";
    d.innerHTML='<div class="cbar" title="'+r[1]+'：約'+Math.round(r[2]*FX).toLocaleString('ja-JP')+'円'+(r[3]?'（うち置いていた分 約'+Math.round(r[3]*FX).toLocaleString('ja-JP')+'円）':'')+'">'+
      '<div class="v">¥'+Math.round(r[2]*FX).toLocaleString('ja-JP')+'</div>'+
      (r[3]?'<i class="idle" style="--p:'+(r[3]/CM*100)+'%"></i>':'')+'<i class="work" style="--p:'+(work/CM*100)+'%"></i></div>'+
      '<div class="t">'+r[1]+'<small>'+r[0]+'</small></div>';
    cr.appendChild(d);
  });

  // ---- 3. 損益分岐の計算 ----
  var $=function(id){return document.getElementById(id)};
  var yen=function(v){return "¥"+Math.round(v).toLocaleString("ja-JP")};
  var man=function(v){return (v/10000).toFixed(v>=1e6?0:1).replace(/\.0$/,"")+"万円"};
  function css(name){return getComputedStyle(document.getElementById("chart")||document.querySelector(".gbr")||document.documentElement).getPropertyValue(name).trim()}
  function calc(){
    var pc=$("pc").value.split("|").map(Number), cl=$("cloud").value.split("|").map(Number);
    var price=pc[0], kw=pc[1], pcMem=pc[2], rate=cl[0], clMem=cl[1];
    var h=+$("hours").value, idle=+$("idle").value/100, yrs=+$("years").value, resale=+$("resale").value/100, sp=+$("speed").value||1;
    var kwh=Math.max(0,+$("kwh").value||0), fx=Math.max(1,+$("fx").value||158);
    $("hoursO").textContent="月"+h+"時間"; $("idleO").textContent=Math.round(idle*100)+"%";
    $("speedO").textContent=sp+"倍";$("yearsO").textContent=yrs+"年"; $("resaleO").textContent=Math.round(resale*100)+"%";
    Array.prototype.forEach.call($("cloud").options,function(o){
      if(!o.dataset.name)o.dataset.name=o.textContent.trim();
      var d=+o.value.split("|")[0]; o.textContent=o.dataset.name+"（約"+Math.round(d*fx)+"円／"+d.toFixed(2)+"ドル）";
    });
    var months=yrs*12, rentHour=rate*fx/(1-idle), powerHour=kw*kwh/sp;
    var rentM=rentHour*h, pcFix=price*(1-resale)/months, buyM=pcFix+powerHour*h;
    $("kRent").innerHTML=yen(rentM);
    $("kBuy").innerHTML=yen(buyM);
    var diff=rentHour-powerHour, be=diff>0?pcFix/diff:Infinity;
    $("kBe").innerHTML=isFinite(be)?(be>720?'<span>720時間超</span><small> 24時間でも届かない</small>':'<i>月</i>'+Math.round(be)+'<i>時間</i><small> 1日'+(be/30).toFixed(1)+'時間</small>'):'なし';
    var totalRent=rentM*months, totalBuy=buyM*months, gap=Math.abs(totalRent-totalBuy);
    var v=$("verdict");
    var note=sp===1?'（速さが同じ場合）':'';
    if(totalRent<totalBuy){v.innerHTML='月'+h+'時間なら、'+yrs+'年で <span class="rent">借りる方が'+man(gap)+'安い</span>'+note+'。';}
    else{v.innerHTML='月'+h+'時間なら、'+yrs+'年で <span class="buy">買う方が'+man(gap)+'安い</span>'+note+'。';}
    var w=$("memWarn"), msgs=[];
    if(pcMem<22.5){msgs.push("このPC（"+pcMem+"GB）は、π0.5のLoRA学習の目安（GPU1枚で22.5GB超）に届かないため、比較の対象外です。数字は参考です。");v.innerHTML='このPCは、π0.5 の追加学習の目安に届かないため<span class="buy">比較の対象外</span>です。';}
    if(clMem<22.5)msgs.push("このGPU（"+clMem+"GB）は、π0.5のLoRA学習の目安に届かないため、比較の対象外です。");
    w.hidden=!msgs.length; w.textContent=msgs.join(" ");
    window.__gbrBe=be; if(window.__gbrFlow)window.__gbrFlow();
    draw(months,price*(1-resale),powerHour*h,rentM);
  }
  function draw(months,net,powerM,rentM){
    var svg=$("chart"),W=560,H=250,L=56,R=12,T=14,B=34;
    var maxY=Math.max(net+powerM*months,rentM*months)*1.15||1;
    var x=function(m){return L+(W-L-R)*m/months}, y=function(v){return T+(H-T-B)*(1-v/maxY)};
    var ink=css("--muted"), rule=css("--rule"), rent=css("--act")||css("--rent"), buy=css("--buy"), fg=css("--ink");
    var step=niceStep(maxY/4), s='';
    for(var g=0;g<=maxY;g+=step){s+='<line x1="'+L+'" x2="'+(W-R)+'" y1="'+y(g)+'" y2="'+y(g)+'" stroke="'+rule+'" stroke-width="1"/>'+
      '<text x="'+(L-8)+'" y="'+(y(g)+4)+'" text-anchor="end" font-size="12" font-weight="700" fill="'+ink+'" font-family="Manrope,sans-serif">'+(g/10000).toLocaleString("ja-JP")+'万</text>';}
    for(var yr=0;yr<=months/12;yr++){s+='<text x="'+x(yr*12)+'" y="'+(H-12)+'" text-anchor="middle" font-size="12" font-weight="700" fill="'+ink+'" font-family="Manrope,sans-serif">'+yr+'年</text>';}
    s+='<line x1="'+L+'" x2="'+(W-R)+'" y1="'+y(0)+'" y2="'+y(0)+'" stroke="'+fg+'" stroke-width="1"/>';
    s+='<line x1="'+x(0)+'" y1="'+y(net)+'" x2="'+x(months)+'" y2="'+y(net+powerM*months)+'" stroke="'+buy+'" stroke-width="1.5" stroke-dasharray="5 4"/>';
    s+='<line x1="'+x(0)+'" y1="'+y(0)+'" x2="'+x(months)+'" y2="'+y(rentM*months)+'" stroke="'+rent+'" stroke-width="2.5"/>';
    var d=rentM-powerM;
    if(d>0){var mx=net/d; if(mx<=months){s+='<circle cx="'+x(mx)+'" cy="'+y(rentM*mx)+'" r="5" fill="'+css("--sheet")+'" stroke="'+fg+'" stroke-width="2"/>'+
      '<text x="'+Math.min(x(mx)+8,W-R-90)+'" y="'+(y(rentM*mx)-10)+'" font-size="11" fill="'+fg+'" font-family="Manrope,Noto Sans JP,sans-serif" font-weight="700" stroke="'+css("--sheet")+'" stroke-width="5" paint-order="stroke">'+(mx/12).toFixed(1)+'年で逆転</text>';}}
    var lx=x(months)-4;
    s+='<text x="'+lx+'" y="'+(y(net+powerM*months)-8)+'" text-anchor="end" font-size="12" font-weight="700" fill="'+buy+'" font-family="IBM Plex Sans JP,sans-serif">買う</text>';
    s+='<text x="'+lx+'" y="'+(y(rentM*months)+(rentM*months>net+powerM*months?-8:16))+'" text-anchor="end" font-size="12" font-weight="700" fill="'+rent+'" font-family="IBM Plex Sans JP,sans-serif">借りる</text>';
    s+='<line id="hx" x1="0" x2="0" y1="'+T+'" y2="'+(H-B)+'" stroke="'+fg+'" stroke-width="1" opacity="0"/>';
    s+='<rect x="'+L+'" y="'+T+'" width="'+(W-L-R)+'" height="'+(H-T-B)+'" fill="transparent" id="hit"/>';
    svg.innerHTML=s;
    var hit=$("hit"),hx=$("hx"),tip=$("tip"),box=$("chartbox");
    function move(ev){var r=svg.getBoundingClientRect(),px=(ev.clientX-r.left)*W/r.width;
      var m=Math.max(0,Math.min(months,Math.round((px-L)/(W-L-R)*months)));
      hx.setAttribute("x1",x(m));hx.setAttribute("x2",x(m));hx.setAttribute("opacity",".5");
      tip.hidden=false;tip.style.left=(x(m)*r.width/W)+"px";tip.style.top=(T*r.height/H+4)+"px";
      tip.innerHTML=m+"か月目<br>買う "+yen(net+powerM*m)+"<br>借りる "+yen(rentM*m);}
    hit.addEventListener("pointermove",move);hit.addEventListener("pointerdown",move);
    hit.addEventListener("pointerleave",function(){tip.hidden=true;hx.setAttribute("opacity","0");});
  }
  function niceStep(v){var p=Math.pow(10,Math.floor(Math.log10(v))),n=v/p;return (n<=1?1:n<=2?2:n<=5?5:10)*p;}
  ["pc","cloud","hours","idle","speed","years","resale","kwh","fx"].forEach(function(id){$(id).addEventListener("input",calc);});
  calc();
  try{window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",calc);}catch(e){}
  new MutationObserver(calc).observe(document.documentElement,{attributes:true,attributeFilter:["data-theme"]});

  // ---- 5. 判定フロー ----
  var Q={
    data:{q:"学習に使うデータ（現場の映像・顧客の設備・未公開の製品など）を、社外のクラウドに送ってよいですか？",o:[["送ってよい","mem"],["送れない","!onprem"],["まだ分からない","!approve"]]},
    mem:{q:"使うAIの学習に要るGPUメモリは、買えるGPU（32GBまで）に収まりますか？",o:[["収まる","hours"],["収まらない・まだ分からない","!rent-mem"]]},
    hours:{q:"",o:[]},
    robot:{q:"AIの答えを待てない動かし方をしますか？（私たちの環境では、米国のGPUとの往復に0.6〜1.6秒かかった）",o:[["待てない","!hybrid"],["待てる（学習が中心）","!rent"]]}
  };
  var OUT={
    "onprem":["buy","手元か、条件を確かめた国内のクラウドで動かす","データを社外に出せないなら、自社のPCか、契約・保存場所・削除の条件を確かめた国内のクラウドで学習します。買う前に、機密でないデータで、必要なメモリと時間を測ってください。"],
    "approve":["","先に社内の承認を確かめる","送るデータ、送り先の会社と地域、保存と削除の条件を、社内のルールで確かめてください。待つ間は、機密でないデータで必要なメモリと時間を測れます。"],
    "rent-mem":["","まず借りて、メモリを測る","メモリが分からないまま買うと、足りないPCを買うことがあります。目的の処理が動く最小のGPUを時間で借りて、使ったメモリ・時間・ディスクを測ってから決めてください。"],
    "rent":["","借りる（Runpod など）","学習の時だけ借りるのが安く、GPUの大きさも回ごとに変えられます。6章の7つを最初に決めておくと、使っていない時間の課金を減らせます。"],
    "hybrid":["","併用：学習は借りる、推論は手元","学習は借りたGPUで回し、ロボットを動かす推論だけを手元のGPUで動かすと、遠くとの往復の遅れがなくなります。手元のGPU代と電気代が別にかかります。推論に要るメモリと速さは、使うモデルで測って確かめてください。"],
    "buy":["buy","買う方が安くなりやすい","1年の使用時間が、いまの計算機の条件での分かれ目を超えています。ただし速さの違いは測っていません。買う前に、そのGPUで同じ学習を回した時間とメモリを、借りて測ってください。"]
  };
  var box2=document.getElementById("flowbox"), ans=[];
  function render(){
    var h="", node="data", end=null;
    for(var k=0;;k++){
      var q=Q[node], a=ans[k];
      if(node==="hours"){var be=window.__gbrBe;
        if(isFinite(be)&&be<=720){var yr=Math.round(be*12/100)*100;
          q={q:"1年でGPUを何時間使いますか？（忙しい月も休む月も入れた合計。借りるGPUで換算）",o:[["約"+yr.toLocaleString("ja-JP")+"時間より少ない","robot"],["約"+yr.toLocaleString("ja-JP")+"時間以上","!buy"]]};}
        else{q={q:"いまの計算機の条件では、24時間回し続けても買う方は安くなりません。次へ進んでください。",o:[["次へ","robot"]]};}}
      h+='<div class="step'+(a!==undefined?' done':'')+'"><div class="q"><span class="n">Q'+(k+1)+'</span>'+q.q+'</div><div class="opts">';
      q.o.forEach(function(o,j){h+='<button type="button" data-k="'+k+'" data-j="'+j+'" aria-pressed="'+(a===j)+'">'+o[0]+'</button>';});
      h+='</div></div>';
      if(a===undefined)break;
      var nx=q.o[a][1];
      if(nx.charAt(0)==="!"){end=nx.slice(1);break;}
      node=nx;
    }
    if(end){var o=OUT[end];h+='<div class="outcome '+o[0]+'"><div class="label">おすすめ</div><h3>'+o[1]+'</h3><p>'+o[2]+'</p></div><button type="button" class="reset">最初から答え直す</button>';}
    box2.innerHTML=h;
    box2.querySelectorAll(".opts button").forEach(function(b){b.addEventListener("click",function(){var k=+b.dataset.k;ans=ans.slice(0,k);ans.push(+b.dataset.j);render();});});
    var rs=box2.querySelector(".reset"); if(rs)rs.addEventListener("click",function(){ans=[];render();});
  }
  window.__gbrFlow=render;
  render();
})();
</script>
<style is:global>
.gbr{
  --paper:#f4f5f7; --sheet:#ffffff; --ink:#121418; --muted:#5c616b; --rule:#e2e4e9;
  /* ---- 色の札：差し色はここだけで決める。色を戻すときは、各行の右の「色あり」の値に替える ---- */
  --rent:#121418;          /* 借りる・実費の差し色　　　色あり #2a56d4 */
  --rent-soft:#e4e6ea;     /* 借りるの薄い面　　　　　　色あり #e6ecfb */
  --rent-on-dark:#ffffff;  /* 暗い帯の上の差し色　　　　色あり #9db3f6 */
  --buy:#6b707a;           /* 買う・見積もりの差し色　　色あり #b7500f */
  --buy-soft:#eceef1;      /* 買うの薄い面　　　　　　　色あり #fbece4 */
  --buy-deep:#3c414b;      /* 注意書きの文字　　　　　　色あり #7a3800 */
  --quote-bg:#2b2e35;      /* 引用の帯の地　　　　　　　色あり #2a56d4 */
  --quote-sub:#c8ccd4;     /* 引用の帯の小さな文字　　　色あり #cdd9ff */
  --quote-text:#e4e6eb;    /* 引用の帯の本文　　　　　　色あり #e3e9ff */
  --act:#f2600c;           /* 差し色：実際に借りて払った分（A40・実費）だけに使う */
  --photo-filter:grayscale(1); /* 写真の色　　　　　　　色あり none */
  --stripe:repeating-linear-gradient(135deg,var(--ink) 0 2.5px,transparent 2.5px 5px); /* ストライプはこれ1種類だけ（黒と白が同じ太さの斜線） */
  --gut:max(16px,env(safe-area-inset-left,0px));
  --sans:"Manrope","Noto Sans JP","Hiragino Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --body:36em; --wide:60rem;
}
.gbr, .gbr *{box-sizing:border-box}
.gbr{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.75;letter-spacing:.02em;
  padding:48px 0 0;
  text-autospace:normal;-webkit-font-smoothing:antialiased}
.gbr a{color:var(--rent);text-underline-offset:3px}
.gbr p a,.gbr figcaption a,.gbr li a,.gbr td a,.gbr dd a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.gbr p a:hover,.gbr figcaption a:hover,.gbr li a:hover,.gbr td a:hover,.gbr dd a:hover{text-decoration-thickness:2px}
.gbr a:focus-visible,.gbr button:focus-visible,.gbr input:focus-visible,.gbr select:focus-visible{outline:2px solid var(--rent);outline-offset:2px}
.gbr .wrap{max-width:calc(var(--wide) + 2*var(--gut));margin:0 auto;padding-inline:var(--gut)}
.gbr .prose{max-width:var(--body)}
.gbr .num,.gbr .mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}
.gbr h1,.gbr h2,.gbr h3{text-wrap:balance;letter-spacing:0}
.gbr h2{font-size:clamp(1.75rem,3.3vw,2.55rem);line-height:1.3;margin:0;font-weight:800;letter-spacing:-.005em}
.gbr h3{font-size:1.06rem;line-height:1.5;margin:0 0 .4rem}
.gbr p{margin:0 0 1em}
.gbr .label{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.gbr section{padding-block:80px}
.gbr section > .wrap{display:grid;gap:20px}
.gbr .lede-line{font-weight:700;border-left:3px solid var(--ink);padding-left:12px;margin:0}
.gbr header.hero{padding-block:40px 8px}
.gbr header.hero .wrap{display:grid;gap:18px}
.gbr .hero h1{font-size:clamp(1.9rem,5.2vw,3.1rem);line-height:1.22;margin:0;font-weight:700}
.gbr .hero h1 span{display:block;color:var(--muted);font-weight:500;font-size:.62em;margin-top:.35em}
.gbr .meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.85rem;color:var(--muted)}
.gbr .tickets{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
.gbr .ticket{background:var(--sheet);border:1.5px solid var(--ink);padding:18px 20px 16px;display:grid;gap:6px;min-width:0;position:relative}
.gbr .ticket .what{font-size:.92rem;color:var(--muted);padding-right:6.5rem}
.gbr .ticket .big{font-family:var(--mono);font-weight:600;font-size:clamp(2rem,6vw,3.2rem);line-height:1.05;font-variant-numeric:tabular-nums}
.gbr .ticket.buy .big{color:var(--buy);text-decoration:line-through;text-decoration-thickness:3px}
.gbr .ticket.rent .big{color:var(--rent)}
.gbr .ticket .sub{font-family:var(--mono);font-size:.82rem;color:var(--muted)}
.gbr .ticket .verdict{font-size:.92rem;font-weight:500;border-top:1px dashed var(--rule);padding-top:8px;margin-top:4px}
.gbr .stamp{position:absolute;top:14px;right:14px;font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;border:1.5px solid currentColor;padding:2px 8px;transform:rotate(-4deg)}
.gbr .ticket.buy .stamp{color:var(--buy)}
.gbr .ticket.rent .stamp{color:var(--rent)}
.gbr .tldr{background:var(--sheet);border:1px solid var(--rule);padding:20px 22px;display:grid;gap:12px}
.gbr .tldr ol{margin:0;padding-left:1.3em;display:grid;gap:8px}
.gbr .toc{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.gbr .toc a{position:relative;font-size:.85rem;font-weight:700;text-decoration:none;padding:14px 34px 14px 14px;color:var(--ink);background:#eceef1;display:grid;gap:2px;line-height:1.4;transition:background .15s,color .15s}
.gbr .toc a i{font-style:normal;font-family:'Manrope',sans-serif;font-weight:800;color:var(--muted);font-size:.8rem}
.gbr .toc a::after{content:"↓";position:absolute;right:12px;bottom:13px;font-family:'Manrope',sans-serif;font-weight:800;font-size:1rem;line-height:1;transition:transform .15s}
.gbr .toc a:hover{background:var(--ink);color:#fff}
.gbr .toc a:hover i{color:#c8ccd4}
.gbr .toc a:hover::after{transform:translateY(3px)}
.gbr figure{margin:0;background:var(--sheet);border:1px solid var(--rule);padding:20px;display:grid;gap:14px;min-width:0}
.gbr figcaption{font-size:.82rem;color:var(--muted);line-height:1.6}
.gbr .seg{display:flex;flex-wrap:wrap;gap:6px}
.gbr .seg button{font:inherit;font-size:.85rem;padding:6px 12px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer}
.gbr .seg button[aria-pressed="true"]{background:var(--ink);color:var(--sheet)}
.gbr .memrows{display:grid;gap:10px}
.gbr #memory figure{padding:36px 36px 30px;gap:26px}
.gbr #memory .memrows{gap:22px}
.gbr .memrow{display:grid;grid-template-columns:8.5rem 1fr 7.5rem;gap:12px;align-items:center}
.gbr .memrow .name{font-family:"Manrope","Noto Sans JP",sans-serif;font-size:1.05rem;font-weight:800;line-height:1.3;letter-spacing:-.01em}
.gbr .memrow .name small{font-family:var(--sans);font-weight:500;letter-spacing:0;margin-top:2px}
.gbr .memrow .name small{display:block;color:var(--muted);font-size:.75rem}
.gbr .track{position:relative;height:26px;background:transparent;border-bottom:1px solid var(--rule)}
.gbr .bar{position:absolute;left:0;top:3px;bottom:3px;border-radius:0;transition:background .3s,opacity .3s}
.gbr .bar.buyg.ok{background:var(--buy)}
.gbr .bar.rentg.ok{background:var(--rent)}
.gbr .bar.ng{outline:0}
.gbr .bar.buyg.ng{background:var(--stripe)}
.gbr .bar.rentg.ng{background:var(--stripe)}
.gbr .bar .gb{position:absolute;right:-3.4em;top:50%;transform:translateY(-50%);font-family:"Manrope",sans-serif;font-size:.8rem;font-weight:700;color:var(--ink)}
.gbr .thresh{position:absolute;top:-6px;bottom:-6px;width:0;border-left:2px dashed var(--ink);transition:left .4s}
.gbr .memrow .res{font-family:"Manrope","Noto Sans JP",sans-serif;font-size:1.08rem;font-weight:800;line-height:1.25;letter-spacing:-.01em;white-space:nowrap;text-autospace:no-autospace}
.gbr .memrow .res small{font-size:.66em;font-weight:700;margin:0 1px}
.gbr .memrow .res b{display:block;font-family:var(--sans);font-size:.72rem;font-weight:700;color:var(--muted);letter-spacing:.02em;margin-bottom:2px}
.gbr .memrow.actual .bar.ok{background:var(--act)}
.gbr .memrow.actual .res{color:var(--act)}
.gbr .memrow.actual .name{color:var(--act)}
.gbr .axis{display:grid;grid-template-columns:8.5rem 1fr 7.5rem;gap:12px}
.gbr .axis .ticks{position:relative;height:1.2em;font-family:var(--mono);font-size:.7rem;color:var(--muted)}
.gbr .axis .ticks span{position:absolute;transform:translateX(-50%)}
@media (prefers-reduced-motion: reduce){.gbr .bar,.gbr .thresh{transition:none}
}
.gbr .costrows{display:grid;gap:8px}
.gbr .costrow{display:grid;grid-template-columns:minmax(0,13rem) 1fr 4.2rem;gap:12px;align-items:center;font-size:.86rem}
.gbr .costrow .t{line-height:1.35;min-width:0}
.gbr .costrow .t small{display:block;color:var(--muted);font-size:.74rem}
.gbr .ctrack{display:flex;gap:2px;height:20px}
.gbr .ctrack i{display:block;height:100%}
.gbr .ctrack .work{background:var(--rent)}
.gbr .ctrack .idle{background:var(--stripe);border-radius:0}
.gbr .ctrack .work:last-child{border-radius:0}
.gbr .costrow .v{text-align:right;font-family:"Manrope",sans-serif;font-weight:800;font-size:1.08rem;letter-spacing:-.01em;white-space:nowrap}
.gbr .costsum{display:grid;grid-template-columns:minmax(0,13rem) 1fr 4.2rem;gap:12px;border-top:1.5px solid var(--ink);padding-top:8px;font-weight:700;font-size:.9rem}
.gbr .costsum-sub{font-family:"Manrope","Noto Sans JP",sans-serif;font-weight:700;font-size:.85rem;color:var(--muted)}
.gbr .costsum .v{text-align:right;font-family:"Manrope",sans-serif;font-weight:800;font-size:1.4rem;letter-spacing:-.01em;white-space:nowrap}
.gbr .legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.8rem;color:var(--muted)}
.gbr .legend i{display:inline-block;width:14px;height:10px;margin-right:6px;vertical-align:-1px}
.gbr .calc{display:grid;grid-template-columns:minmax(0,21rem) minmax(0,1fr);gap:0;border:1.5px solid var(--ink);background:var(--sheet)}
/* 計算機だけ黒地。色の札をこの中だけ置き換える（図の線の色もここから読む） */
.gbr .calc{--ink:#f2f3f5;--sheet:#121418;--paper:#1f2228;--muted:#9da3ad;--rule:#353941;--rent:#ffffff;--buy:#b9bec7;--buy-soft:#2a2d34;color:var(--ink);border-color:#121418}
.gbr .calc .inputs{border-right-color:var(--rule)}
.gbr .calc .field select,.gbr .calc .field input[type=number]{color-scheme:dark}
.gbr .calc .field select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23f2f3f5' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px 8px;padding-right:34px;text-overflow:ellipsis}
.gbr .inputs{padding:20px;border-right:1.5px solid var(--ink);display:grid;gap:16px;align-content:start}
.gbr .field{display:grid;gap:4px}
.gbr .field label{font-size:.88rem;font-weight:700;display:flex;justify-content:space-between;align-items:baseline;gap:8px;line-height:1.4}
.gbr .field label output{white-space:nowrap;font-size:1rem;color:var(--rent)}
.gbr .field label output{font-family:"Manrope","Noto Sans JP",sans-serif;font-weight:800;font-size:1.1rem;text-autospace:no-autospace}
.gbr .field select,.gbr .field input[type=number]{font:inherit;font-size:.85rem;padding:6px 8px;border:1px solid var(--rule);background:var(--paper);color:var(--ink);width:100%}
.gbr .field input[type=range]{width:100%;accent-color:var(--rent)}
.gbr .field .hint{font-size:.72rem;color:var(--muted);line-height:1.5}
.gbr .twocol{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gbr .result{padding:20px;display:grid;gap:16px;align-content:start;min-width:0}
.gbr .verdict-big{font-size:1.15rem;font-weight:700;line-height:1.55;margin:0}
.gbr .verdict-big .rent{color:var(--act)}
.gbr .verdict-big .buy{color:var(--buy)}
.gbr .kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.gbr .kpi{border-top:1.5px solid var(--ink);padding-top:8px;min-width:0}
.gbr .kpi .k{font-size:.74rem;color:var(--muted);line-height:1.4}
.gbr .kpi .v{font-family:"Manrope","Noto Sans JP",sans-serif;font-weight:800;font-size:clamp(1.5rem,2.4vw,1.9rem);line-height:1.2;letter-spacing:-.01em;font-variant-numeric:tabular-nums;text-autospace:no-autospace;white-space:nowrap}
.gbr .kpi .v i{font-style:normal;font-size:.6em;font-weight:700;margin:0 1px}
.gbr .kpi .v small{display:block;font-size:.72rem;font-weight:500;color:var(--muted);letter-spacing:0;margin-top:2px}
.gbr .chartbox{position:relative;min-width:0}
.gbr .chartbox svg{display:block;width:100%;height:auto}
.gbr .tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--sheet);font-size:.75rem;padding:6px 8px;line-height:1.5;font-family:"Manrope","Noto Sans JP",sans-serif;font-weight:700;white-space:nowrap;transform:translate(-50%,-110%)}
.gbr .warn{font-size:.8rem;border:1px solid var(--buy);color:var(--ink);background:var(--buy-soft);padding:8px 10px}
.gbr details{border-top:1px solid var(--rule);padding-top:10px;font-size:.85rem}
.gbr details summary{cursor:pointer;font-weight:500}
.gbr details pre{font-family:var(--mono);font-size:.78rem;white-space:pre-wrap;line-height:1.7;margin:.6em 0 0;color:var(--muted)}
.gbr .cta-inline{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:0;padding:20px 24px;font-size:.92rem}
.gbr .btn{display:inline-flex;align-items:center;gap:8px;font-weight:700;text-decoration:none;padding:10px 18px;border:1.5px solid var(--ink);color:var(--ink);background:var(--sheet);font-size:.92rem}
.gbr .btn.primary{background:var(--rent);border-color:var(--rent);color:#fff}
.gbr .btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}
.gbr .btn:hover{transform:translateY(-1px)}
/* ボタンは二重枠にしない（フォーカスは塗りの反転で示す） */
.gbr .btn:focus-visible{outline:none;background:var(--ink);border-color:var(--ink);color:#fff}
.gbr .btn.dark:focus-visible,.gbr .btn.primary:focus-visible{text-decoration:underline;text-underline-offset:4px}
@media (prefers-reduced-motion: reduce){.gbr .btn:hover{transform:none}
}
.gbr .tablewrap{overflow-x:auto;border:1px solid var(--rule);background:var(--sheet)}
.gbr table{border-collapse:collapse;width:100%;min-width:640px;font-size:.86rem;line-height:1.55}
.gbr th,.gbr td{padding:10px 12px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
.gbr thead th{font-size:.78rem;color:var(--muted);font-weight:500;border-bottom:1.5px solid var(--ink)}
.gbr thead th.b{color:var(--buy)}
.gbr thead th.r{color:var(--rent)}
.gbr tbody th{font-weight:700;width:9rem}
.gbr .mk{font-family:"Manrope",sans-serif;font-weight:800;display:inline-block;width:1.4em;font-size:1rem}
.gbr tbody tr:last-child th,.gbr tbody tr:last-child td{border-bottom:0}
.gbr .cons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gbr .con{background:var(--ink);color:#fff;padding:20px 18px 18px;display:grid;gap:6px;align-content:start;min-width:0}
.gbr .con .v{font-family:'Manrope',sans-serif;font-weight:800;font-size:1.9rem;color:var(--rent-on-dark);line-height:1.1}
.gbr .con h3{font-size:.95rem;margin:0}
.gbr .con p{font-size:.82rem;color:#c8ccd6;margin:0;line-height:1.6}
.gbr .flow{border:0;background:var(--sheet);padding:28px 28px 24px;display:grid;gap:22px;box-shadow:0 1px 0 var(--rule),0 18px 40px -24px rgba(18,20,24,.25)}
.gbr .step{display:grid;gap:8px}
.gbr .step .q{font-weight:700}
.gbr .step .q .n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--rent);color:#fff;font-family:'Manrope',sans-serif;font-size:.8rem;margin-right:10px;vertical-align:1px}
.gbr .step.done .q .n{background:var(--muted)}
.gbr .step .opts{display:flex;flex-wrap:wrap;gap:8px}
.gbr .step .opts button{font:inherit;font-size:.86rem;padding:7px 14px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer}
.gbr .step .opts button[aria-pressed="true"]{background:var(--ink);color:var(--sheet)}
.gbr .step.done .q{color:var(--muted)}
.gbr .outcome{padding:16px 18px;background:#f3f4f6}
.gbr .outcome.buy{background:#f3f4f6}
.gbr .outcome h3{font-size:1.1rem;margin:0 0 4px}
.gbr .outcome p{margin:0;font-size:.9rem}
.gbr .reset{font:inherit;font-size:.8rem;background:none;border:0;color:var(--rent);text-decoration:underline;cursor:pointer;justify-self:start;padding:0}
.gbr .checks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:48px;border-top:2px solid var(--ink)}
.gbr .checks li{display:grid;grid-template-columns:2.4rem 1fr;gap:12px;padding:16px 0;border-bottom:1px solid var(--rule)}
.gbr .checks li .n{width:2.2rem;height:2.2rem;display:grid;place-items:center;border:2px solid var(--ink);font-family:'Manrope',sans-serif;font-weight:800;font-size:.85rem;color:var(--ink)}
.gbr .checks li b{display:block}
.gbr .checks li span{font-size:.86rem;color:var(--muted)}
.gbr .cta-end{background:transparent;color:#fff;padding:0;display:grid;gap:16px;max-width:40rem}
.gbr .cta-end h2{color:#fff;margin:0;font-size:clamp(1.8rem,3.6vw,2.6rem)}
.gbr .cta-end p{margin:0;max-width:36em;color:#d6dae3}
.gbr .cta-end .btns{display:flex;flex-wrap:wrap;gap:12px}
.gbr .cta-end .btn{background:transparent;color:#fff;border-color:#fff}
.gbr .cta-end .btn.primary{background:var(--rent);border-color:var(--rent);color:#fff}
.gbr .sources{font-size:.8rem;color:var(--muted)}
.gbr .sources ul{padding-left:1.2em;margin:.5em 0 0;display:grid;gap:4px}
@media (max-width:760px){.gbr .tickets{grid-template-columns:1fr}
.gbr .calc{grid-template-columns:1fr}
.gbr .inputs{border-right:0;border-bottom:1.5px solid var(--ink)}
.gbr .calc .inputs{border-bottom-color:var(--rule)}
.gbr .cons{grid-template-columns:1fr 1fr}
.gbr .memrow,.gbr .axis{grid-template-columns:6.4rem 1fr 5.6rem;gap:8px}
.gbr .costrow,.gbr .costsum{grid-template-columns:minmax(0,8.5rem) 1fr 3.6rem;gap:8px}
.gbr .kpis{grid-template-columns:1fr 1fr}

}
@media (max-width:420px){.gbr .cons{grid-template-columns:1fr}
}

.gbr .clip video{display:block;width:100%;height:auto;background:var(--ink)}

/* ---- FV（見積書と利用明細） ---- */
.gbr .fv{position:relative;overflow:hidden;background:var(--paper);padding:0}
.gbr .fv-art{position:absolute;right:0;top:0;width:min(58%,840px);aspect-ratio:840/852}
/* 最初の画面だけ、ブロックの赤を残す（画像側で赤以外を白黒にしてある） */
.gbr .fv-art::before{content:"";position:absolute;inset:0;background:url(/site/gbr/halftone-red.png) 0 0/100% 100% no-repeat;opacity:.5}
.gbr .fv-art::after{content:"";position:absolute;left:0;top:0;bottom:0;width:20%;background:linear-gradient(90deg,var(--paper),rgba(244,245,247,0))}
.gbr .fv-arm{position:absolute;left:9.05%;top:0;width:98.33%;max-width:none;height:auto;mix-blend-mode:multiply;opacity:.82}
.gbr .fv-in{position:relative;max-width:calc(1080px + 2*var(--gut));margin:0 auto;padding:56px var(--gut) 40px;display:grid;gap:44px}
.gbr .fv-text{max-width:33rem;display:grid;gap:18px}
.gbr .fv .who{margin:0;font-size:.9rem;font-weight:700;color:var(--rent);line-height:1.6}
.gbr .fv h1{margin:0;font-size:clamp(2.3rem,5vw,3.6rem);line-height:1.12;font-weight:900;letter-spacing:-.01em}
/* 英字（Manrope の一番太い800）を、日本語の900と同じ太さに見せる */
.gbr .fv h1 .lat,.gbr h2 .lat,.gbr .h-num{-webkit-text-stroke:.028em currentColor;paint-order:stroke fill;letter-spacing:.01em}
.gbr .fv-lead{margin:0;font-size:1rem;line-height:1.85;color:#2a2d33;max-width:30em}
.gbr .fv-cta{display:flex;flex-wrap:wrap;gap:10px}
.gbr .fv-docs{display:grid;grid-template-columns:minmax(0,380px) 120px minmax(0,380px);align-items:stretch}
.gbr .doc{background:#fff;border:1px solid var(--rule);padding:20px 24px;display:flex;flex-direction:column;justify-content:space-between;gap:14px;min-height:330px;min-width:0}
.gbr .doc-top{display:grid;gap:8px}
.gbr .doc-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.gbr .doc-h span{font-size:1.25rem;font-weight:700;letter-spacing:.08em}
.gbr .doc-h em{font-style:normal;font-size:.75rem;font-weight:700;color:#fff;padding:4px 10px}
.gbr .tag-buy{background:var(--buy)} .gbr .tag-rent{background:var(--rent)}
.gbr .doc-sub{margin:0;font-size:.72rem;color:var(--muted);line-height:1.5}
.gbr .doc-rows{margin:0;font-size:.82rem;border-top:1px solid #eceef1}
.gbr .doc-rows div{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px solid #eceef1}
.gbr .doc-rows dt{color:var(--muted)} .gbr .doc-rows dd{margin:0;text-align:right}
.gbr .gb16{text-decoration:none;color:var(--buy);border-bottom:2px solid var(--buy)}
.gbr .doc-warn{margin:0;padding:6px 10px;background:var(--buy-soft);color:var(--buy-deep);font-size:.7rem;font-weight:700;line-height:1.5}
.gbr .doc-total{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.gbr .doc-total span{font-size:.88rem;font-weight:700}
.gbr .big-buy{font-family:'Manrope',sans-serif;font-size:clamp(1.8rem,3vw,2.4rem);font-weight:800;color:var(--buy);text-decoration-thickness:3px;letter-spacing:0}
/* 利用明細だけ色を入れる（最後のCTAのボタンと同じ橙）。見積書は白黒のまま */
.gbr .fv-docs{--est:#f2600c}
.gbr .fv-docs .tag-rent{background:var(--est)}
.gbr .fv-docs .big-rent{color:var(--est)}
.gbr .big-rent{font-family:'Manrope',sans-serif;font-size:clamp(1.8rem,3vw,2.4rem);font-weight:800;color:var(--rent);letter-spacing:0}
.gbr .rcpt-rows{list-style:none;margin:0;padding:0;border-top:1px dashed #b8bcc6;font-size:.75rem;letter-spacing:0}
.gbr .rcpt-rows li{display:flex;justify-content:space-between;gap:8px;padding:3px 0}
.gbr .rcpt-total{border-top:1px dashed #b8bcc6;padding-top:6px}
.gbr .ratio{align-self:center;justify-self:center;width:96px;height:96px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-content:center;text-align:center;line-height:1.1;position:relative;z-index:1}
.gbr .ratio span{font-size:.7rem;color:#c8ccd4} .gbr .ratio b{font-family:'Manrope',sans-serif;font-size:1.5rem;font-weight:800}
.gbr .fv-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;align-items:center}
.gbr .fv-foot .meta{font-size:.8rem}
.gbr .fv-cap{margin:0;font-size:.75rem;color:#3c414b;background:#fff;border:1px solid var(--rule);padding:5px 12px}
/* ---- セクションの帯 ---- */
.gbr .band-white{background:#fff}
.gbr .band-tint{background:#e9ebef}
.gbr .band-ink{background:var(--ink);color:#e8eaf0}
.gbr .band-ink h2,.gbr .band-ink h3{color:#fff}
.gbr .band-ink .prose p{color:#cfd4de}
.gbr .band-ink a{color:var(--rent-on-dark)}
.gbr .band-ink figure{color:var(--ink)}
.gbr .band-ink figure a{color:var(--rent)}
.gbr .sec-head{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap}
.gbr .sec-no{font-family:'Manrope',sans-serif;font-weight:800;font-size:clamp(3.2rem,7vw,5rem);line-height:.82;color:var(--paper);-webkit-text-stroke:3px var(--rent);paint-order:stroke fill;letter-spacing:-.02em}
/* 中を地の色で塗って、字の輪郭が重なる所の小さな三角を隠す（地の色に合わせる） */
.gbr .band-white .sec-no{color:#fff}
.gbr .band-tint .sec-no{color:#e9ebef}
.gbr .band-ink .sec-no{color:var(--ink);-webkit-text-stroke-color:var(--rent-on-dark)}
.gbr .sec-head h2{flex:1 1 20rem;padding-bottom:4px}
.gbr .kicker{font-size:.8rem;font-weight:700;letter-spacing:.12em;color:var(--rent)}
.gbr .facts3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:2px solid var(--ink)}
.gbr .fact{padding:22px 28px 10px 0;display:grid;gap:8px;align-content:start;min-width:0}
.gbr .fact + .fact{padding-left:28px;border-left:1px solid var(--rule)}
.gbr .fact-n{font-family:'Manrope',sans-serif;font-weight:800;font-size:clamp(2.4rem,5vw,3.4rem);line-height:1;color:var(--rent);letter-spacing:-.02em}
.gbr .fact-n small{font-size:.42em;font-weight:700;margin-left:4px;color:var(--ink)}
.gbr .fact-n small.pre{margin-left:0;margin-right:4px}
.gbr .fact-n{text-autospace:no-autospace}
.gbr .fact h3{margin:0;font-size:1.02rem;line-height:1.5;word-break:auto-phrase}
.gbr .fact p{margin:0;font-size:.85rem;color:var(--muted);line-height:1.75}
.gbr .fact-chart{display:block;width:100%;max-width:300px;height:auto;margin:16px 0 10px;overflow:visible}
.gbr .fact-chart .fc-th{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:4 3}
.gbr .fact-chart .fc-axis{stroke:var(--ink);stroke-width:1}
.gbr .fact-chart .fc-rent{stroke:var(--rent);stroke-width:2.5}
.gbr .fact-chart .fc-buy{stroke:var(--ink);stroke-width:1.5}
.gbr .scope{margin:0 auto;font-size:.82rem;color:var(--muted);max-width:none;text-align:center;text-wrap:balance;word-break:auto-phrase}
.gbr .split2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:32px;align-items:start}
.gbr .split2 .prose{max-width:none}
.gbr .cta-band{position:relative;overflow:hidden;padding-block:96px}
.gbr .cta-band::before{content:"";position:absolute;right:-60px;top:50%;width:620px;aspect-ratio:840/852;transform:translateY(-50%);background:url(/site/gbr/halftone.png) 0 0/100% 100% no-repeat;opacity:.22;filter:var(--photo-filter)}
.gbr .cta-band .wrap{position:relative}
/* 最後のCTA：黒の細いストライプ地に白いカード。ボタンだけ色（ページで色を使うのはここだけ） */
.gbr .cta-x{--cta:#f2600c; /* 利用明細の --est と同じ色 */position:relative;isolation:isolate;overflow:hidden;background:#0b0c0e;padding-block:96px}
.gbr .cta-x::before{content:"";position:absolute;inset:0;z-index:-2;background:url(/site/gbr/cta-arm.webp) left -460px center/auto 130% no-repeat;opacity:.22;-webkit-mask:linear-gradient(90deg,#000 45%,transparent 75%);mask:linear-gradient(90deg,#000 45%,transparent 75%)}
.gbr .cta-x::after{content:"";position:absolute;inset:0;z-index:-1;background:repeating-linear-gradient(135deg,#fff 0 3px,#0b0c0e 3px 10px);clip-path:polygon(74% 0,100% 0,100% 100%,52% 100%)}
.gbr #summary .wrap.wide,.gbr .cta-x .wrap.wide{max-width:calc(1080px + 2*var(--gut))}
.gbr .cta-x-in{background:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,25rem);gap:44px;align-items:center;padding:64px 60px}
.gbr .cta-x-copy{display:grid;gap:14px}
.gbr .cta-x-k{margin:0;font-family:"Manrope","Noto Sans JP",sans-serif;font-weight:800;font-size:.95rem;color:var(--ink)}
.gbr .cta-x h2{margin:0;color:var(--ink);font-size:clamp(1.9rem,6.4vw,3.2rem);line-height:1.2;font-weight:900;word-break:auto-phrase}
.gbr .cta-x-sub{margin:0;color:#3c414b;font-size:.92rem;line-height:1.85;max-width:32em}
.gbr .cta-x-act{display:grid;gap:12px}
.gbr .cta-x-main,.gbr .cta-x-sec{word-break:auto-phrase;display:flex;justify-content:space-between;align-items:center;gap:16px;text-decoration:none;transition:background .15s,color .15s}
.gbr .cta-x-main{background:var(--cta);color:#fff;padding:24px 26px;font-weight:900;font-size:1.15rem;line-height:1.35}
.gbr .cta-x-main small{display:block;font-size:.72rem;font-weight:700;letter-spacing:.06em;margin-bottom:4px}
.gbr .cta-x-main i.ms{font-size:28px;transition:transform .2s}
.gbr .btn .ms{font-size:18px;transition:transform .2s}
.gbr .btn:hover .ms{transform:translateX(3px)}
.gbr .cta-x-sec{border:1.5px solid var(--ink);color:var(--ink);padding:15px 20px;font-weight:700;font-size:.86rem}
.gbr .cta-x-sec i{font-size:1.15rem}
.gbr .cta-x-main:hover{background:var(--ink)}
.gbr .cta-x-sec:hover{background:var(--ink);color:#fff}
.gbr .cta-x-main:hover i,.gbr .cta-x-sec:hover i{transform:translateX(5px)}
.gbr .cta-x-main:focus-visible,.gbr .cta-x-sec:focus-visible{outline:none;background:var(--ink);color:#fff}
@media (max-width:900px){.gbr .cta-x{padding-block:48px}.gbr .cta-x::before{background-position:center;background-size:cover;-webkit-mask:none;mask:none;opacity:.18}.gbr .cta-x::after{clip-path:polygon(84% 0,100% 0,100% 100%,40% 100%)}.gbr .cta-x-in{grid-template-columns:1fr;gap:28px;padding:32px 24px}}
/* 最後のCTAだけ色を使う（ページ内で唯一の色） */
.gbr .cta-color{--cta:#2a56d4;background:var(--cta);color:#fff}
.gbr .cta-color::before{filter:grayscale(1) invert(1);mix-blend-mode:screen;opacity:.42;width:680px}
.gbr .cta-color::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 0% 50%,rgba(20,44,140,.55) 0%,rgba(20,44,140,0) 60%);pointer-events:none}
.gbr .cta-color .wrap{z-index:1}
.gbr .cta-color .cta-k{color:#dfe7ff;letter-spacing:.14em}
.gbr .cta-color h2{color:#fff}
.gbr .cta-color p{color:#e6ecff}
.gbr .cta-color .cta-end .btn{background:transparent;color:#fff;border-color:#fff;padding:14px 22px;font-size:1rem}
.gbr .cta-color .cta-end .btn.primary{background:#fff;border-color:#fff;color:var(--cta)}
.gbr .cta-color .cta-end .btn.primary:hover{background:#121418;border-color:#121418;color:#fff}
.gbr .cta-color .cta-end .btn:not(.primary):hover{background:rgba(255,255,255,.12)}
#flow .wrap{max-width:calc(52rem + 2*var(--gut))}
@media (max-width:900px){
  .gbr .fv-art{position:relative;width:100%;margin-bottom:-38%}
  .gbr .fv-art::after{left:0;right:0;top:auto;bottom:0;width:auto;height:45%;background:linear-gradient(0deg,var(--paper) 15%,rgba(244,245,247,0))}
  .gbr .fv-in{padding-top:0}
  .gbr .fv-docs{grid-template-columns:1fr;gap:12px;max-width:420px}
  .gbr .ratio{width:80px;height:80px;margin:-4px 0}
  .gbr .facts3{grid-template-columns:1fr}
  .gbr .fact + .fact{padding-left:0;border-left:0;border-top:1px solid var(--rule)}
  .gbr .toc{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gbr .split2{grid-template-columns:1fr}
  .gbr .checks{grid-template-columns:1fr}
  .gbr section{padding-block:56px}
}

/* ---- レイアウトの変化 ---- */
.gbr .wrap.wide{max-width:calc(1200px + 2*var(--gut))}
.gbr #summary .wrap.wide,.gbr #calc .wrap.wide,.gbr #reverse .wrap.wide{max-width:calc(1080px + 2*var(--gut))}
.gbr .side{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}
.gbr .side-l{position:sticky;top:88px;display:grid;gap:22px;align-self:start;align-content:start}
.gbr .side-l .prose{max-width:none}
.gbr .side-l .prose p{font-size:.9rem;line-height:1.85}
.gbr .side .sec-head,.gbr .sec-head.stack{flex-direction:column;align-items:flex-start;gap:14px}
.gbr .side .sec-head h2,.gbr .sec-head.stack h2{flex:none}
.gbr .side-r{min-width:0}
.gbr .sec-head.center{justify-content:center;text-align:center;flex-direction:column;align-items:center;gap:12px}
.gbr .sec-head.center h2{flex:none}
.gbr .center-p{margin:0 auto;text-align:center}
.gbr .cost-hero{display:grid;gap:36px}
.gbr .cost-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:56px;align-items:end;padding-bottom:32px;border-bottom:2px solid var(--ink)}
.gbr .cost-head .sec-head h2{max-width:none;word-break:auto-phrase}
.gbr .cost-num{display:grid;gap:12px;justify-items:end;text-align:right}
.gbr .cost-num .huge{margin-top:0}
.gbr .cost-chart figure{background:transparent;border:0;padding:0;box-shadow:none}
.gbr .cost-chart{min-width:0}
.gbr .costcols{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:18px;align-items:start}
.gbr .costcol{display:grid;gap:12px;min-width:0}
.gbr .cbar{height:300px;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;border-bottom:2px solid var(--ink)}
.gbr .cbar i{display:block;width:min(100%,88px);height:var(--p);flex:none}
.gbr .cbar .work{background:var(--ink)}
.gbr .cbar .idle{background:var(--stripe)}
.gbr .cbar .v{font-family:"Manrope",sans-serif;font-weight:800;font-size:1.15rem;letter-spacing:-.01em;line-height:1;margin-bottom:8px;white-space:nowrap}
.gbr .costcol .t{font-size:.8rem;line-height:1.45;word-break:auto-phrase}
.gbr .costcol .t small{display:block;color:var(--muted);font-size:.72rem;margin-top:2px}
.gbr .cost-chart .costsum{display:flex;justify-content:flex-end;align-items:baseline;gap:24px;border-top:0;padding-top:4px}
.gbr .cost-chart .costsum > span:first-child{margin-right:auto}
.gbr .huge{font-family:'Manrope',sans-serif;font-weight:800;font-size:clamp(4.2rem,10vw,8.4rem);line-height:.88;color:var(--act);letter-spacing:-.035em;margin-top:18px}
.gbr .huge-sub{margin:0;font-size:.9rem;color:var(--muted)}
.gbr .cost-split{margin:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.85rem;font-weight:700}
.gbr .sw{display:inline-block;width:14px;height:10px;margin-right:6px;vertical-align:0}
.gbr .sw-w{background:var(--rent)} .gbr .sw-i{background:var(--stripe)}
.gbr .video-row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:44px;align-items:center;margin-top:64px}
.gbr .video-row figure.clip{padding:0;border:0;background:transparent;gap:10px}
.gbr .video-row figure.clip video{box-shadow:0 24px 48px -28px rgba(18,20,24,.45)}
.gbr .video-note{display:grid;gap:12px}
.gbr .video-note .prose{max-width:none}
.gbr .video-note .kicker{font-size:clamp(1.3rem,2vw,1.6rem);font-weight:800;letter-spacing:.01em;line-height:1.35;color:var(--ink);margin-bottom:4px}
.gbr .duel{display:grid;margin-top:8px}
.gbr .duel-row{display:grid;grid-template-columns:minmax(0,1fr) 13rem minmax(0,1fr);border-bottom:1px solid var(--rule)}
.gbr .duel-row > div{padding:16px 22px;font-size:.95rem;line-height:1.55;display:flex;align-items:center;color:var(--muted)}
.gbr .duel-row .d-b{justify-content:flex-end;text-align:right}
.gbr .duel-row .d-n{justify-content:center;text-align:center;font-weight:700;font-size:.88rem;color:var(--ink);padding-inline:10px}
.gbr .duel-row .win{background:var(--ink);color:#fff;font-weight:700}
.gbr .duel-head{border-bottom:2px solid var(--ink)}
.gbr .duel-head > div{font-size:1.35rem;font-weight:900;color:var(--ink);padding-bottom:14px}
.gbr .duel-foot{border-bottom:0}
.gbr .duel-foot > div{color:var(--ink);font-weight:700;font-size:.9rem;align-items:baseline;padding-top:18px}
.gbr .duel-foot .d-n{color:var(--muted);font-weight:500;font-size:.8rem}
.gbr .duel-foot b{font-family:"Manrope",sans-serif;font-weight:800;font-size:2.8rem;line-height:1;margin-right:4px}
.gbr .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gbr .cmp-bottom{display:grid;gap:14px;margin-top:48px}
.gbr .cmp-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:28px;align-items:start;margin-top:8px}
.gbr .cmp-grid table{min-width:560px}
.gbr .cmp-side{display:grid;gap:14px}
.gbr .cmp-note{margin:0;font-size:.9rem;font-weight:700}
.gbr .cmp-side .cons{grid-template-columns:1fr 1fr;gap:10px}
.gbr .band-quote{background:var(--quote-bg);color:#fff;padding-block:96px}
.gbr #reverse{position:relative;overflow:hidden;isolation:isolate;background:#0b0c0e}
.gbr #reverse::before{content:"";position:absolute;inset:0;z-index:-1;background:url(/site/gbr/reverse.webp) right center/cover no-repeat}
.gbr #reverse::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(11,12,14,.92) 0%,rgba(11,12,14,.7) 45%,rgba(11,12,14,.15) 100%)}
.gbr .quote{display:grid;gap:22px}
.gbr .quote .kicker{color:var(--quote-sub)}
.gbr .quote blockquote{word-break:auto-phrase;margin:0;font-size:clamp(1.9rem,4.6vw,3.4rem);font-weight:900;line-height:1.25;letter-spacing:-.01em;max-width:16em}
.gbr .quote p{margin:0;color:var(--quote-text);max-width:44em;font-size:1rem;line-height:1.9}
.gbr .chk-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px 40px;flex-wrap:wrap}
.gbr .chk-lead{margin:0;color:var(--muted);font-size:.95rem}
.gbr #checklist .checks{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;border-top:0;margin-top:8px}
.gbr #checklist .checks li{display:flex;flex-direction:column;gap:14px;padding:22px 22px 24px;background:#fff;border:0;box-shadow:0 1px 0 var(--rule)}
.gbr #checklist .checks li .n{width:auto;height:auto;border:0;display:block;line-height:0;color:var(--ink)}
.gbr #checklist .ico{width:48px;height:48px;fill:currentColor;stroke:none}
.gbr #checklist .ico .w{fill:none;stroke:#fff;stroke-width:3.6;stroke-linecap:square;stroke-linejoin:miter}
.gbr #checklist .ico .wf{fill:#fff}
.gbr #checklist .ico .s{fill:none;stroke:currentColor;stroke-width:6;stroke-linecap:butt}
.gbr #checklist .checks li b{font-size:1.02rem;line-height:1.5;margin-bottom:6px}
.gbr #checklist .checks li span{display:block;line-height:1.65}
@media (max-width:900px){
  .gbr .side,.gbr .cost-hero,.gbr .video-row,.gbr .cmp-grid{grid-template-columns:1fr;gap:28px}
  .gbr .cost-head{grid-template-columns:1fr;gap:20px}
  .gbr .memrow{grid-template-columns:minmax(0,1fr) 6.6rem;row-gap:6px}
  .gbr .memrow .name{grid-column:1/-1}
  .gbr .memrow .track{grid-column:1;margin-right:3.4rem}
  .gbr .memrow .res{grid-column:2;grid-row:2;text-align:right}
  .gbr .bar .gb{right:auto;left:calc(100% + 6px)}
  .gbr .duel-row{grid-template-columns:minmax(0,1fr) 5.6rem minmax(0,1fr)}
  .gbr .duel-row > div{padding:12px 10px;font-size:.8rem}
  .gbr .duel-row .d-n{font-size:.74rem;padding-inline:4px}
  .gbr .duel-head > div{font-size:1rem}
  .gbr .duel-foot b{font-size:2rem}
  .gbr #memory figure{padding:20px;gap:16px}
  .gbr #memory .memrows{gap:12px}
  .gbr .cost-num{justify-items:start;text-align:left}
  .gbr .costcols{grid-template-columns:repeat(7,calc((100vw - var(--gut) - 42px)/3.5));gap:14px;overflow-x:auto;margin-right:calc(-1*var(--gut));padding-right:var(--gut);scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .gbr .costcols::-webkit-scrollbar{display:none}
  .gbr .costcol .t{word-break:normal;font-size:.74rem}
  .gbr .cbar{height:220px}
  .gbr .cbar .v{font-size:.95rem}
  .gbr .cost-chart .costsum{flex-wrap:wrap;gap:4px 16px}
  .gbr .costsum .v{font-size:1.15rem}
  .gbr .side-l{position:static}
  .gbr .video-row{margin-top:40px}
  .gbr .band-quote{padding-block:64px}
  .gbr #reverse::after{background:rgba(11,12,14,.8)}
}

/* ---- 文字の大きさの段階 ---- */
.gbr .sum-title{margin:0;text-align:center;font-feature-settings:"palt"}
.gbr .h-num{font-size:1.32em;line-height:1;margin-right:.04em;letter-spacing:0}
.gbr .sum-title{text-autospace:no-autospace}
.gbr .fact h3{font-size:1.15rem}
.gbr .fact p{font-size:.88rem}
.gbr .prose p{font-size:1.02rem;line-height:1.9}
.gbr figcaption{font-size:.72rem;line-height:1.65}
.gbr .kicker{font-size:.78rem}
.gbr .field .hint{font-size:.72rem;line-height:1.55}
.gbr .twocol .field label span{white-space:nowrap}

/* ---- スマートフォン ---- */
@media (max-width:900px){
  .gbr .fact{padding-right:0}
  .gbr .fact-chart{margin-inline:auto}
  .gbr .fact-n{justify-self:center}
  .gbr .fact h3{text-align:center;white-space:nowrap;font-size:min(1.15rem,4.6vw)}
  .gbr .fact h3 br{display:none}
  .gbr .memrow{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;row-gap:14px;align-items:end}
  .gbr .memrow .name{grid-column:1;grid-row:1}
  .gbr .memrow .res{grid-column:2;grid-row:1;text-align:right}
  .gbr .memrow .track{grid-column:1/-1;grid-row:2;margin-right:3.4rem}
}
@media (max-width:600px){
  .gbr #checklist .checks li{flex-direction:row;align-items:flex-start;gap:16px}
  .gbr #checklist .checks li .n{flex:none}
}

/* 見出しは言葉の切れ目でだけ折り返す */
.gbr h2 .ph{display:inline-block}

/* 角丸は使わない */
.gbr *,.gbr *::before,.gbr *::after{border-radius:0!important}
/* ボタンだけ、サイト共通の角丸（4px） */
.gbr .ratio{border-radius:50%!important}
.gbr .btn,.gbr .cta-x-main,.gbr .seg button,.gbr .reset,.gbr .flow button,.gbr #flowbox button,.gbr .cta-inline .btn{border-radius:4px!important}
</style>
```

### src/components/GuideBanner.astro（トップと /series6 の入口のバナー）

```astro
---
// 導入比較ガイド（/gpu-buy-or-rent）への入口。トップと /series6 に置く
---
<a class="guide-bn" href="/gpu-buy-or-rent">
  <span class="gb-figs" aria-hidden="true">
    <span class="gb-buy">¥750,000</span>
    <span class="gb-rent">¥4,700</span>
  </span>
  <span class="gb-text">
    <span class="gb-label">導入比較ガイド</span>
    <span class="gb-title">ロボットAIの学習用GPU、買うか借りるか</span>
    <span class="gb-sub">これから学習環境を用意する企業・研究者・エンジニア向け。実際に借りて学習させた費用、損益分岐の計算機、判定フローで決められます</span>
  </span>
  <span class="gb-go">読む<i class="ms">arrow_forward</i></span>
</a>
<style>
  .guide-bn { position: relative; isolation: isolate; overflow: hidden; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 32px;
    padding: 36px 36px; border: 0; border-radius: 0; background: #0b0c0e; color: #fff; text-decoration: none; }
  .guide-bn::before { content: ""; position: absolute; inset: 0; z-index: -2; background: url(/site/gbr/reverse.webp) right center / cover no-repeat; transition: transform .6s ease; }
  .guide-bn::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(11,12,14,.94) 0%, rgba(11,12,14,.78) 50%, rgba(11,12,14,.3) 100%); }
  .guide-bn:hover::before { transform: scale(1.03); }
  .guide-bn:focus-visible { outline: 2px solid #121418; outline-offset: 3px; }
  .gb-figs { display: grid; gap: 4px; font-family: 'Manrope', 'Noto Sans JP', sans-serif; font-variant-numeric: tabular-nums; line-height: 1.1; }
  .gb-buy { font-size: 20px; font-weight: 800; color: #8d939d; text-decoration: line-through; text-decoration-thickness: 2px; }
  .gb-rent { font-size: 34px; font-weight: 800; color: #f2600c; letter-spacing: -.01em; }
  .gb-text { display: grid; gap: 4px; min-width: 0; word-break: auto-phrase; text-wrap: pretty; }
  .gb-label { font: 700 12px/18px var(--sans); color: #b9bec7; letter-spacing: .08em; }
  .gb-title { font: 900 22px/1.45 var(--sans); color: #fff; }
  .gb-sub { font: 400 14px/1.7 var(--sans); color: #c8ccd4; max-width: 46em; }
  .gb-go { display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 20px; border-radius: 4px;
    background: #f2600c; color: #fff; font: 700 14px/1 var(--sans); white-space: nowrap; transition: background .15s, color .15s; }
  .guide-bn:hover .gb-go { background: #fff; color: #121418; }
  .gb-go .ms { font-size: 18px; transition: transform .2s; }
  .guide-bn:hover .gb-go .ms { transform: translateX(3px); }
  @media (max-width: 699px) {
    .guide-bn { grid-template-columns: 1fr; gap: 14px; padding: 24px 20px; }
    .guide-bn::after { background: rgba(11,12,14,.82); }
    .gb-figs { grid-auto-flow: column; justify-content: start; align-items: baseline; gap: 14px; }
    .gb-rent { font-size: 28px; }
    .gb-title { font-size: 19px; }
    .gb-go { justify-self: start; }
  }
</style>
```
