• 検索結果がありません。

ソフトウェア管理技術の最新動向を探る:7.オープンソースソフトウェア「じゅん」の開発管理

N/A
N/A
Protected

Academic year: 2021

シェア "ソフトウェア管理技術の最新動向を探る:7.オープンソースソフトウェア「じゅん」の開発管理"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)特集:ソフトウェア管理技術の最新動向を探る. 7. オープンソースソフトウェア 「じゅん」の開発管理. 西中芳幸 (株)SRA 先端技術研究所 [email protected]. --------------------------------------------------------------------. ート」,簡易な 3 次元アニメーションを行う「フラック.  「じゅん」は,我々が 1995 年以来 7 年以上に渡って開. ス」,グラフ構造を 3 次元空間上に表示する「グラファ」 ,. 発を続け,オープンソースソフトウェアとして公開して. 等々,大小さまざまな数十の機能を再利用可能なクラス. いる,3 次元グラフィクスおよびマルチメディアを扱うた. ライブラリとして提供している(図 -1).. めのフレームワークとなる汎用クラスライブラリである..  マルチメディアのプリミティブとしては QuickTime. 本稿では,オープンソースソフトウェアにおける開発管. インタフェースを提供している.QuickTime の提供する. 理の一事例として「じゅん」の開発管理を紹介する.. 機能を利用して動画や音声の再生,画像の加工ができる. ------------------------------------------------------------------------------------------------. ほか,QuickTime Player のような動画再生環境を独自に 拡張したり,アプリケーションに埋め込んだりすること. 「じゅん」とは ?   「じゅん」. 1). は,3 次元グラフィクスおよびマルチメ. も可能である.さらに,有償の QuickTime Pro が持って いる部分再生機能やムービークリップの作成を容易にす るクラスライブラリも提供している(図 -2).. ディアを扱うためのフレームワークとなる汎用クラスラ.  また,動画のフレームを選択して 3 次元形状のテク. イブラリの名称である.オブジェクト指向技術を用いて. スチャとして利用するなど,3 次元グラフィクスとマル. 設計,実装されたオープンソースソフトウェアであり,. チメディアの連携が容易なことも「じゅん」の特長の. ソースコードを含め,すべて無償で公開している.. 1 つである..  3 次元グラフィクスのプリミティブとしては OpenGL.   「じゅん」の最大の特徴は,すべてのクラス群が 2 種. インタフェースを提供している.そのまま OpenGL プロ. 類のプログラミング言語(Smalltalk と Java)で実装され. グラミングを行うことも可能であるが,より応用的な. ていることであろう.すなわちどちらのプログラミング. 機能として 3 次元形状を表示・操作するための「ビュー. 言語を用いても,同じ機能を持つアプリケーションを作. ファインダ」やビューファインダにおける視点,注視. 成することが可能である.. 点,視体積などを 3 次元空間上に視覚化する「ビューポ.  たとえば,立方体を作り,その上にテクスチャを貼り. 図 -1 OpenGL インタフェースの画面例. 図 -2 QuickTime インタフェースの画面例. IPSJ Magazine Vol.44 No.4 Apr. 2003. 369.

