LoginSignup
9
4

More than 1 year has passed since last update.

Qiita記事を電子書籍化する

Last updated at Posted at 2022-06-20

この記事はQiita アドベントカレンダー Linux 5日目の記事です。ShellScriptのカレンダーが今年は無かったので、空いてそうなこちらに投稿させていただきました。

MarkdownからEPUBへ変換

やることはタイトル通り。Qiitaの記事をEPUB形式に変換してKindleで読むためのShellScriptです。
あくまで自分用に使用してください。
エラーになるマークダウンは適宜sed -eでエラー箇所を潰していきます。

curl -fsSL "https://qiita.com/KTakahiro1729/items/3f18811267bf4f8075d5.md" |
    sed -e 's/html\#/html\\#/g' -e 's/\(^#\+\)/\1 /' |
    pandoc -s -f markdown -t epub3 -o NimTutorialPartI日本語訳後編.epub --toc --toc-depth=3  

知っていましたか?Qiita記事のURLの末尾に.mdをつけると、マークダウン形式でブラウザ上に表示できること、そしてそのURLにcurlなどでアクセスするとマークダウン形式でダウンロードできること。マークダウンを取得できたら、それをpandocに渡してEPUBだのなんだの好きな形式に変換できるのです。

簡潔ですが、以上。
長いQiita記事をKindleで読むためのtipsでした。

HTMLからEPUBへ変換

2022/12/16の追記です。
htmlからepubにするほうが、markdownからepubに変換するよりも優れていることがわかったので、html->epub変換のスクリプトを追記します。

curl -fsSL "https://qiita.com/KTakahiro1729/items/3f18811267bf4f8075d5" |
    pandoc -s -f html -t epub3 -o NimTutorialPartI日本語訳後編.epub --toc --toc-depth=3  

入力がよりシンプルになりました。
出力も異なります。
下の比較画像をご覧ください。

image.png

左がmarkdownから変換、右がhtmlから変換した同じURLのepubファイルです。
左のmarkdownから変換した場合の表示はシンタックスハイライトが聞いて見やすいのですが、章がいくつか飛ばされていました。

また、サイズもmarkdownから変換した場合、22.0kB, htmlから変換した場合38.0kBと、あきらかにhtmlから変換したほうが情報量が多かったです。

このURLではpng等の画像ファイルは使われていませんでしたが、画像ファイルが使われているページではmarkdown化した時点で画像がURLにってしまうので、画像を出力できません。
画像ファイルはMarkdownから変換した場合でも表示できます。

さらに、Qiitaのように、.mdをつけるだけで簡単にmarkdown化できるページのほうが少ないので、htmlをそのままepubにするほうが汎用性に優れています。

sedでエラーを潰す必要もありません。

まとめると、HTMLからの変換はMarkdownからの変換に比べて下記のような特徴があります。

  • シンタックスハイライトがない
  • 情報量が多い
  • 画像がきちんと表示される
  • 入力(コマンド)がシンプル
  • 変換時にエラーが発生しにくい
  • Qiita以外のページも変換できて汎用性がある

プログラミング言語の本を読むのにシンタックスハイライトがないことは痛いですが、その他のメリットと天秤にかけるとHTMLから変換するほうが良さそうです。

2022/12/17追記
画像が表示されて、試してみて章立てが飛ばされないことを確認できたら、Markdown形式から変換のほうがシンタックスハイライトが効いて見栄えがいいです。
Qiita以外のサイトでもhtml -> markdown -> epubのように変換できたら、シンタックスハイライトが効いて変換できるかなぁ。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4