※この記事にはプロモーションが含まれています


JavaScriptを多用した3Dのホームページを提案すると、必ずこう言われます。
「かっこいいけど、JavaScriptで動くから検索に読まれないんでしょう?」
この心配には、正しい部分と、そうでない部分があります。
僕は3Dホームページの型を自分で作って、JavaScriptを切った状態と動かした状態で、読めるテキストの量を実測しました。この記事では、その数字を出しながら「実際には何がどこまで読まれるのか」を書きます。
先に結論を言うと、読まれるかどうかは3Dかどうかで決まりません。文章をどこに置いたかで決まります。そして測ってみたら、心配されているのとは別のところに課題がありました。
AIクローラーはJavaScriptを実行しない


まず、心配の出どころを確認します。
3Dのサイトは、WebGLという仕組みで画面を描きます。これはJavaScriptで動きます。だから「JavaScriptが読まれないなら、中身が伝わらないのでは」という不安が出てくる。
そしてこの不安の前提は、事実として正しいです。
2026年6月時点で、主要なAIクローラーはいずれもJavaScriptを実行しません。GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、Claude-SearchBot、PerplexityBot、Meta-ExternalAgent、Bytespider。どれも1回のHTTPリクエストでサーバーが返したHTMLを読み、それで終わりです。描画は待ちません。
Googleだけが例外で、JavaScriptを実行してページを描画したうえで評価します。
だから「Googleには載るのにChatGPTには出てこない」という現象が起きます。原因のほとんどは、中身をJavaScriptで後から差し込む作りにあります。
ここまでは、心配している人が正しい。
それでも実測すると、ほぼ差が出なかった


では3Dサイトはどうなのか。自分で作った型で実測しました。
JavaScriptを切った状態と、動かした状態で、読めるテキストの量を比べます。
| 型 | 生HTML | JS無効で読める | JS有効で読める |
|---|---|---|---|
| word(言葉が主役) | 520字 | 491字 | 497字 |
| object(物が主役) | 596字 | 563字 | 569字 |
| world(場所が主役) | 529字 | 504字 | 504字 |
| symbol(象徴が主役) | 498字 | 465字 | 471字 |
JavaScriptを実行してもしなくても、読める量はほとんど同じです。差は数十字。その正体は「Loading」といった読み込み中の表示だけでした。
なぜこうなるのか
設計が理由です。
この型では、文言を必ずHTMLに実テキストとして置いています。JavaScriptはそれを読み取って3Dの画面に焼き付けるだけ。文章そのものはHTMLの中に最初からある。
言い方を変えると、3Dは見せ方であって、内容の置き場所ではないということです。
だからJavaScriptが動かない相手にも、文章は最初のHTMLで届きます。読めなくなるのは演出だけ。演出はもともと読むものではないので、実害がありません。
ここを崩すと、一発で終わります
逆に言えば、文言をJavaScriptの中に持たせた瞬間、この性質は全部失われます。
よくあるのはこういう作りです。
// これをやると、AIには何も見えなくなる
const lines = ["私たちの理念は", "お客様第一です"];
lines.forEach(t => draw3DText(t));
文章がJavaScriptの配列の中にあります。HTMLには何も書かれていません。この状態だと、AIクローラーが受け取るHTMLは空っぽです。
同じことが、文字を画像にしたときや、3Dのテクスチャに焼き込んだときにも起きます。見た目には文字が出ていても、機械には読めていない。
僕が作った型では、この事故を防ぐために検品プログラムが「HTMLの中に文章ブロックが1つもなければ不合格」と判定するようにしてあります。人の注意力に任せると、いつか必ずやるからです。
読まれるかどうかとは、別の課題がある


JavaScriptで読めなくなるわけではない。ではこの型に課題がないのかというと、そうではありません。測ってみると、読み取り以前のところに2つありました。
| 課題 | 実測値 | なぜ効くか |
|---|---|---|
| 文字量が絶対的に少ない | 500字前後 | 技術に関係なく、この分量では検索で戦えない |
| 転送量が重い | 919KB(うち three.js が687KB) | 表示速度・モバイル回線 |
課題1:500字では、そもそも土俵に乗らない
これが最大の問題です。
3Dのページは、画面いっぱいに演出を見せる構造上、文章が少なくなります。実測で500字前後。一方、検索で上位に来るページは数千字あることが珍しくありません。
3Dだからではなく、500字だから土俵に乗らない。同じ500字なら、普通のHTMLで作っても結果は変わりません。
課題2:three.jsだけで687KB
3Dを動かすライブラリ(three.js)が687KBあります。ページ全体で919KB。
これは表示速度に直接効きます。特にスマートフォンの回線では、この重さが体感差になります。
3つのモードで、どこまで捨てるかを決める


