Featured image of the post

👨🏻‍💻 Code for Trail: トレイルランニングレースの混雑度をシミュレーションするツールを作っみた

こんにちは、GO ASIA TRAILの堤です。

今日は、私が最近 GitHub に公開したツールについてお話しします。このツールは、トレイルランニングのレース運営者やディレクター向けに、レース中のランナーの混雑度をシミュレーションもの。Pythonで作られていて、モンテカルロ法を用いている。早速、作った経緯やツールの詳細をシェアさせていただく。

ツールを作った背景

今年の6月に開催された Kaga Spa Trail Endurance 100 by UTMB というレースをご存知ですか(知らない人向けの文章)? 日本初の「by UTMB」レースとして注目されたのだが、運営面でいくつかの深刻な問題が発生し、国内外のランナーから批判が殺到。詳細は、他の記事を読んでいただきたい。

私自身、トレイルランナーで海外レースの経験もあるので、日本のレースのクオリティ向上を願って建設的な指摘をさせていただいた。しかしながら、これ以外の方法で、何か別の視点で貢献できないかと考えた。

今回の運営の問題は、個々の現場での一場面、実際のランナーの体験した内容などのミクロ視点だけでは解決が難しいと考えている。大会プランニングや財政面、よりマクロな視点で見ないと解決できないと私は思う。

そういった意味で、大会ディレクター個人依存の勘や経験によるプランニングだけでなく、データドリブンな判断ができるようなツール、ひいては環境が必要ではないかと考えた。例えば、ランナーの分散や混雑のピークを予測できれば、より精度の高い大会運営の計画(人員配置、補給路、DNF者の移送など)ができるのではと考えた。

Google Gemini で短期間で開発

開発には Google の Gemini 2.5 Pro を使い、プロトタイプはわずか15分で完成。実際には、安定してプロンプト処理ができるように、企業向けの Vertex AI 上で Gemini 2.5 Pro を使っています。

あとはバイブコーディングを通して細かい調整を加えて公開。UI/UXはエンジニア寄りに設計しているのでコマンドラインでの作業がメインなっていまうが、オープンソースなので誰でもフォークやプルリクエストで改善可能ですすし、ダウンロードして自由に魔改造していただくのもOKです。

「エンジニア歴20年以上×トレイルランナー」に加えて、近年の AI 技術の急速な発展のお陰で、短期間でこのツールが作れた。AI を活用すれば、アイデアさえあれば、短期間でツールができるというのはいい時代になったと思う。

Code for Trail : コーディングによる課題解決

Image in a image block

みなさん、「Code for 国名・地域名」という組織はご存知でしょうか。「Code for 国名・地域名」は、テクノロジーを活用して政府のサービスを改善し、市民にとってより使いやすいものにすることを目指す団体で、発祥はアメリカの「Code for America」である。政府と市民が協力して、地域の課題を解決する「シビックテック」の活動を推進する。

日本にも 「Code for Japan」 という団体があり、そして各地域にブリゲード(Brigade:語源は消防団)という名称で「Code for Osaka」や「Code for Kyoto」「Code for Kanazawa」、そしてもしかするとあなたが住む市町村にも「Code for ***」があるかもしれない。

そして、私が提唱する「Code for Trail」はトレイルランニング業界版ブリケードと言えるだろう。私は地域だけでなく、まだまだデジタル化が進んでいない業界にもこの Code for の精神は必要だと感じている。

ツールの概要

さて、どういったツールなのか、概要を説明しましょう。このツールは、GPXファイル(コースデータを記録したファイル)を使ってレースの混雑をシミュレーションします。主な機能は以下の3つ:

  • ランナーの分散度解析:特定の時間帯でランナーがコース上でどう分散しているかを分析。
  • 混雑度シミュレーション:特定の地点(例: エイドステーション)でどれだけ人が集中するかを予測。
  • マップを使ったビジュアル化:ランナーの移動をアニメーションで表示(HTMLファイル出力)。
Image in a image block
Image in a image block

キーとなるのは、モンテカルロ法を使ったシミュレーション。ランナーのペースを正規分布でモデル化し、狭いシングルトラック区間(追い越しが難しい場所)での混雑や、混雑緩和のためにウェーブスタートも考慮して開発しています。。これにより、参加者数やスタート時間の影響を評価し、リソース配分計画を支援する。

モンテカルロ法に関しては、以下の動画がわかりやすく解説しているので、詳細を知りたい方はこちらをご参照ください。

ただし、注意点として、これは簡略化したモデルに基づくもの。実際のレースでは天候や個人のコンディションなど予測不能な要素が多いので、結果は参考値としてお使いください。ただ、私が国内外の複数の大会のデータを使って分析してみたところ、概ねレースの実態と合っているのではと考えている。

ソースコードなどは、下記 Github リポジトリにて、MITライセンスで公開中。日本のみならず全世界を対象としているので、リポジトリのメインの言語は英語になっているが、日本語用の README.md も用意しているのでそちらをご参照ください。

※マウンテンソフトウェアは、私が所有する民間企業の法人名。リポジトリは、法人が管理しているものになります。

まとめと今後

今回の記事では、プレスリリース的に開発した経緯とツールの概要を紹介させていただいた。次回の記事では、実際のツールの使い方や、分析事例を交えて紹介させていただければと思う。

また、Code for Trail(仮)も需要があれば、まずは任意団体、そして法人化(NPOもしくは一般社団法人など)して活動をしていければと考えている。