自分の好きな解説記事やブログ記事を電子書籍化して他の人に渡してみたい要求がある。
これを実現するシステム構成について考えているが、最後の段階で上手くいかなかった。
ブックマークについて
普通、自分の好きな解説記事を保存するには、ブラウザのお気に入り機能(ブックマーク)やソーシャルブックマークサービスなどを利用する。最近はtwitterなどを使っても良いが、twitterの場合は整理して保存することができないし、140文字の制限があるため、適切ではない。
このようなブックマークは、通常、URLのみが保存される。そのため、記事のサーバが停止したり、記事の配信期間が終わったりすると、記事の閲覧が出来なくなってしまう。この問題を解決するには、記事の内容を保存する必要があり、例えば最近ではEvernoteなどを利用するとされるケースが増えている。
記事の保存について
保存の際に記事は、内容のテキストと画像のみを保存したい。ReadabilityやRead it laterなどが提供している機能でもある。これを実現するにあたり、必要なのは抜き出すべきタグ要素の特定である。これについてはAutoPagerizeの手法が良い。AutoPagerizeはGoogleの検索結果ページなど、「次へ」リンクが存在するページの下部に移動すると、自動的に次のページを読み込み付け足してくれるサービスである。様々なサイトに対応しているのだが、そのための仕組みがデータベース: AutoPagerizeにあり、有志のユーザーによって、必要になるタグ要素のxpathを共有している仕組みである。
この仕組みを応用し、個別サイトごとの記事範囲のxpathを記述し、記事だけを抜き出す仕組みが作れると良い。
記事の電子書籍化について
ここが難しい。
記事の保存についてはブックマークレット(javascript)を利用して必要な範囲を抜き出すだけ。その抜き出した内容を電子書籍として読めるようにするためにはPDFもしくはepubに変換したい。ブックマークレットのみで完結する仕組みを夢見て、JavascriptにてPDFを作成できるjspdfやjs-eeepubなどのライブラリを利用してみた。
jspdfは日本語が表示できず、また文章の自動折り返しの方法が分からなかった。js-eeepubは必要なzip.jsが取得できなかった。
今となってみれば電子書籍という体裁を守ることを考えなければ、HTMLで表現してしまっても良かったのかな、と。
ここまで考えたところで
Evernoteのクリップの能力が思ったよりも良いのでEvernoteから電子書籍を生成できるような仕組みを探すなり作るなりした方が幸せなんじゃないのかな、と思うに至る。
割とつまらない結論。