電子書籍 kobo touch のニュースアプリの開発(メモ)

1.ニュースサイトのデータを取得
2.広告データを削除、データの整形
3.記事のタイトルとURL取得
4.記事タイトルのURL先データの取得
5.データの整形
6.記事本文の抜出
7.画像データがある場合は画像データの読み込み
8.形成処理
9.ページファイルの作成
10.EPUB化
11.kobo本体へのデータ転送

とりあえずこんなところでしょうか?

記事毎にファイルを作るか、インデックス化するかが悩ましいところです。
細かい調整をしようと思ったら、EPUBの構成や出来る事などをきちんと調べなおす必要もあります。

EPUBはどうやら拡張子が「.EPUB」なだけで、実態は「.ZIP」ファイルの要です。
書庫ファイルの構成ルールがあるようですので、そのルールに従いZIP圧縮してやり、拡張子を「.EPUB」に変更する事で出来上がるようです。

参考にしたサイト:第三版 日本語Epubブックサンプル

次に中の構成。
Epub3の場合、スタイルシート文字コードは「UTF-8*1でなければならないようです。
文字コードはよーわからんです。

ルートにまずは「mimetype」という拡張子なしのファイルをまず作る必要があるようです。
中はアスキーデータで「application/epub+zip」を言う一文のみ。う〜ん、このファイルの保存形式も「UTF-8」になるのだろうか?

ためしにサンプルで公開されているデータを解凍して、TeraPadで読み込んでみましたが、「SHIFT-JIS」でした。「UTF-8」で読み込みなおしても問題なかったことから、英文だとこのあたりは関係ないのかな?

今後はトラブルのも嫌なので、出力されるアスキーファイルの文字コードは「UTF-8」を指定してやってみようと思います。

次に「META-INF」というサブフォルダ(サブディレクトリ)が必要なようです。
そのサブフォルダ内に必須のファイルは「container.xml」だけのようで、他のファイルはまぁ現段階(本アプリで作成するEPUBファイルには)では不要そうです。
ファイルの中身は

<?xml version=”1.0”?>
<container version=”1.0”xmlns=”urn:oasis:names:tc:opendocument:xmlns:container”>
 <rootfiles>
  <rootfile full-path=”OEBPS/content.opf”media-type=”application/oebps-package+xml”/>
 </rootfiles>
</container>

というもの。赤字の「OEBPS」はサブフォルダで、このフォルダ名のサブフォルダを作る気がない場合は「content.opf」だけにしとけばよさそうです。
順当にいけば、次に必須なのは「content.opf」ファイルかな?上記の指定方法から、保存場所とファイル名は可変で好きにしてよさそうです。
とりあえずサンプルを開いて考えてみますと、、なんかいっぱいあって、どれが必須なのかさっぱり。
metadata

xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"

identifier:よくわからない。
date:日付と時間が入力されていた。でも必須なの?後に続く、metaタグproperty="dcterms:modified"で別の日付が……
title:Epubのタイトルだと思う。無名じゃダメ?
contributor:製作者とかそういうのと思う。
creator:著者とか?
language:「ja」だった。ないと困りそう?
rights:「Public Domain」とあった。???
publisher:出版社っぽいのが書いてあった。でも必須なの?
meta property="page-progression-direction":「rtl」とある。ページめくりに関係ありそうな予感。(右側タッチ、左側タッチ

manifest

<item properties="nav" media-type="application/xhtml+xml" id="navdoc" href="navdoc.html"/>
<item id="tocncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
<item id="style" href="stylesheet.css" media-type="text/css" />
<item id="titlepage" href="title_page.xhtml" media-type="application/xhtml+xml" />
<item id="chapter01" href="chap01.xhtml" media-type="application/xhtml+xml" />
<item id="chapter02" href="chap02.xhtml" media-type="application/xhtml+xml" />
<item id="chapter03" href="chap03.xhtml" media-type="application/xhtml+xml" />
<item id="imgl" href="images/koma.png" media-type="image/png" />
内容的に、参照する他のファイルっぽい?ここで宣言しなかったら、パッケージに入っててリンクで呼び出してても無視されるのだろうか?
気になるのが「toc.ncx」。
参照先には「目次の形式がNCXからNAVに変更。ふつうのXHTMLで書くようになった。2.0のNCXも共存可能。」とある。*2

spine

< spine toc="tocncx" page-progression-direction="rtl">
< itemref idref="titlepage" />
< itemref idref="chapter01" />
< itemref idref="chapter02" />
< itemref idref="chapter03" />
< /spine>
ページ順かな?
「manifest」で設定した「ID」名と「idref」の名前にリンク関係があるような気がします。画像やスタイルシートなどが設定されていないので「media-type="application/xhtml+xml"」のみが対象かな。

次に出てきたのが「toc.ncx」です。いくつか分解します

< ?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html>
< html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ja">
< head>
・・・・
< /head>

ヘッダー部分。
タイトルがある場合は「< title> (タイトル)< /title> 」を追加
スタイルシートがある場合は「< link rel="stylesheet" href="スタイルシート.css" type="text/css" /> 」
文中に記述する場合

< style type="text/css">
・・・・・
< /style>

以下ボディ

< body>
< nav epub:type="toc">
< h1> 目 次< /h1>
< ol>
< li> < a href="text/000.xhtml"> 目次項目1< /a> < /li>
< li> < a href="text/000.xhtml#m-1"> 目次項目1-1< /a> < /li>
......
< /ol>
< /nav>
< /body>
< /html>

「< nav epub:type="toc"> 」の宣言が気になりますが、マァこの通り作成します。
Epub3の場合は「navdoc.html」で「toc.ncx」はEpub2用とかいてあったので、内容はほぼ同じで「< nav epub:type="toc"> 」の部分だけ抜いた「navdoc.html」を用意しました。
ただ、この場合は上記の「Item」タグで宣言してやらねばならないだろうなという事で、
「<item properties="nav" media-type="application/xhtml+xml" id="navdoc" href="navdoc.html"/">」を追加。


次に目次の「index.xhtml」と記事情報用の「page000.xmhtl」の作成。

この時サンプルで作成したXHTMLがエラーばかり起こして原因が不明。この時取って解決した方法が
1.タグは小文字にする。(<A HREF=・・・> だと× <a href=・・・> と書かないとダメだった。なので全部小文字に変更)
2.<BR>タグ(改行)でもエラーを起こすと気があるので</BR>と占めてやる。
3.<img>タグも同様で</img>でしめてやる。
と言う感じでやったら何とか表示されました。
いままでHTMLはノートパッドでタグ打ちしてましたが、どうにも細かなルールが違う模様。めんどい・・・

とりあえず一通りの形が出来たので、近いうちにサンプルの試運転が出来そうです。


デバック画面

Epubファイルの中身


関連記事
電子書籍 kobo Touch を使ってみる。
電子書籍 kobo Touch でニュースを読む。
電子書籍 kobo Touch でtxtや青空文庫を読む。
電子書籍のEPUBファイルについて【考察】
電子書籍 kobo デスクトップ 3.02によるバグ
電子書籍 kobo touch のニュースアプリの開発(メモ
電子書籍 kobo touch のニュースアプリの開発
電子書籍 kobo touch のニュースアプリ とりあえず動けばい
電子書籍 kobo touch 踊る星降るレネシクルの問題
Epubのcontent.opfにあるguide要素(メモ)
kobo touch ニュース記事取得換ソフト

*1:またはUTF-16

*2:Epub3形式の場合