電子書籍の作成メモ (2017/04/16)

ブログ記事の原稿ファイルを使って電子書籍を作ってみる。

原稿ファイルの作成

ブログ記事の原稿を書くときはMarkdownで記述し、mdファイルとして保存する。私はmdファイルを「~/ドキュメント/blog」フォルダーに保存している。

cssファイルの作成

以下のプログラムを「layout.css」ファイルとして「~/ドキュメント/blog」フォルダーに保存する。

@charset "utf-8";

blockquote {
    font-style: italic;
    font-weight: bold;
}

font {
    font-weight: bold;
}

h3 {
    border-bottom: 0.125em solid darkcyan;
    color: #111;
    margin-bottom: 1.0em;
    margin-top: 1.0em;
    padding: 0.25em 0.5em;
    page-break-before: always;
}

h4 {
    border-bottom: 0.125em solid darkcyan;
    border-left: 0.5em solid darkcyan;
    margin-bottom: 1.0em;
    margin-top: 1.0em;
    padding: 0.25em 0.5em;
}

p {
    margin-bottom: 1.0em;
    margin-top: 1.0em;
    text-indent: 1.0em;
}

pre {
    background-color:lightgrey;
    margin-bottom: 1.0em;
    margin-top: 1.0em;
    overflow: auto;
}

原稿ファイルの結合

以下のコマンドを端末に入力して「Enter」キーを押す。

$ cd ~/ドキュメント/blog/00;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 0 はじめに\n' > ../chapter0.md;cat 01.md 02.md 03.md 04.md 05.md 06.md 07.md >> ../chapter0.md;\
cd ~/ドキュメント/blog/01;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 1 環境の構築\n' > ../chapter1.md;cat 01.md 02.md 03.md 04.md 05.md 06.md 07.md 08.md 09.md 10.md 11.md 12.md 13.md 14.md >> ../chapter1.md;\
cd ~/ドキュメント/blog/02;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 2 バックテストの陥穽\n' > ../chapter2.md;cat 01.md 02.md 03.md >> ../chapter2.md;\
cd ~/ドキュメント/blog/03;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 3 パフォーマンス評価\n' > ../chapter3.md;cat 01.md 02.md 03.md 04.md 05.md >> ../chapter3.md
cd ~/ドキュメント/blog/04;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 4 リスク管理\n' > ../chapter4.md;cat 01.md 02.md 03.md 04.md 05.md 06.md >> ../chapter4.md;\
cd ~/ドキュメント/blog/05;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 5 トレード戦略\n' > ../chapter5.md;cat 01.md 02.md 03.md 04.md >> ../chapter5.md;\
cd ~/ドキュメント/blog/06;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 6 MT4\n' > ../chapter6.md;cat 01.md 02.md 03.md >> ../chapter6.md;\
cd ~/ドキュメント/blog/07;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 7 リターン\n' > ../chapter7.md;cat 01.md 02.md >> ../chapter7.md;\
cd ~/ドキュメント/blog/08;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 8 ボラティリティ\n' > ../chapter8.md;cat 01.md 02.md 03.md 04.md 05.md 06.md >> ../chapter8.md;\
cd ~/ドキュメント/blog/09;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 9 ランダムウォーク\n' > ../chapter9.md;cat 01.md 02.md 03.md 04.md >> ../chapter9.md
cd ~/ドキュメント/blog/10;\
echo -e '<link href="layout.css" rel="stylesheet"></link>\n## CHAPTER 10 その他\n' > ../chapter10.md;cat 01.md 02.md 03.md 04.md 05.md 06.md 07.md 08.md 09.md >> ../chapter10.md

「CHAPTER 0」〜「CHAPTER 10」の各章が作成される。

電子書籍の作成

①以下のアドレスをクリックする。

http://conv.denshochan.com/

②「アップロードしてね」で「参照...」ボタンをクリックする。

③「ファイルのアップロード」で「~/ドキュメント/blog」フォルダーに移動する。

④「layout.css」ファイルを選択する。

⑤[Ctrl]キーを押しながら「chapter0.md」、「chapter1.md」、「chapter2.md」、「chapter3.md」、「chapter4.md」、「chapter5.md」、「chapter6.md」、「chapter7.md」、「chapter8.md」、「chapter9.md」、「chapter10.md」の各ファイルを選択する。

⑥「開く」ボタンをクリックする。

⑦「情報を入れてね」の「タイトル(必須)」に「FXハイブリッドトレード (2017/04/01)」と入力する。

⑧「作成者」に「西 明」と入力する。

⑨「ページ送り方向」で「左から右 横書き」が選択されているのを確認する。

⑩「お好みでどうぞ」の「ページ自動生成」で「扉ページ」、「目次ページ」にチェックを入れる。

