日ごろからマークダウン形式で何かを書かれているエンジニアの方は、多いかと思います。
かくいう私もその内の一人なのですが、ときおり外出先などで読みたくなったります。
その際、そのままマークダウン形式で読んでも良いのですが、電子書籍にするとより見やすくすることができます。
そこで今回は、Pandoc を使用してマークダウン形式のファイルから EPUB ファイルを爆速でつくる手順について紹介しようと思います。
1. Pandoc のインストール
Pandoc がまだインストールされていない場合は、Pandoc の公式サイト からインストールします。
2. マークダウンファイルの準備
マークダウンファイルを用意します。
今回は、過去の Qiita 記事から作成した以下のような内容のマークダウンファイル(python-blockchain.epub
)を使用します。
# 1. はじめに
本記事では Python を使用してブロックチェーンを学ぶ方法について解説していきます。ブロックチェーンは仮想通貨の分野でよく知られていますが、その技術は多岐にわたる分野で活用されています。今回は、Python の基礎知識がある方を対象に、ブロックチェーンの仕組みと Python での実装方法について詳しく解説していきます。
...
## 2.1. ブロックの概要
ブロックは、ブロックチェーンの基本的なデータ構造であり、用途によって要素が変動することが想定されますが、本記事では、以下の要素で説明していこうと思います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659159/4979353d-929c-36d2-ff59-e27c7bb4bbcf.png" width="230px"/>
| 要素 | 説明 |
|:--|:--|
| ヘッダー | ブロックの情報を識別するためのデータ。 |
| トランザクション | トランザクションの詳細が含まれている。 |
| ブロックハッシュ値 | ブロックの一意の識別子であり、ブロックのデータが改ざんされていないことを確認するために使用される。 |
...
```python
class Block:
def __init__(self, index, timestamp, nonce, previous_block_hash, merkle_root, transactions):
self.index = index # インデックス
self.timestamp = timestamp # タイムスタンプ
self.nonce = nonce # ナンス
self.previous_block_hash = previous_block_hash # 前のブロックハッシュ値
self.merkle_root = merkle_root # マークルルート```
```
...
3. EPUB への変換
以下のコマンドを使用して、マークダウンファイルを EPUB に変換します。
この際、マークダウン内の画像 URL から画像を自動的にダウンロードし、EPUB ファイル内から参照できるようにします。
留意点:
ここでは、見やすくするため、ハット (^
) を入れて複数行に分けて書いています。
pandoc python-blockchain.md -o python-blockchain.epub ^
--split-level=1 --extract-media=./media ^
--metadata title="Python で学ぶブロックチェーン"
-
python-blockchain.md
: 変換するマークダウンファイルの名前 -
python-blockchain.epub
: 出力される EPUB ファイルの名前 -
--epub-chapter-level=1
: H1 見出しを章のタイトルとして使用する -
--extract-media=./media
: マークダウンファイル内の画像 URL から画像をダウンロードし、EPUB ファイル内で使用するために現在のディレクトリに抽出する -
--metadata title="Python で学ぶブロックチェーン"
: 文書のタイトルを指定する
このコマンドを実行することで、マークダウンファイルが EPUB 形式に変換され、指定した画像が EPUB ファイル内で使用されるようになります。
留意点:
- マークダウンファイル内の画像 URL はインターネット上に存在し、アクセス可能である必要があります。
- Pandoc のバージョンによってはオプションが異なる場合がありますので、詳細は Pandoc のマニュアルを参照してください。
4. 作成した EPUB ファイルの確認
EPUB リーダーを使用して、作成した EPUB リーダーの表示を確認します。
5. CSS スタイルの適用
必要に応じて、CSS ファイルで表示スタイルを変更することもできます。
今回は、以下のような CSS ファイル (style.css
) を作成しました。
/* タイトル */
title {
font-size: 4em;
font-weight: bold;
}
/* H1見出し */
h1 {
font-size: 1.5em;
font-weight: bold;
}
/* 本文 */
body {
font-size: 1em;
}
/* コードブロック */
pre, code {
background-color: #f5f5f5;
}
code {
font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace;
font-size: 0.9em;
}
EPUB を作成する際は、--css FILE
オプションを付与して実行します。
pandoc python-blockchain.md -o python-blockchain.epub ^
--split-level=1 --extract-media=./media ^
--metadata title="Python で学ぶブロックチェーン" ^
--css style.css
Note:
EPUB リーダーによっては、想定通り表示されなかったりするようなのでご注意ください。
余談
私の場合、Windows の EPUB リーダーでは、うまくスタイル表示がされませんでした。

一方、スマホではコードブロックのスタイル適用はできているように見えました。

EPUB ファイルの拡張子を .zip
に変更して中身を確認すると、スタイルの適用自体は正しく行われているようです。うーん、不思議…
