EZADDマニュアル

(Version 1)
平成21年3月21日
CREA

1 はじめに

  携帯電話が普及してきた昨今、紙のアドレス帳を使う機会は減ってきていますが、 それでも簡単にメモが書け見やすい紙のアドレス帳もまだ捨てたものではありません。 EZADDは、ポケットに入れる手帳に挟んで使うアドレス帳を印刷して作ります。 そして最近増えている各種IDとパスワードもあわせて記録できるようにします。

2 概要

  EZADDで作るアドレス帳は、いわゆる住所録の部分と、 「もろもろ」と名づけたID等の部分のから成ります。 アドレス帳のできあがりは、高さがA4用紙長手方向の半分(148mm)、幅は160mmです。 幅は、半分に折り曲げて使うので最終的には80mmになります。

  EZADDの開発においては、XMLを応用しています。 XMLは、1900年代終わりの頃に、 テキスト処理に関する規格としてW3Cによって勧告され、 その後関連する規格やこれらを応用したソフトウェアが数多く勧告、 開発されてきています。 EZADDは、XMLのほかにデータ変換に関するXSLTと 表示や印刷のためのXSL-FO規格、 それとこれらを応用したソフトウェアを基に実用的なソフトウェアの例として開発しています。

 
1) W3C World Wide Web Consortium
2) XML Extensible Markup Language
3) XSL Extensible Stylesheet Language
4) XSLT XSL Transformation
5) XSL-FO XSL Formating Object

2.1 EZADDの構成

  EZADDは、ホームフォルダとその下に配置されるファイルやフォルダから成りたっています。 下の「表1 EZADDの構成」にその概要を示します。

2.2 作成手順の概略

  EZADDを使ってアドレス帳を作成する手順は、概略以下のとおりです。
1) EZADDのホームフォルダを用意
初めてEZADDを使うときに必要な処理です。
以下のソフトウェアの処理は全てこのフォルダの直下で行います。
2) テキストエディタでデータを作成・修正します
3) ファイルをダブルクリックしてバッチ処理をします
4) PDFファイルをAdobeReaderなどで表示し、印刷します
5) 用紙を所定の大きさに切断し、ページを揃えて折り曲げます

 
表1 EZADDの構成
# ホームフォルダ 種類 内容
ファイル
/フォルダ
(1) ezadd フォルダ EZADDのホームフォルダ
1) tool フォルダ EZADD用スタイルシート、マニュアルなど
2) ezadd ファイル スクリプトファイル
3) ezadd.bat ファイル バッチファイル(HTMLとPDFファイルを生成)
4) ezadd.html ファイル HTML文書、データの確認に使います
5) ezadd.pdf ファイル PDF文書、印刷に使います
6) ezadd.xml ファイル データファイル
アドレス帳のデータは、このファイルに書きます
最初は極簡単な例が入っています
7) manual.html ファイル マニュアルを表示します

3 動作環境

 
1) 動作を確認したOS:Windows2000, WindowsXP, Vine4.3(Linux)
2) 必要なソフトウェア
a) XMLパーサ MSXSL。Version4.0以降
Linuxの場合はSAXON-9.1.0.5以降
b) XSL-FO プロセッサ FOP, Version 0.94
c) JAVA実行環境 JRE6以降

上の「2) 必要なソフトウェア」に記載のものは全て無償で入手が可能です。 EZADDと上のソフトウェアのインストールについては、 「付録(4) EZADDのインストールとアンインストール」と 「付録(5) 必要なソフトのインストール」を参照して下さい。 この他、PDFビュアー、HTMLブラウザ、ZIP解凍ツール、テキストエディタが必要ですが、 これらは、既にインストールされているものがそのまま使えます。

  本書の説明は、Windows環境での使用法について記述しますが、 LINUXで使用する場合は、適宜読み替えて使って下さい。 なお、その時はバッチファイル(ezadd.bat)に代えてスクリプトファイル(ezadd) を使います。

4 アドレス帳の書式

  簡単なアドレス帳の例を、「図1 出力例」に示します。 これを使って説明を進めます。

 
