kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

『詳解 システム・パフォーマンス第2版』制作の思い出

オライリー・ジャパンさんの『詳解 システム・パフォーマンス 第2版』が無事刊行されたようでめでたい。

前職で制作のお手伝いをしていたものの、完成一歩手前である再校まで作成した(電子PDFとEPUBの準備もしておいた)ところで退職となったので、行方を気にし続けていた。

本書は、コンピューティングパフォーマンス分析の第一人者と言える、Brendan Greggの著作。最近だとeBPFの分野で有名か。著者紹介にはNetflixと書いてあるけど、昨年5月にIntelに転職したらしい。

旧版(邦訳版は2017年)はLinuxSolarisだったが、今回はほぼLinuxに絞っての解説となっている。

その解説は生半可なものではなく、CPU、メモリ、ディスク、ネットワークインターフェイスはもとより、あらゆる面にわたってのパフォーマンス分析が、場面に応じた多数のツール群を活用して実行される。Greggの脳内が紙面にダンプされているような感覚だ。

仕事的には4章の可観測性ツールや11章のクラウドコンピューティングあたりは関係深めかもだけど、関心的には6章のCPU〜10章のネットワークといった裏側にある泥臭い世界が大好き。

とんでもない物量に圧倒されるが、これを読んでいけば、パフォーマンス問題にアタリをつけたり、適切なツールで調べたりすることがずっと容易になるだろう。

940ページの鈍器の本書、Linuxほかシステムのパフォーマンス分析に関わっている方々にはぜひ手にしていただきたいと思う。

以下はおまけ。

紙面DTPについては、分量が多くてRe:VIEWファイルの加工調整と、見た目・ページ繰りの調整は確かに時間はある程度かかったが、想定の範囲内ではあった。

本書で最も恐しいのは60ページにもわたる索引で、これは原書に従っている。原書での専門のindexer、はりきりすぎでは…?という気がするが、「邦書でもこれと同等にやりたいのですがなんとかなりませんか…」とオライリー・ジャパンさんからの依頼があり、こちらで作成している。

悲しいことに翻訳の時点で原書データの索引はすべて喪失していたので、以下の手順をたどって索引付けを行った。

  1. 原書のDTPデータ(InDesign)から索引をテキスト化し、「索引項目 <タブ> ページ番号 <タブ> 索引項目」の形にする。「102-103」などの範囲になっているものは索引項目にBEGIN、ENDのマークを付けておく(例:life cycle◆BEGIN◆ 102)。親・子・孫の索引については、索引項目の箇所を「親<<>>子<<>>孫」のようにする。see also形式のものはページ番号の代わりにそれを入れておく。
  2. 上記をスプレッドシートにインポートする。
  3. 1列目の索引項目の単語に、訳文を見ながら訳語を当てていく(3列目は原書と照合するために英語ママにしておく)。できるだけ一括置換で多いものから進める。1回しか登場しないものをがんばっても意味がないので。
  4. 2列目のページ番号で原書を見て、和書PDFと原稿Re:VIEWファイルと照合し、@<hidx>で1列目の索引項目を入れる。索引の訳が完成していなければ判断して訳す。
  5. 全部入ったらsee also部を最初のRe:VIEWファイルの末尾にでも@<hidx>で入れておく。
  6. BEGIN/END関係ができていないものを雑に書いたツールでチェックする。
  7. MeCabソート有効でRe:VIEW PDFのビルドを実行して __REVIEW_BOOK__.idx (および.indファイル)ファイルを作成する。
  8. 内部索引ツールでidxからソートし直しおよびBEGIN/END処理、seealso処理を行い、indをテキスト化したのに近いtxtファイルに変換する。
  9. おかしなもの(読みミス、BEGIN/END非対応、語句がページにまったくヒットしないなど)がないことを確認したら、編集者にtxtを引き渡す。
  10. 以降はページが大幅に変わらない限りは、編集者作業用のtxtファイルからindファイルに変換する。

3.と4.の作業についてはパラレルでできるので、社内で分担して処理したが、当初はなかなか進まずに苦戦。だんだん自分も同僚もペースが上がってきて、予定時間どおりで終わったのは自分の見積りが素晴しかったのか……? 今回の場合は和訳において独自の節項組み換えなどは行われていないため、範囲の追従についてあまり悩まずに済んだのが幸いだったと言えよう。