体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

IoTをリードするオージス総研「MessagePub+」開発者が求めるのは、思考停止しないエンジニア

バーチャルパワープラント実証事業で重要な機能を担う

オージス総研は、大阪ガスが販売する「エネファーム」のIoT化や、工場でのIoT実証実験などを支援した数多くの実績を持つ企業。必要なツールやソフトウェア・ハードウェア、およびそれらの利用ノウハウをまとめ、IoTプラットフォームとして提供している。

そのユーザー事例の一つに、NTTスマイルエナジーが電力会社と共に進めるバーチャルパワープラント(VPP)の実証事業がある。VPPとは、家庭の蓄電池を含む多数の小規模な発電設備や、電力の需要抑制システムを一つの発電所(仮想発電所)のようにまとめて制御を行うこと。

従来、電力の需給調整は発電所の稼動・停止など供給側で行うものだったが、VPPでは電力供給が不足ぎみのときは、蓄電池から放電を行うなど需要側をコントロールすることで需給の調整を行うことができる。

そのためには、まず省電力ピークシフトに対応してくれるかどうかを、センター側から一斉同報で蓄電池側にリクエストする必要がある。

蓄電池の上にはソフトウェアが搭載されており、蓄電状態に応じて、そのリクエストを受け入れるかどうかを、これまた一斉同報でレスポンスする。どのぐらいの装置が対応できるかがわかることで、センター側は電力供給量を最適化することができる。

こうしたメッセージのやりとりを遅延なく安全に行うにあたって重要な役割を果たしているのが、オージス総研が独自に開発したIoTメッセージングプラットフォーム「MessagePub+」だ。

◆IoTメッセージングプラットフォーム「MessagePub+」

MessagePub+はメッセージの配信を司るbrokerと、brokerにつながるクライアントから構成されており、データの収集や、収集したデータに基づく制御を行うシステムを簡単に構築することができる。

IoTやWebで標準的なプロトコル、MQTT、HTTP(REST)、WebSocketに対応。TLSによる暗号化通信をサポートするなどしてセキュリティを担保する一方、ラベル機能により複雑なデータの集配信を簡便化でき、さらにクラウド環境へもオンプレミス環境への導入が可能というメリットもある。

中でも高いレスポンス性とスケーラビリティは大きな特徴だ。

「1台のbrokerインスタンスで、数万~数十万のセッションを処理することができます。さらに複数台のbrokerインスタンスでクラスタを構成し、スケールアウトさせることも可能です。1秒に1回、1Kbytesのデータをやりとりするという負荷をかけた状況での応答時間はわずか数ミリ秒(※AWSの同一VPC内で計測)。今回の実証事業でもこのスピードが評価されて採用されたという経緯があります」

と言うのは、MessagePub+を開発したオージス総研IoTセンターの近藤貴俊氏だ。

株式会社オージス総研 技術部 IoTセンター 近藤貴俊氏

「IoTソリューションは各社が提供するようになりましたが、当社のソリューションは、メッセージ通信をend to endでの到達保証と、高い応答性能を両立しているところが、他にはない訴求ポイントになっています」

C++のゼロオーバーヘッド原則が、レスポンス性能を高める

MessagePub+のレスポンス性能が高いのは、そもそもこれがC++によって書かれたプログラムであることも理由の一つだ。近藤氏は、2007年からISO C++標準化委員会にエキスパートとして参画するなど、C++について言語仕様レベルから実装に至るまで幅広く精通したエンジニアだ。

「C++は昔からハードウェアの性能を引き出すには良い言語とされています。しかも絶えず進化し続けている言語です。昔のC++しか知らない人が、今のC++のコードを見たら、今っぽい言語だなと驚くと思います。

特に私たちは2014年にリリースされたC++14をメインに使っています。国内では、残念ながらまだ使用例がそれほど多くないのですが、汎用的・抽象的にコードを記述しながらも、あたかも専用に書いたごとくスピードが出る、という特徴を持っています」

C++の言語開発にあたっての哲学の一つに、「利用しない機能についてはオーバーヘッドが生じないようにする」という「ゼロオーバーヘッドの原則」があるが、C++14はその忠実な継承バージョンだ。

「クライアントの数が多くなるとサーバのレスポンス性能が急激に劣化する”C10K問題(クライアント1万台問題)”についても、非同期通信モデルに基づくBoost.Asioというライブラリを使うことで解決しています。さらに、マルチコアCPUの性能を有効に引き出す工夫も行っています」

上記工夫を行っても、1台のbrokerには性能の限界がある。そこで、brokerの台数を増やすことで応答スピードを維持できるようにスケールアウトする仕組みも搭載している。

OSSへのコミット、要素技術・モデリング手法のノウハウ蓄積に強み

先に述べたように、近藤氏はC++ライブラリのコミッタとして活動するなど、OSSへの関わりが深い。

2014年からはオープンソースソフトウェア「msgpack-c」のコミッタとしても活躍している。msgpack-cは、複雑な構造の情報を効率的かつコンパクトに表現できるデータフォーマット「MessagePack」を扱うライブラリのC/C++版のこと。

コンパクトに表現できるということは、情報をより多く、よりきめ細かく送れることにつながるため、同社のIoTソリューション開発にも役立っている。

