サンフランシスコで昼食を
第12回 「非クリエイティブ」な仕事の楽しさ
2007年12月6日
初出:WEB+DB PRESS Vol.41(2007年10月24日発売)
宮川達彦日本国内滞在説
年の80%以上はサンフランシスコに住んでいるのに,日本に住んでいないとわからないような情報を知っているということで,宮川は本当は国内に住んでいるんじゃないかという疑惑(?)もあるようです(図参照)。なぜそんな憶測を呼ぶのか,今回は自分の時間の過ごし方を振り返ってみようと思います。
にぽたん研究所における宮川達彦国内滞在疑惑
マージから始まる1日
Six Apartの多くのプロダクトでは,リリース番号をベースにソースコードのブランチ(branch:枝)を切っています。ここで重要になるのが,各ブランチやトランク(trunk:幹)間でのマージをする作業になりますが,Voxなどのコンシューマ向けプロジェクトでは,各リリースからトランクへのマージダウンは日々行い,バグの修正などにリリース間で差異がないようにするのが原則的なルールになっています。この夏から私がこのマージ作業(Daily Merge)を担当することになったため,1日のはじめにSubversionで前日各ブランチにコミットされたコードをマージしています(注1)。
新しいものを作るときは,手を動かさずに考えるプロセスも大事になりますが,まず手を動かしてマージをコミットするという形のある作業を定期的に行えるというのは,そうしたクリエイティブな作業に移るステップとして重要です。ですから,1日の最初にやることが決まっているのは,開発やコードを書いていくリズムを作るのに非常に有益だと感じています。
クリエイティブといえば,バグ修正や他人の書いたコードのメンテナンスをするエンジニアを「メンテナンスプログラマ」などと呼び,非クリエイティブでつまらない仕事だとされがちです。しかし,私自身はむしろ,これがあるからコンシューマ向けの開発は楽しいと思っています。
大きな機能追加などだと,リリースには数週間から1ヵ月かかり,コードを書く時間も1日で終わりというわけにはいきません。最初のうちは雲をつかむような状態から始めることもあり,書いていくうちに設計の間違いに気づいて「ああ,やり直し」なんていうこともよくあります。
それに比べて,バグ修正,コードのメンテナンスやリファクタリング,パフォーマンス向上のパッチを書くなどの作業には,「先の見えなさ」はありません。問題は眼前に明確にあり,それを(たいていの場合)数行の修正で直し,ユーザ向けのリリースですぐにプロダクションに反映できます。「できるだけ小さなコード量で,多くのユーザをハッピーにする」という私のコーディング信条からすると,この各リリースでのメンテナンス作業というのは,ある意味非常にクリエイティブです。
「西海岸のスタートアップ企業でコンシューマサイトのコーディング」なんていうと,非常にクリエイティブな作業ばかりをイメージされるかもしれません。しかし実際は,こういったある程度「作業」的な側面のあるタスクがかなりの割合を占めています。それらをいかに効率的に処理するか工夫することは,新機能やAPIデザインといった「頭を使う」ときにも大いに役立ちます。
- 注1)
- 実際のマージ作業はsvkを使ってスクリプト化しているため,コンフリクトが発生しない限りは半自動化されています。
午後のコーディング
ランチのあとは,その日に片付けるタスクを洗い出し,黙々とコードを書いています。とくに水曜日はHackathon Dayとして,エンジニアが自由に作業を行える日(Googleの20%ルールに似ていますね)となっていますが,「エンジニアを含むミーティング」が禁止されている日でもあります。他の曜日でも,エンジニアの作業を遮るミーティングは週に1度,日の終わりの夕方に設定されるなど,無駄なコンテキストの切り替えを1つでもなくすという配慮がされています。
仕事を切り上げてプライベート
18時くらいになると同僚が帰宅し始め,私も19時半ぐらいには必ず退社するようにしています。あまり長い時間やっても成果が出ないことが多く,「この時間までには切り上げよう」と頭の中に入れておくほうが効率が上がりやすいように思います。
食事をとり,ちょうど21時くらいになると日本の友人たちとのIRCやIM,Twitterなどでのコミュニケーションが活発になってきます。家にいるときはほぼずっとノートパソコンの前に向かい,テレビにつないだMac miniでニコニコ動画を見ながら(注2),友人と夜遅くまでチャットしています。この時間帯が日本の昼~夕方まで続いているのが「日本国内滞在説」主たる原因かもしれませんね。
- 注2)
- ニコニコ動画をSafariブラウザのホームページにしています。

