LINE Engineering
Blog
Agile2017参加レポート
LINEのSET(Software Engineer in Test)です。LINEプラットフォームのテスト自動化の戦略立案・実施・推進を担当しています。
こんにちは。LINEのSET(Software Engineer in Test)のItoです。
世界最大のアジャイルのカンファレンス「Agile2017」に参加してきました。 今年は8月7日から11日にかけて、アメリカのフロリダ州オーランドで開催されました。
この記事では、LINEでのSETの仕事と関連付けて、以下の観点からこのカンファレンスをご紹介します。
SlideShareにも参加レポート資料を公開していますので、よろしければこちらもご覧ください。
『アジャイルサムライ−達人開発者への道−』の著者として日本でもおなじみの、Jonathan Rasmussonさんによるセッション 『7 Sources of Waste in Automated Testing and How To Avoid Them』 が、テスト自動化の進め方と注意点を考えるうえで非常に有益でした。
テスト自動化を進める際には、技術的側面と文化的側面から、特に次の7つの点に注目して改善を進めると良いとのことでした。
技術的側面
文化的側面
自動テストが遅くなると、結果(フィードバック)をすぐに得られなくなるため、開発者やQAがテスト自動化を辞めてしまうきっかけになる恐れがあります。
テストには、実行時間の長いものと短いものがあります。テストの性質に応じて、以下のような方針のもとにテストを設計すると良いとのことです。
スローテストの解決方針を考えるうえでは、以下の「テスト自動化ピラミッド」が役に立つとのことでした。
LINEのSETは、自動テストの実行スピードをモニタリングしており、必要に応じて速度向上のための改善を行なっています。
実行するたびに結果が異なるテストは、フィードバックの質を下げてしまいます。
特にテストの量が多い場合、信頼性の低さは致命的な欠陥となり得ます。テスト自動化を進めるにあたっては、当てにならないテストを早期に発見・修正し、削除する必要があります。
プロダクト・サービスの開発初期は、UIが頻繁に変わり得ます。そのため、UIテストを早期に作り込み過ぎると、上述の「当てにならないテスト」になり、修正頻度が高くなってしまいます。したがって、テスト自動化を進めるにあたっては、ROIを考慮しながら、ある程度UIが安定してからUIテストを実装・充実させると良いです。
例えば、チームメンバーやステークホルダーの間で「結合テスト」という用語の定義がみな違っていた、という経験はないでしょうか?テストに関する共通の語彙や観点をあらかじめ用意することで、こうした認識のズレを防ぎ、共通認識を作り上げると、テスト自動化の推進に寄与します。
LINEのSETおよびQAは、テストに関する語彙や観点を、「ISTQB」および「JSTQB」に準拠するようにしています。
リファクタリングやテストの観点に関する知識が不足していると、テストスクリプトのコピーアンドペーストによる重複が増え、結果としてテストスクリプトの保守性が損なわれる恐れがあります。この課題を解決するには、コードの可読性を高める施策をすると良いです。ペアプログラミングやモブプログラミングを採用すると、コードの可読性を高めるのに役立ちます。
LINEでは、静的コード解析ツールの活用を広め、技術的負債になり得るコードの重複箇所やバグを発生させる箇所の早期検知および修正を進めています。
開発者とQAがサイロ化してしまうと、お互いの情報交流がなくなり、結果課題の解決スピードが遅くなってしまいます。そのため、開発者とQAを同じチームにしたり、システム環境を分けずに共用したりすると良いとのことです。
LINEのSETは、このサイロをなくすための情報共有の仕組みづくりや、開発者とQAとが協力し合いながらプロダクトを改善していくプロセスの構築もミッションとしています。
全ての観点・機能をテストすることと、テストの実行スピードを高めることとの間には、トレードオフが成立します。各サービス・プロダクトに適合した、テストの観点と実行スピードとのバランスを見つけることが肝要です。
以上の7つの点に加えて、Jonathanさんは、勤務先であるSpotifyで以下の取り組みを行なっているそうです。
確かに、上述の7つの点を解決する内容になっていますね。このセッションで得たものは、今のLINEのSET活動でも大いに活用しています。
なお、このセッションの内容をより詳しく知りたい方は、Jonathanさんの最新の著書『The Way of the Web Tester』、およびその日本語翻訳版の『初めての自動テスト ―Webシステムのための自動テスト基礎』を一読されることをおすすめします。
Peter Kananenさんによるメトリクスのワークショップ『Hands-On Flow Metrics』は、メトリクスの取得対象と活用方法を再考する意味で興味深かったです。
たとえば、スクラムでは「バーンダウンチャート」や「ベロシティ」といったメトリクスを使用することが多いです。しかしこれらは、ある一時点のスナップショット情報としては有益ですが、そこに至る過程で何が起きたのかを検知して対策を打つための情報としては不足があります。そこでPeterさんは、以下のフローに関するメトリクスにも注意を向けるべきと説きます。
ワークショップではこれらのフローに関するメトリクスを深く理解できるように、Peterさん作成のかんばんシミュレータ(上の図を参照)を使って、どのようなアクションを取れば上述のメトリクスを改善できるかを実験しました。
ちなみにこのシミュレータは、作者のPeterさんのご好意により、日本でも自由に使用して良いとのことです。
このシミュレータ自体が、スクラムやかんばんの理解を深めるうえで非常に有益です。アジャイルを実践されている皆さんには、ぜひとも試していただきたいです。また、スループットをお金(売上・利益)で算出している点も興味深いです。
LINEのSETとしては、コードカバレッジや静的コード解析の結果といったスナップショット情報だけではなく、以下のフローに関するメトリクスにも目を向け、会社の売上と利益に貢献するためのテスト自動化の導入・改善を進めています。
Agile2017は、多くの国際的に著名な会社による、アジャイルに関する生々しい現場事例を聞くことができるチャンスでもあります。今回のカンファレンスでも多くの事例を聞くことができましたが、その中からSpotifyとHunter Industriesの2社の事例について紹介します。
『カンバン仕事術 -チームではじめる見える化と改善』の著者のJoakim Sundénさんとその同僚のCatherine Peck-Phillipsさんによる『You can do better than the Spotify Model』は、会社の急激な成長で発生した課題とその解決策を紹介するセッションで、非常に示唆に富むものでした。
Spotifyは、多くの著名なアジャイルコーチが集う会社としても有名で、自社のアジャイルのアプローチを「The Spotify Model」と称して公開しています。
そんなSpotifyでも近年、以下のような課題が見受けられるようになってきたそうです。
これらの原因としては、会社が急激に成長して、わずか4年で社員が1,600名も増加したため、新入社員たちを迅速に会社に適応させきれていないことが大きいそうです。
そこで現在取り組んでいる解決策が、「The Spotify Model + ? = Profit」という「公式」とのことでした。
この「公式」の意味は、以下のとおりです。
自分たちがこれまで築いてきた技術・文化をベースとしつつ、それぞれの現場に即した解決策を見つけ、そしてそれを売上・利益にまでつなげることを念頭に置いて行動する。「でもやるんだよ!」という姿勢に、共感を覚えました。
LINEのSETの活動指針としても、これまで築き上げてきたものを尊重すること、サービス・プロダクトに応じた解決策を見つけること、そして売上・利益につなげる施策を実施することの3点を重要視しています。
Hunter Industriesは、ゴルフ場などのスプリンクラーの製造で、アメリカで80%以上のシェアを占める会社です。しかし我々IT業界においては、「モブプログラミング」の発祥の地として、近年急速に注目を集めています。
そのHunter Industriesのキーパーソンの1人、Chris Lucianさんによるセッション『How we grew Mob Programming, preserved culture, and maintained quality』は、単にモブプログラミングという手法の新規性だけに限らず、テスト自動化をベースとした技術優位の確立の重要性も強調されていて、非常に刺激的な内容でした(詳しくは、Chrisさんのこのセッションに関する論文「Growing the Mob」をご覧ください)。
Hunter IndustriesもSpotifyと同様に、チームメンバーが5名から30名に急増し、新入社員たちをいかに迅速に会社・モブプログラミングに適応させるかが大きな課題とのことでした。それに対するChrisさんのアプローチは、技術優位をベースとしながら、毎月2名のペースで少しずつメンバーを育成していくというものでした。
Chrisさんのチームにおける「技術優位」とは、具体的に以下のものを指します。
いずれも、地道な活動の積み重ねですね。
Chrisさんのチームがすごいのは、この技術優位をベースとしながら、さらに以下を実践していることです。
実際にその成果として、ここ5年間一切バグを出していないそうです。
モブプログラミングは手法の新規性につい目が行きがちですが、その本質は上記の施策群の集積にあります。これらの施作群を着実に実行していくため、技術優位というベースをしっかりと確立していくことが重要であると、心を新たにした次第です。
私はこのカンファレンスの一連のセッションから、次の3点を持ち帰り、実務に活かしています。
Hunter IndustriesのChrisさんのモブプログラミングによる改善は、詰まるところ、技術優位・技術基盤をベースとした、地道な改善活動の積み重ねでした。
技術優位を確立したうえで、シンプルさを追求し続けること、そしてトライアルアンドエラーの繰り返しによる継続的な改善を行うこと。
同様のアイデアが、LINEにおける仕事の仕方と価値基準とを定義した「LINE STYLE」の一要素「SPEED -Survival of the fast」にも、以下のように明記されています。
私たちはこれまで、愚直に、泥臭く、このトライアンドエラーを何百回、何千回と繰り返し、ユーザーと共にサービスを磨き上げてきました。
世に出す速さ、改善する速さ、一つところに留まらず、絶えず変化し続ける速さ、それこそが、私たちの競争力です。
私は上記のアイデアをベースに、SETとしてテスト自動化を推し進めるために、特に以下の点に注力しています。
テスト自動化を含む改善活動は、終わりのないマラソンであるともいえます。その道のりを、いかにシンプルかつイノベーティブに進めるようにするか?これが、私の直近の狙いでもあります。
Spotifyにおける各種施策は、技術的側面だけではなく、組織文化の側面からもメスを入れているものが目につきました。
国内・国外問わず、「アジャイル」は「アジャイル開発」または「アジャイルソフトウェア開発」と表現されがちです。しかし、開発手法の一種と表現してしまうと、技術的側面だけに目が向き、改善のための選択肢を狭めかねません。根本的課題を発見し、組織全体の改善を持続的に行なっていくためには、時にはプロダクト開発の阻害要因となり、また時にはそれらを克服する鍵ともなる、組織文化の面にも配慮が必要です。
先述の 「LINE STYLE」 も、組織文化の面からの継続的改善を念頭に置いて策定されたものといえます。
文化の側面からの改善活動としては、以下のことを実践しています。
Spotifyの「The Spotify Model + ? = Profit」は、明確に会社の利益に寄与することを目指したものでした。またPeter Kananenさんのかんばんシミュレータでは、スループットの単位が金額(売上・利益)となっていました。
今日においても、アジャイルの各種プラクティスやテスト自動化は、開発の楽しさ・快適さや開発生産性の向上といった観点・目標から語られることが多いです。楽をすること・楽しむことは美徳ですから、この視点自体は重要です。 その一方で、開発の楽しさだけを追求し過ぎてプロダクト開発に失敗してしまったり、開発生産性向上の目的を明確にしないままアジャイルを導入したためにメンバーが疲弊してしまったりという事例も、これまで多く目にしてきました。
プロダクト開発の当事者として振る舞うのであれば、売上・利益に寄与する視点を持って行動することは有益です。なぜならば、売上・利益はお客様に対する貢献の数値化であり、プロダクト開発を継続的に成功させていくための礎となるからです。
売上・利益といった金銭情報をメトリクスとし、それに対する寄与を明確に動機づけることは、プロダクト開発の質を向上させると考えます。
LINEでのテスト自動化の施策も、この方針を反映しています。具体的には、以下のことを実践しています。
さて、このアジャイルカンファレンスですが、その名前が示すとおり、毎年開催されています。来年も、アメリカのカリフォルニア州サンディエゴで、「Agile2018」が開催されます。
このカンファレンスでは、普通に各セッションに参加するだけではなく、登壇の機会も広く開かれています。登壇に関しては、2017年12月初旬頃に、セッションの公募が開始されます。セッションの種類によって応募方法が少し異なりますが、一般的には、6〜8ページの論文を執筆し投稿することになります。私も2014年に「Technology-Driven Development: Using Automation and Development Techniques to Grow an Agile Culture」を執筆・投稿し、採択されて登壇することができました。
このカンファレンスは、世界中からアジャイルに関する著名人や実践者約2,500人が一堂に会する、世界の最新の情報と有識者に接することのできる非常に良い機会です。カンファレンスに参加するだけでもプラスになりますし、登壇すればさらに多くの経験と世界中の仲間を得ることができます。
皆さんも、この機会を利用されてみてはいかがでしょうか?
LINEでは、エンジニアであれば誰でも海外カンファレンスに年1回参加できる制度が存在するため、このブログでは参加者による参加レポートが定期的にアップされています。是非ご覧になってください。
またLINEでは、SETを絶賛募集中です。一緒にLINEプラットフォームのテスト自動化を進めてみたい!という方がいらっしゃいましたら、是非以下のフォームからご応募ください。
ソフトウェアエンジニアインテスト(Software Engineer in Test (SET))【LINEプラットフォーム】
皆さんの応募、心よりお待ちしております。
LINEのSET(Software Engineer in Test)です。LINEプラットフォームのテスト自動化の戦略立案・実施・推進を担当しています。