当サイトはアフィリエイト広告を利用しています

日本で買えるシクロクロスバイク「ほぼ」総まとめ 【2026】

シクロ買ってからスゲー時間経っちゃったけど、自分でシクロクロス買う前にもろもろリサーチしてデータが溜まってたので「ほぼ」総まとめ記事にしてます。

「ほぼ」なのは大手メーカー、ブランドに絞っているからです。

Tonicはどうした!? とか、東洋フレーム流行らせコラ! とかあればコメントいただければと思います

ちなみにこの記事で分かるのはこのへん↓

  • 2026年現在、日本で新車が買えるシクロクロスバイクのほぼ全ラインナップ
  • 「ピュアCX」と「グラベル兼用」のジオメトリ的な違いとか
  • 主要モデルのジオメトリ比較(サイズ切り替え可)
  • 予算別のオススメと、買う前によくある疑問への回答

そこそこ長い記事なので目次から気になるとこに飛んでもらったほうがいいです。

目次

ピュアな「シクロクロスバイク」はもはや絶滅危惧種、グラベルバイクとの統合が進む

本題にはいる前にちと現状を。

ピュアな「シクロクロスバイク」はすさまじい勢いで数を減らしてます。

小生は6年前くらいにもシクロクロス購入を検討していましたが(その時はMTBを買ってしまった)。

TREKのMTB「Roscoe(ロスコ)7」のインプレ──高コスパでバランスよし!──

その頃と比べるとブランド、車種、グレードがかなり絞られていて最早絶滅危惧種と言って良いレベルだと思います。

記事の推敲に時間をかけすぎてこの間にもCanyon Infliteがおま国になったり、TCXが日本限定販売になったりなんだりで大変な騒ぎでございます。

主な要因はグラベルバイクとの統合でしょう。

欧米でのグラベルバイク、グラベルレーサーの隆盛に伴いシクロクロス/グラベル兼用のバイクが増え始めた……というのがここ2、3年くらいのお話です。

が、あっという間に兼用を通り越してシクロクロス用途を廃した純グラベルロードになってしまった例は数しれず……。

ざっくり整理すると、ブランド側の事情はこんな感じです。

  • 市場規模の差──グラベルは「誰が買ってもいい」バイク、シクロクロスは「レースに出る人が買う」バイク。そもそも市場に出回る台数が違いすぎます……。
  • コロナバブル崩壊後のSKU削減──コロナで自転車が流行ったからと増産した結果、在庫を抱えて痛い目を見たブランドが、売れ筋以外のモデルを片っ端から整理した
  • 金型コスト──カーボンフレームは1モデル起こすのに莫大な金がかかる。で、シクロなんか作らなくても「グラベルで代用できるでしょ」となるのは経営判断としては正しい
  • UCIのタイヤ幅規定(33mm)──レース機材としてのCXバイクは太いタイヤを履く必要がない。逆に言うと「太いタイヤが入る」ことが売りにならない

とはいえ、後述するとおり「シクロクロス専用設計のバイクを残してくれてるブランド」も意外としぶとく生き残ってます。

日本で買えるモデルだと「選ぶ楽しみ」は少なくなってるのかもな〜と思いつつまとめておりますw

きっちりピュアシクロクロスバイクとグラベル兼用バイクは分けてるのでご安心を!

【基礎知識】ピュアシクロクロスバイクとグラベルロードの違い

じゃあピュアなCXバイクとグラベルロードの違いってなんだよ! って言うと、大きく分けてこの4つです。

  1. タイヤクリアランスとホイールサイズ(グラベルのほうが太いタイヤを履ける)
  2. BBハイト/BBドロップ(CXのほうがBBが高い)
  3. チェーンステー長とホイールベース(CXのほうが短い)
  4. ヘッド角とフォークオフセット(CXのほうが立っている=クイック)

それぞれちと解説しておくと

タイヤクリアランスとホイールサイズ

いちばん分かりやすい違いがココ。

UCIのシクロクロス規定ではタイヤ幅は33mmまでと決まっているので、ピュアCXバイクのクリアランスは700×33〜40C程度で設計されてます。

実際Bombtrack Tension Cのクリアランスは37Cまで、と潔い割り切りっぷりです。

対してグラベルロードは45〜50C超、モデルによっては650B×2.1インチなんてMTBみたいなサイズまで飲み込みます(Specialized CruXは2.1インチ対応)。

「じゃあ太いの入ったほうがお得じゃん」と思いがちですが、太いタイヤを入れるためにチェーンステーは長くなり、BBまわりは太くなり、結果として重くなりハンドリングは鈍くなります。

CXレースで使うなら33Cが入れば十分なので、クリアランスが小さいことは実はデメリットじゃないんですよね。

あと地味に大事なのが泥はけ(マッドクリアランス)

33Cのタイヤに対してどれだけ余裕を持って設計されてるかで、泥レースでの走破性がガラッと変わります。

「45C入るグラベルに33C履かせりゃ泥はけ最強じゃん」というのは半分正解で半分不正解、シートステーやチェーンステーの造形が泥を溜める形になってると余裕があっても詰まります。

BBハイトの高さ(BBドロップ)

ここが高い(値が小さい)と地面との距離が空いてクイックになります。

またコブなどにヒットしづらくなり、コーナーリング時もペダルを掻きにくいです。

ちょっとややこしいのが「BBハイト」と「BBドロップ」は逆方向の数字だということ。

  • BBハイト=地面からBB中心までの高さ。大きいほど高い
  • BBドロップ=前後ハブ軸を結んだ線からBB中心までの落差。小さいほど高い

メーカーのジオメトリ表に載ってるのはほぼBBドロップなので、この記事でも基本はBBドロップの数字で話します。

ざっくりした目安がこちら。

BBドロップキャラクター該当例
53〜60mmゴリゴリの純レース用CXバイク。高重心で機敏、ペダルヒットしにくいNESTO Craus Pro(53mm)、GIANT TCX(60mm)、BOMA D・OLA II(60mm)、OnebyEsu JFF#807z(60mm)
62〜65mm現代CXのスタンダート。安定性と機敏さのバランスが取れてるRidley X-Night、Canyon Inflite、GHISALLO GX-110(64mm)、Cervelo R5-CX
67〜70mmやや低重心。踏みやすく安定するが、荒れた路面ではペダルを掻きやすいかもTREK Boone
72mm〜ほぼグラベル/ロードの領域。どっしり安定志向Specialized CruX系

日本のシクロクロスはフラットで路面のいい公園コースが多いので、正直BBが低くてもそんなに困らないとません。

逆にベルギー・オランダみたいなドロドロのわだち + 木の根みたいなコースだとBBの高さがモロに効いてきます。

小生は海外レースを観てシクロクロスを始めたくちなので「BBハイトが低いのが気になる」としつこく言います。

チェーンステー長とホイールベース

チェーンステーが短いと後輪が体の近くに来るので、リアの荷重をコントロールしやすく、旋回もクイックになります。

CXバイクはだいたい425〜430mm前後(425㎜は魔法の数字らしいので425㎜のバイクは多いです)、グラベルロードだと430〜440mmくらいが目安。

たった10mmかよ、と思うかもしれませんが、これが泥のわだちで前輪を持ち上げるときとか、タイトなコーナーで後輪を滑らせるときにけっこう体感差になって出る部分とのこと

で、チェーンステー長とヘッド角の合わせ技で決まるのがホイールベース

これが短いほどクルクル曲がって、長いほど直進安定性が高くなります。

後で出てくるジオメトリマトリクスはこの「ホイールベース」と「BBドロップ」の2軸でプロットしてるので、そこで各車の性格を見比べてもらえればと。

ヘッド角とフォークオフセット

ヘッド角が立っている(数字が大きい)ほどハンドリングはクイックに、寝ている(数字が小さい)ほど安定方向に振れます。

