HDIfes#05「IT業界とゲーム業界、それぞれのDevOps」レポート

HDIfes【公式サイト】は「hcdvalue」(人間中心設計)、「Devlove」(開発)、IGDA日本(ゲーム)という3つのコミュニティによる分野横断勉強会です。2016年12月17日に開催された第5回勉強会では、「IT業界とゲーム業界、それぞれのDevOps」をテーマにヤフー株式会社の伊藤宏幸氏と株式会社Cygamesの松尾秀一郎氏が登壇し、各々の分野での課題と取り組みなどについて語りました。会場となったヤフーのセミナールームでは、それぞれのコミュニティに属する約40名の参加者が集まり、さまざまな交流が行われました。

ヤフー伊藤宏幸氏
Cygames松尾秀一郎氏

ウェブやクラウドに関する技術進化と共に、パッケージ(売り切り)モデルからサービス(運用)モデルに移行してきたIT/Web業界。顧客に対して日々、最善なサービスの提供が可能になりましたが、そのためには開発部門(Development)と運用部門(Operation)の連携が不可欠です。しかし「システムに価値を付加する」前者と「システムを安定稼働させる」後者では、組織文化が水と油であり、連携には組織文化の融合が欠かせません。DevOpsとはこうした問題意識から生まれてきた概念であり、定義が曖昧なのが実情で、現在もさまざまな議論が行われています。

その一方でゲーム業界でも、家庭用ゲーム機のネットワーク化やソーシャルゲームの市場拡大と共にDevOpsの概念や重要性が自然発生的に高まってきました。もっとも、ゲーム開発ではサービスの開発と運用にあたり、ゲームデザイナーやアーティストといった異業種間連携が不可欠で、エンジニア主導のWeb/IT業界とは状況が異なります。こうした現状をふまえて、伊藤氏はヤフー社内におけるDevOps推進の成功事例を紹介。松尾氏はゲーム業界の歴史を振り返りつつ、課題点と解決案について解説しました。本稿では伊藤氏の講演レポートをお届けします。

三団体による合同勉強会

トップダウンとボトムアップ、双方で進められた意識改革

日本でナンバー1インターネットプロバイダのヤフー株式会社。Yahoo! JAPANのトップページには、さまざまなサービスがならび、多くのユーザーに活用されています。もっとも、利用者のスマホシフトと共に、同社ではウェブサービスからスマホアプリへの移行を急速に進行中。あわせてCTOの藤門千明氏の号令一下、「技術面で世界的な企業になる」ための取り組みも行っています。伊藤氏もこうした方針のもと、アジャイルコーチ・自動化アーキテクトとして、現場のチームと共に開発プロセスの改善などを進めています。

講演では伊藤氏が一年前に携わったのが、ある社内コーチングの事例が共有されました。本案件では4チームが3プロジェクトの開発と運営を分担していましたが、そこでは自動テストがほとんど行われておらず、リリース時にはトラブルが続発し、個々人の技術力も低レベルに留まっていました。その背景にはフロントエンドとバックエンドが別々の組織で、互いがAPIエンジニアによって連携する縦割り構造となっており、協力関係がなかったこと。さらにはサービス自体が、ほぼ10年間テストなしで運用されており、レガシーコード満載の状態で放置されていた点などがありました。

このプロジェクトをサポートするにあたり、伊藤氏は「ただルールを自動化するだけでは、コーチ役が抜けてしまうと改善が止まってしまうため、自分たちで開発を自動化できるようにする」「その上で品質と生産性が高いチームにする」ことを目的に掲げたと言います。そこで立てられた方針が「基本に立ち返ること」。まず着手したのがユニットテストで、簡単なテスト用のスクリプトを書くと共に、テスト駆動開発のスタイルを浸透させていきました。コーチングにはフリーのクラウドサービス「cyber-dojo」の活用が有効だったと言います。

同時期にCTOから全社的に継続的インテグレーション(CI)を行う指示が出たことも福音でした。ユニットテストとCIを同時に行うことが可能になったからです。サンプルコードをコーチが現場のエンジニアに提示し、両者がペアプログラミングで環境設定を弄るなどして、コーチングが続けられました。また、それまで複雑だったオペレーション業務も、CIサーバを軸としたシンプルな構成に変更することに。伊藤氏は「CTOによるトップダウンの改革と、現場からのコーチングが組み合わさり、非常に高い効果が得られました」と振り返りました。

実際、わずか2ヶ月間のコーチングだけで、27のユニットテストを新たに作成し、10個のバグを発見し、3回もトラブルの未然防止に繋がったと言います。なお、この背景にはサービス開発にPHPが使用されていた点もありました。インタプリタ言語であるPHPでは、実際にリリースするまでライブラリの過不足が見知できず、トラブルの遠因にもつながっていたのです。この問題も自動化テストとCIを組み合わせることで、かなり改善できました。「ローカル環境を本番とほぼ同じにすることで、事前に環境系バグを見知して除去することが、以前よりはるかに簡単になりました(伊藤氏)」

他にPhakeフレームワークを導入した結果、それまで0.1%だった大型アップデートのテスト領域を80%に上げることにも成功するなど、大きな改善をみせた伊藤氏の取り組み。このように結果が客観的な数字で示された結果、チームの意識改革も進み、自発的にユニットテストを行ったり、CIのアイディアを提案したりするように成長し、当初の狙い通り「自走できるチームに育っていった」といいます。こうした経験から伊藤氏は「自動化の仕組みや技術基盤を整備することで、開発チームの成長促進が促せる」と指摘しました。

前述の通り、いまだハッキリした定義が存在しないDevOps。これに対して伊藤氏は最後に「全体最適化とプロセスの改善を、技術基盤をベースに行うこと」と自分の言葉で定義し、これらを活用することで組織文化の変化を進めている途上だと説明しました。その上で「テスト自動化とCIを組み合わせると非常に効率的」で、まずここから導入してみると良いのではと指摘。自分自身「常に改善、常に前進」をモットーに進めている最中で、皆さんもDevOpsで組織文化をゆすりながら、チームを成長させていって欲しいと締めくくりました。

参加者全員で記念撮影