29
metahub for github ―git移行のその先にあるものKLab株式会社 Engineering Manager 於保 Engineering Manager 牧内 大輔

Metahub for github

Embed Size (px)

DESCRIPTION

Introduction of metahub as a github utility. TechHills #5 "Go to Git!"

Citation preview

Page 1: Metahub for github

metahub for github―git移行のその先にあるもの―

KLab株式会社 

Engineering Manager 於保 俊

Engineering Manager 牧内 大輔

Page 2: Metahub for github

於保 俊(おほ すぐる)

FB 於保 俊(suguruoho)Twitter @ohomagicgithub oho-sugu

モバイルオンラインゲーム開発

PHP/JavaBZip2途中から解凍

何でも屋

git抵抗勢力→gitすげぇ

自己紹介

牧内 大輔(まきうち だいすけ)

FB 牧内大輔

Twitter @makki_dgithub makiuchi-d (makki_d)

モバイルオンラインゲーム開発

画像合成ライブラリ KGDC/C++/PHP国内SNSのトラブル対策要員

社内WARUDAKUMI同盟

Page 3: Metahub for github

今日のおはなし

1. SVN2github  その歴史(ダイジェスト版)

2. いっぱいリポジトリあって大変!

3. metahubの紹介

Page 4: Metahub for github

● はじまりはSVN(有史以前はCVS?)○ intra(社内)→cloud(AWS) 置いてある場所を変えた

● bazzarの普及   SVNに近い使い勝手のDVCSとして

○ 案件サーバー上にリポジトリ

● リポジトリ管理体制の構築とgit+githubの導入○ 案件リポジトリを一箇所にまとめよう

○ git+github使いたい

● bitbucketとgithubの蜜月 ←今ここから~

● githubからgithub:Enterpriseへ ←ここら辺

metahub前夜 ―KLabでのDVCS導入―

Page 5: Metahub for github

現状:増える、リポジトリ(github上)

Page 6: Metahub for github

課題:増える、レビュー要請

僕達=Engineering Manager=案件横断で社内の技術的なサポート・意思決定

偉い人「全案件、ちゃんと”レビュー”しといてね!」

github推進派「ソーシャルコーディングならレビュー

がちゃんとできるよ!」

Page 7: Metahub for github

こんだけあったら無理だろjk

Page 8: Metahub for github

気を取り直して・・・

Page 9: Metahub for github

分析:KLabのリポジトリの特徴

● 結構案件数多い

● 案件間の差異が比較的少ない

● ベースとしているFWはほぼ同じ

→似かよったリポジトリがいっぱい

Page 10: Metahub for github

考察:なんか、自動化できないかな

ヤバいコードって、パターンあるよね

● typoとか・・・

● インジェクションされそうなSQLの組立とか

● ORDER BY RAND()だったり

● フレームワークのコアに手を入れてたり

● 呼んじゃいけないメソッド呼んでたり

Page 11: Metahub for github

考察:PullRequestをフィルタリングしよう

githubのPullRequestを監視したらいいんじゃね?

● PRがレビューしやすい粒度

● PRのクローラ作って、パターンマッチで検出・フィルタリング

● レビューによるソースコードの品質の維持

        metahub

Page 12: Metahub for github

と、いうわけで

作ってみました

Page 13: Metahub for github

githubにはAPIがあるらしい

● APIでできること (http://developer.github.com/v3/)○ commit, tagの取得・作成

○ Issueの作成・取得・変更

○ PullRequestの作成・取得・編集・マージ

○ 各種コメントの作成・取得・編集

○ User・Organizationの管理

○ Issue・Repository・Userなどの検索

○ などなど

→わりとなんでもできる

Page 14: Metahub for github

とりあえずたたいてみた

HTTPSでアクセスするだけ● Privateなリポジトリもaccess_tokenを付ければOK

$ curl https://api.github.com/repos/KLab/metahub/pulls?access_token=********************[ { "url": "https://api.github.com/repos/KLab/metahub/pulls/1", "id": 4709109, "html_url": "https://github.com/KLab/metahub/pull/1", "diff_url": "https://github.com/KLab/metahub/pull/1.diff", "patch_url": "https://github.com/KLab/metahub/pull/1.patch", "issue_url": "https://github.com/KLab/metahub/issues/1", "number": 1, "state": "open", "title": "pull requestの内容表示ページ ", "user": { "login": "makiuchi-d", ......

Page 15: Metahub for github

あとは作るだけ

1. APIでPullRequest取得

2. パターンマッチして蓄積

3. まとめて表示

Page 16: Metahub for github
Page 17: Metahub for github
Page 18: Metahub for github
Page 19: Metahub for github

こんなバグが釣れた!

Page 20: Metahub for github

よくあるtypo

× regist○ register

Page 21: Metahub for github

よくあるtypo

× ture○ true

Page 22: Metahub for github

よくあるtypo

× peoole○ people

Page 23: Metahub for github

typo以外にも......

パターン: "WHERE" の後ろに変数

レビュー:

SQLインジェクション

Page 24: Metahub for github

typo以外にも......

パターン: Slave DBへの接続コード

レビュー:

Slaveの値でMaster更新

Page 25: Metahub for github

今日も続々と釣り上げ中......

Page 26: Metahub for github

最後に

gitもgithubも強力で便利です

githubにはAPIもあります

工夫次第でもっと便利に!

Page 27: Metahub for github

もっと詳しく

KLab若手エンジニアブログ

http://young.blog.jp.klab.com/

githubにて公開中

https://github.com/KLab/metahub

Page 28: Metahub for github

ついでに宣伝

DSAS開発者の部屋

gitでバイナリファイルを

気軽に扱えるフィルターを作りました@methane

http://dsas.blog.klab.org/archives/52105107.html

Page 29: Metahub for github

ご清聴ありがとうございました