コガソフトウェア株式会社は、ヘルスケア、モビリティ、環境などの
ソフトウェア・インフラの開発を通して、様々な分野での社会貢献を目指します。

  1. システム開発のコガソフトウェア
  2. 事業内容のご紹介
  3. システム開発事業
  4. 孝行デマンドバスシステム

孝行デマンドバスシステム

孝行デマンドバスサービス

孝行デマンドバスは、フルデマンド・セミデマンドの運行モードに対応する、世界で唯一のハイブリッドデマンド交通システムです。
クラウド型 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
日次で5分程度のスタンドアップミーティング(デイリースクラム)、週次でスプリントレビュー(ウィークリースクラム)を行います。
デイリースクラムでは、チームメンバの昨日・今日やったこと、やること、課題を共有するとともに、各人の体調や様子を確認しあいます。
スプリントレビューでは、そのイテレーション(週の管理単位、Sprintともいいます)でチームが達成した成果を振り返り、次のマイルストーンでの達成目標を設定します。
最後に KPT(Keep,Problem,Try)を話し合い、翌週のイテレーションで解消できる課題は解消します。
ソースコード管理
  • Github
Github の Pull Request 駆動開発を実践しています。
Github Flow として、master 常にブランチはプロダクション環境にデプロイ可能な状態にしています。
master ブランチへのマージは Pull Request がレビューされた後に限り、すべてのソースコードは常にレビューされます。
CI(継続的インテグレーション)
  • Jenkins
JenkinsによるCI(継続的インテグレーション)を実践しています。
ビルドされるのは Github リポジトリへの push 後に自動テストを通過したソースコードだけで、テストのエラーは当日のうちに修正します。
RSpec、Capybara、Cucumber、Feature specs 等のツールで、Unit テストやE2E テストを必要な範囲で自動化しています。
TDD(テスト駆動開発)
エンジニアがコードに自信を持ちながら開発できるよう、テストファーストの TDD (テスト駆動開発)を推奨しています。
Red→Green→Refactorという、いわゆる「黄金の回転」を保ち、ときにはペアプログラミングをおこなうことで、エンジニアはコードに自信を持ってプログラミングを進められます。
レビューや自動テスト、TDD でコードの信頼性が担保されている前提で、過去のコードに対しては躊躇なくリファクタリングをおこないます。
インフラ構成管理
  • Chef
  • Vagrant
  • Capistrano
Chef を使い、サーバ環境/構成をコードで管理しています。Cookbook や Recipeは他プロジェクトでも部分的に再利用しています。Chefのテストには Vagrant 環境を用いています。
サーバ操作やデプロイについては、ルーチンワークの手作業による属人性、誤作業、非効率を排除するために、Capistrano により極力自動化しています。
DevOps により開発チームと運用チームをコラボレーションし、サーバ環境/構成のメンテナンスビリティ、ポータビリティを保っています。
タスク管理
  • Github issue(Redmine)
  • waffle.io
当初は Redmine を使ったチケット駆動開発をしていましたが、エンジニアが Github と Redmine のストーリーやタスクをを見比べる必要があり、面倒でした。
より効率を上げるために、開発タスクは Github issue に一本化。マイルストーンやラベルを活用しています。
waffle.io でマイルストーンごとにカンバン形式でタスクの確認ができ、さらに効率が上がりました。
コミュニケーション管理
  • Idobata(Skype)
当初は Skype を使っていましたが、コメントのやりとりのほか、Github と連携してタイムライン上に issue や PR の起票・更新、build がフックされるため、エンジニアの使いやすさから Idobata に移行しました。
特定のエンジニアに向けたメンションをつけることもできます。Chrome デスクトップ通知も便利です。
  • 一覧へ戻る

孝行デマンドバスシステム - ページ上部へ