この2つに対処するために、僕は3つのモードを用意しました。何を諦めるかを最初に決めるという考え方です。
| design | balanced(既定) | search | |
|---|---|---|---|
| 読み物セクション | なし | あり | あり |
| 3Dの読み込み | 即時 | 後回し | 後回し |
| 舞台の長さ | 320vh | 320vh | 150vh |
| 生HTMLの文字数(実測) | 596字 | 1,017字 | 988字 |
| 想定する流入 | SNS・広告・直リンク | ブランド名+一部の語 | 検索を主軸に |
| 向いている案件 | LP・周年・キャンペーン | ブランドサイト本体 | 検索流入が要る会社 |
design ── 検索を捨てる
演出の制約をゼロにする代わりに、検索を諦めます。
流入経路が別にある案件でだけ選ぶモードです。広告を出すLP、周年サイト、展示の告知。検索で人を集める必要がないなら、ここまで振り切れます。
balanced ── 舞台の下に読み物を置く
既定はこれです。3Dの舞台はそのまま残し、その下に1,500〜3,000字の読み物を置きます。
実測で生HTMLが1,017字まで増えました。500字と1,000字では、検索で戦える土俵がまったく違います。
狙いは「ブランド名で確実に1位を取り、事業に関わる語でも拾われる」ところです。
search ── 3Dは入口の一撃だけ
3Dをファーストビューの1画面に絞り、残りは普通のページにします。舞台は150vhまで縮める。
下層ページやブログと組み合わせる前提のモードです。演出は最初の印象づけだけに使う。
「後回し」で表示速度を稼ぐ


転送量の問題には、読み込む順番で対処します。
three.jsを最初に読ませず、本文とCSSが表示されたあと、舞台が視界に入ってから読むようにする。実測はこうなりました。
| 本文が出るまで | three.jsの読み込み開始 | |
|---|---|---|
| 修正前 | 252ms | 237ms(本文より先) |
| 修正後 | 224ms | 251ms(本文より後) |
順序が入れ替わっているのが要点です。修正前は、687KBの読み込みが本文表示を待たせていました。
ここは正直に書いておきます。この数字は自分のパソコン上での計測なので、差が小さく出ています。実際の回線やスマートフォンでは、本文が丸ごと687KBぶん待たされるかどうかの差になります。実回線での数字は、まだ取れていません。
もう1つ注意点があります。総転送量は減りません。919KBのままです。減るのは待たされる時間であって、通信量ではない。
検索エンジンに残るのは、演出ではない


最後に、設計の話をします。
3Dの演出は、検索エンジンにとっては存在しないのと同じです。どれだけ手をかけても、機械が読むのは文章と構造化データだけ。
だから読み物と構造化データが、唯一の手がかりになります。
構造化データでは、次の4つを出しておきます。
- WebSite ── サイトそのものの情報
- Organization ── 屋号・所在地・SNS。AIが引用するときの手がかりになります
- WebPage ── そのページの情報
- FAQPage ── よくある質問
FAQについては1つ注意があります。構造化データに書く文言は、本文のFAQと一字一句同じにしてください。違うと規約違反になります。
公開前に確認する5つ


実務で毎回見ているものを挙げます。
- 生のHTMLに本文が入っているか(ブラウザで「ページのソースを表示」して確認すれば十分です)
- FAQの文言が、本文と構造化データで一致しているか
- サンプルのまま残っている住所やURLがないか
- 検索避けの設定を外したか(入口ページだけは外さない)
- 読み物が1,500字を超えているか
1つめが一番大事です。ソースを表示して文章が見えなければ、AIにも見えていません。これだけは公開前に必ず見てください。
まとめ


この記事の核心は3点です。
- AIクローラーがJavaScriptを実行しないのは事実。ただし文言をHTMLに実テキストで置いていれば、3Dでも読める量は変わらない(実測で差は数十字)
- 読み取りとは別に、文字量の薄さ(500字前後)と転送量の重さ(919KB)という課題がある。3Dだから薄いのではなく、演出に画面を使うぶん文章が減る
- 対処は「どこまで捨てるか」を先に決めること。読み物を足せば1,017字まで増える
3Dホームページの相談を受けると、たいてい「JavaScriptだから読まれないのでは」から話が始まります。でも実際に測ってみると、心配されている場所は問題ではなくて、誰も気にしていなかった文字量のほうが効いていました。
数字を取るまで、僕もそう思っていませんでした。感覚で判断していたら、たぶん逆の対策をしていたと思います。
ここは正直に書いておきます。3Dホームページは、検索流入を主軸にしたい会社には向きません。文章量が構造的に少なくなるからです。それでも選ぶなら、読み物を必ず足すこと。演出だけのページを作って「検索に載らない」と嘆くのは、順番が違います。
自分のサイトが今どう見えているのか、まず確かめたい方へ。URLを入れるだけで、AI検索への対応度を8つの軸で採点するツールを配っています。公式LINEに登録して「AIO」と送ってください。
https://online.zoroya.co.jp/line/open/0RvI2YIDwo6D?mtid=215Go3drIXpK
出典
- 実測値(生HTML文字数・JS有無での比較・FCP計測)はすべて自社の3Dホームページ生成ツールの出力を2026-07-27に計測したもの
- AIクローラーのJavaScript実行可否:SearchOptimo「Do AI Crawlers Render JavaScript? GPTBot, ClaudeBot, and Perplexity in 2026」/Lantern「AI Crawlers Do Not Render JavaScript」/AI-Ready Check「AI Crawler Comparison 2026」(いずれも2026年)
- Googlebotのレンダリング挙動:Google Search Central 公式ドキュメント

