SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
ネイティブゲーム開発
を支える
Jenkins
KLab株式会社 李 承益
使い方
を間違えた
Jenkins
● 李 承益(りちぇんい)
● 台湾人
● 2008日本上陸
● 大学院でOSの研究
● 2012新卒
自己紹介
● どんなプロジェクト?
● どうやって開発してる?
● Jenkinsをどんな風に酷使してる?
● それでみんなが幸せになった?
Jenkinsの間違った使い方
どんなプロジェクト?
● リッチな画面と演出!
○ アセットファイル
○ 画像
○ 音声
● マルチプラットフォーム!
○ iOS、Android
● クライアント・サーバ
スマートフォンゲーム
Unity?
Cocos2d?
どうやって開発してる?
_人人人人人人人人人人人_
> 突然の自社エンジン <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
● Lua
○ ゲームロジック
● マルチプラットフォーム対応
○ iOS、Android
○ Windows
● アセッツ周り→開発ツール
自社エンジン
開発ツール
● アセットの設計
○ UI、演出
○ テキスチャー配置
● 各PFの形式にPublish
○ 画像、音声データの圧縮
コードを書くことから、リリースまで
● コードを書く
● データを突っ込む
● 画像を突っ込む
● Windowsで動作確認する
● Publishする
● おもむろにMacにコピーする
● Xcodeを開いてコンパイルする
普通
● マスターデータとは
○ ゲーム中のあらゆるパラメータ
○ 100を超えるExcelシート!
○ 複数人・同時・分散作業!
● シート間の整合性を守ることが絶望的!
マスターデータのコピー地獄
マスターデータをGoogle Docsに置く
● Google Docs
○ 複数人で!同時に!同じファイルを編集できる!
○ そこにあるものを開けば常に最新!常に正である!
● Google Docsからの
マスターデータDLツールを作った!
問題
● クライアントとサーバ
○ レポジトリが分かれている
○ 両方への更新が必要
○ 両方が同じもの見ていることを保証したい
● git submodule導入
やりたいことはとても簡単
● マスターデータをダウンロード
● マスターデータのレポジトリを更新する
● クライアントとサーバのレポジトリを
更新する
● ただ面倒くさいだけ
git submoduleでのワークフロー
git fetch
git reset --hard
git clean -df
git checkout $BRANCH
git rebase origin/$BRANCH
git submodule foreach reset --hard
git submodule foreach clean -df
git submodule update
...
git submoduleでのワークフロー
● gitより複雑
● クライアントとサーバ、
片方漏れると問題がでる
● なんとなく怖い
Jenkinsのジョブを作った
git fetch
git reset --hard
git clean -df
git checkout $BRANCH
git rebase origin/$BRANCH
git submodule foreach reset --hard
git submodule foreach clean -df
git submodule update
...
結果
● ワンクリック
● 誰でも実行できる
○ 開発
○ 企画
○ J( 'ー`)し
● 実行結果がわかりやすい
その日から、
我々のJenkins依存が始まった…
自動ビルドもやってみよう!
● Windowsでpublish
● Macでビルド
● サーバー間のデータ転送どうしよう?
○ backlogも取っておきたい
○ publishデータのバージョンを選択可能にしたい
● とりあえず全部gitに突っ込む
さらに必要なものと要らないものを
次々と導入…
● マスターデータの静的チェック
● ダウンロードパッケージの処理
○ パッケージの生成
○ パッケージのアップロード
○ Windows -> Mac -> Linux
● コンパイル時のパラメータ調整
● 音を出す
ジョブが長すぎる!
分割して
モジュール化したい
Build Pipeline
Build Pipeline
● Parameterized Build
● Parameterized Trigger
● 本当の意味での「パイプライン」じゃない
○ レポジトリcheckoutでジョブ間の依存性が発生する
○ ジョブの再利用が難しい
○ ジョブコピーしないと並列化できない
Build Flow
Build Flow
● DSLでジョブの組み合わせができる
guard {
build("update",
ENGINE_BRANCH: params.ENGINE_BRANCH,
CLIENT_BRANCH: params.CLIENT_BRANCH
)
build("build")
} rescue {
build("reset")
}
Build Flow
Build Flow
● 分かりやすい結果表示
○ どこで失敗したか一見で分る
○ カッコイイ!(・∀・)
● フロー毎にワークスペースを持っている
○ フロー毎のデータ格納先
○ git shallow cloneでコピー量減らす
○ 複数フローの並列実行
Jenkins「はたらくぞ!」
Jenkins氏、熱で倒れる・・・
で、
みんなが幸せになった?
● 実行ステータス可視化
● ステップの長い、
複雑なタスクをカプセル化
● 実行の敷居が低くなった
良くなったところ
不幸になったところ
● 中身が分かりにくくなる
● 複雑なことが簡単になったわけではない
○ 言語 (DSL, bash, python, ruby, PowerShell)
○ OS (Windows, Mac, Linux)
● Jenkinsの介護係というポジションの誕生
○ 不幸になった人
● 気づいたら属人化が進んだ
まとめ
● 複雑なことが、
簡単に実行できるようになった
● Jenkinsのジョブに
複雑度を集約することになった

Contenu connexe

Tendances

kintoneとカラーユニバーサルデザイン
kintoneとカラーユニバーサルデザインkintoneとカラーユニバーサルデザイン
kintoneとカラーユニバーサルデザインKobayashi Daisuke
 
この門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedback
この門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedbackこの門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedback
この門をくぐる者は一切の希望を捨てよ - Agile 2011 FeedbackDai FUJIHARA
 
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめ
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめSEゼミ2015 - OSS Hack Weekend - 1日目のまとめ
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめKouhei Sutou
 
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜Dai FUJIHARA
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会Yu Ishikawa
 
オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続Takayuki Miyauchi
 
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...Dai FUJIHARA
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrumKenji Morita
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkinsKatsuhiro Miura
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかったMakoto Iguchi
 
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrageアジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow BarrageDai FUJIHARA
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~Dai FUJIHARA
 
アジャイル入門
アジャイル入門アジャイル入門
アジャイル入門Kenji Morita
 
20101121 apa四国支部立ち上げlt公開用
20101121 apa四国支部立ち上げlt公開用20101121 apa四国支部立ち上げlt公開用
20101121 apa四国支部立ち上げlt公開用walnut210
 
アジャイル開発導入のためにやってきたこと
アジャイル開発導入のためにやってきたことアジャイル開発導入のためにやってきたこと
アジャイル開発導入のためにやってきたことArata Fujimura
 
デベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LTデベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LTnormalian
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことYuki Okada
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へekushida
 

Tendances (20)

kintoneとカラーユニバーサルデザイン
kintoneとカラーユニバーサルデザインkintoneとカラーユニバーサルデザイン
kintoneとカラーユニバーサルデザイン
 
この門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedback
この門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedbackこの門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedback
この門をくぐる者は一切の希望を捨てよ - Agile 2011 Feedback
 
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめ
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめSEゼミ2015 - OSS Hack Weekend - 1日目のまとめ
SEゼミ2015 - OSS Hack Weekend - 1日目のまとめ
 
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会
 
オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続
 
TFSの導入提案
TFSの導入提案TFSの導入提案
TFSの導入提案
 
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrum
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkins
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
 
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrageアジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage
アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~
 
アジャイル入門
アジャイル入門アジャイル入門
アジャイル入門
 
20101121 apa四国支部立ち上げlt公開用
20101121 apa四国支部立ち上げlt公開用20101121 apa四国支部立ち上げlt公開用
20101121 apa四国支部立ち上げlt公開用
 
アジャイル開発導入のためにやってきたこと
アジャイル開発導入のためにやってきたことアジャイル開発導入のためにやってきたこと
アジャイル開発導入のためにやってきたこと
 
デベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LTデベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LT
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なこと
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
 

Similaire à Techhills 6.18

Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性MakotoItoh
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19Kenji Daikoku
 
はじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用pptはじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用pptTaro Takano
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Naoki Aso
 
勝つための計画づくり 20110415(鈴木)
勝つための計画づくり 20110415(鈴木)勝つための計画づくり 20110415(鈴木)
勝つための計画づくり 20110415(鈴木)Atsushi Suzuki
 
Unity2DとNewGUIについて
Unity2DとNewGUIについてUnity2DとNewGUIについて
Unity2DとNewGUIについてKeigo Ando
 
Unityの最新動向と開発事例
Unityの最新動向と開発事例Unityの最新動向と開発事例
Unityの最新動向と開発事例Haruto Watanabe
 
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介Kouji Hosoda
 
Jenkinsからはじめた若者のための新ツール一歩目
Jenkinsからはじめた若者のための新ツール一歩目Jenkinsからはじめた若者のための新ツール一歩目
Jenkinsからはじめた若者のための新ツール一歩目Hidari Ikw
 
Simutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションSimutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションmyagami
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発Kohki Miki
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発Katsutoshi Makino
 
unityゲーム開発基礎講座
unityゲーム開発基礎講座unityゲーム開発基礎講座
unityゲーム開発基礎講座Yuki Tada
 
今年趣味開発を通じて学んだこと(2018)
今年趣味開発を通じて学んだこと(2018)今年趣味開発を通じて学んだこと(2018)
今年趣味開発を通じて学んだこと(2018)Zeitung M
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainerYuta Matsumura
 

Similaire à Techhills 6.18 (20)

Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性Unityの開発環境が生み出す可能性
Unityの開発環境が生み出す可能性
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19
 
はじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用pptはじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用ppt
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話
 
勝つための計画づくり 20110415(鈴木)
勝つための計画づくり 20110415(鈴木)勝つための計画づくり 20110415(鈴木)
勝つための計画づくり 20110415(鈴木)
 
Unity2DとNewGUIについて
Unity2DとNewGUIについてUnity2DとNewGUIについて
Unity2DとNewGUIについて
 
Unity って何?
Unity って何?Unity って何?
Unity って何?
 
Unityの最新動向と開発事例
Unityの最新動向と開発事例Unityの最新動向と開発事例
Unityの最新動向と開発事例
 
20121219 jagkansai lt
20121219 jagkansai lt20121219 jagkansai lt
20121219 jagkansai lt
 
BlackJack
BlackJackBlackJack
BlackJack
 
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介
 
Jenkinsからはじめた若者のための新ツール一歩目
Jenkinsからはじめた若者のための新ツール一歩目Jenkinsからはじめた若者のための新ツール一歩目
Jenkinsからはじめた若者のための新ツール一歩目
 
Simutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションSimutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーション
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発
 
unityゲーム開発基礎講座
unityゲーム開発基礎講座unityゲーム開発基礎講座
unityゲーム開発基礎講座
 
今年趣味開発を通じて学んだこと(2018)
今年趣味開発を通じて学んだこと(2018)今年趣味開発を通じて学んだこと(2018)
今年趣味開発を通じて学んだこと(2018)
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 

Techhills 6.18