スマート農業のためのデータ収集と活用
高校生の太郎さんは、地域の農家である佐藤さんとともに、試験的に導入したスマート農業システムのデータ活用について考えている。
佐藤:「太郎くん、畑に設置したセンサーから、気温、湿度、土壌水分量のデータが1分ごとに送られてくるようになったよ。これがその一部だ。」
太郎:「本当ですね。CSV形式で記録されていますね。(表1)」
表1 収集されたデータ(一部)
時刻, 気温(℃), 湿度(%), 土壌水分量(%)
10:00, 25.2, 65, 22
10:01, 25.3, 64, 21
10:02, 25.3, 64, 20
10:03, 25.4, 63, 18
10:04, 25.5, 62, 16
10:05, 25.5, 62, 14
10:06, 25.7, 61, 15
太郎:「まず、データの関係性を見てみましょう。例えば、気温と湿度の間には何か関係があるかもしれません。散布図を作ってみました。(図1)」
グラフ
Alt: 気温と湿度の関係を示す散布図。データ点は右下がり傾向にあり、気温が上がると湿度が下がるという負の相関関係が推測される。
佐藤:「なるほど。気温が上がると湿度は下がる傾向にあるんだね。 ところで、土壌水分量が 15% を下回ったら、すぐに水やりのためのアラート(警告)を出したいんだ。あと、その日の平均気温も知りたいな。」
太郎:「わかりました。では、データを処理するプログラムを作ってみましょう。データはそれぞれ配列 Kion、Suibun に格納されていて、データ数を N とします。例えば、表1のデータなら N=7 です。こんなプログラム(プログラム1)はどうでしょう。」
プログラム1
// データは配列 Kion, Suibun に格納されている (要素数は N)
// Kion = [25.2, 25.3, 25.3, 25.4, 25.5, 25.5, 25.7]
// Suibun = [22, 21, 20, 18, 16, 14, 15]
// N = 7
手続 CheckData(Kion, Suibun, N)
// 平均気温の計算
合計 = 0
i = 0
反復 i < N
合計 = 合計 + Kion[i]
i = i + 1
平均気温 = 合計 / N
表示("平均気温:", 平均気温)
// 土壌水分量のアラートチェック
i = 0
アラートフラグ = false
反復 i < N
もし (Suibun[i] < 15) ならば
アラートフラグ = 【 ア 】
i = i + 1
もし (アラートフラグ == true) ならば
表示("水分量が15%未満のデータがありました")
そうでなければ
表示("すべてのデータが15%以上です")
戻る
シナリオの表1 (CSVデータ) と図1 (散布図) に関する記述として、最も適切なものを次のA〜Dのうちから一つ選べ。
プログラム1の「土壌水分量のアラートチェック」の部分は、配列 Suibun の中に 15 未満の値が一つでも含まれていれば、アラートフラグ を true にすることを意図している。
このとき、【 ア 】 に入る最も適切な字句を、次のA〜Dのうちから一つ選べ。
プログラム1の「平均気温の計算」の部分を、表1のデータ (N=7) を用いて実行したとき、表示("平均気温:", 平均気温) で出力される 平均気温 の値はいくつか。
解答にあたっては、小数点以下第2位を四捨五入し、小数点以下第1位まで求めよ。
ヒント: 小数で答えよ、小数第1位まで四捨五入
太郎さんと佐藤さんは、収集したデータを農園の管理室にあるモニタに表示する「ダッシュボード」の設計について話し合っている。佐藤さんは「自分はITの専門家ではないので、パッと見て危険がわかるようにしたい」と要望している。
太郎さんは、情報デザインの一般的な指針として、以下のA〜Cを提案した。
佐藤さんの「パッと見て危険がわかるようにしたい」という要望を最も優先的に満たし、かつ、将来の利便性も考慮した場合、どの指針を組み合わせて採用するのが最も適切と考えられるか。次のA〜Hのうちから一つ選べ。
このスマート農業システムでは、農園に設置された多数のセンサー(IoTデバイス)が、データをインターネット経由でクラウドサーバーに送信している。この通信に関する記述として、最も不適切なものを次のA〜Dのうちから一つ選べ。