SlideShare a Scribd company logo
Ruby開発の現場を支える技術
(株)Ruby開発
佐藤 洋行
2015/10/10
自己紹介
● 会社: (株)Ruby開発
● 所属: 本社開発室 (東京3名、仙台2名)
● 仕事内容: リモートでの受託開発 & 開発環境整備
● Twitter: @hirponz79
● GitHub: hiroponz
● GitLab: hiroponz
2
自己紹介
● 会社: (株)Ruby開発
● 所属: 本社開発室 (東京3名、仙台2名)
● 仕事内容: リモートでの受託開発 & 開発環境整備
● Twitter: @hirponz79
● GitHub: hiroponz
● GitLab: hiroponz <- I am a contributor!
3
職歴
● [仙台] SIer (8年)
● [鶴岡] バイオベンチャー (1年半)
● [仙台] Ruby開発 (3ヶ月目)
4
職歴
● [仙台] SIer (8年) <- まずはここでの話
● [鶴岡] バイオベンチャー (1年半)
● [仙台] Ruby開発 (3ヶ月目)
5
主に自社パッケージの開発を担当
6
バージョン管理(2012年頃)
● Subversion
○ サーバー: Apache + mod_svn
○ Issue 管理 + リポジトリ Viewer: Redmine
○ 認証: Redmineと統合
7
リポジトリ構成図
trunk
顧客A
顧客B
顧客C
顧客D
8
つらい…
● 顧客毎に増え続けるブランチ
● 突発的なサポート業務 -> ブランチの切替 -> 遅い
● trunkへのマージで発生するコンフリクト
● 忙しいとマージ作業が放置されtrunkとブランチが乖離
9
なので、Subversion -> Git に移行
● メリット
○ マージがSubversionより簡単
○ ブランチの切替が高速
● デメリット
○ 教育コスト
10
リポジトリ管理ツール
共有リポジトリをサーバーに置くだけでは使い難い
→ GitLabを導入
● OSSなので無償
● Web UIでリポジトリ作成
● リポジトリのアクセス権の設定
● マージリクエスト(プルリクエスト)機能
11
git-flow
● 機能・バグ修正の単位で
トピックブランチを切る
● マージリクエストを作成し
コードレビュー後にマージ
→ コードの品質が向上
出典 http://nvie.com/posts/a-successful-git-branching-model/ 12
Network Graph
13
見づらい…
14
なので、修正してプルリクを送る
15
MVPに選ばれる
出典 https://about.gitlab.com/mvp/
16
OSSへのコントリビュートは意外と簡単!
17
仕事で使っているOSSに
コントリビュートすると
「自分」も
「チームのメンバー」も
「その他大勢」も
みんなが幸せになる
18
職歴
● [仙台] SIer (8年)
● [鶴岡] バイオベンチャー (1年半)
● [仙台] Ruby開発 (3ヶ月目) <- ようやく現職での話
19
Ruby開発の現場を支える技術
● リポジトリ管理
○ GitHub
● CI
○ Jenkins
20
Ruby開発の現場を支える技術
● リポジトリ管理
○ GitHub
● CI
○ Jenkins
● リポジトリ管理
○ GitLab
● CI
○ GitLab CI
【理由】GitLabのコントリビューターが入社したから
21
GitHub -> GitLab
● メリット
○ 職場にやけに詳しい人がいる
○ リポジトリを好きなだけ作れる
○ オンプレで運用できる
● デメリット
○ 総合的な機能面で劣る
22
Jenkins -> GitLab CI
● メリット
○ 職場にやけに詳しい人がいる
○ Travis CIやCircle CIのようにymlファイルに対応
○ Jenkinsよりも運用が楽 (人による)
● デメリット
○ 総合的な機能面で劣る
23
チームメンバーの反応は概ね良好
24
(株)Ruby開発では、Rubyで開発がしたい
エンジニアを募集しています!
[豆知識] GitLabはRubyで開発されています
25

More Related Content

What's hot

粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
 
Cloud Functionsの紹介
Cloud Functionsの紹介Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda
 
JggugCamp2011Report
JggugCamp2011ReportJggugCamp2011Report
JggugCamp2011Report
orange clover
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
Shinobu Okano
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
Ayana Yokota
 
コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話
Shinobu Okano
 
今から始めるApache Groovy
今から始めるApache Groovy今から始めるApache Groovy
今から始めるApache Groovy
Yasuharu Hayami
 