1) 住所録
山田さんの場合が、基本の書式です。氏名、電話番号、住所を記録します。
鈴木さんの例のように、 会社名等とそこの電話番号を別途一行に記録することができます。
同じく鈴木さんの例の最後の行のようにコメントを書くこともできます。
田中さんの場合は、住所は付けずに電話番号だけの例を示しています。
住所録では一人分のデータと次の人の分のデータは、行間を空けて区分します。
2) もろもろ(IDとパスワードなどを記録します)
Yahoo IDの例が基本で、一番左のラベルの後に一文字空けて、 IDとパスワードを"/"などで区切って記録します。
Google IDの例のようにIDが長い場合は、2行目に書くこともできます。
ラベルと説明ないしコメントを組合せれば、 IDとパスワード以外でも記録することができるでしょう。
もろもろでは、一つの項目はラベルから始まり、同じ項目の内容は、 字下げをして別の項目と区別します。

  上のYahooID, GoogleID, mixiは単に例で、 インターネットでサービスをしている会社とは関係ありません。 言わずもがなですが、住所録を手帳ごと紛失してしまうこともあるでしょうから、 IDとパスワードについては、全てを書くのではなく一部を伏字の"..."として、 文字数も変えておくことで、少しは危険を減らすことができるでしょう。

 
図1 出力例

  少しデータを増やして、2ページにわたる例は、 こちらのPDFファイルを見て下さい。

5 使い方の詳細

5.1 データの作り方

  住所録などのデータは、テキストエディタでezadd.xmlファイルに作りますが、 書式はXML文書に準じます。 XML文書に馴染みの無い方は、データを作り始める前に、 「付録(3) XML文書の基本」に目をとおして下さい。

  各々の要素については後の節で説明しますが、 実際のezadd.xmlファイルにはadd開始タグの直後にテンプレートとして、 p要素とそれ以下の要素を一揃いコメントとして書いてあり、 idについても同様にしています。 アドレス帳のデータを入力する時にはこれらのテンプレートを複写しながら 必要な内容を書き足すのが便利でしょう。

5.2 データの構成と要素の概略

  まず、「図1 出力例」 に対応するデータファイル(ezadd.xml)ファイルの内容を 図2に示すので見比べて下さい。 最初の行は、ファイルの内容がXML文書形式のデータで、 文字コードとしてShift JISを使用していることを示しています。 第2行目は、 このファイルをブラウザで表示する時に適用するスタイルシートを示しています。 ここまでは宣言文です。

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="./tool/ezadd.xsl" ?>
<list>
    <date>
        平成20年2月21日
    </date>
<add>
<p>
    <n>
        山田 太郎
    </n>
    <t>
        03-3999-9999
    </t>
    <a>
        111-0000 新宿区新宿1-1-1
    </a>
    <o>
        <n></n>
        <t></t>
    </o>
    <c></c><d>y</d>
</p>
<p><n>鈴木 次郎
    </n><t>03-3888-8888
    </t><a>222-1111 渋谷区渋谷2-2-2
    </a><o><n>川崎商事
    </n><t>03-3777-7777
    </t></o><c>午前中鈴木氏は、会社にほとんど居ない
    </c><d>y</d></p>
<p><n>田中 三郎
    </n><t>03-3666-6666
    </t><a>
    </a><o><n>横浜工業
    </n><t>03-3555-5555
    </t></o><c>
    </c><d>y</d></p>
</add>

<id>
<i><l>Yahoo ID
    </l><n>yamadaTaro/tarotaroYamada2
    </n><c>
    </c><d>y</d></i>
<i><l>Google ID
    </l><n>
    </n><c>crea-home@google.co.jp/taroYamada1
    </c><d>y</d></i>
<i><l>mixi
    </l><n>crea-...google.../ta...2
    </n><c>
    </c><d>y</d></i>
</id>
</list>
図2 データの例

  第3行目以降にルート要素とその子孫の要素、そしてそれらの内容を書きます。 listには、その子要素として、date、add、idとpageがあります。 dateにはデータの作成ないし更新の日付を書きます。 addとidは、住所録ともろもろの親要素です。

  これらの要素はじめEZADDの全ての要素の説明は、 「付録(1) 要素の説明」を参照して下さい。

  データの書き方に関して、 図2の山田さんの例では教科書的に書いてありますが、 これでは行数が多くなり、数が増えたとき修正に手間がかかるようになります。 鈴木さん以降については、この点を改善した書き方をしていますが、 XML文書としての意味は変わりません。

  pとi要素の子ないし子孫の要素については、 該当するデータが無く、 表示が不要な場合にも開始タグと終了タグをそのまま残しておいて差し支えありません。 また、こうしておくと内容を追加する時に便利です。

