CUI初心者のためのReVIEWインストール

 page2012のReVIEWセミナーに行ってきました。すでにスライドも公開されています。

 このセミナーをご覧になって、ReVIEWに興味を持たれた方も多いかもしれません。よし、お父さんインストールしちゃうぞ! と思っている方もいらっしゃるでしょう。
 実は、このセミナー終了後にバックヤードでインストール大会やりました。そして、CUI初心者にとっては、ターミナルでインストールするのは案外敷居が高いことに気がつかされました。自転車が乗れる人にとって、乗れなかった頃の難しさが実感できなくなっているなあ、と反省しました。
 ってことで、きょうは初めてCUIでインストールする人にも、できるだけわかりやすく解説したいと思います。
 環境としてはMac OS X 10.5〜10.7を念頭に置いています*1。また、インターネットに繋がっている環境で行ってください。

おおまかな流れ

 ReVIEWクイックスタートガイドにはいくつかのインストール方法が紹介されていますが、今回はSubversionを使った方法です。Subversionというのはソースコードなどの履歴管理システムです。(ユーザーとしてSubversionを使う利点は)アップデートがあった時、コマンドひとつでコード全体が最新のバージョンになります。
 Subversionを使えるようにXcode(開発環境)をインストールします。それを終えたらいよいよReVIEWをインストールし、さらにReVIEWがすぐに使えるように.bash_profileを書き換えます。ここまでが今日のゴールになります。
 CUIでの操作に慣れておくことは、将来の自分に対する投資です。あなたが職業的な開発者でなくてもXcodeを入れる利益は計り知れないほど大きなものです。

手順1)Subversionが使えるかどうかを確かめる

 さあ、おもむろに開くのだ、ターミナルを! ターミナルは「アプリケーション」フォルダの中の「ユーティリティ」フォルダの中にあります。
f:id:seuzo:20120209113247p:plain
 ダブルクリックで起動すると、こんな感じのウィンドウが開くはずです。
f:id:seuzo:20120209150408p:plain
たまにこのウィンドウが黒い画面の人とか見た目がずいぶん違う人がいると思いますが、それは個性というものなのであまり気にしないでください。打ち込んでいく内容には変わりありません。
Subversionが使えるかどうかを確かめるには、この画面上に入ってこのコマンドを入力しましょう。

which svn

このコマンドを入力して、リターンキーを押した時、

  • /usr/bin/svn とだけ出た人:すでにSubversionがインストール済みです。手順2をスキップして、手順3へ進んでください。

f:id:seuzo:20120209150914p:plain

  • no svn /bin /sbin /usr/bin /usr/sbin などと出た人:Subversionがインストールされていません。手順2へ進んでください。

f:id:seuzo:20120209151120p:plain

手順2)Xcodeをインストールする

 Subversionをインストールする方法も種々あろうかと思いますが、Mac OS X環境でもっとも手軽な方法はXcodeをインストールすることです。XcodeをインストールするとSubversionはもとより様々なコマンドが使えるようになります。

Mac OS X 10.7.x(Lion)を使っている人は:

 App Storeを起動させて、右上の検索窓に「Xcode」と入力し、Xcodeのページを開いたら、そのまま「インストール」ボタンをクリックします。
f:id:seuzo:20120209160043p:plain
 ダウンロードとインストールが自動に行われます。

Mac OS X 10.5.x〜10.6.xを使っている人は:

 OSのインストールディスクを挿入して、DVDの中の「オプションインストール」フォルダの中にXcodeのためのインストーラーを探してください。Mac OS X 10.4.xとかの人はディスクが別になっているかもしれません*2。下記のキャプチャはMac OS X 10.6 Leopardのものです。
f:id:seuzo:20120209162229p:plain

