論理プログラミング最終課題 prolog データベースによる書籍管理

論理プログラミング最終課題
prolog データベースによる書籍管理アプリケーション
学部:環境情報学部 4 年 学籍番号:70340037
mail:[email protected] 氏名:粟飯原俊介
2006 年 7 月 14 日
1 プログラム概要
書籍バーコードをバーコードリーダーによって読み取り、入力されたバーコードから、ISBN 番
号を算出し、それを元に WEB データベースから情報を取得して、書籍の簡易データベースを構築
する。書籍の情報は、AMAZON(amazon.co.jp) から ISBN ナンバーをキーとすることによって、
xml 形式で取得することができる。
SWI-Prolog の環境を前提としており、windows 版 SWI-Prolog(Version 5.6.12) にて動作確認
を行っている。
2 使い方
後述する本体アプリケーションファイルをコンパイルすることによってプログラムをロードで
きる。
2.1 外向きインターフェイス
このアプリケーションには、3 種の UI 用述語が存在する。
registration. 書籍の情報を DB に追加する。述語を呼び出すと、処理系が入力待ち状態になり、バーコー
ドナンバーを入力することによって、書籍のデータを登録する。バーコードナンバーではな
く、空文字入力 (何も入力せずにエンターを入力する) を受け取った場合は、DB をファイル
に保存する。
delete. 書籍の情報を、DB から削除する。述語を呼び出すと、処理系が入力待ち状態になり、バー
1
コードナンバーを入力することによって、対象の書籍のデータを、DB から削除する。バー
コードナンバーではなく、空文字入力 (何も入力せずにエンターを入力する) を受け取った
場合は、DB をファイルに保存する。
save db. 書籍 DB をファイルに保存する。保存先のファイルは、このアプリケーションの存在する
ディレクトリの直下の、bookrack.pl である。
3 ファイル構成
prolog-bookrack.pl 本体アプリケーション
utf8.pl 酒井政裕氏作成の utf8、ucs 相互変換ライブラリ
xml.pl 汎用 xml パーサーライブラリ
bookrack.pl 書籍 DB ファイル
prolog-mode.l prolog の簡易開発環境
汎用 XML パーサーは、今回使用せずに、Amazon の XML スキーマに最適化したパーサーをアプ
リケーション内に組み込んである。
4 extra
今回作成した prolog アプリケーションと共に、テキストエディタ xyzzy 上で動作する prolog の
自作の簡易開発環境を同梱している。詳細、使用方法等に関しては、prolog-mode.l というファイ
ルに記述してあるので、興味がある方は参照していただきたい。
5 まとめ
初期は、XML をツリー状のリストにパースする汎用ライブラリを作成し、それを元にアプリ
ケーションを開発する予定であったが、思いの外速度が出なかったため、現在のような形になっ
た。プログラム自体は、socket 関連の遅延がなければストレスなく動作するレベルの実行速度を実
現している。実用的なアプリケーションを作成する、という当初の目的は達成したといえるのでは
ないだろうか。
汎用 XML パーサーも高速化を行い、一応は動く形にまですることができたが、まだまだ改良の
余地がある。今後、さらに改良を進めて行きたいと考えている。
2
6 使用ライブラリ
このアプリケーションでは、取得した amazon の xml データの文字コードを、UTF8 から UCS
に変換するために、2001 年論理プログラミングにて酒井政裕氏が作成した utf8.pl という、UTF-8
でエンコードされたバイト列と UCS の列を相互に変換するライブラリを使用させていただいた。
参考文献
[1] 渋谷 憲政 ISBN とバーコード
http://www.cc.kurume-it.ac.jp/home/general/sibhome/isbn/isbnindex.html
3