JaSST 14 北海道へ参加、発表してきました

JaSST 14 Hokkaidoに参加してきました。ブログにかくまでがJaSST!!という訳ではありませんが、閉じた話しでもないので、ここに所感など少し残しておこうと思いましたので書いてみました。

1. 基調講演: Test Yourself – テストを書くと何がどう変わるか

t_wadaさんの講演です。純粋に、面白かったです。Bootcampにも顔を出したことがあるのですが、実際に時間をとって、こうして話しを聞く機会ができて良かったです。

スライド

内容

全体の流れは、TDD(テスト駆動開発)の説明から、FizzBuzz問題を使ったデモ、TDDの導入により変わったことなどという流れで進んでいました。

特にデモは面白く、TDDに触れたことが無い人や、実装に沿ってテストを書くがそのテストの抜け漏れまで考えていない人らからすると、いろいろ考えるきっかけを与えてくれるような内容だったと思います。私は手元でRuby+RSpecですが、いくつか書きながらデモを追っていました。(Java+JUnitが久しぶりでパッと頭に浮かばなかったのは内緒)。

基調講演のまとめとしては、nemorinさんが既にブログを書いているのでそちらに任せ、以下では個人的な所感でも。

個人的な所感

まずこの話しの中で大事なのは、CheckingとTestingの文脈への理解だと思います。James Bach氏のブログで話題になりましたが、同氏は少し前にTESTING AND CHECKING REFINEDとして、TestingとCheckingの違いを再定義しています。

テストエンジニアとして私も考えたことがあるのですが、開発者が網羅的なコード上でのテストをできるようになる世界がきたとして、テストエンジニアとしてはどこに価値を見いだすのか?という疑問を持っている方も多いのではないでしょうか。確か、今回の参加者の中にも同じような疑問を持っていた方が居た気がします。その中で、ChekingとTestingという意味合い、その専門性の違いを知ることは、テストエンジニアとしてこれからどこに力の入れようを絞れば良いかなどに対して、幾分か示唆を提示してくれていると思います。

例えばTestingの結果、対象のシステムに機能的には同じ振る舞いを要求しながらも性能向上が必要になった箇所があったとします。そこで臆すること無くその改善への施策としてリファクタリングへ足を踏み込むことができる世界の構築には、やはり今回の話題にしたCheking文脈のテストコードが大事な位置を占めます。そして、その気づきを得るためのTestingへの専門性として、テストエンジニアは必要な存在になると思います。このような協調は、講演の最後のほうでもされていた内容に繋がると思います。

あと、Chekingの意味での良いテストに関して、F.I.R.S.A-TRIPを引用していました。テストエンジニアなら、おそらく記載されている要素の多くはそのままテストの良さとして学んでいる方も多いと思います。私は、それらのなかでProfessionalが特に印象的でした。テストコードにも専門性を持ったスキルが必要なのです。私も身につけたい。せめてテストコードのレビューに使えるくらいには・・・

そういえば、TDDのリファクタリングの話しを聞くと、”設計の軽視”という話しを聞くことがあります。発信している方の背景を理解していないので明確な反論は言えませんが、少なからず私が身を置いているサービス開発界隈の周辺では、私は設計を軽視しているとは思いません。サービス開発では、スタートアップの頃から、例えば100万人規模のアクセスに耐えるようなシステムは太り過ぎなシステムになります。大事なのは、その時々の状況に見合った設計/実装を変化させることになります。加えると、その変更を数ヶ月規模の短期間で実施することが要求される場合も多いです。そんなとき、臆すること無くシステムをスケールする手段として、今回の話しのようなリファクタリングを確実にして、実装を洗練させることは現実解として、今の時代には必要なものだと感じました。また、そのような変更に耐えるための設計として、AWSを基盤にシステムを設計するなどの選択もされるわけなので。(工学的に軽率と言われれば、それはそうかもしれないとは思います。)そもそも、そのスケールさせるための根本の設計がとかの話しになれば、それはTDDだからとか、そういう話しで収まらない話題になると思います。