CXバイクは71.5〜72.5度あたり、グラベルロードは70〜71.5度あたりが相場。

ここで大事なのがフォークオフセット(レイク)とセットで見ること。

ヘッド角とオフセットから算出されるトレイルという数値が、実際のハンドリングの重さ・軽さを決めてます。

「ヘッド角は寝てるけどオフセットが大きいからトレイルは短い=意外とクイック」みたいなことが普通に起きるので、ヘッド角だけ見て判断するのは早計です。

まぁそんなに細かくみなくていいと重います。

おまけ:トップチューブの形状(担ぎやすさ)

数字に出にくい差として担ぎやすさがあります。

シクロクロスは階段やシケイン(障害物)でバイクを担ぐ競技なので、トップチューブの裏側がフラットに近い形状だと肩に食い込まなくて格段にラクです。

Canyon Infliteのあの特徴的なトップチューブとかはこのため。

逆にグラベルロードはトップチューブの形状がまちまちなのでモノによっちゃ担ぎにくいことも。

ついでにケーブルの取り回しも要チェックです。

完全内装だと見た目はスッキリですが、担いだときにケーブルが肩に当たらないのは大きなメリットです(その代わりメンテは大変)。

まとめると

いずれにしてもシクロクロスは機敏(悪く言えば不安定)、グラベルロードは安定志向だと思っていていただければ大丈夫です。

シクロクロス自体がニッチな競技であるというのもそうですがコロナ明けの自転車業界の低迷に即してのブランド側のSKU削減の傾向もあってゴリゴリ数を減らされちゃってます。

ピュアシクロクロスバイク

Bianchi Zolder Pro(完成車/フレームセット)

かつてはワウト・ファンアールトも駆った高性能シクロクロスバイク、長らくカラーリング等々に変更がないままでしたがようやく昨年カラーリングに変更がありました。

完全内装に対応するかと思ったけどそこまで本格的なモデルチェンジではなかったのがちと残念。

毎年ほぼ半額で投げ売りされるタイミングがあるのであんとき買っときゃ良かったな感はある。

このバイクに限らずBianchiのバイクはイヤーモデルが終わると主にワイズロードオンラインで叩き売られる傾向にあるのでよほどすぐ欲しい! って場合以外はちと待つのがオススメです。

ワイズロードはコチラ

BOMA D・OLAⅡ(フレームセット)

BOMAというとロードバイクだと国内ブランドの中では正直マイナーでいぶし銀なイメージがありますが、シクロクロスモデルの D・OLAⅡはレース会場で目にすることも多いバイクの1つだと思います。

比較的軽量なカーボンフレームにカリッカリのシクロ向けジオメトリを兼ね備えた1台、地味に3色ラインナップされてるのも嬉しいところ。

ジオメトリは全サイズBBドロップ60mm固定、ホイールベースもS-510で995mmとかなり短めでゴリゴリのレース仕様です。

国内ブランドなのでサイズ展開が日本人の体格に寄せてあるのも地味に効いてきます。

海外ブランドの一番小さいサイズが合わない……って人は候補に入れる価値あり。

Bombtrack Tension C(フレームセット)

昨年末から今年の頭にかけて来日して日本のレースを走ったオランダのレーサー、ゴセ・ファンデルメールが乗っていたのはコレ。

BombtrackというとどうしてもHOOKやARISEといったグラベル系のフレームの印象が強いため、シクロクロスも作ってたんだ〜というのが小生の素直な感想です。

ジオメトリはかなりカリッカリのシクロクロスフレームなので当然ですがレース向き。

スペックはToray T700/T800ハイモッドカーボンでフレーム1060g(Sサイズ・スルーアクスル込み)、フォーク600g

タイヤクリアランスは37Cまでと潔く、BBはT47(68mm)のネジ切り

Bombtrack Tension(フレームセット)

国内では珍しくなってきたアルミのCXフレームです。

上のTENSIONのアルミモデルでアンダー15万円ほどとお手頃。

なおかつラック、フェンダーマウント装備などただのシクロクロスフレームに留まらない懐の深さと汎用性も魅力、ただサイズによってホイールサイズが違う(最小サイズは650B)のでそのへんはご注意を。

逆に言えば「1台でCXも通勤もキャンプツーリングもやる」という使い方なら、これ以上ないくらい懐が深い1台。

Cervelo R5CX(フレームセット)

VismaがバイクスポンサーをBianchiからCerveloにスイッチしたことで開発されたプロ供給専用のシクロクロスバイク、ワウトの活躍はもちろん、ファム・ファンエンペルやマリアンヌ・フォスといった女子レーサーの活躍も目立つ。

日本国内ではサイズ51のフレームが少数市販されただけなので販売はされてるけど入手難易度は高めかもしれません。

代理店変更のゴタゴタもあったしどっかで叩き売りになってくんないかな〜って思ってたりします。

↓まだ高いよ!

FELT FX Advanced(フレームセット)

今でこそ最強シクロクロスレーサーと言えばマチューにお株を譲ってしまった感のあるワウトですが、そんなマチューをちんちんにして世界選手権三連覇とかしてた時期に乗ってたのがこちらのフレーム。

FDがバンド式だったりなんだりで8年経ってるのでモデルチェンジはまだ? 感はありますがFELTのお家芸とも言える TeXtreme カーボンを使用しており基本性能はお墨付きです。

「8年前の設計」をネガティブに捉えるか「枯れた設計=規格が素直でパーツを選ばない」とポジティブに捉えるかは人によりますが、小生は後者だと思ってます。

フルモデルチェンジ待ちしてる間にディスコンになるパターンが1番怖い……。

GIANT TCX Advanced Pro(完成車/フレームセット)

半ば公式で「TCX友の会」が発足しているなど広く日本のシクロクロス人口に膾炙した感のあるTCX、アンダー900gの軽量性に加えてGIANTらしくコストパフォーマンスも良好です。

モデル数は削減されながらもしぶとくラインナップに残り続けるのは名機ゆえのことでしょう。

プロが勝手に穴開けてるのは見ましたがそろそろ完全内装になったりしないっすかね?

とか思ってたら日本以外ではディスコンってマジかよ・・・

つまり日本のシクロクロス人気が世界基準で見て異常に高いということでもあり、これはこれで誇っていい話なのかもしれません。

「日本限定モデル」になったからには買い支えていきましょう(誰目線)。

OnebyEsu JFF807z(フレーム/フレームセット)

東京サンエスが展開する国内ブランド「JFF」のアルミシクロクロスモデル。

大体2年くらいのスパンでコンスタントにアップデートを重ねているのが高評価。

フレームセットはフォークを2種類から選べる仕様。

あんまり目立ってはいないけど実はカラーオーダーも出来て基本色はアップチャージなしなのも嬉しいところ(フォーク同色塗装は要アップチャージ)。

小生は結局これを買いました。

良く走るしカッコいいので気に入ってます。

One by ESU(ワンバイエス)JFF#807zのインプレ〜実力派でハイコスパなシクロクロスバイク〜

Panasonic FCXCC04(フレームセット)

名門Panasonicのクロモリシクロクロス、競技シーンでは主流のディスクブレーキモデルは敢え無くディスコンになってしまった一方でいまだラインナップに残るカンチブレーキモデル。

ファンたちの根強い声援に応えてディスコンを免れたのか、真相は神のみぞ知る……。

最大の武器はオーダーメイドで、サイズもカラーも自分専用に組めるという他ではまず代替の効かないポイント。

「レースで勝つ機材」というよりは「一生付き合う相棒」を選ぶ感覚の1台です。

ただカンチブレーキという時点で今から競技に本気で使うのはちと厳しいのが正直なところ。

