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
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
250
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
440
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
280
Snowflake女子会#3 Snowpipeの良さを5分で語るよ
lana2548
0
230
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
260
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
180
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
26
11k
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
Jetpack Composeで始めるServer Cache State
ogaclejapan
2
170
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
31k
Featured
See All Featured
RailsConf 2023
tenderlove
29
940
The Pragmatic Product Professional
lauravandoore
32
6.3k
Statistics for Hackers
jakevdp
796
220k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Producing Creativity
orderedlist
PRO
341
39k
Designing Experiences People Love
moore
138
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Designing for humans not robots
tammielis
250
25k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
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