Hatena::ブログ(Diary)

hishidaのblog このページをアンテナに追加 RSSフィード

プロフィール

hishida

hishida

EB series support page 管理人 ブログ

2017-07-11

[][] 読書尚友 Text-to-speech対応

家電量販店で現在発売中のAndroidスマホ最新機種を調べたところ、どうやら現行の機種は全て標準で日本語読み上げエンジンに対応しているようだ。

(設定→「言語と入力」→「テキスト読み上げの出力」→「優先するエンジン」→「Googleテキスト読み上げエンジン」→「言語」 に日本語があり、音声データがインストール済みになっている。)

そこで安心して読書尚友もText-to-speech対応することにした。

  • 青空文庫形式のルビ《》に対応。
  • 。、の句読点の単位で読み上げを行い、ポーズボタンで中断/再開 ができる。現在読み上げ中の位置は下線で表示する。
  • 頁をまたがると自動的に頁送りを行う。
  • CJKなら日本語読み上げエンジン、英語なら英語のエンジンを使う。青空文庫の「アーサー王物語」のように英語と日本語が混じる文章でもそれぞれのエンジンで読み上げを行う。

機能的にはほぼこれでいいと思うが、肝心の日本語読み上げエンジンの抑揚のない機械音が不自然で、とても長く聞いていられない。日本語読み上げエンジンが進化しないと、実用性は今ひとつかもしれない。

2017-04-21

[] 読書尚友 2.0.0

読書尚友に大きめの改良を行なったので、メジャーバージョンアップとみなして2.0.0とした。

f:id:hishida:20170421172734p:image

フォントIPA明朝から源ノ明朝に変えたので、電子書籍の文字が非常に美しくなった。またLatin文字もNoto Serifベースなので、英文でも同じフォントで対応できるのもいい。花園明朝Bを搭載したのは、サロゲートペアに対応したのでUnicode CJK Ext.B,C,D,Eを表示させるためである。ただし、フォントを2つ内蔵したので、apkのサイズが肥大化してしまい(約60MB)、残り領域が少ないとインストールできない可能性がある。Unicode拡張領域を使用する文書は滅多にないので、オプションダウンロードさせる仕組みにしたほうがいいかもしれない。(追記:2.0.1で花園明朝Bはオプションダウンロードにした)

PDFは目次に対応し、正式版とした。ただ階層目次の開閉には対応していないので、フラットに全目次が表示される。このあたりはまだ工夫の余地がある。

2017-04-15

[] android用OPDSクライアント公開

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

no title

f:id:hishida:20170415183054p:image

f:id:hishida:20170415183051p:image

初期状態では次の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/
Smashwordshttps://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ブラウズを組み込むことを予定している。

2017-04-07

[][]読書尚友のPDFサポート 他

PDF対応について

「読書尚友のPDF対応を開発中」という記事を2015年8月に載せてから、1年半も経ってしまった。

2015-08-26 - hishidaのblog

おさらいすると、Android用のPDFライブラリmuPDFをはじめGPLのものが多く、ソースの公開義務が生じるので、なかなか使用しづらい。このため、Android 用の書籍ビューアの中には、PDFビューアの部分だけプラグインにしているものもある(MHE Novel Viewer、Perfect Viewer等)。

その後、Android 5.0 Lollipop からPdfRendererという機能が標準で備わったが、これはページ毎にImageViewにビットマップで表示するもので、拡大縮小したときにスケールに合わせてレンダリングしなおさないと文字がギザギザになる等、あまり使いやすくない。またLollipop以上でないと使用できないので、kitkat以下を切り捨てることになり、制限がきつい。PdfRendererを使用した読書尚友のPDF対応は2015年時点でできていたのだが、上記の理由で公開していなかった。

ところが最近、Apache2.0ライセンスのPDFライブラリで使用できそうなものを見つけた。

com.github.barteksc.pdfviewer.PDFView

no title