⑪「変換」ボタンをクリックする。

⑫「***.epub を開く」で「ファイルを保存する」を選択する。

ファイル名は作成するたびに違う。

⑬「OK」ボタンをクリックする。

***.epub」ファイルが「~/ダウンロード」フォルダーに保存される。

⑭「***.epub」ファイルを「forex_hybrid_trading.epub」ファイルにリネームする。

電子書籍のサンプル

上の手順で作成した電子書籍がこれである。

https://github.com/fxst24/fxst24/blob/master/forex_hybrid_trading.epub

電子書籍で数式を使うときの注意

多くのEPUBリーダーはMathJax未対応

よく使われるEPUBリーダーの多くはMathJaxに対応していないようである。私は普段、Google Play ブックスを使っているが、MathJaxに対応していない。iBooksも対応していない。ブログでは使えるし、電子書籍でも使えると思い込んでいたので意外だった。

ネットで調べてみると、対応しているEPUBリーダーは少なく、現状では電子書籍にMathJaxを使うのはあまりよくないようだ。もし電子書籍で数式を使いたいのであれば、画像に変換するべきものらしい。

MathJax対応のEPUBリーダーもあるが…

MathJaxに対応しているとされるEPUBリーダーを調べて、いくつか試してみた。ここではiPhoneのアプリに限って話す。私はiPhoneで電子書籍を読んでいるからである。私が実際に試してみて一応使えそうだと思ったのは「Adobe Digital Editions」と「Gitden Reader」の2つである。

Adobe Digital Editionsを使って気付いた点は

  • iPhoneを縦にして読むときの字が小さい。いくらか大きくすることもできるが、それでも小さい。
  • ページをめくると、字がぼやけ、元に戻るのに少し間がある。
  • 数式があると、少し縦に間延びし、後のページにずれていく。このため、目次で見たいページをクリックしても、ずれて表示される。

である。確かに数式はちゃんと表示されているが、使い勝手がイマイチな感じだ。

一方、Gitden Readerを使って気付いた点は

  • 動きがややもっさりしている。
  • 数式があると、少し縦に間延びし、後のページにずれていく。そして本の最後が尻切れになる。ただし、「スクロール」のモードにすれば最後まで表示される。だが、Adobe Digital Editionsと同様で、目次で見たいページをクリックしても、ずれて表示される。
  • 読み上げ機能がある。

である。使い勝手はそれほど悪くないが、やはり数式があると後のページにずれていくというのが大きなマイナス点ではある。読み上げ機能があるのはなかなかいい。とりあえずはGitden Readerを使ってみようと思う。

MathJaxで記述するときの注意

電子書籍向けにMathJaxで記述するとき、1つだけ気付いたことがある。数式で累乗を表す「^」が消えてしまうのである。

数式で累乗を表すときは例えば

y = x^2

とするのが普通だ。ブログではこれで問題ない。だが、私が電子書籍を作るときに使っているでんでんコンバーターの癖なのか、epubに変換するとなぜか

y = x2

に書き換えられてしまうのである。だが、これを防ぐのは簡単だ。

y = x ^ 2

のように離して記述すればいい。ブログでもこの書き方で問題ない。現時点で気付いている不具合はこれだけである。

(2017/02/16更新)

VirtualBoxの使い方

VirtualBoxのインストール

①端末に以下のコマンドをコピー&ペーストして「Enter」キーを押す。

sudo apt-get install -y virtualbox

②「[sudo] **** のパスワード:」でパスワードを入力して「Enter」キーを押す。

VirtualBoxをLauncherに登録

①端末に以下のコマンドをコピー&ペーストして「Enter」キーを押す。

virtualbox

「Oracle VM VirtualBox マネージャー」が起動する。

②Launcherの「Oracle VM VirtualBox マネージャー」を右クリックする。

③「Launcherに登録」をクリックする。

VirtualBoxの起動

○Launcherの「Oracle VM VirtualBox マネージャー」をクリックする。

VirtualBoxの終了

○「Oracle VM VirtualBox マネージャー」の「×」ボタンをクリックする。

仮想マシンの作成

例として仮想マシンを作成し、その仮想マシンにUbuntuをインストールしてみる。

①「Oracle VM VirtualBox マネージャー」のツールバーで「新規」ボタンをクリックする。

②「仮想マシンの作成」の「名前とオペレーティングシステム」で「名前」に「Ubuntu」と入力する。

③「タイプ」が「Linux」に、「バージョン」が「Ubuntu (64-bit)」に変更されたのを確認して「次へ」ボタンをクリックする。

ホストマシンが32bitなら、「Ubuntu (32-bit)」となる。

④「メモリーサイズ」で「4096」と入力する。

ホストマシンの実メモリに基づき、余力を残して設定する。

これは後で設定し直すこともできる。

