60名超の集団で同じ場所で同じコードを読む
ソースコードリーディングワークショップ2010を開催した。日本IBMに共催いただき、@ITにメディア協賛いただいた。内容は、ハンズオンと呼ぶ、ご参加者が手を動かすセッション、ハンズオンにもとづいて参加者どうしで議論するセッション、講演X2, パネルセッション。
今回、休日であったり、仕事の都合でお越しいただけなかった方のために、今回のワークショップの縮小版を日本IBMにご協力いただいて、デブサミでも実施する。詳細はこちら。
開催は1/30(土)午後、休日の午後をほぼつぶすイベントだったので、ご参加いただいた方はたいへんモチベーションの高い方だ(物好きといってもいいだろう)。前回のソフトウェアインスペクションワークショップと比較すると、当日キャンセルの割合が高かったが、それでも通常のセミナと同程度だそうだ。参加者の方がここを読まれていたら、お礼を申し上げたい。お休みのところご参加いただいてたいへんありがとうございます。
コード読解のための時間は2.5時間。約2000行のJavaソースコードを読むには十分とはいえない時間だ。いつもと勝手の違う環境で、勝手の違うソースコードを読み、普段とは違う設問に回答するのは、スキルの高いエンジニアであってもたいへんな作業であると推測する。
せめてものおもてなしとして、共催のIBMさんと相談して、参加者にミネラルウォータをプレゼント。
ハンズオンは、紙かPCいずれかから、Javaソースコードのアプリケーションのバージョン1.0を理解し、2.0との差分13種類を理解する。13種類の差分を適用しても問題ないかどうかを判断するための所要時間と判断の可否を答える。バージョン1.0の理解の正しさや深さは、2.0との差分の可否によって判断できる。また、各差分には、変更の種類(追加、削除、修正)、変更規模(行数)、変更が与える影響規模(波及先: 行数)等の特徴を持たせている。
これらの特徴と、回答いただいた所要時間を合わせることにより、ソースコードの読みにくさを計測しようとしている。たとえば「波及先規模が大きい場合、変更規模が小さくても、理解に時間がかかる」というような知見が得られれば、派生開発や保守開発で、これから変更しようとしているソースコードがどの程度複雑(人手で確認するのが難しい)かがわかれば、これらの開発の見積りの精度が向上する。
また、回答いただいた所要時間から個人情報を削除すれば、コード読解のベンチマークになりうる。自身のソースコード読解の強みや弱みをみつけるための判断材料になる。また、読み進め方や回答例を示すことにより、自分がこれまで知らなかったソースコード読解のアプローチを知ることができるだろう。
ハンズオンの狙いは、@ITの記事で紹介いただいている。
また、当日の内容は以下の2メディアで記事化されている。
http://www.atmarkit.co.jp/news/201002/02/code.html
http://itpro.nikkeibp.co.jp/article/Watcher/20100202/344062/日経ITproのほうは、2/2のアクセスランキング1位だったようだ。@ITの記事のほうは、はてぶが300を超えている。
ご参加者のエントリもある。
http://kwappa.txt-nifty.com/blog/2010/01/2010-9eff.html
Twitterのタグは#scr_ws2010。@kwappaさんをはじめとして、有益なtweetを数多くしていただいている。また、@src_wsでは、後日の報告をしていこうと思っている。
もう一つ、今回のイベントは企画段階で紆余曲折がたくさんあった。途中で「ひょっとして開催できないかも」と思うことがあったが、谷川氏、新野氏にとてもご尽力いただいた。とても感謝しているので、お礼を申し上げたい。お二人のご支援、事務局を担当くださったIBMさんのご支援なくして、今回のワークショップは成しえませんでした。たいへんありがとうございます。
もちろん、当日会場スタッフとなってくださった春原氏、服部氏、原氏、三井氏、田村氏、保田氏のご尽力、ご登壇いただいた戸島氏、ひが氏、細川氏、新野氏、よしおか氏にもいくら感謝しても十分に感謝したとはいえないくらい、助けていただいた。
久々に内容の長いエントリになった。ワークショップでの講演の内容やパネルディスカッションについては別エントリで報告したいと思う。