HOME > 活動報告 > イベント報告 > JaSST'19 Niigata

イベント報告
 ソフトウェアテストシンポジウム 2019 新潟

2019年7月19日(金) 於 まちなかキャンパス長岡(新潟県長岡市)

ソフトウェアテストシンポジウム 2019 新潟

はじめに

今回で第9回目の開催となったJaSST新潟は、会場を新潟市から長岡市に移し開催した。
テーマは「効果的で効率的なレビュー」である。ソフトウェアを動かさずに行う「静的テスト」に位置付けられているレビュー技術を取り上げた。プログラムは基調講演および事例紹介2件で、レビュー技術の全体像からコードレビューまで実践的な情報を共有した。各講演資料は公式サイトにて公開されているので、あわせてご覧いただきたい。

本報告では、各セッションでの講演概要をお伝えする。

基調講演
「レビューのキキメ ~あなたのレビューは何のため?」
安達 賢二 氏(HBA)

講演の概要

基調講演では、レビュー技術の全体像について解説された。レビュー技術の体系的な解説に加え、安達氏がこれまで蓄積してきたレビューの問題点の解析結果から、それら技術を活用する上でどうすればキキメを得られるのかが語られた。

安達氏は冒頭に「レビューという活動は『レビュー』という範囲にとどまらないと思っている。日頃の業務のあちこちにレビューは存在する。例えば、承認依頼や同僚間での相談ごともそうである。ドキュメントに書かれていることを確認するだけがレビューではない。広く捉えたほうがよい。」として、レビュー技術はレビュー会だけで使うものではなく普段から意識して活用することが大切と意識付けした。

以下、講演の詳細を記す。

レビューのキキメとは

レビューのキキメとは「レビューにより起こる好ましい結果」である。好ましい結果を得るためにはレビューの終わりが、ぼんやりとしてはいけない。具体的なアクションが決まっていることが大切である。
「レビューが大切」とみんな言うが、教育が行なわれていない企業もあり、矛盾している。こういった状況ではキキメを得る素地が整備されていない。ぼんやりとレビューしてもキキメは得られない。

レビューの必要性と難しさ

レビューは何故必要か、「人間は"とちる"」からである。レビュー対象であるソフトウェアは目に見えないため、レビューの開始時点ではレビューアそれぞれが持つレビュー対象(ソフトウェア)への"イメージ"や"認識"が異なっている。「このドキュメントが対象とするシステムはどのような価値や機能を達成するものなのか」「このドキュメントはどのような位置づけか」といったようなことをレビューア間で一致させることが重要である。レビューア間でイメージを一致させ、レビュー対象をよく理解することでより有効な欠陥を検出することができる。また、検出した欠陥からレビュー対象を理解できることもある。レビューを実施する中で、レビュー対象の理解と欠陥検出は相互に行なわれていく性質を持っている。

レビューの活用、種類と注意

ソフトウェアの欠陥を見つけるためにレビューを活用する。レビューの利点は、欠陥を早期に検出し、修正できるということである。レビュータイプにはインスペクション・チームレビュー・ウォークスルー・ピアデスクチェック・パスアラウンド・アドホックレビューなどがある。また、リーディング技法もあり、それらを組み合わせることが必要である。このとき、レビュー関係者の人間特性を考慮しながら、レビュー設計を行なうことが大切である。レビューは、レビュー会が始まる前に勝負は決まってしまう。単なる資料読み合わせ会では、レビューのキキメは得られない。

レビューのキキメを得るには

レビューのキキメを得るためには次のことが必要である。

  1. むやみにレビューしない
  2. ぼんやりレビューを行わない
  3. レビューをやりっぱなしにしない

レビュー対象の品質が悪いとレビューの品質や効率が下がるため、むやみにレビューしないことが重要。また、目的(観点)を定めてレビューしないと、より重要度の高い欠陥を見つけることはできない。レビューで検出した欠陥や、レビューコメントはそのままにせず、確実にフォローすることが重要である。そうしないと、欠陥の摘出などの結果が得られなくなってしまう。