実マシンでメモリの増設などができるのと同じである。

⑤「次へ」ボタンをクリックする。

⑥「ハードディスク」で「仮想ハードディスクを作成する」を選択する。

⑦「作成」ボタンをクリックする。

⑧「仮想ハードディスクの作成」の「ハードディスクのファイルタイプ」で「VDI(VirtualBox Disk Image)」を選択する。

⑨「次へ」ボタンをクリックする。

⑩「可変サイズ」を選択する。

⑪「次へ」ボタンをクリックする。

⑫「ファイルの場所とサイズ」でサイズに「500.00 GB」と入力する。

ホストマシンのHDDに基づき、余力を残して設定する。

⑬「作成」ボタンをクリックする。

仮想マシンはデフォルトでは「~/VirtualBox VMs」フォルダーに作られる。

仮想マシンの設定

①「Oracle VM VirtualBox マネージャー」で仮想マシン(ここでは「Ubuntu」)を選択する。

②ツールバーの「設定」ボタンをクリックする。

③「Ubuntu - 設定」の「一般」をクリックする。

④「高度」タブをクリックする。

⑤「クリップボードの共有」を「双方向」に変更する。

⑥「ドラッグ&ドロップ」を「双方向」に変更する。

⑦「システム」をクリックする。

なお、メモリのサイズを再設定したい場合は「システム」の「マザーボード」タブの「メインメモリー」に設定したいサイズを入力すればいい。

⑧「プロセッサー」タブをクリックする。

⑨「プロセッサー数」に「2」と入力する。

ホストマシンのプロセッサー数に基づき、余力を残して設定する。

⑩「ディスプレイ」をクリックする。

⑪「スクリーン」タブをクリックする。

⑫「ビデオメモリー」に「32 MB」と入力する。

128MBまで設定できるが、大きければいいというものでもないらしい。

⑬「アクセラレーション」の「3Dアクセラレーションを有効化」にチェックを入れる。

⑭「ストレージ」をクリックする。

⑮「ストレージツリー」で「コントローラー: IDE」の下の「空」をクリックする。

⑯「属性」の「光学ドライブ」右端にあるアイコンをクリックする。

⑰「仮想光学ディスクファイルを選択...」をクリックする。

⑱「仮想光学ディスクファイルを選択してください」で「ubuntu-16.04-desktop-amd64.iso」ファイルのあるフォルダーに移動する。

⑲「ubuntu-16.04-desktop-amd64.iso」を選択する。

⑳「開く」ボタンをクリックする。

㉑「Ubuntu - 設定」で「OK」ボタンをクリックする。

仮想マシンにUbuntuをインストール

①「Oracle VM VirtualBox マネージャー」で仮想マシン(ここでは「Ubuntu」)を選択する。

②ツールバーの「起動」ボタンをクリックする。

「起動」ボタンをクリックすることは仮想マシンからは電源を入れたように見える。また、「仮想マシンの作成」の⑥から⑬の手順により、仮想マシンからは空のHDDがあるように見える。さらに、「仮想マシンの設定」の⑭〜⑳の手順により、仮想マシンからはUbuntuのisoイメージが書き込まれたDVDがDVDドライブに挿入されているように見える。

そのため、仮想マシンを起動すれば、その後は実マシンにUbuntuをインストールする手順と同じである。Ubuntuのインストールについては「簡易マニュアル」カテゴリの「Ubuntu簡易マニュアル」を参照。

(2017/01/09更新)

GitHubの使い方

ここではユーザー名を「fxst24」、リモートリポジトリを「origin」として説明する。

GitHubの登録

注意:手順の一部は実際に登録してみないと分かりませんが、私はすでに登録済で、手順確認のためにまた別に登録するのもどうかと思いますので、以下の手順は不完全なものです。

①以下のアドレスをクリックする。

https://github.com/

②右上の「Sign up」ボタンをクリックする。

③「Create your personal account」で「Username」にユーザー名を入力する。

④「Email Address」でメールアドレスを入力する。

⑤「Password」でパスワードを入力する。

⑥「Create an account」ボタンをクリックする。

この後に「Step 2」、「Step 3」という手順があるようだが未確認のため、省略。

これより下の手順は私が実際に登録したとき(2016年7月ごろ)のメモに基づいています。仕様変更がなければそのまま使えると思います。特に「GitHubの更新」は普段から使っていますので大丈夫です。

初期設定

初期設定は1回やればいいようである。

○端末で以下のコマンドをコピー&ペーストして「Enter」キーを押す。

git config --global user.email ******@*****.com;git config --global user.name "fxst24"

メールアドレス、ユーザー名は登録したものを入力する。

ローカルリポジトリの作成

