高信頼性ソフトウェアエンジニアリング研究会 bashです。
ピクシブでは、何を実現すべきかの探索から、設計・実装・テスト・リリース、そしてフィードバックを得て再考するというすべてのアクションをプロダクトチームで包括的に担当する、いわゆるフルサイクル開発の文化が根付いています。
プロダクトチームで共通的に必要になる様々な関心事は、技術互助会と総称される社内コミュニティ的な集まりがあり、それぞれ興味のあるメンバーが自発的に集まって定期的に交流しています。
今日はその中のひとつ、ソフトウェア品質・テストに関する技術互助会「t-software-quality」活動を知ってもらおうと考え、この活動のキーパーソンであるkumaとpnlyの2名にインタビューしました。
自己紹介をお願いします
kuma 2020年4月にエンジニア職で新卒入社しました。pixiv.netの小説機能開発を行った後、現在はpixivFANBOXの開発を行っています。新卒1年目のときに #t-software-quality での活動に参加し、現在はソフトウェア品質に関わる読書会の主催をやっています。
pnly 2019年に新卒でエンジニアとして入社しました。pixivのWebフロントエンドの開発をメインに行っております。最近はデザインガイドラインなど横断的なプロジェクトに参加し、多数のプロダクトの基盤となるライブラリの品質向上に取り組んでおります。
この活動の成り立ち
kuma この活動に入ったのは、入社時のOJTメンターが誘ってくれたのがきっかけでした。 もともとは、かつて社内で熱心にテストを啓蒙してくれていたshimashima先輩が当初立ち上げたと聞き及んでます。
読書会参加や担当プロダクトでのテスト実務などをとくに熱心に取り組んでいたということで、引き継いでもらいたいよとオファーをいただきました。 品質やテストについて議論する文化が成り立ちはじめており、途絶えるともったいないと思ったので、勇気を出してバトンを受け取り、意思を継ぐことに決めました。 それ以来、皆でテスト技法を学んだり、業務で応用したりといった活動をしており、t-software-qualityの主宰的な立ち位置を務めています。
pnly 当時、社外ステークホルダーが強く関わるプロジェクトを担当していて、社外システムとも密な連携が必要でした。そのため入念な対策とテストがキーポイントだったのですが、自分のメインスキルは実装面が中心でテストについては手薄だったので、体系的に学ぶ必要を強く感じていました。 そういった中で、自分の仕事でその先輩に様々なことを教わっており、この活動も紹介いただいて、読書会にも参加しはじめました。
やってきた活動
kuma かつての活動についてはこのあたりのinside記事がわかりやすいと思います。
inside.pixiv.blog inside.pixiv.blog
最近は読書会を毎週行っていて、FigJamで付箋をはりながら読んでディスカッションしています。
こういうこともあろうかとログを大事に社内のesa*1に残していました。
題材としては「知識ゼロから学ぶソフトウェアテスト」をちょうど完走したところで、次は「テスト駆動開発」を扱っていきます。
www.shoeisha.co.jp shop.ohmsha.co.jp
pnly この本について社内のベテランエンジニアからは、かつて絶版になって一時期手に入らなくなって辛かったけど、オーム社からt_wadaさん翻訳で再販されるようになって本当によかったという思い出話をきいてます。
読書会スタイルのアップデート
kuma 読書会はもともとは隔週で一時間開催でした。みっちり学べるものの気合とタスク調整が結構なことになるので、毎週30分に刻んで短く集中する運用に変更しました。 また、当初は予習が必要なハードコアな講習スタイルだったのですが、参加の敷居を下げて間口を広げたいという思いから、その場で15分間黙読してディスカッションするというカジュアルスタイルにして、テストや品質分野に詳しくないメンバーも入りやすくしてみました。
pnly いきなり飛び込みで当日参加できるメリットもありますね。今日からどうぞ!って。読書会途中でメンバーも増えています。途中で不参加の回ができたとしてもキャッチアップしやすいところもカジュアルと思います。 メンバー数は3名程度だったのが、最近は6,7名がコンスタントに参加するようになって、この互助会としての成長を感じています。
kuma 参加者にはFigJamに「読んでる最中に思ったこと、考えたこと」を貼っておいてもらって、ファシリテーターである私がそれをもとに話を振りながら進めていくスタイルを取りました。これを行うことで、いきなり「さあ感想をどうぞ」とやるよりも話し始めやすい雰囲気ができたのではないかと思います。
pnly 読書会から想像以上の学びを得ています。用語レベルからきちんと理解を深められています。用語同士のコンテキストや、技法が生まれた背景などが学べて、きちんと使えるかたちで自分のものにできています。 いまは検索すれば何らかのソリューション情報はたしかに得ることができます。ただ、そのソリューションが今の課題に本当にフィットするものなのかは、ある程度程度体系的に学んで全容を掴んでおかないと評価できず、適切に使えないものというのを実感しています。
活動と実践のリンク
kuma 先だってリリースしたFANBOXの埋め込み機能強化でテスト技法が大活躍して、リリース以来安定した運用が実現できているとプロダクトマネージャもホクホク顔でした。 official.fanbox.cc
一見シンプルにみえるかもしれませんが、実は内部的には複雑でした。代表的なものとしては、URLごとに適切なフォーマットで張り込むことや、言語設定に応じたAccept-Language切り替えなどが必要で、入念な設計と検証を進めました。
pnly 自分がコードを書く時もそうですが、チームでリードを取るときにも、物事をチームのみんなに伝えるフレームワークとしてテスト技法を活用しています。 例えば、考慮すべきパターンのバリエーションが豊富な場合に、みなで状態遷移図を書くことによって具体的な共通認識を作ることができました。テスト段階だけじゃないんだな、物事を着手するときにも使えて、意思疎通のツールとしてとても強いなと感動しました。
kuma 確かに。成果物に対してテストするための技術だけじゃないんですよね。自然言語のみでは読み取りきれないものに対しても、デシジョンテーブルを書いて理解したり整理・圧縮してシンプルにやりとりすることができました。品質とは開発時につくりこむものと教わってきましたが、まさにその通り。仕様策定など開発の初期段階から利用して、強いメリットを感じています。
また技法として、教えたり学んだりして伝達できるので、個人に依存しない考え方として再現性もってアプローチできるところも確かにフレームワークとして便利ですね。プロダクト開発はエンジニアだけで完結できるものではなく、プロダクトマネージャー、デザイナー、コミュニティマネージャーなど様々なバックグラウンドと個性を持った人たちと作っていきます。だからこそ、こういう技法を使って考慮点やプロダクトとして何を実現するしないの認識を揃えると強いですよね。
pnly t-software-qualityから学んだテストの自動化もとても役に立ちました。ユニットテストコードを書いてCIで回すことはピクシブではいつもの風景なんですが、他の部分の検証についても自動化にトライしてみたところ、何度も同じ条件で記録も残して再現させることができるというのは、実際に取り組んでみてその効果を強く実感しました。
kuma あっ、その知見吸いたいです。あとで教えてもらえますか。テスト技法中心に取り組んでいたので自動化はこれからなのでぜひ学ばせてください。
どういうメンバーがこの活動にくるといいとおもいますか?
kuma 今はエンジニア職が中心となって活動してるようにみえちゃうんですが、垣根取っ払いたいんですよね。職種問わずきてほしいですね。 プロダクトマネージャーやデザイナーなど、とくにプロダクトチームの中の各職種メンバーはみんな来ると良いと思うんですよ。裾野広げたいですね
pnly ソフトウェアテスト・ソフトウェア品質だからエンジニア職のものと早合点されてるところがあると思っています。 テスト技法はリスクやプロダクトの振る舞いの検討や分析に用いるべきものなので、多様なステークホルダーと座を囲みたいですね。
kuma また敷居低いことを知ってほしいですね。テストのこと知ってないといけないとか覚悟決めないといけないとかないので、作業用BGMとして気軽に片耳参加するぐらいからで来てほしいと思ってます。
pnly ぜんぜんその参加でいいですよね。そこから新しい単語を知ると世界が広がるんですよね。ゼロとイチは大違いですからね。 むしろ何も知らない状態で、全然予備知識とか不要で、何かをゼロから得るための場所として、新しいきっかけになるといいなと思います。
あとは新卒かな。
kuma 新卒研修のカリキュラムに私達のテスト研修を入れてもらおうと企んでいます。実務で便利だから学んでほしいというのもありますが、職種問わずほとんどの新卒メンバーは馴染みの薄い分野なので、逆にそういうものをみんなで学ぶという習慣を入社すぐから身につけるととても捗ると思っています。 目下、研修としてどうやったら面白くなるかなって練っているところです。
pnly 読書会を通じて読み進める中でいくつも衝撃をうけたところあるので、それを次の世代にも伝えたいなと思っています。
参加者募集中です!
社内の皆さんは t-software-quality Slackチャンネルにお入りください。
社外の皆さんは新卒・中途・アルバイトなど全方位でメンバー採用中ですので、ぜひエントリーください。 www.pixiv.co.jp
おまちしております!
*1:esa利用については https://gihyo.jp/lifestyle/serial/01/poem-driven や https://docs.esa.io/posts/256 をご参照ください