2. 事例発表/ライトニングトークス

事例発表「テスト自動化を運用に乗せる為のもう一工夫」

横田 真氏の話しで、Seleniumを用いたテスト自動化の話しでした。Seleniumのテストは、使いようによってはすぐに処理時間が長くなってしまいます。発表の中にはその問題への対応を少し言及していましたが、個人的には具体的なコードを見たかった。(コードを見るのはさすがにプロジェクトとしてアウトな気がしますが。。。)

ライトニングトークス「モバイルアプリ開発体制の継続的改善」

以下のスライドで発表させていただきました。

7分という短い時間なので、全体像の話しに留まってしまいましたが、これからもいろいろなところで成果を公開していきたいと思います。

ライトニングトークス「新チームを2年で独り立ちさせる~札幌に早く帰ってくるために~」

発表された的川 建史氏は、テストエンジニアではなく開発者寄りの方だそうです。プロセス改善などの、改善への取り組みが好きだとおっしゃってました。

チーム育成の話しをされていましたが、面白かったです。私はまだチーム全体を成長させていく、マネジメントよりの職責ではないのですが、これからこういう方面も視野に入れる必要があるのかなと思いました。

ライトニングトークス「プログラム類似性の可視化と事例の紹介」

繁在家 学氏の話しも面白かったです。私も大学時代の先輩が、このようなプログラム類似性の研究をしていました。類似性を可視化できるようになると、目に見えないソフトウェアを理解できる足がかりになるので、いろいろ機械的に解析を行い、改善できるところを見つけ、改善し、やりたいことに集中できる世界に近づくのかなときたいしてしまいます。

3. ビブリオバトル

私はビブリオバトルに参加しました。ビブリオバトルは、発表者が持ち寄った書籍を限られた時間(5分など)でプレゼンし、聴講者が2分くらいで質問、最後に発表者の中で一番読みたい書籍を聴講者が多数決で選ぶという、白熱する対決です。

以下の5つがあげられていましたが、私は「動機づける力」が面白そうだと感じました。

  • 「動機づける力」 DIAMONDハーバード・ビジネス・レビュー編集部(編訳)
  • 「演習で学ぶソフトウェアテスト」 正木 威寛(著)
  • 「いかにして問題を解くか」 ポリア,G.(著)/ 柿内 賢信(訳)
  • 「東大首席弁護士が教える超速「7回読み」勉強法」 山口 真由(著)
  • 「要求を仕様化する技術・表現する技術」 清水 吉男(著)

4. ワークショップ 「テストのスパイス教えます ~ちょっとした手間で変わる仕上がり~」

ビブリオバトルのあとは、このワークショップに参加。筆記用具忘れてしまい、申し訳ありませんでした・・・

JaSST北海道実行委員の方々が用意した例題をもとに、テストケースとして仕様書をそのまま書き写した良くないテストケースを改善していく、というものでした。ワークショップのために用意された資料はすごく力が入っていて、純粋にいろいろ考えられてすごいと感じました。

ワークショップは、仕様の文章が存在すれば初めての人が非常にやりそうな、仕様書をコピーしただけのテストケースに対して、どのようにレビュー・指摘を行い、改善するかという流れで進行しました。私の勤先でも、例えばディレクターの方々が考えるテストケースとしてよくやりそうな例だなと思いました。ソフトウェアテストへの専門性を持たない、もしくは疎い方々へどのように改善するための指摘をするか、考えさせられました。

5. クロージング、そして情報交換会

JaSST 北海道実行委員の方々、非常に面白かったです。
ぐるぐるマインドマップの、ぐるぐるする前のノリの良いかけ声が印象的でした。

来年は10周年だそうです。
より興味深い成果を持って、応募してみたいなと思いました。

後日談

せっかくの北海道なので、余市のニッカウヰスキーで竹鶴25年ものをたしなみ、柿崎商店でいくら丼を頂きました。
ウイスキー、初めてだったのですがすごく香りと味も良くておいしかった。
そのかわり、他のウィスキー飲めなくなりました・・・(味が・・・)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s