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

Munu


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


Column
Link
用語集

Coppell

Technologies

 2. PCへのインストール 2.6節



2.6.cUrl for Windowsのインストール
2022年4月10日
 今度はcurlを使って、実際に問い合わせてみましょう。curlはUbuntuに標準的にインストールされていますが、今回はwindows上で動くcurl for windowsを使います。curl for windowsは、コマンドの発行先はUbuntuですが、操作はすべてWindows上でできるソフトウェアです。Windowsで動くcurlを使う理由は、Windows上のテキストファイルを読み込ませたりしたいためです。勿論、Linuxに慣れている人は、Linux上で直接テキストファイルを操作してもかまいません。Windowsで気をつけるのは、WindowsのPowerShellには既にcurlコマンドがあるという点です。実はこのcurlコマンドはcurlっぽいですが、実際にはcurlとは似て非なるものです。PowerShellのcurlコマンドは、実は内部的にwindowsコマンドの"Invoke-WebRequest"というコマンドが実行されているので、動きやシンタックスがかなり違うと考えてください。各種マニュアルなどは、通常の(Linuxの)curlを前提としていますから、PowerShellのcurlコマンドをそのまま使う場合は自分で翻訳しながら操作する必要がありますし、かなり大変な作業です。

 まずは、curl for WindowsをWebサイト からダウンロードします。筆者が使ったcurl for windowsはインストーラーが付属していないzipファイルでしたので、適当な場所にzipファイルを展開し、path環境変数にcurl.exeのあるディレクトリを追加しました。因みに、環境変数の設定方法は、次の通りです。まず、Windowsで「設定」を開いきます。そこで「設定の検索」に"環境変数"と打ち込んで検索すると「環境変数を編集」という名前が付いた設定ウインドウが見つかります。「設定の検索」が表示されない時は、ウインドウの上の三本線のアイコンをクリックすると出てくると思います。筆者の環境では、環境変数というウインドウを開くと、ユーザ環境変数とシステム環境変数がありますが、筆者の場合は、ユーザ環境変数を更新しました。Pathという環境変数は恐らく既にあると思いますので、それをクリックすると、Pathの編集ウインドウになります。検索した結果のでそれを開きます。そこでPathという変数をクリックして「編集」をクリックすると、pathを追加するウインドウが開きます。そこで、「新規」のボタンを押し、pathを追加します。これで、Eindowsは"curl"プログラムがどこにあるのか認識出来る様になりました。
最後に、Invoke-WebRequestに対するエリアスを以下のPowerShellのコマンドで削除します。
PS C:\Users\owner> remove-item -path alias:curl
PS C:\Users\owner>
 PowerShellのエリアスは、 PowerShellを立ち上げるたびに初期値に戻るので、毎回Aliasの削除をする必要があります。
curl for Windowsがちゃんと動いているかどうか、確認しましょう。PowerShellで以下と打ってみてください。

    curl --version

次のようなレスポンスがあれば正常です。
PS C:\Users\owner> curl --version
curl 7.79.1 (Windows) libcurl/7.79.1 Schannel
Release-Date: 2021-09-22
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets
PS C:\Users\owner>
次に、Orionがちゃんと動いているかどうか、curl for windowsからOrion にメッセージを送ってみて確認しましょう。以下のように、Orionからバージョンを取得してみましょう。以下と打ってください。

    curl -X GET 'http://localhost:1026/version'

そうすると、次のようなレスポンスがあれば正常です。
PS C:\Users\owner> curl -X GET 'http://localhost:1026/version'
{
"orion" : {
 "version" : "3.6.0",
 "uptime" : "0 d, 0 h, 5 m, 9 s",
 "git_hash" : "973850279e63d58cb93dff751648af5ec6e05777",
 "compile_time" : "Wed Mar 2 10:34:48 UTC 2022",
 "compiled_by" : "root",
 "compiled_in" : "5e6b6f1167f7",
 "release_date" : "Wed Mar 2 10:34:48 UTC 2022",
 "machine" : "x86_64",
 "doc" : "https://fiware-orion.rtfd.io/en/3.6.0/",
 "libversions": {
    "boost": "1_66",
    "libcurl": "libcurl/7.61.1 OpenSSL/1.1.1k zlib/1.2.11 nghttp2/1.33.0",
    "libmosquitto": "2.0.12",
    "libmicrohttpd": "0.9.70",
    "openssl": "1.1",
    "rapidjson": "1.1.0",
    "mongoc": "1.17.4",
    "bson": "1.17.4"
 }
}
}
PS C:\Users\owner>
このコマンドは、localhostの1026番のポートに対して、versionの情報をGETしなさいという意味になります。localhostとは自分自身、つまり今使っているPCを指していますが、WSLを使っている場合はUbuntu上のアプリケーションも同様にlocalhostで通信が可能です。1026はOrionを動かすときに外から利用可能と指定したポート番号です。
httpですから、ブラウザから"version"というファイルを読む時と同じ指定ですね。試しにブラウザで同じ問い合わせをしても、同じように表示されます。なぜこういう仕組みにしているのかにつ
いては、後で説明します。この応答をよく見ると、波かっこで囲われて、構造と、"orion"や"version"というキーワードの右側にコロン(":")を挟んで値が書き込まれています。この形式を
json形式と言います。このように、Fiwareでは入出力はjson形式を使う約束になっています。

 これで、前準備は完了です。