個人的には大径チタンパイプのロードモデルがツボなのでチタンシクロ出して欲しいです! お願いします!

PINARELLO CROSISTA F

2024年当時イネオスに所属していたトム・ピドコックのためだけに作られたと言っても過言ではないシクロクロスバイク。

ウネウネでセクシーな伝統の雰囲気そのままにシクロで戦えるマシンに仕上げているのだから恐れ入る。

ベースはロードのFシリーズで、末尾の数字(F9/F7)はカーボングレードを表すいつものPINARELLO式。

個人的には日本で販売があることに驚いた。

お値段のほうもピナレロなので推して知るべしですが、「レースに勝つため」だけじゃない満足感を買うバイクだと思えば全然アリでしょう。

会場で被らないのも間違いなし。

TREK BOONE6(完成車)

EmondaのフレームデザインにDomaneのIsoSpeedを搭載したキメラ的なシクロクロスバイク、男子では子ネイス(ティボー・ネイス)女子はルシンダ・ブラントをはじめとするバロワーズの選手たちが駆るバイク。

ベルギーやオランダのシクロクロス巧者たちがその性能を証明してくれています。

TREKと言えば押しも押されもせぬ大手ブランドなのに半端にモデルを統合したりせず専用設計のシクロクロスバイクとして残しておいてくれたあたりは個人的に高評価。

Ridley X-nightRS

ロードからの流れを汲んで完全内装&エアロ化を果たした生粋のシクロクロスバイク。

見た目はほぼ同社のオールロード「astr」だがジオメトリその他はしっかりシクロクロスバイク、見た目がめっちゃかっこいいけどお値段もカッコいいのが玉に瑕です。

RIDLEYの取扱店がそれほど多くないのも泣きどころか。

Ridley X-night SL

エリ・イゼルビットによる世界選手権(U23)制覇やヨーロッパチャンピオン獲得も記憶に新しい純シクロクロスバイク。

カリッカリに攻めたジオメトリで見ようによっては逆スローピングのパシュートフレームのようにも見えるビジュアルが特徴的。

エアロ化を果たした上位モデル↑こそあれ、輝かしい戦績は今なお朽ちることはないでしょう。

価格帯的にもこっちのがいい! って人は多そう……

RSカッコいいけど高いんですよね……

NESTO Craus Pro(フレームセット)

日本のホダカのプレミアムレーシングバイクライン「NESTO」のカーボンシクロクロスバイク、アンダー15万円というイカれた価格(褒めてます)に加えて国内シクロクロスに合わせたジオメトリでBBハイトは驚愕の53mm!! 

この記事で紹介してる中でもぶっちぎりで高いBBです。

Specialized CruXの72mmと比べると19mmも高いわけで、同じ「ドロップハンドルで未舗装を走る自転車」とは思えない差。

もちろん高すぎるBBは重心が上がって舗装路では落ち着きがなくなるので、完全にレース専用機と割り切れる人向けです。

サイズ展開が少ないのが唯一残念な部分だが合うサイズがあればかなり魅力的な1台。

個人的にNESTOのバイクには思い入れがあるので応援してます。

「新しい生活様式」コロナ禍の通勤に最適なクロスバイクNESTO「VACANZE1」のレビュー・インプレ

NESTO Craus(フレームセット/完成車)

上記のCraus Proのアルミフレーム版です。

これだけ機材の高騰が話題になっている中で完成車もフレームセットも値付を間違えたのかと思うレベルでリーズナブル、隠れたハイコスパシクロクロスバイクです。

シクロクロスは転ぶ・ぶつける・泥で削れるのが前提の競技なので、初めての1台がアルミというのは実はかなり合理的な選択。

2台持ちしなければならない場合はベストバイかも。

シクロクロス/グラベル兼用バイク

ここからはシクロクロス、グラベルロード兼用バイクの紹介です。

各メーカーコイツがあるからいいっしょ感出してきてますがジオメトリがシクロクロス向きじゃなかったりするので要注意です。

とはいえ「年間20戦するわけじゃない」「グラベルもロングライドもやりたい」という人にはむしろこっちのほうが幸せになれる可能性は高いです。

Cannondale SuperX

日本公式の紹介でシクロクロスの「シ」の字も出なくなったので心配してましたがEFの選手たちがシクロクロスに使っていると聞いて一安心。

ジオメトリはやはりグラベル寄りなのでEFの選手たちは平気なのかともやもやしている小生の前で最強ホビーレーサーの高岡さんが颯爽と最速社長選手権を征してもやもやを払拭してくれました。

タイヤクリアランスはフロント51mm、リア48mmとガッツリのグラベル仕様。

一方で最上位のLAB71フレームは56サイズでアンダー900gと、この太さで作ってるとは思えない軽さです。

キャノンデール名物の独自規格については、新型はAi廃止・UDH採用で他社と同じホイールが普通に使えるようになったのが最大の朗報。

↓小生のレースレポート

稲城クロス(超初心者クラス)参戦レポート〜自走単騎参戦の結果は〜

SANTA CLUZ Stigmata(フレームセット)

MTBではいつかは〜なブランドであるサンタクルーズのグラベルレーサー/CXバイク。

新型の第4世代になって急激にジオメトリがグラベル寄りになったもののトレイルでも乗れるレベルのマシンへと進化してよりハードなコースに対応と言えば聞こえはいいか?

ただ正直に言うとCXレース目的で買うバイクではもうないと思ってます。

ヘッドは寝てるしホイールベースも長い、完全に「ドロップハンドルのMTB」方向に振り切った設計。

ただMTBブランドが作るドロップバー車という文脈で見ると唯一無二の魅力があるのも事実で、シクロクロスは年数回、あとは山遊び……みたいな使い方なら最高の相棒になるはず。

Specialized S-WORKS CLUX 5

この記事を書いてる最中にフルモデルチェンジしやがりました。

しかも変更の中身が結構な事件で、海外メディアの第一声は「スペシャライズドはもうシクロクロスバイクを作っていない」です。

まずスペックから順を追って見ていきます。

  • フレーム重量789g(S-Works / FACT 12r)。前作825gからさらに軽量化
  • タイヤクリアランス47mm→55mm(2.2インチ)。もはやMTBの領域
  • Tarmac SL8の知見を投入したエアロ化で45km/h走行時に15.2W削減
  • 1x専用(最大52T対応)。フロントダブルは非対応

で、問題のジオメトリ。

  • ヘッド角を0.5度寝かせた(サイズ56で72度→71.5度)
  • シート角を0.5度立てた
  • BBをさらに6mm下げた(太いタイヤで腰高になるのを嫌ったため)
  • チェーンステーは全サイズ425mmで据え置き、リーチとホイールベースは拡大

ヘッドは寝る、ホイールベースは伸びる、BBはさらに6mm下がる。

この記事の【基礎知識】で書いた「CXバイクの条件」の全項目を、真逆の方向に振り切ったわけです。

小生が旧型に対して「BBハイトが低いのが気になる」としつこく言っていたのが、6mm深くなってもう議論の余地すらなくなりました。

バイクとしては間違いなく「史上最速のグラベルレーサー」で、これはこれで正しい進化だと思います。

グラベルレースはもう完全に「エアロと軽さの勝負」になってるので、そこに全部を賭けたのは経営判断としても正解でしょう。

ただシクロクロス目的でこの記事を読んでる人にとっては、新型Cruxは選択肢から外れました。

スペシャという大手が1ブランド丸ごとCXから撤退したわけで、冒頭に書いた「絶滅危惧種」がまた一段進んだ格好です……。

Specialized Crux 5 のラインナップと価格

グレード構成も刷新されて、旧「Pro」が消えて「S-Level」という新しい枠が入りました。

