(57)【要約】      （修正有）【課題】明確な仕様書や体系だった情報源が存在しないOSSにおいて、ソースコードレベルで更新概要をまとめた情報を提供する。【解決手段】更新情報生成サーバ１０、開発者端末２０、新規開発者端末３０から構成されていて、OSSの更新情報は、更新情報生成サーバ１０がソースコード単位で提供する。更新情報生成サーバ１０は、登録情報解析部５０、差分情報生成部６０、更新情報生成部７０、ソースコードリポジトリ１２０、更新情報リポジトリ１００の機能からなる。【選択図】図７
2011237897.tif 000002
【特許請求の範囲】
【請求項１】
複数の開発者端末及び複数の新規開発者端末と、ネットワークを介して接続されたサーバであって、前記何れかの開発者端末から、修正ソースコード、該修正ソースコードの開発者情報、更新概要を、前記ネットワークを介して受信し、記憶部に格納する手段と、前記記憶部から、前記修正ソースコードに関連する既存ソースコードを読み出し、前記修正ソースコードと前記既存ソースコードとに基づいて、これらの差分情報を生成する手段と、前記修正ソースコードを、前記記憶部におけるソースコードリポジトリに格納し、該ソースコードリポジトリ情報から対象ソースコード名、リポジトリ情報を取得する手段と、前記修正ソースコードと既存ソースコードとを比較し差分情報を生成する手段と、前記開発者情報と更新概要との受信日時を基に前記修正ソースコードの更新日時を取得する手段と、前記更新日時、対象ソースコード名、リポジトリ情報を含む追加の属性情報を生成する手段と、
前記開発者情報、更新概要、追加属性、差分情報をRSS(Resource description framework Site Summary)形式に則った更新情報として生成する手段と、
前記生成した更新情報を修正ソースコードファイルのディレクトリ構造の情報から、ソースコードリポジトリと対応したディレクトリ構造で前記記憶部の更新情報リポジトリに格納する手段と、を有することを特徴とする、サーバ。
【請求項２】
前記更新情報リポジトリは、前記修正ソースコード単位で前記更新情報が管理されている、ことを特徴とする請求項１に記載のサーバ。
【請求項３】
前記何れかの新規開発者端末からの要求に応じて、前記更新情報を前記新規開発者
へ前記ネットワークを介して送信する手段をさらに有する、ことを特徴とする請求項１又は請求項２に記載のサーバ。
【請求項４】
前記更新情報は、ソースコード毎に、開発者情報、更新概要情報及び修正ソースコードの情報を含む、ことを特徴とする請求項３に記載のサーバ。
【請求項５】
前記更新情報は、リポジトリ情報を含む、ことを特徴とする請求項４に記載のサーバ。
【請求項６】
前記更新概要には、更新内容の要約、更新理由、前記修正ソースコードの説明を含む、ことを特徴とする請求項５に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オープンソースソフトウェア(OSS: Open Source Software)の開発を支援する技術に関する。
【背景技術】
【０００２】
一般にソースコードを公開し、世界中の開発者が携わるOSSでは、インターネットやメーリングリストなどのコミュニケーションツールを利用して開発を進める。その一方、OSSに対する明確な仕様書は存在せず、開発の経緯が体系だったドキュメントとしてまとめられない場合が多い。OSSに対してソースコードの更新を実施するためには、一般に公開されている書籍やインターネット上のWebサイトやメーリングリストなどの広範囲に及ぶ情報源から手探りで開発者自身が調査する。また、OSSに対する調査後は、大規模なソースコードのどの部分に更新を適用すれば的確な実装が行えるのか、ソースコードの内容を目視により精査し確認する。
【０００３】
このようなOSS開発手法では、過去にソースコードの更新を担当した開発者の知識や経験に依存する部分が多い。そのため、更新部分のソースコードを十分把握できない場合も多く、ある程度の品質を確保した上でこれらの更新作業を行うためには、新規開発者でもある程度の知識とスキルが必要となる。
【０００４】
また、オープンソースソフトウェアの不具合解決を図る既存の技術としては、オープンソースソフトウェアの不具合に対する難易度を評価し、修正者を募ると共に修正者には一定の対価を支払うオープンソースソフトウェアのバグ修正システムが存在する(特許文献１参照)。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2005-216233号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記、「背景技術」に述べた技術では、以下のような問題点があった。
【０００７】
１点目の課題として、OSSの更新情報収集の難しさがある。OSSを代表するソフトウェアのひとつであるLinux(商標)では、世界各地に点在する1，000名以上の開発者がLinuxの開発に従事しており、約1，000万行に及ぶLinuxのソースコード規模に対して、１日あたり約11，000行の追加、約5，500行の削除、約2，200行の更新を実施している。このように、世界各地に分散する開発者たちが協調して技術的難易度の高いソフトウェアを活発に開発している状況では、OSS新規開発者が最新の開発状況を常に把握することは困難であり、OSS開発促進を妨げる要因のひとつとなっている。
また、特許文献１に記載の技術では、OSS修正の難易度に合わせた対価を支払い開発者にバグ修正の責任を負わせるシステムを提案しているが、開発者のOSSに対する自発的な貢献を抑止してしまう危険性や無保証というOSSの特徴に適しておらず、OSSの開発促進は望めない。
【０００８】
本発明は、上記課題に鑑みてなされたものであり、OSSの更新情報を提供することによって、OSS新規開発者の更新情報収集とソースコード修正の効率化を図り、OSS開発促進を目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するには、下記の構成要素からなる「オープンソースソフトウェア更新情報生成システム」を用いればよい。
【００１０】
本発明は、更新情報生成サーバ、開発者端末、新規開発者端末から構成されていて、OSSの更新情報は、更新情報生成サーバがソースコード単位で提供する。更新情報生成サーバは、登録情報解析部、差分情報生成部、更新情報生成部、ソースコードリポジトリ、更新情報リポジトリの機能からなる。
【００１１】
登録情報解析部では、OSSの開発者情報と、更新内容の要約、更新理由、修正ソースコードの説明を記載した更新概要と、修正ソースコードとを開発者端末から登録情報として一括受信する。登録情報の中から開発者情報・更新情報と、修正ソースコードとに分解する。また、登録情報を受信した日時から、更新日時を取得する。
【００１２】
差分情報生成部は、登録情報解析部から修正ソースコードを受信すると、既存ソースコードとの差分情報を生成する。差分情報を生成後、修正ソースコードを保存するソースコードリポジトリに追記し、対象ソースコード名とリポジトリ情報からソースコードリポジトリのディレクトリ情報を取得し、登録情報解析部に送信する。差分情報生成部からソースコード名、リポジトリ情報、差分情報を受け取った登録情報解析部は追加属性を生成し、開発者情報、更新概要、追加属性、差分情報を更新情報生成部に送付する。
【００１３】
更新情報生成部では、登録情報解析部から受け取った開発者情報、更新概要、追加属性、差分情報をRSS(Resource description framework Site Summary)形式に変換し、OSSの修正ソースコードに対する更新情報を生成する。生成した更新情報は、ソースコードリポジトリと対応したディレクトリ構造で更新情報リポジトリに保存する。
【００１４】
OSSの新規開発者端末は、更新情報リポジトリの更新情報をRSSリーダー経由で取得する。開発者端末から更新情報生成サーバへ登録情報が送信された直後、更新情報生成サーバから更新情報を取得することが可能となる。
【発明の効果】
【００１５】
本発明では、OSSの修正ソースコードに対応した変更概要、追加属性、差分情報を新規開発者端末へ更新情報としてひとつの情報源から配信可能である。そのため、新規開発者のOSS開発参加に対する負荷が軽減され、OSS開発促進が期待できる。
【図面の簡単な説明】
【００１６】
【図１】オープンソースソフトウェア更新情報生成システムの全体的な構成を示す図である。
【図２】更新情報生成サーバ10のハードウェア構成の一例を示す図である。
【図３】新規開発者端末30のハードウェア構成の一例を示す図である。
【図４】主記憶装置90に保存している登録情報80の例を示す図である。
【図５】更新情報リポジトリ100に保存する更新情報110の例を示す図である。
【図６】既存ソースコード130と修正ソースコード250から差分情報400を生成する動作概要図である。
【図７】開発者端末20、更新情報生成サーバ10、新規開発者端末30との関連を示した図である。
【図８】更新情報生成サーバ10の更新情報リポジトリ100とソースコードリポジトリ120とのディレクトリ構造対応を表した図である。
【図９】更新情報110配信までのシーケンス図である。
【図１０】更新情報110生成のフローチャート図である。
【図１１】差分情報400生成のフローチャート図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００１８】
図１は、オープンソースソフトウェア更新情報生成システムの全体的な構成を示す図である。オープンソースソフトウェア更新情報生成システムは、更新情報生成サーバ10、開発者端末20、新規開発者端末30をネットワーク40経由で接続し構成されるシステムである。
【００１９】
更新情報生成サーバ10は、OSSのソースコード保存と、OSSの更新情報生成や配信を行う。開発者端末20では、開発者情報、更新概要、修正ソースコードを更新情報生成サーバ10に送信する。新規開発者端末30は、更新情報生成サーバ10からOSSの更新情報を受け取り、OSSの更新概要を把握する。また、更新情報生成サーバ10からソースコードを取得することも可能である。
【００２０】
図２は、更新情報生成サーバ10のハードウェア構成を示す図である。更新情報生成サーバ10は、中央演算処理装置150、ネットワークインターフェース部160、主記憶装置90、補助記憶装置140から構成される。主記憶装置90には、登録情報解析部50、差分情報生成部60、更新情報生成部70、開発者情報、更新概要、修正ソースコードを含む登録情報80を保存する。補助記憶装置140には、更新情報リポジトリ100、ソースコードリポジトリ120があり、更新情報リポジトリ100には更新情報110、ソースコードリポジトリ120には既存ソースコード130を保存する。
【００２１】
中央演算装置150は、主記憶装置90に配置している登録情報解析部50、差分情報生成部60、更新情報生成部70の命令を基に更新情報110生成に必要な制御・演算を実行する。ネットワークインターフェース部160は、開発者端末20、新規開発者端末30との登録情報80や更新情報110の送受信に利用する。登録情報解析部50は、登録情報80の内容を精査し、差分情報生成部60と更新情報生成部70へ振り分ける。差分情報生成部60は、既存ソースコード130と、登録情報80に含まれる修正ソースコードとの差異を生成する。更新情報生成部70は、更新情報リポジトリ100に格納する更新情報110を生成する。
【００２２】
図３に新規開発者端末30のハードウェア構成図を示す。新規開発者端末30は、中央演算処理装置210、表示装置(ディスプレイ)180、ネットワークインターフェース部220、主記憶装置420、補助記憶装置430、入力装置(キーボード、マウス)190から構成される。ネットワークインターフェース部220は、更新情報生成サーバ10が配信する更新情報110を受け取る。中央演算処理装置210は、主記憶装置420に配置しているRSS(Resource description framework Site Summary)リーダー200、バージョン管理ソフトウェア170の制御・演算を実行する。RSSリーダー200は、RSS形式で受信する更新情報110をユーザが可読可能な状態で表示するソフトウェアで、表示装置(ディスプレイ)180を介して更新情報110を表示する。更新情報110に対応するソースコードを更新情報生成サーバ10から取得する場合、バージョン管理ソフトウェア170を利用し、更新情報生成サーバ10に保存している既存ソースコード130を取得する。
【００２３】
図４に登録情報80のデータ例を示す。開発者情報230には、開発者氏名260、開発者のメールアドレス270、開発者が所属する組織280を記載する。更新概要240には、修正ソースコード250に対する更新内容の要約290、修正ソースコード250を作成するに至った理由を記載する更新理由300、ソースコードレベルでの解説を記載する修正ソースコードの説明310を準備する。更新内容の要約290、更新理由300、修正ソースコードの説明310を準備することにより、更新情報110のみでソースコード修正の意味や技術的背景を理解でき、OSS開発促進に寄与する。また、修正ソースコード250に関するキーワード320、対象プラットフォーム330も記載する。修正ソースコード250に関するキーワード320には、プロセススケジューラ、タイムスタンプカウンタ、メモリ管理、ページテーブルなどの修正ソースコードを適用する技術領域と関連技術を記載する。修正ソースコード250に関する対象プラットフォーム330には、x86アーキテクチャ、EM64Tアーキテクチャ、PowerPC(登録商標)、SPARC(登録商標)などの修正ソースコードを実行するマイクロプロセッサのアーキテクチャ名を記載する。修正ソースコード250には、修正ソースコードファイル340を添付する。
【００２４】
図５に更新情報110のデータ例を示す。開発者情報230、更新概要240の内訳は、図４に示した登録情報80と同じであるが、追加属性350と差分情報400は別途登録情報解析部50と差分情報生成部60が生成する。追加属性350には、更新日時360、対象ソースコード名370、リポジトリ情報380、関連情報390を記載する。更新日時360には、修正ソースコードを取得した時刻を記載する。対象ソースコード名370には、修正ソースコード250のソースコードファイル340を記載する。リポジトリ情報380には、ソースコードリポジトリ120のリポジトリ情報を記載する。リポジトリ情報380を更新情報110に含むことにより、更新情報110を受信した新規開発者端末30は、更新情報110から直接ソースコードリポジトリ120にアクセスすることができ、円滑にソースコードを取得することが可能となる。関連情報390には、生成する更新情報110のディレクトリ構造の親子関係に当たる更新情報110を記載する。また、差分情報400には、既存ソースコード130と修正ソースコード250との差分410を記載する。
【００２５】
図６に既存ソースコード130と修正ソースコード250から差分情報400を生成する概要図を示す。差分情報生成部60は、既存ソースコード130と修正ソースコード250を先頭から一行ずつ比較する。修正ソースコード130で新規追加された行がある場合は、該当する行の先頭に「+」を追記し、差分情報400に出力する(図6中差分情報400の13、15、18行目)。修正ソースコード250で変更された行に対しては、既存ソースコード130で修正対象となる行の先頭に「-」を追記し、修正ソースコード250の修正対象行の先頭に「+」を追記し、この2行を差分情報400に記載する(図6中差分情報400の16、17行目)。また、修正ソースコード250で削除された既存ソースコード130の行に関しては、既存ソースコード130の削除行の先頭に「-」を追記し、差分情報400に記載する(図6中差分情報400の20行目)。
【００２６】
図7にオープンソースソフトウェア更新情報システムの動作概要図を示す。OSSの開発者端末20は、開発者情報230と、更新の要約290、更新理由300、修正ソースコードの説明310、キーワード320、対象プラットフォーム330を記載した更新概要240と、修正ソースコード250とを登録情報80として、更新情報生成サーバ10へネットワーク40を介して送信する。
【００２７】
登録情報80を受信した更新情報生成サーバ10は、登録情報解析部50で修正ソースコード250と開発者情報230、更新概要240とに分類し、修正ソースコード250のみ差分情報生成部60へ送信する。
【００２８】
修正ソースコード250を受け取った差分情報生成部60は、修正ソースコード250の修正ソースコードファイル340に記載されているディレクトリ構造の情報を基に、ソースコードリポジトリ120に保管している該当既存ソースコード130を特定する。差分情報生成部60は、行単位で修正ソースコード250と既存ソースコード130とを比較し、差分情報400を生成する。生成した差分情報400を登録情報解析部50へ送信する。その後、修正ソースコード250を既存ソースコード130に上書きし、ソースコードリポジトリ120に格納する。また、差分情報生成部60は、ソースコードリポジトリ120のディレクトリ情報から対象ソースコード名370、リポジトリ情報380を取得し、を登録情報解析部50へ送信する。
【００２９】
差分情報400と対象ソースコード名370、リポジトリ情報380とを受け取った登録情報解析部50は、対象ソースコード名370のディレクトリ構造を基に、更新情報リポジトリ100への格納先を確定する。格納先確定後、格納予定のディレクトリの親子の更新情報が存在すれば、追加属性350の関連情報390に追記する。その後、登録情報解析部50は、開発者情報230、更新概要240、追加属性350、差分情報400を更新情報生成部70へ送信する。
【００３０】
更新情報生成部70は、受け取った開発者情報230、更新概要240、追加属性350、差分情報400をRSS(Resource description framework Site Summary)形式に変換する。次に、追加属性350の対象ソースコード名370に記載されているディレクトリ情報を基に、更新情報リポジトリ100へ格納する。
【００３１】
新規開発者端末30は、RSSリーダー200を用いて更新情報リポジトリ100の中に格納されている更新情報110をネットワーク40経由で取得する。更新概要240、関連情報390、差分情報400の情報を基にソースコード取得が必要な場合は、更新情報110のリポジトリ380をバージョン管理ソフトウェア170に指定し、ソースコードを取得する。
【００３２】
図８に更新情報生成サーバ10の更新情報リポジトリ100とソースコードリポジトリ120とのディレクトリ構造対応を示す。更新情報生成サーバ10は、開発者端末20から受け取った登録情報80を基に、修正ソースコード250と更新情報110を生成し、修正ソースコード250はソースコードリポジトリ120に、更新情報10は更新情報リポジトリ100に保存する。
【００３３】
この際、更新情報110は、対応する修正ソースコード250のソースコードリポジトリ120と同じディレクトリ構造となるよう更新情報リポジトリ100に保存する。更新情報ディレクトリ100の保存方法をソースコードリポジトリ120と同じディレクトリ構造にすることにより、新規開発者端末30側では更新情報リポジトリ100のディレクトリ最上位の更新情報110が保持する関連情報390から関心のある更新情報110をたどり、目的の更新情報110へソースコードを確認することなく情報収集が可能である。そのため、更新情報リポジトリ100をディレクトリ最上位の更新情報110からディレクトリ構造下部に向かい閲覧することにより、OSSの技術資料とドキュメントを体系だった形で提供できる。また、実際にソースコードリポジトリ120からソースコードを取得する際にも、更新情報リポジトリ100とソースコードリポジトリ120とのディレクトリ構造が一致していれば、取得したソースコードのディレクトリ位置を容易に把握することができる。
【００３４】
次に、更新情報110生成までのシーケンス図を図９に示す。
【００３５】
登録情報80を受信した(S1)登録情報解析部50は、登録情報80を修正ソースコード250と更新情報110とに分類し、修正ソースコード250を差分情報生成部60に送付する(S2)。また、登録情報80を受信した時刻を取得し、更新日時を生成する(S7)。
【００３６】
修正ソースコード250を受信した差分情報生成部60は、ソースコードリポジトリ120に既存ソースコード130の取得を要求し(S3)、ソースコードリポジトリ120は、修正ソースコード250が上書きしようとしている既存ソースコード130の絶対ディレクトリパスを基に既存ソースコード130を特定し、差分情報生成部60へ既存ソースコード130を送信する(S4)。
【００３７】
既存ソースコード130を受信した差分情報生成部60は、既存ソースコード130と修正ソースコード250とを行単位で比較した結果を、両者の差分情報400として生成し、登録情報解析部50に差分情報400を送信する(S5)。また、修正ソースコード250を既存ソースコード130に適用し(S6)、ソースコードリポジトリ120に修正ソースコード250を反映する(S8)。登録情報解析部50は、差分情報生成部60から対象ソースコード名370、リポジトリ情報380を取得し、変更日時360、関連情報390と合わせて追加属性350を生成する(S9)。
【００３８】
登録情報解析部50は、開発者情報230、更新概要240、追加属性350、差分情報400を更新情報生成部70へ送信する(S10)。開発者情報230、更新概要240、追加属性350、差分情報400を受信した更新情報生成部70は、RSS形式の更新情報110を生成し、更新情報リポジトリ100に送信する(S11)。更新情報110を受信した更新情報リポジトリ100は、更新情報110を追加し(S12)、 RSS形式の更新情報110を外部に公開する(S13)。
【００３９】
次に、更新情報110を生成するフローチャートを図１０に示す。
【００４０】
開発者端末20が更新情報生成サーバ10へ登録情報80を送信すると(S14)、更新情報生成サーバ10は、登録情報解析部50を用いて開発者情報230、更新概要240と修正ソースコード250とに分類後(S15)、既存ソースコード130と修正ソースコード250との差分情報400を生成する(図１１へ遷移)。
【００４１】
登録情報解析部50で取得した開発者情報230、更新概要240と、差分情報生成部60で取得した対象ソースコード名370、リポジトリ情報380、差分情報400を更新情報110に追加後(S16)、現在時刻から更新日時360を生成し、更新情報110に追加する(S17)。また、修正ソースコード250を保存したソースコードリポジトリ120のディレクトリ位置から、更新情報110を保存する更新情報リポジトリ100の保存先を決定する(S18)。
【００４２】
更新情報110を更新情報リポジトリ100で保存する先を決定した後、ディレクトリ位置の親にあたる更新情報110の存在有無を確認し(S19)、親の更新情報110が存在する場合、新規に生成した更新情報110の関連情報390に親の更新情報110を記載する(S20)。同様に、子の更新情報110の存在も確認し(S21)、子の更新情報110が存在する場合は、新規に生成した更新情報110の関連情報390に子の更新情報110を記載する(S22)。生成した更新情報110をRSS形式に変換後(S23)、ソースコードリポジトリ120のディレクトリ構造と対応するように、更新情報リポジトリ100へ保存する(S24)。
【００４３】
図１１に、既存ソースコード130と修正ソースコード250から差分情報400を生成するフローチャート図を示す。修正ソースコード250を受信した差分情報生成部60は、修正ソースコード250が持つディレクトリ情報を基に、ソースコードリポジトリ120から対象となる既存ソースコード130を取得する(S25)。次に、差分情報生成部60は、既存ソースコード130と修正ソースコード250とを行単位で比較する(S26)。既存ソースコード130と修正ソースコード250とで変更点があるかを確認し(S27)、変更点がある場合には差分情報400に追記する(S28)。既存ソースコード130と修正ソースコード250との比較がEOF(End Of File)に達するまで、両者の比較を繰り返す(S29)。差分情報生成部60は差分情報400の生成が完了すると、修正ソースコード40をソースコードリポジトリ120に上書きし(S30)、ソースコードリポジトリ120から修正ソースコード250のリポジトリ情報380とソースコード名370を取得し、追加属性350を生成する(S31)。
【符号の説明】
【００４４】
10…更新情報生成サーバ、20…開発者端末、30…新規開発者端末、40…ネットワーク、90、420…主記憶装置、140、430…補助記憶装置、150、210…中央演算処理装置、160、220…ネットワークインターフェース部、180…表示装置、190…入力装置。
【図１】
2011237897.tif 000003
【図２】
2011237897.tif 000004
【図３】
2011237897.tif 000005
【図４】
2011237897.tif 000006
【図５】
2011237897.tif 000007
【図６】
2011237897.tif 000008
【図７】
2011237897.tif 000009
【図８】
2011237897.tif 000010
【図９】
2011237897.tif 000011
【図１０】
2011237897.tif 000012
【図１１】
2011237897.tif 000013