『Vim scriptテクニックバイブル』感想

買ったのは結構前だったけど、この3月、たしかVimのパッケージ管理ツールをNeoBundleからdein.vimに移行したタイミングだったと思うが、少し集中的に読んでいたら読み終えたので感想を書いておく。

Vim script テクニックバイブル ~Vim使いの魔法の杖

Vim script テクニックバイブル ~Vim使いの魔法の杖

Good

まず良かった点から。

1)第1〜3章は大変丁寧なVimスクリプト入門

このテーマに興味を持っている読者ならつまづきようが無さそう。
他にこのような内容でこのようにまとまって本になっているものがあるか? と考えると、かなりオリジナルな存在ではないかと感じる。

2)第5章のプラグイン作成講座がすごい

本書のための、シンプルだがオリジナルのプラグインを、イチから終わり(公開)まで順を追って、ある種のドキュメンタリーのように、一つ一つ解説しながら作っていく。
後述のように、このレベルになると、もうやっていることが初心者には難しくて、ここにある説明だけでは「つまづきようがない」とまでは言えないが、それでも他に類のない、本書の存在意義を高める内容だと思う。

3)第6章の組み込み関数リファレンスがすごい

網羅的で膨大な対象すべてに対して、少なからぬ説明が付されていてすごい。
これもけっしてわかりやすいとは言えないが、この量を最後まで完走した体力と精神力には敬意を表したい。

ちなみに、僕も今までに音楽全集を15巻分、編集してきたけど、そのすべての巻に対してそれぞれ100個前後の注釈を付してきて、こういう作業の大変さというのはわかる部分がある。というかまあ、涙が出るほどつらい。だから、素朴にすごいなと思った。

4)第7章の「実践テクニック」が面白い

いろいろなトピックが取り上げられているが、その選択の幅が広く、深く、かつ興味を引くもので面白かった。
内容を理解したとは言えないが、こんな世界もある、という「入口」としての機能は果たしていると感じる。

Bad

次に、不満を感じた点。

1)ページ左右の余白が広すぎて、テキスト部分の幅が狭いと感じる

本書には紙版のほか電子版もあるので、これはその紙版に限った話だが、掲題のようなデザインで行がすぐに折り返されてしまうので、文の意味を取る前に改行を追うことになり、目も頭も疲れる。
ノド(見開き状態の中央部分)の余白を多めに取るのはわかるが、端の方をこんなに空けるのはどういう意図なのか……。

このレイアウトを見ながら感じたのは、「ブログを読んでるみたいだ」ということで、1カラムのブログ記事をひたすら上から下へスクロールしながら読んでいる感覚に近い。

言い換えれば、構成・構造・立体感というものを感じない。上記のように、章立ては成されているが、ダラダラダラダラ続いていく感覚が強く、通読するにはそれなりのタフさが求められる。(脳内で再構成しながら読んでいるからかも)

KindleePubのリフローフォーマットにそのまま変換しやすいように、このようにシンプルな構成を採ったのかもしれないが、内容に応じたフォーマットだとは思えなかった。

ただし、前著『Vimテクニックバイブル?作業効率をカイゼンする150の技』に比べて文字が大きく、また色合いその他のデザインがカッコイイ(というかカワイイというか)点は良いと思う。そうであるにもかかわらず読みづらい、というのはまあ、しかし根深い問題だと感じるけれど*1

2)サンプルコードの扱いが不充分

とくに後半、サンプルコードの出力例がほとんどない。つまり、「このように書きます」という例はあっても、「(このように書くと)こんなふうに出てきます」ということが書かれていない。実際に動かしてください、という感じ。

新人研修の資料ならばそれでもいいだろうが、本をめくっている人はコンピューターを動かしながら読む人ばかりではない。本は第一に、本だけで完結すべきで、出力例は必要だと思う。
無論内容を理解したければ、読者は実際にそれを動かしてみるべきだが、作り手はそれを不備の言い訳にしてはいけない。

また、サンプルコードにファイル名がないのも結構気になった。それがどのファイルのどの部分にあたるのか、ということがわからない。サンプルコードのファイル名には様々な情報を暗示することができ、逆に言えば読者はサンプルコードのファイル名から様々な情報を読み取ることができる。

ほんの数行の、一回限りのものなら無名でも気にならないかもしれないが、どれもこれもそんな感じで「その場限りのサンプル」みたいになっているので、入門者の読者という立場からすると、寄るべないというか、頼りないというか、なかなかイメージが湧きづらいような印象があった。

3)各章(節)の担当執筆者がわからない

これは執筆者のお一人である @Shougo さんと以前にやり取りしたことがあって、そのときに大まかな分担を教えてもらったので、個人的には解消されている問題でもあるのだけど、とりあえず最初の「はじめに」の記名がグループ名になっている時点で「?」と思う。