(2) � ����� ������� �������� � ����� �� ����������������� ����� ������� �� ���������������� ���������������������� �������� �� ���������������� ������ �������� ����� �������� ��������� ����� ����. 図 -3 Smalltalk 版のソースコード. ������ ������ ���� ����������� �������� ����������������� ����� � ������������������������� ������� ������� � ���������������������������������������� ���������������� �������� � ��������������������������������� ������������������������� ������������� �. 図 -4 Java 版のソースコード. 付けたものを,ビューファインダを用いて表示するプロ. リースで区別をせず,3 桁の通し番号で付与されている.. グラムを図 -3 および図 -4 に示す.シンタックスの違い. 内部リリースは試験的に新しい機能を追加したり,プ. こそあれ,ほぼ 1 対 1 に置き換えられるコードであるこ. ログラムの構造を抜本的に変更したりした場合に行われ. とがお分かりいただけるであろう.. る.一方,外部リリースは開発者および利用者のテスト.  それぞれの実行結果を図 -5 および図 -6 に示す.. を通過し,ある程度の頑健性が実証された時点で行われ る.開発を牽引する Smalltalk 版では約 7 年半の開発期間 で 500 近いバージョンアップを繰り返しており,平均す. 「じゅん」の進化. れば約 5 日に一度の割合で新たなバージョンがリリース.   「じゅん」は,1995 年 9 月に最初の公開を行って以. されてきたことになる.. 来,7 年以上に渡って開発を続けており,現在も日々進.  こういった開発スタイルは,「小さな変更」「頻繁なリ. 化を遂げている. 「じゅん」の元になった「明(めい) 」. リース」「リファクタリングの適用」など,今でいう XP. 2). にまで遡れば,開発期間は優に 10 年を超える.3 次元 幾何(ジオメトリ)を扱うためのライブラリとして始 まり,いくつかのプロジェクトを経て,3 次元位相(ト. (eXtreme Programming)のそれに近い.しかしそれは「オ ープンソースソフトウェアの開発スタイルとその変遷」 (情報処理 Vol.43 No.12). でも「オープンソースソフト. 3). ポロジ)やマルチメディアを扱うための機能が追加さ. ウェアの開発スタイルは,基本的なところは昔からほ. れた.. とんど変わっていない」と述べられているように,典型.  「じゅん」のバージョン番号は内部リリースと外部リ. 的なオープンソースソフトウェアのそれであるといえよ. 図 -5 Smalltalk 版の実行結果. 370. 44 巻 4 号 情報処理 2003 年 4 月. 図 -6 Java 版のソースコード.

(3) 特集:ソフトウェア管理技術の最新動向を探る. 1995 年9 月 「じゅん ( Jun004 ) 」の公開.. 1998 年7 月 「じゅん ( Jun187 ) 」の公開.このころ,Javaへの移植作業が始まる. 1999 年4 月 「じゅん for Smalltalk ( Jun234 )」および「 じゅん for Java (Jun187 ) 」の公開.. 2002 年1 月 ドイツから「じゅん」の商用利用に関する問合せがある. 2002 年3 月 「じゅん for Smalltalk ( Jun421 )」および「たけのこ for Smalltalk ( Takenoko421 ) 」の公開. 2002 年4 月 「じゅん for Java ( Jun421 )」の公開.ライセンスを修正 BSDに変更. 2003 年2 月 「じゅん for Java (Jun366 )」 「じゅん for Smalltalk ( Jun491 )」 「たけのこ for Smalltalk ( Takenoko443 )」. 図 -7 「じゅん」の歴史. う.Kent Beck が“Extreme Programming Explained”. 4). の. License(GPL). 6). で公開されているが,商用利用に関. 中で“Most of the practices in XP are as old as programming.. する要望から,「じゅん for Smalltalk」から GPL に抵触. (XP における実践項目のほとんどがプログラミングの歴. するコードを取り除いたものを作成し,「たけのこ for. 史と同じくらい古いものである) ”と述べていることに. Smalltalk」として修正 BSD ライセンスで公開するように. も通じる.. なった.これもまた一種の「派生」であるといえる..  ちなみにオープンソースソフトウェアの世界では「頻.  2003 年 2 月現在,最新バージョンはそれぞれ「じゅ. 繁なリリース」が重要である.これはそのソフトウェア. ん for Smalltalk」 が Jun491,「 た け の こ for Smalltalk」 が. が継続的に開発され,進化していることを内外に知らし. Takenoko443,「じゅん for Java」が Jun366 となっている. める効果があるからである.もちろんオープンソースに 限った話ではないが,ソフトウェアの開発者たちはバー ジョンアップを「ユーザを引き付けておくための常套手. (図 -7).. ◆共生. 段の 1 つ」と考えている..  ソフトウェアの進化における派生物は「××クロー.   「 じ ゅ ん 」 の 進 化 に つ い て は“A Case Study of the. ン」などと呼ばれるものが多い.たとえば AT&T で開発. Evolution of Jun: an Object-Oriented Open-Source 3D. された UNIX に対して BSD や Linux などを始めとする. Multimedia Library”(Proceedings of 23rd International. UNIX クローン,GNU Emacs に対して Ng や Jove などの. Conference on Software Engineering(ICSE2001) ). Emacs クローンなどが例として挙げられる.これらは機. でも詳. 5). しく述べているので,ぜひそちらも参照されたい.. ◆派生. 能の改良や軽量化を目的として発生した派生である.そ れに対し「じゅん」の派生は,同じ機能を持つソフトウ ェアをあえて異言語で実装し直しているという点で特徴.  元々は Smalltalk のクラスライブラリとして開発され. 的である.. ていた「じゅん」であるが,ニーズと市場性を考慮し,.  通常,異言語への移植を行う場合,元になったソフ. 1998 年頃から Java へ移植する作業が始まった.1999 年. トウェアは新規開発を終了し,せいぜいメンテナンスの. 4 月には最初の Java 版である「じゅん for Java(Jun187)」. ために修正が加えられるくらいであろう.アセンブラで. を公開したが,その後も Smalltalk 版に追加・修正され. 書かれていた UNIX カーネルが C 言語を用いて書き直. た機能を随時 Java 版へ移植する作業を行っている.ま. された時,アセンブラ版の UNIX カーネルはその役目を. た,ある会社の開発する「オブジェクト指向の 3 次元. 終えたはずである.しかし「じゅん」の場合は元になる. CAD エンジン」では, 「じゅん」のフレームワークが. Smalltalk 版のほうが新規開発を牽引している.. C++ を用いて実装されている..  Java 版の開発開始当初は Smalltalk で書かれたソース.  このような「じゅん」の進化の過程における多言語へ. コードをひたすら Java に置き換えていたため,Java 版. の「派生」は,オープンソースであることによるソース. の開発担当者はその開発プロセスを「Smalltalk で設計. コードレベルでの再利用のみならず,その背景にあるフ. し,Java で実装している」と表現していた.あくまでも. レームワークが参照モデルとして活用されていることを. Smalltalk 版が「主」で,Java 版は「従」であったわけで. 示している.. ある..   ま た, 「 じ ゅ ん for Smalltalk」 は GNU General Public.  しかし移植作業は単純なソースコードの置き換えだけ IPSJ Magazine Vol.44 No.4 Apr. 2003. 371.