「OSSへの貢献は私自身の趣味の一つですが、同時に業務として関わることも会社に認められています。OSSとの関わりを通して私自身がエンジニアとして大きく成長できたし、結果として仕事にもプラスになっています」

MessagePub+自体はOSSではないが、契約企業にはソースコードを全部公開しており、改変も自由だ。オージス総研自体がオープン・イノベーションの風土をもつ企業なのだ。

「社内にはメッセージング技術などの要素技術はもとより、データ分析、機械学習・深層学習、セキュリティのプロがいますし、さらに開発手法のモデリング技術についても分厚い蓄積があります。

組織としても、R&D開発を担うIoTセンターのほか、顧客のビジネスに直結したIoT推進プロジェクト部があり、両者が連携して力を発揮できるところが当社の強みだと思います」

思考を止めず、どこまでもバグを追究するエンジニア

IoTソリューションをさらに強化するために、オージス総研では現在エンジニアの採用を拡大している。

採用面接にも同席することが多い近藤氏に、IoTセンターが求める人材像を語ってもらった。前職での経験や年数以上に、近藤氏が重視するのはエンジニアの基本的な姿勢だ。

「従来は、オブジェクト指向開発を前面に押し出してきましたが、現在それは当たり前の技術となっています(もしくは「コモディティ化しています」で)。現在ではこれに加え、ジェネリック・プログラミング、関数型プログラミングなど、問題に応じて適切な選択、組み合わせが重要になってきています。

プログラミング言語をとっても、本来、プログラミング言語は寿命が長いにも関わらず、SwiftやGoなど新しい言語も次々に生まれている。それはなぜかをぜひ考えてほしい。いまの普通がこれから先も普通であり続けることはない。現在の技術に留まって思考停止してしまうことは、エンジニアが最も避けなければならないことです」

システムが動かなくなったとき、どこまでもその原因を突き詰める“しつこさ”も不可欠だ。

「昨日までは動いていた、何も変えていないのに、今日は動かない。エンジニアであるなら、なぜだかわからないと思考停止するのではなく、今まで動いていたのはたまたまであって、今日のエラーは根本的な問題が現れた状態だと考えるべきなのです。そう考えて原因をどこまでも追いかける姿勢が欠かせません」

近藤氏なら、そんなときは呼び出されているライブラリのソースコードを追いかけ、場合によってはライブラリの作者に問い合わせみる。それでも解決しない場合は、TCP/IPのパケットを分析することもある。自分でもデバッグ大好きというだけあって、デバッグは執拗なまでに徹底的に解析する。

「その結果、実は原因はコンパイラのバグだったなんてこともありました。いかに天才のようなプログラマが書いたコンパイラだって、バグはありますからね」

2009年に自腹を切って米国で開かれていたISO標準化委員会に出席したとき、C++の開発者ビャーネ・ストラウストラップ博士と会ったときのエピソードを、近藤氏はこう語る。

「当時私は、彼の『ストラウストラップのプログラミング入門』という書籍の日本語訳の査読を努めていたんですが、そのことを話したらすごく喜んでくれました。世界のトップクラスのプログラマも、けっして雲の上の存在ではなく、そんなに遠いところにいるわけではない。自分たちも同じプログラマ。英語ができなくてもコードで会話できる存在だと、そのとき思いました」

同じ技術を愛する仲間、コミュニティの一員として迎えられたことは、その後の近藤氏のエンジニアとしての成長の大きな原動力になった。

そんな体験を若いエンジニアに伝え、そのモチベーションを引き上げる役割を、今、近藤氏はオージス総研で果たしている。

(執筆:広重隆樹 撮影:刑部友康)

【PR】オージス総研 エンジニア求人情報

オージス総研が現在募集中のエンジニア求人情報はこちらからご覧ください。

技術部

(東京)IoTアーキテクト

ソリューション開発本部

(東京)エンタープライズソリューション開発/SE・PM・ITアーキテクト
(東京・大阪)ERPアプリケーション/コンサルタント(SAP)
(愛知)中部日本顧客向けソリューション開発/ITアーキテクト
(愛知)中部日本顧客向けソリューション開発/プロジェクトリーダー
(愛知)中部日本顧客向けソリューション開発/SE
(大阪)エネルギーソリューション開発/PL・SE
(大阪)エネルギーソリューション開発(GIS)/PM・SE
(大阪)エンタープライズソリューション開発/プロジェクトリーダー
(大阪・愛知・東京)組込み・制御系コンサルタント
(大阪)エネルギーソリューション開発/ITアーキテクト
(東京)ITコンサルタント
(大阪)エネルギーソリューション開発/SE(IoT)
(大阪)データサイエンティスト
(大阪)BIコンサルタント
(大阪)データ分析戦略コンサルタント

プラットフォームサービス本部

(東京・大阪)基盤構築技術者
(大阪)インフラエンジニア<大阪ガスグループ向け>
(大阪)ITプラットフォーム技術者<大阪ガスグループ向け>
(大阪)サービス運用エンジニア〔EDI分野〕
(東京)クラウド基盤構築技術者

サービス事業本部

(東京)クラウドインテグレーションサービス/WEBエンジニア(サーバーサイド)
(東京・大阪)テミストラクトソリューション/SE
(東京)セキュア開発エンジニア
(東京)ソフトウェア製品担当エンジニア

CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。