kmuto’s blog

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

テレワーク用にアーム付きモニタ台を構築した(ハンズは神。そして椅子はどうしたものか…)

はてなに入ってから毎日のかなりの時間が、アクティブ・パッシブ含めたビデオミーティングに費されている(前職では週1かつパッシブなミーティングだったのとは雲泥の差である)。めげそうになりながらもミーティング自体はなんとか慣れてはきたのだが、ホームテレワークの問題として挙げられる「家人とのミーティング競合」がいよいよ顕在化してきた。

同じくミーティングの多い相方とは朝食時に当日の時間帯のすり合わせはするものの、どうしても互いにアクティブミーティング時間で競合するもの、あるいは突発的に競合するものが発生する。

OpenCommのほうだとマイク指向性が合っていて相方の声は入りにくいものの、耳が開いているので会話相手の声より相方の声が入る。ではノイキャン付きのH700のほうはというと、相方の声は聞こえにくくなるものの、マイクが集音しすぎてむしろ相方の声のほうを拾ってしまう……。

この状況は、生半可なパーティション程度では防音も無理なので、物理的に距離を離すしかないね、ということで、ミーティング競合の際は後手がダイニングテーブルを使う、という方向を検討した。

当初はラップトップを移動して使ってみてはいたものの、2人ともミーティングでは大きな画面でないと不便すぎる。かといってダイニングテーブルにモニタを設置するのは危ないし、落ちつかない。 いろいろ検討した末に、移動ラック棚を作り、そこにアームを付けるという考えに至った。かつ、ダイニングで使わないときには邪魔なので、作業場のキャビネットを覆うように置けるようにしたい。

Illustratorでさくっと図面を引く。

設計図

棚は信頼のエレクターシェルフ。キャビネットとダイニングテーブルとの兼ね合いで、ポストが定型の600mmでは短すぎるし、650mmでは長すぎる。オーダーになるがさほど高額にならずに630mmにできるようなので、それを前提にすることにした。ポストは2本組売りなので、この場合、800mm 1本、630mm 1本が無駄にはなる。

下部はキャビネットが入るよう3方クロスバー、天板はワイヤーシェルフ。1本だけポールを長めにし、そこにアームのポールを被せるイメージとなる(ネット情報で実践されている方を確認)。

キャスターについては、ナイロンだとフローリングがやられてしまうし、ウレタンは剥がれて結局フローリングのワックスがけが面倒になるので、一番高いけどエラストマーキャスターを想定(パーツで一番高い……)。ちょっと困ったこととして、キャスターの高さの説明がわかりづらく、最大6mmだろうか?とというあやふやな状態となった。ダイニングテーブルとの隙間がシビア(設計時点では12mm)なので、ここが予想より大きいと不安がある。

ネットでも発注はできるが、キャスターの高さが心配だったので、エレクターシェルフのオーダーを扱っている新宿ハンズへ。ここからが「ハンズは神!」と思わせる素晴しいカスタマーサクセス対応のターンだった。

  • まず、高さは問題ないとわかった。むしろこの6mmは発生しない。
  • で、ポストのオーダーをしようとしたのだけど、そのやり方だと2本が無駄になるし、オーダーは時間が1ヶ月くらいかかる(かつちょうどモデルチェンジ&値上げが始まりそうなタイミング)、
  • …ので、むしろ650mm 2本と800mm 2本にして、800mmの1本以外はハンズ側でカットして630mmにするのはどうでしょう?という提案を受ける。エレクターシェルフのポールも切れるの!?
  • それ最高じゃないですか、ということで発注。モデルチェンジ前の品の在庫確認を手際よくしていただく。
  • カットについては別フロアなのだけど、対応のスタッフさんがそのまま付いてくれて、必要事項の記入の支援と、カットスタッフへの事項連絡を進めてくださった(まだモノがないので説明図のみでの指示)。
  • 後日、品物が入荷したという電話連絡をいただく。カットした旨と最終寸法の連絡、到着日折衝と流れるように進んだ。

ハンズには工作まわりでお世話になることはたまにあったけど、今回はこちらの考えに対してベストなソリューションを出してくれたので本当に良かった。

ということで、日曜日にハンズからの品が到着したので、組み立てる。アームとモニタは事前に購入済み。

正面

背面

ででーん。

アームは信頼のエルゴトロンLX。ほぼぴったりの高さで被さり、蓋もできる。シェルフのテーパーが1つ必要なのだけど、今回のセットの予備でちょうど1つ余るので、それを使うだけ。

モニタはDELLの27インチ4K S2722QCにした。モニタについては、フルHDでは表示したい情報に対して足りない、USB-Cのモニタ出力&給電に慣れるとUSB-C以外ない…ということで選んだが、想定利用頻度に対して少々オーバースペック感はある。相方が輝度や反射に弱いので、フィルムも貼り付けた。

さて、肝心の使い勝手だが、棚、キャスター、アーム、モニタ、いずれもとても良い。完璧?

モニタが重いため、重心バランス的にアームを伸ばす方向には一定の制約がある(無茶な方向にすると棚ごと倒れる)が、予定していた伸ばし方の範囲では何も問題なく、安定している。

キャスターも軽く静かでするする動く。ロックもかけられるので安心。

残る課題は椅子。

食卓椅子で2時間ミーティングは辛いし、アームレストもない。ダイニングに置いても違和感がなく、2人のどちらも座れるアームレスト付きオフィスチェア、かつ相方の条件としてアームレストは90度までの回転が必要(普通のオフィスチェアのアームレストだと肘が落ちる模様。35度でもダメだった)というのがあって、調べているけど決め手がなくムームーしているところ。

そもそもアームレストを90度回転できるもの自体が少ないのだった。

  • イトーキ カシコチェア: 相方が使ってるけど自分にはまったく合わなかった。腰が気持ち悪い
  • イトーキ fチェア: 座ってみたところでは相方はOK、自分にはリクライニング抵抗力がなさすぎて固定にしないと無理め
  • イトーキ Prao: 20年前の商品で、形があまりにももっさり…
  • エルゴヒューマン: ジェネリックアーロン。これをダイニングに置くのはどうなの

うーん……。