(4) 移植. オブジェクト指向   技術を用いて設計 Smalltalkで実装. じゅん. じゅん. for. for. Smalltalk. Java. Smalltalkで設計 Javaで実装 静的な型. 動的な型. 還元 図 -8 Smalltalk 版と Java 版の共生. でなく,結果として元になる「じゅん for Smalltalk」の.  コミュニティに関しては,これまで公開されたメー. 見直しにもつながった.これは主として Smalltalk と Java. リングリストはなく,規模も正確には把握されていない. の言語仕様の違い,特に型が動的に決まるか静的に決ま. が,HTTP および FTP で公開しているファイルのログは. るかの違いによるところが大きい.たとえば Java 版の開. 詳細に解析している. 「じゅん for Java」の場合であれば,. 発者はメソッドや変数を定義する際にまず型を決めなけ. 1999 年 4 月の公開以来の累計で,WWW によるアクセ. ればならないため,必然的にメソッドの呼ばれ方や変数. スは 140 万件,FTP によるダウンロードは 2 万 3 千件を. の参照・代入などを精査することになるのである.. 超えている.なお,ログの解析結果は Web ページ上で公.  この見直しによって発見されたバグや設計上の不整合. 開している.. などが Java 版から Smalltalk 版へと還元(フィードバッ.  メンバのコミュニケーションには日本語による社内. ク)されることになる.また,現在はまだ移植が追い付. のメーリングリストが用意されているが,開発者だけで. いていないが,いずれは Java 版で新規開発したものを. なく,希望するものは誰でも参加できるようになってい. Smalltalk 版へ移植することも起こり得るであろう.. る.交わされるメールの内容は「じゅん」に関するリリ.  このような Smalltalk 版と Java 版の双方向に見られる. ースのアナウンスやバグ報告などの技術的な議論はもち. 関係( 「移植」と「還元」 )を, 我々は「共生(Symbiosis)」. ろん,お勧めの本の紹介や休みの連絡など,雑多な用途. と呼んでいる(図 -8) .. に用いられている.もちろん本稿も「じゅん」のメーリ ングリストに公開し,事前に査読してもらっている.. 「じゅん」の開発体制  1995 年に 1 人のプログラマが始めた「じゅん」の開. 「じゅん」のバージョン管理. 発は,2000 年には 10 名を超えるメンバが携わり,ドキ.  バージョン管理は,Smalltalk 版と Java 版それぞれの. ュメントの作成者も含めると約 20 名が参集することと. リーダがそれぞれの方針に基づいて行っている.. なった..  リーダによる集中管理には決断の速さと柔軟さという.  「じゅん」は,他の多くのオープンソースソフトウェ. 利点があるが,反面リーダの負担が大きく,何らかの事. アがそうであるように,1 人のリーダと数名のコアメン. 情でリーダが作業に従事できない場合にはリリースが停. バを中心に開発が進められている. 滞してしまうことも起こり得る.. . いわゆる「やさし. 7). い独裁者(benevolent dictator) 」モデルであり, 「じゅん」 というオープンソースソフトウェアの構想を暖め,最初 に開発を始めた者がリーダである.その後「じゅん」を. ◆ Smalltalk 版の場合  すべてのリリースはリーダによって決められている.. 用いた開発プロジェクトに参画したメンバが「じゅん」. 「じゅん」のバージョン番号は 3 桁の通し番号で, 「じゅ. に関する知識を高め,コアメンバとして育っていった.. ん for Smalltalk」の最新版である Jun491 は開発開始以来.  「 じ ゅ ん for Java」 の 場 合 は 明 示 的 に「 じ ゅ ん for. 491 番目のバージョンであることを示している.メジャ. Smalltalk」を Java に移植するプロジェクトとして発足し. ーバージョンアップやマイナーバージョンアップといっ. ているため,通常の開発プロジェクトとしてリーダとメ. た考え方はなく,バグフィックスも機能追加も取り立て. ンバが決められた.リーダはもちろん,メンバの大多数. て区別せずに,変更がまとまりしだい新しいバージョン. が「じゅん for Smalltalk」のコアメンバの中から選ばれ. をリリースする.. ている..  リリースされたバージョンのソースコードは,すべて. 372. 44 巻 4 号 情報処理 2003 年 4 月.