そうそうたるメンバーが力を尽くして執筆しているのであって、読者もまたその人たちをまったく知らない人ばかりではないだろうし(読んだ時点で知らなかったとしても、Vimに触れるうちに必ず知ることになる人ばかりだし)、どの章を誰が書いているのか、明示されていればもっと楽しく読めるだろうに、と思った。

新聞や雑誌の無記名原稿とか、職業ライターが書いているものではないのだし、何か分担を示さないメリットがあるなら知りたいものだが、どうなんだろう。

4)端折られた説明が少なくない

「良い点」の2〜3で触れたように、第4章以降は急に難易度が増すというか、説明のスピードがぐんと上がっていく。スピードが上がるということは、端折る部分が増えるということで、端折る部分が増えるということは、それまでに説明していない概念や要素が出てきやすくなるということだ。

執筆家というのは、執筆家の観点からしか書けないから、何周も読み返し、何周も書き直す中で新たな視点を獲得し、「あの説明が抜けてた」みたいなことに気づくわけだが、そうした読み返しや書き直しの時間が足りなければ、他人が(つまり編集者やレビュワーが)読んでそれに気づくしかない。

執筆家はゼロから文章を立ち上げていくわけで、抜けの一切ない文章を書くのが「当然」とまで言うのは酷なことだ。ようはそのサポート部分がちょっと弱かったのかな……と想像する。

一概に、編集さんや版元を責めるつもりはないのだけど(ブーメランになるし)、とはいえこの「頭から順に読んでいれば必ず理解できる……わけではない」という感じは結構重い。

たとえて言うなら、30センチ間隔で並べられた飛び石の上を歩いていたら、突然その間隔が3メートルおきになってしまい、もうこれ以上先に行けません! みたいになっているということ。その間を埋める別の(新たな)石が必要になってしまっている。

5)索引がない(に等しい)

vim-jp.org でも解説されているとおり、
vim-jp » Vim scriptテクニックバイブル ~Vim使いの魔法の杖 正誤表

本書で「索引」とされているものは、実際には「逆引き索引/単語集」にあたるもので、一般的な、用語そのもので引く「索引」にはなっていない。

こういう、キーワードや概念でくくって引く、というコーナーがあること自体は良いと思うが、その解説にある

通読してカテゴリーを頭に叩き込んだ上で、 気になった項目を探し出す

などということを、対象読者であるところの入門者が一読してできるはずがないというか、すでにある程度知識や経験のある人だったり、時間の余裕があって本の内容を理解するまで何度も読み返せる人ならともかく、そういう人ばかりが読んでいるわけではないので、索引がこれ「だけ」というのは結構つらい。

実際、読みながら「あの単語の説明、どこに出てくるんだっけ?」と思ってこの索引にあたり、「わからん……」と断念したことが何度もあった。

一般的な索引と、このキーワード集の両方があればリッチだと思うし、むしろ現状のキーワード集はそれを使うこと自体が学習になるようなものだから、そういう位置づけで作ってくれればよかったのに、と感じる。

ちなみに、同様に感じたのか、有志で索引(一般的な)を作った人がいたようで、上記リンク先で紹介されている。

また、第6章の組み込み関数リファレンスについては、すべての関数が巻頭の「目次」でページ数ごと紹介されているので、ある意味それを索引のように使うことはできるかもしれない。

まとめ

ということで、不満点のほうを後半に書いたので、その印象が強く残ってしまうかもしれないが、前半に書いたように、本としての存在意義は高いと思う。

結城浩さんや深沢千尋さんの著作、あるいは先日紹介した「新しいLinuxの教科書」のような、気配りが行き届いた入門書に比べると、どうしても後半に書いたような感想が出てきてしまうけど、すべての本がそのようにあるべき、とは思わない。

この本にしか書かれていない内容や、この本に書かれているようには他で書かれていない部分もあるわけで、今後も本書を何度もめくることは間違いない。

追記: サポート情報への導線

上記の正誤表、本書の出版社サイトの公式ページから紹介されていないのはなぜだろう?
Vim scriptテクニックバイブル 〜Vim使いの魔法の杖:書籍案内|技術評論社

通常、技評から出ている本で正誤表などが発生した場合、この商品ページからサポートページへのリンクがあると思うのだけど。

こんな感じで。
サポートページ:かんたん Perl:|技術評論社

自分の場合、誤植情報を探す時は、とりあえずこういう版元の公式ページから当たっていくので、しばらく正誤表の存在に気づかず、たまたま別のことを vim-jp.org で調べていたら、画面下にあるDisqusの関連記事機能でそれが出てきたので見つけることができた。

*1:念のために付記しておくと、「読みづらい」というのは主観であって客観的事実などではないから、読者によってその有無や程度は左右されると思う。