JP5140708B2 - 電子機器用プログラム及び電子機器システム - Google Patents

電子機器用プログラム及び電子機器システム Download PDF

Info

Publication number
JP5140708B2
JP5140708B2 JP2010172896A JP2010172896A JP5140708B2 JP 5140708 B2 JP5140708 B2 JP 5140708B2 JP 2010172896 A JP2010172896 A JP 2010172896A JP 2010172896 A JP2010172896 A JP 2010172896A JP 5140708 B2 JP5140708 B2 JP 5140708B2
Authority
JP
Japan
Prior art keywords
file
function
information
output
program
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.)
Expired - Fee Related
Application number
JP2010172896A
Other languages
English (en)
Other versions
JP2012033062A (ja
Inventor
敏昭 上野
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.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Document Solutions Inc
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 Kyocera Document Solutions Inc filed Critical Kyocera Document Solutions Inc
Priority to JP2010172896A priority Critical patent/JP5140708B2/ja
Priority to US13/193,795 priority patent/US9329809B2/en
Publication of JP2012033062A publication Critical patent/JP2012033062A/ja
Application granted granted Critical
Publication of JP5140708B2 publication Critical patent/JP5140708B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1208Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1242Image or content composition onto a page
    • G06F3/1243Variable data printing, e.g. document forms, templates, labels, coupons, advertisements, logos, watermarks, transactional printing, fixed content versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1282High volume printer device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1253Configuration of print job parameters, e.g. using UI at the client
    • G06F3/1256User feedback, e.g. print preview, test print, proofing, pre-flight checks

Description

本発明は、表示装置と出力装置とに接続された電子機器に用いる電子機器用プログラム及び電子機器システムに関する。
従来、印刷物を出力する際の課題として、設計の際にイメージする出力データ仕様書と、実際に印刷される印刷物(レポートページ,ステータスページ)との整合性を確保することが挙げられる。
特許文献1は、このような課題に鑑みて、各種形式の元データを読み込み、XML形式の共通基礎情報を生成するスクリプトエンジンから共通基礎情報を取り込み、共通基礎情報を基にテンプレートエンジンから出力用テンプレートを読み込み、共通基礎情報を出力用テンプレートに従って処理し、プログラムや仕様書等の文書を生成するプログラムを開示している。
特許文献1の発明によれば、XML形式の共通基礎情報や出力用テンプレートに基づいて、所望のプログラムや仕様書等の文書を生成することができるので、形式が異なる設計書等の間の不整合減少によるプログラム開発の生産性の向上を図ることができ、また、機械的作業が軽減することによるプログラム開発の生産性、保守性、品質の向上が実現できると考えられる。
特開2007−87127号公報
印刷設計のシステム開発の一環として、始めに「出力データ仕様書」を作成し、その出力データ仕様書に基づいて印刷用の「ソースファイル」(プログラム)を作成することがある。この出力データ仕様書は、印刷用紙に印字される出力イメージを明確にするためのものであり、実際に印刷を行った用紙を評価する際の評価仕様書としても利用される。
しかし、このような従来の方法では、「出力データ仕様書」と「ソースファイル」との両方を作成する必要があるのみならず、始めに「出力データ仕様書」を作成し、その後「ソースファイル」を作成する必要があるため、開発期間が長くなるおそれがある。
また、「出力データ仕様書」と「ソースファイル」とを別々に作成する必要があるため、作成した「ソースファイル」がその元にした「出力データ仕様書」と一致しない場合がある。つまり、ソースファイルは、出力データ仕様書に基づいて、その仕様を忠実に再現することが求められているが、ソースファイルは人が作成するものであり、多少のバグやコーディングミス等はつきものである。
したがって、出来上がったソースファイルを実際にコンパイルしてプログラムを動作させても、出力データ仕様書通りに印刷物が生成されないことがある。この点、実際に出力された印刷物と出力データ仕様書とを見比べて、ソースファイルを何度も修正していけば、いずれは正しい出力結果が得られることにはなるが、その作業は大変手間である。
また、実際のレポートページ(ステータスページ)は、プリンタ等の機種にもよるが、設定項目が40種類くらいあるため、どうしても細かい部分までチェックがいきとどかないのが現状である。
さらに、画像形成装置の仕様変更が発生した場合は、その都度「出力データ仕様書」と「ソースファイル」との両方を修正する必要がある。このため、まず「出力データ仕様書」を修正し、それに基づいて「ソースファイル」も修正しなければならないため、二重に手間がかかり、両者の整合性を保つことも大変な労力となる。
一方、特許文献1の技術は、各種形式の元データからXML形式の共通基礎情報を生成し、その共通基礎情報からプログラムや仕様書等を作成するものであるが、ソースファイルの自動生成の具体的な処理内容については開示されていない。
そこで本発明は、出力データ仕様書からソースファイルを作成する際の手間を減らし、人為的なコーディングミスも軽減でき、仕様変更が発生した場合であっても、出力データ仕様書やソースファイルを簡単に修正することができる技術の提供を課題としたものである。
上記課題を解決するため、本発明は、第1に電子機器用プログラムを提供する。また本発明は、第2に電子機器システムを提供する。
〔電子機器用プログラム〕
本発明の電子機器用プログラムは、表示装置と出力装置とに接続された電子機器のコンピュータに、所定の記述言語で記述されたベースファイルから、表示装置での表示処理に必要な情報を読み出して、表示装置にベースファイルの内容に応じた情報を表示させる表示手順と、出力装置での出力処理に必要な情報であって出力装置の機種に依存して複数の機種で共通して使用できない機種依存情報をベースファイルから読み出し、読み出した機種依存情報から制御コードを含まずに関数情報及びその関数が必要とする引数により構成された変動ファイルを作成させる変動ファイル作成手順と、出力装置の機種に依存せずに複数の機種で共通して使用できる非機種依存情報が制御コードを含んで構成された固定ファイル、及び変動ファイル作成手順で作成した変動ファイルを用いて、出力装置にベースファイルの内容に応じた情報を出力させる出力手順とを実行させるための電子機器用プログラムである。
この発明によれば、1つのベースファイルに基づいてベースファイルの内容に応じた情報の表示を行いながら(例えば出力データ仕様書の表示)、これと同じベースファイルに基づいて変動ファイル(例えばヘッダファイル)を作成するので、ベースファイルの内容に応じた情報の表示と変動ファイルの作成とを同時に行うことができる。これにより、従来の「出力データ仕様書」と「ソースファイル」との両方を作成する作業が不要になる。
また、変動ファイルは、ベースファイルから自動生成されるので、ベースファイルから変動ファイルへの変換アルゴリズムが確立されている限り、コーディングミスによるバグの発生を防止することができる。
さらに、ベースファイルの内容に応じた情報の表示と変動ファイルの作成とは、1つのベースファイルに基づいて行われるので、両者の一致度を高めることができる。しかも、仕様変更が発生した場合は、ベースファイルのみを変更すればよく、従来のようにまず「出力データ仕様書」を修正し、それに基づいて「ソースファイル」も修正するといった二重の手間がかかることを回避することができる。
ここで、一般的に、出力データ仕様書等からソースファイル(C言語、C++言語等)を自動生成することは技術的に難しいものである。これは、制御コード(例えば、判断処理や分岐処理等)を含む場合、それらをソースファイルに自動で落とし込む処理は技術的に困難であるとの理由による。この点、本願発明では、「変動ファイル」を、制御コードを含まずに関数情報及びその関数が必要とする引数により構成することによって、ベースファイルを単純に読み込んで、それを変動ファイルに書き込むだけの単純な処理でことが足りるため、容易に変動ファイルを自動生成することができる。
電子機器用プログラムの構成として、変動ファイル作成手順では、関数情報及びその関数が必要とする引数を構造体にまとめて変動ファイルを作成することが好ましい。
この発明によれば、関数情報及びその関数が必要とする引数を構造体にまとめることにより、コンパクトでメモリ容量も必要としない変動ファイルとすることができる。また、複数の関数を構造体にまとめることにより、開発の過程で使用しなくなった関数については、例えばコメントアウトする等といった簡単な作業で呼び出しの可否を変更することができ、メンテナンスも行いやすいファイル構成とすることができる。
電子機器用プログラムの構成として、変動ファイル作成手順では、親構造体及び子構造体を生成し、複数の関数情報及び子構造体の参照先アドレスを親構造体にまとめ、親構造体にまとめた各関数が必要とする引数を子構造体にまとめることが好ましい。
この発明によれば、変動ファイルで管理する情報のうち、関数情報は親構造体にまとめ、各関数が必要とする引数は子構造体にまとめることにより、構造体の定義の関係上必要となる不使用領域を減らすことができ、オブジェクトサイズをより小さなものとし、メモリの使用量を大幅に削減することができる。
〔電子機器システム〕
本発明の電子機器システムは、所定の記述言語で記述されたベースファイルから、表示処理に必要な情報を読み出して、ベースファイルの内容に応じた情報を表示する表示手段と、出力処理に必要な情報であって機種に依存して複数の機種で共通して使用できない機種依存情報をベースファイルから読み出し、読み出した機種依存情報から制御コードを含まずに関数情報及びその関数が必要とする引数により構成された変動ファイルを作成する変動ファイル作成手段と、機種に依存せずに複数の機種で共通して使用できる非機種依存情報が制御コードを含んで構成された固定ファイル、及び変動ファイル作成手段が作成した変動ファイルを用いて、ベースファイルの内容に応じた情報を出力する出力手段とを備えることを特徴とする電子機器システムである。
この発明によれば、上述した電子機器用プログラムの発明と同様な効果を得つつ、その効果をシステム全体で実現することができるという有用性がある。
本発明によれば、1つのベースファイルに基づいて、出力データ仕様書等の表示と変動ファイルの自動生成とを行うので、開発過程における作業負担を軽減させることができる。また、変動ファイルを制御コードを含まずに関数情報及びその関数が必要とする引数によって構成することにより、変動ファイルを容易に自動生成することができる。
画像形成装置101及び電子機器201を含む電子機器システムの構成例を概略的に示す図である。 プログラム400を実現するためのレポートページ自動生成アルゴリズムのアーキテクチャ(ソフトウエア構成図)を示す図である。 XMLファイルの内容を示す連続図である(1/2)。 XMLファイルの内容を示す連続図である(2/2)。 XMLブラウザでの処理の流れを概念的に示す図である。 ソースファイル変換ツールでの処理の流れを概念的に示す図である。 固定部の詳細について説明する図である。 印刷物が出力される過程を示す図である。 従来の構造体の構成例について示す図である。 本実施形態の構造体の構成例について示す図である。 電子機器システムの制御の流れを示すフローチャートである。
以下、本発明の電子機器用プログラム及び電子機器システムの実施形態について説明する。
図1は、画像形成装置(出力装置,出力手段)101及び電子機器201を含む電子機器システムの構成例を概略的に示す図である。電子機器システムは、画像形成装置101を備えるとともに、電子機器201の一例としてパーソナルコンピュータを備えている。これら画像形成装置101及び電子機器201がネットワーク2に接続された状態で、1つの電子機器システム(ネットワーク環境)が構成されている。
先ず、画像形成装置101の構成について説明する。
画像形成装置101は、例えばネットワークプリンタに代表されるネットワーク機器である。プリンタとして機能するため、画像形成装置101は図示しないプリントエンジンを内蔵している。プリントエンジンには、図示しない感光体ドラムや帯電器、露光ユニット、トナー現像ユニット(カラープリンタである場合は中間転写ベルト)等が含まれる。さらに画像形成装置101には、図示しない給紙装置が付属する。
なお、ここではネットワークプリンタを例に挙げているが、画像形成装置101はネットワーク対応のデジタル複合機であってもよい。この場合、画像形成装置101はさらに画像読取部を備える。画像読取部には、例えばスキャナランプ及びミラーが搭載された走査光学系のほか、集光レンズ及びCCD等の光学素子が内蔵される。また画像読取部に付属して、原稿自動搬送機構(ADF)が装備される態様であってもよい。
また画像形成装置101は、電子機器システム内で動作するための構成を有する。具体的には、通信インタフェース102や制御部103等が画像形成装置101に装備されている。
上記通信インタフェース102は、ネットワーク2に接続するための通信アダプタである。また制御部103は、コンピュータとして機能する要素であり、例えばプロセッサ(CPU)やメモリ(ROM、RAM等)を実装した電子回路基板の形態で画像形成装置101に内蔵されている。この制御部103は、通信インタフェース102による通信を制御するだけでなく、画像形成装置101が行う各種の処理や動作を制御する機能を有している。
次に、電子機器201の構成を説明する。
電子機器201には、一般に普及しているデスクトップ型PCやノートブック型PCを適用することができる。電子機器201の一般的な構成例として、プロセッサ(CPU,変動ファイル作成手段)202や通信インタフェース203、記憶装置204、表示制御部205、入力制御部206等を備えたものが挙げられる。また電子機器201には、表示装置(表示手段)301や入力装置302が接続されている。
通信インタフェース203は、ネットワーク2に接続するための通信アダプタである。また、記憶装置204は、内蔵のハードディスクやメモリ等の記録デバイスである。表示装置301はいわゆるディスプレイ、モニタに相当するハードウエアであり、表示制御部205はディスプレイアダプタである。また入力装置302はキーボード、ポインティングデバイス等に相当するハードウエアであり、入力制御部206はそのアダプタである。
以上が電子機器システムの基本的な構成である。加えて本実施形態では、電子機器201にインストールされたプログラム(電子機器用プログラム)400をコンピュータにより実行することで、本実施形態に係る電子機器システムの機能を実現することができる。なお、プログラム400は、記憶装置204に記憶されていてもよい。
次に、本実施形態で用いるプログラム400の詳細について説明する。
図2は、プログラム400を実現するためのレポートページ自動生成アルゴリズムのアーキテクチャ(ソフトウエア構成図)を示す図である。
まず、図中ステップS1に示すように、XML(extensible markup language)ファイルを作成する。このXMLファイルは、人が手作業で作成するものである。ここで、XMLとは、文書構造の記述言語の1つであり、HTML(hyper text markup language)の拡張版にあたる。XMLは、SGML(standard generalized markup language)をインターネット用に最適化したものであり、文書内のデータに対してユーザーが独自の属性情報や論理構造を定義することができる。
図3及び図4は、XMLファイルの内容を示す連続図である。
図3及び図4の例では、7つのブロック(A〜G)について記述している。
XMLファイルでは、レポートページ用に新たにタグを定義しており、いずれのブロックも上から順に、「ライブラリ関数名」、「メッセージ」、「メッセージ出力位置(X座標、Y座標)」、「関数が参照する変数」、「フォント」、「フォントの色」、「外部関数名」の項目について設定(規定)されている。
ここでは、図3の1番目のブロックAについて説明する。なお、図3及び図4に示す2番目のブロックBから7番目のブロックGについては、図3の1番目のブロックAと詳細な内容はそれぞれ異なるが、タグの定義の仕方等の基本的な内容は1番目のブロックAと同様である。
<Function>rpg_printf</Function>
この記述は、「ライブラリ関数名」がrpg_printfであるということを示している。この関数は、以下の「メッセージ」の内容を画像形成装置101を用いて実際に印字するための関数である。
<Message>ジョブエラーレポート</Message>
この記述は、「メッセージ」として、ジョブエラーレポートという文字を出力することを示している。「ジョブエラーレポート」の文言は、上記関数「rpg_printf」によって出力される。
<Position>0,0</Position>
この記述は、「メッセージ」の出力が、(X座標,Y座標)=(0,0)の位置で出力されることを示している。
<Variable></Variable>
この記述は、関数が参照する変数がないことを示している。なお、参照する変数があれば、その変数を記述する必要がある。
<Font>MS Pゴシック</Font>
この記述は、「メッセージ」をMSPゴシックで表示するということを示している。
<FontSize>16</FontSize>
この記述は、「メッセージ」を16ポイントの大きさで表示するということを示している。
<FontColor>Blue</FontColor>
この記述は、「メッセージ」を青色で表示するということを示している。
<ExtFunction></ExtFunction>
この記述は、外部関数を使用しないことを示している。なお、使用する外部関数があれば、その外部関数を記述する必要がある。
次に、図2中ステップS2に示すように、作成したXMLファイル(図3及び図4参照)を、XMLブラウザに入力する。ここで、XMLブラウザとは、XMLファイルに記述された内容を表示装置301にて閲覧するためのソフトウェアである。XMLブラウザは、一度作成すると以降汎用ツールとして使用可能になる。XMLブラウザは、XMLファイルを読み込んで、XMLファイルの内容を出力データ仕様書(紙への印字イメージ)として表示装置301に表示する(図2中ステップS3参照)。
図5は、XMLブラウザでの処理の流れを概念的に示す図である。
XMLブラウザは、XMLファイルに記述された内容のうち、XMLブラウザで有効なタグを判断する。
例えば、XMLファイルの<Function>rpg_printf</Function>の項目については、「×(不必要項目)」の判断となっている。これは、<Function>の項目は、画像形成装置101では必要な関数であるが、XMLブラウザで表示する場合には必要のない項目であるからである。
これに対して、XMLファイルの<Message>ジョブエラーレポート</Message>の項目については、「○(必要項目)」の判断となっている。これは、<Message>の項目は、画像形成装置101で必要な関数であるとともに、XMLブラウザで表示する場合にも必要のある項目であるからである。
どの項目を「○(必要項目)」「×(不必要項目)」にするかは、XMLブラウザにて必要な項目を予め定義しておくことにより、必要な項目のみを抜き出すことができる。
そして、XMLブラウザにて必要な項目(図中「○」の項目)のみを抜き出すことにより、表示装置301に「出力データ仕様書10」が表示される。出力データ仕様書10の内容は、XMLファイルから必要な項目のみを抜き出した内容が表示されるものであり、具体的には、「ジョブエラーレポート/現象:複数部数印刷の要求に対して、1部しか印刷できませんでした。/理由:メモリオーバーフローです。/解決方法:拡張メモリ(RAM)を装着してください。」といった内容が表示される。この内容は、図3及び図4のXMLファイルの全てのブロック(A〜G)の内容を結合して表示したものである。
次に、図2中ステップS4に示すように、作成したXMLファイル(図3及び図4参照)を、ソースファイル変換ツールに入力する。ここで、ソースファイル変換ツールとは、XMLファイルに記述された内容をヘッダファイルに変換するソフトウェアである。ソースファイル変換ツールは、一度作成すると、以降汎用ツールとして使用可能になる。ソースファイル変換ツールは、XMLファイルを読み込んで、変動部30のヘッダファイルを作成する(図2中ステップS5参照)。
図6は、ソースファイル変換ツールでの処理の流れを概念的に示す図である。
ソースファイル変換ツールは、XMLファイルに記述された内容のうち、ヘッダファイルで有効なタグを判断する。
ソースファイル変換ツールは、XMLブラウザとは異なり、全ての項目を有効なタグと判断する。その結果、全ての項目が「○(必要項目)」の判断となっている。これは、実際に印刷を行う際には、XMLファイルに記述されている内容が全て必要な項目であるからである。
そして、ソースファイル変換ツールにてXMLファイルの全ての項目を抜き出すことにより、変動部30のヘッダファイルが自動生成される。XMLファイルには、文字列しか羅列されておらず制御の要素が入っていないため、これらの文字列は、簡単にヘッダファイルに変更することができる。例えば、XMLファイルを上から順に読み込んでいき、カッコとカッコの間にある文字列を単純に抜き出すことで実現可能である。
そして、図6に示すように、変動部30のヘッダファイルは、関数情報(関数ポインタ)及びその関数が必要とする引数を有する構造体により構成されている。
具体的には、1番上のブロックについては、一番左側に関数情報としての「rpg_printf」、その右側に引数としての「ジョブエラーレポート」、「0,0」、「Dummy」、「MS Pゴシック」、「16」、「Blue」、「Dummy」が順に並んでいる。2番目のブロックについては、関数情報としての「rpg_printf」、引数としての「現象:」、「0,10」、「Dummy」、「MS Pゴシック」「11」「Black」、「Dummy」が順に並んでいる。ここで、「Dummy」とは、具体的な引数がないことを示している。
実際の構造体は、プログラム言語によってもその記述方式は異なってくるが、例えば以下のように記述する。
struct kansuu{
func1,a,b,c;/* func1の関数ポインタ及び引数 */
func2,d,e,f;/* func2の関数ポインタ及び引数 */
func3,g,h,i;/* func3の関数ポインタ及び引数 */
};
そして、実際にコンパイルによってオブジェクトファイルを作成するためのファイルとしては、図2に示すように、固定部20と変動部30とが必要である。固定部20は、C言語であれば「file01.c」等のプログラムファイル(固定ファイル)で構成され、変動部30は「header01.h」等のヘッダファイル(変動ファイル)で構成される。
本実施形態では、固定部20のプログラムファイルには、画像形成装置101の機種に依存せずに複数の機種で共通して使用できる非機種依存情報を記述し、変動部30のヘッダファイルには、画像形成装置101の機種に依存して複数の機種で共通して使用できない機種依存情報を記述している。
これは、例えば、まず最初の一機種を作って、つぎに、また新しい機種を作る場合、全てのプログラムを修正するのは大変であるから、固定部20のプログラム部分はそのまま残しておいて、変動部30のプログラム部分だけを修正するためのものである。固定部20に関しては、同じプログラムを継続して使用できるので、プログラム開発の生産性が高まり、不具合も少なくなるので、ソフトウエアとしての安定性が確保できる。
ここで、固定部20は、ライブラリ関数の集合である。各々のライブラリ関数は、機能毎に部品化する。各々のライブラリ関数は、機種に依存せず使用可能にする。ライブラリ関数は、初めの機種開発で作成する。ライブラリ関数は、2機種目以降の開発では、機能追加した部分のみを部品として追加する。
また、固定部20は、機能毎にライブラリ関数を集め、機能毎に一つのソースファイルとする。これにより、ある機種で不要な機能は、該当するソースファイルをコンパイル時のリンク対象から外すことで、コンパイルしないようにすることができ、最終的に生成されるオブジェクトファイル(実行ファイル)のサイズを小さくすることができる。例えば、FAX関連のライブラリ関数群は、fax_lib.cppにまとめ、プリンタ機ではFAX機能が不要なので、リンク時にfax_lib.cppをリンク対象から外すようにすればよい。
また、固定部20のプログラムファイルは、制御コード(例えば、for文等のループ処理や、if文等の分岐処理)を含んだ態様で構成しているが、変動部30のヘッダファイルは、制御コードを含まずに関数情報及びその関数が必要とする引数により構成された構造体によって構成している。
変動部30のヘッダファイルは、上述したように「XMLファイル」から自動生成され、変動部30は、ヘッダファイルのみで構成される。変動部30をヘッダファイルのみで構成することで、XMLファイルから容易にヘッダファイルを自動生成することができる。変動部30のヘッダファイルには、固定部20にあるライブラリ関数を呼び出すための「関数ポインタ」とその「引数」を記述する。機種依存部分については、変動部30のヘッダファイルに記述する関数ポインタ(固定部のライブラリ関数を呼び出す際のアドレス)を変更することで対応することができる。
例えば、固定部20のプログラムファイルのメインループでは、全ての関数をコールするように設計しておき、変動部30のヘッダファイルでは、不必要な関数をコメント化(無効化)することができるので、ある機種では、func1、func2、func3、func4の全ての関数の呼び出しをしたり、ある機種では、func1、func3をコメント化すれば、func2、func4といったように限定した関数の呼び出しをしたりできるようになる。このように、固定部20において全ての関数を用意しておき、変動部30のヘッダファイルでは、コメント化により呼び出し関数を調整することにより、呼び出し関数を簡単に選択することができる。
図7は、固定部の詳細について説明する図である。
固定部20のプログラムファイルに関しては、プログラムを自動生成することはできないので、開発の最初の段階で人が自らコーディングして固定部20のプログラムファイルを作成する必要がある。具体的には使用するプログラム言語の記述方法に倣って記述する。
図示の例では、
rpg_printf(”現象:”,0,10,Dummy,”MS Pゴシック”,11,”Black”,Dummy)

// ここに、引数で指定された文字列が印刷される様にプログラムを記述する

と記載しており、小かっこの中に実際に使用する引数を記述し、大かっこの中に、引数で指定された文字列が印刷されるようにプログラムのコードを記述する。この関数は、図3の2番目のブロックBに対応する関数である。
図8は、印刷物が出力される過程を示す図である。
そして、これらソースファイル(固定部のプログラムファイル及び変動部のヘッダファイル)をコンパイルすることにより、オブジェクトファイルが作成され、このオブジェクトファイルを実際に実行することにより、印刷物(レポートページ,ステータスページ)70が画像形成装置101から出力される。印刷物70の印刷内容は、図5のものと同様である。
コンパイルに関しては、図2に示すように、RPG(Report Program Generator)コンポーネントのみならず、必要に応じて他のコンポーネントから提供される外部関数40や変数領域50、メッセージ領域60を組み合わせて行うことができる。
次に、構造体の最適化について説明する。
図9は、従来の構造体の構成例について示す図であり、図10は、本実施形態の構造体の構成例について示す図である。
図9に示すように、従来の構造体では、プログラム言語の制約上、構造体を構成するメンバのうち最も引数の多いメンバに全てのメンバの引数の数を一致させる必要があった。図9の例では、構造体Aに関数ポインタとその関数の引数を格納しているが、関数5の引数が10個なので、他の関数の引数の数も10個に合わせている。このため、未使用と記載されている部分は、実際には不要な引数であるが、構造体の定義の関係上、ダミーとなる引数を設定しなければならず、その分メモリ領域が無駄になっていた。図示の例では、136個のメモリ領域が無駄になっている。
これに対して本実施形態の構造体では、図10に示すように、従来の構造体のように1つの構造体に「関数ポインタ」及び「引数」の情報をまとめるのではなく、2つの種類の構造体に分けて「関数ポインタ」及び「引数」の情報を配置している。具体的には、「関数ポインタ」は構造体B(親構造体)に配置し、「引数」は構造体1〜20(子構造体)に配置している。また、構造体Bには、別の構造体1〜20の参照先アドレス(各構造体へのポインタ)が配置されている。
このように、各関数の引数を構造体B内に配置するのではなく、それぞれ独立した別の構造体1〜20に配置することで、不要な引数を削除することができる。図10の例では、図9の例と比較して構造体自体の数は増えているが、図9で未使用であるが領域を確保していた部分を全て削除することができ、実際に使用されない余分なメモリ領域を削除することができる。これにより、ヘッダファイル(構造体)をコンパイルした後のオブジェクトサイズを小さくすることができる。
次に、本実施形態の電子機器システムの制御の流れについて説明する。
図11は、電子機器システムの制御の流れを示すフローチャートである。以下、ステップS110からステップS160までの手順について説明する。また以下の説明により、電子機器用プログラムが画像形成装置101及び電子機器201のコンピュータに実行させる手順例が明らかとなる。
ステップS110:プロセッサ202がプログラム400を動作させることにより、XMLブラウザが起動され、XMLファイルがXMLブラウザに入力される。
ステップS120:XMLブラウザによって、出力データ仕様書10が表示装置301に表示される(表示手順)。
ステップS130:プロセッサ202がプログラム400を動作させることにより、ソースファイル変換ツールが起動され、XMLファイルがソースファイル変換ツールに入力される。
ステップS140:ソースファイル変換ツールによって、変動部のヘッダファイルが自動生成される(変動ファイル作成手順)。このステップでは、関数情報及びその関数が必要とする引数を、図10で説明した構造体にまとめてヘッダファイルが作成される。
ステップS150:プロセッサ202がプログラム400を動作させることにより、プログラムファイル、ヘッダファイル及びその他必要なファイルがまとめてコンパイルされ、オブジェクトファイルが得られる(出力手順)。
ステップS160:プロセッサ202がプログラム400を動作させて、オブジェクトファイルが実行されることにより、印刷物(レポートページ,ステータスページ)70が得られる(出力手順)。そして、作業員が、この印刷物70と表示装置301に表示された出力データ仕様書10とを見比べることにより、両者の整合性を確かめ、実際の紙への出力状態と、画面上の出力イメージとを評価する。
なお、「ステップS130〜S160」を先に処理して、「ステップS110,S120」を後に処理してもよく、また、「ステップS110,S120」の処理と「ステップS130〜S160」の処理とを平行して処理を行うようにしてもよい。
このように、本実施形態によれば、「出力データ仕様書」と「変動部のヘッダファイル」とを自動生成するアルゴリズムを提供しているので、「出力データ仕様書」と「変動部のヘッダファイル」とを同時に生成可能とし、開発期間の短縮を図ることができる。
通常は、「出力データ仕様書」(出力イメージ)を作成してから、「ソースファイル」(プログラム)の作成を行うが、本実施形態では、始めにXMLファイルを作成し、そこから「出力データ仕様書」と「変動部のヘッダファイル」とを自動生成している。これにより、「出力データ仕様書」(出力イメージ)と「印刷物」(プログラムの実装によって得られるレポートページ)とが異なるという不具合の発生防止に寄与することができる。
また、仕様変更が生じた場合でも、XMLファイルのみを修正すればよいので、手直しに要する工数を大幅に短縮することができる。
一般的に、仕様書からソースファイル(C言語、C++言語等)を自動生成することは技術的に難しいが、本実施形態では、固定部をライブラリ関数群で構成し、変動部をヘッダファイルのみで構成することにより、変動部のヘッダファイルを容易に自動生成することができ、ソフトウェアの品質も格段に向上させることができる。
さらに、始めに2つのソフトウェアツール(XMLブラウザ、ソースファイル変換ツール)を新規に作成する必要があるが、これらのツールが完成すれば、「出力データ仕様書」と「変動部のヘッダファイル」とが自動生成されるので、その後の開発期間(工数)の短縮が可能となる。
さらにまた、仕様変更に伴う新規機能については、「固定部」にライブラリ関数を追加し、追加したライブラリ関数へのポインタを、「変動部」のヘッダファイルに登録するだけの簡単な修正で済む。つまり、「固定部」のライブラリ関数群は一度作成すると変更不要となり、ソースコード変更に因るデグレード(改善を加えたにもかかわらず、以前より品質や機能が悪くなること)の危険性がなくなり、ソフトウェアの品質向上につながる。
そのうえ、「固定部」のライブラリ関数は、機能毎に部品化されているので、ソースコードの解析が容易になり、保守性が向上する。
本発明は、上述した一実施形態に制約されることなく、各種の変形や置換を伴って実施することができる。ベースファイルは、XMLファイルではなく、HTMLファイルやSGMLファイル等であってもよい。
また、本発明のアルゴリズムは、C言語やC++言語を用いて実現された各種の組込機器にて利用可能である。
さらに、一実施形態で挙げた画像形成装置101や電子機器201の構成はいずれも好ましい例示であり、これらを適宜変形して実施可能であることはいうまでもない。
2 ネットワーク
10 出力データ仕様書
20 固定部
30 変動部
70 印刷物
101 画像形成装置(出力装置,出力手段)
102 通信インタフェース
103 制御部
201 電子機器
202 プロセッサ(変動ファイル作成手段)
203 通信インタフェース
204 記憶装置
205 表示制御部
206 入力制御部
301 表示装置(表示手段)
302 入力装置
400 プログラム(電子機器用プログラム)

Claims (4)

  1. 表示装置と出力装置とに接続された電子機器のコンピュータに、
    所定の記述言語で記述されたベースファイルから、前記表示装置での表示処理に必要な情報を読み出して、前記表示装置に前記ベースファイルの内容に応じた情報を表示させる表示手順と、
    前記出力装置での出力処理に必要な情報であって前記出力装置の機種に依存して複数の機種で共通して使用できない機種依存情報を前記ベースファイルから読み出し、読み出した前記機種依存情報から制御コードを含まずに関数情報及びその関数が必要とする引数により構成された変動ファイルを作成させる変動ファイル作成手順と、
    前記出力装置の機種に依存せずに複数の機種で共通して使用できる非機種依存情報が制御コードを含んで構成された固定ファイル、及び前記変動ファイル作成手順で作成した変動ファイルを用いて、前記出力装置に前記ベースファイルの内容に応じた情報を出力させる出力手順と
    を実行させるための電子機器用プログラム。
  2. 請求項1に記載の電子機器用プログラムにおいて、
    前記変動ファイル作成手順では、
    前記関数情報及びその関数が必要とする引数を構造体にまとめて変動ファイルを作成することを特徴とする電子機器用プログラム。
  3. 請求項1又は2に記載の電子機器用プログラムにおいて、
    前記変動ファイル作成手順では、
    親構造体及び子構造体を生成し、
    複数の前記関数情報及び前記子構造体の参照先アドレスを前記親構造体にまとめ、前記親構造体にまとめた各関数が必要とする引数を前記子構造体にまとめることを特徴とする電子機器用プログラム。
  4. 所定の記述言語で記述されたベースファイルから、表示処理に必要な情報を読み出して、前記ベースファイルの内容に応じた情報を表示する表示手段と、
    出力処理に必要な情報であって機種に依存して複数の機種で共通して使用できない機種依存情報を前記ベースファイルから読み出し、読み出した前記機種依存情報から制御コードを含まずに関数情報及びその関数が必要とする引数により構成された変動ファイルを作成する変動ファイル作成手段と、
    機種に依存せずに複数の機種で共通して使用できる非機種依存情報が制御コードを含んで構成された固定ファイル、及び前記変動ファイル作成手段が作成した変動ファイルを用いて、前記ベースファイルの内容に応じた情報を出力する出力手段と
    を備えることを特徴とする電子機器システム。
JP2010172896A 2010-07-30 2010-07-30 電子機器用プログラム及び電子機器システム Expired - Fee Related JP5140708B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010172896A JP5140708B2 (ja) 2010-07-30 2010-07-30 電子機器用プログラム及び電子機器システム
US13/193,795 US9329809B2 (en) 2010-07-30 2011-07-29 Systems and methods for hierarchical source file conversion and output using a base file comprising display information, library function, display message, and tag defining information necessity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010172896A JP5140708B2 (ja) 2010-07-30 2010-07-30 電子機器用プログラム及び電子機器システム

Publications (2)

Publication Number Publication Date
JP2012033062A JP2012033062A (ja) 2012-02-16
JP5140708B2 true JP5140708B2 (ja) 2013-02-13

Family

ID=45527962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010172896A Expired - Fee Related JP5140708B2 (ja) 2010-07-30 2010-07-30 電子機器用プログラム及び電子機器システム

Country Status (2)

Country Link
US (1) US9329809B2 (ja)
JP (1) JP5140708B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261763B2 (en) * 2016-12-13 2019-04-16 Palantir Technologies Inc. Extensible data transformation authoring and validation system
CN109799995A (zh) * 2018-12-14 2019-05-24 平安普惠企业管理有限公司 部署ipa包的方法、装置、计算机设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860203A (en) * 1986-09-17 1989-08-22 International Business Machines Corporation Apparatus and method for extracting documentation text from a source code program
JP3731628B2 (ja) * 1998-02-20 2006-01-05 株式会社日立製作所 Cgiプログラム作成方法
JP2002066967A (ja) * 2000-08-25 2002-03-05 Kawasaki Heavy Ind Ltd ロボット動作記述言語の構造化方法並びに構造化したロボット動作記述言語の表示方法及び編集方法
US7219338B2 (en) * 2003-03-25 2007-05-15 Microsoft Corporation Multi-language compilation
JP2005228202A (ja) * 2004-02-16 2005-08-25 Seiko Epson Corp 駆動条件設定装置、駆動条件設定方法、駆動条件設定プログラム、印刷制御装置、印刷制御方法および印刷制御プログラム
DE102004047079A1 (de) * 2004-09-29 2006-04-06 Robert Bosch Gmbh Verfahren zur Freischaltung von Funktionsvarianten
EP1615125A1 (en) * 2005-04-14 2006-01-11 Agilent Technologies, Inc. Automatic source code generation
US20070044066A1 (en) * 2005-08-19 2007-02-22 Microsoft Corporation Embedded multi-language programming
JP2007087127A (ja) 2005-09-22 2007-04-05 Open Stream Inc データ生成プログラム、該プログラムを記憶した記憶媒体、オープンソースソフトウェア開発環境統合プログラム、該プログラムを記憶した記憶媒体
JP4889338B2 (ja) * 2006-03-28 2012-03-07 キヤノンソフトウェア株式会社 画面プログラムレイアウト変更方法および情報処理装置およびプログラムおよび記録媒体

Also Published As

Publication number Publication date
US20120030561A1 (en) 2012-02-02
US9329809B2 (en) 2016-05-03
JP2012033062A (ja) 2012-02-16

Similar Documents

Publication Publication Date Title
US8786869B2 (en) Updateable printer driver, information processing apparatus, and computer-readable recording medium recording therein printer driver
US9052850B2 (en) Printer driver, storage medium, and information processing apparatus
JP5282677B2 (ja) 互換性評価装置、互換性評価方法、及びプログラム
US20100077379A1 (en) Image processing apparatus, image processing method, and recording medium
US20120005603A1 (en) Application development supporting apparatus, program, and recording medium
US20130117656A1 (en) Conversion of web template designs
JP2007122135A (ja) 開発支援装置、開発支援方法、および、開発支援プログラム
JP2008276690A (ja) 開発システム、開発システムのサーバ、開発方法
JP2010198299A (ja) 画像処理装置、情報処理装置、ユーザインタフェース提供方法、画像処理システムおよびプログラム
JP5140708B2 (ja) 電子機器用プログラム及び電子機器システム
US20090207436A1 (en) Image forming apparatus, server, image forming system, and storage medium
JP2017144649A (ja) 情報処理装置およびプログラム
JP4626675B2 (ja) 通信ネットワークを利用したファームウェアの提供方法、そのシステムおよびサービスサーバ
JPH06348766A (ja) ツール組み込み方法及び装置
US20100231930A1 (en) Dividing an original image output from a printer across multiple pieces of paper
JP2010205068A (ja) ソフトウェア資源移行システム及び同移行方法
JP4898365B2 (ja) 組み込み用プログラム開発装置、及びプログラム自動生成方法
JP2013164879A (ja) 情報処理装置、互換性評価方法、及びプログラム
JP5353771B2 (ja) 画像形成装置、画像処理装置、画像処理システム、画像処理方法、プログラム、及び記録媒体
JP2004070561A (ja) デバッグ装置
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
JP6222058B2 (ja) 画像形成装置
WO2000058817A1 (en) Method and system for providing a digital imaging device with a web-based graphical-user-interface
JP2004133630A (ja) プログラム作成方法、プログラム変換装置、プログラム及び記憶媒体
JP2012014287A (ja) 情報処理装置、電気機器、及びサーバ

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120412

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121023

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

R150 Certificate of patent or registration of utility model

Ref document number: 5140708

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees