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
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
SSMRunbook作成の勘所_20241120
koichiotomo
3
160
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
180
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
190
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
160
Lambdaと地方とコミュニティ
miu_crescent
2
370
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
160
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
100
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Visualization
eitanlees
145
15k
Code Review Best Practice
trishagee
64
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
How GitHub (no longer) Works
holman
310
140k
Scaling GitHub
holman
458
140k
Producing Creativity
orderedlist
PRO
341
39k
Music & Morning Musume
bryan
46
6.2k
YesSQL, Process and Tooling at Scale
rocio
169
14k
A designer walks into a library…
pauljervisheath
204
24k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
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