以下、本発明による識別子生成装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。
(実施の形態1)
本発明の実施の形態1による識別子生成装置について、図面を参照しながら説明する。本実施の形態による識別子生成装置は、階層化されたオブジェクトに対応する子階層の識別子を自動的に生成することができるものである。
図1は、本実施の形態による識別子生成装置1の構成を示すブロック図である。本実施の形態による識別子生成装置1は、識別子記憶部11と、受付部12と、表示部13と、共通部特定部14と、変化部生成部15と、第1部分特定部16と、第2部分生成部17と、蓄積部18とを備える。
識別子記憶部11では、親階層のオブジェクトである1以上の親オブジェクトと、各親オブジェクトを識別する親識別子と、各親オブジェクトに対する子の階層のオブジェクトである複数の子オブジェクトと、一の子オブジェクトを識別する子識別子であり、基準となる子識別子である基準子識別子とが記憶される。一の親オブジェクトには、1以上の子オブジェクトが対応付けられているものとする。なお、通常は、一の親オブジェクトに2以上の子オブジェクトが対応付けられているものとする。また、子オブジェクトには、一の親オブジェクトが対応付けられているものとする。すなわち、親オブジェクトと子オブジェクトとは、木構造における親子の関係にあることになる。また、親オブジェクトには、その親オブジェクトに対する親の階層のオブジェクトである祖父オブジェクトが存在してもよい。さらに、それよりも階層が上である(階層が親側である)オブジェクトが存在してもよい。また、子オブジェクトには、その子オブジェクトに対する子の階層のオブジェクトである孫オブジェクトが存在してもよい。さらに、それよりも階層が下である(階層が子側である)オブジェクトが存在してもよい。なお、本実施の形態では、主に親子関係のオブジェクト、または親子孫関係のオブジェクトについて説明する。そのオブジェクトは、全体の木構造における部分木構造を形成するものであってもよい。識別子記憶部11で記憶されている親オブジェクトは、複数であってもよい。すなわち、識別子記憶部11では、複数の親オブジェクトと、その複数の親オブジェクトにそれぞれ対応する複数の親識別子と、その各親オブジェクトにそれぞれ対応する複数の子オブジェクトと、一の子オブジェクトを識別する基準子識別子とが記憶されてもよい。オブジェクトは、階層関係を有するもの、あるいは、木構造の各ノードとなるものの名称であってもよい。例えば、オブジェクトは、組織における階層化された部署名であってもよく、その部や課、グループ等を構成する構成員名であってもよく、その組織名であってもよい。例えば、親オブジェクトが部の名称であり、子オブジェクトが課の名称であり、孫オブジェクトが構成員名であってもよい。また、例えば、親オブジェクトが組織の名称であり、子オブジェクトが部の名称であってもよい。また、例えば、親オブジェクトが課の名称であり、子オブジェクトがグループの名称であってもよい。また、例えば、親オブジェクトがグループの名称であり、子オブジェクトが構成員名であってもよい。また、各階層のオブジェクトは、順序を持っているものであってもよい。その順序は、例えば、テーブル(表)における上下の順序であってもよい。なお、親識別子、子識別子、後述する孫識別子等のオブジェクトを識別する識別子は、通常、文字(キャラクタ)の並びである。文字は、数字を含んでもよく、アルファベットを含んでもよく、カタカナや平仮名を含んでもよく、漢字を含んでもよく、記号を含んでもよく、その他の文字を含んでもよい。本実施の形態では、識別子が数字とアルファベットから構成される場合について主に説明する。なお、後述するように、蓄積部18が、基準子識別子以外の子識別子や、孫オブジェクトを識別する識別子である孫識別子を識別子記憶部11に蓄積する。したがって、その蓄積の後には、識別子記憶部11において、親オブジェクトと、その親オブジェクトを識別する親識別子と、親オブジェクトに対応する複数の子オブジェクトと、その子オブジェクトを識別する子識別子とが記憶されるようになる。さらに、孫オブジェクトも存在する場合には、蓄積部18による蓄積の後には、識別子記憶部11において、子オブジェクトに対応する複数の孫オブジェクト、及び、その孫オブジェクトを識別する孫識別子も記憶されるようになる。なお、識別子記憶部11では、オブジェクトの親子関係(木構造)を示す情報も記憶されているものとする。その情報は、例えば、各オブジェクト(ノード)の識別子と、そのオブジェクトの親のオブジェクトの識別子とを対応付ける情報であってもよい。その対応付けは、例えば、同じレコードに含まれることによって示されてもよく、ポインタ等を用いて示されてもよく、その他の方法によって示されてもよい。また、ある親オブジェクトの子(子ノード)である子オブジェクトをそれぞれ識別する複数の子識別子を、兄弟の子識別子と呼ぶこともある。ある子オブジェクトの子(子ノード)である孫オブジェクトをそれぞれ識別する複数の孫識別子についても、兄弟の孫識別子と呼ぶこともある。また、識別子記憶部11において、ある親識別子に対応する子識別子が1個だけ記憶されている場合には、その子識別子を基準子識別子と考えてもよい。一方、ある親識別子に対応する2以上の子識別子が記憶されている場合には、そのいずれかを基準子識別子と考えてもよい。その場合に、例えば、子識別子によって識別される子オブジェクトが順序を持っているのであれば、順序が後である子オブジェクトに対応する子識別子を基準子識別子と考えてもよく、あるいは、ランダムに選択した子識別子を基準子識別子と考えてもよく、その他の方法によって複数の子識別子から基準子識別子を選んでもよい。
識別子記憶部11にオブジェクトや識別子が記憶される過程は問わない。例えば、記録媒体を介してオブジェクトや識別子が識別子記憶部11で記憶されるようになってもよく、通信回線等を介して送信されたオブジェクトや識別子が識別子記憶部11で記憶されるようになってもよく、受付部12が受け付けたオブジェクトや識別子が識別子記憶部11で記憶されるようになってもよく、あるいは、蓄積部18が蓄積した識別子が識別子記憶部11で記憶されるようになってもよい。識別子記憶部11での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。識別子記憶部11は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。また、オブジェクトや識別子は、それらの情報の格納されている位置を示すポインタやアドレスの情報であってもよい。
受付部12は、子識別子を受け付ける。そして、受付部12は、受け付けた子識別子を識別子記憶部11に蓄積する。その蓄積の際に、受付部12は、受け付けた子識別子が識別する子オブジェクトに対応付けて蓄積してもよい。受付部12が受け付ける子識別子は、基準子識別子であってもよい。なお、受付部12は、基準子識別子以外の子識別子をも受け付けてもよい。また、受付部12は、子識別子以外の情報を受け付けてもよい。受付部12は、例えば、親識別子を受け付けてもよく、親オブジェクトを受け付けてもよく、子オブジェクトを受け付けてもよく、孫オブジェクトを受け付けてもよく、その他のオブジェクトや識別子を受け付けてもよく、あるいは、その他の情報を受け付けてもよい。また、受付部12は、子識別子以外の情報を受け付けた場合に、その受け付けた情報を識別子記憶部11に蓄積してもよい。その蓄積の際に、受付部12は、受け付けた情報が対応する識別子やオブジェクト等に対応付けて蓄積してもよい。
受付部12は、例えば、入力デバイス(例えば、キーボードやマウス、タッチパネルなど)から入力された子識別子等を受け付けてもよく、有線もしくは無線の通信回線を介して送信された子識別子等を受信してもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)から読み出された子識別子等を受け付けてもよい。なお、受付部12は、受け付けを行うためのデバイス(例えば、モデムやネットワークカードなど)を含んでもよく、あるいは含まなくてもよい。また、受付部12は、ハードウェアによって実現されてもよく、あるいは所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
表示部13は、識別子記憶部11で記憶されているオブジェクトや識別子を表示する。そのオブジェクトや識別子を表示する際に、表示部13は、それらの親子関係(木構造)が分かるように表示することが好適である。例えば、表示部13は、オブジェクトや識別子を木構造で表示してもよく、テーブル形式で表示してもよく、あるいは、その他の親子関係が分かる方法で表示してもよい。なお、表示部13は、それらの表示を行う表示デバイス(例えば、CRTや液晶ディスプレイなど)を含んでもよく、あるいは含まなくてもよい。また、表示対象の表示は、別の装置においてなされてもよい。その場合には、表示部13は、装置の外部に対して表示対象の情報を送信するものであってもよい。また、表示部13は、ハードウェアによって実現されてもよく、あるいは表示デバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
共通部特定部14は、識別子記憶部11で記憶されている基準子識別子と、その基準子識別子に対応する親階層の親識別子との共通する部分である共通部を特定する。この共通部は、後述する処理から明らかなように、親識別子から子識別子に継承される部分となる。なお、基準子識別子に対応する親識別子とは、基準子識別子によって識別される子オブジェクトの親(親ノード)である親オブジェクトを識別する親識別子のことである。通常、子識別子と親識別子とは、同じ文字数であるとする。そして、共通部特定部14は、各文字の位置(桁)ごとに両識別子を比較し、両識別子で共通する1以上の文字である共通部を取得する。なお、共通部は、通常、隣接する1以上の文字の並びである。したがって、共通部特定部14は、両識別子を先頭側から比較し、先頭の文字から、一致しなくなる文字の直前の文字までの文字の並びを共通部として取得してもよく、または、両識別子を後端側から比較し、後端の文字から、一致しなくなる文字の直前の文字までの文字の並びを共通部として取得してもよい。先頭の文字とは、文字が数字である場合には最上位の桁となる文字であり、日本語や英語の場合には、最も左側の文字となる。後端の文字とは、文字が数字である場合には最下位の桁となる文字であり、日本語や英語の場合には、最も右側の文字となる。本実施の形態では、共通部が、両識別子の先頭側の一致した文字の連続した並びである場合について主に説明する。例えば、親識別子が「A12300」であり、基準子識別子が「A12345」である場合には、共通部特定部14は、先頭の文字から4文字目までの文字の並びである共通部「A123」を特定する。ここで、共通部を特定するとは、その特定された共通部を図示しない記録媒体に蓄積することであってもよく、その特定された共通部を構成する各文字に対応付けてフラグ等を設定することであってもよく、あるいは、特定対象の文字の位置(桁の位置)を示す情報(例えば、先頭から4文字等)を図示しない記録媒体に蓄積することであってもよい。他の情報が特定される場合にも同様であるとする。ここで、基準子識別子と、それに対応する親識別子とを用いて共通部が特定されるため、一の親識別子に対して一の共通部が特定されることになる。なお、共通部特定部14は、あらかじめ決められた文字を含まない共通部を特定してもよく、あるいは、そうでなくてもよい。すなわち、共通部特定部14は、親識別子と子識別子との共通する部分であって、あらかじめ決められた文字でない部分である共通部を特定してもよく、そうでなくてもよい。そのあらかじめ決められた文字は、図示しない記録媒体で記憶されており、共通部特定部14は、そのあらかじめ決められた文字を読み出し、その文字を含まない共通部を特定してもよい。例えば、そのあらかじめ決められた文字は、「0」であってもよい。その場合には、例えば、親識別子が「1000」であり、基準子識別子が「1010」であるとすると、共通部特定部14は、先頭の文字から1文字目までの文字の並びである共通部「1」を特定してもよい。
また、識別子記憶部11で複数の親識別子が記憶されており、基準子識別子に対応しない親識別子が存在する場合には、共通部特定部14は、基準子識別子に対応する親識別子については、その基準子識別子と、その親識別子との共通する部分である共通部を特定し、基準子識別子に対応しない親識別子については、基準子識別子と親識別子とを用いて特定した共通部に対応する親識別子の部分である共通部を特定してもよい。具体的には、識別子記憶部11において、親識別子「100」、「200」と、親識別子「100」に対応する基準子識別子「110」とが記憶されていたとする。その場合には、例えば、共通部特定部14は、基準子識別子「110」に対応する親識別子「100」については、先頭の共通部「1」を特定し、基準子識別子「110」に対応しない親識別子「200」については、その共通部「1」に対応する位置の文字である共通部「2」を特定する。なお、識別子記憶部11で複数の親識別子が記憶されており、各親識別子に対応する基準子識別子も記憶されている場合には、親識別子ごとに、その親識別子に対応する共通部を、その親識別子と、その親識別子に対応する基準子識別子とを用いて生成してもよい。
変化部生成部15は、子識別子における共通部以外の部分であり、変化する部分である変化部を、基準子識別子から規則的に変化するように生成する。例えば、共通部が先頭側(後端側)の文字列である場合には、変化部は、識別子の先頭(後端)から共通部に対応する文字の並びを除いた部分となる。また、変化部を、基準子識別子から規則的に変化するように生成するとは、基準子識別子における変化部に対応する部分の文字列から、規則的に変化するように、変化部を生成することである。例えば、基準子識別子における変化部に対応する部分の文字列が数字である場合には、規則的な変化は、Nごとのインクリメントであってもよく、Nごとのデクリメントであってもよい。ここで、Nは1以上の整数である。また、例えば、基準子識別子における変化部に対応する部分の文字列がアルファベットやカタカナ、平仮名である場合には、規則的な変化は、アルファベット順や五十音順にM個だけ後のアルファベット等に変えることであってもよく、アルファベット順や五十音順にM個だけ前のアルファベット等に変えることであってもよい。ここで、Mは1以上の整数である。また、例えば、基準子識別子における変化部に対応する部分の文字列が漢字や記号である場合には、規則的な変化は、その漢字等に対応する文字コードにおける数字やアルファベット等を数字順やアルファベット順にLずつ変化させることであってもよく、その逆順にLずつ変化させることであってもよい。本実施の形態では、数字に対する規則的な変化が、1ごとのインクリメントである場合について主に説明する。なお、変化部が複数の文字の並びである場合には、後端側(最下位の桁側)から順番に変化させてもよく、先頭側(最上位の桁側)から順番に変化させてもよい。本実施の形態では、前者の場合について主に説明する。また、基準子識別子が二以上の文字種から構成されるものであり、変化部に、その二以上の文字種が含まれる場合に、変化部生成部15は、一の文字種に対応する部分のみを変化させてもよい。文字種とは、文字の種類であって、例えば、数字、アルファベット、カタカナ、平仮名、漢字、記号等である。その一の文字種を示す情報が図示しない記録媒体で記憶されており、変化部生成部15は、その情報を参照し、その一の文字種に対応する部分のみを変化させることによって変化部を生成してもよい。本実施の形態では、変化部生成部15が、数字に対応する部分のみを変化させて変化部を生成する場合について主に説明する。例えば、基準子識別子の変化部に対応する部分が「a12」や、「12a」、「1a2」である場合に、変化部生成部15は、それらを基準として、変化部「a13」、「a14」…や、変化部「13a」、「14a」…、変化部「1a3」、「1a4」…等を生成してもよい。また、変化部生成部15は、あらかじめ決められた文字でない部分を変化させた変化部を生成してもよい。そのあらかじめ決められた文字は、図示しない記録媒体で記憶されており、変化部生成部15は、そのあらかじめ決められた文字を読み出し、その文字でない部分を変化させた変化部を生成してもよい。例えば、そのあらかじめ決められた文字は、「0」であってもよい。その場合には、例えば、基準子識別子の変化部に対応する部分が「10」である場合に、変化部生成部15は、それを基準として、変化部「20」、「30」…を生成してもよい。変化部生成部15は、基準子識別子を用いて、その基準子識別子と兄弟関係にある子識別子の変化部を生成する。より具体的には、変化部生成部15は、基準子識別子を用いて、その基準子識別子で識別される子オブジェクトと兄弟関係にある子オブジェクトのうち、対応する子識別子が識別子記憶部11で記憶されていない子オブジェクトの数だけの変化部を生成する。なお、規則的な変化によって、変化部の生成対象となる子オブジェクトの数だけの変化部を生成することができない場合には、変化部生成部15は、規則的な変化によって生成できる個数の変化部だけを生成してもよい。例えば、変化部の生成対象となる子オブジェクトの数が5個であり、変化部生成部15が変化部「60」、「70」、「80」、「90」を作成した場合には、それ以上の変化部を生成することはできない。「90」の「9」を1だけインクリメントすると、桁上がりが発生するからである。したがって、その場合には、変化部生成部15は変化部を4個生成するだけであってもよい。変化部生成部15は、生成した変化部を図示しない記録媒体に蓄積してもよい。ここで、基準子識別子を用いて、兄弟関係にある複数の子識別子における変化部が生成されるため、一の親識別子に対して、その親識別子と親子関係にある子識別子に関する一以上の変化部が生成されることになる。
なお、識別子記憶部11において、複数の親識別子と、一の基準子識別子とが記憶されている場合に、変化部生成部15は、各親識別子に対応する子識別子の変化部を、その基準子識別子から規則的に変化するように生成してもよい。具体的には、基準子識別子と兄弟関係にある子識別子については、変化部生成部15は、前述のように変化部を生成する。一方、基準子識別子と兄弟関係にない子識別子については、変化部生成部15は、基準子識別子における変化部に対応する部分を1個目の変化部として生成し、その1個目の変化部から規則的に変化する2個目以降の変化部を生成してもよい。例えば、基準子識別子における変化部に対応する部分が「12」である場合に、変化部生成部15は、その基準子識別子と兄弟関係にない子識別子の変化部「12」、「13」、「14」…を生成してもよい。この場合にも、一の親識別子に対して、その親識別子と親子関係にある子識別子に関する一以上の変化部が生成されることになる。
なお、変化部生成部15は、受付部12による基準子識別子の受け付けに応じたタイミングで、その基準子識別子から規則的に変化するように変化部を生成してもよい。すなわち、ある基準子識別子が受け付けられた場合に、その基準子識別子を用いた変化部の生成が行われてもよい。受付部12による基準子識別子の受け付けに応じたタイミングとは、受付部12が基準子識別子を受け付けたタイミングであってもよく、その受け付けに応じた基準子識別子の蓄積が行われたタイミングであってもよく、あるいは、その受け付けに応じたその他のタイミングであってもよい。
次の第1部分特定部16及び第2部分生成部17は、孫識別子を生成する場合に用いられる構成要素である。したがって、孫識別子を生成する必要がない場合には、識別子生成装置1は、第1部分特定部16及び第2部分生成部17を備えていなくてもよい。
第1部分特定部16は、同じ親オブジェクトに対応する複数の子識別子の変化部において、変化部生成部15が規則的に変化させる部分である第1部分を特定する。例えば、変化部生成部15が変化部「12」、「13」、「14」、「15」を生成した場合には、後端の1文字「2」、「3」、「4」、「5」が各変化部に対応する第1部分となる。したがって、一の子識別子に対して一の第1部分が特定されることになる。
第2部分生成部17は、変化部における第1部分以外の部分である第2部分を、子識別子の第2部分から規則的に変化するように生成する。なお、規則的な変化は、変化部生成部15について説明した規則的な変化と同様であるとする。例えば、前述のように、変化部生成部15が変化部「12」、「13」、「14」、「15」を生成した場合には、先頭の1文字「1」が各変化部における第2部分となる。したがって、第2部分生成部17は、第2部分「2」、「3」、「4」…を生成する。第2部分生成部17は、生成した第2部分を図示しない記録媒体に蓄積してもよい。なお、通常、一の子識別子に対して一以上の第2部分が生成される。また、個数を別にすると、兄弟関係にある子識別子に対して生成される第2部分は同じとなる。
蓄積部18は、共通部特定部14が特定した共通部と、変化部生成部15が生成した変化部とを有する識別子であり、基準子識別子によって識別される子オブジェクトと同じ親オブジェクトを有する子オブジェクトの識別子である子識別子を識別子記憶部11に蓄積する。その結果、基準子識別子と兄弟関係にある子識別子が生成され、蓄積されたことになる。なお、その子識別子を蓄積する際に、蓄積部18は、その子識別子で識別される子オブジェクトに対応付けて蓄積してもよい。子オブジェクトが順序を有する場合には、その順序と変化部の変化の順(例えば、増加の順等)とが同じになるようにしてもよい。一の親識別子に対して、一の共通部が特定され、一以上の変化部が生成される。したがって、蓄積部18は、ある親識別子に対応する共通部と、その親識別子に対応する変化部とを組み合わせて蓄積することになる。したがって、識別子記憶部11において複数の親識別子が記憶されている場合には、蓄積部18は、親識別子ごとに、その親識別子に対応する共通部及び変化部を有する子識別子を蓄積することになる。この場合には、基準子識別子と兄弟関係にない子識別子も蓄積されうることになる。なお、蓄積部18は、識別子記憶部11で記憶されている親識別子と子識別子との共通する部分が存在しなかった場合、すなわち、共通部がヌル(Null)である場合に、変化部生成部15が生成した変化部である子識別子を識別子記憶部11に蓄積してもよい。この場合には、変化部がそのまま生成された子識別子となる。
識別子記憶部11において孫オブジェクトも記憶されている場合に、蓄積部18は、各孫オブジェクトを識別する識別子である孫識別子をも識別子記憶部11に蓄積してもよい。すなわち、蓄積部18は、ある孫オブジェクトに対応する子識別子の共通部と、その孫オブジェクトに対応する子識別子の第1部分と、その孫オブジェクトに対応する子識別子から生成された第2部分とを有する識別子である孫識別子(これによって、その孫オブジェクトが識別されることになる)を識別子記憶部11に蓄積してもよい。孫オブジェクトに対応する子識別子とは、孫オブジェクトの親(親ノード)のオブジェクトである子オブジェクトを識別する子識別子である。なお、その孫識別子を蓄積する際に、蓄積部18は、その孫識別子で識別される孫オブジェクトに対応付けて蓄積してもよい。
なお、上述した説明において、第2部分がヌルである場合もあるが、その場合には、孫識別子の生成ができないことになる。兄弟関係にある孫識別子がすべて同じになってしまうからである。
次に、識別子生成装置1の動作について図2のフローチャートを用いて説明する。
(ステップS101)表示部13は、識別子記憶部11で記憶されている識別子やオブジェクトを表示する。その表示の際に、識別子やオブジェクトの親子関係が分かるように表示することが好適である。また、識別子と、その識別子によって識別されるオブジェクトとの対応も分かるように表示することが好適である。
(ステップS102)受付部12は、識別子やオブジェクト等を受け付けたかどうか判断する。そして、受け付けた場合には、ステップS103に進み、そうでない場合には、ステップS104に進む。
(ステップS103)受付部12は、受け付けた識別子やオブジェクト等を識別子記憶部11に蓄積する。そして、ステップS101に戻る。
(ステップS104)蓄積部18は、識別子の生成を行うタイミングであるかどうか判断する。そして、識別子の生成を行うタイミングである場合には、ステップS105に進み、そうでない場合には、ステップS102に戻る。なお、蓄積部18は、例えば、識別子生成装置1が識別子の生成の指示を受け付けた場合に、識別子の生成を行うタイミングであると判断してもよく、基準子識別子が受け付けられ、蓄積された場合に、識別子の生成を行うタイミングであると判断してもよく、あるいは、その他のタイミングで識別子の生成を行うタイミングであると判断してもよい。また、ここでは蓄積部18がこの判断を行う場合について説明するが、それ以外の構成要素がこの判断を行ってもよいことは言うまでもない。
(ステップS105)蓄積部18は、カウンタiを1に設定する。
(ステップS106)共通部特定部14は、識別子記憶部11で記憶されているi番目の親識別子に対応する共通部を特定する。
(ステップS107)変化部生成部15は、識別子記憶部11で記憶されているi番目の親識別子に対応する変化部を生成する。その変化部の個数は、i番目の親識別子に対応する子オブジェクトのうち、子識別子が対応付けられていない子オブジェクトの個数である。なお、前述のように、規則的な変化によって、その個数だけの生成を行うことができない場合には、変化部生成部15は、生成できる範囲の個数だけ変化部を生成してもよい。また、その生成された変化部は、図示しない記録媒体で記憶されてもよい。
(ステップS108)蓄積部18は、識別子記憶部11で記憶されているi番目の親識別子に対応する子識別子を識別子記憶部11に蓄積する。その子識別子は、ステップS106で特定された共通部と、ステップS107で生成された変化部とから構成される識別子である。
(ステップS109)蓄積部18は、識別子記憶部11で記憶されているi番目の親識別子に対応する孫オブジェクトが存在するかどうか判断する。そして、孫オブジェクトが存在する場合には、ステップS110に進み、そうでない場合には、ステップS111に進む。
(ステップS110)蓄積部18等は、孫識別子を生成する処理を行う。この処理の詳細については、図3のフローチャートを用いて後述する。
(ステップS111)蓄積部18は、カウンタiを1だけインクリメントする。
(ステップS112)蓄積部18は、識別子記憶部11でi番目の親識別子が記憶されているかどうか判断する。そして、i番目の親識別子が記憶されている場合には、ステップS106に戻り、そうでない場合には、ステップS101に戻る。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
図3は、図2のフローチャートにおける孫識別子の生成の処理(ステップS110)の詳細を示すフローチャートである。
(ステップS201)蓄積部18は、カウンタjを1に設定する。
(ステップS202)第1部分特定部16は、識別子記憶部11で記憶されているi番目の親識別子に対応するj番目の子識別子における第1部分を特定する。
(ステップS203)第2部分生成部17は、識別子記憶部11で記憶されているi番目の親識別子に対応するj番目の子識別子に応じた第2部分を生成する。その第2部分の個数は、i番目の親識別子に対応するj番目の子識別子に応じた孫オブジェクトの個数である。なお、規則的な変化によって、その個数だけの生成を行うことができない場合には、第2部分生成部17は、生成できる範囲の個数だけ第2部分を生成してもよい。また、その生成された第2部分は、図示しない記録媒体で記憶されてもよい。
(ステップS204)蓄積部18は、i番目の親識別子に対応するj番目の子識別子に応じた孫識別子を識別子記憶部11に蓄積する。その孫識別子は、ステップS106で特定された共通部と、ステップS202で特定された第1部分と、ステップS203で生成された第2部分とから構成される識別子である。
(ステップS205)蓄積部18は、カウンタjを1だけインクリメントする。
(ステップS206)蓄積部18は、識別子記憶部11において、i番目の親識別子に対応するj番目の子識別子が存在するかどうか判断する。そして、存在する場合には、ステップS202に戻り、そうでない場合には、図2のフローチャートに戻る。
ここで、子識別子や孫識別子の生成方法について、具体的に説明する。この具体例において、共通部は、文字の並びの先頭側の共通部分であるとする。また、規則的な変化は、1ごとのインクリメントであるとする。また、数字「0」は、変化部において変化させない文字にあらかじめ決められているものとする。また、変化部において、アルファベットや数字のうち、数字が変化対象となる一の文字種にあらかじめ決められているものとする。
例えば、図4のように、親識別子「100」と、それに対応する基準子識別子「101」とが記憶されていたとする。その場合には、共通部特定部14は、先頭からの2文字である共通部「10」を特定する。また、変化部生成部15は、基準子識別子の変化部「1」を基準として、変化部「2」、「3」、「4」、「5」を生成する。その結果、新たな4個の子識別子「102」、「103」、「104」、「105」が生成され、蓄積されることになる。なお、この具体例では、親識別子「100」に対応する子オブジェクトが5個であるものとする(以下の具体例でも同様とする)。
また、例えば、図5のように、親識別子「100」と、それに対応する基準子識別子「512」とが記憶されていたとする。その場合には、共通部特定部14は、ヌルの共通部を特定することになる。すなわち、共通部はないことになる。したがって、変化部生成部15は、基準子識別子の変化部「512」を基準として、変化部「513」、「514」、「515」、「516」を生成する。その変化部がそのまま、生成された子識別子となり、蓄積されることになる。
また、例えば、図6のように、親識別子「100」と、それに対応する基準子識別子「110」とが記憶されていたとする。その場合には、共通部特定部14は、先頭からの1文字である共通部「1」を特定する。また、変化部生成部15は、基準子識別子の変化部「10」を基準として、変化部「20」、「30」、「40」、「50」を生成する。数字「0」は変化させない文字に設定されているため、変化部生成部15は、変化部「11」、「12」…を生成するのではなく、変化部「20」、「30」…を生成することになる。その結果、新たな4個の子識別子「120」、「130」、「140」、「150」が生成され、蓄積されることになる。
また、例えば、図7のように、親識別子「100」と、それに対応する基準子識別子「11a」とが記憶されていたとする。その場合には、共通部特定部14は、先頭からの1文字である共通部「1」を特定する。また、変化部生成部15は、基準子識別子の変化部「1a」を基準として、変化部「2a」、「3a」、「4a」、「5a」を生成する。アルファベットは変化対象の文字種ではなく、数字が変化対象の文字種に設定されているため、変化部生成部15は、変化部「1b」、「1c」…を生成するのではなく、変化部「2a」、「3a」…を生成することになる。その結果、新たな4個の子識別子「12a」、「13a」、「14a」、「15a」が生成され、蓄積されることになる。
また、例えば、図8のように、親識別子「100」と、それに対応する基準子識別子「1a1」とが記憶されていたとする。その場合も、前述の図7の例と同様に、共通部「1」が特定され、変化部「a2」、「a3」、「a4」、「a5」が生成される。その結果、新たな4個の子識別子「1a2」、「1a3」、「1a4」、「1a5」が生成され、蓄積されることになる。
また、例えば、図9のように、親識別子「100」と、それに対応する基準子識別子「106」とが記憶されていたとする。その場合には、共通部特定部14は、先頭からの2文字である共通部「10」を特定する。また、変化部生成部15は、基準子識別子の変化部「6」を基準として、変化部「7」、「8」、「9」を生成する。親識別子「100」に対応する子オブジェクトが5個存在するため、本来であれば、変化部生成部15は、4個の変化部を生成しなくてはならないが、文字数を増やすことなく(すなわち、桁上げをすることなく)変化部「9」をさらに1だけインクリメントすることはできないため、それ以上の変化部は生成されないことになる。その結果、新たな3個の子識別子「107」、「108」、「109」が生成され、蓄積されることになる。この場合には、1個の子オブジェクトに対応する子識別子は、生成されないことになる。
また、例えば、図10のように、親識別子「100」と、それに対応する基準子識別子「101」とが記憶されており、さらに親識別子「200」が記憶されていたとする。なお、親識別子「200」に対応する子識別子は記憶されておらず、その親識別子「200」に対応する子オブジェクトの個数も5個であるとする。その場合には、親識別子「100」については、図4の例と同様に、共通部特定部14は、共通部「10」を特定する。また、変化部生成部15は、変化部「2」、「3」、「4」、「5」を生成する。その結果、親識別子「100」に対応する新たな4個の子識別子「102」、「103」、「104」、「105」が生成され、蓄積されることになる。また、親識別子「200」については、対応する基準子識別子が存在しないため、共通部特定部14は、親識別子「100」の共通部「10」に対応する部分である先頭からの2文字である共通部「20」を特定する。また、変化部生成部15は、基準子識別子の変化部「1」を基準として、その基準子識別子の変化部「1」を含めた5個の変化部「1」、「2」、「3」、「4」、「5」を生成する。その結果、親識別子「200」に対応する新たな5個の子識別子「201」、「202」、「203」、「204」、「205」が生成され、蓄積されることになる。
最後に、図11,図12を用いて、孫識別子の生成について説明する。例えば、図11のように、親識別子「100」と、それに対応する基準子識別子「110」とが記憶されていたとする。その場合には、図6の例と同様に、共通部「1」が特定され、変化部「20」、「30」、「40」、「50」が生成される。その結果、図11で示されるように、新たな4個の子識別子「120」、「130」、「140」、「150」が生成され、蓄積されることになる。その後、第1部分特定部16は、変化部「10」、「20」、「30」、「40」、「50」において、規則的に変化させる部分である第1部分を特定する。その第1部分は、変化部の先頭の1文字であり、変化部「10」に対しては「1」、変化部「20」に対しては「2」、変化部「30」に対しては「3」、変化部「40」に対しては「4」、変化部「50」に対しては「5」となる。また、第2部分生成部17は、子識別子「110」の変化部「10」における第1部分以外の部分である第2部分「0」を基準として、第2部分「1」、「2」、「3」、「4」、「5」を生成する。その結果、図12で示されるように、子識別子「110」に対応する新たな孫識別子「111」、「112」、「113」、「114」、「115」が生成され、蓄積されることになる。他の子識別子「120」等についても同様にして、新たな孫識別子が生成され、蓄積されることになる。
次に、本実施の形態による識別子生成装置1の動作について、具体例を用いて説明する。この具体例では、識別子記憶部11において、図13で示されるオブジェクトや識別子が記憶されているものとする。図13において、親オブジェクト「東日本営業課」、「西日本営業課」等が記憶されている。親オブジェクト「東日本営業課」を識別する識別子である親識別子「SD100」も記憶されている。また、親オブジェクト「西日本営業課」を識別する識別子である親識別子「SD200」も記憶されている。また、親オブジェクト「東日本営業課」の子ノードである3個の子オブジェクト「営業第1グループ」、「営業第2グループ」、「営業第3グループ」も記憶されている。その3個の子オブジェクトを識別する識別子である子識別子は記憶されていない。また、親オブジェクト「西日本営業課」の子ノードである3個の子オブジェクト「営業第1グループ」、「営業第2グループ」、「営業第3グループ」も記憶されている。その3個の子オブジェクトを識別する識別子である子識別子も記憶されていない。
まず、ユーザが識別子生成装置1を操作し、識別子を生成する処理を開始させたとする。すると、表示部13は、図13で示されるオブジェクトや識別子をディスプレイに表示する(ステップS101)。その結果、そのユーザは、図13に対応する表示を見ることができ、オブジェクトの親子関係や、親識別子等を確認することができる。その状況において、ユーザが、ポインティングデバイスやキーボードを操作し、東日本営業課の営業第1グループに対応する子識別子「SD110」を入力したとする。すると、その子識別子「SD110」は受付部12で受け付けられ(ステップS102)、東日本営業課の営業第1グループを識別する子識別子として識別子記憶部11に蓄積される(ステップS103)。その結果、識別子記憶部11で記憶されている情報は、図14で示されるようになる。新たに蓄積された子識別子「SD110」が基準子識別子となる。
基準子識別子である新たな子識別子が蓄積されたため、蓄積部18は、識別子の生成を行うタイミングであると判断する(ステップS104)。そして、蓄積部18は、1番目の親識別子「SD100」に対応する共通部を特定する旨の指示を共通部特定部14に渡し、1番目の親識別子「SD100」に対応する変化部を生成する旨の指示を変化部生成部15に渡す(ステップS105)。その指示に応じて、共通部特定部14は、親識別子「SD100」と、その親識別子に対応する基準子識別子「SD110」との先頭側の共通部「SD1」を特定し、その共通部を特定するための先頭からの文字数「3」を、親識別子「SD100」に対応付けて図示しない記録媒体に蓄積する(ステップS106)。また、共通部特定部14は、その文字数「3」を変化部生成部15に渡す。変化部生成部15は、その文字数を受け取ると、蓄積部18からの指示に応じて、親識別子「SD100」に対応する基準子識別子「SD110」における文字数「3」に対応する共通部「SD1」以外の部分である後端側の変化部「10」を特定する。また、変化部生成部15は、親識別子「SD100」に対応する子オブジェクトのうち、子識別子の対応付けられていない子オブジェクト「営業第2グループ」、「営業第3グループ」を特定する。そして、変化部生成部15は、その特定した2個の子オブジェクトに対応する変化部「20」、「30」を生成し、親識別子「SD100」に対応付けて図示しない記録媒体に蓄積する(ステップS107)。その後、蓄積部18は、図示しない記録媒体から、親識別子「SD100」に対応する共通部を特定するための文字数「3」と、親識別子「SD100」に対応する変化部「20」、「30」とを読み出し、親識別子「SD100」から、その文字数に応じた共通部「SD1」を取得する。そして、蓄積部18は、その共通部が先頭側、読み出した変化部が後端側となる新たな子識別子「SD120」、「SD130」を生成する。そして、その新たな子識別子を、親識別子「SD100」に対応する子オブジェクトのうち、子識別子の対応付けられていない子オブジェクト「営業第2グループ」、「営業第3グループ」をそれぞれ識別する子識別子として識別子記憶部11に蓄積する(ステップS108)。その結果、識別子記憶部11で記憶されている情報が図15で示されるようになる。
この具体例の場合には、孫オブジェクトが存在しないため、蓄積部18は、孫オブジェクトが存在しないと判断し(ステップS109)、2番目の親識別子「SD200」に対応する共通部を特定する旨の指示を共通部特定部14に渡し、2番目の親識別子「SD200」に対応する変化部を生成する旨の指示を変化部生成部15に渡す(ステップS111,S112)。この場合には親識別子「SD200」に対応する基準子識別子が存在しないため、共通部特定部14は、受け取った指示に応じて、1番目の親識別子「SD100」に対応する共通部を特定するための文字数「3」を図示しない記録媒体から読み出し、その共通部を特定するための文字数「3」を、親識別子「SD200」に対応付けて図示しない記録媒体に蓄積する(ステップS106)。また、共通部特定部14は、その文字数「3」を変化部生成部15に渡す。この場合には親識別子「SD200」に対応する基準子識別子が存在しないため、変化部生成部15は、その文字数を受け取ると、蓄積部18からの指示に応じて、基準子識別子「SD110」における文字数「3」に対応する共通部「SD1」以外の部分である後端側の変化部「10」を特定する。また、変化部生成部15は、親識別子「SD200」に対応する子オブジェクトのうち、子識別子の対応付けられていない子オブジェクト「営業第1グループ」、「営業第2グループ」、「営業第3グループ」を特定する。そして、変化部生成部15は、その特定した3個の子オブジェクトに対応する変化部「10」、「20」、「30」を生成する。前述のように、基準子識別子と兄弟関係にない子識別子の変化部を生成する場合には、生成された変化部に基準子識別子の変化部も含まれることになる。そして、変化部生成部15は、その生成した変化部を、親識別子「SD200」に対応付けて図示しない記録媒体に蓄積する(ステップS107)。その後、蓄積部18は、図示しない記録媒体から、親識別子「SD200」に対応する共通部を特定するための文字数「3」と、親識別子「SD200」に対応する変化部「10」、「20」、「30」とを読み出し、親識別子「SD200」から、その文字数に応じた共通部「SD2」を取得する。そして、蓄積部18は、その共通部が先頭側、読み出した変化部が後端側となる新たな子識別子「SD210」、「SD220」、「SD230」を生成する。そして、その新たな子識別子を、親識別子「SD200」に対応する子オブジェクトのうち、子識別子の対応付けられていない子オブジェクト「営業第1グループ」、「営業第2グループ」、「営業第3グループ」をそれぞれ識別する子識別子として識別子記憶部11に蓄積する(ステップS108)。その結果、識別子記憶部11で記憶されている情報が図16で示されるようになる。このようにして、順次、子オブジェクトに対応する子識別子が生成され、蓄積されていくことになる。そして、子識別子の蓄積がすべて終了すると、子識別子を含む表示が行われることになる(ステップS112,S101)。その結果、ユーザは、生成された子識別子を知ることができるようになる。なお、識別子生成装置1は、識別子記憶部11で記憶されている子識別子等を出力する図示しない出力部を備えており、その出力部が出力した子識別子等が、例えば、外部の装置等において用いられてもよい。その出力部による出力は、例えば、表示デバイス(例えば、CRTや液晶ディスプレイなど)への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、記録媒体への蓄積でもよい。なお、その図示しない出力部は、出力を行うデバイス(例えば、表示デバイスやプリンタなど)を含んでもよく、あるいは含まなくてもよい。また、その出力部は、ハードウェアによって実現されてもよく、あるいは、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
次に、孫識別子も生成する場合の具体例について簡単に説明する。この具体例の場合には、識別子記憶部11において、図17で示されるオブジェクトや識別子が記憶されているものとする。図17において、親オブジェクト、親識別子、子オブジェクト、子識別子については、図13と同様であり、その説明を省略する。図17の場合には、親オブジェクト「東日本営業課」の子オブジェクト「営業第1グループ」の子ノードである3個の孫オブジェクト「AABB」、「CCDD」「EEFF」も記憶されている。その3個の孫オブジェクトを識別する識別子である孫識別子は記憶されていない。また、親オブジェクト「東日本営業課」の子オブジェクト「営業第2グループ」の子ノードである3個の孫オブジェクト「GGHH」、「JJKK」「LLMM」も記憶されている。その3個の孫オブジェクトを識別する識別子である孫識別子は記憶されていない。さらに、親オブジェクト「東日本営業課」の子オブジェクト「営業第3グループ」の子ノードである孫オブジェクト「NNPP」等も記憶されている。その孫オブジェクトを識別する識別子である孫識別子は記憶されていない。なお、「AABB」等は、グループの構成員の氏名であるとする。
上述の具体例と同様に、ユーザが識別子生成装置1を操作し、東日本営業課の営業第1グループに対応する子識別子「SD110」を入力したとする。すると、それに応じて基準子識別子「SD110」が受け付けられ、識別子記憶部11に蓄積される(ステップS101〜S103)。また、その入力された子識別子を含む表示がなされ、親識別子「SD100」に対応する子識別子の生成、蓄積が行われる(ステップS101,S104〜S108)。その後、蓄積部18は、孫オブジェクトが存在すると判断し(ステップS109)、孫オブジェクトに対応する孫識別子を生成する処理を行う(ステップS110)。
具体的には、第1部分特定部16は、1番目の親識別子「SD100」に対応する共通部を特定するための文字数「3」を図示しない記録媒体から読み出し、それを用いて、第1の親識別子「SD100」に対応する子識別子「SD110」、「SD120」、「SD130」の変化部「10」、「20」、「30」を特定する。また、第1部分特定部16は、それらの変化部を用いて、各変化部で変化している先頭側の1文字が第1部分であると判断し、1番目の親識別子「SD100」に対応する1番目の子識別子「SD110」の第1部分「1」を特定する。そして、その第1部分の位置は、子識別子の全体としては、先頭から4文字目から4文字目までとなるため、第1部分特定部16は、子識別子「SD110」に対応付けて、第1部分の位置を示す情報「4,4」を図示しない記録媒体に蓄積する(ステップS201,S202)。その「4,4」は、先頭から4文字目から4文字目までの意味である。また、第1部分特定部16は、その「4,4」を第2部分生成部17に渡す。第2部分生成部17は、その「4,4」を受け取ると、1番目の親識別子「SD100」に対応する共通部を特定するための文字数「3」を図示しない記録媒体から読み出す。また、第2部分生成部17は、1番目の親識別子「SD100」に対応する1番目の子識別子「SD110」において、先頭側の3文字である共通部「SD1」と、先頭から4文字目から4文字目までである第1部分「1」とを特定する。そして、第2部分生成部17は、共通部でもなく、第1部分でもない部分、すなわち、子識別子「SD110」の第2部分「0」を特定する。また、第2部分生成部17は、子識別子「SD110」に対応する孫オブジェクトの数「3」を特定し、その特定した第2部分「0」から規則的に変化させた3個の第2部分「1」、「2」、「3」を生成し、子識別子「SD110」に対応付けて図示しない記録媒体に蓄積する(ステップS203)。その後、蓄積部18は、図示しない記録媒体から、親識別子「SD100」に対応する共通部を特定するための文字数「3」と、子識別子「SD110」に対応する第1部分の位置を示す情報「4,4」と、子識別子「SD110」に対応する第2部分「1」、「2」、「3」とを読み出し、子識別子「SD110」から、共通部「SD1」と、第1部分「1」とを特定する。そして、蓄積部18は、先頭側の共通部と、「4,4」の位置の第1部分と、残りの部分の第2部分とから構成された新たな孫識別子「SD111」、「SD112」、「SD113」を生成し、それらを3個の孫オブジェクトにそれぞれ対応付けて識別子記憶部11に蓄積する(ステップS204)。また、同様にして、子識別子「SD120」、「SD130」に対しても、蓄積部18等は、孫識別子を生成し、蓄積する処理を行う(ステップS205,S206,S202〜S204)。その結果、識別子記憶部11で記憶されている情報は、図18で示されるようになる。さらに、他の子識別子の生成や蓄積、その生成された子識別子に対応する孫識別子の生成や蓄積が順次、行われることになる。このようにして、孫識別子についても自動的に生成することができる。
以上のように、本実施の形態による識別子生成装置1によれば、親識別子から共通部を継承すると共に、変化部を基準子識別子から変化させることによって、子オブジェクトに対応する子識別子を自動的に生成することができる。したがって、階層関係を考慮した子識別子の生成が可能となる。また、孫オブジェクトが存在する場合には、その孫オブジェクトに対応する孫識別子をも生成することができる。
なお、本実施の形態では、子識別子の生成を開始する際に、識別子記憶部11に一の子識別子のみが記憶されており、その一の子識別子が基準子識別子である場合について説明したが、識別子記憶部11に二以上の子識別子が記憶されていてもよい。その場合であっても、一の親識別子に対応する子識別子が1個である場合には、その一の子識別子が基準子識別子であるとする。一方、一の親識別子に対応する子識別子が2個以上である場合には、最後の子識別子を基準子識別子としてもよい。例えば、図19で示されるように2個の子識別子が入力されている場合には、図中の下側(最後側)の子識別子「103」を基準子識別子として、子識別子の生成を行ってもよい。この場合における子識別子の生成方法は前述の通りであり、その説明を省略する。なお、入力された複数の子識別子の増減が、変化部生成部15が変化部を生成する増減の規則と異なる場合には、子識別子を生成しないようにしてもよい。例えば、変化部の生成の規則が1ずつのインクリメント(すなわち増加)である場合に、図20で示されるように、入力された2個の子識別子が、減少するように入力された場合には、蓄積部18は、入力された子識別子と兄弟関係にある子識別子を生成しないようにしてもよい。また、他の親識別子に対応する子識別子の生成も行わないようにしてもよい。
また、本実施の形態において、識別子記憶部11で記憶されるオブジェクトや識別子のデータ構造を問わないことは言うまでもない。例えば、図16で示される情報に代えて、図21(a)で示される情報と、図21(b)で示される情報とが識別子記憶部11で記憶されてもよい。図21(a)は、親オブジェクトと、その親オブジェクトを識別する親識別子とを対応付ける情報である。また、図21(b)は、子オブジェクトと、その子オブジェクトを識別する子識別子と、その子オブジェクトの親ノードである親オブジェクトを識別する親ノード識別子とを対応付ける情報である。したがって、例えば、子識別子「SD110」に対応する親識別子は、「SD100」であることが図21(b)の1番目のレコードから分かる。また、子識別子「SD110」に対応する親オブジェクトが、その子識別子「SD110」に対応する親ノード識別子「SD100」で識別される親オブジェクト「東日本営業課」であることが、図21(b)の1番目のレコードと、図21(a)の1番目のレコードとから分かる。また、識別子記憶部11で記憶されるオブジェクトや識別子の階層関係(木構造)を示すデータ構造がこれら以外であってもよいことは言うまでもない。
また、本実施の形態では、第1部分特定部16と、第2部分生成部17とを用いて孫識別子を生成する場合について説明したが、そうでなくてもよい。親識別子と、基準子識別子とを用いて子識別子を生成した方法と同様にして、子識別子と、基準孫識別子とを用いて孫識別子を生成してもよい。その場合には、子識別子が親識別子であると考え、孫識別子が子識別子であると考えれば、共通部特定部14と、変化部生成部15と、蓄積部18とを用いて、上述の子識別子を生成した方法により、孫識別子をも生成することができる。したがって、その場合や、孫識別子を生成する必要がない場合には、識別子生成装置1は、第1部分特定部16や第2部分生成部17を備えていなくてもよい。
また、本実施の形態では、識別子等を受け付けて蓄積する受付部12が存在する場合について説明したが、そうでなくてもよい。受付部12が存在しない場合には、受付部12を介する以外の方法によって識別子記憶部11で記憶されたオブジェクトや識別子を用いて、子識別子等の生成が行われてもよい。また、その子識別子等を生成するタイミングは、例えば、識別子生成装置1が、その生成の指示を受け付けたことであってもよい。
また、本実施の形態では、変化部において、あらかじめ決められた文字(例えば、「0」など)でない部分を変化させる場合について主に説明したが、そうでなくてもよい。変化部において、すべての文字が変化されてもよい。
また、本実施の形態では、変化部において、二以上の文字種のうち、あらかじめ決められた一の文字種(例えば、数字など)に対応する部分のみを変化させる場合について主に説明したが、そうでなくてもよい。変化部において、すべての文字種を変化させてもよい。
また、本実施の形態では、基準子識別子に対応しない親識別子についても、他の親識別子に対応する基準子識別子を用いて子識別子の生成を行う場合について主に説明したが、そうでなくてもよい。基準子識別子に対応する親識別子についてのみ、その親識別子に対応する子識別子の生成を行ってもよい。
また、本実施の形態では、オブジェクトが組織における部署名等である場合について説明したが、オブジェクトはどのようなものであってもよいことは言うまでもない。例えば、スプレッドシートのデータにおける各セルがオブジェクトであると考えてもよい。例えば、セル「A1」に数値「100」が入力されている場合に、その数値の入力されているセル「A1」がオブジェクトであり、数値「100」がその識別子であると考えてもよい。また、カラム(列)Aのセルが親オブジェクトであり、カラム(列)Bのセルが子オブジェクトであると考えてもよい。そして、蓄積部18は、上述した方法と同様にして、子オブジェクトのセルに対して、生成した子識別子(数値)を入力してもよい。
また、本実施の形態では、識別子記憶部11で記憶されているオブジェクトや識別子をユーザが見ることができるように表示部13を備えた場合について説明したが、そうでなくてもよい。識別子記憶部11で記憶されているオブジェクトや識別子をユーザが見る必要がない場合には、識別子生成装置1は、表示部13を備えていなくてもよい。
また、本実施の形態では、共通部が、隣接した1以上の文字の並びである場合について主に説明したが、そうでなくてもよい。共通部は、離散した文字の並びの集合であってもよい。例えば、親識別子が「AB100XY」であり、基準子識別子が「AB111XY」である場合に、先頭側の「AB1」と後端側の「XY」との集合である「AB1__XY」が共通部であってもよい。なお、アンダーバーの位置は、共通部に含まれないものとする。
また、上記実施の形態では、識別子生成装置1がスタンドアロンである場合について説明したが、識別子生成装置1は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、表示部や受付部は、通信回線を介して入力を受け付けたり、情報を出力したりしてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、あるいは、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いるしきい値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していない場合であっても、ユーザが適宜、それらの情報を変更できるようにしてもよく、あるいは、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、識別子生成装置1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、あるいは、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。なお、上記実施の形態における識別子生成装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、親階層のオブジェクトである1以上の親オブジェクトと、各親オブジェクトを識別する親識別子と、各親オブジェクトに対する子の階層のオブジェクトである複数の子オブジェクトと、一の子オブジェクトを識別する子識別子であり、基準となる子識別子である基準子識別子とが記憶される識別子記憶部にアクセス可能なコンピュータを、基準子識別子と、基準子識別子に対応する親階層の親識別子との共通する部分である共通部を特定する共通部特定部、子識別子における共通部以外の部分であり、変化する部分である変化部を、基準子識別子から規則的に変化するように生成する変化部生成部、共通部特定部が特定した共通部と、変化部生成部が生成した変化部とを有する識別子であり、基準子識別子によって識別される子オブジェクトと同じ親オブジェクトを有する子オブジェクトの識別子である子識別子を識別子記憶部に蓄積する蓄積部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を特定する特定部や、情報を蓄積する蓄積部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図22は、上記プログラムを実行して、上記実施の形態による識別子生成装置1を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図22において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905、FD(Floppy(登録商標) Disk)ドライブ906を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図23は、コンピュータシステム900の内部構成を示す図である。図23において、コンピュータ901は、CD−ROMドライブ905、FDドライブ906に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANやWAN等への接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による識別子生成装置1の機能を実行させるプログラムは、CD−ROM921、またはFD922に記憶されて、CD−ROMドライブ905、またはFDドライブ906に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921やFD922、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態による識別子生成装置1の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。