2014年10月25日土曜日

はこだてディベロッパーカンファレンス 2014に行ってきました

タイトル通り、今日は函館市中央図書館で開催されたはこだてディベロッパーカンファレンス 2014に行ってきました。

簡単にはこだてディベロッパーカンファレンス 2014を紹介すると、5名の技術者がそれぞれ小一時間ほどお話を無料でしていただける大変貴重な催し


私は「プログラミングの知識がまだ浅いし、5名の方の中で特定の言語のコーディングの方法や、それらの前提知識がある程度なくても理解できそうな方を選ぼう」
というあまり褒められそうもない心構えでこの催しに参加したわけですが(そもそも5名の方のお話を全て聞けば解決なんだが)、これが運がよかったのか、大学生にもわかるようにレベルを落としてお話していただけたのか、私にとっては大いに充実した時間を過ごせました。

…で、何を聞いてきたのさ?と言いますと
「ディベロッパーテスティング -テストを書きながらコードを書く技術-」
という題目でタワーズ・クエスト株式会社 取締役社長 和田卓人さんのお話を聞いてきました。
なんでも「お前それ@t_wadaの前でも同じこと言えんの?」とかいうコピペで有名だとか
 
内容を一言で表すのであれば
「テストをしながらコーディングをすることで開発促進を促す」
というものに尽きると思います。
じゃそもそもなんのためのテスト?って話なんですが
開発者にとってみると開発の促進(Developer Testing)
顧客にとってみると進捗の管理(Customer Testing)
品質保証担当者からみたらそのまま品質保証(QA Testing)
につながるわけで、そのうちのDeveloper Testingにテストをしながらコーディングをする技術がふくまれているわけです。

じゃさらにDeveloperTestingってなんぞや?っていうと
プログラマの
プログラマによる
プログラマのための
プログラムとしてのテストを書きながら
開発を行っていく手法
とおっしゃっていました。
はぁなるほど、開発促進てのはテストによって得られたデータから改善点だけでなくモチベーション的なものもあるのか…

じゃ具体的にテストしながらコーディングてどうやんのさ?
というと、やっぱりそのような開発手法があるようで
テスト駆動開発
Test Driven Development(TDD)
がよくつかわれるとかいないとか。

で組織でソフトを開発するには一人で開発するわけではないのでとりあえず動けばOKはあまりいい考えではない、というのはもう当たり前。
でも綺麗に書こうとするとこれがなかなか実装の妨げになるわけで…
これを4象限に起こしてみるとこんな感じ
 
綺麗なコードを意識してコーディングは赤線
逆に動作することを意識してコーディングは青線
緑の星は到達点
綺麗なコードを意識して書くと納期やら定期報告やらで綺麗なコードを書くあまり実装が間に合わないリスク
逆に動作を第一に意識すると綺麗なコードにするときにエラーを発生させるリスク
ともに山(線が急に曲がる部分)があり、 それを超えることがなかなか難しい。
赤線は完璧主義から、虚栄心、羞恥心等で動作まで時間を要したり…
青線は青線で「動いてるからもうよくね?」みたいな考えもよぎるわけで…
私は仕事で開発したことはないが、ある程度動作したら「これでよくね?」とか考えてしまうのでこの説明に妙に納得。
でも大前提として納期には間に合わせなければいけないわけだし、なんとなく青線に沿っていくのはわかる、でも綺麗さも両立したい。

そこでTDDなわけです、と温められた私は一層興奮状態。
そして始まるTDDの説明…
TDDとは?TDDのサイクル
1、次の目標を考える ToDoリスト等やらなきゃいけないことをまとめる
2、その目標を示すテストを書く
3、そのテストを実行して失敗させる(Red)
4、目的のコードを書く
5、2で書いたテストを成功させる(Green)
6、テストが通るまでリファクタリングを行う(Refactor)
7、1~6を繰り返す
モジュールごとにテストしながら実装するということらしいです。
こうすることによって青線の理想を維持しつつ、コードを綺麗にしていく上でエラーを恐れなくなるというわけです。
ここでいうRed Green Refactorとは
IDE等でテストを実行し、失敗をユーザが認知することをRed
それを修正し、成功させることをGreen
そのうでコードを綺麗にしていくことをRefactor
と呼ぶ。
これをまたまた4象限で表すとこんな感じ
こうして繰り返すことによってソフトの質は上がっていく。
この図と説明を聞いていた人なら
確かに一つずつ確実にテストをこなせば確実にエラーは減っていくし、成功した部分を随時綺麗にしていけばモチベーション的な意味で精神にやさしいと言えそう。
和田さんはこの図を黄金の回転と呼んでいて、どれか一つでもサボろうものならすぐに崩壊するとおっしゃっていた。
なんなら部屋の掃除もあとで一気にやるより、つかったらもとに位置に戻すことと同じ、とも例えていてまた妙な納得、やはりできる人は例にとるのも上手だなぁ
なぜ黄金なのかはジョジョの7部の黄金比がどうのこうの…私は6部までしか読んでいないのでニヤニヤはできませんでしたが…

まとめると
コードを最適化しながら進めることで、開発後のテストのコスト(時間や費用)削減
開発者自身がコードの内容を明確に認識できる
TDDで幸せになれる→良さ👏

今後は私もTDDを導入して開発をしていこうとおもいます。
…ところで和田さん、函館に初めて言ってB級グルメを一夜で食いまわるて、内臓脂肪とか大丈夫なんかな?

2014年10月24日金曜日

お引越し

こんにちは
備忘録っぽくなにかやったら書いていきます。
基本はハードウェア関係、ときどきプログラミングのメモをちょこちょこと