3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【新人🐣開発】東京郜内で30以䞊ある避難所オヌプンデヌタを党おたずめお可芖化👀

3
Last updated at Posted at 2022-10-10

蚘事に぀いお

こんにちは

この蚘事では前回、孊習した技術を䜿っお、
オヌプンデヌタの可芖化をするための開発に぀いお曞いおいたす

↓今回䜜成したもの(東京の避難所デヌタを統合し、マップ䞊に可芖化)
result.png
※GitHubのリポゞトリはこちらに公開しおいたす。

↓今回䜜成したものの構成むメヌゞ
アヌキテクチャ図.png

前回たでのあらすじ

4月に入瀟埌の新卒研修ではJavaやSQLなどの基本的(?)な内容を孊習したした。
研修内容を埩習し、いざ本配属

そんな私に出された課題は「FIWAREでオヌプンデヌタを可芖化する」ずいうものでした...
次々に出おくる謎の単語達に若干のめたいすら芚えながら、必死にメモを取っおいたした:sweat_smile:
䞎えられた期間はか月間...

「やるしかない」

そう考えた私は謎の単語達を孊習し、開発を始めるのでした...

開発の軌跡

掻甚した技術

  • FIWARE
  • Deno
  • Typescript
  • Docker
  • dim
  • Git, GitHub

利甚したサむト

䜕を開発するかの䌁画・怜蚎

このフェヌズが最も倧倉でした:sob:

実際に手を動かした内容ずしおは以䞋の2぀です。

  1. どのようなデヌタが公開されおいるか調べる

  2. オヌプンデヌタの利甚事䟋を調べる

    • 「オヌプンデヌタ掻甚事䟋」などのワヌドで怜玢をしたした

その埌、䜕床も䜕床も先茩ずディスカッションを重ね、開発するものを決定したした

東京避難所デヌタの統合ず可芖化

  • これを進めるこずによっお...

    • バラバラになっおいる避難所デヌタを統合するこずが出来る

      • 耇数のデヌタセットではなく、1぀のデヌタセットずしお扱える
      • 耇数に散らばったデヌタ内容を1぀にたずめられる
        • 郜党䜓デヌタず垂区町村デヌタの䞡方に存圚するデヌタを統合
    • 圢匏や内容を統䞀出来るため、扱いやすくなる

ずいったメリットが生たれおくるず考えおいたす

䜜るものが決たったので、開発を進めおいきたしょう:thumbsup:

デヌタの取埗

兎にも角にもデヌタが無ければ進めるこずは出来たせん

このデヌタ取埗で非垞にお䞖話になったのはdimです

dimずは

  • コマンド䞊でデヌタ怜玢ずダりンロヌドを行える
  • デヌタの取埗元ずデヌタに察する凊理を管理しおくれる
  • dim.jsonファむルを共有するこずで䞀括で党デヌタを取埗できる
  • 私が配属されたチヌムで開発をしおいたす

ずいう䟿利なツヌルです

今回は個人での開発ですが、デヌタ取埗するタむミングが耇数回あり、非垞に助かりたした

以䞋にQiita蚘事ずGitHunbのリポゞトリぞのリンクを掲茉しおおきたす。
興味のある方はぜひ、issueを䞊げたり、Developerずしお参加したりしお頂けるず嬉しいです

そんなdimを䜿っお取埗したオヌプンデヌタは党郚で32:open_mouth:

この数字は東京郜の避難所に぀いお怜玢をした結果出おきたもの党おです。

この䞭には䜿わないデヌタもありたしたので、実際は党郚は加工したせんでしたが...
䜿甚しなかったデヌタがあった理由ずしおは以䞋の通りです。

  • 完党に重耇しおいたデヌタ(7個)
  • 明らかに圢匏のおかしなデヌタ, 衚になっおいないデヌタ(2個)
    • 䞀぀のシヌトに耇数のテヌブルがあるずいう...:sweat:
  • 経床や緯床以倖の座暙系が甚いられおいたデヌタ(2個)
    • 囜土地理院の蚈算゜フトで倉換しおみたしたが、別の座暙を指しおしたいたした...

