Upgrade to Pro — share decks privately, control downloads, hide ads and more …

避難所支援システムを支えるRuby技術

 避難所支援システムを支えるRuby技術

2016年3月9日、Hamamatsu.rb #62にて発表。

Avatar for Kosuke Yamashita

Kosuke Yamashita

March 09, 2016
Tweet

More Decks by Kosuke Yamashita

Other Decks in Technology

Transcript

  1. 避難所てだすけくんのシステム図 10 バッテリー スマートフォン タブレット端末 入力端末 「にゅうりょくん」 市役所等 災害対策本部 避難所

    統計システム 避難所支援サーバー Wi-Fi 無線通信 モジュール ZigBee 無線通信 モジュール 無線通信 システム
  2. サーバーの構成・提供機能 15 ZigBee 無線通信 モジュール Wi-Fi 無線通信 モジュール サーバー(Raspberry Pi

    2) 無線通信用 サーバー Web アプリケーション サーバー データベース 避難者の情報 を入力する 各端末との 無線通信を 行う 避難者の情報 を格納する https://www.raspberrypi.org/blog/raspberry-pi-2-on-sale/ より引用
  3. Infrastructure as Code • サーバーの設定をコードとして残す – 変更履歴の確認が容易 – 自動設定が可能 •

    履歴管理:Git • サーバー設定のテスト:Serverspec – RSpecを使ってサーバーの状態を記述することができる • 構成管理:Itamae – 独自DSLで状態を記述、Chefより簡単 16
  4. コードとして表した設定の例 テスト(serverspec) # パッケージ nginx がインストール済み describe package(‘nginx’) do it

    { should be_installed } end # サービス webapp が有効になっている describe service(‘webapp’) do it { should be_enabled } end 構成管理(Itamae) # パッケージ nginx をインストールする package ‘nginx’ # サービス webapp を有効にする service ‘webapp’ do action :enable end 17
  5. Webアプリに使ったgem • Ruby on Rails – MVCアーキテクチャ:すっきり書ける – rails runner

    コマンド: 通信用プログラムでモデルを流用 – Rails Engine:スタッフ用画面の分離 • bootstrap-sass – デザインに使用、少ないカスタマイズでそれなりの画面に • seed_fu – データベースへの初期データ流し込み 20
  6. 無線通信システム 避難所 市役所 災害対策本部 避難所の避難者数の統計 避難者名簿の統計 不足救援物資の管理 行方不明者の検索 避難所統計システム 救援物資の送付

    避難所支援サーバー 避難所の避難者数 避難者名簿の作成 行方不明者リストの作成 データ通信 避難所データの通信・統計について
  7. 避難所番号 19 市役所 災害対策本部 避難所 @019DNU @019UNU 99 @019DCA @019UOK

    避難者数情報の通信プロトコル 送信テスト 避難者数要求 人数を返す(99人) 応答
  8. 無線通信システムのプログラム 災害対策本部 • VB.NET製 • 地図データ:OpenStreetMap • 地図表示 – ブラウザ部品におまかせ

    – JavaScriptライブラリ:Leaflet 避難所のサーバー • Ruby製 • Railsのモデルを流用 • 使ったgem – Ruby/SerialPort:シリアル通信 – ServerEngine 39
  9. 紹介したgem等 • Serverspec – http://serverspec.org/ • Itamae – http://itamae.kitchen/ •

    Ruby on Rails – https://github.com/rails/rails • bootstrap-sass – https://github.com/twbs/bootstrap-sass • seed_fu – https://github.com/mbleigh/seed-fu • xbee-ruby – https://github.com/grappendorf/xbee-ruby • Ruby/SerialPort – https://github.com/hparra/ruby-serialport • ServerEngine – https://github.com/fluent/serverengine • OpenStreetMap – http://openstreetmap.org/ • Leaflet – http://leafletjs.com/ 41