モデルカーボン/コンポ日本価格(税込)
S-Works Crux 5FACT 12r / SRAM RED XPLR1,848,000円
S-Works フレームセットFACT 12r(789g)792,000円
Crux 5 S-LevelFACT 10r / RED XPLR新設グレード。海外実売10,500ドル前後、国内展開は要確認
Crux ExpertFACT 10r / Force XPLR880,000円
Crux CompFACT 10r / Rival XPLR594,000円

S-Works完成車で185万円弱。……いやまぁ、そういう時代ですよね。

面白いのはメカニカル(ワイヤー)コンポにも対応していること。

今どきのハイエンドグラベルでこれは珍しく、レースで壊しても現地でなんとかなる、という思想が残ってるのは好感が持てます。

あとクランクが前作比で2.5mm短くなってるのも、BBを下げたこととセットで見ると納得の変更。

Specialized CLUX DSW

CLUXのアルミモデルです。

アルミフレームで1.4kg以下という「アルミ最軽量級グラベルフレーム」です。

欧米レビューサイトではグラベルバイクというよりもシクロクロスバイクやん、と評価されているバイク。

お値段はカーボンモデルより控えめなものの何気にフォークはS-Works FACTカーボンと上位モデルと同じでコストパフォーマンスは良好。

BBはネジ切り、リアはUDH、タイヤは驚異の2.1インチまで対応と規格まわりの現代性は文句なしです。

ただやはりBBハイトが低いのが気になる(しつこい)。

……と、旧型カーボンCruxと並べて書いていたのがこれまでの話でした。

ここに来て事情が変わります。

カーボンのCruxが上記のとおりフルモデルチェンジで完全にグラベル方向へ振り切った結果、このDSWだけが旧世代のジオメトリ(BBドロップ72mm、クリアランス2.1インチ)のまま取り残されました。

つまり皮肉なことに、今のスペシャライズドで「まだシクロクロスに使えるCrux」はこのアルミのDSWだけということになります。

いつまでこの状態が続くかは分かりません。

カーボンが新世代に切り替わった以上、DSWも次のモデルチェンジで同じ方向に持っていかれる可能性はかなり高いと見ています。

スペシャでCXをやりたいなら、狙うなら今のうちかと。

まだ買える……かも? な型落ちシクロクロスバイク

ここまで紹介してきたのは現行モデルですがここからは型落ち、ディスコンのモデルを紹介します。

悲しいかな近年ディスコンになったバイクの中からワンチャン在庫が残ってるかもしれないアレコレをピックアップしました。

Bianchi impruso pro(旧モデル)

Bianchiが放つ新しいグラベルレーサー! のはずが内情はzolder proと同一のフレーム、完成車のアッセンブルはゴリゴリのグラベル寄りです。

が、ジオメトリなどはしっかりシクロクロスバイクなので安心、Bianchiでは珍しいアースカラーやチェレステチェレステしていないカラーリングなのもポイント。

つまり「Zolder Proが欲しいけどチェレステはちょっと……」という人にとっては、むしろこっちが本命という倒錯した1台。

投げ売りされてたら普通に買いだと思います。

Cannondale SuperSix EVO CX(旧モデル)

スーパーシックスエボ(第3世代)譲りの見た目のカッコ良さはピカイチ、グラベル兼用フレームのCXモデルです。

ただキャノンデール独自規格が重くのしかかってきます。

PF30iとAIオフセットの2重苦でアッセンブルをゴリゴリ制限されます。

特にAiオフセットがイタい……ホイールの選択肢を絞ってきます。

専用ハブを使ったホイールを組んでもらえればそれが1番良いけどそれにさえショップ側の規格に対する理解を要求してくる鬼仕様です。

逆に「完成車のまま乗る、ホイールも買い替えない」という人なら関係ない話なので、投げ売りされてたら美味しい買い物になる可能性はあります。

GHISALLO GX-110 無印/Mk2

FUKAYAのオリジナルブランドGHISALLOからはGX-110をご紹介、需給や為替の関係で販売終了になってしまいましたが在庫があるショップもあるかもしれません(そこになければないです)。

マークIIになって黒くなったりするあたりは「分かってるな」って感じさせてくれます。

公式もこんな感じ↓だし、フカヤの担当者にはガノタがいるってはっきり分かんだね。

【朗報】奇跡の復活、再販が決定

型落ち・在庫を狙うときのコツ

ディスコンモデルを狙うなら、この3つは押さえておきたいところ。

  • シーズンオフ(3〜6月)を狙う──CX関連の在庫が動くのはシーズンイン直前。逆に春先は投げ売りが出やすい
  • ワイズロードオンラインのアウトレットを定期巡回──特にBianchiは高確率で叩き売られます
  • フレーム単体の在庫は「地方の実店舗」に眠っている──オンラインで消えてても電話一本で見つかることが割とある

あと当然ですが型落ちフレームは補修パーツ(ハンガー・ケーブルガイド等)の供給が心配なので、買うときに一緒に予備を確保しておくと後で泣かずに済みます。

特にディレイラーハンガーは1シーズンで2〜3枚曲げるのがCXなので、最低でも2枚は予備を持っておきましょう。

【一目でわかる】主要CXバイクのジオメトリ比較マトリクス

ここまで数字をダラダラ書いてきましたが、結局のところ図で見たほうが早いということで比較マトリクスを作りました。

横軸がホイールベース(左=クイック、右=安定)、縦軸がBBドロップ(上=BBが高い、下=BBが低い)

つまり左上に行くほどゴリゴリのレーシーなCXバイク、右下に行くほどグラベル寄りの安定志向ということになります。

サイズを切り替えられるので、自分が乗るサイズで比較してみてください(点にマウスを乗せる/タップすると詳細が出ます)。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CX Geometry Matrix</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;0,9..40,700;1,9..40,400&family=Space+Mono:wght@400;700&display=swap');

#cx-matrix-root {
  --bg: #f8f7f4;
  --surface: #ffffff;
  --border: #ddd8d0;
  --grid: #ece8e1;
  --text: #2c2a26;
  --text-muted: #8a8580;
  --accent: #e05a2b;
  --accent-soft: #f4e8e2;

  /* Quadrant palette - warm, muted, distinct */
  --q-tl-bg: rgba(79, 120, 199, 0.07);
  --q-tl-border: rgba(79, 120, 199, 0.25);
  --q-tl-text: #4f78c7;
  --q-tr-bg: rgba(199, 130, 50, 0.07);
  --q-tr-border: rgba(199, 130, 50, 0.25);
  --q-tr-text: #b07830;
  --q-bl-bg: rgba(80, 170, 120, 0.07);
  --q-bl-border: rgba(80, 170, 120, 0.25);
  --q-bl-text: #3a9960;
  --q-br-bg: rgba(160, 90, 160, 0.07);
  --q-br-border: rgba(160, 90, 160, 0.25);
  --q-br-text: #9a5a9a;

  font-family: 'DM Sans', sans-serif;
  background: var(--bg);
  color: var(--text);
  padding: 28px 20px;
  border-radius: 14px;
  max-width: 800px;
  margin: 32px auto;
  box-sizing: border-box;
  border: 1px solid var(--border);
}

#cx-matrix-root *, #cx-matrix-root *::before, #cx-matrix-root *::after {
  box-sizing: border-box;
}

.cxm-header {
  text-align: center;
  margin-bottom: 22px;
}

.cxm-header h2 {
  font-family: 'Space Mono', monospace;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.06em;
  margin: 0 0 6px;
  color: var(--text);
}

.cxm-header p {
  font-size: 13px;
  color: var(--text-muted);
  margin: 0;
}

