複数のプログラム言語を用いた地すべり監視システムの開発
基礎設計室

新宮直人

1. はじめに
地すべり災害において、迅速な状況把握のための現地計測は、被害状況の把握、危機管理体制の構築、および対策工の早期計画に重要な役割を果たす。そして近年、IT 技術の発達により、地すべり観測においてもリアルタイム観測技術の向上が可能となった。
当社では平成 13 年からインターネットによる観測を行ってきた。そして、その観測機器と観測システムは自社での開発を継続している。自社開発では機器の開発と処理を行うプログラム開発が重要であった。私は入社してまだ数年であるが、現在この地すべり観測システムの開発に携わり、様々なプログラム開発を行っている。地すべり観測のそれぞれの場面でそれに適したプログラム開発を行っており、本稿ではそれを紹介する。

2． 地すべり観測の場面
図‐１は地すべり監視システムのフローである。地すべり観測において、ここでは主に伸縮計観測を事例として観測システムの要素を以下に挙げる。
(1) 現場観測
センサーの値を観測し、それを蓄えたり、通信機器をつかって会社へ送信するシステムが必要であり、それは省電力で長期観測に耐え、耐候性に優れている必要がある。
(2) サーバー側の処理
サーバーは Linux サーバーを使い、Http プロトコルや ftp などでデータを受信し処理を行っている。サーバー側は、データの受信、データの保存、データによる図化、速度や変位の分析を行う。図化結果や分析結果は Web サーバーで公開する。また必要に応じて関係者に通知を行う。
(3) 関係者
平常時は専用サイトで地すべりを監視する。非常時には警報メールを受信し警戒体制をとる。

3． 必要な処理と開発言語(1) 現場観測
地すべりの変動を観測しており、ゲートウェイ装置としてアルマジロを使用している。
当社では数年前から mRubyC という組み込み用 Ruby 言語を使った観測機器を開発している。
(2) サーバー側の処理①データ受信データ受信は Linux サーバーの機能を使って行っている。データを受信した際に破損している可能性があるため、エラーが起きてもクラッシュしないプログラムの記述の為に Ruby を使用している。
②データ整形
伸縮計の生値をグラフや警報メールに使用可能な形にする。
また AI による運動予測の為の整形作業は Python と C++を組み合わせて行っている。
③図化処理
図化処理にはライブラリの豊富な言語を使用している。Python はライブラリが豊富で最初は主に Pythonを好んで使っていたが、Python はインタプリタ式の言語であるため動作は遅く、システムにかかる負荷も大きい。ライブラリの自作やあるいはループの改善でかなり高速にもできるが、どうしても必要な場面ではC++を使用している。
④警報メールの発信

伸縮計の現在の値が閾値を越えた場合に警報が流れるようにしており、現場によって閾値の変更ができるようにしている。警報はメール、Line、社内 SNS などで通知を行っている。

受信データ

センサー

図化
警報システム整形・メール

通信機・実測値グラフ・LINE(SNS)
・運動予測
社内処理
ゲートウェイ装置
通知
現場観測

閲覧

関係者

図‐1

公開HP(Web サーバー)

地すべり監視システム

4． 開発言語の特性および注意点
地すべり監視システムにおいて、データ通信・図化や、特に変位発生時の関係者への伝達といったものは高速である必要がある。その為、プログラムの実行・処理といった部分もそういった速さが重要視されており、様々な言語の中から用途に適したものを選ばなければならない(表‐1)。
今回は実際の監視システムで使用しているプログラミング言語の長所と短所、具体的な使用例について述べていく。
(1)mRubyC
mRubyC とは、組み込みシステム向けの軽量な Ruby 言語であり、Ruby の様にコーディングをすることが可能となっている。
長所として、記述がしやすいこと、可読性が高いことが挙げられる。その為、データ通信部分などといった今後も度々修正する可能性が高く複雑な処理を行う部分をライブラリで扱うことができる。
短所としては、インタプリタ式である場合、実行速度が遅くなってしまうことが挙げられるが、数分ごとに実行する程度のものであれば遅さをそこまで感じることはない。
(2)C・C++
C・C++言語の長所として処理速度が高速であることが挙げられる。その為、伸縮計・歪計などの観測を続けているうちに膨大になってくるデータの処理や整形に適している。また、OS の制御が簡単であることから、地すべりに動きがみられた際の関係者にメールを一斉送信させる部分もこの言語で作成している。
短所としては、自由度が高いためにコーディングの際に書き方を統一していないと可読性が低いものになってしまいがちで、第三者が修正を行う場合に時間がかかってしまう可能性がある。
(3)Python
Python の長所として、豊富なライブラリがあることが挙げられる。また、AI による予測などといったものを比較的容易に行うことが可能であり、現在地すべりの崩壊予測を行っている。また、地すべりデータの可視化として、図化を行う際、GNUPLOT と併用して Python を使用している。
Python の短所として、インタプリタ式である為、実行速度が遅いことが挙げられる。その為、C・C++で作成したライブラリを使うなどして速度面の改善を図る必要がある。
(4)Go
Google が開発した比較的新しい言語である。
長所として処理速度が速く、並列処理が容易であることが挙げられる。また、Windows と Linux などといった OS 間での移行も簡単なことから、社内ソフトなどの作成に活用しており、地すべり監視システムにおいて、LINE などといった SNS の通知連動アプリを作成している。
短所としては、ライブラリが他の言語と比べて乏しく、計算処理部分などを自作する必要があることが挙げられ、他の言語と比べるとまだまだ未熟な点も多い。

表-1 プログラミング言語の使い分け
場所
現場社
内

項目

目的

使用言語

データ通信
データ送信
データ受信
データ整形
図化
速度の計算
警報メール配信
運動予測

センサーデータの取得など
データを社内サーバーに転送する
現場から送信されたデータを受信する
CSV といった後処理しやすい形に整形する
伸縮計データと雨量データを読み込みグラフ化する
伸縮計の変位データから速度を計算する。
基準値を超えた場合、関係者へメールや LINE を行う
運動予測を行う

mRubyCmRubyC
Shell,Ruby
C++
PythonC++
C++、GoPython

5． まとめ
今回の発表では地すべりの監視システムについて述べてきた。自社開発のメリットとしては、警報にしても時間何ミリか、月何ミリかといった様に発注者の注文に柔軟に対応できることである。また、自社で作成したプログラム資産が蓄積されることで、今後の作業の効率化を図ることができる。
ただ、観測において、データの誤りは許されないことや、サーバー内のデータを定期的にバックアップをとるといった保守が必要になってくる。今後もインターネット観測を続けていくにあたって、こういった点に注意しながら観測業務を行っていきたい。

《引用・参考文献》
1)新宮直人 斉藤龍太

木村忍(2019)「機械学習による地すべりの崩壊予測プログラムの紹介」, 全地連「技術フォーラム 2019」岡山
2)プログラミング言語をいろんな視点で分類してみた
https://atmarksharp.v01.jp/posts/programming-compare.html（最終閲覧日 2021 年 6 月 4 日）