普通のことを普通にやれば、いいプログラムになる
Abstract
私は Yahoo JAPAN に所属し YDN (Yahoo!ディスプレイアドネットワーク) を担当しています。
先日、この YDN の crawler を perl で一から書き直しました。
これまでの crawler のコードといえば、いわゆるレガシーコードと化していて、開発者の多くがそのコードに触るのに二の足を踏んでいる状況でした。
一方、レガシーコードとは言っても、それは要求されている仕事をなんとかこなしており、だからこそ長らく放置されてきました。
おそらくみなさんの会社にもこういったコード、システムは少なからずあるのではないでしょうか。
私は、このレガシーコードを一から書き直しました。これにどれほどの意味があるのか、という疑問も当然わきます。実際、書き直しているとき何度も自問自答しました。また一方で、以前のプログラムよりいいプログラムが本当に自分に書けるのかという不安もありました。
結果として私は以下2つのことを学びました。
- レガシーコードを書き直すメリットはある。
- 普通のことを普通にやれば、いいプログラムになる。
この2点についてお話させていただきたいと思います。
トピック(変更の可能性あり)
レガシーコードを書き直すメリットはある。
- 開発者、運用者のそのシステムへの関心、楽しみが生まれた。
- そのシステムを使ったアイデアが生まれる可能性が高まった。
普通のことを普通にやる。
- アーキテクチャ:Prefork 型? Event 駆動?
- プロセスを管理するコードと実際の処理を行うコードは明確にわける。
- supervisord または daemontools でデーモン化する。
- graceful shutdown できるようにつくる。
- ログを出すべき。
- ローテートさせる。
- エラーログと metric 用ログを明確にわける。
- metric 用ログは 1 行 1 JSON にすると扱いやすい。
- test を書く。
- "普通" にするために、社内独自要素を極力排除する。
新たなレガシーコードにならないために
- プログラム、システムは "人" の関心がなくなったらどんどん腐っていく。
- 可愛がられる、評価されるプログラム、システムにしなければいけない。
- 自分で作ったプログラム、システムは自分の分身であると思うべき。
- エラーを放置するのは自分を蔑んでいるのと同じこと。
- 周りから信頼されるシステムになったらそれは自分が信頼に足る人になったということ。
Talk Details
| Venue | TBD |
|---|---|
| Starts On | TBD |
| Talk Category | Applications |
| Language | Japanese |
| Slide Subtitles | Japanese |
| Talk Duration | 30 minutes |
| Material (Difficulty) Level | Beginner |
| May we take your photo? | allow |
| May we record your talk? | allow |
