コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【GTMF2015】「テスト管理ツール「CAT」導入によるデバッグ管理の効率化とJenkins Enterpriseによるコンテンツパイプラインの改善」メモ

テスト管理ツール「CAT」導入によるデバッグ管理の効率化

エクセルの集計・分析に時間を浪費!

  • ファイルが破損すると目も当てられない事態に…

蓋を開けたら全然進んでいなかった!

  • デバッグ会社QA部隊
    • 報告コストを掛けるより、ちゃんとデバッグしよう!
    • 1日1回の進捗報告
      • 進捗遅延
  • ディレクター
    • 報告が上がってくるまで状況が見えない
  • デバッグ状況が見えづらいため、余計なコミュニケーションコストがかかっている

業界初!テスト専門会社が作ったテスト管理ツールCAT

  • シンプルな操作性
    • マウスクリックのみで結果を入力する、シンプルな操作性を実現
  • パワフルな進捗管理
    • テストの実行状況をリアルタイムにモニタリング可能
  • 使いやすいテスト設計
    • 慣れ親しんだ操作性をブラウザ上に実現
  • 各種開発ツールとのシームレスな連携
    • 課題管理はJIRAやRedmineで、テスト管理はCATという使い分けが可能
  • テスト実行と連携した障害管理機能
    • 障害登録時に必要な情報が補完され、自動的にデータが蓄積される
  • 豊富な分析機能
    • ソフトウェアの品質状況やメンバーの生産性を可視化

リアルタイムで情報共有

  • テスター
    • テスト結果
    • 不具合レポート
    • 課題
  • ディレクター
  • エンジニア
  • QAマネージャ
    • 進捗状況
    • 不具合管理
    • 課題管理
  • 素早く、正確に次の一手を打てる!!透明性100%!!

障害改修後の再テストもスムーズ

  • 障害報告時にテストケースを紐付けて登録
  • 影響項目の洗い出しが不要

管理コスト 30%~50%カット

  • 浮いた工数を何に使う?
    • 経験を活かしたフリーデバッグ
    • 新しい観点のテスト考察
    • ゲームバランスのチェック
    • メンバーの敎育
  • 同コストでさらに高い品質レベルを目指すことも可能
  • 2015年8月 トライアルサービス開始

Jenkins Enterpriseによるコンテンツパイプラインの改善

Enterprise CI Tool | CloudBees Continuous Integration

アジェンダ

  • CloudBees Jenkins Platform Enterprise Editionの紹介
  • シチュエーション別Enterprise Editionによる解決
    • 長いコンテンツパイプラインの記述と実行
    • JenkinsのマスターがSPOF
    • 複数のマスターでスレーブを共有

CloudBees Jenkins Platform Enterprise Editionの紹介

  • Enterprise Edition
    • 通常のオープンソースのJenkinsをベースに、CloudBees社によって管理・リリースされている有償版
    • CentOSとRedHat Enterprise Linuxのような関係
    • 中小チームのために機能限定したTeam Editionもあり
  • メリット
    • オープンソースのJenkinsの安定版をベースに、Enterprise Edition独自のプラグインを追加している
    • Jenkins本体と無償版とEnterprise Editionのプラグインの両方で、使用にあたってCloudBeesのサポートを受けることができる

長いコンテンツパイプラインの記述と実行

  • 問題
    • ゲーム業界でJenkinsを使う場合、長く複雑なビルドパイプラインやコンテンツパイプラインの記述が必要になる
  • OSS Jenkinsによる解決
    • Copy Artifactプラグイン、Parameterized Trigger Plugin、Conditional Build Stepプラグイン、Build Flow Pluginなどを組み合わせれば複雑なビルドパイプラインの記述は可能
      • ただし、見通しが非常に悪くなる
  • Enterprise Editionによる解決
    • Workflowプラグイン
      • 実はOSS版でも使える
      • Enterprise Editionではチェックポイントでのリラン、ステージの可視化が可能

ワークフローの記述例

stage `GameObjectExport`
node {
    parallel MeshExport: {
        build `MeshExport`
    }, GameObjectExport: {
        build `GameObjectExport`
    }
}