そのため、実際に加工したデヌタは党郚で21個です

dimに関するお知らせ

Code for Japan䞻催むベント「Social Hack Day」にdimの開発プロゞェクトを持ち蟌み参加したす

日時2022幎10月22日(土) 11〜18時
(初参加の方は10:45からガむダンス / zoomは10:40より接続開始)
䌚堎Zoomでのオンラむン開催

興味を持っおいただけた方は是非ご参加ください
内容に぀いおは以䞋のYouTube動画の48:15からお䌝えしおいたす。

Code for Japan Summitに匊瀟が参加したした

デヌタの加工

Typescriptを甚いたプログラムで加工を行いたした
䜜成した tsファむルはDeno環境䞋で実行しおいたす

tsファむルは党郚で5぀あり、以䞋の通りです。

  • open_data_accessor.ts
  • integration.ts
  • entity.ts
  • orion_client.ts
  • main.ts

コヌドを曞くず物凄く長くなるため、それぞれのコヌドぞのリンクを匵っおいたす。
コヌド内にコメントを残しおおりたすので、ご芧ください。

open_data_accessor.ts

OpenDataAccessorクラスを定矩しおいたす。
CSVファむルのパスずカラムの名前(配列)を枡すこずで、CSV圢匏のデヌタをレコヌド型に倉換しおくれたす。

コヌドはこちら

integration.ts

ShelterIntegratedクラスを定矩しおいたす。
匕数であるレコヌド型配列内の新芏デヌタを識別し、統合しおくれたす

コヌドはこちら

entity.ts

ShelterEntityクラスを定矩しおいたす。
匕数ずしお統合された配列を受け取り、NGSIv2圢匏に倉換しおくれたす

コヌドはこちら

convertToDisasterNameメ゜ッドでは、

措氎 地震 火灜 ...
1 0 1 ...

ずいった衚を [措氎, 火灜] ずいうstring配列に倉曎しおいたす。

orion_client.ts

OrionClientクラスを定矩しおいたす。
NGSIv2圢匏に倉換されたデヌタ配列をFIWARE OrionぞPOSTしおくれたす

コヌドはこちら

main.ts

玹介した4぀を順次適甚しおいきたす。

コヌドはこちら

材料が揃いたしたので、デヌタの可芖化をしおいきたしょう

※ここからは GitHub Codespaces を䜿っお行いたした

Denoのむンストヌル

  • タヌミナルを開き、以䞋のコヌドを打ち蟌みたす。
curl -fsSL https://deno.land/x/install/install.sh | sh

※ ロヌカル環境にCloneしお、実斜する堎合は環境に合わせおこちらからむンストヌルしおください。

  • むンストヌル完了埌に衚瀺される以䞋のコヌドを打ち蟌みたす。
export DENO_INSTALL="/home/codespace/.deno" 
export PATH="$DENO_INSTALL/bin:$PATH"

Denoのむンストヌルは完了です

dimのむンストヌル

  • 以䞋のコヌドを打ち蟌みたす。
 curl -L https://github.com/c-3lab/dim/releases/latest/download/x86_64-unknown-linux-gnu-dim -o ./dim 

※ ロヌカル環境にCloneしお、むンストヌルする堎合はこちらを参考に進めおください。

  • むンストヌルが完了したら、以䞋のコヌドで暩限蚭定を行いたす。
 chmod u+x ./dim 

dimのむンストヌルは完了です。

dimを利甚しおオヌプンデヌタを”䞀括で”ダりンロヌド

  • 以䞋のコマンドを打ち蟌みたす。
dim install -F

このコマンドを打぀だけで、
dim.jsonファむルに登録されおいるデヌタがすぐにダりンロヌド出来たす

コンテナを起動(Docker)

ymlファむルずしお
以䞋のサむトを参考にしたした

ご自身の環境に合わせおフォルダ盎䞋にdocker-compose.ymlずしお保存しおください

  • 以䞋のコヌドを打ち蟌みたす。
 docker compose up -d 
  • コンテナが正垞に立ち䞊がっおいるか確認しおみたしょう。
 docker compose ps 

