Fiwareを使って都市OSを動かしてみよう

Munu


データ仕様の現状と課題
スマートシティの標準規格(案)
データモデルのユースケース
ツール


Column
Link
用語集

Coppell

Technologies

2. PCへのインストール


 この章では、PCにFiwareを動かし操作する環境を作ります。その過程で、Entityの格納などの操作をしますが、この章ではその操作の紹介は細かくは説明しません。「ああ、そんな感じなんだ」と理解してもらうのが目的ですので、まずは説明していないところは「おまじないが書いてある」ぐらいに思って読み飛ばしてください。3章以降で少しずつ種明かししていきます。


2.1.実行環境の全体像
2022-04-09
 一般的にFiwareを動かす場合、右図のようにLinuxというOS上で動かします。その際に、cUrlやBashなどの一般的なツールは既にインストールされており、はFiwareに命令を発行するなどの目的で利用できます。Mongo-DBはFiwareのデータを蓄積してくれる、データベースと呼ばれるミドルウェアです。
 しかし、本書の読者にはLinuxに詳しくない方もいらっしゃるでしょうし、Linuxを動かすサーバを用意するのも大変です。そこで本書では、本図のようにWindows環境でLinuxを動かし、その上にDocker、更にDockerの上でFiwareの核であるOrionと呼ばれるContext Broker(注)と、Entityを格納するデータベースであるMongo-DBを動かします。Context Brokerの機能については、おいおい説明します。また、Docker上のOrionなどに命令を発行するために、Windows上でcUrlというコマンド(プログラム)を動かします。

注: プログラム間のEntityのやりとりを仲介するので、Entity Brokerと言った方が実情とあっていると思いますが、なぜかContext Brokerと呼びます。一般にはデータ仲介機能や単にBrokerと呼ばれることの方が多いです。


2.2.環境要件の確認
2022-04-09
 Windowsの環境をチェックします。以下の条件に当てはまる背祖であることが必要です。とは言っても、筆者は8年前に買った薄型のノートPCでも動きましたので、大抵は動くのかもしれません。
  • Windows 10または11 Enterprise、Pro、または Education
    Windows上で仮想環境を動かす必要がありますが、Homeエディションではこれが動作しません。Homeエディションの場合は、[設定]->[更新とセキュリティ]->[ライセンス認証] の順に移動して、Windows  Home Edition を Windows Pro にアップグレードしてください。
  • 第2レベルのアドレス変換 (SLAT) の 64 ビット プロセッサ
  • VM モニター モード拡張機能 (Intel CPU 上の VT-c) の CPU サポート。
  • 最小 4 GB のメモリ

2.3.WSLのインストール
2022-04-09
 ますば、WSL (Windows Subsystem for Linux) 2 backendをインストールします 。WSLは、仮想化技術を使って、Windowsとは別にLinuxを動かすものです。WSLを紹介するサイトによっては、手作業で仮想環境を設定する必要があるとの記載がありますが、筆者の経験ではWSLのインストール時に仮想環境も有効化される様で、特にコマンドを打たなくてもインストールだけでWSLが動きました。WSLが動くとUbuntuというLinuxが起動されます。
 インストールはコマンドプロンプトかPowerShellで実施します。コマンドプロンプトの場合、まずコマンドプロンプトを起動する際にadministratorモードで起動します。右上の例のように、コマンドプロンプトは[スタート]->[Windowsシステムツール]で見つかりますが、コマンドプロンプトのアイコン上で右クリックし[その他]->[管理者として実行]で起動すればadministratorモードになります。
そこで、右図の様に"wsl --install"と打てはインストールが始まります。
(2023-10-20編集注: 本原稿執筆後に幾つかのアップデートが公開されている様で、アップデートを適用しないでインストールしようとするとエラーが発生するようです。その様な表示が出た場合は、アップデートを適用してから、再度手順を試行してみてください。また、以前はUbuntuが既定値でインストールされましたが、途中でどのOSを選ぶか選択する画面になる様になったようです。Ubuntuを選んで進めて下さい)
Windowsを再起動すると、Ubuntuが自動的に立ち上がり、インストールが継続されます。

最後にLinuxのユーザ名とパスワードの指定を求められます。小文字だけの様なので、小文字で適当な文字列を打ち込むとユーザ名になります。筆者の場合は"harry"としましたので、この後に出てくる事例ではコマンドプロンプトにharryが出てきます。

余談ですが、WSLのファイルをWindowsから参照するときは、エクスプローラーで、"\\wsl$"というフォルダを参照します。フォルダのパスを書く場所に\\wsl$と打ち込んでEnterキーを押すと、下図の様にWSLのルートディレクトリが参照できます。
また、WSLではWindowsとUbuntuは、仮想ネットワークでつながれています。windowsとUbuntuは、別々のIPアドレスを持っています。Ubuntuから見たWindowsのIPアドレスはUbuntuで以下のコマンドを打つことによりわかります。

cat /etc/resolv.conf
harry@MSI:~$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.18.80.1
harry@MSI:~$
この様に、nameserverの右側(下線部)がWindowsのIPアドレスです。この例では、172.27.144.1です。
 また、Ubuntu側のIPアドレスは、以下のコマンドでわかります。

ip addr
harry@MSI:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether 1e:c9:76:d4:09:47 brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether 62:34:a4:ff:9b:34 brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
   link/ipip 0.0.0.0 brd 0.0.0.0
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
   link/sit 0.0.0.0 brd 0.0.0.0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
   link/ether 00:15:5d:bb:72:01 brd ff:ff:ff:ff:ff:ff
   inet 172.18.88.46/20 brd 172.18.95.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::215:5dff:febb:7201/64 scope link
      valid_lft forever preferred_lft forever
harry@MSI:~$
"eth0"の中の"inet"の行の一つ目のIPアドレス(下線部)がUbuntuのIPアドレスです。この例では、172.18.88.46です。但し、windowsからubuntu側のプログラムをアクセスする際には、IPアドレスを気にする必要はなく、"localhost"と記述すると、Windowsが自動的に処理して、Ubuntu上のアプリケーションにもアクセスしてくれます。したがって、あたかも同じOS上で動いているかのようにアクセスする事が出来ます。この処理はwindows側からUbuntu側にアクセスする際にだけ適用され、逆にUbuntu側からWindows側をアクセスする際には適用されませんので、Ubuntuからアクセスする際には、IPアドレスを明記する必要があります。尚、これらのIPアドレスはPCを再起動すると変わってしまいます。