checkpoint `GameObjectExportFinished`

stage `AnimationTransform`
node {
    parallel SkeltonExport: {
        build `SkeltonExport`
    }, AnimationTransform: {
        build `AnimationTransform`
    }
}

WorkflowプラグインとWorkflow Stage Viewプラグイン

  • Workflowプラグイン
    • GroovyのDSLにより並列実行やチェックポイントを含む柔軟なビルドパイプラインの記述が可能
  • Workflow Stage Viewプラグイン
    • ステージごとの実行時間の可視化
    • チェックポイントからの再実行

JenkinsのマスターがSPOF

  • 問題
    • JenkinsのマスターがSPOFであるため、長く複雑なビルドパイプラインやコンテンツパイプラインの実行中に落ちてしまうと回復までのダメージが大きい
  • OSS Jenkinsによる解決
    • マスターはExecutorとはしない
    • マスターを分ける
      • 複数のマスターで同じジョブを実行したい場合にマスター管理が面倒
  • Enterprise Editionによる解決
    • High Availabilityプラグイン
      • Jenkinsマスターをアクティブ・スタンバイのHA構成に

フェイル・オーバーすると...

  • サービスが中断して、しばらくしたら、スタンバイ・ノードがサービスを引き継ぐ
  • 設定とビルドの履歴は残る
  • 人の介在は必要なし
  • 実行中のビルドは消失する

複数のマスターでスレーブを共有

  • 問題
    • ゲームタイトルごとにJenkinsマスターを立てているが、ステーブの稼働率向上のために、複数のタイトルでステーブを共有したい
  • OSS Jenkinsによる解決
    • 手動でスレーブの登録先マスターを切り替える
      • 毎回の手動切り替えが大変
  • Enterprise Editionによる解決
    • Operations on a cluster of masters with Cluster Ops
      • 複数のマスターで使用できるステーブを管理できる
      • 個々のマスターはどのスレーブを使うか判断しなくて良い

Kiuwanによる継続的コードインスペクション

自動コードインスペクションの課題

  • コードインスペクションツールの検出する欠陥はバグではなく、潜在的欠陥もしくは技術的負債
  • たくさんの欠陥を検出してくれるが、どこから着手して、どこまで直すべきかの定量的根拠が弱い
    • 結果、Jenkinsのジョブで自動実行するが、検出した欠陥は放置されることが多い
  • Kiuwan クラウド型コードインスペクションサービス

  • クラウド上で実施

    1. コードを分析する
    2. コードの品質を可視化する
    3. 品質モデルを管理する
    4. ポートフォリオ分析をする
  • コードを品質特性に基づいて数値化
  • 複数のソフトウェアのポートフォリオ分析
  • 簡単に開始できる
    1. コードを分析する
      • ローカルもしくはクラウドで
      • 開発のライフサイクルに統合できる
      • 通信は暗号化されている
      • 分析時間が速い
    2. コードの品質を可視化する
      • リスク
      • 欠陥
      • メトリクス
      • Technical debt
    3. 品質モデルを管理する
      • 独自のモデルを定義 or 既存モデルを利用
      • コードのベストプラクティスとメトリクス
      • ポートフォリオの定義
    4. ポートフォリオ分析をする
      • ポートフォリオ分析をしてアクションを決定
      • 複数のアプリケーションと時系列の分析
      • 修正に必要な工数とリソースを見積もり
  • C/C++を始め多数の言語に対応
    • Javascript
    • PHP
    • C?C++
    • Java
    • JSP
    • Cobol
    • Abap IV
    • C#
    • PL-SQL
    • SQL
    • VB6
    • VB.net
    • Hibernate
    • Android
  • Kiuwanによる自動コードインスペクションの改善
    • どこから直すの判断が容易
      • ベンチマークとなる製品と比較して劣っている品質特性に関係する欠陥から
      • 最も低い品質特性の重要度の高いものから
    • どれだけ直すの判断が容易
      • What ifで工数見積もり
    • どれだけ改善されたの判断が容易
      • 時系列と製品横断で品質改善を評価