/* Size selector */
.cxm-sizes {
  display: flex;
  justify-content: center;
  gap: 0;
  margin-bottom: 22px;
  background: var(--grid);
  border-radius: 8px;
  padding: 3px;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

.cxm-size-btn {
  font-family: 'Space Mono', monospace;
  font-size: 13px;
  font-weight: 700;
  padding: 7px 18px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: all 0.2s;
}

.cxm-size-btn:hover {
  color: var(--accent);
}

.cxm-size-btn.active {
  background: var(--surface);
  color: var(--accent);
  box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}

/* Chart container */
.cxm-chart-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.04);
  overflow: hidden;
}

.cxm-chart {
  position: absolute;
  inset: 48px 36px 56px 60px;
}

/* Quadrant backgrounds */
.cxm-quadrant {
  position: absolute;
  display: flex;
  flex-direction: column;
  padding: 10px 12px;
}

.cxm-q-title {
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin-bottom: 3px;
}

.cxm-q-desc {
  font-size: 10.5px;
  line-height: 1.45;
  opacity: 0.85;
  max-width: 150px;
}

.cxm-q-tl {
  top: 0; left: 0; width: 50%; height: 50%;
  background: var(--q-tl-bg);
  align-items: flex-start;
  justify-content: flex-start;
}
.cxm-q-tl .cxm-q-title, .cxm-q-tl .cxm-q-desc { color: var(--q-tl-text); }

.cxm-q-tr {
  top: 0; right: 0; width: 50%; height: 50%;
  background: var(--q-tr-bg);
  align-items: flex-end;
  justify-content: flex-start;
  text-align: right;
}
.cxm-q-tr .cxm-q-title, .cxm-q-tr .cxm-q-desc { color: var(--q-tr-text); }
.cxm-q-tr .cxm-q-desc { margin-left: auto; }

.cxm-q-bl {
  bottom: 0; left: 0; width: 50%; height: 50%;
  background: var(--q-bl-bg);
  align-items: flex-start;
  justify-content: flex-end;
}
.cxm-q-bl .cxm-q-title, .cxm-q-bl .cxm-q-desc { color: var(--q-bl-text); }

.cxm-q-br {
  bottom: 0; right: 0; width: 50%; height: 50%;
  background: var(--q-br-bg);
  align-items: flex-end;
  justify-content: flex-end;
  text-align: right;
}
.cxm-q-br .cxm-q-title, .cxm-q-br .cxm-q-desc { color: var(--q-br-text); }
.cxm-q-br .cxm-q-desc { margin-left: auto; }

/* Axes */
.cxm-axis-x, .cxm-axis-y {
  position: absolute;
  background: var(--text);
  opacity: 0.18;
}

.cxm-axis-x {
  left: 0; right: 0; top: 50%;
  height: 1.5px;
}

.cxm-axis-y {
  top: 0; bottom: 0; left: 50%;
  width: 1.5px;
}

/* Grid lines */
.cxm-grid-line {
  position: absolute;
  background: var(--grid);
}

.cxm-grid-h { left: 0; right: 0; height: 1px; }
.cxm-grid-v { top: 0; bottom: 0; width: 1px; }

/* Axis labels */
.cxm-xlabel, .cxm-ylabel {
  position: absolute;
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: 0.02em;
}

.cxm-xlabel {
  bottom: -42px;
  left: 0;
  right: 0;
  text-align: center;
}

.cxm-ylabel {
  top: 50%;
  left: -52px;
  transform: rotate(-90deg) translateX(-50%);
  transform-origin: left center;
  white-space: nowrap;
}

/* Axis arrow labels */
.cxm-arrow-label {
  position: absolute;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  opacity: 0.7;
}

.cxm-arrow-right { right: 2px; top: 50%; transform: translateY(6px); }
.cxm-arrow-left { left: 2px; top: 50%; transform: translateY(6px); }
.cxm-arrow-top { top: 2px; left: 50%; transform: translateX(8px); }
.cxm-arrow-bottom { bottom: 2px; left: 50%; transform: translateX(8px); }

/* Tick labels */
.cxm-tick {
  position: absolute;
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  color: var(--text-muted);
}

.cxm-tick-x { bottom: -20px; transform: translateX(-50%); }
.cxm-tick-y { right: calc(100% + 8px); transform: translateY(-50%); white-space: nowrap; }

/* Data points */
.cxm-dot-group {
  position: absolute;
  transform: translate(-50%, -50%);
  z-index: 10;
  cursor: pointer;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cxm-dot-group:hover {
  transform: translate(-50%, -50%) scale(1.15);
  z-index: 20;
}

.cxm-dot {
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 2.5px solid var(--surface);
  box-shadow: 0 1px 4px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.06);
  transition: all 0.3s;
}

.cxm-dot-group:hover .cxm-dot {
  width: 17px;
  height: 17px;
  box-shadow: 0 2px 12px rgba(224, 90, 43, 0.35), 0 0 0 1px rgba(0,0,0,0.08);
}

.cxm-dot-label {
  position: absolute;
  top: -20px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'DM Sans', sans-serif;
  font-size: 10px;
  font-weight: 600;
  white-space: nowrap;
  color: var(--text);
  opacity: 0;
  transition: opacity 0.2s;
  pointer-events: none;
  background: rgba(255,255,255,0.85);
  padding: 1px 5px;
  border-radius: 3px;
}

.cxm-dot-group:hover .cxm-dot-label {
  opacity: 1;
}

/* Tooltip */
.cxm-tooltip {
  position: fixed;
  background: var(--surface);
  border: 1.5px solid var(--accent);
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 12px;
  line-height: 1.6;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
  z-index: 100;
  box-shadow: 0 8px 28px rgba(0,0,0,0.1);
  max-width: 240px;
}

.cxm-tooltip.show { opacity: 1; }

.cxm-tooltip-name {
  font-weight: 700;
  font-size: 14px;
  margin-bottom: 2px;
  color: var(--accent);
}

.cxm-tooltip-size {
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 6px;
}

.cxm-tooltip-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 2px 0;
}

.cxm-tooltip-row span:first-child {
  color: var(--text-muted);
}

.cxm-tooltip-row span:last-child {
  font-family: 'Space Mono', monospace;
  font-weight: 700;
  font-size: 11px;
}

.cxm-tooltip-character {
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid var(--grid);
  font-size: 11px;
  font-style: italic;
  color: var(--text-muted);
  line-height: 1.5;
}

/* Legend */
.cxm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  justify-content: center;
  margin-top: 18px;
}

.cxm-legend-item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 11.5px;
  color: var(--text);
}

.cxm-legend-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid var(--surface);
  box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
  flex-shrink: 0;
}

/* Animation */
@keyframes cxm-pop {
  0% { transform: translate(-50%, -50%) scale(0); opacity: 0; }
  60% { transform: translate(-50%, -50%) scale(1.15); opacity: 1; }
  100% { transform: translate(-50%, -50%) scale(1); opacity: 1; }
}

