読者です 読者をやめる 読者になる 読者になる

GitBookコマンドラインツールの使い方

GitBookとは

GitBookは、Githubレポジトリで本を書くためのシステムです。たぶん(あんまり理解してない)。分からな過ぎて今回たぶん、「たぶん」って言いまくりますけどごめんなさい。。

本を、とはいいつつ、簡単なウェブサイトをつくるときにも有用です。たとえば、@renkun-ken(a.k.a.蓮君)のrlist Tutorialはこれを使っています。

renkun.me

GitBookを使うには

たぶん方法は2つあります。

1) GitBook.comでやる

www.gitbook.com

GitBook.comを使うと、オンラインエディタがあるので、それですべての作業が完結できます。たぶん。

デスクトップで使えるエディタも快適そうでした。

www.moongift.jp

ただ、アカウント作らないといけないのがちょっとだけめんどくさそうでした。

2) ローカルでビルドしてGithub Pagesを使う

GitBook.comを介さなくてもGitBookは使えます。コマンドラインツールをインストールすれば大丈夫です。たぶん。

github.com

GitBookコマンドラインツールのインストール

node.jsのインストール

公式サイトからインストールします。

Node.js

npmでgitbook-cliをインストール

npm install gitbook-cli -g

GitBookの使い方

レポジトリをinitする

GitBook initすると、必要なファイルをつくってくれます。↓は空っぽのディレクトリでやる例ですが、すでにMarkdownファイルがいくつかあってもうまくいくはずです。

mkdir foo/ && cd foo/
gitbook init

ファイルが2つできているはずです。

foo/
|__ README.md
|__ SUMMARY.md

README.mdはトップページになります。

SUMMARY.mdは、目次です。

これをコミットします。

git add --all .
git commit -m 'initial commit'
git remote add origin https://github.com/user/foo
git push origin -u master

適当なファイルをつくる

chap01.mdみたいなファイルを適当に書きます。

で、SUMMARY.mdの目次のもこれを書き加えておきます。

# 目次

* [第一章](chap01.md)

これをコミットします。

git add --all .
git commit -m 'add chaptor 1'

GitBookをビルド

gitbook build

とやると、本がビルドされます。以下のように_book/というディレクトリができるはずです。

foo/
|__ _book/
   |__ gitbook/
   |__ index.html
   |__ chap01.html
   |__ search_index.json
|__ chap01.md
|__ README.md
|__ SUMMARY.md

ただ、_bookはmasterブランチにはコミットしたくないので.gitignoreに入れときます。

このやり方は、Rで本を書く📚 - Qiitaを参考にしました。

echo '_book/' >> .gitignore
git add .gitignore
git commit -m 'add .gitignore'
git push origin

_bookをgh-pagesにコミット

_bookには、gh-pagesブランチをつくります。とりあえずコミットします。

cd _book/
git init
git add --all .
git commit -m 'create gh-pages'

これを、ブランチ名をgh-pagesに変えてpushします。

git branch -m gh-pages
git remote add origin https://github.com/user/foo
git push origin -u gh-pages

Github Pagesをみてみる

これでGithub Pagesができているはずです。

http://user.github.io/foo/

たとえばこんな感じです:

yutannihilation.github.io

感想

ローカルでビルドするのはちょっとめんどくさいかも。でもJekyllとか使うよりはお手軽でいいと思います。

そういえば、たぶんってあんまり使ってなかった。