手順3)ReVIEWをインストールする

 手順1からここに来た人は、いままさにターミナルが開いているはずです。手順2から来た人はターミナルを再度立ち上げましょう。
 ターミナル上では、自分がいまどこのディレクトリにいるかを意識する必要があります。これをカレントディレクトリといいます。上の画面だと入力行の最初「xxxx:~ username $」の「~」部分がカレントディレクトリを表しています。「~」は特殊な記号でログインしているユーザーのホームディレクトリを表しています。念のため、カレントディレクトリをホームディレクトリに移動しておきましょう。

cd ~/

 このコマンドをタイプすれば、いつでもホームディレクトリに帰ってこられます。
 いろいろご意見があるかもしれませんが、ReVIEWはホームディレクトリのbinディレクトリにインストールすることにします。ホームディレクトリに「bin」というディレクトリはありますか? もしなければ作ってください。Finder上からホームディレクトリに「新規フォルダ」で作って名前を「bin」に変えてもかまいませんが、せっかくターミナルを立ち上げているんですから、ターミナルからbinディレクトリを作ってみましょう。既にbinディレクトリがある人は、この作業はしなくていいです。

mkdir bin

 ホームディレクトリにbinフォルダができました。Finderでも確認できますし、ターミナルから「ls -al」とタイプして確認することもできます。ホームディレクトリの内容は必ずしもこの通りではないと思いますが、binというディレクトリがあるのがわかります。

$ ls -al
total 232
drwxr-xr-x+  56 username  staff   1904  2  6 12:02 .
drwxr-xr-x    5 root  admin    170  8  3  2011 ..
-rw-------    1 username  staff  20726  2  7 15:35 .bash_history
-rw-r--r--@   1 username  staff    489  2  1 21:11 .bash_profile
drwxr-xr-x    2 username  staff     68  7 14  2010 Applications
drwx------+  31 username  staff   1054  2  9 16:43 Desktop
drwx------@  21 username  staff    714  1  5 20:14 Documents
drwx------+  14 username  staff    476  2  9 14:55 Downloads
drwx------+  61 username  staff   2074 10 13 15:36 Library
drwx------+   5 username  staff    170  8  3  2011 Movies
drwx------+   5 username  staff    170 11 23  2007 Music
drwx------+   9 username  staff    306  3 18  2011 Pictures
drwxr-xr-x+   6 username  staff    204  8  3  2011 Public
drwxr-xr-x   20 username  staff    680 11  4  2010 bin

 binディレクトリができているのを確認したら、カレントディレクトリをbinに移動します。元々binディレクトリが存在した人もここからは一緒にタイプしてください。

cd bin

 これでカレントディレクトリは~/bin になっているはずです。いよいよReVIEWのインストールをしましょう。下記のようにタイプしてください。

svn co https://kmuto.jp/svn/review/trunk review

 リターンキーを押すと、下記のようなメッセージが出るかもしれません。というか、出ます。

Error validating server certificate for 'https://kmuto.jp:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: svn.kmuto.jp
 - Valid: from Sun, 14 Nov 2010 03:01:25 GMT until Tue, 13 Nov 2012 03:01:25 GMT
 - Issuer: http://www.cacert.org, Root CA
 - Fingerprint: 13:8d:1e:cd:95:49:a6:f3:95:cc:d7:e3:29:27:6b:74:05:70:71:b0
(R)eject, accept (t)emporarily or accept (p)ermanently? 

 これはSSLサーバ証明書を信頼するかどうかという確認です。「p」(永続的に信頼)をタイプしてリターンキーを押してください。もしかすると、下記のような1行で終わってしまうかもしれません。