スワイプによる拡大縮小、ダブルタップによる拡大もできるし、アンチエイリアスも効くので、PDFの表示 だけで編集をしないのなら、十分に実用になる。何より、Android3.0以降で使用できるので、大半のユーザが恩恵を得られる。

というわけで、読書尚友1.54でPDFビューアを実装してみた。apkのサイズが10kb→28kbと大きくなってしまったが、それほど問題にならないと思う。今の所、有料版だけの機能だが、free版にも入れるかどうかは今後検討したい。

この後の作業としては、PDF関連の機能の追加 (目次とメタ情報の表示機能)を予定している。

f:id:hishida:20170407160049p:image

書籍一覧のカード型UIへの変更とブクログサポート

他に最近の改良としては、書籍一覧のUIをCardViewを使用してカード型にした(Androidのアプリの流行としては数年遅れだが)。RecyclerViewの導入も試してみたが、ViewHolderモデルのListViewと速度的な差はないので、結局ListViewのままとした。RecyclerViewでないとできないようなUI(スワイプによる削除や項目の移動など)が必要なければ、無理にRecyclerViewに変える必要はないと思う。

f:id:hishida:20170407160100p:image

また、メニューボタンにブクログへのリンクを追加してみた。独自の感想投稿機能を作るよりも、青空文庫で正式に使用されている感想投稿サイトをサポートしたほうがいいと判断した。

OPDSの検討開始

次の段階として、OPDSをサポートしてみようかと思っている。

JEPA|日本電子出版協会 OPDSとは?

OPDSを実装しておけば、Project Gutenbergなども接続できるようになる。そうなると英文のePubの表示をきちんとしないといけないが(せめて英文の行端揃えは必須)、時間をかければできていくのではないかと思う。

また、有志による青空文庫のOPDSも稼働しているようだ。

20 | 2月 | 2011 | 潮流工房

継続してサポートされる保証はないが、とても有意義な試みだ。

OPDSクライアントとして単独のアプリにするか、読書尚友に組み込むかはこれから検討する。

2017-02-24

[]読書尚友に底本出版社別リストを追加

青空文庫のHPでは、1万冊を超える作品を探すためのインデックスとして、作家別(作家名の五十音順)、作品別(作品名の五十音順)の総合インデックスと、分野別リスト(日本十進分類)が提供されている。

大体の青空文庫ビューアアプリでは、作家別・作品別のインデックスはあるが、分野別のインデックスを実装しているものは少ない。読書尚友を開発するとき、分野別リストを実現することは目標の一つだった。

読書尚友では、これに加えて、公開年別リストも提供している。青空文庫では毎年1月1日に、その年著作権が切れる著者の作品を一斉に公開する慣例があり、毎年の年初の公開作品を見たい場合があるので、年月日別のインデックスがあれば便利ではないかと思ったためだ。また、青空文庫に最初に登録された作品は何だったかなど、青空文庫の歴史を調べたいときにも役立つ。

今回さらに、新たな試みとして、底本出版社別リストを追加した。たとえば、底本出版社別リスト→「作品社」(底本出版社)→「日本の名随筆10 山」(底本)→「槍ヶ岳第三回登山」のような読み方ができる。

f:id:hishida:20170224232741p:image

f:id:hishida:20170224232810p:image

f:id:hishida:20170224232842p:image

f:id:hishida:20170224232837p:image

実は「えあ草紙」というビューアに、特別企画ページとして「日本の名随筆、花の名随筆」や「推理作家一覧」などがあるのがヒントになった。面白いと思ったが、テーマ別だとメンテナンス作業がネックになる。底本出版社別ならメンテナンス不要で、青空文庫の収録冊数が増えるほど有益性が増すと思う。

一つの問題は、作品や作家のようにID化されていないので、同じ底本でも表記が異なるとインデックスが分かれてしまうこと(例:「山と渓谷社」と「山と溪谷社」、「学芸書林」と「學藝書林」、半角空白と全角空白の混在等)。全角空白を半角化するなど正規化を試みているが、完全にはいかない。

まだ発展途上だが、新しい青空文庫の読み方を一つ提案できたと思う。