Ubuntu Weekly Recipe

第406回 Node.js製のGitBookでお手軽に電子書籍作成

この記事を読むのに必要な時間:およそ 5 分

UbuntuにおけるNode.jsとnpm

GitBookはNode.jsを使って作られたソフトウェアです。よってUbuntu上でローカルに使うためには,Node.jsを導入する必要があります。

Node.jsはとてもリリースペースの速いソフトウェアです。いろいろあってここ1年ぐらいで速くなりました。Ubuntu 14.04 LTSの公式リポジトリにはリリースがはやくなる前の0.10.25がパッケージ化されています※3)⁠またnpmのパッケージも1.3.10と古いバージョンになっています。このためNodeパッケージによっては,より新しいNode.jsやnpmを要求するようなNodeパッケージは動かない可能性があります。そこでまずはUbuntuで,より新しいバージョンのNode.jsやnpmをインストールする方法を説明します。

※3
ちなみにNode.jsの4.xはLTSとなり,2015年のから2年半サポートされるようです。よって4.2.xが公式リポジトリに存在するUbuntu 16.04 LTSであれば,リポジトリからパッケージをインストールするだけで良いかもしれません。

Node.jsのバイナリパッケージはNode.jsのリポジトリから入手可能です。この方法で導入するリポジトリには,amd64やi386だけでなくarmhf向けバイナリパッケージも存在するため,Raspberry Pi 2上にインストールしたUbuntuでも利用できます。

ドキュメントの手順に従えば,以下の方法でNode.jsの4.x系のリポジトリを導入できます。

$ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
$ sudo apt-get install -y nodejs

ここでダウンロードしているsetup_4.xは,実行中のディストリビューションを判定して,適切なリポジトリのスイートを選択し,リポジトリの鍵とURLを登録しているだけです。ダウンロードしたファイルをいきなり実行するのが不安であれば,ダウンロードして正しいファイルかや何を実行しているかといった内容を確認してから実行する形でももちろんかまいません※4)⁠もしくは以下のように手動でリポジトリを登録した上で,nodejsパッケージをインストールしても良いでしょう。

※4
むしろこの手順は不安を感じる方が普通だと思います。
$ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key \
    | sudo apt-key add -
$ echo 'deb https://deb.nodesource.com/node_4.x trusty main' \
    | sudo tee -a /etc/apt/sources.list.d/nodesource.list
$ echo 'deb-src https://deb.nodesource.com/node_4.x trusty main' \
    | sudo tee -a /etc/apt/sources.list.d/nodesource.list
$ sudo apt-get update
$ sudo apt-get install nodejs
$ node -v
v4.2.6

Ubuntu 14.04 LTS以外を使う場合は,上記の2箇所の「trusty」を各リリースのコードネームに変更してください。⁠lsb_release -cs」コマンドで確認できます。

Node.jsリポジトリにあるnodejsパッケージは,インストール後に実行されるスクリプト ⁠/var/lib/dpkg/info/nodejs.postinst)で以下のようなコマンドを実行しています。

update-alternatives --quiet --install /usr/bin/node node \
    /usr/bin/nodejs 50 \
    --slave /usr/share/man/man1/node.1.gz node.1.gz \
    /usr/share/man/man1/nodejs.1.gz

このため「nodejs」コマンドだけでなく「node」コマンドでもNode.jsが実行されます。

Node.jsをインストールするとNode.jsのパッケージマネージャーであるnpmもついてきます。

$ npm -v
2.14.12

npmはnpmコマンドで更新できます。ただし,今は更新すると2.xから3.xにアップグレードされてしまうので,2.xが必要な場合は更新しないでおきましょう。

$ sudo npm install npm -g
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@3.5.3 /usr/lib/node_modules/npm
$ npm -v
3.5.3

グローバルオプション(-g)を付けたときのnpmのインストール先は「/usr/lib/node_modules」になっているので,sudoが必要です。このインストール先のプレフィックス(/usr)npm configコマンドで変更できます

GitBookのインストールと最初のテスト

GitBookはnpmコマンドでインストールします。これもグローバルオプション付きでインストールしておいたほうが,実行パスが通るので何かと便利でしょう。

$ sudo npm install gitbook-cli -g
$ gitbook --version
1.0.1
$ gitbook install

ちなみにインストールしているのはコマンドのフロントエンドであるgitbook-cliのほうです。gitbook-cliで提供されるgitbookコマンドが,⁠gitbook install」でインストールされたGitBook本体であるgitbookを呼び出します。

では,さっそくgitbookコマンドを使って文書を作成してみましょう。

$ mkdir firstBook && cd $_
$ gitbook init
info: init book at /home/ubuntu/firstBook
info: detect structure from SUMMARY (if it exists)
info: create SUMMARY.md
info: create README.md
info: initialization is finished

Done, without error
$ ls
README.md  SUMMARY.md

このディレクトリはまだGitリポジトリではありませんので,"git init"もしておきます。ついでにGitBook用の.gitignoreも取り込んでしまいましょう。

$ curl -L https://raw.githubusercontent.com/github/gitignore/master/GitBook.gitignore -o .gitignore
$ git init
Initialized empty Git repository in /home/ubuntu/firstBook/.git/
$ git add .
$ git commit -m "Initial commit"
[master (root-commit) 96da69a] Initial commit
 3 files changed, 18 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 README.md
 create mode 100644 SUMMARY.md

今回はこのまま変更せずにHTMLを生成してみます。

$ gitbook build
info: loading book configuration....OK
info: load plugin gitbook-plugin-highlight ....OK
info: load plugin gitbook-plugin-search ....OK
info: load plugin gitbook-plugin-sharing ....OK
info: load plugin gitbook-plugin-fontsettings ....OK
info: >> 4 plugins loaded
info: start generation with website generator
info: clean website generatorOK
info: generation is finished

Done, without error

生成された「_book/index.html」にアクセスしてみてください。期待通りの結果になりましたか?

GitBookサービスのように,ファイルの変更とともにHTMLドキュメントが自動生成されるウェブサーバーとして動かしたいのであれば,serveサブコマンドを利用します。

$ gitbook serve
Live reload server started on port: 35729
Press CTRL+C to quit ...

(中略)

Starting server ...
Serving book on http://localhost:4000

この状態でドキュメントのソースを変更すると,自動的に再ビルドが行われ,ウェブブラウザのほうもJavaScriptが動く環境であれば自動的にドキュメントを再読み込みします。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。