👏

YAMAP / ヤマップ のフリーハンド登山計画機能を開発した話

に公開

はじめに

こんにちは。YAMAP で Android エンジニアをしている原と申します。YAMAP にジョインしてから、気付けばもう5年ほどが経ちました。これまで地図関連を中心に、スマートウォッチ(WearOS)版のアプリ開発なども含めて幅広く担当してきましたが、その知見を今回のプロジェクトにも活かすことができました。今回は、以前から多くのユーザーさんから要望をいただいていた「フリーハンド登山計画」機能の開発を担当したので、開発に至るまでの経緯や開発における試行錯誤などまとめてみたいと思います。

開発の経緯

フリーハンドで自由に登山計画を描ける機能は、長年にわたりユーザーさんから繰り返しリクエストをいただいていました。この機能を実現することによって、YAMAP があらかじめ赤線ルートを用意していないエリアでも自由にルートを作成することができるようになります。従来の制約を超えて、より柔軟で直感的な登山計画が立てられるようになるという点で、非常にニーズの高い機能でした。ただ、優先度の高いタスクがあったり、既存機能との整合性を保つ難しさなどもあり、なかなか誰も着手できない状態が続いていました。

2024年に入り、社内でも「そろそろフリーハンド登山計画機能欲しいよね」という雰囲気が高まり、8月頃に自発的に初期調査を実施。大まかな改修内容を社内記事にまとめたところ、10月頃に正式な調査依頼を受け、さらに詳細に調査し工数見積もりも行いました。2025年に入ると正式にプロジェクトとして立ち上がり本格的な開発がスタートしました。🚀

改修内容

登山計画のデータ構造の拡張

最大の課題は、既存の登山計画機能が「フリーハンドで描く」という概念を前提に作られていなかったことでした。そこでまず、フリーハンドの軌跡を保存・処理できるようにデータ構造を拡張。その上で、既存の登山計画関連機能が新構造でも問題なく動作するよう、全面的な見直しを行いました。
この改修には B/E(バックエンド)チームとの密な連携も必要で、プロジェクト全体の根幹に関わる、最も重要なポイントでした。

行程編集画面の UI の修正

従来の赤線で引かれているルートだけでなく、地図上の任意の場所に自由な線が描けるよう、行程編集画面の UI も大きく手を入れました。

開発で苦労したこと

今回の開発で最も大変だったのは、やはり既存の登山計画機能全体を、フリーハンド対応の新しいデータ構造へと自然に移行させることでした。登山計画機能は、リリース以来、到着時刻予測や標高グラフ表示などの機能追加によって複雑化していたため、改修には高い慎重さと技術的な配慮が求められました。

UI 設計の試行錯誤とモード選定

UI は以下の3つのモードを検討しました。

  • 直線モード
    • 1点ずつ追加ボタンを押すことで中央で線を繋げるシンプルな描画方法。正確だが時間がかかる
      直線モード
  • なぞり描きモード
    • 指で地図をなぞって直接線を描く、直感的でスピーディな方式。
      なぞり描きモード
  • ミシン描きモード(縫うように自動で線が繋がる様子から命名)
    • 指で地図をスクロールして、自動で中央で線を繋げる描画方法。操作に慣れが必要
      ミシン描きモード

最初は直線モードのみで検証を始めましたが、フットパス というアプリを触った際、指でなぞって直接線が描けるモードがあり、その直感的な操作性に感銘を受け、数時間後には検証版アプリに組み込んでいました。その後、社内メンバーからの提案でミシン描きモードも加え、3モード切替が可能な状態で社内検証を行いました。

社内検証中には、「なぞり描いた後、指を離した位置が画面の中央になるようカメラ位置を自動的に移動させると良いのでは?」というアイデアがあり、実装したところ UX が劇的に向上しました。こうした一見小さな改善が、体験の質を大きく左右するのだと改めて実感しましたし、職種や部署を超えてアイデアが自由に飛び交う YAMAP のカルチャーに改めて感謝と誇りを感じました。

最終的にはスマホでの操作性とシンプルさを優先し、「なぞり描きモード」一本に絞るという判断がチーム内で議論の末に決定されました。

最終的になぞり描きモード一本に絞られ、従来の自動入力モードと手動入力モードとの切り替えはあるものの、実際の体験としてはスムーズで使いやすい仕上がりになったと感じています。もちろん、今後のユーザーさんの反応を見て、必要ならばより良い形にブラッシュアップしていきたいと思っています。

槍ヶ岳のバリエーションルートの行程を作成する様子(北鎌尾根行ってみたい ⛰️)

フリーハンド登山計画機能

(※なお、上記動画においてコースタイムは 距離と標高差から自動計算 しており、岩場などの難所の考慮は入っていないため、実際より短めのコースタイムが表示されています。そのため、フリーハンド区間については手動でもコースタイムを設定できるようにしています)

まとめ

YAMAP にジョインして5年、今回のフリーハンド登山計画はおそらくこれまでで最も重たいプロジェクトでした。UI の工夫ももちろん重要でしたが、やはり既存データ構造の見直しとそれに伴う改修が最も大きな挑戦だったと感じています。

この機能は 2025年6月23日 にリリースされました。長らくご要望をいただいていた機能であり、実際にリリースできたことを嬉しく思います。ぜひ多くのユーザーさんに使っていただき、登山計画がより自由に、楽しくなることを願っています。

最後に、一緒に開発をしてくれたプロジェクトメンバー、QA、PR、社内検証に協力してくれた皆さん、その他プロジェクトに関わってくれた全ての方々、本当にありがとうございました。皆さんの知見と協力があったからこそ、この機能は形になりました。

引き続き、より良いプロダクトづくりを目指して精進していきます!

YAMAP テックブログ

Discussion