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

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