JavaScriptのテストを開発工数に入れてもらうには?:UXClip(28)(2/2 ページ)
Webアプリの大規模化とフロントエンド領域の拡大により、JavaScriptのテストの必要性が高まっている。数ある高機能なテストフレームワークをどう使いこなせば、高速かつ高品質な開発が可能になるのだろうか。
JavaScriptテストフレームワークの比較
TISの佐伯純氏は、QUnit、Mochaなど各JavaScriptテストフレームワークとJsTestDriver、Karma+アルファの便利なツールを紹介した。Capybara-webkitとCucumberを組み合わせることで、ユーザーの受け入れテストを自動で実行する方法も紹介した。
フレームーワーク選択時に考えるポイントも語った。まずは自分たちが作るものはどのようなプロダクトやサービスなのかを良く考える。そして開発スタイル(「TDDかBDDか?」「メンバーは?」「自動化は?」など)を決めた後で、テストツールを選択する。「プロダクト自体や開発の持続性・継続性を支えるもの」という意識でテストツールは選択されるべきと述べた。しかし、「どのツールも似たような機能を持っていて、選択しづらいかもしれない」と述べ、「最終的には開発者たちが自分たちの開発リズムを保ち、心地良く開発ができるツールを選んで良い」と締めくくった。
現場でテストはどう行われている?
イベントの後半には、セッションを行った4人による座談会が開かれた。その一部を紹介する。
テストをテスト未経験者に取り入れてもらうためには?
佐伯氏:自分自身の経験を語ると、私は新人の時からチームに放り込まれてペアプログラミング(以下、ペアプロ)をしていて、「お前はテストを書かなきゃいけないんだ」という状況に最初からありました。トレーニングでしたね。それが当たり前なのだと刷り込まれていました。また、うちの会社の場合、開発標準を最初に決める際に、テストを行うと明記したら必ずやらなければいけない、そういう状況で覚えていきました。
斎藤氏:私は、「テスト自体が楽しそうだ」というところからスタートしました。楽しさを感じてもらいながら、「テストはコードを書く上で大切なプロセスである」ことをどう伝えれば良いのかを考えています。佐伯さんと同様にペアプロを通して、目の前でテストの利益が見えてくるのは楽しいですし、赤を緑にしたくなるというゲーム性もあります。そういうテストの面白さを一緒に見ていくのが良いかと思います。
佐藤氏:フロントが得意なメンバーが、まずテストのスケルトンというか、それを生成する簡単なスクリプトを書いてくれました。「そのスクリプトにこのファイルのテストを作ってくれ」とお願いをすると、そのファイルのクラスのコンストラクタのテストまでやってくれるものを作ってくれました。コンストラクタを呼んでエラーにならないところまで1つ目のテストができる状態です。「まずテストを一個も追加しなくて良いからコンストラクタのテストだけでも書いて」というのが初めの一歩としては良くて、現在、少しずつ社内で広まっている状況です。
外村氏:周りのテストができる人に教えてもらったり環境を作ってもらったり、あるいはやらざるを得ない状況になることが自然なのかもしれませんが、そういう環境はなく、テストを書いてみたいという人も多いと思います。最初はつまずく可能性が高いので、いきなり自分の携わっているサイトのプロジェクトでやるのではなく、ちょっとしたライブラリのようなものを作り、それに対しテストを書くのが簡単で良いかもしれません。
テストを書いていてよかったと思うエピソード
佐藤氏:テストが書いてある状態のコードならリファクタリングから始められるという点が精神衛生上良いですね。嬉しいですね。
斎藤氏:コードの書き出しで苦しむことがあると思いますが、まずテストを書くことで滑り出しが楽になります。セッションでも話しましたが、私はもともとロジックをアウトライン化したものをコード上に書く習慣があったんですが、それがテストに置き換わりました。自分のワークスタイルに合っています。
佐伯氏:特に途中から任せられる場合ですね。まず実装を見るんじゃなくてテストを見る。そこから仕様を把握できますね。
外村氏:私は1年前に自分が書いたコードを見て、テストを書いておいて良かったなと思いました。1年前の俺ナイスって思いました(笑)。
参加者からの「テストを工数に入れてもらうには?」と質問には以下のように答えてくれた。
佐藤氏:あらかじめ多めに取ることですね(笑)。多めに、というのは悪い意味ではなくて、コードをこの品質で書くためにはこれだけやる必要があり、これだけの工数が必要である、と合意を取っていくということです。「テストを書くから」とか「この機能を作るためにリファクタリングをする必要が……」と細かいことを技術側ではない人に伝えると、「そんなのはいいからとりあえずこの機能だけをお願い」とお願いされがちです。
佐伯氏:すべてきちんと説明するのが良いですね。開発し保守をする、そのためにテストをコードで書いて置いておくのが一番良いですと伝える。コストも抑えられますと。その上でこれだけ工数が必要であると示し納得してもらった、というエピソードがあります。ただ、実際にはこっそり(笑)……こっそりとはうまくいかないんですけど、一行ピッとテストについて記載しておくというのが良くあるパターンですね。
外村氏:3カ月くらいと見積もった案件でテストを書かなかった場合、最終的にバグが発見され4カ月くらい掛かってしまったということがあります。最初から品質保証という形でテストの工数を取っておくのが自然かと思います。
テストの恩恵は多い
話を聞く前は「高品質なコードを書くにはテストは必須だと思う一方、やはりテストコードを書くのは面倒」という印象があったがその考えが覆った。使いやすいツールが多く誕生した。コードの書き出しが楽になり、ついでに気分も良くなる。開発が安定し高速にもなる、ということを学んだ。
- 「その発想はなかった」が12連発! アプリ・Webサービス・ものづくり・おばかの最先端がここにある〜MA9決勝戦レポート
- スマホアプリの検証環境改善を目指すNTTレゾナント、クラウド検証サービス提供の背景を語る
- “オフラインファースト”を実現する、ストレージ系APIライブラリ10選
- HTML5時代のWeb開発者が知らないとガチヤバな3つの未来予測と6つの脆弱性対策
- Firefox OSのアプリ開発は思ったより簡単?〜関東Firefox OS勉強会レポート
- 和製GitHubの「gitBREAK」は「儲からなくてもいい」
- テストを通じて「より良いWebの実現」に貢献〜Test the Web Forwardレポート
- 日本の開発者へのエール、HTML5標準化貢献への期待を語る〜W3C Developer Meetup - Tokyo 2013レポート
- アドビの終了したサービスは別の形で生かされる
- Google I/Oでユーザーに優しいモバイルアプリの条件を考えた
- JavaScriptのテストを開発工数に入れてもらうには?
- WebSocketでスマートテレビをリアル接続するぷらら
- 高速軽量なフレームワーク、FuelPHPって何?
- HTML5に本腰を入れ始めた任天堂―GDCで見えてきたゲームビジネスのゆくえ
- ビギナー向けデバッグツールで効率的に開発しよう
- さまざまなデバイスがWebと結び付いていく
- オフラインWebの活路はモバイルアプリにある
- ケータイ王国日本、復活の狼煙となるか? 世界最大の携帯電話見本市
- なぜ「enchantMOON」を、どうやって作ったのか?
- 九州で開催された、2つのHTML5のお祭り
- Webサイト高速化のプロセスだって自動化したい
- LEGOのロボットから全方位ビデオカメラまで CESで見付けたオモシロガジェット
- 2013年、Webがこうなったら面白い
- Chrome Tech Talk Night #4に行ってきたよ!
- Maker達のお祭りがやってきた! Maker Faire Tokyo 2012
- Coda 2かSublime Text 2か。あなたはどちらのエディタ派?
- ロボットも日本の国技に! 25年目の高専ロボコン
- FlashPlayerを自作するSWF研究会
- これからが本番、Windows 8アプリ開発
- 「TechCrunch Tokyo2012×MA8」まとめレポート
- ユーザーを魅了するUIはまぐれでは生まれない
- プログラムを「どや!」と発表し合う、明治大学アブノーマルプログラミング
- Flashゲームのパフォーマンス解析ツールMonocleとは?
- Web制作の現場で培ったノウハウを一挙に共有
- グリーの最新ソーシャルアプリ開発フレームワーク
- 自分の時間にテクノロジで遊ぼう!〜Make:Ogaki Meeting 2012レポート
- PhoneGap、新しいCSS開発、jQueryのコミットまで〜アドビインタビュー:モバイル系エンジニアがアドビシステムズのHTML5戦略を聞く
- 表示が速過ぎても、誰も文句は言いません〜CSS Nite「表示速度最適化」レポート
Copyright © ITmedia, Inc. All Rights Reserved.