孝行デマンドバスサービス
孝行デマンドバスは、フルデマンド・セミデマンドの運行モードに対応するAIオンデマンド交通システムです。
クラウド型 ASP サービスで、どの地域でも簡単に導入いただけます。
システム開発のコガソフトウェアは、孝行デマンドバスで公共交通空白地域、過疎地域をはじめとした移動困難者、買い物難民、高齢者の方々の外出を支援するとともに、地域活性化、医療費削減、CO2排出量削減、交通事故削減に貢献します。
孝行デマンドバスサービスについてはこちらをご覧下さい。
開発の背景/課題
高齢社会の進展に伴い、交通弱者の移動手段の確保が急務となっている一方で、自治体や交通事業者にとって、利益を確保できない路線の継続が難しくなっています。
バスとタクシーの中間的なサービスである、デマンド交通の仕組みを採用することで課題解決しようとしている事例が増えていますが、デファクトスタンダードといえる製品は市場に存在していません。
社会貢献という当社理念のもと、交通難民の課題解決にとって最適なサービスの提供を目指して孝行デマンドバスシステムの開発に至りました。
ユーザニーズをいち早く取り入れ、常にサービスを改善できるよう、アジャイル開発を実践し、Github や Ruby on Rails
をはじめとした最新の Web 開発技術を用いることのできる開発方式を採用しています。
システム概要
オンデマンドバスの乗車予約を受け付け、独自アルゴリズムにて最適な運行経路を管理するためのシステムです。
システム基盤はクラウド(AWS、Cloudn)上に配備しており、PC とインターネット回線があれば、どこからでもすぐに利用できるクラウド型
ASP サービスです。サービスを構成するのは以下のシステム群です。
-
オペレータアプリ
オペレータが電話で予約を受け付け、運行経路・配車計画を自動算出するためのシステム。 -
車載器アプリ
運転手が乗降を確認し、地図・音声読み上げナビで運行経路を確認するためのシステム。 -
インターネット予約アプリ
一般利用者が直接Web上で乗車を予約するためのシステム。 -
レポーティングアプリ
オペレータや提供者が運行経路や乗車傾向などを分析・把握するための補助ツール。
言語/FW | Ruby on Rails, Java, Scala | ||
---|---|---|---|
OS |
Android Ubuntu |
導入時期 |
2012年7月~2014年3月:岡山県瀬戸内市 2013年3月:ゆうあい内科・脳神経クリニック 2013年4月:千葉県成田市 2013年7~8月:韓国忠清南道扶余郡 2013年10~11月:埼玉県行田市 2014年4月:千葉県芝山町 2014年6月:岡山県玉野市 |
DB |
MySQL SQLite |
開発期間 |
2011年11月~2012年7月(瀬戸内市公開) 2012年8月~(維持管理・追加開発) |
開発方式
孝行デマンドバスの開発では、アジャイル開発を実践しています。採用している主なアジャイル開発プラクティスをご紹介します。
- デイリースクラム、スプリントレビュー
- タスクかんばん
- KPT
デイリースクラムでは、チームメンバの昨日・今日やったこと、やること、課題を共有するとともに、各人の体調や様子を確認しあいます。
スプリントレビューでは、そのイテレーション(週の管理単位、Sprintともいいます)でチームが達成した成果を振り返り、次のマイルストーンでの達成目標を設定します。
最後に KPT(Keep,Problem,Try)を話し合い、翌週のイテレーションで解消できる課題は解消します。
- Github
Github Flow として、master 常にブランチはプロダクション環境にデプロイ可能な状態にしています。
master ブランチへのマージは Pull Request がレビューされた後に限り、すべてのソースコードは常にレビューされます。
- Jenkins
ビルドされるのは Github リポジトリへの push 後に自動テストを通過したソースコードだけで、テストのエラーは当日のうちに修正します。
RSpec、Capybara、Cucumber、Feature specs 等のツールで、Unit テストやE2E テストを必要な範囲で自動化しています。
Red→Green→Refactorという、いわゆる「黄金の回転」を保ち、ときにはペアプログラミングをおこなうことで、エンジニアはコードに自信を持ってプログラミングを進められます。
レビューや自動テスト、TDD でコードの信頼性が担保されている前提で、過去のコードに対しては躊躇なくリファクタリングをおこないます。
- Chef
- Vagrant
- Capistrano
サーバ操作やデプロイについては、ルーチンワークの手作業による属人性、誤作業、非効率を排除するために、Capistrano により極力自動化しています。
DevOps により開発チームと運用チームをコラボレーションし、サーバ環境/構成のメンテナンスビリティ、ポータビリティを保っています。
- Github issue(Redmine)
- waffle.io
より効率を上げるために、開発タスクは Github issue に一本化。マイルストーンやラベルを活用しています。
waffle.io でマイルストーンごとにカンバン形式でタスクの確認ができ、さらに効率が上がりました。
- Idobata(Skype)
特定のエンジニアに向けたメンションをつけることもできます。Chrome デスクトップ通知も便利です。