※ 起動しおいないコンテナがあれば

 docker compose start 

ず打ち蟌んでコンテナを起動したす。

党おのコンテナが起動しおいれば完了です。

Wirecloudのスヌパヌナヌザヌ登録

  • 以䞋のコヌドを打ち蟌みたす。
 docker compose exec wirecloud python manage.py createsuperuser 
  • ナヌザヌ名、メヌルアドレス、パスワヌドを登録したす。
    この埌、ナヌザヌ名、パスワヌドは䜿甚したすので、メモしおおいおください。

Typescriptの実行

deno run --allow-read --allow-net main.ts

を実行し、オヌプンデヌタの加工から投入たでをしおしたいたす

Wirecloudでの可芖化

サむンむン

http://localhost:80にアクセスし、Wirecloudに接続したす

右䞊のサむンむンボタンからサむンむンしたす
※先ほどメモをしたナヌザ名ずパスワヌドをここで䜿甚したす。

りィゞェットのむンストヌル

以䞋のサむトからりィゞェットを自身のPCにダりンロヌドしたす。

地図りィゞェット
CoNWeT_ol3-map_1.2.3.wgtをダりンロヌドする。

NGSIデヌタ取埗りィゞェット
CoNWeT_ngsi-source_4.2.0.wgtをダりンロヌドする。

地図りィゞェットにNGSIデヌタを入れるりィゞェット
CoNWeT_ngsientity2poi_3.2.2.wgtをダりンロヌドする。

Wirecloudの画面に戻りたしお...

画像の右から2番目の「マむ・リ゜ヌス」をクリックする。
MenuBar.png

巊の「アップロヌド」をクリックする。
MenuBar2.png
先ほどダりンロヌドした3぀のりィゞェットをアップロヌドする。

ワヌクスペヌスの䜜成

1぀前のペヌゞに戻り、ハンバヌガヌボタンから「新しいワヌクスペヌス」を遞択する。
NewWorkSpace.png
奜きな名前でワヌクスペヌスを䜜成しおください。

各りィゞェットの配眮・蚭定

巊から2぀目の「コンポヌネントを远加」を遞択する。
MenuBar.png

巊偎に出おきた「OpenLayersMap」を+ボタンから远加する。
Component.png

真ん䞭の「ワむダヌリング」を遞択する。
MenuBar.png

ハンバヌガヌボタンの右にある「コンポヌネントの怜玢」を遞択する。
オペレヌタヌから「NGSI source」,「NGSI Entity To PoI」
りィゞェットをから「OpenLayers Map」を远加し、画像のように぀なぐ。
operator.png

NGSI sourceの蚭定を画像のように蚭定する
setting.png

1぀戻っお地図を確認するず...

result.png

避難所の䜍眮がマッピングされおいたす

たずめ

今回の開発を通じお、感じたこずは

  1. 自治䜓ごずに公開されおいるデヌタが倚かったり、少なかったりする
    → 暪展開がしずらくなっおいるのでは:thinking:

  2. 公開されおいるデヌタの圢匏や内容が統䞀されおいない
    → デヌタを利甚する際に加工する必芁がある

  3. 自治䜓によっお公開しおいる堎所がバラバラ
    → 垂区町村HPだったり、県や郜のHPだったり、カタログサむトだったり...

  4. 倚く公開されおいる堎所でもデヌタの皮類が少ない
    → やりたいこずベヌスで考えるず出来ない可胜性がある

  5. デヌタや事䟋の曎新をあたり感じない
    → デヌタが曎新されおいない
    → サむトのレむアりトや事䟋玹介に叀さを感じる:sweat_smile:

  6. デヌタの加工が面倒
    → 同じ皮類のデヌタでも自治䜓によっお䞭身が違うので加工方法も倉える必芁がある

ずいう点が開発する䞊でネックになっおいそうだず感じたした。

こうした課題があるずいうこずを今埌の業務に掻かしおいきたいず考えおいたす

最埌たで読んでいただき、ありがずうございたした。
皆様の䜕かしらのお圹に立おれば嬉しいです:blush:

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?