IPA


開発成果一覧へ

 



2005年度下期 未踏ソフトウェア創造事業  採択案件評価書


 




1.担当PM

   並木 美太郎 (東京農工大学 大学院共生科学技術研究部 助教授)




2.採択者氏名

開発代表者

 服部 健太 (株式会社システム計画研究所 技術本部 第5グループ)

共同開発者

 なし




3.プロジェクト管理組織


  株式会社システム計画研究所




4.委託金支払額


  6,000,000




5.テーマ名


  Preccs:実用的な通信プロトコルコンパイラ




6.関連Webサイト


  http://preccs.isp.jp/




7.テーマ概要


 我々は通信プロトコルのための仕様記述言語Preccsを提案し,Preccsによる記述からC言語のコードを生成するための通信プロトコルコンパイラの開発を行っている.実際に,インターネット上で広く用いられているプロトコルの一つであるDHCPPreccsによって実装し評価を行った結果,C言語と比較して約1/3の記述量,かつ実行時間のオーバヘッドは約2割程度に収まるという結果を得た.しかしながら,現行のPreccsはファーストバージョンであり,記述性や実行時性能など,改善の余地はたくさんある.
 そこで,Preccsをより実用的に,広く利用可能なものとするために,本年度は主として以下の項目の開発を行う.
(1)
記述性の向上
 ライブラリやsyntax sugarの導入,構文の見直しなどを行い,記述性のさらなる向上を目指す.
(2)
実行時オーバーヘッドの削減
 生成コードの最適化を行うことによって,実行時のオーバーヘッドを削減する.
(3)
通信プロトコルの実装・評価
 様々な通信プロトコルの実装と評価を行うことにより,Preccsの有効性を検証する.また,これらの結果を(1)(2)の開発にフィードバックする.
(4)
その他の機能強化
 Preccsのソースコードレベルでのエラーチェック機能やモジュール機構の検討など,より実用的なソフトウェアへと発展させるための機能の検討と実装を行う.




8.採択理由


 ネットワーク向けのソフトウェア開発のために、応用層のプロトコル記述からプログラムを自動生成する仕様記述言語とそのトランスレータに関する提案である。
 応用プログラムにおける通信部分のプログラム開発は、煩雑であるが、既存の仕様記述言語と違い応用層のプログラム開発を容易にする方向性を評価する。すでにDHCPなどによる検証を行っているが、さらに他の応用プログラムに対する適用が期待できる。有用性、未踏性も認められることから採択とする。




9.開発目標


近年、インタネットでは様々な種類のサービスが提供されており、その基盤となる通信プロトコルは複雑かつ多様なものとなっている。一般的に通信プロトコルの実装は、プログラマがプロトコルの仕様を理解・解釈し、それに従ってC言語によってコーディングを行うという退屈な作業である。通信プロトコルは厳密で正しい実装が要求されるが、その仕様は自然言語で記述されており、その曖昧さから時として実装系による差異が生じる。また、コーディングはC言語のような命令型言語を用いることがほとんどであり、プログラムは複雑でわかりにくく、バグを生じやすい。

このような背景から、開発者は通信プロトコルのための直感的でわかりやすい仕様記述言語Preccsを提案し、Preccsによる仕様記述からC言語のプログラムを自動的に生成する通信プロトコルコンパイラを開発している。Preccs2004年度の未踏ソフトウェア創造事業の支援によって開発が進められ、インターネット上で広く用いられているプロトコルの一つであるDHCPを、実際にPreccsによって実装し評価を行った。その結果、C言語と比較して約1/3の記述量、かつ実行時間のオーバヘッドは約2割程度に収まるという成果を得た。しかし、2004年度に開発したPreccsはファーストバージョンであり、記述性や実行時性能など、改善の余地が数多くあった

そこで、Preccsをより実用的なものとし、広く利用可能なものとするために、機能追加や性能の改善を行う。具体的には、言語仕様を拡張し、チャネルの送受信機能、モジュール機構等を追加することで、通信プロトコルの記述性を改善する。また、処理性能の向上を目的として、パターンマッチのコード生成方式を見直し、不必要なバックトラッキングを削除するなどの最適化を図る。最終的には、Preccsの実用的な適用事例としてSIPプロトコルスタックを実装し、デモプログラムを作成することとした

 