Qiita:Team を Hack しよう
Qiita:Team を Hack しようQiita:Team を Hack しよう
Qiita:Team を Hack しよう
Yoshiaki Yoshida
 
2ヶ月前にgitを始めた私からこれから始める皆さんへ
2ヶ月前にgitを始めた私からこれから始める皆さんへ2ヶ月前にgitを始めた私からこれから始める皆さんへ
2ヶ月前にgitを始めた私からこれから始める皆さんへ
Ayana Yokota
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEO
DQNEO
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介
Takuya Ueda
 
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
moto2g
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編
Yasuharu Hayami
 
Git Flowを運用するために
Git Flowを運用するためにGit Flowを運用するために
Git Flowを運用するために
Shun Tsunoda
 
JGGUG Community LT 2016
JGGUG Community LT 2016JGGUG Community LT 2016
JGGUG Community LT 2016
Takuma Watabiki
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Takahiro Fujiwara
 

What's hot (17)

粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
 
Cloud Functionsの紹介
Cloud Functionsの紹介Cloud Functionsの紹介
Cloud Functionsの紹介
 
JggugCamp2011Report
JggugCamp2011ReportJggugCamp2011Report
JggugCamp2011Report
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話
 
今から始めるApache Groovy
今から始めるApache Groovy今から始めるApache Groovy
今から始めるApache Groovy
 
Qiita:Team を Hack しよう
Qiita:Team を Hack しようQiita:Team を Hack しよう
Qiita:Team を Hack しよう
 
2ヶ月前にgitを始めた私からこれから始める皆さんへ
2ヶ月前にgitを始めた私からこれから始める皆さんへ2ヶ月前にgitを始めた私からこれから始める皆さんへ
2ヶ月前にgitを始めた私からこれから始める皆さんへ
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEOGitのつくりかた YAPC::Asia 2015 @DQNEO
Gitのつくりかた YAPC::Asia 2015 @DQNEO
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介
 
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
DCGANとStyleGAN2を試したときの話 / Dcgan and Stylegan2
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編
 
Git Flowを運用するために
Git Flowを運用するためにGit Flowを運用するために
Git Flowを運用するために
 
JGGUG Community LT 2016
JGGUG Community LT 2016JGGUG Community LT 2016
JGGUG Community LT 2016
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 

Similar to Ruby開発の現場を支える技術

今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
 
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
中條 剛
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
Study Group by SciencePark Corp.
 
Cross2013_GREE
Cross2013_GREECross2013_GREE
Cross2013_GREE
Junya Hayashi
 
Pythonを始めよう
Pythonを始めようPythonを始めよう
Pythonを始めよう
shouta yoshikai
 
ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!
Naoharu Sasaki
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
 
「CodeYourRuby」で オープンなコードレビューを体験しよう
「CodeYourRuby」で オープンなコードレビューを体験しよう「CodeYourRuby」で オープンなコードレビューを体験しよう
「CodeYourRuby」で オープンなコードレビューを体験しよう
中條 剛
 
Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01
Yoshinori Kawasaki
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
 
Python 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapyPython 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapy
敦志 金谷
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めよう
shouta yoshikai
 
Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2
Takahiro Okada
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
Maehana Tsuyoshi
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
Tsutomu Yano
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
 
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
Fumihito Yokoyama
 
初めてのDocker
初めてのDocker初めてのDocker
初めてのDocker
You&I
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LTKouta Imanaka
 
2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote
Masahiro Nishimi
 

Similar to Ruby開発の現場を支える技術 (20)

今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
 
Cross2013_GREE
Cross2013_GREECross2013_GREE
Cross2013_GREE
 
Pythonを始めよう
Pythonを始めようPythonを始めよう
Pythonを始めよう
 
ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
 
「CodeYourRuby」で オープンなコードレビューを体験しよう
「CodeYourRuby」で オープンなコードレビューを体験しよう「CodeYourRuby」で オープンなコードレビューを体験しよう
「CodeYourRuby」で オープンなコードレビューを体験しよう
 
Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01Rubyと俺達の生存戦略 #kana01
Rubyと俺達の生存戦略 #kana01
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
Python 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapyPython 2/3コード共存戦略 #osakapy
Python 2/3コード共存戦略 #osakapy
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めよう
 
Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
 
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
 
初めてのDocker
初めてのDocker初めてのDocker
初めてのDocker
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LT
 
2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote
 

Ruby開発の現場を支える技術