電子書籍を作るとき、「縦書きにするか横書きにするか」は見た目だけの問題ではありません。読者の読みやすさ、ジャンルの慣習、技術的な制約、そして端末ごとの表示差異に大きく影響します。この記事では、縦書き・横書きそれぞれの特性と選び方、EPUB3での具体的な設定方法、Kindle Createでの対応、フォント選び、ルビや圏点の扱い方、そしてよくあるトラブルの解決策まで、網羅的に解説します。
縦書き・横書きの選び方
まず大前提として、日本の電子書籍はジャンルによって縦書き・横書きの慣習がはっきり分かれています。この慣習に逆らうと、読者に違和感を与えてしまいます。
縦書きが適しているジャンル
- 小説(文芸作品全般): 純文学、ライトノベル、ミステリー、SF、時代小説など
- エッセイ・随筆: 文章を味わう系のコンテンツ
- 詩集・短歌・俳句: 日本語の美しさを活かすジャンル
- 歴史・伝統文化: 和の雰囲気を重視するコンテンツ
- 自伝・ノンフィクション: 物語性の強いノンフィクション
横書きが適しているジャンル
- 技術書・プログラミング書: コードブロック、英語のコマンド名が頻出する
- ビジネス書: 図表、グラフ、数字が多いコンテンツ
- 実用書・ハウツー: 手順やリスト形式が中心のコンテンツ
- 語学テキスト: 英語など横書き言語を扱うコンテンツ
- 理系・学術書: 数式、化学式が含まれるコンテンツ
- 料理本・レシピ集: 材料リストや手順が多いコンテンツ
| 比較項目 | 縦書き | 横書き |
|---|---|---|
| ページめくり方向 | 右から左(右綴じ) | 左から右(左綴じ) |
| 数字の表示 | 漢数字が自然 | アラビア数字が自然 |
| 英語の扱い | 90度回転 or 縦中横 | そのまま表示 |
| 表・グラフ | 表示が難しい | 自然に表示 |
| コードブロック | 非対応(横書きに切替が必要) | 自然に表示 |
| ルビ対応 | 右側にルビ | 上側にルビ |
| 読者の期待 | 小説的な読書体験 | 情報取得・学習 |
判断の基準: 迷ったときは「英数字やコードが多いなら横書き、日本語の文章が主体なら縦書き」と覚えておけば、大きく外れることはありません。
EPUB3での縦書き設定
EPUB3は縦書きを正式にサポートしています。縦書きのEPUBを作るには、OPFファイルとCSSファイルの2箇所を設定する必要があります。
OPFファイルの設定
OPFファイル(パッケージドキュメント)の<spine>要素にpage-progression-direction属性を設定します。
<spine page-progression-direction="rtl">
これにより、ページめくりの方向が右から左(右綴じ)になります。日本語の縦書きはすべてこの設定です。
<spine page-progression-direction="ltr">
デフォルト値なので省略も可能ですが、明示的に指定しておくほうが安全です。
CSSでの書字方向の指定
OPFの設定に加えて、CSSでwriting-modeプロパティを指定します。これが実際のテキストの流れ方向を制御します。
body { writing-mode: vertical-rl; -webkit-writing-mode: vertical-rl; -epub-writing-mode: vertical-rl; }
vertical-rlは「vertical(縦方向)、right-to-left(右から左)」の意味です。WebKitプレフィックスとEPUBプレフィックスも付けておくと、古いリーダーでも正しく表示されます。
body { writing-mode: horizontal-tb; -webkit-writing-mode: horizontal-tb; -epub-writing-mode: horizontal-tb; }
horizontal-tbは「horizontal(横方向)、top-to-bottom(上から下)」です。こちらもデフォルト値ですが明示的に指定しておきましょう。
縦中横(たてちゅうよこ)の設定
縦書きの中で半角数字やアルファベットを横並びに表示する「縦中横」は、電子書籍で頻繁に使われるテクニックです。たとえば「2026年」の「20」「26」を縦書きの中で横に並べて表示します。
.tcy { -webkit-text-combine: horizontal; -epub-text-combine: horizontal; text-combine-upright: all; }
HTML側: <span class="tcy">26</span>
一般的に、2桁までの数字に縦中横を適用します。3桁以上は漢数字に変換するか、そのまま回転表示にします。
Kindle Createでの縦書き・横書き設定
Amazon公式の電子書籍作成ツール「Kindle Create」でも縦書き・横書きを設定できます。
Kindle Createの言語設定
Kindle Createでプロジェクトを新規作成する際、「言語」で「Japanese」を選択し、「書字方向」で「右から左(縦書き)」か「左から右(横書き)」を選びます。この設定はプロジェクト作成後に変更できないため、最初に正しく選択することが重要です。
Kindle Createの制約
Kindle CreateはWordファイル(DOCX)をインポートして変換するツールです。縦書きの場合、以下の制約があります。
- Wordの縦書き設定が正しく引き継がれないことがある
- 縦中横の自動変換精度が完全ではない
- ルビ(ふりがな)の表示位置がずれることがある
- 画像を含むレイアウトが崩れやすい
これらの理由から、縦書きの電子書籍を高品質に作りたい場合は、Kindle CreateよりもEPUB形式で直接作成することを推奨します。EPUBの方がCSSで細かい制御ができ、表示の安定性も高くなります。
フォント選びのガイドライン
電子書籍のフォントは基本的に読者の端末設定に依存しますが、EPUBのCSSで推奨フォントを指定できます。縦書きか横書きかによって、適切なフォントの傾向が異なります。
縦書きに適したフォント
- 明朝体(Mincho): 縦書きとの相性が最も良い。Kindle端末のデフォルトフォント「筑紫明朝」は美しい縦書き表示を実現する
- 游明朝: WindowsとmacOS両方にプリインストールされている。可読性が高い
- ヒラギノ明朝: macOS/iOSで美しく表示される
横書きに適したフォント
- ゴシック体(Gothic): 横書きではゴシック体の方が読みやすいとされる。特に画面表示では線の太さが均一なゴシック体が有利
- 游ゴシック: 本文にも使えるやや細めのゴシック体
- Noto Sans JP: Googleが開発した無料フォント。ウェイトが豊富で汎用性が高い
縦書き: body { font-family: "游明朝", "YuMincho", "Hiragino Mincho ProN", serif; }
横書き: body { font-family: "游ゴシック", "YuGothic", "Hiragino Sans", sans-serif; }
注意: EPUBに独自フォントを埋め込むとファイルサイズが大幅に増加するため、システムフォントのフォールバック指定が一般的です。
ルビ・圏点・傍点の対応
日本語の電子書籍では、ルビ(ふりがな)、圏点(強調のための点)、傍点が重要な表現手段です。EPUB3ではこれらをHTMLとCSSで実装できます。
ルビの記述方法
EPUB3では、HTMLの<ruby>タグを使ってルビを記述します。
<ruby>電子書籍<rt>でんししょせき</rt></ruby>
ルビ非対応のリーダー向けに、<rp>タグで括弧を追加することもできます。
<ruby>電子書籍<rp>(</rp><rt>でんししょせき</rt><rp>)</rp></ruby>
ルビのCSS調整
ルビのサイズや位置はCSSで調整できます。
ruby { ruby-align: center; }- ルビの中央揃えrt { font-size: 0.5em; }- ルビのサイズを親文字の半分にruby-position: over;- 横書きでルビを上に表示(デフォルト)
圏点・傍点の実装
圏点(傍点)は、文字の上(横書き)または右(縦書き)に小さな記号を付けて強調する表現です。CSS3のtext-emphasisプロパティで実装します。
.emphasis { -webkit-text-emphasis: filled sesame; text-emphasis: filled sesame; text-emphasis-position: over right; }
HTML側: <span class="emphasis">重要な箇所</span>
圏点の種類: filled dot(黒丸)、open dot(白丸)、filled sesame(ゴマ点)、filled circle(丸)など
Kindle端末でのルビ・圏点の表示
Kindle端末やKindleアプリは、ルビと圏点に概ね対応していますが、以下の注意点があります。
- 古いKindle端末(Paperwhite第5世代以前)では圏点が表示されないことがある
- ルビのサイズはKindleのフォントサイズ設定に影響される
- KindleアプリのiOS版とAndroid版で表示が微妙に異なることがある
- 縦書きでのルビ位置は、端末によって右側・左側のばらつきがある
よくあるトラブルと解決策
縦書き・横書きの電子書籍作成で頻繁に遭遇するトラブルと、その解決策をまとめます。
トラブル1: 数字が90度回転して読みにくい
縦書きで半角数字がそのまま90度回転して表示され、読みにくくなる問題です。
- 2桁までの数字: 縦中横(
text-combine-upright: all;)を適用する - 3桁以上の数字: 漢数字に変換する(「1000」→「千」「一〇〇〇」)
- 年号: 「2026年」→
<span class="tcy">20</span><span class="tcy">26</span>年 - 全体的にアラビア数字が多い場合: 横書きに変更を検討する
トラブル2: 英単語が1文字ずつ縦に並ぶ
縦書きで英単語が「H」「e」「l」「l」「o」のように1文字ずつ縦に表示される問題です。
- 短い英字(2〜3文字): 縦中横を適用する
- 長い英単語: 横倒し表示(デフォルト)を受け入れるか、カタカナ表記に変更する
- 英語が多い箇所: その部分だけ
writing-mode: horizontal-tb;で横書きに切り替える
トラブル3: Kindleプレビューアーで表示が崩れる
Kindle Previewer(プレビューツール)で確認すると表示が崩れているが、実際のKindle端末では正しく表示されるケースがあります。逆のケースもあります。
- Kindle Previewerだけでなく、実際のKindle端末やKindleアプリでも確認する
- CSSにはWebKitプレフィックスを必ず付ける(Kindleのレンダリングエンジンに必要)
- EPUBをKindlegenまたはKindle Previewerで変換後、KPF形式で再確認する
トラブル4: 目次が右から左にならない
本文は縦書きで右から左にページが進むのに、目次ページだけ左から右になってしまう問題です。
OPFファイルの<spine>でpage-progression-direction="rtl"を設定していても、NCX/NAVファイルの構造が正しくないと目次が逆方向になることがあります。NAVドキュメント(nav.xhtml)にもwriting-mode: vertical-rl;を適用してください。
トラブル5: 画像が縦書きに合わない
横長の画像が縦書きレイアウトで小さく表示されたり、ページの中央に配置されなかったりする問題です。
- 画像は縦長(ポートレート方向)で作成するのが縦書きとの相性が良い
- 画像専用ページを設け、
writing-mode: horizontal-tb;で横書きモードに切り替える - CSSで
max-width: 100%; max-height: 100%;を指定し、画面内に収まるようにする
テスト環境のセットアップ
縦書きの電子書籍は、表示環境によって見た目が変わりやすいため、出版前のテストが特に重要です。以下の環境で表示を確認することを推奨します。
必ずテストすべき環境
- Kindle Previewer: Amazon公式のプレビューツール。タブレット、スマートフォン、Kindle端末の表示をシミュレーション
- Apple Books(iOSまたはmac): EPUB3の縦書きサポートが最も安定している。EPUBをそのまま開ける
- Kindle for iOS/Android: 実際のKindleアプリでの表示確認。プレビューアーとは異なる表示になることがある
- Kobo Desktop: 楽天Koboでも販売する場合は必須。Kobo独自の表示特性がある
テスト時のチェックポイント
- ページめくりの方向は正しいか(縦書きなら右から左)
- 縦中横が正しく表示されているか
- ルビの位置とサイズは適切か
- 画像がはみ出したり極端に小さくなっていないか
- 目次リンクが正しく機能するか
- フォントサイズを最大・最小にしたときにレイアウトが崩れないか
DraftZeroでの縦書き・横書き対応
DraftZeroで電子書籍を生成する際、ジャンルに応じて適切な書字方向が自動的に選択されます。小説ジャンルを選択すれば縦書き、技術書やビジネス書を選択すれば横書きのEPUBが生成されます。もちろん、生成後にCSSを編集して書字方向を変更することも可能です。
縦書きのEPUBを手動で作成すると、縦中横やルビの設定に多くの時間がかかりますが、DraftZeroならAIが自動的に適切な設定を行います。特に数字の縦中横処理は、すべてのタグを手作業で付けると膨大な作業量になるため、自動化の効果が大きい部分です。
まとめ: 縦書き・横書きの選択はジャンルの慣習に従うのが基本。EPUB3のwriting-modeとpage-progression-directionを正しく設定し、縦中横・ルビ・圏点にはCSSで対応。出版前には複数の端末・アプリでテストを行い、表示崩れがないことを確認してから出版しましょう。