(5) 特集:ソフトウェア管理技術の最新動向を探る. 1600000. 25000. 1400000 20000. 1200000 1000000. 15000. 800000 10000. 600000 400000. 5000. 200000  0. 図 -9 WWW アクセス数累計(Java 版). Apr.99 Jun.99 Aug.99 Oct.99 Dec.99 Feb.00 Apr.00 Jun.00 Aug.00 Oct.00 Dec.00 Feb.01 Apr.01 Jun.01 Aug.01 Oct.01 Dec.01 Feb.02 Apr.02 Jun.02 Aug.02 Oct.02 Dec.02. Apr.99 Jun.99 Aug.99 Oct.99 Dec.99 Feb.00 Apr.00 Jun.00 Aug.00 Oct.00 Dec.00 Feb.01 Apr.01 Jun.01 Aug.01 Oct.01 Dec.01 Feb.02 Apr.02 Jun.02 Aug.02 Oct.02 Dec.02. 0. 図 -10 FTP アクセス数累計(Java 版). 開発用サーバ上に ZIP ファイルとして保管されている..   • JunCodeReview. その中で一般公開するバージョンのみを外部から参照可.    クラスに関する詳細を調べるためのツール. 能な FTP サーバ上に置き,公開をメーリングリスト等.  • JunUndeclarationCheck. を用いてアナウンスする..    未定義の変数やメソッドの存在を調べるためのツール  • JunSourceCodeSaver. ◆ Java 版の場合.    ソースコードを保存するためのツール.  前述の通り,Smalltalk 版には 500 近い数のバージョン.  • JunSourceCodeDifferenceBrowser. が存在しているが,それらすべてのバージョンを 1 つず.    ソースコードの差分を見るためのツール. つ Java に移植しているわけではない.Smalltalk 版に追加.  • JunVersionDifferenceBrowser. された機能を元に,リーダがマイルストンとなるバージ.    バージョン間におけるクラス群の差分を見るため. ョンを決め,そのバージョンが完成すると一般に公開す.  のツール. る.一般公開の手順は Smalltalk 版と同じで,外部から参.   • JunVersionHistoryBrowser. 照可能な FTP サーバ上に置き,公開をメーリングリス.    あるクラスにおける変更の履歴を見るためのツール. ト等を用いてアナウンスする.  ソースコードおよびドキュメントを含むファイル群は.  もちろんこれらのツール群も「じゅん for Smalltalk」. 開発開始以来すべて CVS(Concurrent Versions System). の一部として公開されている.. 8). を用いて管理している.ただし CVS リポジトリは,い.  通常の開発サイクルにおいては,コアメンバは自分が. まのところ一般には公開していない.. 行った作業を Change Set(変化集合)としてリーダに提 出し,リーダがマージして,新バージョンを内部リリー. 「じゅん」の変更管理. スする.コアメンバは内部リリースされた新バージョン を元に,新たな作業を行う..  変更管理もバージョン管理と同様に,Smalltalk 版と.  面白いのは,この開発サイクルがちょうど CVS が言. Java 版それぞれのリーダがそれぞれの方針に基づいて行. うところの“Copy-Modify-Merge”. っている.. していることである.この指針も,やはりオープンソー. ◆ Smalltalk 版の場合. 8). という指針に合致. スソフトウェア開発における古典的な開発サイクルから 生まれたものであるといえるのかもしれない..  一般的な Smalltalk における開発の場合,システムに.  ユーザからのバグ報告やコントリビューションがあっ. 標準で付属している Change Set/List や Parcel Browser な. た場合は,やはりリーダがマージして,新バージョンに. どのツールを用いて管理が行われている. 「じゅん for. 含めることになる.. Smalltalk」においても基本的には同様であるが,さらに 以下のようなツールを独自に開発して利用している.. ◆ Java 版の場合  Java 版の開発サイクルでは,リーダが決めたマイルス トン(公開バージョン)を元に,コアメンバに対して作 IPSJ Magazine Vol.44 No.4 Apr. 2003. 373.