10.進捗概要


 本開発では図8の言語仕様およびソフトウェアを開発した。本質的にはPreccsの言語仕様、開発としてはコンパイラとなっており、記述性の向上と高速化がポイントである。進捗は、順調に進み、途中論文執筆、学会発表などを行った。

図8 Precssコンパイラの構成

 




11.成果


本開発により、当初目標としていた次の問題を解決することができた。

記述性の向上記述性の向上を狙って、ライブラリやsyntax sugarの導入、構文の全面的見直しなどを行った。また、サーバソケットが扱えるように、高階チャネルをサポートし、チャネルの送受信を行えるようにした。結果として、HTTPサーバのような典型的なサーバアプリケーションがPreccsを用いて簡単に記述できるようになった。

最適化処理の実装通信プロトコルの処理速度の向上を狙って、いくつかの最適化処理を導入した。まず、コンパイラの中間コード整理し、2レベルの中間コードを新たに導入した。各レベルで、それぞれの抽象度に見合った最適化処理を行うようにした。また、正規表現パターンマッチにおけるバックトラックのオーバヘッドをなくすために、決定性オートマトンによる処理を実装した。その他、実行時のデータ表現についても工夫を行った。これらの結果、従来と比較して518倍程度の大幅な速度向上が得られた。

通信プロトコルの実装・評価Preccsの有効性を検証するために、いくつかの通信プロトコルの実装と評価を行った。簡易HTTPサーバを実装して、性能評価を行ったところ、Apacheと同等以上の処理性能が得られた。また、デモ用のアプリケーションとしてSIP+RTPプロトコルのサブセットを用いた簡易VoIPシステムをPreccsで実装した。これはCODECを含めてわずか600行程度で記述できた。

その他の機能強化その他、ソケット関連の典型的な処理などは、ライブラリとして切り出した。また、より強固なエラーチェック機能を実装した。これらの機能によって、より実用的なソフトウェアを容易に実装できるようになった。

これらの成果を次の学会において発表した。

[1] 服部健太:Preccs:インターネットのための通信プロトコル記述言語,第47回プログラミング・シンポジウム,2006

[2] 服部健太,平木敬:通信プロトコルコンパイラPreccsにおける正規表現パターンマッチングの高速化,情報処理学会 プログラミング研究会(SWoPP2006),2006

また、旧版http://preccs.isp.jp/ にて公開中であるが、最新版を近日中に公開予定である。

 




12.プロジェクト評価


 ネットワーク向けのソフトウェア開発のために、応用層のプロトコル記述からプログラムを自動生成する仕様記述言語とその翻訳機に関する提案である。

 応用プログラムにおける通信部分のプログラム開発は、煩雑であるが、既存の仕様記述言語と違い応用層のプログラム開発を容易にする方向性を評価する。すでにDHCPなどによる検証を行っていたが、さらに他の応用プログラムに対する適用が期待できる。有用性、未踏性も認められることから採択した。

 Precssの記述性について進展が認められたこと、決定性オートマトンと用いた実装により大幅な性能向上を達成したこと、また、各種エラー処理を強化するなど実用レベルのネットワークソフトウェアを作成できる能力を有する水準に達している。理論的側面と実践的側面の両面で有用なソフトウェアが開発されたと考える。

 今後は、開発者が所属する会社において実践的側面を、また、学位論文においてはその理論的側面を整備し、実用水準において有用性を検証することを期待すると同時に、この成果を公開し、利用者を増やすことを心がけてほしい。

 




13.今後の課題


現在の実装では,パイプを用いた通信や外部プロセスの起動といった機能には対応していない。これら外部プログラムに対する配慮は必要である。また、Webサイトを整備するなど、利用者が増える成果公開に努めてほしい。

 



  ページトップへ   

 

 




  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004