SlideShare a Scribd company logo
Copyright Drecom Co., Ltd. All Rights Reserved.
ドリコムを支える課金ライブラリを
支えるJenkins
2015/03/23 16新卒エンジニア勉強会
@sue445
Copyright Drecom Co., Ltd. All Rights Reserved.
@sue445
● 福岡生まれ福岡育ち
● 福岡教育大学卒
● 2009年4月~: 某SI系企業新卒入社(前職)
● 2012年7月~: ドリコム
今のお仕事
● iOS/Androidアプリの課金ライブラリのメンテ
● 社内ツール、社内ライブラリ開発
● サーバサイド全般(アプリ~インフラまで横断的に)
● PO (Precure Ojisan)
自己紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
● フルボッコヒーローズの事前登録ガチャ(フライング
ゲットガチャ)開発
○ ドリコムのフライングゲットガチャの舞台裏
#ksgstudy - くりにっき
○ http://sue445.hatenablog.
com/entry/2014/07/12/204741
● ドリコムAdventCalendarの主犯
○ ドリコム Advent Calendar 2014 - Adventar
○ http://www.adventar.org/calendars/518
その他やってたこと
Copyright Drecom Co., Ltd. All Rights Reserved.
【今期の嫁】キュアトゥインクル
Copyright Drecom Co., Ltd. All Rights Reserved.
今期の黄色は肩背中出し!!!!
Copyright Drecom Co., Ltd. All Rights Reserved.
【本妻】キュアピース
Copyright Drecom Co., Ltd. All Rights Reserved.
エンジニアの仕事机
Copyright Drecom Co., Ltd. All Rights Reserved.
エンジニアの仕事机
Copyright Drecom Co., Ltd. All Rights Reserved.
エンジニアの仕事机
机には多数の技術書
Copyright Drecom Co., Ltd. All Rights Reserved.
エンジニアの仕事机
Copyright Drecom Co., Ltd. All Rights Reserved.
エンジニアの仕事机
全社員サブディスプレ
イ支給
Copyright Drecom Co., Ltd. All Rights Reserved.
● Jenkinsとは?
● ドリコムでのJenkinsの使われ方
● dpoint(課金ライブラリ)について
● dpointでのJenkins活用事例
● おまけ
● まとめ
Agenda
Copyright Drecom Co., Ltd. All Rights Reserved.
● http://jenkins-ci.org/
● Javaで書かれたオープンソース継続的インテグレーション
ツール(Wikipediaより)
○ 継続的インテグレーション = 開発時の品質改善や自動
化推進
● プラグインでいろいろ拡張できる
Jenkinsとは?
Copyright Drecom Co., Ltd. All Rights Reserved.
会社全体で1つのJenkins使っているというわけではなく、アプリ
ごとに野良Jenkinsが乱立しているので全部は把握していない
具体例
● 開発中アプリのテスト
● 開発サーバへのデプロイ
● テストアプリの配信
● ライブラリのドキュメントの作成
● etc
ドリコムでのJenkinsの使われ方
Copyright Drecom Co., Ltd. All Rights Reserved.
● iOS/Androidのアプリの中間ポイントシステム
○ 魔法石やダイヤをサーバで管理する仕組み
● 2013年以降に出たアプリで全部使われているはず
○ ガルロワ、フルボッコなど
● 詳細は「ドリコムAdventCaledar」で検索
○ http://sue445.hatenablog.
com/entry/2014/12/01/000000
dpoint(課金ライブラリ)について
Copyright Drecom Co., Ltd. All Rights Reserved.
● Rubyで書かれているライブラリ(gem)
● 開発はほぼ僕1人
dpoint(中間ポイントシステム)について
Copyright Drecom Co., Ltd. All Rights Reserved.
開発はほぼ僕1人(でした)
重要なのでもう一度
Copyright Drecom Co., Ltd. All Rights Reserved.
Σ(゚Д゚)
重要なのでもう一度
Copyright Drecom Co., Ltd. All Rights Reserved.
● 機能改修
● 負荷対応、パフォーマンスチューニング
● AppleやGoogleの課金の仕組みが変わった時の対応
● その他諸々の緊急対応
● まともにやってると1人じゃ絶対回せない
○ バグがあるとライブラリを導入しているアプリ全体に影響
するので絶対にバグは出せない
○ 課金がバグってると会社は誤った売上を計上することに
なるので超シビア
○ 今はメンテナ増えたけど1年以上僕1人で面倒を見てた
dpointでやってること
Copyright Drecom Co., Ltd. All Rights Reserved.
よろしい
Copyright Drecom Co., Ltd. All Rights Reserved.
ならば自動化だ!
Copyright Drecom Co., Ltd. All Rights Reserved.
● 今日話すこと
○ GitLabにpushされたbranchの自動テスト
○ 静的解析
● 今日話さないこと
○ ドキュメント生成
自動化していること
Copyright Drecom Co., Ltd. All Rights Reserved.
GitLabへpushされたbranchの自動テスト
git push
Copyright Drecom Co., Ltd. All Rights Reserved.
GitLabへpushされたbranchの自動テスト
POST
webhook
Copyright Drecom Co., Ltd. All Rights Reserved.
GitLabへpushされたbranchの自動テスト
テスト
Copyright Drecom Co., Ltd. All Rights Reserved.
GitLabへpushされたbranchの自動テスト
結果をチャット
通知
Copyright Drecom Co., Ltd. All Rights Reserved.
テスト結果の通知
Copyright Drecom Co., Ltd. All Rights Reserved.
開発スタイルはほぼgit flow
Copyright Drecom Co., Ltd. All Rights Reserved.
master/develop/MRをそれぞれテスト
master branch
develop branch
topic branch
(MergeRequest /
PullRequest)
Copyright Drecom Co., Ltd. All Rights Reserved.
● MergeRequest, PullRequest (topic branch)
○ コードレビューの単位で常にテストを行い、テストが通っ
たものだけをdevelopにmergeする
● develop branch
○ 開発中のメインブランチを常にテストすることでどこでバ
グが混入したのかをいち早く検知できる
● master branch
○ masterはいつでもリリースできる状態のものなので、常
にテストは通っている
○ 全てのテストが通ったものだけしかリリースしない
Jenkinsで自動テストを行う粒度
Copyright Drecom Co., Ltd. All Rights Reserved.
MRにはカーチャンによる温かみのあるテスト結果
Copyright Drecom Co., Ltd. All Rights Reserved.
テストケースは約900個... (約3分)
Copyright Drecom Co., Ltd. All Rights Reserved.
x 27パターン = 計24000ケース
Copyright Drecom Co., Ltd. All Rights Reserved.
x 27パターン = 計24000ケース
丸1つが900個のテ
ストケース
Copyright Drecom Co., Ltd. All Rights Reserved.
● Rubyの各バージョン
○ 2.0系, 2.1系, 2.2系
● Ruby on Railsの各バージョン
○ 4.0系, 4.1系, 4.2系
● 特定のmigrarionを適用するか(indexの有無)
○ 大人の事情で。。。
● activerecord-turntableの利用有無
○ データベースの分割ライブラリ
○ https://github.com/drecom/activerecord-turntable
● 運用上今のところありえない組み合わせを除去
● 3 x 3 x 2 x 2 - 9 = 27
内訳
Copyright Drecom Co., Ltd. All Rights Reserved.
考えられる全ての組み合わせ
はテストすべき
Copyright Drecom Co., Ltd. All Rights Reserved.
それがプロとしての当たり前
Copyright Drecom Co., Ltd. All Rights Reserved.
3分 x 27パターン = 81分
だがしかし
Copyright Drecom Co., Ltd. All Rights Reserved.
(;´Д`)
Copyright Drecom Co., Ltd. All Rights Reserved.
速くするにはどうした
らいいか?
Copyright Drecom Co., Ltd. All Rights Reserved.
マシンを増やせばい
い
【結論】
Copyright Drecom Co., Ltd. All Rights Reserved.
言い換えると
Copyright Drecom Co., Ltd. All Rights Reserved.
レベルを上げて物理
で殴ればいい
Copyright Drecom Co., Ltd. All Rights Reserved.
Master
master
Copyright Drecom Co., Ltd. All Rights Reserved.
Master + Slave x 8
master
slave
Copyright Drecom Co., Ltd. All Rights Reserved.
マシン9台でCPU 17コア
master
slave
趣味で社内ツールをいくつか立て
ているのでそのサーバにJenkins
のSlaveを相乗りしている
Copyright Drecom Co., Ltd. All Rights Reserved.
17並列で81分 ->11分
Copyright Drecom Co., Ltd. All Rights Reserved.
● http://openstack.jp/
● クラウド上でサーバのインスタンスを作るための環境
○ 平たく説明するとAWSの社内版(みたいなもの)
● 弊社では開発用途や社内ツールくらいなら自由にインスタンス
が立てられる
● 自分の場合JenkinsのSlaveも必要に応じて増減している
○ itamae + Serverspecで テスト駆動インフラやってみた
#shibuyarb - くりにっき
○ http://sue445.hatenablog.
com/entry/2015/03/19/001919
OpenStack
Copyright Drecom Co., Ltd. All Rights Reserved.
pronto + rubocopでコーディング規約違反を検知し、ボットが自
動で指摘
● https://github.com/mmozuras/pronto
● https://github.com/bbatsov/rubocop
● メリット
○ MergeRequestやPullRequestが作られたら勝手に動く
ので忘れない
○ 人間によるコードレビューの工数削減
○ 人間が言うと角が立つけどボットに言わせると角が立た
ない
静的解析
Copyright Drecom Co., Ltd. All Rights Reserved.
行単位で教えてくれる
Copyright Drecom Co., Ltd. All Rights Reserved.
問題なければLGTM
LGTM = Look good to me (大丈夫そう)
Copyright Drecom Co., Ltd. All Rights Reserved.
● 弊社では毎週主要エンジニアで集まるMTGがあって、「今週
のgem」のコーナーでgemリリースのアナウンスはしてる
● それとは別に速報的な位置づけでgemのリリース通知も自
動化した
【おまけ】gemリリース通知の自動化
Copyright Drecom Co., Ltd. All Rights Reserved.
【おまけ】gemリリース通知の自動化
git push --tags
rake drecom:release
gem push
社内gemサーバ
Copyright Drecom Co., Ltd. All Rights Reserved.
【おまけ】gemリリース通知の自動化
社内gemサーバ
POST webhook
Copyright Drecom Co., Ltd. All Rights Reserved.
【おまけ】gemリリース通知の自動化
結果をチャット
通知
社内gemサーバ
Copyright Drecom Co., Ltd. All Rights Reserved.
カーチャンによる温かみのあるアナウンス
Copyright Drecom Co., Ltd. All Rights Reserved.
● rake drecom:releaseは社内gem(drecom_gem)の機能
○ 社内gemサーバへのリリースを簡易化してる
○ 社内gemが間違えて社外のrubygems.orgに公開され
るのを防止する機能もある
○ 【詳細】RubyKaigi2014で発表した - mitaku.log
http://mitaku.github.io/blog/2014/09/22/rubykaigi-
2014-speech/
● fluentdっていうとbigdataやログの集約ってイメージがある
けど、webhookを受けることができるしチャット通知のプラグ
インが豊富なのでこういう風にカジュアルな通知にも利用で
きる
詳しいこと
Copyright Drecom Co., Ltd. All Rights Reserved.
● 機械がやるべき仕事
○ スクリプトを1回書けばずっと使いまわせる
○ 単調な作業
○ 時間がかかる作業
● 人間がやるべき仕事
○ 人間の目で見ないと判断できないもの
■ デザイン崩れなど
○ 1回しか行わない作業
機械がやるべき作業と人間がやるべき作業の切り分けが大切
全部が全部自動化はできない
Copyright Drecom Co., Ltd. All Rights Reserved.
● 機械に任せられることで人間は楽をできる
● 1人でたくさんの仕事をこなせるようになるので、レバレッジを
効かせることができる
● 一度自動化したものは誰でも使えるようになる
● 結果的に自分が楽になればみんなが楽になる
まとめ(自動化のすすめ)

More Related Content

What's hot

GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼうGitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
虎の穴 開発室
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Naotoshi Seo
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門
虎の穴 開発室
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
Takafumi ONAKA
 
2018/1/30 Django勉強会
2018/1/30 Django勉強会2018/1/30 Django勉強会
2018/1/30 Django勉強会
虎の穴 開発室
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ
Takuya Mikami
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
虎の穴 開発室
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
Drecom Co., Ltd.
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
虎の穴 開発室
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
虎の穴 開発室
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
虎の穴 開発室
 
2018/2/20 Kotlin勉強会
2018/2/20 Kotlin勉強会2018/2/20 Kotlin勉強会
2018/2/20 Kotlin勉強会
虎の穴 開発室
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
 

What's hot (20)

GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼうGitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
 
2018/1/30 Django勉強会
2018/1/30 Django勉強会2018/1/30 Django勉強会
2018/1/30 Django勉強会
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
 
2018/2/20 Kotlin勉強会
2018/2/20 Kotlin勉強会2018/2/20 Kotlin勉強会
2018/2/20 Kotlin勉強会
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 

Similar to ドリコムを支える課金ライブラリを支えるJenkins

ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
Drecom Co., Ltd.
 
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
Shinichiro Yoshida
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
Koji Hasebe
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
 
RPAって何、どんなことできるの
RPAって何、どんなことできるのRPAって何、どんなことできるの
RPAって何、どんなことできるの
株式会社オプト 仙台ラボラトリ
 
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~Daisuke Futatsumori
 
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみる
Hironobu Saitoh
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
livedoor
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as codeYosuke Hiraishi
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術kazuya noshiro
 
ニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixir
kojingharang
 
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座Shinichiro Yoshida
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーHideo Kimura
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
dena_study
 
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
Shoei Takamaru
 

Similar to ドリコムを支える課金ライブラリを支えるJenkins (20)

ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
RPAって何、どんなことできるの
RPAって何、どんなことできるのRPAって何、どんなことできるの
RPAって何、どんなことできるの
 
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
 
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみる
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
 
ニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixir
 
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバー
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
 

More from Go Sueyoshi (a.k.a sue445)

gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
Go Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
Go Sueyoshi (a.k.a sue445)
 
社内テストファースト勉強会
社内テストファースト勉強会社内テストファースト勉強会
社内テストファースト勉強会
Go Sueyoshi (a.k.a sue445)
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyGo Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
Go Sueyoshi (a.k.a sue445)
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
Go Sueyoshi (a.k.a sue445)
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
Go Sueyoshi (a.k.a sue445)
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Go Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
Go Sueyoshi (a.k.a sue445)
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
Go Sueyoshi (a.k.a sue445)
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
Go Sueyoshi (a.k.a sue445)
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
Go Sueyoshi (a.k.a sue445)
 
First step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarbFirst step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarb
Go Sueyoshi (a.k.a sue445)
 
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
Go Sueyoshi (a.k.a sue445)
 
アニメ実況実践入門
アニメ実況実践入門アニメ実況実践入門
アニメ実況実践入門
Go Sueyoshi (a.k.a sue445)
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
 
AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19
Go Sueyoshi (a.k.a sue445)
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
Go Sueyoshi (a.k.a sue445)
 

More from Go Sueyoshi (a.k.a sue445) (18)

gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
 
社内テストファースト勉強会
社内テストファースト勉強会社内テストファースト勉強会
社内テストファースト勉強会
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_history
 
プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
 
First step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarbFirst step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarb
 
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
 
アニメ実況実践入門
アニメ実況実践入門アニメ実況実践入門
アニメ実況実践入門
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 

Recently uploaded

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 

ドリコムを支える課金ライブラリを支えるJenkins

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. ドリコムを支える課金ライブラリを 支えるJenkins 2015/03/23 16新卒エンジニア勉強会 @sue445
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. @sue445 ● 福岡生まれ福岡育ち ● 福岡教育大学卒 ● 2009年4月~: 某SI系企業新卒入社(前職) ● 2012年7月~: ドリコム 今のお仕事 ● iOS/Androidアプリの課金ライブラリのメンテ ● 社内ツール、社内ライブラリ開発 ● サーバサイド全般(アプリ~インフラまで横断的に) ● PO (Precure Ojisan) 自己紹介
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. ● フルボッコヒーローズの事前登録ガチャ(フライング ゲットガチャ)開発 ○ ドリコムのフライングゲットガチャの舞台裏 #ksgstudy - くりにっき ○ http://sue445.hatenablog. com/entry/2014/07/12/204741 ● ドリコムAdventCalendarの主犯 ○ ドリコム Advent Calendar 2014 - Adventar ○ http://www.adventar.org/calendars/518 その他やってたこと
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 【今期の嫁】キュアトゥインクル
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 今期の黄色は肩背中出し!!!!
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 【本妻】キュアピース
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机 机には多数の技術書
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机 全社員サブディスプレ イ支給
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. ● Jenkinsとは? ● ドリコムでのJenkinsの使われ方 ● dpoint(課金ライブラリ)について ● dpointでのJenkins活用事例 ● おまけ ● まとめ Agenda
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. ● http://jenkins-ci.org/ ● Javaで書かれたオープンソース継続的インテグレーション ツール(Wikipediaより) ○ 継続的インテグレーション = 開発時の品質改善や自動 化推進 ● プラグインでいろいろ拡張できる Jenkinsとは?
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 会社全体で1つのJenkins使っているというわけではなく、アプリ ごとに野良Jenkinsが乱立しているので全部は把握していない 具体例 ● 開発中アプリのテスト ● 開発サーバへのデプロイ ● テストアプリの配信 ● ライブラリのドキュメントの作成 ● etc ドリコムでのJenkinsの使われ方
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. ● iOS/Androidのアプリの中間ポイントシステム ○ 魔法石やダイヤをサーバで管理する仕組み ● 2013年以降に出たアプリで全部使われているはず ○ ガルロワ、フルボッコなど ● 詳細は「ドリコムAdventCaledar」で検索 ○ http://sue445.hatenablog. com/entry/2014/12/01/000000 dpoint(課金ライブラリ)について
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. ● Rubyで書かれているライブラリ(gem) ● 開発はほぼ僕1人 dpoint(中間ポイントシステム)について
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. 開発はほぼ僕1人(でした) 重要なのでもう一度
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. Σ(゚Д゚) 重要なのでもう一度
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機能改修 ● 負荷対応、パフォーマンスチューニング ● AppleやGoogleの課金の仕組みが変わった時の対応 ● その他諸々の緊急対応 ● まともにやってると1人じゃ絶対回せない ○ バグがあるとライブラリを導入しているアプリ全体に影響 するので絶対にバグは出せない ○ 課金がバグってると会社は誤った売上を計上することに なるので超シビア ○ 今はメンテナ増えたけど1年以上僕1人で面倒を見てた dpointでやってること
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. よろしい
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. ならば自動化だ!
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. ● 今日話すこと ○ GitLabにpushされたbranchの自動テスト ○ 静的解析 ● 今日話さないこと ○ ドキュメント生成 自動化していること
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト git push
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト POST webhook
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト テスト
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト 結果をチャット 通知
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. テスト結果の通知
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 開発スタイルはほぼgit flow
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. master/develop/MRをそれぞれテスト master branch develop branch topic branch (MergeRequest / PullRequest)
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. ● MergeRequest, PullRequest (topic branch) ○ コードレビューの単位で常にテストを行い、テストが通っ たものだけをdevelopにmergeする ● develop branch ○ 開発中のメインブランチを常にテストすることでどこでバ グが混入したのかをいち早く検知できる ● master branch ○ masterはいつでもリリースできる状態のものなので、常 にテストは通っている ○ 全てのテストが通ったものだけしかリリースしない Jenkinsで自動テストを行う粒度
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. MRにはカーチャンによる温かみのあるテスト結果
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. テストケースは約900個... (約3分)
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. x 27パターン = 計24000ケース
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. x 27パターン = 計24000ケース 丸1つが900個のテ ストケース
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. ● Rubyの各バージョン ○ 2.0系, 2.1系, 2.2系 ● Ruby on Railsの各バージョン ○ 4.0系, 4.1系, 4.2系 ● 特定のmigrarionを適用するか(indexの有無) ○ 大人の事情で。。。 ● activerecord-turntableの利用有無 ○ データベースの分割ライブラリ ○ https://github.com/drecom/activerecord-turntable ● 運用上今のところありえない組み合わせを除去 ● 3 x 3 x 2 x 2 - 9 = 27 内訳
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. 考えられる全ての組み合わせ はテストすべき
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. それがプロとしての当たり前
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. 3分 x 27パターン = 81分 だがしかし
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. (;´Д`)
  • 40. Copyright Drecom Co., Ltd. All Rights Reserved. 速くするにはどうした らいいか?
  • 41. Copyright Drecom Co., Ltd. All Rights Reserved. マシンを増やせばい い 【結論】
  • 42. Copyright Drecom Co., Ltd. All Rights Reserved. 言い換えると
  • 43. Copyright Drecom Co., Ltd. All Rights Reserved. レベルを上げて物理 で殴ればいい
  • 44. Copyright Drecom Co., Ltd. All Rights Reserved. Master master
  • 45. Copyright Drecom Co., Ltd. All Rights Reserved. Master + Slave x 8 master slave
  • 46. Copyright Drecom Co., Ltd. All Rights Reserved. マシン9台でCPU 17コア master slave 趣味で社内ツールをいくつか立て ているのでそのサーバにJenkins のSlaveを相乗りしている
  • 47. Copyright Drecom Co., Ltd. All Rights Reserved. 17並列で81分 ->11分
  • 48. Copyright Drecom Co., Ltd. All Rights Reserved. ● http://openstack.jp/ ● クラウド上でサーバのインスタンスを作るための環境 ○ 平たく説明するとAWSの社内版(みたいなもの) ● 弊社では開発用途や社内ツールくらいなら自由にインスタンス が立てられる ● 自分の場合JenkinsのSlaveも必要に応じて増減している ○ itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb - くりにっき ○ http://sue445.hatenablog. com/entry/2015/03/19/001919 OpenStack
  • 49. Copyright Drecom Co., Ltd. All Rights Reserved. pronto + rubocopでコーディング規約違反を検知し、ボットが自 動で指摘 ● https://github.com/mmozuras/pronto ● https://github.com/bbatsov/rubocop ● メリット ○ MergeRequestやPullRequestが作られたら勝手に動く ので忘れない ○ 人間によるコードレビューの工数削減 ○ 人間が言うと角が立つけどボットに言わせると角が立た ない 静的解析
  • 50. Copyright Drecom Co., Ltd. All Rights Reserved. 行単位で教えてくれる
  • 51. Copyright Drecom Co., Ltd. All Rights Reserved. 問題なければLGTM LGTM = Look good to me (大丈夫そう)
  • 52. Copyright Drecom Co., Ltd. All Rights Reserved. ● 弊社では毎週主要エンジニアで集まるMTGがあって、「今週 のgem」のコーナーでgemリリースのアナウンスはしてる ● それとは別に速報的な位置づけでgemのリリース通知も自 動化した 【おまけ】gemリリース通知の自動化
  • 53. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 git push --tags rake drecom:release gem push 社内gemサーバ
  • 54. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 社内gemサーバ POST webhook
  • 55. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 結果をチャット 通知 社内gemサーバ
  • 56. Copyright Drecom Co., Ltd. All Rights Reserved. カーチャンによる温かみのあるアナウンス
  • 57. Copyright Drecom Co., Ltd. All Rights Reserved. ● rake drecom:releaseは社内gem(drecom_gem)の機能 ○ 社内gemサーバへのリリースを簡易化してる ○ 社内gemが間違えて社外のrubygems.orgに公開され るのを防止する機能もある ○ 【詳細】RubyKaigi2014で発表した - mitaku.log http://mitaku.github.io/blog/2014/09/22/rubykaigi- 2014-speech/ ● fluentdっていうとbigdataやログの集約ってイメージがある けど、webhookを受けることができるしチャット通知のプラグ インが豊富なのでこういう風にカジュアルな通知にも利用で きる 詳しいこと
  • 58. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機械がやるべき仕事 ○ スクリプトを1回書けばずっと使いまわせる ○ 単調な作業 ○ 時間がかかる作業 ● 人間がやるべき仕事 ○ 人間の目で見ないと判断できないもの ■ デザイン崩れなど ○ 1回しか行わない作業 機械がやるべき作業と人間がやるべき作業の切り分けが大切 全部が全部自動化はできない
  • 59. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機械に任せられることで人間は楽をできる ● 1人でたくさんの仕事をこなせるようになるので、レバレッジを 効かせることができる ● 一度自動化したものは誰でも使えるようになる ● 結果的に自分が楽になればみんなが楽になる まとめ(自動化のすすめ)