(6)    • ソフトウェアは完成することがない  オープンソースという開かれた世界でのソフトウェア. 800. 開発は,多くの人々がそれぞれの立場で意見を述べ,コ. 700 600. ードを記述する.そのような開発形態において,機能を. 500. 「追加」することはたやすい.作りっ放しのソフトウェ. 400. アであれば,木に竹を接ぐような開発もよいだろう.し. 300. かし全体性を保持しつつ進化する有機的な秩序は,その. 200. 成長が急進的ではなく,漸進的に,たゆまず,順を追っ.  100. て進むことにある.進化の方向を見極め,成長を促すた. 0 .5 1.5 .2.5 .5.5 .8.5 1.5 .2.5 .5.5 .8.5 1.5 .2.5 .5.5 .8.5 1.5 .2.5 .5.5 .8.5 1.5 .2.5 8.8 98.1 99 99 99 99.1 00 000 00 00.1 01 001 001 01.1 02 02 02 02.1 03 9 0 0 0 9 9 9 0 0 0 0 19 19 1 1 1 19 2 2 2 20 2 2 2 20 2 2 2 20 2. めには「排除」や「削減」こそが鍵となる.  共存しあっているオープンソースソフトウェアの中で の開発では,先人達が守ってきた規範や規則に注意を向. 図 -11 総タイプ数の推移(Java 版). ける必要がある.そしてすでに存在するソースコードこ そが,先人達の規範や規則を体言化したものである.先 人達の規範や規則を理解し,不要なもの,誤ったものを. 業担当が決められる.ソースコードを保管する CVS リポ. 取り込まないためにも,オープンソースソフトウェアの. ジトリはコアメンバならば誰でも自由にアクセス可能で. 開発者にはソースコードを読む技術が要求される.そし. あるので,変更は随時リポジトリにコミットして構わな. てその技術を磨くためには,多くの優れたソースコード. い.あらかじめ作業分担が決められているので,基本的. を読まなくてはならない.. にコンフリクト(衝突)は生じないが,もし発生する可.  自己再帰的な試行錯誤を繰り返す終わりのない開発プ. 能性がある場合(抽象クラスに手を加えたい場合など). ロセスの中で,押し付けられた管理は意味を為さない.. にはコアメンバ間で,メール,電話,あるいは口頭での. 「じゅん」の開発メンバには,こういった指針を理解し,. 確認を行う.. 自分で考え,自発的に行動することが求められることに.  CVS を用いてソースコードを管理していることによ. なる.. って,たとえば図 -11 のように 1 日単位での総タイプ数 の推移を分析したりすることが可能である.  CVS リポジトリへの自由なアクセスは,CVS によっ て任意の時点での状態を復元できることによる.この 点において,ソースコードをリーダが一元的に管理する Smalltalk 版に比べて緩やかな管理体制であるといえる.. まとめ  最後に, 「じゅん」の開発における指針となる言葉を 2 つ引用して紹介する. デザイン(設計)はフォルム(形)の実現にあるのではな く,ミスフィット(ぴったりしないもの)の排除にある.   Alexander, 形 の 合 成 に 関 す る ノ ー ト,Christopher Alexander,    稲葉武司訳,鹿島出版会. 間違い削減は進化へ導く推進力の 1 つである.   Gerhard Fischer, "Cooperative Knowledge-Based Design   Environments for the Design, Use and Maintenance of Software," Proceedings of 10th Software Symposium, June 1990. 「じゅん」の開発においては,次のことを前提としている.    • 利用者の要求仕様は永遠に確定しない    • 開発者の設計仕様も永遠に確定しない. 374. 44 巻 4 号 情報処理 2003 年 4 月. 参考文献 1)じゅん , http://osb.sra.co.jp/Jun/ 2)青 木  淳 : Smalltalk ソ フ ト ウ ェ ア 開 発, 第 12 回 曼 荼 羅 的 オ ブ ジ ェ ク ト 指 向,Super Ascii Vol.3 #5, ア ス キ ー 出 版 局(1992) .または http://www.sra.co.jp/people/aoki/SuperAsciiJ/SAscii12.html お よ び ftp://ftp.sra.co.jp/pub/lang/smalltalk/mei/ 3)藤枝和宏 : オープンソースソフトウェアの開発スタイルとその変遷, 情報処理,Vol.43, No.12 ,pp.9-12(Dec. 2002). 4)Beck, K.: Extreme Programming Explained, Addison-Wesley(2000), ISBN 0-201-61641-6 . 5)Aoki, A., Hayashi,K., Kishida, K., Nakakoji, K., Nishinaka,Y., Reeves, A., Takashima, B. and Yamamoto, Y. : A Case Study of the Evolution of Jun: an Object-Oriented Open-Source 3D Multimedia Library, Proceedings of 23rd International Conference on Software Engineering(ICSE2001), Toronto, CA., IEEE Computer Society, Los Alamos, CA., pp.524-533(May 2001). 6)GNU General Public License, http://www.gnu.org/licenses/gpl.html 7)Nakakoji, K.,Yamamoto, Y., Nishinaka, Y., Kishida, K. and Yunwen, Y. :Evolution Patterns of Open-Source Software Systems and Communities, Proceedings of 5th International Workshop on Principles of Software Evolution(IWPSE2002), ACM Press, Orlando, FL., pp.76-85(May 2002) . 8)Berliner and Brian: CVS-II: Parallelizing Software Development, Proceedings of the Winter 1990 USENIX Association Conference . (平成 15 年 2 月 28 日受付).