5.3 住所録の部分

  住所録のデータは、add要素の子要素として書きます。 また、一人分のデータは、p要素の子要素として書きます。 電話番号を書くt要素は2種類あり、pの子要素と、oの子要素があります。 pの子要素は、氏名の右に表示され、oの子要素の方は、組織の右に表示されます。 d要素の内容がyの時は、その人のデータが表示され、 そうでない時は、印刷されません。ezadd.xmlファイルをブラウザで表示する時には、 d要素の内容によらず表示されます。 page要素を使って、適当な個所で改行し、ページの下方に余白を作るためなどに使います。

  一人分の情報の中での表示の順序は、氏名と電話番号が最初に出力され、 その他については記述の順に出力されます。

5.4 もろもろの部分

  もろもろのデータは、id要素の子要素として書きます。 また、1件のIDとパスワードは、iの子要素として書きます。 label要素の内容がラベルとして左端から表示されます。 n要素は、ラベルの右側に表示され、c要素は、一行に表示されます。 d要素とpage要素は、住所録と同じです。

  一件分の情報の中での表示の順序は、ラベルlと説明nが最初に出力され、 その他については記述の順に出力されます。

5.5 入力内容の確認

  アドレス帳を新たに作る場合や修正する場合で、 特に多くのデータを入力する時には、 入力が全て終わってから、誤りを正すのは骨が折れることがあります。このような時は、 次の手順によって、テキストデータの窓を開いたまま、 Webブラウザを使ってそれまでに記入したデータを確認することができます。 ただあくまでもXML文書として整っていないと表示できないので 留意して下さい。

 
1) ezadd.htmlをブラウザで開いていなければ、 ダブルクリックして開く
2) エディタでezadd.xmlに対して適当なところまで入力を済ませる
3) エディタで、[ファイル(F)]-[上書き保存(S)](もしくは[ALT-f]-[s])
4) ezadd.batをダブルクリックしてバッチ処理を実行
5) Webブラウザで、[表示(V)]-[最新の情報に更新(R)](もしくは[ALT-v]-[r])
6) 入力が完了すれば終わり。そうでなければ2)に戻る

  これで、それまでに入力したデータを確認できます。 ブラウザにInternet Explorerを使用する場合は、 さらに簡単で上の手順の内 1)ではezadd.htmlに代えてezadd.xmlをダブルクリックして表示します。 この時、バッチファイルの実行[4)]が不要になります。

  バッチを実行した時、コマンドプロンプトの窓が開いて 「図3 正常なバッチ処理のメッセージ」のように表示されたら、 正常に終了です。何かキーを押して窓を閉じます。

 
D:\ezadd>echo off
ezadd.bat
2009/02/21 14:41:38 org.apache.fop.apps.FopFactoryConfigurator configure
情報: Default page-height set to: 11in
2009/02/21 14:41:38 org.apache.fop.apps.FopFactoryConfigurator configure
情報: Default page-width set to: 8.26in
2009/02/21 14:41:39 org.apache.fop.fonts.truetype.TTFFile checkTTC
情報: This is a TrueType collection file with 2 fonts
2009/02/21 14:41:39 org.apache.fop.fonts.truetype.TTFFile checkTTC
情報: Containing the following fonts:
2009/02/21 14:41:39 org.apache.fop.fonts.truetype.TTFFile checkTTC
情報: MS Mincho <-- selected
2009/02/21 14:41:39 org.apache.fop.fonts.truetype.TTFFile checkTTC
情報: MS PMincho
続行するには何かキーを押してください . . .

図3 正常なバッチ処理のメッセージ

  バッチ処理においては、エラーが発生する可能性があります。 上のようなメッセージと違ったメッセージが表示された時は、 「付録(2) バッチ処理のエラーの例」を参考にして、 対応します。

