未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

素人をプロに育ててくれた社内コミュニティ

20数年前に新卒で入社したわたしを育ててくれたのは配属先の上司であり、社内エンジニアリングコミュニティだ。

最初のプロジェクトは日本語COBOLプリプロセッサを作るというものだった。大学でソフトウェアを学んだが、職業としてプログラムを組むという経験はなかった。プログラムを作ることのいろはをその会社で学んだ。

新卒の初心者プログラマの日常はこんな感じだ。

よ「プログラム書きました〜」、先輩「あれ〜、どこにファイル置いたの?チェックインした?」、よ「まだでした」、ぱたぱたぱた、よ「チェックインしました〜」、先輩「あれー、ビルドできないなあ、コンパイルエラーが出るよ」、よ「コンパイルしていませんでした〜。今直します〜」、あれやこれや、よ「出来ました。ばっちりビルドも出来ます〜」、先輩「あれー、テストが通らないなあ、ちゃんとテストしたの?」、よ「テストはしていません(きっぱり)」、先輩「おいおい、コードを書くって言うのは、単にコーディングするだけじゃなくて、コンパイルして、コンパイルエラーをとって、ちゃんとビルドできるようにして、そしてテストを書いて、実装した機能がちゃんと動作することを確認するんだぞ、おいおい、ちゃんとテストしろよ(あきれつつ)」、よ「なるほど〜、わかりました、そーゆーことなんですね〜」みたいな感じに手取り足取り初心者にいろはのいを教えていただいた。

コードを書くことと、テストプログラムを書くことは対になっていて、切り離せない。コードを書き、テストプログラムを書く。実装した機能を確認する。これはプログラマの日常である。当たり前のことを当たり前にやる。上司も同僚もその当たり前のことを要求する。テストのないコードを書くことは認められない。別にどこかにそのようなルールがあるのではなく、不文律として、そのような価値観を共有している。

テストをしていないコードをリリースすることはありえないという価値観がある。それがプログラマのコミュニティだ。そして、そのような価値観を共有しているからこそコミュニティなのである。

よ「テストも通りましたよ〜」、先輩「どれどれ、おー大体動いているか。ところで、ほげほげのケースはどうなっているの?」。よ「えーーと、あ、すいません、まだ実装していませんでした」、先輩「おいおい」…

雑な仕事を認めない。それがプロフェッショナルだ。当たり前のことを当たり前にする。それが難しいからこそプロフェッショナルの存在意義がある。そんなことを教えてもらったのが、新卒で入社したDECのエンジニアリングコミュニティである。

86400

86400である。この数字は何か?ピンと来た人来ない人、いろいろだと思う。Webサービスの性能評価をする人ならば当然頭に入っている数字である。

86400がピンとこないのならば、3600はどうか?3600CC?3600g?うーん、ちょっと違う。それでは、60はどうだ。3600は60x60だし、86400は60x60x24だ。つまり、一日の秒数である。

86400という数字を覚えれば、一日あたり800万ページビューがあるWebサービスは平均で一秒あたり100弱のページビューをさばいていることになる。一日あたり8〜9億円の売上を出しているショッピングサイトは、一秒あたり1万円の売上になる。ということは1分間そのサイトを止めたら60万円の売上、1時間のサイトを止めたら3600万円の売上の機会損失になる。そーゆー相場感覚を86400という数字は教えてくれる。

同様にハードディスクへの物理IOが発生したら、それは数msecから20msecくらいはかかる。そのような相場感覚をアプリケーション開発者も持つ必要がある。物理IOが発生したら負け。だからキャッシュというのが重要になってくる。

追記:一日あたり800万ページビューだと平均1秒あたり100弱ということなのであるが、ピークはもちろんもっと多い。問題はそのピークがどのくらいなのか、どのように近似するのか、その方法をわたしは知らない。皆様のご経験を伺いたく思う。