(7)

図 -9 WWW アクセス数累計(Java 版) 図 -10 FTP アクセス数累計(Java 版)

参照

関連したドキュメント

Amount of Remuneration, etc. The Company does not pay to Directors who concurrently serve as Executive Officer the remuneration paid to Directors. Therefore, “Number of Persons”

平成 30 年度介護報酬改定動向の把握と対応準備 運営管理と業務の標準化

防災安全グループ 防災安全グループ 防護管理グループ 防護管理グループ 原子力防災グループ 原子力防災グループ 技術グループ 技術グループ

防災安全グループ 防災安全グループ 防護管理グループ 防護管理グループ 原子力防災グループ 原子力防災グループ 技術グループ 技術グループ

2014 年 9 月に開始された MethaShip プロジェクトの実施期間は 45 か月であった。 プロジ ェクトの主要メンバーは、造船所 Flensburger Schiffbau-Gesellschaft 及び

防災安全グループ 防災安全グループ 防護管理グループ 防護管理グループ 原子力防災グループ 原子力防災グループ 技術グループ 技術グループ

防災安全グループ 防護管理グループ 原子力防災グループ 技術グループ 保安検査グループ 品質保証グループ 安全管理グループ

一般管理口座 知事の管理口座(義務充当口座) 移転できない 知事の管理口座(無効化口座) 移転できる 指定管理口座