ここでは例として「ホーム」フォルダーに「fxst24」という名前のフォルダーを作成し、これをローカルリポジトリとすることにする。

○端末で以下のコマンドをコピー&ペーストして「Enter」キーを押す。

mkdir ~/fxst24

リモートリポジトリの作成

ユーザ名が「fxst24」のリモートリポジトリとして「origin」を作成する。

○端末で以下のコマンドをコピー&ペーストして「Enter」キーを押す。

cd ~/fxst24;git remote add origin https://github.com/fxst24/fxst24.git

GitHubの更新

ファイルを更新して、それをGitHubに反映させたい場合、①ローカルリポジトリの初期化、②追加、削除、修正したファイルすべてのインデックスへの追加、③ファイルのコミット、④リモートリポジトリへのプッシュ、という過程を経るようだが、ここでは1つのコマンドにまとめて実行する。

①端末で以下のコマンドをコピー&ペーストして「Enter」キーを押す。

cd ~/fxst24;git init;git add --all;git commit -m "update";git push origin master

②ユーザ名を入力して「Enter」キーを押す。

③パスワードを入力して「Enter」キーを押す。

(2017/01/07更新)

二郎風「豚」の作り方

私は二郎に通い続けておよそ10年になるジロリアンである。たまたま、以下のページを見て、自分でも二郎で食べるような「豚」を作ってみたいと思い、試してみた。

http://waretaru.blogspot.jp/2016/10/blog-post_17.html

ただ、これでは情報が少ないので、以下のページも参考にした。

http://gadget-jk.hatenablog.com/entry/ra-mejiro_buta

http://blogs.yahoo.co.jp/kamikamiwayo/10336731.html

凝りだしたら切りがないので、私としてはなるべく手間をかけずに簡単に、それでいてなるべく店の味に近いものを作りたい。これから書くことはその試行錯誤である。

随時更新したいと考えている。

1回目(2016/12/22)

材料

  • 豚肩ロース(ネット入り) 350g
  • ねぎ1本(緑の部分のみ)
  • 醤油 300ml
  • みりん 60ml
  • 料理酒 90ml

手順

①豚とねぎを圧力炊飯器に入れる。

②水をひたひたになるくらいに入れる。

③白米をふつうに炊くのと同じ設定で炊く。

私の家の炊飯器ではスタートのスイッチを押すと炊き上がるまでの時間が「40分」と表示される。だが、残り「15分」となってからが進まない。実際は白米ではないからだろう。結局、1時間強でようやく炊き上がる。

④醤油、みりん、料理酒を鍋に入れ、沸騰させる。

これが漬け汁である。

⑤漬け汁を適当な器に移す。

⑥豚を漬け汁に漬ける。

豚の上半分が出てしまうので、30分漬けた後、裏返して更に30分漬けた。

感想

今回はかなり手抜きな作り方をしたので、果たして味はどうかと戦々恐々としたが、意外とうまく出来て驚いた。ただ、よく行く店で食べている味と比べると、やや辛く感じ、また、味がもう少し中まで染みてほしかったなと思った。

今度作るときは醤油を減らしてみりんと料理酒を増やしてみる。配分は高田馬場店に寄せたほうがいいかな?また、2時間くらい漬けてみようと思う。あるいは豚にフォークで穴を開けておくのもいいかもしれない。

あと、豚350gだと1人ならともかく、家族と食べると物足りない。倍は欲しいな。

2回目(2017/01/02)

材料

  • トンテキ用豚ロース 620g
  • ねぎ1本(緑の部分のみ)
  • 醤油 200ml
  • みりん 100ml
  • 料理酒 120ml

手順

1回目と基本的に同じ。ただ、④は1回目のときは強火で沸騰させたが、弱火が本当っぽいので、今回は弱火で沸騰させた。また⑥は今回は8時間漬けた。

感想

今回はいろいろと手を加えてもよかったのだが、一度にやると、味の違いの要因が分かりにくいので、漬け汁の材料の配分と漬ける時間だけ変更した。

今回は醤油の配分を少なめにしたが、それでもちょっと辛かった。まだ醤油が多いというよりは8時間が漬けすぎのようである。だが、今回もおいしかった。次は2時間で試してみよう。

なお、肉は今回はトンテキ用豚ロースにしたが、半額だったのでそれにしただけである。肉は初めから1センチ程度の厚さにカットされていたので、味を染みこませるためにフォークで穴を開けるようなことはしなかった。

また、漬け汁も十分だったので(前回より少ないが、肉が薄かったのと、肉が多くて水かさが上がったことによる)、肉を裏返して漬けるようなことはしなかった。

更にあれこれ手を加えたほうがうまくなるかもしれないが、今回でも十分うまかったので、うまさと手軽さのバランスを取るのであれば、今回はけっこういい感じだった。

(2017/01/02更新)