.cxm-dot-group.entering {
  animation: cxm-pop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* No data */
.cxm-nodata {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  color: var(--text-muted);
  font-style: italic;
}

/* Responsive */
@media (max-width: 600px) {
  #cx-matrix-root { padding: 16px 10px; }
  .cxm-header h2 { font-size: 14px; }
  .cxm-size-btn { font-size: 12px; padding: 6px 13px; }
  .cxm-chart-wrap { aspect-ratio: 1 / 1; }
  .cxm-chart { inset: 40px 24px 48px 48px; }
  .cxm-xlabel { bottom: -36px; font-size: 10px; }
  .cxm-ylabel { left: -40px; font-size: 10px; }
  .cxm-q-desc { display: none; }
  .cxm-q-title { font-size: 9px; }
}
</style>
</head>
<body style="background:#eee;padding:20px;">
<!-- ===== WordPress: この<div>から</script>までをカスタムHTMLブロックにコピペ ===== -->
<div id="cx-matrix-root">
  <div class="cxm-header">
    <h2>CX BIKE GEOMETRY MATRIX</h2>
    <p>ホイールベース × BB下がり ── サイズ別ジオメトリ比較</p>
  </div>
  <div class="cxm-sizes" id="cxmSizes"></div>
  <div class="cxm-chart-wrap">
    <div class="cxm-chart" id="cxmChart"></div>
  </div>
  <div class="cxm-legend" id="cxmLegend"></div>
  <div class="cxm-tooltip" id="cxmTooltip"></div>
</div>

<script>
(function() {
  // ===================================================================
  //  DATA — 実データに差し替えてください
  //  手書きメモから読み取った値をベースにダミー補完しています
  //  wb: ホイールベース(mm), bb: BB下がり(mm)
  //  character: そのバイクの象限での性格コメント
  // ===================================================================
  const BIKES = [
    // ──────────────────────────────────────────────
    //  データソース凡例:
    //  ★ = メーカー公式ジオメトリ表 or レビュー実測値で確認済み
    //  ☆ = 手書きメモからの読み取り値(要・公式値で差し替え)
    //  サイズキーはトップチューブ長ベースの概算値に統一予定
    // ──────────────────────────────────────────────
    {
      name: "Ridley X-Night",       // ★ Ridley公式フレームパスポート(X-Night SL Disc)確認済み
      color: "#4f78c7",
      character: "ベルギー流の高BB+ショートWB。泥で踏み続けられる伝統ジオメトリ",
      sizes: {
        "52": { wb: 999, bb: 62 },  // ★ 公式: WB=999, BBdrop(H)=62
        "54": { wb: 1009, bb: 64 }, // ★ 公式: WB=1009, BBdrop(H)=64
        "56": { wb: 1009, bb: 64 }, // ★ 公式: WB=1009, BBdrop(H)=64
      }
    },
    {
      name: "Cervelo R5CX",         // ★ Cervelo公式R5ジオメトリ + 「ロードより11mm高い」の公式仕様から算出
      color: "#5a8fd4",
      character: "プロ供給バイク。R5譲りの素性、CX用にBBを11mm持ち上げた設計",
      sizes: {
        "51": { wb: 1002, bb: 63.5 }, // ★ R5(51)BBdrop74.5 − 11mm。WBは前中心576から推定
        "54": { wb: 1015, bb: 61 },   // ★ R5(54)BBdrop72 − 11mm
        "56": { wb: 1025, bb: 61 },   // ★ R5(56)BBdrop72 − 11mm
      }
    },
    {
      name: "Giant TCX ADV",        // ★ BB drop=60mm全サイズ共通(BikeRadar/Velo複数ソース確認)
      color: "#c78230",
      character: "X-Nightより高い超・欧州流BB。高重心で泥に強いレーサー",
      sizes: {
        "51": { wb: 1013, bb: 60 },   // ★ BBdrop=60公式確認、WBは概算
        "54": { wb: 1025, bb: 60 },   // ★ ML≒54, BBdrop=60
        "56": { wb: 1038, bb: 60 },   // ★ BBdrop=60
      }
    },
    {
      name: "GHISALLO GX-110",      // ★ GX-110 Mk.II公式ジオメトリ表確認済み(H=64はBB Drop扱い)
      color: "#e05a2b",
      character: "全サイズBB64mm固定。中庸ジオメトリでオールラウンドに扱いやすい",
      sizes: {
        "51": { wb: 1007, bb: 64 },   // ★ S(490): WB=1007, H=64
        "54": { wb: 1007, bb: 64 },   // ★ M(520): WB=1007, H=64
        "56": { wb: 1008, bb: 64 },   // ★ L(540): WB=1008, H=64
      }
    },
    {
      name: "Canyon Inflite",       // ★ Canyon公式ジオメトリPDF確認済み
      color: "#3a9960",
      character: "世界選手権8勝の実績。ショルダリング◎、低重心で機敏",
      sizes: {
        "51": { wb: 1000, bb: 62 },   // ★ 2XS (TT522≒51相当), WB公式, BB=CXMag実測M値から推定
        "54": { wb: 1006, bb: 62 },   // ★ S (TT550≒54相当), WB公式
        "56": { wb: 1018, bb: 62 },   // ★ M (TT562≒56相当), WB公式, BB=CXMag実測62mm
      }
    },
    {
      name: "Trek Boone",           // ★ Trek INEサイト + CX Magazine実測確認済み
      color: "#9a5a9a",
      character: "IsoSpeedの快適性+深BB。泥レースで真価を発揮",
      sizes: {
        "52": { wb: 1005, bb: 70 },   // ★ Trek公式(52cm): WB=100.5cm, BBdrop=7.0cm
        "54": { wb: 1010, bb: 67 },   // ★ Trek公式(54cm): WB=101.0cm, BBdrop=6.7cm (※6.8説もあり)
        "56": { wb: 1020, bb: 68 },   // ★ Trek公式(56cm): WB=102.0cm, BBdrop=6.8cm (CXMag実測)
      }
    },
    {
      name: "Specialized CruX",     // ★ Specialized公式BBdrop=72mm(54-61cm)、現行はグラベル寄り設計
      color: "#d4553a",
      character: "現行はグラベル志向。低めBB+ロングWBで安定、超軽量フレーム",
      sizes: {
        "52": { wb: 1015, bb: 72 },   // ★ BBdrop=72(52は74説あり)。WBは概算
        "54": { wb: 1024, bb: 72 },   // ★ 公式BBdrop=72
        "56": { wb: 1035, bb: 72 },   // ★ 公式BBdrop=72
      }
    },
    {
      name: "BOMA D・OLA II",        // ★ ユーザー提供の公式ジオメトリ表
      color: "#e8a735",
      character: "国内ブランドのCXレーサー。BB60mm固定でバランス型",
      sizes: {
        "51": { wb: 995, bb: 60 },    // ★ S-510
        "54": { wb: 999, bb: 60 },    // ★ M-540
        "56": { wb: 1017, bb: 60 },   // ★ L-570
      }
    },
    {
      name: "OnebyEsu JFF807z",      // ★ ユーザー提供の公式ジオメトリ表(OBS-CBD1.25TH)
      color: "#7a6e5d",
      character: "国内ブランドのアルミCX。BB60mm固定、カラーオーダー可",
      sizes: {
        "51": { wb: 995, bb: 60 },    // ★ XS/S (TL490≒51相当), WB=995.43
        "54": { wb: 997, bb: 60 },    // ★ M (TL510≒54相当), WB=997.09
        "56": { wb: 1003, bb: 60 },   // ★ L (TL530≒56相当), WB=1002.88
      }
    },
  ];

  // Collect all unique sizes
  const sizeSet = new Set();
  BIKES.forEach(b => Object.keys(b.sizes).forEach(s => sizeSet.add(s)));
  // Sort: numeric first, then alpha
  const SIZES = [...sizeSet].sort((a, b) => {
    const na = parseFloat(a), nb = parseFloat(b);
    if (!isNaN(na) && !isNaN(nb)) return na - nb;
    if (!isNaN(na)) return -1;
    if (!isNaN(nb)) return 1;
    const order = ['XS','S','M','L','XL'];
    return (order.indexOf(a) ?? 99) - (order.indexOf(b) ?? 99);
  });

  let currentSize = SIZES.includes("54") ? "54" : SIZES.includes("M") ? "M" : SIZES[Math.floor(SIZES.length/2)];

  const sizesEl = document.getElementById('cxmSizes');
  const chartEl = document.getElementById('cxmChart');
  const legendEl = document.getElementById('cxmLegend');
  const tooltipEl = document.getElementById('cxmTooltip');

  // Build size buttons
  SIZES.forEach(s => {
    const btn = document.createElement('button');
    btn.className = 'cxm-size-btn' + (s === currentSize ? ' active' : '');
    btn.textContent = s;
    btn.addEventListener('click', () => selectSize(s));
    sizesEl.appendChild(btn);
  });

  // Build legend
  BIKES.forEach(bike => {
    const item = document.createElement('div');
    item.className = 'cxm-legend-item';
    const dot = document.createElement('span');
    dot.className = 'cxm-legend-dot';
    dot.style.background = bike.color;
    const label = document.createElement('span');
    label.textContent = bike.name;
    item.appendChild(dot);
    item.appendChild(label);
    legendEl.appendChild(item);
  });

  // Quadrant definitions
  const QUADRANTS = {
    tl: { title: "クイック+高BB", desc: "機敏なハンドリング、重心はやや高め。テクニカルコースで差が出る" },
    tr: { title: "安定+高BB",     desc: "直進安定+高重心。スピード系レイアウト向き" },
    bl: { title: "クイック+低BB", desc: "低重心+機敏。泥や荒れた路面でのコントロール性◎" },
    br: { title: "安定+低BB",     desc: "ロングWB+低重心。どっしり安定、長距離やグラベル寄り" },
  };

  function getRange(size) {
    let minWb = Infinity, maxWb = -Infinity, minBb = Infinity, maxBb = -Infinity;
    BIKES.forEach(bike => {
      const d = bike.sizes[size];
      if (!d) return;
      minWb = Math.min(minWb, d.wb);
      maxWb = Math.max(maxWb, d.wb);
      minBb = Math.min(minBb, d.bb);
      maxBb = Math.max(maxBb, d.bb);
    });
    // If only 1 or 0 bikes, widen
    if (minWb === maxWb) { minWb -= 15; maxWb += 15; }
    if (minBb === maxBb) { minBb -= 3; maxBb += 3; }
    const padWb = (maxWb - minWb) * 0.2;
    const padBb = (maxBb - minBb) * 0.2;
    return {
      minWb: minWb - padWb, maxWb: maxWb + padWb,
      minBb: minBb - padBb, maxBb: maxBb + padBb,
    };
  }

  function render(size) {
    chartEl.innerHTML = '';
    const range = getRange(size);

    // Quadrant backgrounds + labels
    const qMap = [
      { pos: 'cxm-q-tl', key: 'tl' },
      { pos: 'cxm-q-tr', key: 'tr' },
      { pos: 'cxm-q-bl', key: 'bl' },
      { pos: 'cxm-q-br', key: 'br' },
    ];
    qMap.forEach(q => {
      const div = document.createElement('div');
      div.className = 'cxm-quadrant ' + q.pos;
      div.innerHTML = `
        <div class="cxm-q-title">${QUADRANTS[q.key].title}</div>
        <div class="cxm-q-desc">${QUADRANTS[q.key].desc}</div>
      `;
      chartEl.appendChild(div);
    });

    // Axes
    ['cxm-axis-x', 'cxm-axis-y'].forEach(cls => {
      const ax = document.createElement('div');
      ax.className = cls;
      chartEl.appendChild(ax);
    });

    // Grid lines
    [25, 75].forEach(pct => {
      const h = document.createElement('div');
      h.className = 'cxm-grid-line cxm-grid-h';
      h.style.top = pct + '%';
      chartEl.appendChild(h);
      const v = document.createElement('div');
      v.className = 'cxm-grid-line cxm-grid-v';
      v.style.left = pct + '%';
      chartEl.appendChild(v);
    });

    // Arrow labels on axes
    const arrows = [
      { cls: 'cxm-arrow-right', text: '安定 →' },
      { cls: 'cxm-arrow-left',  text: '← クイック' },
      { cls: 'cxm-arrow-top',   text: '↑ BB浅い' },
      { cls: 'cxm-arrow-bottom',text: '↓ BB深い' },
    ];
    arrows.forEach(a => {
      const el = document.createElement('div');
      el.className = 'cxm-arrow-label ' + a.cls;
      el.textContent = a.text;
      chartEl.appendChild(el);
    });

    // Axis labels
    const xl = document.createElement('div');
    xl.className = 'cxm-xlabel';
    xl.textContent = 'Wheelbase (mm)';
    chartEl.appendChild(xl);

    const yl = document.createElement('div');
    yl.className = 'cxm-ylabel';
    yl.textContent = 'BB Drop (mm)';
    chartEl.appendChild(yl);

    // Ticks
    [0, 25, 50, 75, 100].forEach(pct => {
      const wbVal = range.minWb + (range.maxWb - range.minWb) * pct / 100;
      const tx = document.createElement('div');
      tx.className = 'cxm-tick cxm-tick-x';
      tx.style.left = pct + '%';
      tx.textContent = Math.round(wbVal);
      chartEl.appendChild(tx);

      // BB: top=maxBb (shallow/small number), bottom=minBb (deep/big number)
      // Y axis: top of chart = shallow BB (small number), bottom = deep BB (large number)
      const bbVal = range.minBb + (range.maxBb - range.minBb) * (1 - pct / 100);
      const ty = document.createElement('div');
      ty.className = 'cxm-tick cxm-tick-y';
      ty.style.top = pct + '%';
      ty.textContent = bbVal.toFixed(1);
      chartEl.appendChild(ty);
    });

    // Data points
    let hasData = false;
    let idx = 0;
    BIKES.forEach((bike) => {
      const d = bike.sizes[size];
      if (!d) return;
      hasData = true;

      const xPct = ((d.wb - range.minWb) / (range.maxWb - range.minWb)) * 100;
      // Y: small BB at top, large BB at bottom
      const yPct = ((d.bb - range.minBb) / (range.maxBb - range.minBb)) * 100;

      const group = document.createElement('div');
      group.className = 'cxm-dot-group entering';
      group.style.left = xPct + '%';
      group.style.top = yPct + '%';
      group.style.animationDelay = (idx * 50) + 'ms';
      idx++;

      const dot = document.createElement('div');
      dot.className = 'cxm-dot';
      dot.style.background = bike.color;

      const label = document.createElement('div');
      label.className = 'cxm-dot-label';
      label.textContent = bike.name;

      group.appendChild(dot);
      group.appendChild(label);
      chartEl.appendChild(group);

      const showTooltip = (x, y) => {
        tooltipEl.innerHTML = `
          <div class="cxm-tooltip-name">${bike.name}</div>
          <div class="cxm-tooltip-size">Size: ${size}</div>
          <div class="cxm-tooltip-row"><span>Wheelbase</span><span>${d.wb} mm</span></div>
          <div class="cxm-tooltip-row"><span>BB Drop</span><span>${d.bb} mm</span></div>
          <div class="cxm-tooltip-character">${bike.character}</div>
        `;
        tooltipEl.style.left = (x + 16) + 'px';
        tooltipEl.style.top = (y - 14) + 'px';
        tooltipEl.classList.add('show');
      };

      group.addEventListener('mouseenter', (e) => showTooltip(e.clientX, e.clientY));
      group.addEventListener('mousemove', (e) => {
        tooltipEl.style.left = (e.clientX + 16) + 'px';
        tooltipEl.style.top = (e.clientY - 14) + 'px';
      });
      group.addEventListener('mouseleave', () => tooltipEl.classList.remove('show'));

      group.addEventListener('touchstart', (e) => {
        e.preventDefault();
        const t = e.touches[0];
        showTooltip(t.clientX, t.clientY - 50);
        setTimeout(() => tooltipEl.classList.remove('show'), 3000);
      });
    });

    if (!hasData) {
      const msg = document.createElement('div');
      msg.className = 'cxm-nodata';
      msg.textContent = 'このサイズのデータはありません';
      chartEl.appendChild(msg);
    }
  }

  function selectSize(size) {
    currentSize = size;
    document.querySelectorAll('.cxm-size-btn').forEach(btn => {
      btn.classList.toggle('active', btn.textContent === size);
    });
    render(size);
  }

  render(currentSize);
})();
</script>
<!-- ===== WordPress ここまで ===== -->
</body>
</html>

こうして並べると左上のRidley / BOMA / OnebyEsu / TCX あたりがゴリゴリのレース系右下のSpecialized Crux DSWが完全にグラベル寄りなのが一目瞭然です。

TREK Booneが「BBは低いけどホイールベースは短い」という独特のポジションにいるのも面白いところ。

なお2026年にモデルチェンジした新型のカーボンCrux 5はこのグラフに載せていません。

BBがさらに6mm下がり、ホイールベースも伸びたので右下の枠外にすっ飛んでいくためです(公式ジオメトリ表の数値が出揃ったら追加します)。

グラフに載ってるのは旧世代ジオメトリを継いでいるアルミのCrux DSWのほうなのでご注意を。

ちなみにこのマトリクスに載せてないブランドでも、公式サイトのジオメトリ表からWBとBBドロップだけ拾えば同じ土俵で比較できますので、気になるバイクがあったらぜひやってみてください。

【予算別】結局どれを買えばいいのか

「で、結局どれ買えばいいの?」という声が聞こえてきそうなので、予算帯別にざっくり整理しておきます。

※価格は為替と在庫で平気で数万円動くので、必ず最新の実売価格を確認してください。

〜25万円:とにかく1回レースに出てみたい

本命はNESTO Craus(アルミ完成車)。

この価格帯で完成車が買えるCXバイクはもうほとんど残ってません。

フレームから組むならOnebyEsu JFF#807zBombtrack Tension

アルミは転んでも凹んでも精神的ダメージが小さいので(ダメージが無いとは言ってない)、初めての1台にこそアルミだと思います。

25〜50万円:シーズン通して戦いたい

いちばん選択肢が豊富です。

完成車ならTREK Boone 5 / 6GIANT TCX Advanced Proあたり。

フレームから組むならNESTO Craus Pro(カーボンでこの価格は反則)、BOMA D・OLA IIRidley X-Night SL

あとは型落ちのBianchi Zolder Pro / Impulso Proが叩き売られるのを待つのも全然アリ。

50万円〜:所有欲も満たしたい

ここまで来ると「何にお金を払うか」の話になります。

  • 最新テクノロジーが欲しい → Ridley X-Night RS(完全内装+エアロ)
  • とにかく軽さ(ただしCXは諦める) → Specialized Crux 5
  • 会場で被りたくない → PINARELLO Crossista F9
  • プロと同じ機材 → Cervelo R5-CX(見つかれば)
  • 一生モノの相棒 → Panasonic FCXCC04(オーダーメイド)

ちなみにフレームから組む場合、コンポ・ホイール・タイヤで最低でも20万円は追加でかかると思っておいてください。

「フレーム15万だから安いじゃん!」で買うと全然安くなかったりします(体験談)

【FAQ的な】シクロクロスバイクのよくある質問

Q. シクロクロスバイクで通勤・街乗りはできますか?

できるけど正直もったいないです。

通勤用途ならSpecialized Crux DSWやBombtrack Tensionのアルミモデルが傷を気にせず使いやすい&グラベル用のダボのおかげでキャリアやフェンダーなど通勤用のカスタムがしやすくてオススメです。

逆にゴリゴリのレース向けフレーム(ダボなし・33Cまで)を通勤に使うと、雨の日に泥はねで死にます。

Q. グラベルバイクとシクロクロスバイク、どっちを買うべき?

最初からシクロクロスのレースに出たいならCX、旅やロングライドがメインならグラベル。

両方やりたいならCannondale SuperXやSpecialized Crux DSWなど「グラベルレーサー」がオススメ。

ただし2026年の新型Crux 5のように、「兼用」を名乗っていたバイクが世代交代でグラベル専用に振り切るケースが増えているので、買う前に必ず最新のジオメトリを確認してください。

ざっくりした判断基準としては「年に何戦出るか」で決めるのがいいと思います。

年5戦以上出るならピュアCX、年1〜2戦のお試しならグラベル兼用で全然困りません。

小生はシクロクロスバイクをグラベルロード風にカスタムしてます、正直全然困ってないのでシクロでグラベル遊びしてもいいんじゃないでしょうか。


Q. シクロクロスバイクにロードコンポは使えますか?

使えます! SRAM・Shimano共に互換性ありです。

ただしチェーンリング・BBまわりは確認が必要です。

小生もGRXのチェーンリングにパワーメーターぶち込もうとして失敗しましたw

GRXのbcdがアウター110、インナー80に対して小生が用意したパワーメーターはbcd110だったので付きませんでした。

あとクランク長も要注意で、CXでは170mm以下を選ぶ人が多いです(ペダルヒットを避けるため)。

Q. 完成車とフレームセット、どっちがいい?

初めての1台なら完成車一択です。

フレームから組むとトータルで高くつく可能性が高いです。

ただし日本で買えるCX完成車は選択肢が少ないので、「サイズが合わない」「色が気に入らない」ならフレームから組むしかないのも現実。

その場合は必ず組んでくれるショップを先に確保してからフレームを買いましょう。

Q. ホイールとタイヤは何セット必要?

最初は1セットで全然OKです。

ただし本気で勝ちにいくなら、路面に合わせたタイヤを履いた2セット目が欲しくなります(勝てる気もしないけど欲しいです)

ドライ用(オールラウンド)とマッド用の2種類あれば日本のレースはだいたい対応できます。

ちなみにタイヤの銘柄より空気圧のほうが100倍大事なので、まずは1.8〜2.2barあたりで色々試してみてください。

Q. サイズ選びはどうすればいい?

基本はロードバイクと同じサイズ、もしくはワンサイズ小さめ

理由は担ぐから乗り降りするから

トップチューブが低いほうが乗り降りがラクですし、小さいバイクのほうが振り回しやすいです。

迷ったら小さいほうを選んでステムとシートポストで詰めるのが無難です。

Q. 中古でシクロクロスバイクを買うときの注意点は?

→フレームのBB周り、ヘッドパーツの回転系とそれからフォークコラムの状態は要チェック。

シクロで使われたバイクは回転系の消耗が早いので中古での購入の場合は単純なフレーム・フォークの傷だけじゃなくてその辺にも注意が必要です。

よほどの良品でない限りは回転系、駆動系は基本交換するつもりで買ったほうが良いと思います。

加えて洗車で高圧洗浄機を使われた個体は要注意。

ベアリングのシールを突破して水が入ってるとBBとかがゴリゴリになります。

2レースしか走ってないけど5カ月毎週練習後には必ず高圧洗浄機で洗車した小生のバイクはBBが既にゴりついてます。

まとめ:まだまだ「選ぶ楽しみ」はありそう

とまぁここまでもろもろ紹介してまいりましたがだいぶ長い記事になっちゃいました。

改めて整理すると、こんな感じです。

  • ピュアCXバイクは絶滅危惧種だが、専用設計を残してるブランドは意外としぶとくいる
  • グラベル兼用は「安定志向」に振れているので、レース主体ならジオメトリを必ず確認
  • 「兼用」はモデルチェンジで消える。2026年の新型Crux 5がまさにそれ、スペシャはCXから撤退……
  • 見るべき数字はホイールベースとBBドロップの2つでだいたい足りる
  • 初めての1台はアルミの完成車が正解。転んでナンボの競技です
  • 気になるモデルは見つけたときに買う。来年あるとは限りません

まだまだ「選ぶ楽しみ」はありそうで一安心……ただいつまでラインナップに並んでいてくれるか……。

この記事を読んだ皆さんの心がけ次第なのでシクロクロスバイク、買ってください(懇願)。

最新情報をチェックしよう!