Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
避難所支援システムを支えるRuby技術
Search
Kosuke Yamashita
March 09, 2016
Technology
6
1.1k
避難所支援システムを支えるRuby技術
2016年3月9日、Hamamatsu.rb #62にて発表。
Kosuke Yamashita
March 09, 2016
Tweet
Share
More Decks by Kosuke Yamashita
See All by Kosuke Yamashita
避難所支援システムにおけるOpenStreetMapの利用
ochaochaocha3
1
1.7k
Other Decks in Technology
See All in Technology
いろんなものと両立する Kaggleの向き合い方
go5paopao
2
1.1k
AWS⼊社という選択肢、⾒えていますか
iwamot
2
1.1k
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
320
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
2
860
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
地理情報データをデータベースに格納しよう~ GPUを活用した爆速データベース PG-Stromの紹介 ~
sakaik
1
130
組み込みLinuxの時系列
puhitaku
4
1.1k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Railsで4GBのデカ動画ファイルのアップロードと配信、どう実現する?
asflash8
2
270
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
420
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
0
160
Amazon CloudWatch Network Monitor のススメ
yuki_ink
0
160
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
RailsConf 2023
tenderlove
29
900
Producing Creativity
orderedlist
PRO
341
39k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
400
KATA
mclloyd
29
14k
Making Projects Easy
brettharned
115
5.9k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Transcript
避難所支援システムを支える Ruby 技術 2016年3月9日 Hamamatsu.rb #62 浜松職業能力開発短期大学校 電子情報技術科 山下幸祐(@ochaochaocha3)
学校の卒研で こんなものを 作りました
3 避難者名簿作成支援システム
4 無線通信システム
背景 5
災害発生時は避難所が開設 される 6
東日本大震災における課題 • 安否情報の確認困難 • 救援物資の需要の把握 –食糧の配給の過不足 –配給食糧によるアレルギー症状 • 災害時要援護者(妊婦・身体が不自由な人等) への対応
7
避難者名簿作成の実情 • 解決のためには避難者名簿を作ることが有効 8 • 手作業で名簿を作成 –作成や集計が困難 –原因:電力・通信インフラ喪失 → コンピュータが使えない、通信できない
• 名簿様式の不統一 –得られる情報が救援ニーズと対応しない 実情は…
目標 電源喪失下でも単独で動作可能な 避難者名簿作成・伝送支援システム を作る 9
避難所てだすけくんのシステム図 10 バッテリー スマートフォン タブレット端末 入力端末 「にゅうりょくん」 市役所等 災害対策本部 避難所
統計システム 避難所支援サーバー Wi-Fi 無線通信 モジュール ZigBee 無線通信 モジュール 無線通信 システム
避難所てだすけくんができること 11 避難者数を数える 避難者名簿をつくる 名簿や 救援ニーズ を送る 太陽光による 充電で動く 避難者の入退室管理
救援物資配給 食物アレルギーへの対応
避難者名簿作成支援システムの製作 12
用途 避難者名簿を 素早く作る 13 避難者名簿作成支援システム サーバー 入力端末
コンセプト • 実際に必要な情報を入力 • 災害発生当日:避難者の人数のみ • 災害発生後2日目以降:浜松市の避難者名簿様式 • コストを抑える •
避難者の識別にバーコードを利用 14
サーバーの構成・提供機能 15 ZigBee 無線通信 モジュール Wi-Fi 無線通信 モジュール サーバー(Raspberry Pi
2) 無線通信用 サーバー Web アプリケーション サーバー データベース 避難者の情報 を入力する 各端末との 無線通信を 行う 避難者の情報 を格納する https://www.raspberrypi.org/blog/raspberry-pi-2-on-sale/ より引用
Infrastructure as Code • サーバーの設定をコードとして残す – 変更履歴の確認が容易 – 自動設定が可能 •
履歴管理:Git • サーバー設定のテスト:Serverspec – RSpecを使ってサーバーの状態を記述することができる • 構成管理:Itamae – 独自DSLで状態を記述、Chefより簡単 16
コードとして表した設定の例 テスト(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
Webアプリケーション:避難者用 18 ホームページ 個人情報 アレルギー
Webアプリケーション:スタッフ用 19 ホームページ 登録避難者一覧 お知らせ
Webアプリに使ったgem • Ruby on Rails – MVCアーキテクチャ:すっきり書ける – rails runner
コマンド: 通信用プログラムでモデルを流用 – Rails Engine:スタッフ用画面の分離 • bootstrap-sass – デザインに使用、少ないカスタマイズでそれなりの画面に • seed_fu – データベースへの初期データ流し込み 20
用途 以下を素早く入力する • 避難者の人数 • 入退室情報 21 避難者情報入力端末
22 操作方法 2 3 4 1
入力端末・サーバー間の通信 23 入力端末 家族 代表者番号 111 家族の人数 3 データ ベース
“# 01901115 3” ZigBee無線通信 サーバー
入力端末との通信に使ったgem • xbee-ruby –ZigBeeモジュールによるシリアル通信を簡単に行える • ServerEngine –サーバープログラムのフレームワーク –マルチプロセスサーバーを簡単に作れる • 今回はシリアル通信の制約のため同時接続数は1
–ロガー、シグナルハンドラを自動で用意してくれる 24
運用実験 • 浜松校の避難訓練で実施(2015年11月19日) • 約150名が参加 • 10分間で避難者数を何人分数えられるか? –避難者数=参加者の家族の人数 25
26 運用実験の様子
27 入力端末を使い 参加者の家族の人数を入力
28 567人 10分間で数えられた人数
実証結果 避難者名簿作成支援システムを使うと 数百人規模の大きな避難所でも 避難者数を素早く把握できる 29
避難者名簿無線通信システムの製作 30
無線通信システム 避難所 市役所 災害対策本部 避難所の避難者数の統計 避難者名簿の統計 不足救援物資の管理 行方不明者の検索 避難所統計システム 救援物資の送付
避難所支援サーバー 避難所の避難者数 避難者名簿の作成 行方不明者リストの作成 データ通信 避難所データの通信・統計について
避難所番号 19 市役所 災害対策本部 避難所 @019DNU @019UNU 99 @019DCA @019UOK
避難者数情報の通信プロトコル 送信テスト 避難者数要求 人数を返す(99人) 応答
避難所統計システム(避難所みえるんです)
避難所統計システム(避難所みえるんです)
避難所統計システム(避難所みえるんです) 35
避難所統計システム(避難所みえるんです) 36
避難所統計システム(避難所みえるんです) 37
避難所統計システム(避難所みえるんです) 38
無線通信システムのプログラム 災害対策本部 • VB.NET製 • 地図データ:OpenStreetMap • 地図表示 – ブラウザ部品におまかせ
– JavaScriptライブラリ:Leaflet 避難所のサーバー • Ruby製 • Railsのモデルを流用 • 使ったgem – Ruby/SerialPort:シリアル通信 – ServerEngine 39
中田島砂丘 付近 ポリテクカレッジ 浜松 OpenStreetMapより 避難所データの通信実験 2.6 km 約2.6 kmの距離で
避難者数の無線データ通信ができた
紹介した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
まとめ • 組込み技術とWeb技術を組み合わせて 避難者名簿作成・伝送支援システムを 製作した • Rubyのライブラリを活用し、効率よく 開発することができた 42