DiversMap2
学生アプリ開発団体Divers
メンバー
daisukeuchiyama
@uchiyama07
teru
@teru5611
たくみ
@takumi_
ka1
@kai_ri
らいだは
@raidaha0727
光安翼
@mitsuyasu
NKMAK
@mak_1
enumuraa
@enumura
作品ページ
私は、中学生の頃から車椅子を利用していて、非常に困った思いをたくさんしてきています。高校生の時には、横断歩道のちょっとした段差でつまずいてこけて怪我をしたこともあり、本当にちょっとした段差で大きな怪我につながってしまうことがある。私は、自分も含め、全ての車椅子利用者が怪我なく安全に道を通れるようにしたいという強い思いから福岡市から全国へバリアフリー社会を実現するために、今回の「DiversMap」というバリアフリールート共有アプリを開発しています。また、ルートを共有する方法には、位置情報から移動した道をGPSで取得して経路を表示する方法がありますが、GPSで取得して経路を表示すると実際には道がない所や路地裏に経路が表示されてしまう問題があります。そのため、このアプリではあえて手動でルートを投稿できるようにしています。
【チーム内だけでなく、外部の人との交流を通して習得、または貢献した技術や知識】
昨年、初めて小規模のチームでアプリ開発のチームリーダーとしてアプリ開発をして、自分自身の持っているアイディアをチームメンバーに伝えるためにプロトタイプを作成したりと、アプリの構成を考えることの重要性や大変さを体感しました。
昨年のチーム開発の経験を元に今回、初めて開発メンバーが11人いる大規模なアプリ開発のチームリーダーとして活動してみて、小規模の開発チームと違ってメンバーへの開発作業の分担を行う際にメンバーの受け持つ作業ごとにチームを編成してタスク管理を行いましたが、メンバーの開発の進捗譲許の確認や現在の開発状況をメンバーに共有することの難しさや開発でのメンバーの困りごとなどを聞いて他のメンバーに伝えることなど、開発技術だけではなくチームマネジメントやコミュニケーションの重要性について学びました。
また、週3回から4回放課後にオフラインでチームメンバーと集まって、開発の進捗状況や機能の情報について共有をしました。普段の開発の情報などは、Discordで情報共有を行いました。
他にも、アプリの構成設計ではエンジニアをされていた学校の先生やエンジニアをされている方から沢山のアドバイスを頂きました。
【想定外のことが起きた時にどのように対象したか】
想定外のことが起きた際にはチームメンバー間で原因について調べ、話し合いをし、EDDのハッカソンで、メンターの方に質問し、対処方法を教えて頂きました。ハッカソンで質問した内容としては、Flutterの環境構築のことで質問を行いました。
【DiversMapルート集め街歩きイベントについてのお知らせ】
私たち、Diversは「車椅子の方々が街に出かけにくい問題」の解消に取り組む学生で構成される団体です。自身の車椅子で生活している実体験から車椅子利用者、高齢者やベビーカー利用者が安全な道を通れるようにしたいと思いバリアフリールート共有アプリ「DiversMap」を開発しています。
このたび、2023年11月19日(日)に福岡市で街歩きイベントを開催します。
福岡市内で車いすに乗って街の中を歩き、バリアフリーマップアプリ「DiversMap」を作ってみませんか?
車いすに乗ったことがない方もOK
車いすユーザーの方もOK
どなたでもお気軽にご参加ください。
当日の飛び込み参加も可能です。みなさんのご参加をお待ちしています。
イベント概要
日時:11月19日(日) 16:00⁓20:30
場所:Fukuoka Growth Next
(住所:〒810-0041 福岡県福岡市中央区大名2丁目6−11)
イベントスケジュール
1.オープニング 16:00⁓16:30
2.ルート投稿(街歩き) 16:30⁓19:30
3.懇親会 19:30⁓20:30
(懇親会では、軽食とドリンクを用意しています。
ノンアルコールドリンクも用意していますので、お気軽にご参加ください。)
イベント詳細ページはこちらです。↓
https://fb.me/e/1DILSMZGx
イベント参加申込みはこちら↓
(当日の飛び込み参加も可能です。)
https://forms.office.com/r/UUytkUgB0x
【解決する課題】
DiversMapは車椅子利用者やベビーカー利用者、高齢者をターゲットとした、バリアフリーWebアプリです。
DiversMapの他にも、同様の機能を持ったバリアフリーアプリはいくつか存在しますが、このアプリでは"通りづらい道を避けて通れる"ルートを共有する機能に特化しています。
「いいね」機能
ユーザーは、他のユーザーが作成した投稿に対して「いいね」を付けることが出来ます。
この「いいね」が多ければ多いほど、そのルートが役に立つという判断が出来るため、いいね機能を実装しました。
検索機能
自分の出発地・目的地を入力することで、それを含む投稿を検索することが出来ます。
この機能を実装することで、ユーザーは自分の見たい投稿を絞り込むことが出来ます。
【システムの概要】
DiversMapは、私達がいつも通っている道は一見、何の変哲もないただの道かもしれませんが、車いすを利用されている方やベビーカーを利用されている方などにとっては非常に通りづらい道かもしれません。そこで、私達はそのような方々をターゲットとし「この道なら通りやすい!」といった情報を誰でも簡単に投稿・閲覧することが出来るシステムです。
ルートを共有する方法には、位置情報から移動した道をGPSで取得して経路を表示する方法がありますが、GPSで取得して経路を表示すると実際には道がない所や路地裏に経路が表示されてしまう問題があります。そのため、このアプリではあえて手動でルートを投稿できるようにしています。こだわった点については、通りやすいルート(道)の共有を簡単に行えるエディタを実装している点、ルートを検索する際には何を元にソートするのか(距離, 時間など)を指定できるようにしています。
【他にない特徴】
本システムでは、車いすを利用されている方やベビーカーを利用されている方をターゲットとし「この道なら通りやすい!」といった情報を誰でも簡単に投稿・閲覧することが出来るアプリで現在開発中のシステムである車椅子利用者、足が不自由な方、目が不自由な方が使いやすい道を提供できるシステムを開発しています。そのシステムは、それまでどの福祉✕ITベンチャー企業も積極的に取り組んでいなかった点字ブロックの自動判別とルート反映を積極的に取り入れ、よりスマートに利用者に適したルートを提供できるようにしました。
【Pythonによる点字ブロックの感知についての技術的仕様】
使用機材
MacBookAir (M1コア)
使用システム
・開発環境構築:Anaconda
・画像クローリング:Azure Cognitive Search
・画像分析、強化学習モデル:YOLOv8
・アノテーション:labelomg
・コードエディタ:VSCode
手段
①AzureCognitiveSearchAPIを使いBing画像検索から「点字ブロック」というキーワードで327枚の画像を抽出
②labelomgを使用し、不要な画像の削除および点字ブロックのアノテーションを実行(249枚)
③YOLOv8をインストール訓練用画像(161枚)と検証画像(88枚)に分け、100回のトレーニングを行い、モデル検出アルゴリズムのパラメータを調整し、点字ブロックに特化したモデルを作る。
④トレーニングによりもっとも最良の性能を用いたものを使用し、オープンソースのMapアプリであるMapillaryより任意のストリートビューをダウンロードし、モデルが点字ブロックをきちんと知覚するか検証
検証動画(今回のスクショは2番目の方)
https://youtu.be/TuuRlNj47Yg
https://youtu.be/anaGSSGjfh0
【今後の展望】
①mAP50が0.39、mAP50-95が0.19程度なので全体的に精度としては低めと言わざるを得ない。点字ブロックのデータ、および点字ブロックが入っていないデータを集め、さらに精度を高める。
②今回作ったモデルとマップのAPIを連動させ、点字ブロックが存在する部分をマップ上に表示する技術を開発予定である。
【サーバサイド機能について】
サーバサイドでは、DiversMapで投稿された内容をもとに、バリアフリーなルートの生成を行い提供します。
ルート検索のアルゴリズムとしましては、投稿されたルート情報から目的地または出発地が同じまたは周辺のものを探し、それらのルートを組み合わせることでルートを作成しています。
サーバはSpring bootで開発されており、Rest APIとして実装されているため様々なシステムからの呼び出しにも対応することができるように設計されています。
【ユーザーにとって分かりやすく、使いやすくするのに気をつけた点】
出発地/目的地の自動入力機能
DiversMapで投稿を作成する際にはユーザーにGoogleMapのURLと出発地、目的地を入力して貰う必要があるのですが、GoogleMapのURLを解析することで自動的に出発地/目的地が入力される機能を実装しました。
これにより、ユーザーが入力しなければならないフォームを極力減らし、使いやすくなるようにしました。
必要のないページ読み込みを無くす仕組み
DiversMapでは検索機能やいいね機能などがありますが、これらの機能はJavaScriptからAPIを叩くことでアクションを起こせるようにしています。
これにより、アクションを起こすたびにページを再読み込みする必要がなくなるため、ユーザーはシームレスに「いいね」や検索をすることが出来ます。
一目でわかる文章にする
例えば削除を確認するプロンプトでは「削除しますか?」に対して「はい/いいえ」でユーザーに選択させるのではなく「削除する/キャンセル」と、自分が取りたい行動を一目で分かるような文章にしました。
【個人情報保護やハッキング対策など、セキュリティに考慮したこと】
必要のないクエリは自動的に削除する機能
ユーザーが投稿する際に貼り付けられたGoogleMapのURLにはGoogleのトラッキングと思わしきクエリが付いている場合があるため、投稿処理時にそれらを自動的にサーバー側で削除する機能を実装することで、ユーザーのプライバシーを保護しています。
SQLインジェクションを起こさない対策
SQLのクエリを組み立てる際に動的な要素が必要になる場合は必ずbindを利用することで、意図しない操作を防いでいます。
Resume presentation
DiversMap2 学生アプリ開発団体Divers