KONOE第一回ワークショップでの議論の内容(案)
1997年5月16-17日に開催されるKONOE第一回ワークショップで議論する
内容は次のとおりです。最初に計画の概要を議論し、続いてその
進め方を考えます。具体的にはクラスライブラリの準備が最も大きな
作業になるので、それに続いてクラスライブラリについて議論します。
二日めの作業は具体的にクラス定義を実際にやってみます。メソッドの
準備はそれらのクラス定義に基づいてそれぞれの分担で夏にかけて
行なわれ、次のワークショップで突き合わせることになります。
まず、KONOEの目標とするところを明確にします。
1.1.全体構想
KONOEの全体構想として、
- データ収集・解析を行なうソフトウエアパッケージであること。
- オブジェクト指向技術に基づいたソフトウエアであること。
- ネットワーク分散環境を前提に設計されたソフトウエアであること。
- プラットフォームに依存しないシステムであること。
- WWWと密接に関係したシステムであること。
などを強調しています。その上で、
- データや制御の流れなどを階層としてあらわすモデル。
- ノードとリンクによるネットワーク分散アーキテクチャモデル。
- オブジェクト通信によるクライアント・サーバ型並列処理モデル。
- JavaアプレットをフロントエンドとするGUIモデル。
といったモデルでシステムを設計します。この中では、オブジェクト通信を
含むオブジェクト入出力が非常に重要な役割を果たします。それらを含め
- サーバ側のソフトウエアはC++を用いて記述します。
- クライアント(ユーザーインターフェース)はJavaを用いて記述します。
- それぞれのアプリケーションは単一の言語で記述されます。
こういった実装方法の妥当性について検討します。
1.2.C++の検討
基本的にKONOEはC++で記述されるものとします。Javaによる部分はユーザ
インターフェースに限定します。それにより、Javaのアプレットをフロント
エンドに利用できるようになります。
C++自身はかなり安定してきています。g++などを含め、多くの処理系が
様々な計算機に対して提供されています。
1.3.Javaの検討
Javaアプレットとしてユーザインターフェースのフロントエンドを実装
します。サーバ側の機能をJavaアプリケーションとして記述することも
可能ですが、システムサービスを実装するためにはネーティブの呼出しが
必要であり、その結果CやC++が必要になります。そのため、できるだけ
単純にシステムを構成するためにもC++を選ぶことにします。
Javaアプレットとしてフロントエンドを実装するのは、それがWWWブラウザを
通して起動可能であり、また、KONOEの様々な文書や情報サービスがWWWを
通して提供されることから、出来るだけユーザフレンドリーな環境を実現
するためにとられた方法です。
一方で、KEK安さん、山形大坂本さんらのJavaによるDAQのアクティビティも
あります。そこではnativeインターフェースを用いて全体をJavaで構成する
手法が取られています。それとの関係を考えておく必要もあると思われます。
1.4.プラットフォームの選択
開発の対象とするプラットフォームについて考えておく必要があります。
言語処理系を含むソフトウエア、インターフェースを含むハードウエアについて
サーバ側とクライアント側について検討する必要があります。
まず、ソフトウエアですが、基本的にUNIXを考えています。ハードウエアと
関連しますが、実際に利用可能ないろいろなUNIX(および互換システム)を
どの程度の範囲までカバーするか。特に問題になるのはシステムサービスの
互換性ですが、それについてはいくつくらいのバージョンを用意する必要が
あるのかということまで。あと、POSIXをどう考えるか。Windows95やNTは
当面はクライアントに限定してよいか。
ハードウエアについてはDAQソースとなるVMEインターフェース関係のものを
含め、業界で多く使われているいろいろなものをカバーする必要があります。
PCについてはUNIX系のOSのものを対象とします。
2.1.年次計画
目標としてはこの一年でなんらかの動く形のものを、オブジェクト指向技術の
特徴であるRapid Prototypingによって実現したいと考えています。
- 今回の
ワークショップで目標を定めて、仕事を分担して、まずクラスライブラリの
構築に着手します。
- ある程度形が出来たところで、数日間の合宿形式でそれを
まとめて枠組みとして動くものを作ってみます。クラス定義などの整合性を
確認します。夏休みのどこかに設定したいと考えています。つぎにそれを
もちかえって内容を満たしていきます。
- 秋の終わりぐらいに理化学研究所で
DAQワークショップをやってくれるはずですので、そこでアルファリリースが
できればよいかと思っています。実際にそれぞれの参加者は自分の実験に
それを応用して、性能評価や調整をおこないます。
- 今年度末にベータリリースを行なうおひろめのワークショップを設定し、
次年度以降の計画などについてそこで検討します。
具体的な日程についてつめられるところは議論したいと考えています。
2.2.人員配置
基本的にクラスライブラリ構築がもっとも大きな仕事になるわけで、それを
4つのパッケージに分割して準備します。
- システム階層
- データ収集部分
- データ解析部分
- ユーザインターフェース部分
パッケージはいくつものカテゴリーから構成されます。参加者にはこの4つの
ワークグループにはいっていただいて、それぞれ議論をしながらすすめて
いただきたいと考えています。
2.3.産物の公開
アルファリリースでは、クラス定義など仕様部分での変更がありえることを
前提に、試用をお願いします。ベータリリースでは仕様については確定し、
実装の修正のためのバグレポートをお願いします。公式版リリースはその
あと、可能なバグ修正と、ドキュメントの整備のうえでおこなうことになる
でしょう。
イメージの公開や、インストールサポートなどkonoeサーバを一台用意し、
ftpやhttpによって提供します。そのための計算機について、KEKの資源を
利用させていただくことについて検討する必要があります。
2.4.他のプロジェクトとの関係
一つには、KONOEではすべてのクラスライブラリを自前で用意し、他の
クラスライブラリなどは(Java標準を除いて)利用しないという立場を
とっています。この立場の妥当性について確認が必要です。
- すべてが自前なので、コンパイラさえあれば任意の計算機に移植が可能です。
特に市販のクラスライブラリなどが提供されない、あるいはその信頼性が低い
システムについても対象にできることになります。
- すべてのコードを制御下におけるので、特に性能にかかわる部分の実装
においても自由がききます。
- もちろんあらゆるコードを自分で管理する必要があるので、その労力は
よけいにかかります。
他のオブジェクト指向技術を用いたアクティビティとの関係についても
考える必要があります。それらが用意したクラスライブラリとの関係に
ついて。
3.1.クラスカテゴリー
KONOEではクラスを4つのパッケージに分けて開発します。その分類の
方法と、それぞれのパッケージが含むべきクラスカテゴリー、そして
それぞれのカテゴリーに含まれるべきクラスを議論していく必要が
あります。これについては、パッケージの分類を確認したあと、それぞれ
パッケージ毎のワークグループに別れて作業を行ないます。
クラスカテゴリーの中では、オブジェクトパーシステンシーをどのように
扱うかがもっとも重要な議論になります。ネットワーク分散であることから
必然的に交換されるオブジェクトはパーシステントであることが要求されます。
これをどのように実装するかを考える必要があります。また、これは
システム全体で使われるフィーチャーなので、よく考えて設計される
必要があります。
3.2.コンベンション
開発にあたって、コンベンションを考える必要があります。これには
- ファイル名に関するもの。ソース、ヘッダなど。
- ファイルの含む内容の単位。一クラス一ファイルとするか。
- プリミティブな型の名前。intではなくKIntなどとするか。
- クラス名、メンバー名、変数名などの規則。Konoeで始めるなど。
- makeのための環境変数などの取り決め。デバッグのフラッグなど。
- 標準出力などへの書き出し。
など、色々考えられると思います。これまでの例えばGENAT4などの経験を
聞いてみたいです。
3.3.ドキュメンテーション
クラスを定義していく場合、それらの説明文を同時に用意していくことを
追及します。どちらかというと説明文を先に用意し、それにしたがって
メソッドを記述していくのかも知れません。
標準的な様式を考えたいと思います。基本的にHTMLで記述されることに
なります。例えばJavaのAPIの解説のように。
Rational Roseのようなツールを用いてクラスの間の関係などをグラフィカルに
表示することも考えたほうがよいかと思われます。ツールの利用について議論
しましょう。
3.4.作業分担
今回のワークショップでは実際にパッケージ単位に別れてクラス定義の作業を
行ないたいと考えています。それぞれのワークグループにシニアスタッフと
若いメンバーを割り当てて行きます。
クラスライブラリーパッケージ毎に別れて作業します。
- クラスライブラリパッケージのカバーする範囲の確認。
- パッケージに属するクラスカテゴリーの検討。
- カテゴリーに属するクラスの検討。
- クラス定義ファイル(ヘッダーファイル)の用意。
- クラスのテストの方法の議論。
といった作業を行ないます。
4.1.システム階層
オブジェクト交換、オブジェクト入出力をどのように扱うかが一番重要な問題に
なると思われます。
4.2.データ収集部
仮想的なデータ読みだしをどのように実現するか。実際のどういったハードウエアに
対応していくかなど議論する必要があります。
4.3.データ解析部
標準的な機能としてどこまで用意をするか。GUIとの関係をどうするか。
4.4.ユーザインターフェース部
GUIとサーバとの関係をどのような形で実現するか。オブジェクト交換を
JavaとC++でどのようにスムーズに開発するか。ネーティブをどこまで
採用するか。
5.1.作業報告
クラスライブラリーパッケージワークグループの報告を聞きます。
5.2.次回ワークショップまでの課題
次回ワークショップでは、KONOEのいくつかのプロセスを動かすことを
目標に、クラスライブラリーを書きためていくことになります。
- それぞれのパッケージの進行状況の報告。
- メソッドの記述の上で発生する問題に関する議論。
- 内部でのクラスの公開。
などを継続して行ない、夏休みのどこかの1週に合宿形式でワークショップを
開きたいと考えています。

[activity/outline_may97.html] Last Modified : 15-May-1997.
KONOEコラボレーション
konoe-req@konoe.kek.jp