b.l0g.jp     About     Archive     Feed

『入門 監視』を翻訳しました

サーバやネットワーク、セキュリティなどシステムの監視に関わる心構えや取り組み方を解説した「入門 監視」という本が、2019年1月17日にオライリー・ジャパンさんから出版されました。原書は「Practical Monitoring」という本で、それを私が翻訳したものです。私が訳した本としては3冊目、オライリー・ジャパンさんから出版されるものとしては「入門Kubernetes」に続いて2冊目です。

私がこの記事を書くのにモタモタしているうちに、書評を書いてくださった方が早くもいらっしゃるのですが、いちおう翻訳者としてこの本について少し紹介しておこうと思います。

「入門 監視」のユニークなのは、監視と言うとどうしても特定の監視ツール(Nagios、Zabbix、Mackerelなどなど)の話になってしまいがちなのですが、そこをあえて特定ツールの名前をなるべく出さないようにしているところです。むしろ著者が冒頭の第1章から戒めているのは、ツール依存です。ツールから監視を考えると非効率な仕組みを作ってしまいがちであり、さらに監視とは単一の問題ではなく色々な問題が複雑に絡み合ったものなので、監視したいもの、監視すべきものを元にしてツールを選ぶという順番を取るべきであるという主張が書かれています。それ以降も、著者の経験を元にした監視のアンチパターン、デザインパターン、そしてサーバやネットワークからビジネスKPIの監視、セキュリティ監視などといった対象ごとの監視のポイントが書かれるという流れです。どの記述も著者の強い主張がにじみ出ているのですが、それでいて監視についての本質を突いたことが簡潔にまとめられています。

数年前私がとあるシステムの運用を引き継いだ時、監視は一通り設定されており、障害があれば気づける状態にはなってはいました。しかし、毎日大量のアラートメールが飛んできており、しかも大部分は無視してよいものでした。そのため、私の最初の仕事はそれらが自動的に既読になるようメールの設定をすることでした。その時点ではそんなものかなと思いつつ、あれこれ試行錯誤をしてそういった「慣れている人が見ないと本当に対応が必要かどうかわからないアラート」ばかりを生成する監視システムを改善していきました。初めてこの「入門 監視」の原書「Practical Monitoring」を読んだ時は、その時の試行錯誤の結果分かったことがほとんど書いてある!という驚きを感じたものです。この本を翻訳しようと思ったきっかけがこの驚きでした。とりあえず監視をしないといけないから監視ツールを導入したけれど本当に十分なのか分からない、意味不明なアラートメールがたくさん飛んできていて困っている、これからシステムの監視をしないといけないが何をしたらいいか分からない、といった監視の初心者の方が、監視に対する考え方を身につけるのにはとてもよい本です。

原文ではあえてツールに関する記述が少なくなっていますが、それだと監視に初めて触れる人にとっては抽象的な話ばかりになってしまうので、もう少し具体的な話を付録として付け加えればいいのになと、原書を読んだ時から考えていました。そこで、SaaS型サーバー監視サービスであるMackerelのプロダクトマネージャーである株式会社はてなの松木雅幸さん(@songmu)に付録を書いていただきました。注意点などを含め分かりやすい解説を書いていただいたことで、本全体のバランスがずっとよくなったと確信しています。

ちなみに、「入門 監視」というどストレートなタイトル、短すぎるとは思ったものの特に違和感は感じませんでした。どうやら驚きを感じた人が多かったようですが。。

私もまさにこの感覚でいました。

謝辞

今回も、レビュアーの方々には丁寧に本文をチェックしていただき、技術的な指摘から日本語としての読みやすさまで、様々なアドバイスをいただきました。レビュアーのみなさま、そして付録の執筆をしていただいたsongmuさんにはここで感謝を表したいと思います。

『入門Kubernetes』を翻訳しました

コンテナを管理するオーケーストレータとしてデファクトスタンダードになりつつあるKubernetesに関する入門書『入門Kubernetes』を翻訳しました。2018年3月22日に、オライリー・ジャパンから発売されます。原著は『Kubernetes: Up and Running』です。

Kubernetesの開発者たちが直接Kubernetesを解説した本で、Kubernetesでアプリケーションを動かすために必要な色々な概念を、実際にKubernetesクラスタ上で動かしてみながら学んでいくという構成になっています。

また、チュートリアルだけでなく「なぜコンテナを使うべきなのか」「どういう経緯でKubernetesが生まれたのか」「マイクロサービスの何がいいのか」といった、コンテナやマイクロサービスが広まって来た背景についても書かれています。そのため、コンテナはほとんど触ったことがないという人でも読み始められるようになっています。

