[前へ] [次へ] [目次]

## EB ライブラリの特徴

前に述べたように、EB ライブラリは、電子ブック (EB, EBG, EBXA, EBXA-C, S-EBXA) と EPWING 形式の CD-ROM 書籍に対応しています。

EB ライブラリは、これらの CD-ROM 書籍に対して、次の処理を行うことが できます。

- 前方一致検索
- 後方一致検索
- 完全一致検索
- 条件検索
- 複合検索
- 見出しデータの取得
- 本文データの取得
- メニューの取得
- 著作権表示の取得
- カラー図版データの取得 (ただし EPWING のみ)
- モノクロ図版データの取得
- 外字データの取得
- 動画データの取得

この章では、EB ライブラリの概要に関して、あらかじめ知っておいて頂いた ほうが良いと思われるその他の事柄について、何点か説明します。

### ヘッダファイル

EB ライブラリには、いくつかのヘッダファイルが用意されています。

`appendix.h`
  appendix (付録) に関連した宣言、定義を行う。
`binary.h`
  バイナリデータに関連した宣言、定義を行う。
`eb.h`
  EB ライブラリの基本ヘッダファイル。
`error.h`
  エラーコードに関連した宣言、定義を行う。
`font.h`
  外字に関連した宣言、定義を行う。
`text.h`
  テキストデータ (本文、見出しなど) に関連した宣言、定義を行う。

これ以外にもいくつかのファイルがインストールされますが、上に挙げた ヘッダファイルから読み込まれるもので、アプリケーションプログラムが 直接読み込む必要はありません。

アプリケーションプログラムは、EB ライブラリを使う際にこのヘッダファイル をファイルの先頭付近で読み込みます。

>     #include <eb/eb.h>
>     #include <eb/error.h>

`eb.h` ではなく、`eb/eb.h` を読み込むようにして下さい。

### 文字コード

EB ライブラリでは、CD-ROM 書籍内のデータを文字列にしてアプリケーション に渡す際の文字コードを規定しています。

EBG (海外の電子ブック) については、データが ISO 8859-1 (ラテン文字 1、 ただし制御文字を除く) で書かれているため、データのやり取りも ISO 8859-1 で行います。 ただし、外字だけは 2 バイトで表現し、0x0101 〜 0x1efe の領域を使用します。 (外字領域の下位 16 ビットは 0x01 〜 0xfe の範囲を使用します。)

EBG, EBXA-C を除いた電子ブック、および EPWING については、データが JIS X 0208 (日本語のかな漢字) で書かれており、JIS X 0208 を 0x2121 〜 0x7e7e にマッピングし、0xa121 〜 0xfe7e を外字領域にしています (下図)。

>     　　　　　　　　　　　　　　　　上位８ビット

>     　　　　　　　　　００　２１　　　　７ｅ　ａ１　　　　ｆｅ
>     　　　　　　　００┌──┬─────┬──┬─────┬┐
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　２１├──┼─────┼──┼─────┼┤
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│ＪＩＳ　Ｘ│　　│　外字　　││
>     　　　　　　　　　│　　│０２０８　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　７ｅ├──┼─────┼──┼─────┼┤
>     下位８ビット　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　ａ１├──┼─────┼──┼─────┼┤
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　ｆｅ├──┼─────┼──┼─────┼┤
>     　　　　　　　　　└──┴─────┴──┴─────┴┘

EB ライブラリでは JIS X 0208 部分を日本語 EUC (EUC-JP) にエンコード して、アプリケーションとのやり取りも日本語 EUC で行います。 したがって、JIS X 0208 部分は 0xa1a1 〜 0xfefe にマッピングされます。

EBXA-C (中日・日中辞書の電子ブック) については、データが JIS X 0208 (日本語のかな漢字) と GB 2312 (中国語の簡体字) で書かれており、 JIS X 0208 を 0x2121 〜 0x7e7e にマッピング、 GB 2312 を 0x21a1 〜 0x7efe にマッピングし、 0xa121 〜 0xfe7e を外字領域にしています (下図)。

