IPA


IPAトップ





平成15年度未踏ソフトウェア創造事業  採択案件評価書


 



1.担当PM


 伊知地 宏  (ラムダ数学教育研究所 代表)



2.採択者氏名


 代表者

川道 亮治(株式会社アルゴクラフト)

共同開発者

佐藤 誠(日本技術貿易株式会社 情報サービス部情報サービス課IPソリューション グループ 副主査)



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


 株式会社アルゴクラフト



4.委託金支払額


 8,000,000円



5.テーマ名


 XMLプログラミング言語Xi(ザイ)の完全な仕様策定とその実装



6.関連Webサイト


 http://www.baykit.org/~makotos/cgi-bin/fish.cgi?Spec%3aXi&l=jp



7.プロジェクト概要


 本プロジェクトは,XML形式の文法を持つXML用プログラミング言語Xiの完全な仕様を作成し,その言語処理系を開発することを目的としている.プログラミング言語Xiはすでに存在するが,関数型言語であるのにその仕様には一貫性がなく不完全な部分が存在する.関数型言語として完成されたものにすることが目標である.



8.採択理由


XMLのプログラミングをXMLに似たスタイルで書けるプログラミング言語を開発することは非常に意義があり、新規性もあります。しかし、プログラミング言語の設計はセンスの問題であり、時間や人をかければ完全になるというものではありません。プログラミング言語Xiの仕様に問題があるということは、設計者のセンスに問題があることも考えられ、プロジェクトが進展しない可能性も十分に考えられます。それでも、本テーマには十分に実用的な価値を見出せ、完成したときの影響力も大きいものがありますので、来年2月までに完成することを期待もこめて採択とします。




9.開発目標


 XMLプログラミング言語Xiの仕様において大きな問題があるのが,関数定義と関数呼び出しである.関数定義,関数呼び出しに関して関数型言語としての明確な意味論を与え,その言語仕様をおかしくないものにすることが目標である.
 構文定義について仕様から外すのか,それとも関数型言語として不整合を起こさない仕様にするのか,これを決定することも目標である.
 また,言語仕様が決定した後に,その言語処理系の実装方法を検討し,言語処理系を開発することが最終目標である.




10.進捗概要


 Xiにおける関数定義の仕様検討にPMの予想以上に苦しんだようで,言語仕様,そしてその実装方法が二転三転したため,言語処理系の開発が間に合うのか心配したが,最後の1ヶ月でなんとか間に合わせ,サンプルとなる言語処理系がなんとか開発された.



11.成果


 関数の記述方法が定義され,構文定義は仕様から外すことが検討の結果の成果として得られた.また,関数型言語の機能を持つXiの処理系が開発された.
 2つの引数を加算する関数の定義は,以下のように書かれる.

 <cr:lambda>
  <cr:args>
   <cr:arg>x</cr:arg>
   <cr:arg>y</cr:arg>
  </cr:args>
  <add>
   <cr:name>x</cr:name>
   <cr:name>y</cr:name>
  </add>
 </cr:lambda>

関数定義はラムダ式に類似した表現で書くようになっている.また拡張構文では,例えば2と3の乗算を

  <xi:value-of select=”2*3” xmlns:xi=”XiStd”>

のように書くことも出来る.
 なお,Xiの仕様書は,
http://www.baykit.org/~makotos/cgi-bin/fish.cgi?Spec%3aXi&l=jp
にある.
 XiのコンパイラはXiの関数などを一度中間形式に落とし,そこからScheme言語インタプリタで実行できる形式に落とすという2段階でコンパイルを行う方式を取っている.





12.プロジェクト評価


 Xiでの関数の定義は一応出来たが,その形式は実行をするScheme言語と言うか,関数の理論であるラムダ計算に縛られたものになっている.Schemeや同種の言語Lispで書くプログラムで,ラムダ形式で関数を書くことはほとんどないと言えるので,なぜこのような形式にこだわったのかかなり疑問が残る.Lispだと通常は
  (defun square (x) (* x x))
のように書くのだが,Xiではコンパイラ作成を楽にするためにラムダ式の形式にしたのだろうか.それとも言語モデルの教科書に素直に従ったのだろうか.ラムダ式が悪いわけではないが,通常はコンパイルして関数をラムダ表現にすることが多く,ラムダ式のままでは記述が煩雑なので通常のユーザがちゃんと理解できるのか非常に疑問が残る.
 上記の段落を書いた後に作成者に質問してみたところ,ラムダ式に固執したのは,拡張構文で書かれたプログラムの落とし先,そしてX-Pathの対応などによることが今になってわかった.ユーザには拡張構文でプログラムを書けるように環境を整備していくつもりであるようだ.そうであれば,開発期間中に拡張構文で書けるプログラムについてももっと十分に検討してもらいたかったと思う.
 また,プログラムと処理するデータの記述を分離することで,プログラミングの見通しを良くし,プログラミング言語もそれに対応する機能を持って発展してきたが,XiではXMLデータの中にプログラムを埋め込む方式になっている.これが果たしてユーザにとって見通しの良いことなのかということもかなり疑問に感じる.他に良い方法があるのではないかと思うのだが,この点についてはPMは解答を持っていない.

・未踏性: B
 Xiに関数型言語機能を入れようということであり,XMLを対象とした関数型言語 (例えばXDuce,CDuce),関数型言語でXMLを処理する研究も行われているので,特に未踏性があるようには思えない.唯一,どういう風にXMLの形式で関数を書けるかというところだけが少し未踏か?
・先進性: B-
 開発成果では既存の技術の焼き直しであり,技術的な先進性はほとんど認められない.
・実用性: B
 作成された関数の言語仕様と処理系を,通常のXMLプログラマが使えるのかというと少々疑問が残る.形式的な問題に走り,ユーザを置き忘れているように感じる.拡張構文で書けるプログラムについて,もっとしっかり検討が行われれば,実用性の評価は高くなったのだが.
・社会への影響: A-
 XML業界において賛か否かの議論の対象となりえる.実際に複数の著名なXML研究者から批判的意見があったので業界に対する影響力はあったと判断する.
(A: 高い,B: 並,C: 低い)



13.今後の課題


 まずは,今回作成した関数定義の方法がXiのユーザに受け入れられるのかをチェックすることが必要であろう.もしXMLプログラマが使いにくいと言ったときには,言語仕様を勇気を持って変更することが重要だと思う.また,もし現在の形式が受け入れられたときには,関数のライブラリを充実させて,プログラムの多くが拡張構文のような形式で書けるようにすることも,ユーザを増やすために重要だと思う.
 そして,拡張構文の文法や関数ライブラリを充実させることが今後の最大の課題であろう.Xiに多くのユーザがつくかどうかは,この点にかかっているように思う.また,何がポイントなのかを的確に伝え,説明する努力も必要であろう.重要なポイントが明らかにならないために誤解されることが多かったので,ソフトウェアの開発とは直接関係ないが,成果を広めていくためにも説明の仕方をしっかり検討することは課題である.

  ページトップへ   






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