レビューを行なう上では次のことを考慮すると良い。

  • レビュー対象のリスクを考慮してアプローチを変える
  • 人間に着目する。例えばD2BOCs法(事例:作成者の認知バイアスに着目したレビュー手法)というものがある
  • レビュー対象が作られたコンテキストからレビューの仕方を変える
  • 集合でのレビューは、集合すべき時を見極める
  • レビュー対象物は必要に応じて再構成するのも良い、例えば状態遷移図をレビューア目線で作成すると見えるものが変わることもある
  • レビューに限らず、すぐに効率を追いたくなるが、まず効果を得られるようになってから効率を追う
  • レビューに関するメトリクスに捕らわれない。メトリクス設定は目的指向で決定する
  • レビューにも振り返りがある。きちんと刈り取る

レビューを改善したい場合、レビューに関する問題の構造や因果関係を捉えておかないと路頭に迷う。一般的に「改善」にかけられる工数は少ないことが多い。解消すべき問題をきちんと定め、目的を持って取り組むことが大切である。

さいごに:レビュー技術を身につけるためには

今日学んだことは、最低3回やってほしい。そうでないと身につかない。今日学んだことを実践した場合、一回目は成功する人もいれば失敗する人もいるかもしれない。失敗した人はそこでめげないことが大切。また、成功した人もたまたま成功したかもしれないので気を抜いてはいけない。3回くらい実践しないと本当の意味では身につかないので、是非継続的に取り組んでほしい。

質疑応答
Q:
何故統合テストやシステムテストで見つかるという想定のものは欠陥検出効果が高いのか。
A:
要求や高レベルな仕様に関する欠陥であることと、手戻りの大きさによるものである。
Q:
毎回同じ失敗をする人に対しては、どのような教育をしたらよいか。
A:
少なくともレビューの場に具体的な教育は持ち込まないほうがよい。
レビューのコメントを知見として共通のナレッジDBを作り、それをベースに教育を実施するとよい。
筆者感想

聴講者は終始熱心にペンを走らせ、ときに大きく頷いており、沢山の気付きが得られたようであった。
氏の講演からは「レビューをきちんと技術と捉え、そのうえで人間の特性を充分に考慮して、レビューを組み立てて行くべき」との主張を強く感じた。ともすればレビューは形式的な行事に陥ってしまうこともある。今回得られたノウハウ・知見・問題意識を今後のレビューの改善に生かしていきたい。

事例紹介
「エンタープライズシステムでのレビューによる品質向上」
石橋 宏之 氏(ジェイマックソフト)

講演の概要

ジェイマックソフトはエンタープライズ系のシステム・ソフト開発事業を行なっている。
本セッションでは品質を確保するための取り組みが紹介された。

以下、概要を記す。

ジェイマックソフトでは、開発における品質確保のために、教育、レビュー、テストの3つの観点を設け、施策を立てている。品質確保に取り組む理由は、品質が低いと顧客リリース後に何か問題が生じ、瑕疵責任が生じる可能性が高くなってしまうからである。来年の改正民法により請負契約における瑕疵担保責任が5年に延びることから、より品質が重要になってくる。

品質を確保することは大切であるが、過剰品質になってしまってはよくない。顧客から求められるままに合意したり、過去の合意事例をそのまま当てはめて合意したりするのではなく、受注側もその都度きちんと開発や検証の範囲、方法を検討して、そのうえで合意することが必要である。このとき、目が行きやすい機能要件に加えて非機能も重要である。IPAの「非機能要求グレード」などを参考に合意していくのがよい。

開発局面では、次のような取り組みを行なっている。

  • 開発プロセスはWモデルと自工程完結をベースにプロセスを構築し、レビューはインスペクションで行なっている。
  • 品質状況を監視していくために品質分析を実施している(初期分析、中間分析、最終分析)
  • 品質分析では、内容分析、予実分析、傾向分析、ゾーン分析、収束度分析、原因分析などを実施している

品質は結果では無く「作り上げるもの」である。皆さんにメッセージとしてお伝えしたい。

質疑応答
Q:
品質分析の際に、欠陥の原因工程のカウントや特定が難しい。安直なところにカウントしてしまいがちだが、そうならないように工夫していることがあれば教えて欲しい。
A:
個人の感覚に任せてしまうと、安直になりがちであると感じている。全体を集計し、その中身を分析することで、明らかな誤りなどは見えてくる。また分析傾向からヒアリングすることでさらに補正することもできる。
筆者感想