>     　　　　　　　　　　　　　　　　上位８ビット

>     　　　　　　　　　００　２１　　　　７ｅ　ａ１　　　　ｆｅ
>     　　　　　　　００┌──┬─────┬──┬─────┬┐
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　２１├──┼─────┼──┼─────┼┤
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│ＪＩＳ　Ｘ│　　│　外字　　││
>     　　　　　　　　　│　　│０２０８　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　７ｅ├──┼─────┼──┼─────┼┤
>     下位８ビット　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　ａ１├──┼─────┼──┼─────┼┤
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　　　│　　│ＧＢ　　　│　　│　　　　　││
>     　　　　　　　　　│　　│２３１２　│　　│　　　　　││
>     　　　　　　　　　│　　│　　　　　│　　│　　　　　││
>     　　　　　　　ｆｅ├──┼─────┼──┼─────┼┤
>     　　　　　　　　　└──┴─────┴──┴─────┴┘

EB ライブラリでは、アプリケーションとのやり取りに使う文字コードは、 日本語 EUC および中国語 EUC (EUC-ZH) です。 したがって、そのままでは JIS X 0208 と GB 2312 が 0xa1a1 〜 0xfefe に マッピングされ、衝突してしまいます。 この問題をどう回避するのかは、アプリケーション側で決める必要があります (詳しくは、「フックと文字コードの関係」 を参照のこと)。

電子ブック、EPWING ともに、外字については、アプリケーション側でどう 扱うかを決める必要があります。 外字について詳しくは 「外字」 を参照のこと。

### 圧縮された書籍について

EB ライブラは、データを圧縮して収録した書籍を扱うことができます。 今のところ、次の 4 種類の圧縮方法に対応しています。

`ebzip` 圧縮形式
  EB ライブラリ独自の圧縮形式です。 付属の `ebzip` コマンドを使うと、この形式で圧縮した書籍を作れます。
EPWING V4, V5 形式
  市販の EPWING V4, V5 の書籍の一部に、この形式で圧縮したものがあります。
EPWING V6 形式
  市販の EPWING V6 の書籍の一部に、この形式で圧縮したものがあります。 EPWING V4, V5 形式の改良型です。
S-EBXA 形式
  市販の S-EBXA の書籍の一部に、この形式で圧縮したものがあります。

データの伸長は EB ライブラリ側で自動的に行われるため、 アプリケーションプログラムからは、アクセスしている書籍が圧縮されているか どうか分かりません。 アプリケーションプログラムは、書籍が圧縮されているかどうかで処理を変える 必要はありません。

### 遠隔ホスト上の書籍について

バージョン 4.0 から、EB ライブラリは他のホストの書籍にアクセスできる ようになりました。

遠隔アクセスの処理はすべて EB ライブラリ側で行われますので、 アプリケーションプログラムは、書籍が自分のホスト上にあるかどうかで、 EB ライブラリの呼び出し手順を変える必要はありません。

ただし、他のホストからアクセスすると、処理速度は非常に遅くなります。 そのため、効率良く処理できるよう、アプリケーションの処理方法を工夫すべき 状況が生じることはあるかも知れません。

### システムの要件

アプリケーションプログラムのコンパイルに用いるコンパイラには、 ANSI (ANSI X3.159-1989, ISO/IEC 9899-1990) 対応のものを対象としています。 また、システムには POSIX.1 (IEEE Std. 1003.2-1990, ISO/IEC 9945-1:1990) 準拠ないし互換のものを対象としています。

永らく EB ライブラリでは、古いコンパイラや UNIX 系システムへの対応も それなりに行われていましたが、バージョン 4.1 からは対応を打ち切っています。 特に ANSI 対応のコンパイラは必須ですので、ご注意ください。

[前へ] [次へ] [目次]