プログラマのみなさんも、会議や勉強会LTなんかでプレゼンってよくやるのではないかと思います。
そんな時にこんな苦い経験はないでしょうか?
- 言いたいことが多すぎて資料枚数が多くなりすぎて時間オーバー
- 誤字脱字が多く、発表中に本質から逸れた指摘ばかりされる
こんな時にパワーポイントでもTDDが出来たらなぁと思いませんか?
TDDと言えば、最初にあるべき姿を定義し、それを満たす最低限のプロダクトを作るための設計技法です。
プレゼンの資料作りにもTDDの技術を応用すれば、必要最低限の量で最大限の効果を発揮できる資料ができるのではないでしょうか。*1
そんな皆さんに、今回パワーポイントでTDD(ユニットテスト)ができるツールを用意しました!
使い方
PowerPointで資料を作ります。
テストのひな形を自動生成します。
結果こんなGroovyのテストクラス(SampleTest.groovy)ができあがります。
import org.junit.runner.RunWith import org.junit.Test @RunWith(GroovyPPTTestRunner) class SampleTest { PPTPresentation ppt @Test void testName() { assert !'Not yet implemented' } }
PPTPresentationクラスは、PPTファイルのデータを保持するクラスで
GroovyPPTTestRunnerがテストメソッドごとにpptインスタンスにインジェクションしてくれます。
テストを編集します。
例えばこんな感じ
import org.junit.runner.RunWith import org.junit.Test @RunWith(GroovyPPTTestRunner) class SampleTest { PPTPresentation ppt @Test void スライドの枚数確認() { assert ppt.slides.size() == 3 } @Test void 表紙の内容確認() { assert ppt.slides[0].title == 'GroovyでPPTテスト' assert ppt.slides[0].shapes[1].text == '@kamatama_41' } @Test void 目次の確認() { assert ppt.slides[1].title == '目次' // 改行は削除される assert ppt.slides[1].shapes[1].text == 'Power PointでVBA?VBAからGroovyを呼び出すスライドショーの内容を書き出す/読み込む' } @Test void 複数テキストボックスの確認() { assert ppt.slides[2].title == '複数テキストボックスがある場合' assert ppt.slides[2].shapes[1].text == 'テキスト1' assert ppt.slides[2].shapes[2].text == 'テキスト2' assert ppt.slides[2].shapes[3].text == 'テキスト3' } }
ppt.silidesでSlideクラスのコレクションが取得できます。
Slide#shapesでShepeクラスのコレクションが取得できます。
Shapeクラスはスライドにある各オートシェイプのデータを持っています。*2
まとめ
やっぱりGroovy最高!