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
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
190
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
600
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
100
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
290
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
120
20241220_S3 tablesの使い方を検証してみた
handy
4
620
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
350
Storage Browser for Amazon S3
miu_crescent
1
220
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
17
16k
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
850
Featured
See All Featured
A designer walks into a library…
pauljervisheath
204
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Thoughts on Productivity
jonyablonski
67
4.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
How to Ace a Technical Interview
jacobian
276
23k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
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