入門書なのでKubernetesの機能のすべてが網羅されているわけではありませんが、Kubernetesを理解するための基本的な事項については一通り書かれています。Kubernetesの公式ドキュメントはとても丁寧に書かれているので(ただし英語)、まずこの『入門Kubernetes』を読んでKubernetesの仕組みと基本的なリソースを学び、さらにその先を知りたい場合には公式ドキュメントを読み込んでいくというのにぴったりだと思います。

日本語版独自の改善点

原著はKubernetes 1.5あるいは1.6をベースに書かれています。日本語版には、翻訳完了時の最新版であるKubernetes 1.9までに加えられた変更などを、注釈などの形でできるだけ反映しました。チュートリアルを簡単に進められるように、原著の内容に合わせてサンプルデータのリポジトリが用意されているのですが、これも日本語版に合わせてKubernetes 1.9対応データを含むリポジトリを用意しました。

また、原著への「内容はいいのに誤植が多すぎる」といった指摘に対しては、翻訳の際にできる限り修正を反映させるようにしています。

翻訳の経緯と謝辞

英語を日本語に翻訳することで日本語の情報量を増やしたいという思いで、人力翻訳コミュニティYakstというサイトを作って翻訳したり、『SQLパフォーマンス詳解』というデータベースに関する本の翻訳などをしてきました。その先に、いつかは書店で売られる本の翻訳がしたいと思っていたところ、機会をいただいて実現することになりました。

私自身Kubernetesに関してはまだまだ経験が浅いこともあり、Kubernetesの運用経験豊富なレビュアのみなさまからの指摘無しにこの本は完成しなかったといっても過言ではありません。レビューしていただいた@mahataさん@Ladicleさん@superbrothersさん@strskさん@deeeetさん(順不同)には本当に感謝するばかりです。

「私は『入門Kubernetes』でKubernetesを始めました」という人がたくさん現れて、日本のKubernetesコミュニティがさらに盛り上がっていくことにつながれば、翻訳者としてこの上ない喜びです。みなさんぜひ読んでみてください!

Tokyo Rubyist Meetupでデータベースのインデックスについて英語で話した

The English version is at the end of this post.

2月10(金)に開催されたTokyo Rubyist Meetupというイベントで、自分が翻訳したSQLパフォーマンス詳解という本をベースにして「How indexes work in relational databases」という題で発表した。題名からわかるように、英語での発表。

Tokyo Rubyist Meetupは、Doorkeeperの社長Paul McMahonさんが主催している、Rubyのことを中心にしつつも色々なトピックを取り上げている英語話者向けの勉強会。Paulさんからお声がけがあって、DBエンジニアからの知見はRubyistにもうけると思うよということで、英語の勉強と本の宣伝とデータベース知識の整理の意味で発表することにした。Paulさん貴重な機会をくれて本当にありがとうございました!

内容的には、SQLパフォーマンス詳解(の英語版)の第1章の要約みたいな感じで、インデックスがなぜ必要なのか、Bツリーインデックスはどうやってデータを探すのに役立つのかといった基本的なところを書いた。Active Recordばっかり使ってて、SQLがどう動いているのかあまり意識していなかったり、高速に応答するクエリをどう書いたらいいのかわからない人に向けて、インデックスコワクナイヨ、ということを言ったつもり。しかし特定のDB(MySQLとかPostgreSQLとか)についてあえて触れなかったので、内容的に抽象的すぎたかもしれない。こういう発表って、どの程度の人をターゲットにするかブレないようにすること、そして抽象的すぎず突っ込みすぎずな内容にもっていくのが難しい。

今年は意識的に英語でアウトプットしていこうと思っているので、できる限り機会を見つけてこういう場で発表するつもり。


I gave a talk “How indexes work in relational databases” based on the book SQL Performance Explained at Tokyo Rubyist Meetup held on Feb. 10.

(See the material above.)

Tokyo Rubyist Meetup is a tech meetup for English speaking Ruby engineers organized by the CEO of Doorkeeper Inc. Paul McMahon. One day, he gave me an email and suggested me to talk about a topic related to databases. I decided to talk something to practice my English, to promote the book, and to reorganize my thought on databases. Thank you very much Paul, this was my precious experience!

The talk was basically the summary of the chapter one of SQL Performance Explained, including basic topics like why indexes are needed and how B-tree indexes search a record. The talk was for developers who use Active Record and don’t have enough knowledge about indexes and what I wanted to say for them is that don’t be afraid of indexes. I intentionally avoid to write about a specific database management system (MySQL, PostgreSQL, etc.) to focus on how indexes work in general but because of that, the talk might be too abstract. Hopefully, the talk was a good introduction to the internal of databases for attendees.

I’m going to talk at some more events in this year to improve my English skill.