5.6 PDFファイルへの変換と印刷

  バッチファイルをダブルクリックして実行すれば、データファイルの内容が、 印刷用に整形されてPDFファイルに変換されます。

  印刷は、ほぼ一般のPDFファイルの印刷と同様ですが、 紙の節約の点から次のように処理します。 プリンタには用紙を1枚ずつセットし、奇数ページの印刷が終わったら、 同じ用紙を天地を逆にして再度印刷をします。 これで2ページ分が1枚の用紙に印刷できます。

5.7 印刷した後の紙の処理

  印刷後は、まず長手方向を半分に折って切断します。 その後天地と頁順序を揃えて、 幅を左から160mmの所で切断し、 印刷がある部分を左側にして縦の中央線で内側に折り曲げます。 後は、右側の白紙の部分を手帳の表紙の裏の袋に差し込めば完成です。

6 おわりに

  規格として決められているXMLに沿ったデータを使えば、そのデータの処理には 多くのオープンソースその他のソフトウェアを適用することができ、応用が広がります。 EZADDは、この流れに沿って作成しています。 したがってEZADDのために作ったデータは、 EZDOCによる処理だけでなく他のソフトウェアによる処理の可能性を持っています。 EZADDは、このようなソフトウェアです。ぜひ、使ってみて下さい。

以上


付録(1) 要素の説明

 
# 要素 属性 子要素 意味・内容
1 list ルート要素
2 date ?
3 add ?
4 id ?
5 page *
6 date 作成日ないし更新日
7 add 住所録の親要素
8 p + (person)
9 page *
10 p 一人分のデータの親要素
11 n
(name)
12 t ? (telephone)
13 a * (address)
14 o * (organization)
15 c * (comment)
16 d
(display)
17 p/n 氏名。必須です。
p/nはp要素の子要素n。以下同様
18 p/t 電話番号
19 a 住所
20 o 会社などの親要素
21 n
(name)
22 t ? (telephone)
23 o/n 会社などの名称
24 o/t 会社などの電話番号
25 p/c コメント
26 p/d 印刷の有無。"y"の時印刷
27 add/page 頁の区切り。常に空要素
28 id もろもろの親要素
29 i + (item)
30 page *
31 i 1件分の親要素
32 l
(label)
33 n ? (note)
34 c * (comment)
35 d
(display)
36 l ラベル。必須です。
37 i/n 説明
38 i/c コメント
39 i/d 印刷の有無。"y"の時印刷
40 id/page 頁の区切り。常に空要素
41 list/page 頁の区切り。常に空要素
(注) 要素について、同名の要素がある場合は、親要素の名前を付けて区別しています。
数:子要素の数、(空):1、?:0か1、*:0以上、+:1以上


付録(2) バッチ処理のエラーの例

 
1) エラーメッセージの例(その1)
下のメッセージは、 date要素の終了タグが見つかる前にファイルの最後にあるlist 要素の終了タグが見つかったのでエラーだと言っています。 date要素の終了タグを書き忘れた時などにこのようになります。 この場合は、忘れたタグを追加して修正します。
D:\ezadd>echo off
ezadd.bat

Error occurred while parsing document.

Code:   0xc00ce56d
URL:    file:///D:/ezadd/ezadd.xml
Line:   39
Column: 3
終了タグ 'list' が開始タグ 'date' と一致していません。
続行するには何かキーを押してください . . .

2) エラーメッセージの例(その2)
これは、PDFファイル(ezadd.pdf)をAdobeReaderで内容を表示したまま、 バッチを実行した時に発生します。 この場合は、PDFファイルを表示した窓を終了して、再度バッチを実行します。
D:\ezadd>echo off
ezadd.bat
2009/02/21 14:53:07 org.apache.fop.apps.FopFactoryConfigurator configure
情報: Default page-height set to: 11in
2009/02/21 14:53:07 org.apache.fop.apps.FopFactoryConfigurator configure
情報: Default page-width set to: 8.26in
2009/02/21 14:53:07 org.apache.fop.cli.Main startFOP
致命的: Exception
java.io.FileNotFoundException: ezadd.pdf (プロセスはファイルにアクセスできません
。別のプロセスが使用中です。)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at org.apache.fop.cli.Main.startFOP(Main.java:161)
        at org.apache.fop.cli.Main.main(Main.java:197)
