hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

android用OPDSクライアント公開

前回のブログ( 読書尚友のPDFサポート 他 - hishidaのblog )で検討中と書いたandroid用OPDSクライアントがそこそこ動くようになったので、Google Playで公開した。とりあえずカタログのナビゲーション機能を実装してみたが、次の段階ではOpenSearchに対応してみたい。
https://play.google.com/store/apps/details?id=info.ebstudio.opdsviewer

初期状態では次のOPDSカタログを登録している。

Project Gutenberg http://m.gutenberg.org/?format=opds
Feedbooks http://www.feedbooks.com/publicdomain/catalog.atom
BookServer(Internet Archive) http://bookserver.archive.org/catalog/
Manybooks http://manybooks.net/opds/
Smashwords https://smashwords.com/atom
青空文庫 OPDS http://aozora.textlive.net/catalog.opds
台湾 中華電子佛典協會 漢文大蔵経 http://www.cbeta.org/opds/
達人出版会 http://tatsu-zine.com/catalogs.opds
O'Reilly Japan https://www.oreilly.co.jp/ebook/catalogs.opds

これ以外に、有名どころで O’Reilly Media(https://opds.oreilly.com/opds/)も動作を確認したが、リンク先が購買しかないので、初期登録からは外した。
日本の出版サイトでは技術評論社がOPDSを提供しているが(http://gihyo.jp/dp/catalogs.opds)、いろいろと技術的な問題があって初期登録からは外すことにした。何が問題かというと、feedの作りが悪いのか、Abdroidの標準のXmlPullParserではパースで文法エラーになる。SAX Parserだと読み込みに成功した。パーサーによる相性問題が他にもあるかもしれないので、設定でXmlPullParserとSAX Parserを選択できるようにしてみた。
また、技術評論社のOPDSには新刊(http://gihyo.jp/dp/new.opds)と既刊書(http://gihyo.jp/dp/all.opds)があり、既刊書の方のOPDSが、1600冊以上のentryを一度に返してくる作りになっている。スマートフォンでは長考状態になって全く実用に耐えない。件数が多い場合には100件ずつぐらいページ単位で返すような設計にすべきだと思う。

海外の有名な読書リーダー(Moon+ Reader、Aldiko等)では大抵はOPDSブラウズ機能を内蔵している。日本ではOPDS自体が普及していないこともあり、青空文庫専用ビューアが普及している。
正直OPDSクライアントのニーズがあるかどうかわからないが、個人的にはOPDSの勉強にはなった。
読書尚友にもライブラリ機能としてOPDSブラウズを組み込むことを予定している。