本事例では組織的な品質確保のためのノウハウが語られた。聴講者の多くは受託開発に取り組む企業に所属している人が多いようで、本事例は参考になるのではと思った。本事例では、ビジネス形態や自組織のあり方を考えながら施策を打ち、そこにレビューなどの技術がかみ合って、効果を生んでいる。レビューだけで無く他の技術や動向も視野に入れながらプロセスを構築していくことは大切である。レビュー技術(と周辺の技術)を組織に定着させるにあたり、本事例での取り組みは多くの人に参考になるのではと感じた。

事例紹介
「実践コードレビュー」
松井 正志 氏(ウォーターセル)

概要

ウォーターセル社では自社アプリを開発している。
本セッションでは、コードレビューに関する取り組みが紹介された。

以下、概要を記す。

ウォーターセルでは基本的に全てのコードはコードレビューしており、具体的には「プルリク」で実施している。
本セッションではコードレビューのメリットとデメリット、デメリットへの対応について紹介する。

まず、コードレビューについては次のような印象を感じている。

  • メリット
    • コードレビューのメリットは実装の時点でバグを発見できる
    • 可読性が向上する
    • 仕様や実装の属人化が防止できる
  • デメリット
    • 時間がかかる
    • 本質的なレビューが行なわれているとは限らない
    • 形骸化してしまう可能性がある

このデメリットへの対応であるが、ツールを活用しており、次のようなものを使っている。

  • Gitlab
  • Gitlab CI/CD
  • ChatWork

これらのツールによりコードレビューでのタスクやレビュー対象のチェックの自動化をはかっている。

  • レビュー通知
  • CIによるレビュー受け入れ対象チェック(壊れたコードはコミットできない)
  • コードフォーマット
  • 確認環境の構築

ただし、ツールだけでもいけない。レビューの際には「心構え」が大切である。レビューをされる側もする側も意識しておくと良い。

  • レビューされる側の心構え
    • プルリクには本文を書こう
    • レビューの範囲を明確にしよう
    • スクリーンショットを貼ろう
    • テストを書こう:実装した人がどこに気をつけてコードを書いたかがわかる
    • 適切な粒度で:原則として変更内容はひとつ
  • レビューする側の心構え
    • 自分のことは棚に上げる
    • 忖度しない
    • プルリクを読んでもわからないことは遠慮せず聞く
    • 指摘は具体的に:プルリクにプルリクを出すことも可
    • 堅すぎる姿勢で臨まない

コードレビューは品質確保に効果があるので積極的に取り組むと良い。また、レビューで得られる効果以外にも、さらなるチームワークの醸成など、良い効果も生んでおり、ウォーターセルではコードレビューは文化として定着している。

質疑応答
Q:
コードレビューの依頼相手の選び方に関する場作りはあるか
A:
特に気にしていない。コードレベルだと、だいたいこの人だと決まってしまう
Q:
プルリクが放置されてくることはないか
A:
全体的に、全員がお互いにレビューしあう文化があるので放置されることはない
Q:
レビューは対面か
A:
基本的にWEBで実施している。込み入ってきたら直接会話する。また、ペアプロなども実施している
Q:
レビュー結果は残るか
A:
プルリクに残る
Q:
一部の人にレビュー依頼が偏ることはないか
A:
重いレビューについては、レビューアのアサインをスクリプト化して平準化している
筆者感想

コードレビューによる品質確保も重要であるが、松井氏の講演からはむしろコードレビューを通じた心理的安全の醸成への取り組みではないかという感想を持った。コードレビューをいうツールを使い、お互いに意見しやすくする。プルリクの作成は相手への気遣いも必要で、それがコミュニケーションに良い効果を与えているように感じた。コードレビューというとツール面に関心が集まりがちだが、講演で紹介された心構えなど、人間の心理を大切にすると良いコードレビューが実現できるのではと、参考になった。

全体感想

筆者は新潟のソフトウェアテストシンポジウムには初めての参加であったが、参加者と実行委員の熱気に圧倒された。他地域とはまた違った形の地元密着な雰囲気の中、積極的な議論がなされ、それは情報交換会の時間があっという間に過ぎ去るくらいのことであった。これに刺激を受け、筆者もソフトウェアテストについての技術は勿論、素晴らしさなどを伝えていきたいと感じた。
来年はJaSST新潟として10回目の開催とのことである。この熱気を引き継ぐであろう来年の開催が大変楽しみである。

記:池田 暁 (ASTER)

[ページトップへ]