続行するには何かキーを押してください . . .


付録(3) XML文書の基本

  XML規格に沿ったファイルはXML文書と呼ばれ、 EZADDでは住所録などのデータをXML文書として作成します。 ここでは、このXML文書についてEZADDで必要な範囲で簡単に説明します。

  XML 文書は、<xxx>aaaaa</xxx> と表現される一つないし 複数の要素で構成されます。 <xxx> から </xxx> までを xxx 要素と呼びます。 この時、<xxx> は開始タグ、</xxx> は終了タグと呼ばれ、 開始タグと終了タグにはさまれた部分(ここでは aaaaa)は、 要素の内容と呼ばれます。

  要素は、文字列から成る内容を含む場合と別の要素を含む場合があり、さらに両者を 含むこともできます。 また、内容に何も含まない場合は、<xxx /> と書きます (例 <br />)。

  要素<d>に含まれる要素<e>は次の図ように書くことが でき、2つ要素は入れ子の関係になっていると言います。
         要素<d>
    |<------------------->|
    |                     |
    <d>...<e>...</e>...</d>
          |        |
          |<------>|
            要素<e> 
この時、<e> は <d> の子要素と呼ばれ、 また 逆に <d> は <e> の親要素と呼ばれます。<d> 要素と <e> 要素の親子関係は次のように書くこともあります。
   <d>
    |
    +---<e>
2つの要素は次の図にあるようにはできません。入れ子の関係が くずれています。
     +----------+
     |          |
    <d>..<e>..</d>..</e>
          |           |
          +-----------+

  XML文書には、 ルート要素と呼ばれる最上位の要素が一つだけ存在でき、 他の要素は、ルート要素の子か、子孫になります。 また、要素の内容の記述の中で、先頭、途中もしくは末尾の連続した見えない文字(例:空白、 改行、タブ)は、 1文字の半角空白に置きかえられたり、削除されることがあります。

  開始タグには、次のように属性を付けて書くことがあります。
   <要素名 属性名="値">
   
    例: <table border="1">
ここで属性の値は必ずダブルクォーテーションで囲います。XML文書で "<!--"から"-->"の間は、コメントになります。


付録(4) EZADDのインストールとアンインストール

 
1) インストール
インストールは次のようにします。
a) 次のアドレスからEZADD(ezadd.zip)をダウンロードします。
"http://homepage2.nifty.com/crea-home/index.html"
b) 適当な場所で、ezadd.zipを解凍します。
フォルダezaddができ、その下に必要なフォルダとファイルが展開されます。
これで、インストールはおしまいです。 このezaddフォルダをEZADDのホームフォルダとします。
2) アンインストール
アンインストールは次のようにします。
必要ならEZADDのホームフォルダ直下のezadd.pdfファイルを適当な場所に複写の上、 ホームフォルダとそれ以下のファイルを削除します。
これで、アンインストールはおしまいです。


付録(5) 必要なソフトのインストール

  (1) MSXSLのインストール
MSXSLは、Microsoft社が無償で提供するXMLパーサーです。
1) 下の URL を右クリックし、新しいウィンドウで開くを選択
"http://www.microsoft.com/downloads/Search.aspx?displaylang=en"
2) Go ボタンの左の窓に msxsl.exe を入れて改行
3) 見つかった Title をクリック
4) msxsl.exe 横の Download ボタンをクリック
5) ダウンロードした msxsl.exe を path の通った適当なフォルダにコピーする

  (2) JAVA実行環境のインストール
JREは、Sun Microsystems社が無償で提供するJAVAの実行環境です。
1) 次のアドレスにブラウザでアクセスします。
URL: "http://www.java.com/ja/"
2) 「インストール」をクリックして、インストールを開始します。
3) 「このソフトウェアをインストールしますか?」の質問に対して「インストールする」 をクリックします。
4) インストールが始まり、その後「Javaセットアップ」が表示されます。 使用許諾契約を確認して、「同意する」をクリックします。
5) インストールが完了したら、「インストールの確認」が表示されます。
6) ブラウザを一度閉じれば完了です。

  (3) FOPのインストール
