スマホネイティブゲーム 開発効率改善
description
Transcript of スマホネイティブゲーム 開発効率改善
![Page 1: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/1.jpg)
スマホネイティブゲーム開発効率改善
株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部ゲーム開発四部第一グループ
エンジニア 佐藤 和尊
![Page 2: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/2.jpg)
自己紹介エンジニア 佐藤 和尊(31)
経歴
- 学生時代にゲーム会社でアルバイト
- 組み込みエンジニアで就職
- PC オンラインゲーム・スマフォソーシャルゲーム・ PC ブラウザゲーム
- 現在は、スマートフォンゲーム開発をしています。
![Page 3: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/3.jpg)
はじめに
市場の流れをみても
・アプリ開発の開発規模や工数が増えている
・クオリティを上げるための要素も増えている
→力技でやっていると、
開発の本質部分に集中できない!
![Page 4: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/4.jpg)
効率化が必要!
お家帰れなくなりますしね
![Page 5: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/5.jpg)
直近携わっているプロジェクトの事例
今自分がリードエンジニアをやってるプロジェクト
![Page 6: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/6.jpg)
採用技術
● C++, Ruby (Java, Objective-C)● cocos2dx ● Sprite Studio● Texture Packer● CocosBuilder● TiledMapEditor● Jenkins、github タイトルに合ったソリューションを
比較検証して決めてます。
![Page 7: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/7.jpg)
メンバー構成
エンジニア
5〜10人(ゲームロジック、UI、ライブラリなど
企画
2 〜 4 人 (企画書・レベルデザイン・サウンドなど
デザイナー
3 〜 4 人 ( UI、エフェクト、絵素材作成など
※ 人数は、プロジェクトの進行具合で変化
![Page 8: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/8.jpg)
まずは
![Page 9: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/9.jpg)
ビルド速度の向上
![Page 10: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/10.jpg)
ビルド速度の向上
C++ での開発でビルド時間を短縮は、
とても重要です
結論から言いますと・・・
![Page 11: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/11.jpg)
ビルド時間が
10分から3分
まで短縮されてます
![Page 12: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/12.jpg)
一番効果てきめんなのは
![Page 13: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/13.jpg)
今すぐ良いマシンに
交換しましょう!
![Page 14: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/14.jpg)
UNITE JAPAN2014 ドラクエ 8 の話でも
> 結局もっとも効果のあった対策は、いい Macを買うことだったとのこと(笑)
http://app.famitsu.com/20140407_350527/
やっぱりそうですよね
![Page 15: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/15.jpg)
こういう人が多かった
![Page 16: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/16.jpg)
Mac Book Air or Pro
・Web エンジニアからアプリに転向している人が多い
・サーバー・クライアント兼任している人が多い
・運営中は何かと持ち運び便利な ノート PC が便利
![Page 17: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/17.jpg)
最近の開発は
・開発規模も大きくなってきた
→開発期間長くなった
・モジュール肥大化
→ビルド時間が長くなった
みんなこれを機会にマシン変えよう!
![Page 18: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/18.jpg)
人気のマシンは iMac
![Page 19: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/19.jpg)
ビルドサーバー
・TestFlight のようなしくみを、社内で構築しています。
・各アプリのビルドは Jenkins でやってます
・Jenkins は他タイトルとシェアしている
ビルドが込み入ってる時の待ち時間は、
ディズニーランドのアトラクション並です
![Page 20: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/20.jpg)
待っていられない!
![Page 21: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/21.jpg)
Mac Pro 買ってもらった
![Page 22: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/22.jpg)
めっちゃ早くなった
「ビルド始まったら、ひと休憩でコーヒーでも飲むかと・・・思ってたけど、できなくなりましたね」
C++ 使ってきた人でしたら、
このようなご経験あるのではないでしょうか
![Page 23: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/23.jpg)
マシンを変えても遅いなら
xcode の設定確認する
![Page 24: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/24.jpg)
設定や実装で高速化する
・ヘッダの依存関係減らす(PImpl とか)
・プリコンパイルヘッダー
・不要なヘッダ・ライブラリを含めない
・.dSYM の削除
こまごま努力できることはあります。
![Page 25: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/25.jpg)
思ってること
ほんとは分散ビルドできるといいんですが
![Page 26: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/26.jpg)
スクリプト
![Page 27: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/27.jpg)
スクリプト実行 窓口一本化
make をスクリプト実行の窓口に。
どのディレクトリで実行すればよかったっけ・・・などの問題がなくなる。
あとで、jenkins 化するときも便利
![Page 28: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/28.jpg)
こんな感じ
make help でコマンド一覧・説明も出ます。
![Page 29: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/29.jpg)
データ作成の自動化
![Page 30: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/30.jpg)
何も工夫してないと・・・
「エフェクト作りました。確認したいので、
取り込んでビルド作ってください」
「絵素材調整したので、実機で見え方を
確認したいです! ビルド作ってください」
![Page 31: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/31.jpg)
データ反映作業に追われてしまいます!
![Page 32: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/32.jpg)
データ作成者がデータの完成までの作業を完結
![Page 33: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/33.jpg)
でも
エンジニア以外の職種の人が、
スクリプトやツールの使い方を覚えるのは大変
そこで・・・
![Page 34: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/34.jpg)
とりあえず Jenkins で実行できるようにしとこうという風潮
![Page 35: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/35.jpg)
企画・デザイナー
デザイナー 作ったエフェクト・絵素材データを
Jenkins から反映
企画 レベルデザインデータの反映をJenkins で ビルドを作って確認できるところまで。
![Page 36: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/36.jpg)
ビルド
ビルドも、エンジニア以外が作成できる。
プランナー
レベルデザイン変更→ 実機で試す
デザイナー
エフェクト反映 → 実機で試す
ということも可能
![Page 37: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/37.jpg)
こんな感じ
![Page 38: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/38.jpg)
データ反映 は pull request へ
※ エンジニアが問題ないか確認して merge
![Page 39: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/39.jpg)
安定化
![Page 40: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/40.jpg)
jenkins と Xcode
![Page 41: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/41.jpg)
定期ビルド実行
普段は XCode で開発している。
定期ビルドすることで、
- Android のビルドエラーにすぐ気づける- 他のビルドターゲットに問題でていないか
(デバッグ、リリース、マスタービルド) など
![Page 42: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/42.jpg)
XCode の機能で安定化
Leaks メモリリークの発見
Xcode OpenGL ES Tools パフォーマンス・チューニング
Analyze 静的解析。うっかりミスはこれで阻止
![Page 43: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/43.jpg)
タスク管理
![Page 44: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/44.jpg)
目標管理大目標 α、β、リリース のマイルストン
中目標 週次目標の達成
小目標 1日の作業の進捗確認 ※ホントはもっと細かいけど
![Page 45: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/45.jpg)
週次目標がカギ
![Page 46: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/46.jpg)
なぜか?
1日、n ヶ月レベルではブレる
→週次目標の達成を大事にしている
週次目標を守ることで、
n ヶ月の目標も守れる・・・と信じている。
![Page 47: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/47.jpg)
取り組み
・朝会 (15分以内)
週次目標達成のための、毎日の調整
・エンジニア週次定例(1h) 進捗確認・問題点の確認
・プロジェクト週次定例(1h) - 動作するビルドで確認
- 残り工数とベロシティの確認も行う
![Page 48: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/48.jpg)
実作業に集中するためミーティング時間を
意識して減らしています
開発に時間をかけないといいものができあがらない
![Page 49: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/49.jpg)
ただしアウトプットの確認は大事に
週次ビルド作成
一週間の開発がすべて反映された、
確実に動くビルドを作る時間を設けています
週次ビルドの動作確認
チーム内で実際にプレイしての意見交換・問題点の把握を行ってます
※どんなに忙しくても全員プレイする!
![Page 50: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/50.jpg)
タスク管理のツール
![Page 51: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/51.jpg)
主に使っているのは
・google スプレッドシート
・github issue・JIRA・Confluence (wiki)
![Page 52: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/52.jpg)
google スプレッドシート
・プロジェクト全体スケジュール・企画要件列挙(プロダクトバックログ)・エンジニアタスク列挙・エンジニアガント
いろいろ考えたけど、職種・部署問わず誰でも使えて、情報シェアする時に、URL をシェアするだけで良いので便利。
タスク管理専用ツールでないので、手の込んだ資料は作らない
![Page 53: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/53.jpg)
github issueエンジニアの抱えている細かい問題はここにすべて書いておく
![Page 54: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/54.jpg)
JIRA
QA は 品質管理部が担当。
品質管理部から起票してもらう不具合は
すべて JIRA で管理。
QA に入る前に、github issue はすべてクローズ(移行)する。
![Page 55: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/55.jpg)
Confluence
プロジェクトに関わる
すべてのドキュメントへのリンクを置く
他にも、
・開発ドキュメント、議事録、メモ、
なんでもここへ。
![Page 56: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/56.jpg)
他にも
![Page 57: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/57.jpg)
日々工夫している
github・pullreq によるソースコードレビュー
comm ( チャットアプリ ) LINE でもいいよ
・決定権のある上司とすぐ連絡がつく
大臣制
・難しい案件は大臣を立てる(iOS8 大臣とか)
![Page 58: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/58.jpg)
あとは
![Page 59: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/59.jpg)
みんなで遊ぶ
・バーベキュー
・チームメイトの家でマリオカート8
・ボルダリング
・美味しいものを食べに行く
・深夜焼き肉からの徹夜カラオケ
仲良いとチームワークも良くなる!
![Page 60: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/60.jpg)
他のソリューションからヒントを得る
・Visual Studio での 開発
・Unity ・組み込み開発
・Web 開発
・PC ゲーム開発
・スクラム などなど。
そのまま導入するのではなく、チームに合った方法で
![Page 61: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/61.jpg)
まとめ
![Page 62: スマホネイティブゲーム 開発効率改善](https://reader033.fdocuments.net/reader033/viewer/2022052218/559198b91a28abcc668b475f/html5/thumbnails/62.jpg)
大事なのは
面倒と思ったら、効率化を検討しよう!
実施するかの判断基準
- 工数対効果
- ゲームのクオリティに直結するか
- 喜ぶ人がいるなら良いじゃないか