完成してから、使う側に戻る
Rustで作っていた小さなツール群が、ひとまず完成した。
障害調査で使うためのもので、ログの発生数を眺めたり、時間で切り出したり、分布を見たり、複数の系列を並べたりする。最後に作った incident-timeline は、たとえば502の発生数、CPU、レイテンシ、タスク数みたいな時系列データを、同じ時間軸に並べてHTMLにしてくれる。 過去の障害を題材に試してみると、数字だけ眺めていたときより、かなり分かりやすかった。「ある時間帯にエラーが増えたとき、ほかの指標はどう動いていたか」といったことが、形として見える。 よし、完成。 ……と思ったのだけど、使っていてひとつ面倒なことに気づいた。時刻がUTCだった。
CloudWatchから取ってきたデータがUTCなので、ツールもそのoffsetをそのまま使って表示している。これは仕様としては正しい。ただ、自分が見たいのは日本時間なので、「05:45だから、14:45か」と毎回頭の中で9時間足していた。 地味だけど面倒だった。 そこで --display-offset +09:00 というオプションを足した。これを指定すると、データそのものやグラフ上の位置は変えず、軸とツールチップの時刻だけを +09:00 で表示する。内部の値には触らない。表示だけ変える。 実装も小さかった。
タイムゾーンを扱うなら、Asia/Tokyo みたいな名前を指定できたほうがいいかもしれない。DSTも考えたほうがいいかもしれない。そう考え始めると、いくらでも機能は増やせる。 でも今回、実際に困ったのはそこではなかった。UTCをJSTに読み替えるのが面倒だった。それだけだった。 日本にはDSTがないので、今の自分の用途なら固定offsetを指定できれば十分だった。新しい依存もいらない。なので、そこまでで止めた。
以前だったら、完成度を上げようとして先回りでいろいろ考えていたかもしれない。でも今回は、いったん完成とする。実際に使って、面倒を踏んだら、その面倒だけ取る。という順番になった。 これは、今回Rustでツールを作りながら何度か意識していたことでもある。「あとで必要になるかもしれない」では作らない。実際に必要になってから考える。 もちろん、最初から考えておいたほうがいいものもある。でも、小さな道具を自分で作っていると、使う前に想像していた不便と、実際に使って感じる不便はけっこう違う。 今回も、完成したあとに機能を追加した。でも、それは完成していなかったからではない気がする。
完成というのは、もう何も足さないという意味ではないのかもしれない。一度そこで終わりにして、使う側に戻る。使ってみて、不便だったら直す。ただし、そのとき困った分だけ。 今回は、それくらいがちょうどよかった。