JP2019049854A - プログラム及び情報処理システム - Google Patents

プログラム及び情報処理システム Download PDF

Info

Publication number
JP2019049854A
JP2019049854A JP2017173600A JP2017173600A JP2019049854A JP 2019049854 A JP2019049854 A JP 2019049854A JP 2017173600 A JP2017173600 A JP 2017173600A JP 2017173600 A JP2017173600 A JP 2017173600A JP 2019049854 A JP2019049854 A JP 2019049854A
Authority
JP
Japan
Prior art keywords
data
information processing
array
stored
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017173600A
Other languages
English (en)
Inventor
大 益滿
Masaru Masumitsu
大 益滿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Masumitsu Dai
Original Assignee
Masumitsu Dai
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Masumitsu Dai filed Critical Masumitsu Dai
Priority to JP2017173600A priority Critical patent/JP2019049854A/ja
Publication of JP2019049854A publication Critical patent/JP2019049854A/ja
Pending legal-status Critical Current

Links

Abstract

【課題】情報処理装置から他の情報処理装置へデータを転送する場合でも、転送したデータを他の情報処理装置で使用するために必要な他のデータを含める。
【解決手段】本発明は、データ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、第1のデータ集合体を他の情報処理装置に転送するためのデータを、前記第1のデータ集合体を使用するために必要な情報を0個以上含めて作成する処理を情報処理装置に実行させる。
【選択図】図3

Description

