SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
metahub for github
   ―git移行のその先にあるもの―


       KLab株式会社
             

Engineering Manager 於保 俊
Engineering Manager 牧内 大輔
自己紹介

於保 俊(おほ すぐる)           牧内 大輔(まきうち               だいすけ)

FB 於保 俊(suguruoho)     FB 牧内大輔
Twitter @ohomagic      Twitter @makki_d
github oho-sugu        github makiuchi-d (makki_d)

モバイルオンラインゲーム開発         モバイルオンラインゲーム開発
PHP/Java               画像合成ライブラリ KGD
BZip2途中から解凍            C/C++/PHP
何でも屋                   国内SNSのトラブル対策要員
git抵抗勢力→gitすげぇ




                社内WARUDAKUMI同盟
今日のおはなし

1. SVN2github  その歴史(ダイジェスト版)
2. いっぱいリポジトリあって大変!
3. metahubの紹介
metahub前夜 ―KLabでのDVCS導入―
● はじまりはSVN(有史以前はCVS?)
  ○ intra(社内)→cloud(AWS) 置いてある場所を変えた
● bazzarの普及   SVNに近い使い勝手の DVCSとして
  ○ 案件サーバー上にリポジトリ
● リポジトリ管理体制の構築とgit+githubの導入
  ○ 案件リポジトリを一箇所にまとめよう
  ○ git+github使いたい
● bitbucketとgithubの蜜月 ←今ここから~
● githubからgithub:Enterpriseへ ←ここら辺
現状:増える、リポジトリ(github上)
課題:増える、レビュー要請

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

偉い人「全案件、ちゃんと”レビュー”しといてね!」
github推進派「ソーシャルコーディングならレビュー
がちゃんとできるよ!」
こんだけあったら無理だろjk
気を取り直して・・・
分析:KLabのリポジトリの特徴

● 結構案件数多い
● 案件間の差異が比較的少ない
● ベースとしているFWはほぼ同じ

→似かよったリポジトリがいっぱい
考察:なんか、自動化できないかな

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

● typoとか・・・
● インジェクションされそうなSQLの組立とか
● ORDER BY RAND()だったり
● フレームワークのコアに手を入れてたり
● 呼んじゃいけないメソッド呼んでたり
考察:PullRequestをフィルタリングしよう

githubのPullRequestを監視したらいいんじゃね?
● PRがレビューしやすい粒度

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

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


           metahub
と、いうわけで

作ってみました
githubにはAPIがあるらしい

● APIでできること (http://developer.github.com/v3/)
   ○   commit, tagの取得・作成
   ○   Issueの作成・取得・変更
   ○   PullRequestの作成・取得・編集・マージ
   ○   各種コメントの作成・取得・編集
   ○   User・Organizationの管理
   ○   Issue・Repository・Userなどの検索
   ○   などなど


→わりとなんでもできる
とりあえずたたいてみた

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",
        ......
あとは作るだけ

1. APIでPullRequest取得
2. パターンマッチして蓄積
3. まとめて表示
こんなバグが釣れた!
よくあるtypo


    × regist
    ○ register
よくあるtypo


    × ture
    ○ true
よくあるtypo


    × peoole
    ○ people
typo以外にも......

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

レビュー:
     SQLインジェクション
typo以外にも......

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

レビュー:
   Slaveの値でMaster更新
今日も続々と釣り上げ中......
最後に

      gitもgithubも強力で便利です

      githubにはAPIもあります

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

KLab若手エンジニアブログ
  http://young.blog.jp.klab.com/

githubにて公開中
   https://github.com/KLab/metahub
ついでに宣伝

DSAS開発者の部屋

         gitでバイナリファイルを
      気軽に扱えるフィルターを作りました
                  @methane

http://dsas.blog.klab.org/archives/52105107.
html
ご清聴ありがとうございました

Contenu connexe

Tendances

ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
 
Git extensions ws外部公開用
Git extensions ws外部公開用Git extensions ws外部公開用
Git extensions ws外部公開用
CROOZ, inc.
 
怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用
CROOZ, inc.
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 

Tendances (20)

Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
 
Git extensions ws外部公開用
Git extensions ws外部公開用Git extensions ws外部公開用
Git extensions ws外部公開用
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Git flowについてまとめてみた
Git flowについてまとめてみたGit flowについてまとめてみた
Git flowについてまとめてみた
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級ポイントをおさえて移行しよう!Git乗り換え超初級
ポイントをおさえて移行しよう!Git乗り換え超初級
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 

En vedette

師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
 

En vedette (12)

git導入メリット(社内LT資料改編版)
git導入メリット(社内LT資料改編版)git導入メリット(社内LT資料改編版)
git導入メリット(社内LT資料改編版)
 
グリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべてグリーを支えるソーシャルコーディングのすべて
グリーを支えるソーシャルコーディングのすべて
 
Github of project
Github of projectGithub of project
Github of project
 
Wantedly - 世界一"いいね!"される 求人サイトの作り方
Wantedly - 世界一"いいね!"される 求人サイトの作り方Wantedly - 世界一"いいね!"される 求人サイトの作り方
Wantedly - 世界一"いいね!"される 求人サイトの作り方
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
 
How Perl Changed My Life
How Perl Changed My LifeHow Perl Changed My Life
How Perl Changed My Life
 
会社に Github導入した話
会社に Github導入した話会社に Github導入した話
会社に Github導入した話
 
GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?
 
はじめようGit
はじめようGitはじめようGit
はじめようGit
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 

Similaire à Metahub for github

Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
Takashi Imagire
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 

Similaire à Metahub for github (20)

Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
Cryogenでサイトつくろーじぇん
CryogenでサイトつくろーじぇんCryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
 
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
2015 0807 ConoHa I am the bone of the OpenStack API CLI tool
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 

Metahub for github