svn: OPTIONS of 'https://kmuto.jp/svn/review/trunk': Could not read status line: connection was closed by server (https://kmuto.jp)

 これも書いてあるとおりですが、「あなたの返事をまちくたびれて扉を閉めました」と言われています。気にせずに「svn co https://kmuto.jp/svn/review/trunk review」を再度タイプして、「p」をタイプしてください。
 インストールが始まると、経過ログがずらずらと画面上に表示されます。

A    review/test
A    review/test/test_helper.rb
A    review/test/test_i18n.rb
A    review/test/test.re
... (長いので中略)
A    review/bin/review-preproc
A    review/bin/review-epubmaker
A    review/bin/review-check
A    review/bin/review-epubmaker-ng
Checked out revision 169.

 最後の行はリビジョン「169」を表示して、入力プロンプトが帰ってきました。ここでもしエラーになるようなことがあれば、もう一度「svn co https://kmuto.jp/svn/review/trunk review」からやりなおしてください。
 これでインストールそのものは終わりました。ReVIEWの実行ファイル、ドキュメント類すべては「~/bin/review」ディレクトリの中に入っています。もし、アンインストールしたいなら、ディレクトリごと消去してしまってかまいません。

手順4)パスを通す

 CUIアプリケーションを導入した後に、「パスを通しておいてください」などと書かれていることがあります。これは、特定の専用ディレクトリ(/bin とか/local/bin とか)以外の場所にアプリケーションを置いた場合、シェルからすぐに実行できるようにパスを設定しておいてね、という意味です。具体的には、ターミナルがデフォルトで使うbash*3 というシェルの設定ファイルを書き換える作業を指します。設定ファイル「.bash_profile」はデフォルトでは作られていません。ファイル名の最初の文字が「.」(ドット)で始まるファイルをドットファイルといい、通常のFInderでは不過視ファイルになっています。

4-1 実行ファイルのパスを確認

 最初に用意するのは、 ReVIEWの実行ファイルディレクトリの正確なフルパス名です。 ReVIEWのあるディレクトリに移動してみましょう。

cd ~/bin/review/bin

 ちゃんと移動できているかどうか、ファイルを一覧させてみます。

$ ls -al
total 152
drwxr-xr-x  12 username  staff    408  2  1 21:07 .
drwxr-xr-x  15 username  staff    510  2  1 21:07 ..
-rwxr-xr-x   1 username  staff   4629  2  1 21:07 review-check
-rwxr-xr-x   1 username  staff   1299  2  1 21:07 review-checkdep
-rwxr-xr-x   1 username  staff   5626  2  1 21:07 review-compile
-rwxr-xr-x   1 username  staff  17255  2  1 21:07 review-epubmaker
-rwxr-xr-x   1 username  staff   5546  2  1 21:07 review-epubmaker-ng
-rwxr-xr-x   1 username  staff   2973  2  1 21:07 review-index
-rwxr-xr-x   1 username  staff  10068  2  1 21:07 review-pdfmaker
-rwxr-xr-x   1 username  staff   3303  2  1 21:07 review-preproc
-rwxr-xr-x   1 username  staff   1682  2  1 21:07 review-validate
-rwxr-xr-x   1 username  staff   2907  2  1 21:07 review-vol

 ここで、カレントディレクトリのフルパスを得る「pwd」コマンドを使います。

$ pwd
/Users/username/bin/review/bin

ここでは、「/Users/username/bin/review/bin」と出てきました。このフルパス名をコピーしておいてください。

4-2 .bash_profileを編集する

 .bash_profileファイルが存在するかどうか確認するには、ホームディレクトリ上で、先ほど使用した「ls -al」で確認してください。
 .bash_profileファイルはデフォルトでは存在しませんが、もしかしたら何かのセットアップスクリプトが作成してしまっているかもしれません。あるいは、システム管理者が必要上設置している場合があります。もし後者ならば、ここからの作業は管理者に任せたほうがよいかもしれません*4。もちろん、他のプロジェクトで.bash_profileの編集したことがある人は、(下記の方法ではなく)やりやすいやり方でやっていただいてかまいません。
 .bash_profileファイルが存在しない人は、ホームディレクトリに移動して、下記のコマンドを打ち込んでください。「/Users/username/bin/review/bin」の部分は、4-1でコピーしておいてフルパス名と差し替えるのを忘れずに。

echo "export PATH=$PATH:/Users/username/bin/review/bin" >> ~/.bash_profile

 .bash_profileファイルがきちんと書き込まれたかどうか、次のコマンドで確認してみましょう。

