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

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

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

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

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