日本ソフトウェア科学会第
21
回大会(2004
年度)論文集1
オブジェクト指向に基づくドキュメント創成プログラム — 基本概念
Principles of a Document Authoring Program based on Object-oriented Concepts
林 恒俊†
Hayashi, Tsunetoshi
†立命館大学情報理工学部
College of Information Engineering and Science, Ritsumeikan University
HyperPage
は、かってのHyperCard
を近代化した、ユーザ指向オーサリングプログラムである。HyperPage
文書はページの集合であり、ページは一定順に並べられる。いくつかのページをpage class
にまとめられ る。page class
は原型ページを継承してさらに機能を追加することができる。page class
から個別のデータ を格納したpage instance
を生成する。ページには、frame
、pane
、control
等の要素オブジェクトが配置さ れる。これらのページの定義はXML
によって記述される。本報告ではこのHyperPage
の基本概念につい て述べる。1
はじめに1.1
動機かって、
Macintosh
にはパーソナルコンピュータに ふさわしい“Development Tool for the Rest of Us”
として、
HyperCard
が開発され広く普及していた。HyperCard
では、プログラミングや計算機科学を専門に学習した経験がなくても、それなりに様々なメ ディアを取り扱うことができて、有用なスタックを 作成することが可能であった。実際に、広範なスタッ クが作成されて、広く公開されていた。
その後、ソフト会社が主導権を持つようになった ことや、メディアの高度に複雑化したことなどが相 まって、アマチュアのプログラミングは昔ほど盛ん でないように見受けられる。
MS Office
に代表される プロダクティビティプログラムを利用すれば、似た ような機能を実現することも可能ではあるが、実際 には果実が広く公開されている訳でもない。ここでは、
HyperCard
の基本概念をもとに、最近 の思想を取り入れて発展させた文書創成プログラムHyperPage
を提案し、“Rest of Us”
のいわゆる情報 発信への取組みを推進することを考えた。各自の課 題を解決するために最も適した専用のソリューショ ンを作成するツールとして利用できるものを考えた。さらに、作成された
HyperPage
文書はオンライン、オフラインの両方のプレゼンテーションなどでも利 用可能である。
オンラインであれば、
Web
ページでもよいが、オ フラインのブラウザのみでは高度Web
アプリケーションの利用は困難である。
本発表では、この
HyperPage
プログラムの基本的 なアイデアとその実装方針について報告する。なお、これは第一報であり、今後より優れたアイデアや設 計が見つかれば、進んで導入するつもりである。
1.2
概略HyperPage
プログラムの設計の目標は、•
外部からみた使い勝手はHyperCard
風•
内部では、現代的プログラミング思想の採用、と くにオブジェクト指向の概念を取り入れる•
実装はできるだけ一般的におこない、プラット ホームに依存しないことなどである。
HyperCard
では、大きさの一定したカードに、ビッ トマップや固定テキスト、編集可能テキスト、ナビ ゲーション用ボタンなどの要素を配置し、それぞれ にスクリプトを与えることによって、動作を指定す ることができるようになっている。また、カードの 集まりのスタックには背景カードが用意されて、ス タック全体に共通に機能する。HyperPage
プログラムでは、HyperPage
文書をHyperPage
のページの集まりとし、各ページに様々なオブジェクトを配置する点では
HyperCard
と同様 である。ただし、背景カードに相当するものは用意 されておらず、クラスの継承によって類似機能を実 現する。日本ソフトウェア科学会第
21
回大会(2004
年度)論文集2
文書、ページ、ページに配置される要素などをす べてクラスとして定義する。個別の文書、ページ、要 素はそれぞれ各クラスのインスタンスであり、具体 的に
HyperPage
プログラムによって表示することが 可能である。各クラスはルートになるクラスから要 素やスクリプトを追加して継承することによりより 高度な機能を持った文書・ページを作成することが 可能である。各文書、ページ、要素にはスクリプトをメソッド として付加することができる。基本的なメソッドは、
各文書、ページ、要素に発生するイベントに対応して いるが、ユーザ定義のメソッドも付加することができ る。スクリプトは
HyperTalk
あるいはAppleScript
などの例に準じてテキスト型プログラミング言語で 記述される予定であるが、データフロー型ビジュア ルプログラミング言語の採用も考慮中である。2 HyperPage
の基本概念2.1
基本概念HyperPage
の文書の基本概念は次のようになっている。
• HyperPage
文書はページの集合であり、ページ は一定の順に並べられる•
ページに含まれる特定の属性(
インスタンス変 数)
の値か、次ページへのリンクがページ順を指 定する•
ページには上記の属性の他に、ページの大きさ や位置を代表する属性や主となるframe
要素を 定義する属性をもっている• frame
要素は長方形の領域であり、その中に他の
frame
、pane
、control
要素を配置することが できる• frame
要素は入れ子にすることができる• pane
要素にはstatic text
、editable text
、static pict
、paintable pict
、static graph
、drawable graph
、movie
などが考えられる• pane
要素の表示編集にはplug in
アーキテクチャ を採用する• control
要素にはbutton
、radio button
、check box
、popup menu
などがあるblank
chap head
1
2
body
ページ クラス階層ページ インスタンス
図
1:
ページの階層構造• HyperPage
文書、ページ、すべての要素には発 生したイベントを処理するためにスクリプト(
メ ソッド)
を付加することができる•
スクリプトにより、メニューバーにメニューを 表示することも可能である•
これらの文書、ページ、要素の表示やイベント メッセージの受渡しはHyperPage
実行プログラ ムがおこなう•
ページクラス、個別ページの編集も実行プログ ラムの仕事であるそして、これらの文書、ページ、要素について、作成 を容易に行うためオブジェクト指向概念を導入する。
2.2
オブジェクト指向の導入HyperPage
のページはページの内容の階層構造に従っ て、ページクラスの階層構造を構成している。ペー ジ内容の形式はページクラスによって定義され、各 ページの内容はそれぞれのページが共通に持ってい る要素の値によって決定される。これは、各ページ日本ソフトウェア科学会第
21
回大会(2004
年度)論文集3
Object
Document
Page
Frame
Pane
Control
Text Pict
Button
Check box
図
2:
オブジェクトの階層構造がページクラスのインスタンスになっていると考え られる。
ページクラスのルートクラスは白紙のページであ り、それを継承してヘディングやフーティングを属 性として追加することで、一般のページを記述する ことが可能である。
ルートクラスで次ページや前ページを定義してあ れば、すべてのページでページ順が定義できること になる。ルートクラスで、ページ捲り操作ををイベン トハンドラメソッドで与えてあれば、すべてのペー ジでクリックするとページを捲ることができるよう になる。
したがって、このようなクラス階層の導入は図
1
のようにきわめて自然な考え方であるということが できる。2.3
オブジェクトの階層クラス階層の考え方は、ページの間だけではなく他 のすべての要素の間に当てはめることが可能である。
図
2
に示すようにルートオブジェクトをすべての先祖 とし、それに属性変数(
ページ要素)
とメソッド(
イベ ントハンドラ)
を追加することによりHyperPage
を 構成するすべての要素の間に階層構造を定義できる。ルートオブジェクトはオブジェクトの生成と消滅、
保存と再格納を実装し、他のオブジェクトはこれを 相続して実装すればよい。
2.4
メソッド—
メッセージハンドラこのようなオブジェクトのクラスには、ユーザの 操作により発生したイベントの処理を行うメッセー ジハンドラをクラスのメソッドとして定義すること ができる。これらのメソッドもクラスが継承される ときに引き継がれる。
メソッドによって処理されるイベントは次のよう なものが考えられる。
• mouseDown
• mouseUP
• keyDown
• keyUp
• windowOpen
• windowClose
• windowShow
• windowHide
• focused
• unfocused
• documentOpen
• documentClose
• timer
• idle
• userDefined
これらのメッセージのすべてに対して、ハンドラを 用意する必要はないが、何もしないハンドラをルー トオブジェクトで定義するとよいかもしれない。ハ ンドラでは、独自の処理を定義するか、さもなけれ ばハンドラ階層の上位に処理を委ねることになる。
2.5
スクリプトメソッドの内容は、適切なスクリプト記述言語を利 用して作成する。スクリプト記述言語の設計そのも のは、それほど困難ではない。通常のプログラミン グ言語の設計とほとんど異ならないが、インタプリ ティブに実行する都合上、できるだけ
•
構文を単純化して、解析を容易に実現する日本ソフトウェア科学会第
21
回大会(2004
年度)論文集4
•
実行時環境も単純化する ことが要求される。むしろ、場合によってテキスト依存のプログラミ ング言語よりも、ビジュアルインタフェースによる、
例えばデータフロー型言語によりスクリプトを記述 することを試みてもよいかもしれない。文書の作成 と類似のインタフェースによって、スクリプトまで 構成することができるからである。
マウス操作で文書を構成しているときに、スクリ プトになるとキーボードを主に使うようでは、切替 えが心もとないと思われる。
いずれにせよ、スクリプトは構文解析後の内部表 現あるいは中間言語で保存しておく方が望ましい。
3
実装3.1
実装方針HyperPage
プログラムには次のような処理を実装する必要でがある。
•
クラスとインスタンス定義の外部記述•
クラスとインスタンス定義(
内部表現)
•
ページインスタンスや、要素インスタンスの表示•
システムイベントの処理、イベントのオブジェ クトへの引き渡しとスクリプトの実行•
クラスの編集とインスタンス生成(
ページ、要素)
•
スクリプト編集いずれにせよ、かなり大掛かりなプログラムになり そうである。
3.2
クラス編集とインスタンス生成HyperPage
のクラスは図3
のような考え方で表現す ることが可能である。このような内容を適切な言語 で外部表現として保存し、表示編集やインスタンス 生成などの処理時に内部のデータ構造に読み込むよ うにすればよい。外部表現としては、階層構造を表現できるものな ら何を利用してもかまわないので、ここでは
XML
を 採用する。ただし、XML
は表現が非常に冗長である ため、何か工夫が必要かもしれない。pane
の表示・編集には、その内容に対応したplug in
を利用する。A page: class inherited blank page;
pos : Position;
size : SizeRect;
obj1 : Text;
obj2, obj3 : Button;
end A page;
Text : class;
pos : Position;
size : SizeRect;
font name : String;
font size : integer;
content : String;
end Text
図
3: HyoerPage
クラスの定義4
おわりに4.1
これまでの実現HyperPage
は2003
年の春頃から考察を始め、よう やく基本概念が確立したところである。XML
を利用してHyperPage
オブジェクトの定義 を与える試みに取りかかったが、まだ完成に至って はいない。4.2
これからの方針HyperPage
のオンライン化が重要な課題であり、WWW
のページと連携する機能の設計について現 在考察中である。単にテキスト中のURL
をクリック してWEB
ページを表示するだけではあまり面白く ない。もうすこし面白い協調ができればよいと思わ れる。謝辞
HyperPage
について検討検証し、これを実現する試みに協力を戴いた研究室のメンバに深く感謝する。
参考文献