安全、快適な車道通行ルートを提案する 自転車専用ナビアプリ CHARIMACHI
自転車利用者が安心して車道を走行できるよう支援するナビゲーションアプリを開発しました。自転車での移動を安全かつ快適に走行できるルートを検索・提示し、通行に適した道を優先的に案内します。さらに、交通安全に関する注意喚起として、事故が多発している場所や違反率が高い場所へのピン止めなどをすることで、事故や違反が身近にあるという認識を高め、車道通行の重要性理解を促進します。 注意喚起をするだけのサービスでは、重要性を理解されていない方々への普及は難しいと考え、日常的につかうナビゲーションアプリとすることで、安全な走行環境を提供しつつ、自転車の車道通行を社会に定着させることを目指します。
車道通行が根付かない要因として、事故や違反が身近にあるという認識が薄く、注意喚起を目にする機会も少ないため、その重要性を十分に理解していないこと、さらに安全に通行できない車道が存在し、安全・快適に自転車を走行できるルートが確認できないことにあると考えました。本サービスではこの二点の課題解決を目指します。
- 自転車専用帯が確保されている
- 歩道内に自転車帯が確保されている
- 車道の幅が広い
- 信号待ちの回数が少ない
- 路駐・路停車が少ない
- 大型車両の通行量が多くない
(最後2項目は今回実装できないかもしれない要件)
- マップ表示
- 現在地表示
- 出発地・到着地の候補検索
- ルート描画
- 自転車専用帯優先
- 駐輪所経由モード(オープンデータ)
- バス停回避モード(オープンデータ)
- 注意喚起
- 取締強化交差点注意(オープンデータ)
- 違反率別交差点注意(オープンデータ)
- 経由地点表示
- 所要時間表示
- about画面・制作元・出典
| データ/API名 | API提供 | 更新可能性 | 用途 | リンク |
|---|---|---|---|---|
| 自転車専用帯優先 (OpenRouteService) | yes | yes | ルート検索時呼び出し | OpenRouteService |
| 取締強化交差点注意 (東京都オープンデータカタログ - 交通規制情報) | yes | yes | 内部で加工データを保持 | リンク |
| 違反率別注意交差点 (交通量統計表) | no | yes | 内部で加工データを保持,更新batch処理あり | リンク |
| Overpass API | yes | - | 内部データ加工用 | Overpass API |
| 駐輪所経由モード (東京都オープンデータカタログ - 駐輪場情報) | yes | yes | ルート検索時呼び出し | リンク |
| バス停回避モード (公共交通オープンデータ - 都営バス停留所データ) | yes | yes | 内部で加工データを保持 | リンク |
flowchart LR
ClientApp[クライアントアプリ(Expo)] --ルート検索--> GoServer
GoServer <--元ルートデータ--> OpenRouteService
GoServer <--オープンデータ加工--> OpenData
ClientApp[クライアントアプリ(Expo)] --描画--> OSM[OpenStreetMap]
sequenceDiagram
participant OSM as OpenStreetMap
participant Client as クライアントアプリ (Expo)
participant Go as Goサーバー
participant ORS as OpenRouteService
participant OD as OpenData
Client->>Go: 経路リクエスト
Go->>ORS: 経路探索リクエスト
Client->>OSM: 地図データ取得
OSM->>Client:
ORS->>Go: 経路データ返却
Go ->> OD: データ取得
OD ->>Go:
Go -->> Go: ルート変更・レスポンス情報追加
Go->>Client: 経路・メタデータ返却
Client-->>Client: 経路・ポイント描画
This is a template for mobile app development using:
- Expo
- React Native
- Node.js v22.14.0
This is a template for building APIs using:
- Go with Gin framework
- gin-swagger for OpenAPI/Swagger generation
This directory contains OpenAPI specifications swagger files. OpenAPI version 3.0 is used for the specifications, and the files are in JSON format.
To generate the OpenAPI definitions, run the following command from the repository root:
./generate-openapi.shThis script will:
- Generate Swagger 2.0 documentation using
swag initin the API directory - Convert the Swagger 2.0 specification to OpenAPI 3.0.0 format
- Place the result in
openapi-specifications/api.swagger.json - Verify that React Native type generation and mock server commands work correctly
This is a configuration file for ls-lint, a linter for directory structures.
GitHub Actions are set up to run ls-lint on pull requests to ensure that the directory structure adheres to the defined rules.
For api and mobile-app directories, add settings for each directory, as they are ignored except for markdown files.
git clone --recurse-submodules https://github.com/rowicy/charimachi.gitmake run_api_devmake run_mobile_app


