LoginSignup
1
2

【VSCode】MarkdownファイルからePubを作成する時に困った話

Posted at

この記事は...

VSCodeで執筆した.mdファイルを、出来るだけ簡単にePubファイルに変換したかった。
VSCodeに Markdown Preview Enhanced をインストールすれば良さそうだ。
首尾よく行けば、.mdファイルのプレビューから右クリックで「Export > eBook > ePub」を選択するだけで、.epubファイルを作成できるはず。

公式ドキュメントも丁寧だったので、挑戦してみた際のエピソードです。

実行環境

  • MacOS 14.3.1
  • Visual Studio Code 1.86.2

Markdown Preview Enhancedの準備

普通のVSCodeエクステンションと同様に、検索してインストールしただけ。
似たような名前の偽物が多いので、注意(本物の発行者はYiyi Wang)。

.mdファイルをePubやPDFにエクスポートするには、Macに Calibre なるアプリケーションをインストールする必要があるとのこと。
実際にはCalibre自体ではなく、そこに含まれる ebook-convert が必要らしい(これのせいで1日中、試行錯誤する羽目になった)。

ともかく、MacにCalibreをインストールする。
そして、ドキュメントにも指示があるが、シンボリックリンク を作成しなさいという話になる。
「シンボリックリンク?」
よくわからないけど、ターミナルでコマンドを実行すれば良いと書いてあるので、素直に従った。

Markdown Preview Enhancedの公式ドキュメントに表記されていたコマンドは以下の通り。

公式ドキュメントのコマンド
$ sudo ln -s ~/Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin

上の通りに実行したら、パスワードの入力を求められたので成功したように見えた。

VSCodeのトップレベルに適当な.mdファイルを置いて、そこにebook front-matterと呼ばれるメタデータを記載すれば準備完了。
その.mdファイルのプレビューで右クリックして、エクスポート!

spawn ebook-convert ENOENT

どうやら、「ebook-convertのエントリーがない」というエラーが発生したことを告げているらしい。

シンボリックリンクとは?

何がどう間違っていたかわからないので、あやふやなまま進めてしまった手順を振り返ることにした。

シンボリックリンクは「Macでいうところのエイリアス」とか「PCでいうショートカット」みたいなものと理解しておけば良さそう。
そして、ターミナルで実行したlnコマンドは、リンクを作成するためのものだったようだ。

lnコマンドの基本
ln -s 「シンボリックリンク元のパス」 「シンボリックリンクを作成する場所のパス」

-sは「シンボリックを指定するオプション」で、これがないと「ハードリンク」になるらしい。
「シンボリックリンク元」には、~/Applications/calibre.app/Contents/MacOS/ebook-convertを指定していた。
「作成する場所」には、/usr/local/binを指定していた。

やり直し

いろいろ調べたところ、~がいらないっぽい。
~はルートだかホームだかの意味だった気がしたけど、忘れたので誰か教えてください。
とにかくいらない。
ターミナルで実行すべきだったコマンドは、以下の通り。

実際に成功したコマンドのコマンド
$ sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin

それでも、VSCodeでePubファイルを作成することは出来なかった!
絶望しつつも調べ漁ると、シンボリックリンクは上書きされないという事情が判明した。
間違って作成したシンボリックリンクは、明示的に削除する必要があるとのこと。

リンクの削除コマンドは以下の通り。

シンボリックリンクを削除するコマンド
unlink /usr/local/bin/ebook-convert

上記のunlinkコマンドを実行してから、再びVSCodeのプレビューでエクスポートを試したところ、成功!
ものの数秒で、同じフォルダに.epubファイルが作成されていました。

疲れた。

1
2
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
1
2