プロジェクトのあらまし
もうだいぶ昔のことですが、「次世代ホームネットワーク」の公開実験というもので成果紹介をした新聞記事が出てきました。
私が参画したプロジェクトは、災害・停電時にもホームネットワーク機器の電源と通信の確保を目的としたものでした。実際の技術内容はPoE(Power over Ethernet)とLLDP(Link Layer Discovery Protocol)を用いています。
上記プロジェクトはNICTが中心となった国家プロジェクトに応募しているもので、当初の計画では、デモを行うためにPoE+LLDPのボードを作るというものでした。ところが2009年は民主党が政権を取り、国家プロジェクトを含めて予算が大幅に見直された(減らされた)ため、当初計画通りに実施ができなくなりました。専用ボードを作るのは予算がかかるからです。
そこで、私が「PCで摸擬したら良いのでは」とアイディアを出して、それが採用されてしまいました。簡単にいうと、今でいうIoT機器をPCで摸擬しちゃえというものです。実際には、ノートPCにLinuxを入れて、LLDPフレームを吐き出し続けさせるものです。LLDPで送信された情報の内容はL2スイッチで監視し、それを別のノートPCで表示させました。こんな感じで、L2スイッチがホームゲートウェイの摸擬をして、ホームネットワーク機器からのLLDP情報をモニターするという、なんちゃってホームネットワークを構築して公開実験をしました。ただし、ノートPCなのでPoEでの電源供給はしません(確かそういう設定だったはず)。
LinuxとRubyでデモ実機を実現
LLDPを吐くプログラムはRubyで書きました。電源管理もするので、acpiのツールでサスペンド、レジュームをさせたと記憶しています。ノートPC数台にはDebian Linuxをインストールして、init.dにLLDPをPC起動時にサービス開始するようにしました。
L2スイッチでのLLDPフレームの情報の吸い上げはPerlで書いたように思います。L2スイッチ関係は私も少しだけ手伝いましたが、別の人が書きました。L2スイッチのモニターPCはWindowsだったように思います。httpサーバーを立ち上げ、cgiとJavaScriptで定期的に画面を自動更新しながら監視するような仕組みだったと記憶しています。
LLDPとL2スイッチでのデバッグはもちろんWiresharkを使っていました。1-2ヶ月で仕上げたと思います。
最終的にデモも上手く動き、会社でも社長賞を頂き、とても良い思い出です。ただ今思えば、こういう内製の仕事の仕方はイレギュラーなんだと思います。私は当時研究所から兼務してやってきたので良く分かっていなかっただけですが、普通は外部に委託してやってもらう内容だと今は思います。委託していると、1-2ヶ月というスピードでは出来なかったと思いますが…。
L2スイッチのプログラミングをした人も、自分でCGIなどを書いていたのでこのプロジェクトは上手くいったと思います。普段の仕事ではそんなことをしていなかったので、多分以前はサンデープログラマーだったのではと思います。日本のエンジニアの中には、そういう人が結構いるのではないかと思います。そういう人的な資産・財産を活かす方法を真面目に考えても良いように思いますね。
良い経験をさせてもらった
私の場合は、趣味で使っていたLinuxのスキルがかなり活用されて、Linuxを仕事で前面に使える大義名分ができてそれは面白かったですね。Rubyは私の場合はデータ整形や数値計算ばかりだったのですが、ネットワーク・プログラミングにも使えたのがラッキーでした。とは言えネットワーク関係は奥が深くて、勉強しながら悪戦苦闘していました。
私はもともと半導体・材料の分野で仕事をしていましたが、社内での半導体事業の切り離しに伴いテーマを変更を命ぜられました。それで当時はエネルギー関係のテーマ開拓が主な仕事でした。その一環でネットワーク関係の子会社に兼務をしたのです。兼務をして半年ほどでこんな成果が出せて幸運です。今ならRaspberry Piでやるでしょうね。
下の写真の坊主頭の後ろ姿が私です。