本発明は、情報処理装置から他の情報処理装置へデータを転送することを可能にするプログラム及び情報処理システムであって、前記他の情報処理装置で前記データを使用するために必要な他のデータを0個以上含めたデータを転送するプログラム及び情報処理システムに関する。
従来、情報処理装置から他の情報処理装置へデータを転送することを可能にするプログラム及び情報処理システムが知られている。
特願2017−096262
しかし、特許文献1に開示された技術では、転送したデータを他の情報処理装置で使用するために必要な他のデータを含めることが難しいいう問題がある。ここで、データ集合体は、配列、連想配列、構造体、ユーザ定義型の変数、クラス及び共用体等、0個以上の値を持つことができる変数である。変数には、オブジェクト、及びオブジェクトのインスタンスが含まれる。構造体等のデータ集合体は、夫々に変数である0個以上のメンバを含んでいる。データ集合体中の変数が要素と呼称される場合は、メンバには要素が含まれる。0個以上のメンバは、順番等の互いの関係が定義されていてもよく、0個以上の何れかにデータが代入される。
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、データ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、前記プログラムは、前記データ集合体を使用するために必要な情報を0個以上含めて前記転送するためのデータを作成することを特徴とするプログラムを提供することにある。
本発明の一態様のプログラムは、第1のデータ集合体を他の情報処理装置に転送するためのデータを、前記第1のデータ集合体を使用するために必要な情報を0個以上含めて作成する処理とを情報処理装置に実行させる。
本発明の一態様のプログラムは、 0個以上の甲ならびに0個以上の乙の少なくともいずれかがあり、甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、甲ならびに乙がそれぞれ0個以上指定されたときに、前記甲ならびに乙がいかなる種類および量の乙によって構成されているのかを算出する処理を情報処理装置に実行させる。
本発明の一側面によれば、構造体等のデータ集合体に係るデータであって、前記データを使用するために必要な情報を0個以上含めたデータを転送することが可能となる。
情報処理装置を示すブロック図。 料理に含まれる料理および食品の一例を例示した図。 情報処理装置1が情報処理装置2へデータを転送する過程の一例を例示した図。 図3を、料理の情報を転送する場合に適用した場合の一例を例示した図。 図4を、料理はdish型データ集合体であって、前記料理および前記料理を使用するために必要なデータがdishANDfood型データ集合体である場合の一例を例示した図。 情報処理装置1が記憶している、甲と乙の組み合わせの一例を示した図。ここでは甲は料理で乙は食品。実際には料理または食品を示すキー(例えば、DS11010のような英数字)によって記憶されていてもよいが、説明のため、名称がキーとして格納されているものとして説明することがある。 実施の形態2における情報処理装置が行う計算の対象となるデータの一例を示した図表。 本実施形態実施の形態4に係る情報処理装置が行う計算の処理の手順を示したフローチャート。 本例示における情報処理装置が行う計算によって作成されたデータの一例を示した図表。ただし、「1〜2」などの「〜」を挟む数値は、その甲または乙の数量、例えば「レモン 50〜200」は「レモンが、数量50〜200」であることを示す。 実施の形態8に係る情報処理システムの構成を示すブロック図。 実施の形態8に係る情報処理装置1が実行する処理の手順を示すフローチャート。 実施の形態3に係る第2情報処理装置2が実行する処理の手順を示すフローチャート 配列変換の手順を示すフローチャート。 連想配列変換の手順を示すフローチャート。 外部からアクセスできないメンバを持つデータ集合体4に対する処理の概念を示す概念図。 情報処理装置が行うテキスト変換の処理の手順を示したフローチャート。 tape二次元配列テキスト変換の手順を示したフローチャート。 tape一次元配列テキスト変換の手順を示したフローチャート。
<ハードウェア構成>
図1は、情報処理装置を示すブロック図である。情報処理装置1はインターネット、LAN(Local Area Network)又は携帯電話網等の通信網Nにより他の情報処理装置と相互に接続されている。情報処理装置1は、例えばサーバ装置、パーソナルコンピュータ又はスマートフォン等である。情報処理装置1は、CPU(Central Processing Unit)11、記憶部12、RAM(Random Access Memory)13、入力部14、表示部15、通信部16及びドライブ部17を備える。
CPU11は、バスを介してハードウェア各部と接続されている。CPU11は例えば一もしくは複数のCPU又はマルチコアCPU等を備える。CPU11は、記憶部12に記憶されたプログラム12Pに従いハードウェアの各部を制御する。
記憶部12は例えばハードディスク又は大容量メモリ等である。ドライブ部17は、光ディスク等の記録媒体10から情報を読み取る。記憶部12にはCPU11が処理を行う際に必要とする種々のデータ及びプログラム12Pを格納する。CPU11は、記録媒体10に記録されたプログラム12Pをドライブ部17に読み取らせ、読み取ったプログラム12Pを記憶部12に記憶させる。CPU11は、必要に応じてプログラム12Pを記憶部12からRAM13へロードし、ロードしたプログラム12Pに従って、各種の処理を実行する。なお、プログラム12Pは、情報処理装置1の外部からダウンロードされてもよく、予め記憶部12に記憶されていてもよい。この場合、情報処理装置1は、ドライブ部17を備えていない形態であってもよい。
RAM13は例えばSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等である。RAM13は、記憶部としても機能し、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部14はマウス又はキーボード等の入力デバイスであり、受け付けた操作情報をCPU11へ送信する。表示部15はCPU11から送信された画像データを表示する。表示部15は例えば液晶ディスプレイである。通信部16は、例えば無線LANカード又は携帯電話用通信モジュール等であり、通信網Nを介して各種情報を送受信する。なお、各種情報のやりとりは、例えばCD−ROM、フラッシュメモリなどの記憶媒体であってもよく、その場合は、例えばドライブ部17によって前記記憶媒体に各種情報が書き込まれ、例えば情報処理装置2のドライブ部27を介して各種情報がやりとりされる。
<甲を含む甲と乙>
第1の情報処理装置から第2の情報処理装置に送信したいデータであるAを表現するためにはB、Cが必要で、Bを表現するためにはE、Fが必要で、Cを表現するためにはGが必要であるなど、Aを表現するためにはAだけを送信すればよいとは限らない状況があるとする。(図2の図形201を「A」、図形211を「B」、図形212を「C」と読み替えていただきたい)
前記Aを表現するために、前記Aに「BとCが含まれている」という情報が格納されていても、前記Aに、前記Bおよび前記Cが何を示すかは格納されていない。
しかし、前記第2の情報処理装置に、前記Bまたは前記Cの情報が格納されているとは限らない、前記BまたはCの情報が前記情報処理装置2に存在しない場合、前記情報処理装置2に転送した「A」のデータが、情報処理装置2では不完全な情報となる。
それを防ぐため、前記第1の情報処理装置に格納されている前記Aが何を含んでいるかを求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
前記情報処理装置2に前記Aを保存するときに一定のルールによってAを示すキーが与えられている場合、情報処理装置2では、同じキーに異なるデータが関連付けられているかもしれないから、情報処理装置2でも情報処理装置1と同じキーによって前記Aを記憶すればよいとは限らない。
すなわち、情報処理装置2にて前記を保存するたに必要となる、キーを特定するための情報を求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
料理と食品を扱うソフトウェアを一例として例示し、説明する。
例えば「牛皿」という料理と「ごはん」という料理からなる料理「牛丼」は、図2に示す通り、前記「牛皿」および前記「ごはん」のデータがないと不完全なデータとなり、前記「牛皿」、前記「ごはん」もそれを構成する食品のデータがないと不完全なデータとなる。
つまり、前記「牛丼」の料理データを送るならば、前記「牛丼」を構成する料理および食品のデータも送らなければならないことになる。なお、図3では料理を構成するものはすべて料理かすべて食品かのいずれかであるが、必ずしもそのいずれかであるとは限らない。例えば「レモン牛丼」なるレモン(食品)と牛丼(料理)からなる料理なども考えられる。また、0個の料理および食品からなる料理が存在していてもよい。例えば「100円引き」など、情報処理装置が料理として扱うと都合のよい、料理ではない概念を料理として扱うことである
前記「牛丼」の例では、前記牛丼を示す第1のデータ集合体に、前記第1のデータ集合体が、前記「牛皿」、前記「ごはん」を含む旨が格納されていても、前記「牛皿」、前記「ごはん」が何を含むかが格納されているわけではない。
しかし、他の情報処理装置に前記「牛皿」または前記「ごはん」の情報が格納されているとは限らず、前記「牛皿」または前記「ごはん」のデータが前記情報処理装置2に存在しない場合、前記情報処理装置2に転送した前記「牛丼」のデータが、前記他の情報処理装置では不完全な情報となる。
それを防ぐため、第1のデータ集合体に格納されている、前記第1のデータ集合体が示す料理・食品に含まれる料理・食品が何であるかを求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
情報処理装置1に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える)にしたがって決定された値(たとえば文字列)をキーとして値が記憶されている。
しかし、情報処理装置2では、同じキーに登録されている料理や食品が存在しないかもしれないし、同じキーに違う料理や食品が登録されているかもしれない。
すなわち、前記「一定のルール」に従ってキーを決定するために必要な情報(前記の例では料理の大分類および小分類)を示す情報も送らなければならない。
つまり、他の情報処理装置では、情報処理装置1と同じ料理や食品を、情報処理装置1と同じキーで記憶すればよいとは限らない。
これらは例示であり、牛丼などの料理や食品に関するものに限定されるものではなく、前記一定のルールが大分類および小分類を決定する方法に関するものに限定されるものでもない。
<実施の形態1>
情報処理装置1は、記憶部12またはRAM13または記憶媒体10に記憶されたデータまたは入力部14を介して入力されたデータを、他の情報処理装置で必要な他のデータを0個以上含めたデータを含めた、他の情報処理装置が認識できる状態のデータを作成し転送する。
前記転送に用いる手段を例示すると、例えば通信部16および通信網Nを介した送受信、ドライブ部17が記憶媒体への書き込みを行って前記記憶媒体をドライブ部27が読み取る、表示部15に表示された内容を入力部24を介して情報処理装置に入力する、図示しない出力部(例えばプリンターがQRコード(登録商標)などのバーコードを印字して、前記バーコードを情報処理装置2の図示しない認識部が認識する)などが考えられるが、情報処理装置2が認識できる方式であれば何でもよい。
情報処理装置2は、受け取ったデータから必要なデータを取り出し、記憶部22またはRAM23または記憶媒体20に記憶する。
図3を参照し、情報処理装置1に記憶された情報を転送する方法の一例を例示する。
データ301は、情報処理装置1が転送しようとしているデータ。
データ300は、データ301を他の情報処理装置が使用するために必要なデータ。
例えば、情報処理装置1の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないCPUがデータ301を使用するために必要であると判断したデータを情報処理装置1の図示しない記憶部またはRAMまたは記憶媒体から読み込み、データ300とすることが考えられるが、これに限られない。
データ302は、データ301および0個以上のデータ300を記憶したデータ。
たとえば、前記データ301および前記データ300を格納することができるメンバを持つデータ集合体とすることが考えられるが、これに限られない。
データ303は、データ302から作成された、他の情報処理装置に転送できる状態のデータである。
前記データ303は、例えば通信手段Nを介して情報処理装置2に転送され、前記情報処理装置2ではデータ353としてこれを扱う。
前記通信手段Nは、例えば通信網や、CD−ROMやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
データ353は、例えば前記通信手段Nを介するなどの方法によって情報処理装置1から受け取ったデータである。
データ352は、データ353から作成されたデータであって、データ351ならびに0個以上のデータ350となるデータが格納されている。
ただし、情報処理装置2に保存された図示しないプログラムに基づく図示しないCPUの判断によって、データ351ならびにデータ350の一部または全部が作成されない場合もある。
つまり、情報処理装置1のCPU11はプログラム12Pに基づいて、転送したいデータ301を転送するときに、前記データ301を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、データ301および前記判断によって必要とされたデータ300を0個以上含めたデータ302を作成し、前記データ302から他の情報処理装置に転送できるデータ303を作成し、前記データ303を転送する。
情報処理装置2のCPU21はプログラム22Pに基づいて、前記転送によって情報処理装置2が受け取ったデータ353から、情報処理装置2はデータ352を作成し、前記データ352に記憶された情報からデータ350を取得する。情報処理装置2は、データ350がデータ351を表現するために必要な情報であるか否かを判断(前記判断のためにデータ351を取得してもよい)し、必要である場合は情報処理装置2の記憶部の記憶部22またはRAM23または記憶媒体20に記憶し、前記データ351が取得されていなければ前記データ351を取得し、前記データ351を情報処理装置2の記憶部22またはRAM23または記憶媒体20に記憶する。
データ301および0個以上のデータ300からデータ302を作成する方法を説明する。
ただし、データ300はデータ301を使用するために必要なデータであると情報処理装置1のプログラムP12に基づいてCPU11が判断したものであって、記憶部12またはRAMまたは記憶媒体13または記憶媒体10に記憶されたものである。
情報処理装置1のCPU11は、記憶部12に記憶されたプログラム12Pに基づき、データ301を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部12またはRAM13または記憶媒体10から読み込んでデータ300とし、データ301ならびにデータ300を含むデータ302を作成する。前記データ302を記憶部12またはRAM13または記憶媒体10に格納し、処理を終了する。
データ集合体302から他の情報処理装置に転送できるデータ303を作成する方法を説明する。
情報処理装置1は、前記データ302を一定のルールに従って文字列に変換し、前記文字列をデータ303とする。
前記一定のルールとは、例えば前記データ302をテキスト変換によって文字列に変換することが考えられるが、これに限られない。
他の情報処理装置に転送できるデータ303を他の情報処理装置に転送する場合、前記転送によって他の情報処理装置が受け取ったデータは、データ353として扱われる。
受け取ったデータ353からデータ352を作成する方法を説明する。
情報処理装置2は、前記データ353を一定のルールに従って文字列に変換し、前記文字列をデータ352とする。
前記一定のルールとは、例えば前記データ353をテキスト変換によってデータ集合体に変換することが考えられるが、これに限られない。
データ352から、データ350およびデータ351を作成する方法を説明する。
情報処理装置2は、データ352に格納されたデータを取り出してデータ350をおよびデータ351を作成し、
記憶部22に格納されたプログラム22Pに基づいて、CPU22が、前記データ350の内容と、前記情報処理装置2に格納されたデータを参照し、前記情報処理装置2に記憶させるべきデータであると判断した場合は、CPU22は、データ350の一部または全部を情報処理装置2の記憶部22またはRAM23または記憶媒体20に記憶させる。
データ351に対しても、同様の処理を行う。
図4を参照し、料理の情報を他の情報処理装置に転送する方法の一連を例示する。
データ401は、情報処理装置1が転送しようとしているデータ。(図3のデータ301に対応する)
データ400は、データ401を他の情報処理装置が使用するために必要なデータ(例えば、データ401が示す料理を構成する料理または材料となる食品のデータ)。図3のデータ300に対応する。
例えば、情報処理装置1の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないCPUがデータ401を使用するために必要であると判断したデータを情報処理装置1の図示しない記憶部またはRAMまたは記憶媒体から読み込み、データ400とすることが考えられるが、これに限られない。
データ402は、データ401および0個以上のデータ400を記憶したデータ。図3のデータ302に対応する。
例えば、前記データ401および前記データ400を格納することができるメンバを持つデータ集合体とすることが考えられるが、これに限られない。
OK
メンバ4021は、前記データ402のメンバであって、前記データ401を格納するメンバ。
メンバ4021SETは、情報処理措置2がメンバ4021に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータなどが考えられるが、これに限られない。
メンバ4022は、前記データ402のメンバであって、前記データ401を他の情報処理装置が使用するために必要なデータを格納するメンバ。
例えば、前記データ401または前記メンバが料理である場合は、前記データ402は前記データ401が示す料理に含まれる料理または食品を示すデータが格納されることが考えられるが、これに限られない。
メンバ4022SETは、メンバ4022に記憶されたデータを情報処理装置2が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理または食品を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。食品の場合はメンバ4022に格納されたキーをそのまま情報処理装置2に記憶させるべき旨を示すデータただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
データ403は、データ402から作成された、他の情報処理装置に転送できる状態のデータである。データ403は、図3のデータ303に対応する。
前記データ403は、例えば通信手段Nを介して情報処理装置2に転送され、前記情報処理装置2ではデータ453としてこれを扱う。
前記通信手段Nは、例えば通信網や、CD−ROMやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
データ453は、例えば前記通信手段Nを介するなどの方法によって情報処理装置1から受け取ったデータである。前記データ453は、図3のデータ353に対応する。
データ452は、データ453から作成されたデータであってデータ451ならびに0個以上のデータ450となるデータが格納されている。前記格納は、データ452がデータ集合体であって、前記データ452のメンバとして格納されていることが考えられるが、これに限られない。
ただし、情報処理装置2に保存された図示しないプログラムに基づく図示しないCPUの判断によって、データ451ならびにデータ450の一部または全部が作成されない場合もある。
データ452は、図3のデータ352に対応する。
メンバ4521は、データ452のメンバであって、情報処理装置1ではメンバ4021に格納されていたデータが格納されている。ただし、メンバ4021に格納されたデータからメンバ4521に格納されたデータが作成されるまでの間に、必要に応じて、データの一部または全部が変更されていてもよい。(例えば、メンバ4021にデータを格納する際に作者を示す情報を付加するなどが考えられるが、これに限られない)
メンバ4521SETは、情報処理措置2がメンバ4521に記憶されたデータを記憶するために必要な情報を格納するメンバ。
例えば、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータなどが考えられるが、これに限られない。
メンバ4522は、情報処理装置2がメンバ4521に記憶されたデータを使用するために必要な情報を格納するメンバ。
例えば、前記データ4521または前記メンバが料理である場合は、前記データ4521が示す料理に含まれる料理または食品を示すデータが格納されることが考えられるが、これに限られない。
メンバ4522SETは、情報処理措置2がメンバ4522に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。食品の場合はメンバ4022に格納されたキーをそのまま情報処理装置2に記憶させるべき旨を示すデータただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
データ450は、情報処理装置2がメンバ451格納された値を使用するために必要なデータを格納するメンバ。図3のデータ350に対応する。
メンバ451は、情報処理装置2に転送するデータとして情報処理装置1から送信されたデータを格納するメンバ。図3のデータ351に対応する。
つまり、情報処理装置1のCPU11はプログラム12Pに基づいて、転送したいデータ401を転送するときに、前記データ401を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、データ401および前記判断によって必要とされたデータ400を0個以上含めたデータ402を作成し、前記データ402から他の情報処理装置に転送できるデータ403を作成し、前記データ403を転送する。
情報処理装置2のCPU21はプログラム22Pに基づいて、前記転送によって情報処理装置2が受け取ったデータ453から、情報処理装置2はデータ452を作成し、前記データ452に記憶された情報からデータ450を取得する。情報処理装置2は、データ450がデータ451を表現するために必要な情報であるか否かを判断(前記判断のためにデータ451を取得してもよい)し、必要である場合は情報処理装置2の記憶部の記憶部22またはRAM23または記憶媒体20に記憶し、前記データ451が取得されていなければ前記データ451を取得し、前記データ451を情報処理装置2の記憶部22またはRAM23または記憶媒体20に記憶する。
データ集合体401および0個以上のデータ400からデータ集合体402を作成する方法を一例として例示する。
ただし、データ400は、データ集合体401を使用するために必要なデータであると情報処理装置1のプログラムP12に基づいてCPU11が判断したものであって、記憶部12またはRAM13または記憶媒体10に記憶されたものである。
ここでは、情報処理装置1ならびに情報処理装置2は、キーとデータ(値)が関連付けられて記憶部12(情報処理装置2では記憶部22)またはRAM13(情報処理装置2ではRAM23)または記憶媒体10(情報処理装置2では記憶媒体20)に記憶されている場合を例示する。ただし、これ以外の方式によって記憶されていてもよい。また、データの記憶場所は記憶部12またはRAM13または記憶媒体10以外の場所、例えば必要の都度にダウンロードされる、などであってもよい。
データ402のメンバ4021に、データ401を格納する。
データ402のメンバ4021SETに、データ401を情報処理装置2が記憶するために必要な情報を格納する。
例えば、データ402に格納された情報を、データ4021に格納された情報を情報処理装置2が記憶するために必要な情報を格納することが考えられるが、これに限られない。
データ402のメンバ4022に、データ402を使用するために必要な情報を格納する。
データ402のメンバ4022SETに、メンバ4022を情報処理装置に記憶させるために必要な情報を格納する。
例えば、データ402に格納された情報を、データ4022に格納された情報を情報処理装置2が記憶するために必要な情報を格納することが考えられるが、これに限られない。
情報処理装置のCPU11は、記憶部12に記憶されたプログラム12Pに基づき、データ401を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部12またはRAM13または記憶媒体10から読み込んで、メンバ4021またはメンバ4022に格納する。前記メンバ4021または前記メンバ4022を他の情報処理装置に記憶させるために必要な情報をメンバ4021SET、メンバ4022SETに格納する。メンバ4021、メンバ4021SET、メンバ4022、メンバ4022SETを含んだデータ402を記憶部12またはRAM13または記憶媒体10に格納し、処理を終了する。
データ402から他の情報処理装置に転送できるデータ403を作成する方法を説明する。
情報処理装置1は、前記データ402を一定のルールに従って文字列に変換し、前記文字列をデータ403とする。
前記一定のルールとは、例えば前記データ402をテキスト変換によって文字列に変換することが考えられるが、これに限られない。
他の情報処理装置に転送できるデータ403を他の情報処理装置に転送する場合、前記転送によって他の情報処理装置が受け取ったデータは、データ453として扱われる。
受け取ったデータ453からデータ252を作成する方法を説明する。
情報処理装置1は、前記データ452を一定のルールに従って文字列に変換し、前記文字列をデータ453とする。
前記一定のルールとは、例えば前記データ452をテキスト変換によってデータ集合体に変換することが考えられるが、これに限られない。
データ452から、データ450およびデータ451を作成する方法を説明する。
情報処理装置2は、データ452に格納されたデータを取り出してデータ450をおよびデータ451を作成し、
記憶部22に格納されたプログラム22Pに基づいて、CPU22が、前記データ450の内容と、前記情報処理装置2に格納されたデータを参照し、前記情報処理装置2に記憶させるべきデータであると判断した場合は、CPU22は、データ450の一部または全部を情報処理装置2の記憶部22またはRAM23または記憶媒体20に記憶させる。
データ451に対しても、同様の処理を行う。
図5を参照し、dish型データ集合体を他の情報処理装置に転送する方法の一例を例示する。
データ501は、情報処理装置1が転送しようとしているデータ。(図4のデータ401に対応する)
データ500は、データ401を他の情報処理装置が使用するために必要なデータ(例えば、データ501が示す料理を構成する料理または材料となる食品のデータ)。図4のデータ400に対応する。
例えば、情報処理装置1の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないCPUがデータ501を使用するために必要であると判断したデータを情報処理装置1の図示しない記憶部またはRAMまたは記憶媒体から読み込み、データ500とすることが考えられるが、これに限られない。
データ502は、データ集合体であるdishANDfood型データ。図4のデータ402に対応する。
図5のメンバ5022、メンバ5023、メンバ5024は、図4のメンバ4022に対応する。
図5のメンバ5022SET、メンバ5023SETは、図4のメンバ4022SETに対応する。
メンバ5021は、前記データ502のメンバであって、データ501を格納するメンバ。
メンバ5021SETは、情報処理装置2がメンバ5021に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
メンバ5022は、前記データ502のメンバであって、前記502を構成する料理のデータを格納したデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた料理を示すデータが返る連想配列とすることが考えられるが、これに限られない。
メンバ5022SETは、メンバ5022に記憶されたデータを情報処理装置2が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
メンバ5023は、前記データ502のメンバであって、前記502を構成する食品のデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた食品を示すデータが返る連想配列とすることが考えられるが、これに限られない。
メンバ5023SETは、情報処理装置2がメンバ5023に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば、前記メンバ5023に使用されているキーをそのまま情報処理装置2では食品の情報を記憶させるためのキーとすべき旨を示す情報)にしたがってキーを決定するために必要なデータ。
メンバ5024は、メンバ5021に格納されたデータまたはデータ501が示す料理を構成する料理および食品を示すキーを格納するメンバ。
前記情報を計算する方法は、例えば実施の形態2にて説明する方法が考えられるが、これに限られない。
データ503は、データ502から作成された、他の情報処理装置に転送できる状態のデータである。データ503は、図4のデータ403に対応する。
前記データ503は、例えば通信手段Nを介して情報処理装置2に転送され、前記情報処理装置2ではデータ553としてこれを扱う。
前記通信手段Nは、例えば通信網や、CD−ROMやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
データ553は、例えば前記通信手段Nを介するなどの方法によって情報処理装置1から受け取ったデータである。前記データ553は、図4のデータ453に対応する。
データ552は、データ553から作成されたデータであって、例えばdishANDfood型データ集合体であるが、これに限られない。
前記データ552は、データ551ならびに0個以上のデータ550となるデータが格納されている。
ただし、情報処理装置2に保存された図示しないプログラムに基づく図示しないCPUの判断によって、データ551ならびにデータ550の一部または全部が作成されない場合もある。データ552は、図4のデータ452に対応する。
データ5521は、前記データ552のメンバであって、後述するデータ551に格納されるデータを格納するメンバ。図4のメンバ4521に対応する。
メンバ5521SETは、情報処理措置2がメンバ5521に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
データ5522は、前記データ502のメンバであって、前記502を構成する料理のデータを格納したデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた料理を示すデータが返る連想配列とすることが考えられるが、これに限られない。
データ5522SETは、メンバ5522に記憶されたデータを情報処理装置2が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。)にしたがってキーを決定するために必要なデータ。
データ5523は、前記データ552のメンバであって、前記552を構成する食品のデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた食品を示すデータが返る連想配列とすることが考えられるが、これに限られない。
データ5523SETは、情報処理装置2がメンバ5523に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置2に料理を保存するときに一定のルール(例えば、前記メンバ5523に使用されているキーをそのまま情報処理装置2では食品の情報を記憶させるためのキーとすべき旨を示す情報)にしたがってキーを決定するために必要なデータ。
データ5524は、メンバ5521に格納されたデータまたはデータ551が示す料理を構成する料理および食品を示すキーを格納するメンバ。
メンバ550は、情報処理装置2がメンバ551に格納された値を使用するために必要なデータを格納するメンバ。図4のデータ450に対応する。
メンバ551は、情報処理装置2に転送するデータとして情報処理装置1から送信されたデータを格納するメンバ。図3のデータ451に対応する。
つまり、情報処理装置1のCPU11はプログラム12Pに基づいて、転送したいデータ501を転送するときに、前記データ501を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、
データ5021に、前記データ5021を、
データ5021SETに、前記データ5021を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
データ5024に、前記データ5021を構成する料理または食品のキーを、
データ5022に、前記データ5021を構成する料理のキーから前記料理を示すデータを返す連想配列を、
データ5022SETに、前記データ5021を構成する料理のキーから前記キーが示す料理を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
データ5023に、前記データ5021を構成する料理のキーから前記料理を示すデータを返す連想配列を、
データ5023SETに、前記データ5021を構成する料理のキーから前記キーが示す料理を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
それぞれ格納したデータ502を作成し、
前記データ502から他の情報処理装置に転送できるデータ503を作成し、データ503を転送する。
情報処理装置2のCPU21はプログラム22Pに基づいて、前記転送によって情報処理装置2が受け取ったデータ553から、情報処理装置2はデータ552を作成し、
メンバ5524に格納されたキーと同じキーがメンバ5522に存在すれば、条件を満たす場合(例えば、前記データ5522から取得された値と同じ名前の料理が情報処理装置2に記憶されていない場合)は前記値を情報処理装置2に記憶する。このとき、前記値と関連付けられるキーはメンバ5522SETに格納されたデータによって決定される。
メンバ5524に格納されたキーと同じキーがメンバ5523に存在すれば、条件を満たす場合(例えば、メンバ5524が示すキーと同じキーの食品が情報処理装置2に記憶されていない場合)は前記値を情報処理装置2に記憶する。このとき、前記値と関連付けられるキーはメンバ5523SETに格納されたデータによって決定される。
その後、メンバ5521から取得されたデータを、条件を満たす場合(例えば、前記データ5521から取得された値と同じ名前の料理が情報処理装置2に記憶されていない場合)は前記値を情報処理装置2に記憶する。このとき、前記値と関連付けられるキーはメンバ5521SETに格納されたデータによって決定される。
データ集合体であるdish型データ501および0個以上のデータ500から、dishANDfood型のデータ集合体であるデータ502を作成する方法を一例として例示する。
ただし、データ500は、使用するために必要なデータであると情報処理装置1のプログラムP12に基づいてCPU11が判断したものであって、記憶部12またはRAM13または記憶媒体10に記憶されたものである。
ここでは、情報処理装置1ならびに情報処理装置2は、キーとデータ(値)が関連付けられて記憶部12(情報処理装置2では記憶部22)またはRAM13(情報処理装置2ではRAM23)または記憶媒体10(情報処理装置2では記憶媒体20)に記憶されている場合を例示する。ただし、これ以外の方式によって記憶されていてもよい。また、データの記憶場所は記憶部12またはRAM13または記憶媒体10以外の場所、例えば必要の都度にダウンロードされる、などであってもよい。
データ502のメンバ5021に、データ501を格納する。
データ502のメンバ5021SETに、データ501を情報処理装置2が記憶するために必要な情報を格納する。
例えば、情報処理装置1および2では料理の大分類および小分類が指定され前記指定された料理の大分類および小分類に使用可能な文字列であっていまだ使用さいれていない文字列を料理のキーとして前記キーと値の組み合わせとして記憶部またはRAMまたは外部媒体に記憶する方式を採用している場合を例に例示すると、
前記メンバ5021SETは、前記5021が示す料理が属する大分類および小分類を示す情報を格納する。
データ502のメンバ5024に、前記データ5021または前記データ502を構成する料理または食品を示すキーを計算し、前記計算結果を格納する。その計算方法は、実施の形態2にて説明した通りである。
データ502のメンバ5022に、データ5021を構成する料理の情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば関連付けられた値を返す連想配列であって、前記連想配列が返す値は料理の情報を示すものであることが考えられるが、これに限られない。
データ502のメンバ5022SETに、データ5022に格納された情報を情報処理装置2が記憶するために必要な情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば、前記キーがデータ5022にて関連付けられている値を、情報処理装置2に記憶するときに使用するキーを決定するために必要なデータを返す連想配列であることが考えられるが、これに限られない。
データ502のメンバ5023に、データ5021を構成する食品の情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば関連付けられた値を返す連想配列であって、前記連想配列が返す値は食品の情報を示すものであることが考えられるが、これに限られない。
データ502のメンバ5023SETに、データ5023に格納された情報を情報処理装置2が記憶するために必要な情報を格納する。
例えば、データ5022のキーに関連付けられた値を情報処理装置2に記憶するときに、前記キーをそのまま使用すべき旨を示す情報であることが考えられるが、これに限られない。
情報処理装置のCPU11は、記憶部12に記憶されたプログラム12Pに基づき、データ501を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部12またはRAM13または記憶媒体10から読み込んで、メンバ5021またはメンバ5022またはメンバ5023に格納する。
メンバ5021に格納された料理を構成する料理または食品のキーをメンバ5024に格納する。
メンバ5021を情報処理装置2に記憶させるために必要な情報をメンバ5021SETに、メンバ5022を情報処理装置2に記憶させるために必要な情報をメンバ5022SSETに、メンバ5023を情報処理装置2に記憶させるために必要な情報をメンバ5023SETにそれぞれ格納する。
データ502を記憶部12またはRAM13または記憶媒体10に格納し、処理を終了する。
データ集合体であるdishANDfood型データ502から他の情報処理装置に転送できるデータ503を作成する方法を説明する。
情報処理装置1は、前記データ集合体502をdishANDfoodテキスト変換して作成した文字列を他の情報処理装置に転送できるデータ503とする。
dishANDfoodテキスト変換とは何であるかは<用語の意味>にて後述する。dishANDfood型から文字列を作成する場合が該当し、作成されたデータ集合体がデータ503となる。
ただし、後述する<用語の意味>で説明文中に使われるdishとはメンバ5021、dishSETとはメンバ5021SET、codeTOdishとはメンバ5022、codeTOdishSETとはメンバ5022SET、codeTOfoodとはメンバ5023、codeTOfoodSETとはメンバ5023SET、tapeとはメンバ5024がそれぞれ相当し、dishANDfoodテキスト変換によって作成された文字列はデータ503として格納される。
他の情報処理装置に転送できるデータ503を他の情報処理装置に転送する場合、前記転送によって情報処理装置2が受け取ったデータは、データ553として扱われる。
受け取ったデータ553からデータ集合体であるdishANDfood型データ552を作成する方法を説明する。
情報処理装置1は、前記データ集合体553をdishANDfoodテキスト変換して作成した文字列を他の情報処理装置に転送できるデータ552とする。
dishANDfoodテキスト変換とは何であるかは<用語の意味>にて後述する。文字列からdishANDfood型を作成する場合が該当し、作成されたデータ集合体がデータ552となる。
ただし、後述する<用語の意味>で説明文中に使われるdishとはメンバ5521、dishSETとはメンバ5521SET、codeTOdishとはメンバ5522、codeTOdishSETとはメンバ5522SET、codeTOfoodとはメンバ5523、codeTOfoodSETとはメンバ5523SET、tapeとはメンバ5524がそれぞれ相当し、dishANDfoodテキスト変換によって作成された文字列はデータ503として格納される。
データ集合体であるdishANDfood型データ552から、データ550およびデータ集合体であるdish型データ551を作成する方法を説明する。
情報処理装置2は、データ552のメンバ5524に格納された0個以上の値を参照し、下記の動作を行う。
前記メンバ5524に格納された値と同じキーが前記552のメンバ5522に存在する場合、前記メンバ5522から取得した値が条件を満たす(例えば、前記値と同じ名前の料理が情報処理装置2に記憶された料理に存在しない)場合は、前記値を情報処理装置2に記憶させる。ただし、前記記憶させる際に使用するキーは、メンバ552のメンバである5522SETに記憶されたデータをもとに決定する。
前記メンバ5524に格納された値と同じキーが前記552のメンバである5523に存在する場合、前記メンバ5523から取得した値が条件を満たす(例えば、前記メンバ5524に格納された値と同じキーの食品が情報処理装置2に記憶された食品に存在しない)場合は、前記値を情報処理装置2に記憶させる。ただし、前記記憶させる際に使用するキーは、メンバ5532のメンバである5523SETに記憶されたデータをもとに決定する。
図5を参照し、情報処理装置1が図6の通りに甲(料理)が甲および乙(食品)を含む旨が記憶されているときに、「レモン牛丼」のデータを情報処理装置2に転送するためのデータを作成し、情報処理装置2は、前記データを読み込んで「レモン牛丼」のデータを記憶する過程を例示しながら情報処理装置1および情報処理装置2の動作を説明する。
データ集合体502のメンバ5021をdish、メンバ5021SETをdishSET、メンバ5024をtapeというメンバであるとして説明する。
前記dishにメンバ501を格納し、前記dishSETに前記dishが情報処理装置1ではどの大分類および小分類に属していたかを示す情報を格納し、tapeにdishを構成する料理および食品を実施の形態2に示す方法によって計算した結果を格納する。
例えば、前記「レモン牛丼」が、大分類「複合的な食品」、小分類「複合的な食品」、前記レモン牛丼を構成する料理および食品は「レモン」と「牛丼」として情報処理装置1に記憶されていて、情報処理装置1は牛丼など他の料理を構成する食品が図6に示す如く記憶されているとしたとき、前記dishはレモン牛丼を示す情報、前記dishSETは前記レモン牛丼が大分類「複合的な食品」、小分類「複合的な食品」である旨を示す情報、tapeはレモン牛丼を構成する料理および食品が「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」である旨を示す情報が格納される。
データ集合体502のメンバ5022をcodeTOdish、メンバ5023をcodeTOfoodというメンバであるとして説明する。
メンバtapeに記憶されている料理および食品のキーをデータ集合体(例えば配列)johoAに格納する(前記johoAに、dishを構成する料理または食品のキーを追加してもよい。その場合、この例示では「レモン」「牛丼」を追加する)。具体的には、tapeに格納されている料理または食品である「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報がjohoAに格納される。
整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、
情報処理装置2がjohoAのJ番の要素に格納されたデータと同じキーが料理のキーとして存在すれば、前記キーをキーとして取得できる料理の情報をデータ集合体dishobjに格納し、johoAのJ番目の要素をキーとしdishobjを値とするキーと値の組み合わせをcodeTOdishに記憶し、
情報処理装置2がjohoAのJ番の要素に格納されたデータと同じキーが食品のキーとして存在すれば、前記キーをキーとして取得できる食品の情報をデータ集合体foodojに格納し、johoAのJ番目の要素をキーとしfoodobjを値とするキーと値の組み合わせをcodeTOfoodに記憶し、
Jに1を加算する操作を繰り返す。
具体的には、johoAに「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報が格納されていて、「牛丼」「牛皿」「ごはん」が料理でそれ以外が食品として情報処理装置1に格納されている場合は、codeTOdishは、情報処理装置1が牛丼を示す値に関連付けられたデータ(例えばDS61010)をキーとし牛丼を示す情報を値とするキーと値の組み合わせが記憶(牛皿、ごはんも同様)され、
codeTOfoodは、情報処理装置1がレモンを示す値に関連付けられたキー(例えばFD12345)をキーとしレモンを示す情報を値とするキーと値の組み合わせが記憶(牛肉、玉ねぎ、醤油、コメも同様)される。
データ集合体502のメンバ5022SETをcodeTOdishSET、メンバ5023SETをcodeTOfoodSETというメンバであるとして説明する。
codeTOdishに格納されたキーをデータ集合体(例えば配列)johoAに格納し、codeTOfoodに格納されたキーをデータ集合体(例えば配列)johoBに格納し、johoAとjohoBを連結しjohoAとし、前記johoAの異なる要素に同じデータが格納されている場合は、前記データが1個ずつになるように重複を除去したものをjohoAとすることによって、johoAを作成する。
整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、
johoAのJ番の要素にに格納されたデータと同じキーが料理のキーとして存在すれば、前記キーにcodeTOdishにて関連付けられた値が情報処理装置1ではどの大分類および小分類に属していたかを示す情報を変数iremonoとし、johoAのJ番目の要素をキーとしiremonoを値とするキーと値の組み合わせをcodeTOdishSETに記憶する操作と、
Jに1を加算する操作を繰り返す。
codeTOfoodSETは、codeTOfoodのキーとして使用している値をそのまま情報処理装置2でキーとして使用すべき旨を示す情報を格納する。
具体的には、johoAに「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報が格納されていて、「牛丼」「牛皿」「ごはん」が料理でそれ以外が食品として情報処理装置1に格納されている場合は、
codeTOdishSETは、情報処理装置1が牛丼を示す値に関連付けられたキー(例えばDS61010)をキーとし牛丼が属する大分類および小分類を示す情報を値とするキーと値の組み合わせが記憶(牛皿、ごはんも同様)される。
前述の方法によって作成されたデータ集合体502は、dishANDfoodテキスト変換によって文字列503に変換され、文字列503は何らかの方法(例えばインターネットにアップロードする、文字列503を記したファイルを添付した電子メールが送信される等が考えられるが、これらに限られない)によって情報処理装置2に転送され、情報処理装置2は受け取ったデータをデータ553として扱う。
情報処理装置2が受け取ったデータ553は、dishANDfoodテキスト変換によってデータ集合体552に変換される。
データ集合体552から、情報処理装置2が前記データ552に格納されたデータを使用するために必要な情報を取得する方法を例示する。この例示は、
前記データ552に記憶された料理は、前記情報処理装置2に同じ名称である料理の情報が存在しない場合に前記料理の情報前記情報処理装置2に記憶され、
前記データ552に記憶された食品は、前記情報処理装置2に同じキーと関連付けられた食品が存在しない場合に前記食品の情報が記憶される場合を例にした例示である。
情報処理装置2は、前記データ552のメンバである5524に格納されたデータから、データ集合体(例えば配列)codearrを作成する。
情報処理装置2は、前記データ552のメンバである5522に格納された料理の名称を記憶したデータ集合体dishnamehashを作成する。
データ集合体552のメンバ5522をcodeTOdish、メンバ5522SETをcodeTOdishSET、メンバ5523をcodeTOfood、メンバ5523SETをcodeTOfoodSET、メンバ5524をtapeというメンバであるとして説明する。
メンバdishDICのキーをデータ集合体(例えば配列)johoAに格納し、johoAの各要素に記録されたデータをキーとしてメンバdishDICから取得される値が示す料理名を、データ集合体dishnamehashに格納する。
例えば、dishDICに、DS12345、DS23456、DS34567というキーが格納され、それぞれに関連付けられている料理のデータが示す料理の名称が、それぞれ、牛丼、牛皿、ごはん、である場合、dishnamehashは、牛丼、牛皿、ごはん、という3個のデータが格納されている。(前記「レモン牛丼」のデータを情報処理装置2に転送した場合、実際にはこれより多くの情報が入っている)
ここでは、tapeの各要素をデータ集合体(例えば配列)codearrに、同じデータが複数の要素に記憶されることがないように記憶したものとして説明する。(tapeの各用紙に記憶されたデータをそのまま使用してもよい)
数値型変数Jにcodearrの添え字に使用できる最小の数値を格納し、Jがcodearrの添え字に使用できる最大の数値以下である間、
codearr(J)に格納されたデータと同じキーがメンバcodeTOdishに存在する場合はメンバcodeTOdishからcodearr(J)をキーとし取得できる値をdish型変数dishobjに格納し、メンバcodeTOdishSETから、dishobjを情報処理装置2に記憶するために必要な情報(例えばdishobjに格納されたデータが属する大分類ならびに小分類)を取得し、前記データをもとに情報処理装2によって決定されたdishobjに関連付けられたキーを変数iremonoに格納し、iremonoをキーとしdishobjを値とするキーと値の組み合わせを情報処理装置2に記憶するステップと、
codearr(J)に格納されたデータと同じキーがメンバcodeTOfoodに存在する場合はメンバcodeTOfoodからcodearr(J)をキーとして取得できる値をfood型変数foodobjに格納し、codearr(J)をキーとしfoodobjを値とするキーと値の組み合わせを情報処理装置2に記憶するステップ(メンバcodeTOfoodSETから取得された情報によって情報処理装置2にfoodobjを記憶するときに使用するキーを決定するものであってもよい。)と、
Jに1を加算するステップと、
を繰り返す。ただし、codearr(J)とはcodearrのJ番の要素に格納されたデータを意味する。
例えば、codearrにDS12345、DS23456、DS34567、FD45678、FD56789というデータが格納され、codeTOdishにDS12345に関連付けられた値として牛丼、DS23456に関連付けられた値として牛皿、DS34567に関連付けられた値としてごはんを示す料理のデータが格納され、codeTOfoodに、FD45678に関連付けられた値としてレモン、FD56789に関連付けられた値として牛肉を示す食品のデータが記憶されている場合、情報処理装置2は、牛丼、牛皿、ごはん、レモン、牛肉をしめすデータを、条件を満たしたとき(例えば、料理では同じ名前の料理が記憶されていないこと、食品では同じキーが記憶されていないこと)、記憶する。(前記「レモン牛丼」のデータを情報処理装置2に転送した場合、実際にはこれより多くの情報が入っている)
メンバdishSETから、メンバdishを情報処理装置2に記憶するために必要な情報(例えばメンバdishに格納されたデータが属する大分類ならびに小分類)を取得し、前記データをもとに情報処理装2によって決定された、メンバdishに関連付けられたキーを変数iremonoに格納し、iremonoをキーとしメンバdishに格納されたデータを値とするキーと値の組み合わせを情報処理装置2に記憶する。
<実施の形態2>
0個以上の甲ならびに0個以上の乙の少なくともいずれかがあり、甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、甲ならびに乙がそれぞれ0個以上指定されたときに、前記甲ならびに乙がいかなる種類ならびに量の乙によって構成されているのかを算出する方法を説明する。
たとえば、甲は料理であって乙は食品であって、甲または乙の種類、最小量、最大量が定義され、これに基づいて計算することを例にして説明するが、これに限られない。本実施の形態に係る情報処理装置1の構成は、実施の形態1と同様である。
図8は、本実施形態実施の形態4に係る情報処理装置が行う計算の処理の手順を示したフローチャート。
本実施形態では、計算したいデータを「第0世代のデータ」とするステップ(S801)、下記の無限ループによって、下記の無限ループ中のある時点にて作成されている最大の世代をnとして第n世代から第n+1世代のデータを作成する処理を繰り返し、第n世代のデータがすべて乙になったことをもって計算を終了することによって、前記計算したいデータでの甲および乙が、いかなる乙によって構成されているかを計算する。
前記無限ループは、脱出判定ステップ(S802)、構成作成ステップ(S803)、循環参照ステップ(S804)を繰り返し、前記脱出判定ステップによって前記無限ループを脱出すべきと判断した場合は前記無限ループを脱出し、前記循環参照作成ステップによって循環参照(本実施例では、ある甲が、その甲自身によって構成されていること)が検出された場合は計算を中止する。
前記ステップS801は、種々の形態が考えられるが、例えばジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番の要素に、計算したいデータを格納する事が考えられる。ただし、これは例示であって、これに限られない。
たとえば、図7の通りに計算したいデータが与えられ、甲を構成する甲および乙は図6の通りに定義されている場合は、前記ステップS801では、ジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番を要素数3の配列とし、それぞれの要素に「レモン牛丼1〜2」「ロースかつ定食1〜1」「100円引き1〜1」を示すデータを格納することが考えられる。それぞれの要素は、図9におけるデータ9001、データ9002、データ9003に対応する。
前記脱出判定ステップS802は、その時点で作成されている最大の世代をnとし、第n世代がすべて乙であるかどうかを判断する。すべて乙であれば前記無限ループを脱出し、それ以外の場合は脱出しない。
前記構成要素書き込みステップS803は、その時点で作成されている最大の世代をnとし、第n世代であるおのおのの甲または乙に対し、甲ならば前記甲を構成する乙を、乙ならば乙自身を第n+1世代のデータとして作成する。このとき、前記作成されたデータは、そのデータが、どの甲を示すデータから作成されたかを示す情報(以下、befという)を格納する。
前記循環参照チェックステップS804は、その時点で作成されている最大の世代をnとし、第n世代であるおのおのの甲または乙に対し、前記befを用いて、そのデータを作成する元となったデータを、第0世代に至るまでにたどり、同一の甲が複数出現したら、循環参照とみなし計算を中止する。
たとえば、Aという甲はBという甲とcという乙から構成され、Bという甲はAという甲とdという乙から構成されていると定義されている場合、第2世代のAから第0世代までたどると、A→B→A、となり、複数のAが出現する。この場合、循環参照とみなし計算を中止する。
但し、第n世代のデータに乙が存在する場合は、第n世代に存在する乙を循環参照チェック対象としなくてもよい。
例えば、図9における第3世代を循環参照チェックする場合にデータ9304を循環参照チェックしようとした場合、前記データ9304は乙であってデータ9201から作成されたものである。第2世代を循環参照チェックする際に前記データ9201からデータ9001に至るまでの間における循環参照チェックは官僚しており、前記データ9304は乙であることから、今後前記データ9304および前記9304を甲が参照することはない。よって、循環参照チェックをしたとしても無意味であるから省略してもかまわない。
その例として、甲は料理、乙は食品である例を挙げることができるが、これに限られない。すなわち、計算したいデータは料理または食品であって、前記計算したいデータを「第0世代」として計算を開始し、第n世代(ただし、nはその時点で作成されている最大の世代)がすべて料理になるまで、下記の無限ループを繰り返す。
図7は、実施の形態2における情報処理装置が行う計算の対象となるデータの一例を示した図表。
図9は、本例示における情報処理装置が行う計算によって作成されたデータの一例を示した図表。ただし、「1〜2」などの「〜」を挟む数値は、その甲または乙の数量、例えば「レモン 50〜200」は「レモンが、数量50〜200」であることを示す。
ここでは、図7の通りに計算したいデータが与えられ、甲を構成する甲および乙は図6の通りに定義されている(例えば、レモン牛丼という料理はレモン50〜100、牛丼1〜1によって構成されている)場合を一例として例示し、説明する。ただし、図6および前記「50〜100」「1〜1」などの数値は、該当する甲の、1あたりに含まれる数量を表す。
この例示では、無限ループであるから「第0世代から第1世代を作成するときのステップS802」のように、どの世代からどの世代を作成するときのステップであるのかを明示しながら説明する。
たとえば、図7の通りに計算したいデータが与えられ、甲を構成する甲および乙は図6の通りに定義されている場合は、前記ステップS801では、ジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番を要素数3の配列とし、それぞれの要素に「レモン牛丼1〜2」「ロースかつ定食1〜1」「100円引き1〜1」を示すデータを格納することが考えられる。それぞれの要素は、図9におけるデータ9001、データ9002、データ9003に対応する。
第0世代から第1世代を作成するときの前記ステップS802は、第0世代の情報は「レモン牛丼」「ロースかつ定食」「100円引き」を示す情報が格納されているが、甲が1個以上含まれているため脱出しない。
第0世代から第1世代を作成するときの前記ステップS803は、
第0世代である「レモン牛丼」を構成する「レモン」「牛丼」を示す情報を取得し、第1世代のデータとして格納する。図6では「レモン50〜100」「牛丼1〜1」とあるが、レモン牛丼の数は1〜2であるため、最小値に1、最大値に2を乗じて「レモン50〜200」「牛丼1〜1」を第1世代のデータとする。(図9ではデータ9100、データ9101にあたる)前記データ9100、データ9101に、第0世代のレモン牛丼から作成された旨をしめす情報が格納される。
同様に、「ロースかつ定食」から「とんかつ1〜1」「キャベツ50〜60」「ごはん1〜1」「豚汁1〜1」を作成しデータ9102〜9105、「100円引き」から、該当する甲または乙が0個である旨の情報(例えば「データなし」)を作成し、データ9106を作成する。ただし、前記該当する甲または乙が0個である旨の情報は、乙として扱われる。(前記該当する甲または乙が0個である旨の情報は、作成しないこととしてもよい)
データ9100は「レモン 50〜200」がデータ9000から作成された旨を示す情報、データ9101は「牛丼 1〜2」を示すデータがデータ9000から作成された旨を示す情報、データ9102は「とんかつ 1〜1」を示すデータがデータ9001から作成された旨を示す情報、データ9103は「キャベツ 50〜60」を示すデータがデータ9001から作成された旨を示す情報、データ9104は「ごはん 1〜1」を示すデータがデータ9001から作成された旨を示す情報、データ9105は「豚汁 1〜1」を示すデータがデータ9001から作成された旨を示す情報、データ9016は「データなし」(乙扱い)を示すデータがデータ9002から作成された旨を示す情報がそれぞれ格納される。
第0世代から第1世代を作成するときの前記ステップS804は、第1世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
データ9100は、データ9000から作成された旨を示す情報が記憶されているため、データ9100→データ9000を参照し、「レモン」「レモン牛丼」が出現する。よって同一の甲が複数出現しないため循環参照ではないとする。
同様に、データ9101〜データ9105はデータ9001から作成された旨を示す情報が記憶されているため、同一の甲が複数出現しないため循環参照ではないとする。
同様に、データ9106はデータ9002から作成された旨を示す情報が記憶されているため、同一の甲が複数出現しないため循環参照ではないとする。
第1世代から第2世代を作成するときの前記ステップS802は、第1世代の情報は「レモン」「牛丼」「とんかつ」「キャベツ」「ごはん」「豚汁」「データなし」であって、「レモン」「キャベツ」「データなし」が乙であるものの、その他のデータが甲であるため脱出しない。
第1世代から第2世代を作成するときの前記ステップS803は、
第1世代の「レモン」が乙であるため前記「レモン」を示すデータを第2世代に作成し(データ9200に相当)、前記作成されたデータに、第1世代の「レモン」(データ9100に相当)から作成された旨のデータを記憶する。
同様に、「牛丼1〜1」から「牛皿1〜1」「ごはん1〜1」を作成しデータ9201〜9202、「とんかつ1〜1」から「かつ80〜90」「片栗粉20〜20」「卵30〜30」「パン粉20〜20」を作成しデータ9203〜データ9206に、「キャベツ50〜60」は乙であるため「キャベツ50〜60」をデータ9207に、「ごはん1〜1」から「コメ150〜170」を作成しデータ9208に、「豚汁1〜1」から「味噌50〜50」「豚肉50〜50」「レンコン50〜50」「人参50〜50」を作成しデータ9209〜データ9212に、「データなし」は乙であるため、前記「データなし」を示すデータ9213に記憶する。
データ9200は、「レモン 50〜200」を示すデータがデータ9100から作成された旨の情報、データ9201は、「牛皿 1〜2」を示すデータがデータ9101から作成された旨の情報、データ9202は、「ごはん 1〜2」を示すデータがデータ9101から作成された旨の情報、データ9203は、「かつ 80〜90」を示すデータがデータ9101から作成された旨の情報、データ9204は、「片栗粉 20〜20」を示すデータがデータ9101から作成された旨の情報、データ9205は、「卵 30〜30」を示すデータがデータ9202から作成された旨の情報、データ9206は、「パン粉 20〜20」を示すデータがデータ9202から作成された旨の情報、データ9207は、「キャベツ 50〜60」を示すデータがデータ9203から作成された旨の情報、データ9208は、「コメ 150〜170」を示すデータがデータ9204から作成された旨の情報、データ9209は、「味噌 50〜50」を示すデータがデータ9205から作成された旨を示す情報、データ9210は、「豚肉 50〜50」を示すデータがデータ9205から作成された旨を示す情報、データ9211は、「レンコン 50〜50」を示すデータがデータ9205から作成された旨を示す情報、データ9212は、「人参 50〜50」を示すデータがデータ9205から作成された旨を示す情報、データ9213は、「データなし」を示すデータがデータ9206から作成された旨を示す情報、が格納される。
第1世代から第2世代を作成するときの前記ステップS804は、第2世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
第2世代及び第1世代の各データに記録された、どの作成されたものであるかを示す情報によって、ここではデータ9200はデータ9100とデータ9000、
データ9201〜データ9202はデータ9101とデータ9000、データ9203〜データ9306はデータ9102とデータ9001、データ9207はデータ9103とデータ9001、データ9208はデータ9104とデータ9001、データ9209〜データ9212はデータ9105とデータ9001、データ9213はデータ9106とデータ9002を参照すればよく、そのいずれにも同一の甲が複数出現しないため循環参照ではないとする。
第2世代から第3世代を作成するときの前記ステップS802は、第2世代の情報は「レモン」「かつ」「片栗粉」「パン粉」「キャベツ」「コメ」「味噌」「豚肉」「レンコン」「人参」「データなし」が乙であるものの、甲が存在する(牛皿、ごはん)ため脱出しない。
第2世代から第3世代を作成するときの前記ステップS803は、
第2世代の「牛皿」を構成する甲または乙が図6に示す通り「牛肉150〜170」「玉ねぎ50〜60」「醤油50〜60」であるが、第2世代の牛皿の数量は「1〜2」であるため、最小値に1を、最大値に2を乗じ「牛肉150〜340」「玉ねぎ50〜120」「醤油50〜120」とし、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
第2世代の「ごはん」を構成する甲または乙が図6に示す通り「コメ150〜170」であるが、第2世代のごはんの数量は「1〜2」であるため、最小値に1を、最大値に2を乗じ「コメ150〜340」とし、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
第2世代のその他のデータは乙であるため、前記乙と同種同数量を示すデータを、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
第2世代から第3世代を作成するときの前記ステップS804は、第2世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
第3世代のデータ9301〜データ9303はデータ9201、データ9101、データ9000を参照し、同一の甲が複数出現しないため循環参照ではないとする。
第3世代の他のデータも、そのデータが参照しているデータを、第0世代に至るまで参照しても、同一の甲が複数出現しないため循環参照ではないとする。
第3世代から第4世代を作成するときの前記ステップS802は、第3世代の情報はすべて乙であるため、前記無限ループを脱出する。従って、本例の場合、実際には第4世代以降は作成されない。
<実施の形態3>
実施の形態3では、情報処理装置はデータ集合体をダウンロードにより取得する。図10は、実施の形態3に係る情報処理システムの構成を示す図である。情報処理システムは、情報処理装置(第1情報処理装置)1、第2情報処理装置2及び記憶装置3を備える。情報処理装置1及び第2情報処理装置2の構成は、実施の形態1と同様である。図10に示すように、情報処理装置1、第2情報処理装置2及び記憶装置3は、通信網Nに接続されている。
記憶装置3は、サーバ装置等のコンピュータである。記憶装置3は、CPU31、記憶部32、RAM33及び通信部34を備える。記憶部32は例えばハードディスク又は大容量メモリ等である。CPU31は、記憶部32に記憶されたプログラム32Pに従いハードウェアの各部を制御する。通信部34は、通信網Nを介して各種情報を送受信する。
本実施形態では、情報処理装置1はデータ集合体を他の情報処理装置に転送できる状態に(例えばテキスト変換)して記憶装置3へアップロードし、第2情報処理装置2は記憶装置3からデータをダウンロードすることによりデータ集合体を取得する。図11は、実施の形態8に係る情報処理装置1が実行する処理の手順を示すフローチャートである。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、RAM13又は記憶部12に記憶しているデータ集合体をテキスト変換することにより、データ集合体を変換した文字列を作成し、作成した文字列を含むデータファイルを作成する(ステップS61)。データ集合体を文字列へ変換する方法は、実施の形態1〜6で説明した方法と同様である。データ集合体を変換した文字列は、テキストデータとしてデータファイルに含まれる。CPU11は、次に、データ集合体に関する設定内容を各データ集合体別に記録したリストを作成し、作成したリストを含むリストファイルを作成する(ステップS62)。データ集合体に関する設定内容には、データ集合体を変換した文字列が含まれるデータファイルの名称、データファイルをダウンロードできる期間、データ集合体の定義、データ集合体のメンバとデータ集合体を変換した配列の要素との対応関係等が含まれている。CPU11は、次に、データファイル及びリストファイルを、通信部16に、通信網Nを介して記憶装置3へ送信させ(ステップS63)、処理を終了する。
記憶装置3は、情報処理装置1から送信されたデータファイル及びリストファイルを通信部34で受信し、受信したデータファイル及びリストファイルを記憶部32に記憶する。この結果、記憶部32にはデータファイル321及びリストファイル322が記憶されている。
図12は、実施の形態8に係る第2情報処理装置2が実行する処理の手順を示すフローチャートである。CPU21は、通信部26に、記憶装置3から通信網Nを介してリストファイル322をダウンロードさせる(ステップS71)。CPU21は、次に、リストファイル322を利用して、ダウンロードすべきデータファイルを指定する(ステップS72)。ダウンロードすべきデータファイルを指定する方法には、種々の方法が用いられ得る。例えば、CPU21は、リストファイル322を利用して、データファイルの名称等のデータ集合体に関する設定内容のリストを表示部25に表示させ、表示されたリストを視認した使用者が入力部24を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定してもよい。また、例えば、CPU21は、リストに記録されたデータファイルを無条件で指定してもよい。また、例えば、CPU21は、作成されてからの経過時間が一定期間内であるデータファイルを指定する等、時刻に応じてデータファイルを指定してもよい。CPU21は、次に、指定したデータファイル321を、通信部26に、記憶装置3から通信網Nを介してダウンロードさせる(ステップS73)。CPU21は、ダウンロードしたデータファイル321をRAM23又は記憶部22に記憶する。
図12は、実施の形態8に係る第2情報処理装置2が実行する処理の手順を示すフローチャートである。CPU21は、通信部26に、記憶装置3から通信網Nを介してリストファイル322をダウンロードさせる(ステップS71)。CPU21は、次に、リストファイル322を利用して、ダウンロードすべきデータファイルを指定する(ステップS72)。ダウンロードすべきデータファイルを指定する方法には、種々の方法が用いられ得る。例えば、CPU21は、リストファイル322を利用して、データファイルの名称等のデータ集合体に関する設定内容のリストを表示部25に表示させ、表示されたリストを視認した使用者が入力部24を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定してもよい。また、例えば、CPU21は、リストに記録されたデータファイルを無条件で指定してもよい。また、例えば、CPU21は、作成されてからの経過時間が一定期間内であるデータファイルを指定する等、時刻に応じてデータファイルを指定してもよい。CPU21は、次に、指定したデータファイル321を、通信部26に、記憶装置3から通信網Nを介してダウンロードさせる(ステップS73)。CPU21は、ダウンロードしたデータファイル321をRAM23又は記憶部22に記憶する。
CPU21は、ダウンロードしたデータファイル321または前記データファイル321に記録されたデータ(例えば文字列)または前記データファイル321がダウンロードすべきと指定され情報処理装置2がダウンロードしたデータを、情報処理装置2が扱えるデータ(例えばデータ集合体)へ変換する(ステップS75)。前記データを情報処理装置2が扱えるデータへ変換する方法は、実施の形態1〜2で説明した方法と同様である。CPU21は、条件を満たす(例えば、前記データファイル321が料理を示すデータであって、前記データが示す料理と同じ料理が情報処理装置2に記録されていない)場合、作成したデータ集合体または前記データ集合体に格納されたデータの一部または全部を記憶部22に保存し(ステップS76)、処理を終了する。
<用語の意味>
配列変換とは、配列を文字列へ変換し、また文字列を配列へ変換する。配列を文字列へ変換することをいう。
配列を文字列へ変換する配列変換をする方法を説明する。johoA という要素数が3である配列があり、johoA の要素をjohoA(0)、johoA(1)及びjohoA(2)とする。johoA(0)に”あああ”、johoA(1)に”いいい”、johoA(2)に”ううう”が代入されているとする。配列のいずれの要素にも存在しない文字(例えば「;」)を区切り文字とし、区切り文字を境にして配列の全ての要素を連結し、区切り文字が何であるかを示すために、所定の位置(例えば1文字目)に区切り文字を付記して、文字列を作成する。より具体的には、CPU11は、配列の各要素に格納されているデータを、要素の順に、各要素のデータの区切りを示す区切り文字を付加しながら連結し、所定の位置に区切り文字を付記することにより、文字列を作成する。文字列の作成により、配列が文字列へ変換される。配列johoA は、「;あああ;いいい;ううう」という文字列に変換される。
値が代入されていない配列を文字列へ変換しようとした場合は、情報処理装置1は、配列を要素数ゼロの配列とみなして処理を行う(例えば、VB.netで用いられるnothingを文字列へ変換しようとした場合は、情報処理装置1は、nothingを要素数ゼロの配列とみなして処理を行う)こととしてもよい。
なお、本実施形態では区切り文字を「;」としたが、これに限られない。例えば、配列のいずれかの要素に「;」が存在した場合、いずれの要素にも存在しない文字、例えば「…」を区切り文字として付加してもよい。なお、本実施形態では区切り文字は文字列を区切る文字としたが、数字等であってもよい。また本実施形態では文字列の先頭に区切り文字を付加したが、区切り文字の位置はこれに限られない。例えば、区切り文字は文字列の後ろに付加してもよい。また、区切りを示すために二個以上の区切り文字が用いられてもよい。
次に、文字列を配列へ変換する方法を説明する。文字列の予め定められている所定の位置(例えば1文字目)を区切り文字とみなし、それ以外の文字列は区切り文字によって区切られた文字列とみなす。また、取得した文字列に含まれている順番に、区切り文字によって区切られた文字列を、配列の各要素に格納する。このようにして、文字列は配列の各要素に格納されたデータへ変換される。すなわち、文字列は配列へ変換される。例えば、「たほげほげたぬるぬるたうにうに」という文字列では、1文字目が「た」であるので、「た」が区切り文字であるとみなされる。1文字目の区切り文字を取り除いた文字列「ほげほげたぬるぬるたうにうに」が得られる。この文字列が区切り文字を境にして分割され、johoA(0)=”ほげほげ”、johoA(1)=”ぬるぬる”及びjohoA(2)=”うにうに”という要素を含んだ要素数3の配列johoA が得られる。文字列が空文字列である場合は、情報処理装置1は、文字列を要素数ゼロの配列へ変換する。
配列変換をするためのルーチンを設けてもよい。該ルーチンの一例を例示し説明する。
情報処理装置1は、配列変換を行うためのルーチン(返り値はboolean型)を作成し、該ルーチンの引数を3つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toarr)、参照渡しのstring型の配列(arr)、及び参照渡しのstring型(text)である。2つ目の引数は、参照渡しのstring型の配列(arr)である。3つ目の引数は、参照渡しのstring(text)型である。ルーチンは、VB.net等で用いられるプロシージャ、又はC言語等で用いられる関数である。toarrがTRUEの場合はtextを配列変換して作成された配列(textが空文字列の場合は要素数ゼロの配列)がarrに代入され、toarrがFALSEの場合はarrを配列変換して作成された文字列(arrに値が代入されていない場合は空文字列)がtextに代入される。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEとなる。ただし、配列が文字列型ではない場合があることを考慮し、配列のデータ型に合わせたルーチンを設けること、又は作成された配列を適切なデータ型に変更するルーチンを別途作成することも可能である。
図13は、情報処理装置が配列変換を実行する処理の手順を示したフローチャートである。図13に示す処理の手順は、配列変換を行うためのルーチンによりCPU11が行う処理の一例である。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、引数に基づいて、配列を文字列へ変換するのかそれとも逆かを判定する(ステップS11)。配列を文字列へ変換する場合(ステップS11:YES)、CPU11は、RAM13又は記憶部12に記憶している配列のいずれの要素にも存在しない文字を区切り文字とすることにより、区切り文字を特定する(ステップS12)。CPU11は、配列の各要素に代入されている各データを読み出し、区切り文字を境にしてデータを連結する(ステップS13)。CPU11は、次に、区切り文字を境にして連結されたデータを含み、所定の位置に区切り文字を含んだ文字列を作成する(ステップS14)。CPU11は、作成した文字列をRAM13又は記憶部12に記憶し、処理を終了する。
図13のステップS11で、文字列を配列へ変換する場合は(ステップS11:NO)、CPU11は、RAM13又は記憶部12に記憶している文字列の所定の位置に含まれている文字を区切り文字とみなすことにより、区切り文字を特定する(ステップS15)。CPU11は、区切り文字で区切られたデータを文字列から抽出することにより、文字列を0個以上のデータへ変換する(ステップS16)。CPU11は、データの数と同数の要素を有する配列を作成し、配列の各要素に各データを代入する(S17)。CPU11は、作成した配列をRAM13又は記憶部12に記憶し、処理を終了する。
連想配列変換とは、連想配列を文字列へ変換し、また文字列を連想配列へ変換することをいう。
連想配列を文字列へ変換する方法を説明する。連想配列の全てのキーを取り出し、各キーを各要素に代入した第1の配列johoAを作成する。同数の要素数を持つ第2の配列johoBを作成し、配列johoAの各要素に代入された文字列をキーとして連想配列から得られる文字列を、配列johoAの各要素に対応する配列johoBの各要素に代入する。その後、配列johoA及び配列johoBを配列変換し、要素数が2である第3の配列johoCを作成する。また、配列johoAを配列変換した文字列を配列johoCの最初の要素に代入し、配列johoBを配列変換した文字列を配列johoCの次の順番の要素に代入する。そして、配列johoCを配列変換する。
また、値が代入されていない連想配列を文字列へ変換しようとした場合は、情報処理装置1は、連想配列を要素数ゼロの連想配列とみなして処理を行う(例えば、VB.netで用いられるNothingを文字列へ変換しようとした場合は、情報処理装置1は、Nothingを要素数ゼロの連想配列とみなして処理を行う)こととしてもよい。
例えば、連想配列のキーが「ど」「は」「あ」「お」「も」であり、値が夫々「まる」「ぎん」「とう」「はん」「ゆう」であるとする。配列johoAは、johoA(0)=”ど”、johoA(1)=”は”、johoA(2)=”あ”、johoA(3)=”お”、及びjohoA(4)=”も”という要素を含んだ要素数5の配列である。配列johoBでは、各キーが格納された配列johoAの各要素と同一の番号の要素に、連想配列の値が格納される。「ど」をキーとする場合は値が「まる」であるため、johoB(0)=”まる”となり、以後同様にjohoB(1)=”ぎん”、johoB(2)=”とう”、johoB(3)=”はん”、johoB(4)=”ゆう”となる。配列johoA及び配列johoBを配列変換すると、夫々「;ど;は;あ;お;も」、「;まる;ぎん;とう;はん;ゆう」となる。夫々の文字列が配列johoCの各要素に格納される。johoC(0)=”;ど;は;あ;お;も”、johoC(1)=”;まる;ぎん;とう;はん;ゆう”となる。johoCを配列変換し、「#;ど;は;あ;お;も#;まる;ぎん;とう;はん;ゆう」が得られる。
文字列を連想配列へ変換する方法を説明する。文字列を配列変換することにより、第4の配列johoCを作成する。配列johoCの各要素に代入されている文字列を配列変換する。すなわち、配列johoCの最初の要素に代入されている文字列を配列変換した第5の配列johoAを作成し、配列johoCの次の順番の要素に代入されている文字列を配列変換した第6の配列johoBを作成する。配列johoAの各要素に代入されているデータをキー、配列johoAの各要素に対応する配列johoBの各要素に代入されているデータを値として、各データを連想配列に代入することにより、連想配列を作成する。文字列が空文字列である場合は、情報処理装置1は、文字列を要素数ゼロの配列へ変換する。
例えば、文字列が「#;赤;橙;青;紫;黄#;Sr;Na;;K;Ba」であるとする。この文字列を配列変換することにより、johoC(0)=” ;赤;橙;青;紫;黄”、johoC(1)=”;Sr;Na;;K;Ba”という要素を含んだ要素数2の配列johoCが作成される。配列johoCのjohoC(0)に格納された文字列を配列変換して配列johoAが作成され、johoC(1)に格納された文字列を配列変換して配列johoBが作成される。johoAは、johoA(0)=”赤”、johoA(1)=”橙”、johoA(2)=”青”、johoA(3)=”紫”、及びjohoA(4)=”黄”という要素を含む。johoBは、johoB(0)=”Sr”、johoB(1)=”Na”、johoB(2)=””(空文字列)、johoB(3)=”K”、及びjohoB(4)=”Ba”という要素を含む。johoAの各要素に格納されたデータをキー、キーが格納されたjohoAの要素と同番号のjohoBの要素に格納されたデータを値として、連想配列が作成される。
情報処理装置1は、連想配列を配列変換するためのルーチン(返り値はboolean型)を作成し、該ルーチンの引数を3つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型(toobj)、参照渡しの連想配列(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合は、textを連想配列に配列変換して作成された連想配列(textが空文字列の場合は要素数ゼロの連想配列)がobjに代入される。toobjがFALSEの場合は、連想配列を配列変換することによりobjから作成された文字列(objに値が代入されていない場合は空文字列)がtextに代入される。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEとなる。ただし、連想配列のキー及び値のいずれかが文字列型ではない場合があることを考慮し、連想配列のキー若しくは値のデータ型に合わせたルーチンを設けること、又は作成された値を適切なデータ型に変更するルーチンを別途作成することも可能である。
図14は、情報処理装置が連想配列の配列変換を行う処理の手順を示したフローチャートである。図14に示す処理の手順は、連想配列の配列変換を行うためのルーチンによりCPU11が行う処理の一例である。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、引数に基づいて、連想配列を文字列へ変換するのかそれとも逆かを判定する(ステップS21)。連想配列を文字列へ変換する場合(ステップS21:YES)、CPU11は、RAM13又は記憶部12に記憶している連想配列の各キーを各要素に代入した第1の配列を作成する(ステップS22)。CPU11は、第1の配列の各要素に代入された文字列をキーとして連想配列から得られる値を各要素に代入した第2の配列を作成する(ステップS23)。CPU11は、第1の配列及び第2の配列を配列変換し(ステップS24)、第1の配列及び第2の配列を配列変換した文字列を各要素に代入した第3の配列を作成する(ステップS25)。CPU11は、次に、第3の配列を配列変換する(ステップS26)。CPU11は、ステップS26により作成した文字列をRAM13又は記憶部12に記憶し、処理を終了する。
ステップS21で、文字列を連想配列へ変換する場合は(ステップS21:NO)、CPU11は、RAM13又は記憶部12に記憶している文字列を配列変換することにより、第4の配列を作成する(ステップS28)。CPU11は、第4の配列の各要素を配列変換することにより、各要素に代入されている文字列を配列変換した第5の配列及び第6の配列を作成する(ステップS28)。CPU11は、第5の配列の各要素に代入されているデータをキー、第6の配列の各要素に代入されているデータを値として、連想配列を作成する(ステップS29)。CPU11は、作成した連想配列をRAM13又は記憶部12に記憶し、処理を終了する。
テキスト変換とは、データ集合体を文字列へ変換し、また文字列をデータ集合体へ変換することをいう。情報処理装置1がデータ集合体を文字列型へ変換したものを情報処理装置2に転送し、前記情報処理装置2が受け取ったデータをデータ集合体に変換しようとしたときに、データ集合体のメンバが異なっている場合、情報処理装置2は、前記受け取ったデータが示す情報の一部または全部を無視しデータ集合体を作成する(例えば、dish型を情報処理装置1から情報処理装置2に転送した場合に、前記情報処理装置2におけるdish型の定義に前記情報処理装置1におけるdish型に存在するメンバであるnameが存在せず、前記情報処理装置1におけるdish型に存在しないメンバであるsortが存在する場合、前記情報処理装置2は、nameを無視し、sortに決められた値(例えば空文字列)を格納することによって、情報処理装置2は、情報処理装置1から受け取ったデータの一部または全部を無視してデータ集合体を作成できる)こととしてもよい。
図16は、情報処理装置1が行うテキスト変換の処理の手順を示したフローチャートである。図16に示す処理の手順は、データ集合体のテキスト変換を行うためのルーチンによりCPU11が行う処理の一例である。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、引数に基づいて、データ集合体を文字列へ変換するのかそれとも逆かを判定する(ステップS31)。データ集合体を文字列へ変換する場合(ステップS31:YES)、CPU11は、RAM13又は記憶部12に記憶しているデータ集合体の各メンバに格納されているデータまたは前記データを配列変換、連想配列変換、テキスト変換などの決められた処理をして取得したデータ(例えば文字列)から連想配列を作成することにより、データ集合体から連想配列を作成する(ステップS32)。ステップS32では、データ集合体の各メンバと連想配列の各キーとの予め定められている対応関係に従って、各キーと関連付けてに格納されている値または前記値を配列変換、連想配列変換、テキスト変換などの決められた処理をして作成されたデータが、対応する要素に代入される。CPU11は、次に、配列を配列変換することにより、文字列を作成する(ステップS33)。CPU21は、作成した文字列をRAM13又は記憶部12に記憶し、処理を終了する。
ただし、データ集合体によってメンバの構成が異なるため、テキスト変換の手順は異なる。そのため、本明細書ではデータ集合体の種類ごとのテキスト変換の手順を説明することがある。
dishANDfoodテキスト変換とは、dishANDfood型のデータ集合体を文字列へ変換し、また文字列をdishANDfood型のデータ集合体へ変換するテキスト変換をいう。dishANDfood型のメンバがdish(dish型)、dishSET(文字列型)、tape(tape型ジャグ配列)、codeTOdish(文字列型をキーとしdish型を返す連想配列)、codeTOfood(文字列型をキーとしfood型を返す連想配列)、codeTOdishSET(文字列型をキーとし文字列型を返す連想配列)、codeTOfoodSET(文字列型をキーとし文字列型を返す連想配列)であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
dishANDfood型を文字列に変換する方法を説明する。ここでは、変換しようとするdishANDfood型データ集合体をobjと表記する。
dishANDfood型のメンバに対応する文字列定数LEFT、DISH、DISHSET、CODETOFOOD、CODETOFOODSET、CODETODISH、CODETODISHSET、TAPEが定義され、この定義は文字列をdishANDfood型に変換する場合にも同一の定義が使用される。連想配列ARRHASHを定義し(ここでは、文字列型をキーとし文字列型を返す連想配列として説明するが、これに限られない。)、
objのメンバであるcodeTOdishのキーをデータ集合体(例えば配列)johoAに格納し、データ集合体(例えば連想配列)hashobjを定義し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、johoAのJ番の要素に格納されたデータをキーとしてobjのメンバであるcodeTOdishから取得できる値を変数disobjに格納し、dishobjをdishテキスト変換し取得する値(たとえば文字列)を変数iremonoに格納し、johoA(J)をキーとしiremonoを値とするキーと値の組み合わせをhashobjに格納し、Jに1を加算する処理を繰り返すことによってhashobjを作成し、hashobjを連想配列変換して取得した文字列をiremonoに格納することによってiremonoを作成し、
前記ARRHASHに、CODETIDHSHをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
変数hashobjにobjのメンバであるcodeTOdishSETを記憶し、hashobjを連想配列変換して取得した文字列を変数iremonoに格納し、
前記ARRHASHに、CODETODISHSETをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
objのメンバであるcodeTOfoodのキーをデータ集合体(例えば配列)johoAに記憶し、データ集合体(例えば連想配列)hashobjを定義し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、objのメンバであるcodeTOfoodにjohoAのJ番に格納された値を指定して取得できる値を変数foodobjに格納し、foodobjをfoodテキスト変換して作成したデータ(例えば文字列)を変数iremonoに格納し、hashobjにjohoAのJ番に格納されたデータをキーとしiremonoを値とするキーと値の組み合わせを格納し、Jに1を加算する処理を繰り返すことによってhashobjを作成し、hashobjを連想配列変換して得られた文字列をiremonoに格納することによってiremonoを作成し、
前記ARRHASHにCODETOFOODをキーとしiremonoを格納するキーと値の組み合わせを記憶し、
変数hashobjにobjのメンバであるcodeTOfoodSETを記憶し、hashobjを連想配列変換して得られた文字列を変数iremonoに格納し、
前記ARRHASHにCODETOFOODSETをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
変数iremonoにobjのメンバであるdishをdishテキスト変換して取得したデータを格納し、
前記ARRHASHにDISHをキーとしiremonoを値とするキーと値の組み合わせを格納し、
変数iremonoにobjのメンバであるdishSETを格納し、
前記ARRHASHにDISHSETをキーとしiremonoを値とするキーと値の組み合わせを格納し、
変数iremonoにobjのメンバであるtapeをtape二次元配列テキスト変換して得られた文字列を格納し、
前記ARRHASHにTAPEをキーとしiremonoを値とするキーと値の組み合わせを格納することによって、
作成されたARRHASHを連想配列変換して作成された文字列を変数iremonoに格納し、
iremonoの所定の位置(例えば1文字目よりひだりがわ)にLEFTを連結した文字列を作成し、
前記文字列がdishANDfoodテキスト変換によって作成された文字列となる。
文字列をdishANDfood型に変換する方法を説明する。ここでは、変換後のデータ集合体をobjと表記する。
変換しようとする文字列を変数textに格納し、textの所定位置(例えば1文字目以降)にLEFTという文字列が存在しない場合は、前記textはdishANDfoodテキスト変換できない文字列であるとみなし処理を中止する。それ以外の場合は、前記位置に存在するLEFTを取り除いた文字列を変数iremonoに格納し、iremonoを連想配列変換することによって連想配列ARRHASHを作成し(ここでは、文字列型をキーとし文字列型を返す連想配列として説明するが、これに限られない。)、
変数iremonoにARRHASHからCODETODISHをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
前記iremonoが空文字列ならばobjのメンバであるcodeTOdishを要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して作成される連想配列を変数(例えば文字列型をキーとし文字列型を返す連想配列)hashobjに格納し、hashobjのキーをデータ集合体(例えば配列)johoAに格納し、johoAの添え字に使用できる最小の数値を数値型変数Jに格納し、前記JがjohoAの添え字に使用できる最大の数値以下である間、johoAのJ番に格納されたデータをキーに前記hashobjから取得される値を変数iremonoに格納し、前記iremonoをdishテキスト変換して取得されるデータ集合体をdish型変数dishobjに格納し(これができないときはdishobjにNothingまたはNullを格納)、objのメンバであるcodeTOdishに、johoAのJ番の要素に格納されたデータをキーとしdishobjを値とするキーと値の組み合わせを格納(dishobjがNothingまたはNullである場合を除く)し、Jに1を加算する処理を繰り返すことによって、
objのメンバであるcodeTOdishを作成する。
変数iremonoにARRHASHからCODETODISHSETをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
前記iremonoが空文字列ならばobjのメンバであるcodeTOdishSETは要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して作成したデータ集合体を変数hashobjに格納し、前記hashobjをobjのメンバであるcodeTOdishSETに格納することによって、
objのメンバであるcodeTOdishSETを作成する。
変数iremonoにARRHASHからCODETOFOODをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
前記iremonoが空文字列である場合は、objのメンバであるcodeTOfoodは要素数0の連想配列とし、それ以外の場合は、
変数(例えば文字列型をキーとし文字列型を返す連想配列)hashobjにiremonoを連想配列変換して作成したデータを格納し、データ集合体(例えば配列)johoAにhashobjのキーを格納し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、変数iremonoに前記hashobjからjohoAのJ番の要素に格納されたデータをキーとして取得される値を格納し、前記iremonoをfoodテキスト変換して取得されるデータ集合体を変数foodobjに格納し、objのメンバであるcodeTOfoodにjohoAのJ番の要素に格納されたデータをキーとしfoodobjを値とするキーと値の組み合わせを格納し、Jに1を加算する操作を繰り返ことによって、
objのメンバであるcodeTOfoodを作成する。
変数iremonoにARRHASHからCODETOFOODSETをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
変数(例えば文字列型をキーとし文字列型を返す連想配列)hashobjを定義し、前記iremonoが空文字列である場合は前記hashobjを要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して取得したデータを前記hashobjに格納し、objのメンバであるcodeTOfoodSETに前記hashobjを格納することによって、
objのメンバであるcodeTOfoodSETを作成する。
変数iremonoにARRHASHからDISHをキーとして取得される値(存在しない場合は空文字列)を格納し、
前記iremonoが空文字列でない場合はiremonoをdishテキスト変換して取得したデータをdish型変数dishobjに格納し、objのメンバであるdishに前記dishobjを格納することによって、
objのメンバであるdishを作成する。
変数iremonoにARRHASHからDISHSETをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
objのメンバであるdishSETに前記iremonoを格納することによって、
objのメンバであるdishSETを作成する。
変数iremonoにARRHASHからTAPEをキーとして取得されるデータ(存在しない場合は空文字列)を格納し、
Iremonoが空文字列でない場合はiremonoをtape二次元テキスト変換して取得した値をobjのメンバであるtapeに格納し、iremonoが空文字列である場合はobjのメンバであるtapeを要素数0の配列とすることによって、
objのメンバであるtapeを作成する。
上記の処理によって作成されたobjは、文字列をdishANDfoodテキスト変換して作成したデータ集合体となる。
情報処理装置1は、データ集合体をdishANDfoodテキスト変換するためのルーチン(返り値はboolean型)を作成し、該ルーチンの引数を3つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)、参照渡しのデータ集合体(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合はtextからdishANDfoodテキスト変換により作成されたデータ集合体をobjに代入し、FALSEの場合はobjをdishANDfoodテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
dishテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をdish型のデータ集合体へ変換するテキスト変換をいう。dishテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってdish型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願2017−096262に開示した方法が考えられるが、これでなくてもよい。
foodテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をfood型のデータ集合体へ変換するテキスト変換をいう。foodテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってfood型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願2017−096262に開示した方法が考えられるが、これでなくてもよい。
tape二次元配列テキスト変換とは、tape型ジャグ配列を文字列へ変換し、また文字列をtape型ジャグ配列へ変換することをいう。tape型のメンバがbef(整数型)、codeminmax(codeminmax型)であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
tape型ジャグ配列を文字列に変換する方法を説明する。ここでは変換しようとするデータ集合体をarrと表記する。
arrと同数の要素数を持つ配列johoAを作成し、前記johoAの各要素に、arrにおける同じ番号の要素に格納されたデータをtape一次元配列テキスト変換して作成したデータを格納する。その後前記johoAを配列変換し、文字列型定数LEFT(前記LEFTは、文字列からtape型ジャグ配列を作成する際に使用するLEFTと同一の値)を前記配列変換によって作成した文字列の所定の位置(例えば左端)に追加して作成した文字列を、tape二次元配列テキスト変換して作成した文字列とする。
文字列をtape型ジャグ配列に変換する方法を説明する。ここでは変換後のデータ集合体をarrと表記する。
変換したい文字列の所定の位置(例えば1文字目以降)に前記LEFTが存在するかを確認し、前記LEFTが所定の位置に存在しない場合は変換したい文字列はtape型ジャグ配列に変換できない文字列とみなしtape一次元配列テキスト変換を中止する。
前記LEFTが所定の位置に存在する場合は、前記LEFTを取り除いた文字列を配列変換して作成した配列をjohoDとし、前記johoDと同数の要素数を持つジャグ配列としてarrを定義する。前記arrの各要素に、johoDにおける同じ番号の要素に格納されたデータをtape一次元配列テキスト変換して作成したデータ集合体(例えば配列)を格納することによって作成したarrを、変換したい文字列をtape二次元配列テキスト変換して作成したデータ集合体であるとする。
図17は、情報処理装置がtape二次元配列テキスト変換を実行する処理の手順を示したフローチャートである。図17に示す処理の手順は、tape二次元配列テキスト変換を行うためのルーチンによりCPU11が行う処理の一例である。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、tape型ジャグ配列を文字列へ変換するのかそれとも逆かを判定する(ステップS1701)。
tape型ジャグ配列を文字列に変換する場合(S1701:NO)、CPU11は、RAM13または記憶部12または記録媒体10に記録されたtape型ジャグ配列の各要素をtape一次元配列することによって配列を作成し(ステップS1702)、前記配列を配列変換することによって文字列を作成し(ステップS1703)、前記文字列の所定の位置に所定の文字列を付加する(ステップS1704)ことによって作成した文字列をRAM13または記憶部12または記録媒体10に記憶し、処理を終了する。
文字列をtape型ジャグ配列に変換する場合(S1701:YES)、CPU11は、AM13または記憶部12または記録媒体10に記録された前記文字列が所定の条件を満たす(例えば、所定の位置に所定の文字列が存在する)かを判定し(ステップ:S1751)、前記判定がYESである(S1751:YES)であれば前記文字列の所定の位置に存在する所定の文字列を取り除いた文字列を配列変換して配列を作成し(ステップS1752)、前記配列の各要素をtape一次元配列テキスト変換して作成された配列(ステップS1753)をRAM13または記憶部12または記録媒体10に記憶し、処理を終了する。
tape一次元配列テキスト変換とは、tape型一次元配列を文字列へ変換し、また文字列をtape型ジャグ配列へ変換することをいう。tape型のメンバはtape二次元配列テキスト変換と同様である。
tape型一次元配列を文字列に変換する方法を説明する。ここでは変換しようとするデータ集合体をarrと表記する。
arrと同数の要素数を持つ配列johoBを作成し、前記johoBの各要素に、arrにおける同じ番号の要素に格納されたデータをtapeテキスト変換して作成したデータを格納する。その後、johoBを配列変換し、文字列型定数LEFT(前記LEFTは、文字列からtape型一次元配列を作成する際に使用するLEFTと同一の値)を前記配列変換によって作成した文字列の所定の位置(例えば左端)に追加して作成した文字列を、tape一次元配列テキスト変換して作成した文字列とする。
文字列をtape型一次元配列に変換する方法を説明する。ここでは変換後のデータ集合体をarrと表記する。
変換したい文字列の所定の位置(例えば1文字目以降)に前記LEFTが存在するかを確認し、前記LEFTが所定の位置に存在しない場合は変換したい文字列はtape型一次元配列に変換できない文字列とみなしtape一次元配列テキスト変換を中止する。
前記LEFTが所定の位置に存在する場合は、前記LEFTを取り除いた文字列を配列変換して配列johoCを作成し、前記arrを前記johoCと同数の要素数を持つ配列とする。前記arrの各要素に、johoCにおける同じ番号の要素に格納されたデータをtapeテキスト変換して作成したデータを格納することにより作成したarrを、変換したい文字列をtape一次元配列テキスト変換して作成したデータ集合体とする。
図18は、情報処理装置がtape一次元配列テキスト変換を実行する処理の手順を示したフローチャートである。図18に示す処理の手順は、tape一次元配列テキスト変換を行うためのルーチンによりCPU11が行う処理の一例である。情報処理装置1のCPU11は、プログラム12Pに基づいて以下の処理を実行する。CPU11は、tape型一次元配列を文字列へ変換するのかそれとも逆かを判定する(ステップS1701)。
tape型一次元配列を文字列に変換する(S1801:YES)場合は、前記tape型一次元配列の各要素をtapeテキスト変換して作成した文字列を同じ番号の要素に格納することによって配列を作成(ステップS1802)し、前記配列を配列変換(ステップS1803)して作成した文字列をRAM13または記憶部12または記録媒体10に記憶し、処理を終了する。
文字列をtape型一次元配列に変換する(S1801:NO)場合は、CPU11は、AM13または記憶部12または記録媒体10に記録された前記文字列が所定の条件を満たす(例えば、所定の位置に所定の文字列が存在する)かを判定し(ステップ:S1851)、前記判定がYESである(S1751:YES)であれば前記文字列の所定の位置に存在する所定の文字列を取り除いた文字列を配列変換して配列を作成し(ステップS1852)、前記配列の各要素をtapeテキスト変換して作成された配列(ステップS1853)をRAM13または記憶部12または記録媒体10に記憶し、処理を終了する。
codeminmaxテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をcodeminmax型のデータ集合体へ変換するテキスト変換をいう。foodテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってfood型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願2017−096262に開示した方法が考えられるが、これでなくてもよい。
tapeテキスト変換とは、tape型のデータ集合体を文字列へ変換し、また文字列をtape型のデータ集合体へ変換するテキスト変換をいう。ここでは、tape型は、メンバとしてbef(整数型)、codeminmax(codeminmax型)を持つデータ集合体であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
tape型データ集合体を文字列に変換する方法を説明する。ここでは、変換したいデータ集合体をobjと表記し、情報処理装置1がtape型データ集合体を文字列に変換する処理をするものとして説明する。
連想配列ARRHASHを定義し、CPU11はプログラム12Pに基づいて、前記ARRHASHに、BEF(文字列型定数)をキーとしobjのメンバであるbefをキーとするキーと値の組み合わせと、CODEMINMAX(文字列型定数)をキーとしobjのメンバであるcodeminmaxをcodeminmaxテキスト変換して作成した文字列をキーとするキーと値の組み合わせを、それぞれ記憶させ、前記ARRHASHを連想配列変換して作成した文字列に識別文字列LEFT(文字列型定数)を所定の位置(例えば1文字目の左)に付加し、tape型データ集合体を文字列に変換して作成した文字列であるとする。CPU11は、前記文字列をRAM13または記憶部12または記憶媒体10に記憶する。(前記BEF、CODEMINMAX、LEFTという定数は、文字列をtape型データ集合体に変換するときにも同一の値が格納されているものを使う)
文字列をtape型データ集合体に変換する方法を説明する。ここでは、変換後のデータ集合体をobjと表記し、情報処理装置1が文字列をtapeがたデータ集合体を文字列に変換する処理をするものとして説明する。
変換したい文字列の所定の位置に前記LEFTが存在するかを、CPU11はプログラム12Pに基づいて、判断し、存在しない場合はtapeテキスト変換できない文字列であるとみなし処理を中止する。
これ以外の場合は、前記文字列から所定の位置に存在するLEFTを取り除いた文字列を連想配列変換し(CPU11が)て作成した連想配列をARRHASHとし、objのメンバであるbefに、ARRHASHから、BEFをキーとし取得できる値を整数型に変換した文字列を格納し、objのメンバであるcodeminmaxに、ARRHASHから、CODEMINMAXをキーとして取得できる値をcodeminmaxテキスト変換して取得した値を格納することによって、作成したobjを、CPU11は、RAM13または記憶部12または記憶媒体10に記憶する。
なお、実施の形態1および3においては、通信網Nを介してデータの転送を行う形態を示したが、情報処理装置1及び第2情報処理装置2は、その他の方法でデータの転送を行う形態であってもよい。例えば、情報処理装置1は、データ集合体を変換した文字列を記録媒体に記録することによって文字列を出力し、第2情報処理装置2は、記録媒体から文字列を読み出すことによって文字列を取得し、文字列をデータ集合体へ変換してもよい。
また、実施の形態1〜3においては、データ集合体は、当該データ集合体の外部からアクセスできないメンバを持つことができる。図15は、外部からアクセスできないメンバを持つデータ集合体4に対する処理の概念を示す概念図である。情報処理装置1(又は情報処理装置2)は、データ集合体4がデータ集合体4の外部からアクセスできないメンバを持つ場合、外部からのアクセス可能なメンバ41に代入401があったとき、代入された内容を、外部からアクセスできないメンバ42に代入402を行う。メンバ41から値を取り出すとき、情報処理装置1(又は第2情報処理装置2)は、メンバ42の内容の確認403を行い、メンバ42に値が代入されていないとき(メンバ42のデータ型について予め定められている特定の値が代入されているときを含む)は、予め決められた値を返す(404)。例えば、メンバ42が配列又は連想配列であれば、要素数0の配列又は連想配列が返される。メンバ42が配列及び連想配列以外のデータ集合体であれば、各メンバにデフォルト値が代入された状態(値が代入されていない状態がデフォルトの場合はその状態)のデータ集合体が返される。メンバ42に値が代入されているとき(特定の値が代入されているときを除く)は、情報処理装置1は、メンバ42に代入された値を返す(404)。
また、実施の形態1〜3においては、変数がNull許容型である場合、変数は、値を文字列にするときに、変数のデータ型の値にならない文字列を代入されることができるものであってもよい。例えば、変数は、数値型であれば、空文字列などの数値にならない値を代入されることができ、日付型であれば、空文字列などの日付にならない値を代入されることができる。Null許容型の変数にそのデータ型にならない文字列を代入しようとする場合、代わりにNullを代入することができるものであってもよい。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。

Claims (7)

  1. 第1のデータ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、
    前記プログラムは、前記第1のデータ集合体を使用するために必要な情報を0個以上含めて
    前記転送するためのデータを作成することを特徴とするプログラム。
  2. 請求項1のプログラムは、
    他の情報処理装置に転送するための対象および他の情報処理装置に転送するためのデータの保存先を
    ユーザーが指定することが出来ることを特徴とするプログラム。
  3. 請求項1のプログラムによって作成されたデータから、
    前記第1のデータ集合体と、前記第1のデータ集合体を使用するために必要な情報を0個以上作成することを
    特徴とするプログラム。
  4. 前記第1のデータ集合体と、前記第1のデータ集合体を使用するために必要な情報の少なくともいずれかを、
    保存することが必要であるかどうかを判断し、
    必要であるならばいかなるキーとして保存するかを決定して保存の要否を決定するプログラムであって、
    保存が必要であると判断された場合は適切なキーを決定して保存することを特徴とするプログラム。
  5. 0個以上の甲ならびに0個以上の乙の少なくともいずれかがあり、
    甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、
    甲ならびに乙がそれぞれ0個以上指定されたときに、
    前記甲ならびに乙がいかなる種類および量の乙によって構成されているのかを算出することを特徴とするプログラム。
  6. 請求項5に記載のプログラムは、甲が直接または間接的に前記甲自身を参照していることを検知した場合、
    計算を中止し、前記中止を行った旨を計算結果として示すことを特徴とするプログラム。
  7. 請求項1のデータ集合体の構成が、複数の情報処理装置間で異なる場合は、
    前記データ集合体を受け取る情報処理装置は、
    前記データ集合体を受け取るときに、情報の一部または全部を適切な内容に変更することを特徴とするプログラム。
JP2017173600A 2017-09-10 2017-09-10 プログラム及び情報処理システム Pending JP2019049854A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017173600A JP2019049854A (ja) 2017-09-10 2017-09-10 プログラム及び情報処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017173600A JP2019049854A (ja) 2017-09-10 2017-09-10 プログラム及び情報処理システム

Publications (1)

Publication Number Publication Date
JP2019049854A true JP2019049854A (ja) 2019-03-28

Family

ID=65906076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017173600A Pending JP2019049854A (ja) 2017-09-10 2017-09-10 プログラム及び情報処理システム

Country Status (1)

Country Link
JP (1) JP2019049854A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240760A (ja) * 1997-02-28 1998-09-11 Hitachi Ltd 関連データの管理方法
JP2009088739A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd データ転送装置
JP2012513693A (ja) * 2008-12-22 2012-06-14 フランス・テレコム テキストデータを処理するための方法および装置
JP2013161106A (ja) * 2012-02-01 2013-08-19 Omron Corp サポート装置およびサポートプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240760A (ja) * 1997-02-28 1998-09-11 Hitachi Ltd 関連データの管理方法
JP2009088739A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd データ転送装置
JP2012513693A (ja) * 2008-12-22 2012-06-14 フランス・テレコム テキストデータを処理するための方法および装置
JP2013161106A (ja) * 2012-02-01 2013-08-19 Omron Corp サポート装置およびサポートプログラム

Similar Documents

Publication Publication Date Title
US20220318307A1 (en) Generating Neighborhood Convolutions Within a Large Network
Ryza et al. Advanced analytics with spark: patterns for learning from data at scale
Bouckaert Choosing between two learning algorithms based on calibrated tests
Ricklefs Species richness and morphological diversity of passerine birds
Sharaff et al. Comparative study of classification algorithms for spam email detection
CA3116782C (en) Multiobjective coevolution of deep neural network architectures
US20090144357A1 (en) Use of template messages to optimize a software messaging system
JP6920136B2 (ja) 情報処理システム
CN108228730A (zh) 数据导入方法、装置、计算机设备及可读存储介质
Xiang et al. Pavo: A RNN-based learned inverted index, supervised or unsupervised?
CN108171528A (zh) 一种归因方法及归因系统
Kadoya et al. Potential oscillators and keystone modules in food webs
Gu et al. Fashion coordinates recommendation based on user behavior and visual clothing style
Davidson et al. Effective encodings of constraint programming models to SMT
JP2019049854A (ja) プログラム及び情報処理システム
JP6558765B2 (ja) 処理装置、処理方法、推測装置、推測方法、およびプログラム
CN110489667A (zh) 基于用户画像的智能公文流转技术
JP5928446B2 (ja) 情報検索システム、情報検索方法および情報検索プログラム
Pingos et al. A smart manufacturing data lake metadata framework for process mining
Almuallim et al. An efficient algorithm for finding optimal gain-ratio multiple-split tests on hierarchical attributes in decision tree learning
JP7323669B1 (ja) オントロジー生成方法及び学習方法
Tung TensorFlow 2 Pocket Reference
Darquennes et al. On multiplicities in tuple-based coordination languages: the bach family of languages and its expressiveness study
Reichgelt et al. Relevant criteria for choosing an inference engine in expert systems
Botana et al. Explain and conquer: Personalised text-based reviews to achieve transparency

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200514

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201208