FOPは、Apacheソフトウェア財団が無償で提供する、XSL-FOプロセッサーです。 現在、FOP0.95が配布されていますが、下で説明するttcフォントに関して、 メトリックスの作成がうまく行かず日本語の表示に問題を生じます。 したがって、ここではFOP0.94を使うことにします。 FOPのホームページは、次の場所にあります。 "http://xmlgraphics.apache.org/fop/"
1) 下のURLのページを開きます。
"http://ftp.riken.jp/net/apache/xmlgraphics/fop/binaries/"
2) fop-0.94-bin-jdk1.4.zipの項をクリックするとダウンロードが始まります。
3) 保存のボタンをクリックし、 ファイルを格納するフォルダを指定して保存ボタンをクリックします。
4) fop-0.94-bin-jdk1.4.zipを適当な場所(例: c:\)で解凍します。 fop-0.94フォルダが作られその下に関連するファイルなどが展開されます。
5) EZADDホームのezadd.batをエディタで開き、 上から数行目にあるFOPホームの設定(set FOPHOME=c:\fop-0.94)が、 FOPがインストールされたフォルダ(この場合、c:\fop-0.94) を指していることを確認し、違っている場合には修正します。
6) 日本語が使えるように設定を続けます。まずコマンドプロンプトの窓を開けて、 カレントディレクトリをC:\fop-0.94にします。 その上で、 MS-Minchoについてフォントメトリックスを作成する次のコマンドを実行します。
C:\fop-0.94> java -cp build\fop.jar;lib\avalon-framework.jar;//
lib\commons-logging.jar;lib\commons-io.jar;lib\xmlgraphics-commons.jar//
// org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho"//
// c:\windows\fonts\msmincho.ttc conf\msmincho.xml
これは、一つのコマンドなので、途中で改行せずに入力を続けます。 また"//"の部分は、 入力せずに次行先頭の同じ部分に重ねて読んで下さい。 例えば、途中は"framework.jar;lib\commons"となります。 さらに、jarファイルは大抵拡張子の前にバージョン番号が付くので、 dirコマンドで確認した上でこれを加えて入力します。 続けて、MS-PMinchoについても同様にコマンドを実行します (変更箇所は、2ケ所、"MS Mincho"を"MS PMincho"へ、 msmincho.xmlをmspmincho.xmlに変更)。
7) C:\fop-0.94\conf\fop.xconfファイルを同じフォルダにuserconf.xconf の名前を付けて複写します。 その上で、usrconf.xconfファイルをテキストエディタで開き、 fonts要素の中を次のように変更します。このファイルもXML文書の形式です。
<fonts>
    <font metrics-url="c:\fop-0.94\conf\msmincho.xml" kerning="yes"
        embed-url="c:\winnt\fonts\msmincho.ttc">
        <font-triplet name="MS-Mincho" style="normal" weight="normal"/>
        <font-triplet name="MS-Mincho" style="normal" weight="bold"/>
        <font-triplet name="MS-Mincho" style="normal" weight="500"/>
    </font>
    <font metrics-url="c:\fop-0.94\conf\mspmincho.xml" kerning="yes"
        embed-url="c:\winnt\fonts\msmincho.ttc">
        <font-triplet name="MS-PMincho" style="normal" weight="normal"/>
        <font-triplet name="MS-PMincho" style="normal" weight="bold"/>
        <font-triplet name="MS-PMincho" style="normal" weight="500"/>
    </font>
</fonts>
8) 最後に、C:\fop-0.94\fop.batをテキストエディタで開きます。 まず、最初の辺りにある次の内容を、下のように変更します。
    set LOCAL_FOP_HOME=
if "%OS%"=="Windows_NT" set LOCAL_FOP_HOME=%~dp0

rem set LOCAL_FOP_HOME=
rem if "%OS%"=="Windows_NT" set LOCAL_FOP_HOME=%~dp0
    set LOCAL_FOP_HOME=c:\fop-0.94
また、最終行の直前に"set USERCONF=c:\fop-0.94\conf\userconf.xconf"の 行を追加します。 最終行については、"-c %USERCONF%"を追加して末尾の部分を次のようにします。
org.apache.fop.cli.Main -c %USERCONF% %FOP_CMD_LINE_ARGS%
その上で、fop.batをパスのとおった適当な所に複写します。