2025/06/15 投稿
今回は私が仲間と開発した道案内デバイス・アプリ「雨の日のナビ」について紹介します。これまでの展示や発表についてまとめたものです。
最近ポートフォリオで制作物の紹介をしなければならない場面が増えたので急遽記事にしたことは内緒です。
道案内デバイス・アプリ「雨の日のナビ」は、傘が回転して雨の日でも快適に道案内を行うことを目的とした作品です。傘の持ち手に取り付けられたデバイスが、スマートフォンと連携して道案内を行います。
イメージ動画は以下からご覧になれます。
4 人で制作を行い、主に以下のような役割分担をしました。
私は案内のアルゴリズム開発・アプリでの実装を担当しました。当時は、アプリを Xamarin で開発していたため、C#での実装でした。技術選定を行った数日後に、Xamarin が廃止されることが発表されましたが、時間的余裕もなかったため、そのまま開発を続けました。
結果的にこの作品は Open Hack U 2022 TOKYO の最優秀賞・Happy Hacking 賞を受賞しました。
ただ、この時に我々には 1 つ心残りがありました。それは、デバイスを我々 4 人以外に触ってもらう機会がなかったことです。当時コロナ禍であったため、オフラインでの展示ができず、オンラインでの発表のみでした。
下のスライドは、発表の際に使用したものです。たなからぼの Discord サーバーの会話数を可視化すると、ハッカソンや展示の直前に会話が増えることがわかります。
傘は方向しか指示できないため、道のりに沿ってスムーズに方向を指示する必要があります。そこで、マップから取得ルートを基に現在の位置で指し示すべき向きを算出するアルゴリズムを開発しました。
指示方向の算出は、アルゴリズムの開発から行いました。最終的に採用した手法としては「n 秒後にいるべき位置を指し示す」です。傘の方向指示は曲がり角で急に回転するとユーザー体験が悪いため、滑らかに変化させる必要があります。またユーザーは常にルート上にいるわけではないので、単純にルート情報を微分して方向指示を行うのでは不十分です。そこで、現在いる位置からルートに戻るまでの距離とルート上で進むべき位置を同一視したうえで現在の移動速度を加味した n 秒後にいるべき位置を算出するアルゴリズムを採用しました。現在いる位置の少し先の位置を指すことで実質的に微分を行いつつ、ルート上にいない場合にルートに戻るまでの距離も考慮するので、地図上のあらゆる点において向きを算出できます。これを C#や Dart で実装しアプリ内で計算できるようにしました。
雨の日のナビを通じて、ハッカソン、展示、発表を経験し、たなからぼのメンバーとともに楽しく開発を行うことができました。今後も、良いアイデアがあれば、たなからぼのメンバーとともに作品を作りたいと思います。