$ cat ~/.bash_profile 
export PATH=$PATH:/Users/username/bin/review/bin

 先ほどのもし、「cat: /Users/username/.bash_profil: No such file or directory」などと出てきてしまったら、4-1からやり直してください。

4-3 .bash_profileの変更を有効にする

 .bash_profileは編集したらすぐに有効になるわけではありません。次のコマンドをタイプして、.bash_profileの設定を有効にします。

source ~/.bash_profile

これでパスが通りました。

手順5)インストールが成功したかどうか確認する

 すべての手順がうまくできたかどうか確認します。ReVIEWの実行ファイルのあるディレクトリ(/Users/username/bin/review/bin)にいると、自動的にパスが通ってしまいテストになりませんので、ホームディレクトリかどこか任意のディレクトリに移動してから、下記のコマンドをタイプしてください。

review-compile --help

 下記のようにヘルプが出て来たら、すべてが成功しています。おつかれさまでした。

$ review-compile --help
Usage: review-compile [--target=FMT]
        --yaml=YAML                  Read configurations from YAML file.
        --inencoding=ENCODING        Set input encoding. (UTF-8, EUC, JIS, and SJIS)
        --outencoding=ENCODING       Set output encoding. (UTF-8[default], EUC, JIS, and SJIS)
    -c, --check                      Check manuscript
        --level=LVL                  Section level to append number.
        --nolfinxml                  Do not insert LF in XML. (idgxml)
        --table=WIDTH                Default table width. (idgxml)
        --listinfo                   Append listinfo tag to lists to indicate begin/end. (idgxml)
        --chapref="before,middle,after"
                                     Chapref decoration.
        --subdirmode                 Use chapter/id.ext path style to find images.
        --singledirmode              Use id.ext path style to find images.
        --chapterlink                make chapref hyperlink
        --stylesheet=file            Stylesheet file for HTML (comma separated)
        --mathml                     Use MathML for TeX equation in HTML
        --htmlversion=VERSION        HTML version.
        --hdnumberingmode            Output numbering headlines. (deprecated)
        --deprecated-blocklines      Disable paragrahs in block tags. Treat physical line as a paragraph. (deprecated)
        --target=FMT                 Target format.
        --footnotetext               Use footnotetext and footnotemark instead of footnote (latex)
        --draft                      use draft mode(inline comment)
    -a, --all                        Compile all chapters.
        --directory=DIR              Compile all chapters in DIR.
        --help                       Prints this message and quit.

(追記:2012-02-14T10:03:56+0900)@monokano さんから「 export $PATH 」で確認した方が確実なのでは? とご指摘いただきました。おっしゃる通りです!

これからどうするか...

 ReVIEWについて、いくつかのサンプルドキュメントを変換してみたり、実際に自分でReVIEWドキュメントを書いたりして試してみてください。

 ReVIEWフォーマット一覧をブックマークして、すぐに参照できるようにしましょう。

 ReVIEWメーリングリストに入ると、いろいろな情報を入手できます。

 ReVIEWは現在も更新されつづけています。バグフィックスや、新しい機能を取り込んでいます。自分のReVIEW実行ファイルを新しいものに置き換えたいと思ったら、~/bin/rebiewディレクトリに移動して、下記のコマンドをタイプしてください。最新版がすぐに使えるようになります。

svn up

 さて、今回のインストールいかがでしたでしょうか? パワーユーザーにとっては当たり前のことでも、初めてターミナルを触る人にとっては意外と大変だったかもしれません。しかし、CUIはその労力の何十倍もの仕事をしてくれるすばらしい操作方法です。今日はほんのちょっとしたコマンドしか紹介できませんでした。また、その意味も軽く触れるにとどめてあります。もし、興味を持った人は、いろいろ調べてみてください。ネット上にもいくつか有用な情報がありますが、手軽なリファレンス本が手元にあるといいでしょう。