SlideShare a Scribd company logo
1 of 78
Download to read offline
私はいかにして
pull request を
    行ったか
あるいは Social Developping
       について
              よしだあつし
自己紹介
 お名前: よしだあつし
 Twitter ID: @yalab
 職業: プログラマ兼ニート
 興味: Rails 3.1、 scala、
 android
 
まずはGithubにつ
いて簡単に説明し
ます
Github とは?
Github とは?
 https://github.com/
 git リポジトリのホスティングサー
 ビス
 wiki や Ticket などのプロジェク
 ト支援ツール多数
 コードコラボレーションのプラット
 フォーム
Github を使っているプロジェ
クト
 Ruby On Rails
 Rubygems
 Node.js
 jquery
 その他多数...
言語の割合
  Javascript 20%
  Ruby 16%
  Python 9%
  Shell 8%

https://github.com/languages
 
github を使用し
 た開発サイクル
1、プロジェクトをフォークする
1、プロジェクトをフォークする
2、プロジェクトを clone
3、fix->commit->push
4、pull requset
5、説得
5、説得後
 マージ or リジェクト
 たまに放置
 
    ここからが
    本題です
 
      ある日よしだ君は
    当時最新版だったrails
    3.0.0.beta3 を使って
     開発をしていました
 
    「最新版のRailsを使って
     アプリを作ってみるお」
 




    カタカタカタカタ
 
    「よし、後はメールが
    送信できればおk」
 




    カタカタカ.....
 
    「あれ?」
 
    From: do-not-reply@localhost
    To: test@localhost
    Subject: 縺皮匳骭イ縺ゅj縺後→縺_縺斐*縺_縺セ縺
    Date: Fri, 04 Jun 2010 21:00:00 +0900

    縺薙_Γ繝シ繝ォ繧貞女菫。縺輔l縺滓凾轤ケ縺ァ縺ッ縺セ縺_
    逋サ骭イ縺ッ遒コ螳壹@縺ヲ縺翫j縺セ縺帙s縲莉·荳九_Μ繝
    ウ繧ッ縺ォ繧「繧ッ繧サ繧ケ縺励_∫匳骭イ繧堤「コ螳壹@縺ヲ縺上□縺輔>
    https://localhost:3000/users/confirmation?confirmation_
    token=X4VLMPc4iqyyVzCTWOK3
    繧ゅ@縺薙_Γ繝シ繝ォ縺ォ隕壹∴縺檎┌縺_蝣エ蜷医_♀謇区焚縺ァ縺吶′
    anmitsu64@gmail.com縺セ縺ァ縺秘_」邨。縺上□縺輔>縲_
 
    「文字化け!?」
 
    「えっとどうすればいいんだ?」
 




    カタカタカタカタ
 
    「なんかActionMailerの基底が
       tmailじゃなくってmail
        ってのになってる。」
 
「ってことはrails2のフィックスのさせ
    方じゃダメなのかな?」
 




    Google様....
 
「....やはりググっても何も出てこない
           か」
 
「よろしい。ならば戦争モンキーパッチ
        ングだ」
モンキーパッチングとは?
 オリジナルのコードを変更すること
 なく動的に格調したり変更したりす
 る方法
      class String
        def cat
          "nya~"
        end
      end
      # あるいは
      String.module_eval do
        def cat
          "nyan"
        end
      end
 




カタカタカタカタカタカタカタカタカタカ
       タカタカタ
 
    できた
ブログで公開
 
    ここから時間は
     半年ほど進む
 
「さて久々にまた新しいRailsアプリで
も作るかな」
 




    カタカタカタカタ
 
    「よし、後はメールが
    送信できればおk」
 
    「あれ?」
 
    From: do-not-reply@localhost
    To: test@localhost
    Subject: 縺皮匳骭イ縺ゅj縺後→縺_縺斐*縺_縺セ縺
    Date: Fri, 04 Jan 2011 21:00:00 +0900

    縺薙_Γ繝シ繝ォ繧貞女菫。縺輔l縺滓凾轤ケ縺ァ縺ッ縺セ縺_
    逋サ骭イ縺ッ遒コ螳壹@縺ヲ縺翫j縺セ縺帙s縲莉·荳九_Μ繝
    ウ繧ッ縺ォ繧「繧ッ繧サ繧ケ縺励_∫匳骭イ繧堤「コ螳壹@縺ヲ縺上□縺輔>
    https://localhost:3000/users/confirmation?confirmation_
    token=X4VLMPc4iqyyVzCTWOK3
    繧ゅ@縺薙_Γ繝シ繝ォ縺ォ隕壹∴縺檎┌縺_蝣エ蜷医_♀謇区焚縺ァ縺吶′
    anmitsu64@gmail.com縺セ縺ァ縺秘_」邨。縺上□縺輔>縲_
 




    ア〜〜〜〜
 
    「まだ直ってない」
 
    「モンキーパッチじゃだめだ」
 
「よろしい。ならば戦争pull request
         だ」
pull request とは?
  github でパッチを取り込んでもら
  うためのアクション
 
    pull requestを考えたものの
 
    ここで一つの葛藤が生まれる
葛藤
 メンドくさ...誰かが直してくれるの
 を待ったほうがいいんじゃないか?
 僕が書くようなコードを送ってもい
 いんだろうか?
 っていうか僕英語できないんです
 けど (英検3級)
 
    「悩んだ結果」
 
送ってみた
送ってみた



「やぁマイケル。iso-2022-jpってエン
コーディングでメール送りたかったけど
なんか今のmail gemじゃ扱えなかった
んだ。だから修正してみたよ。」
返事があった


「ありがとう。で、これってruby 1.8でも
動くの?」
説明する


「ごめん動かない。Ruby 1.8はマルチ
バイト文字をサポートしてないからね。
Ruby 1.8 で動かした場合単純に何も
しないようにしてる。」
他の人のコミットで壊れた




「あそ。HEADをいじったらエラーになっ
たんだ。ルイスってやつの最近のコミット
が原因なんだけどrebaseして直して。そ
の後にマージするか決めるわ」
rebase とは
 自分のコミットを載せる基準コミッ
 トを変更する作業
 今回の件でいうとコミットの順番を
 並べ変えてルイスの変更の後に僕
 の変更を行ったことにした
修正する


「rebaseして直したよ」
野次がはいる



「ちょっと待って、iso-2022-jpってダミー
エンコーディングだよ。Rubyがフルサ
ポートしてないのにこのパッチを取り込
むのってまずくない?」
反論する



「iso-2022-jpがダミーなんて知ってる
よ。encodingが欲しいならgemを作
れ。そこは問題なんじゃなくってascii非
互換(とされている)とをmail gem が
まったく使えない事が問題なんだよ」
そしてマージされる


「ありがとう。マージしたよ」
 




    万歳
pull request をして得られ
るもの
 自分のコードが認められた承認欲
 求
  自信がつく
  野良ビルドを作らなくていい
  プレゼンでしゃべるネタになる
pull request 時の注意点
 READMEにcontributeについて
 書いてある場合はそれに従う
  テストは全て通す
 インデントなどは元プロジェクトに
 従う
 必要以上のことはしない(ファイル
 末尾に改行を加えるとか)
pull request 時の注意点
 pull request 後はそのブランチを
 いじってはいけない
  リジェクトされても泣かない
 マージされた暁には勉強会でプレ
 ゼンする
 リジェクトされても勉強会でプレゼ
 ンする
 
    ソフトウェアは完璧ではなく
    バグや機能不足があります
 
OSSなプログラムならば自身の手で
    直すことが可能です
 
せっかく直した(あるいは回避した)の
だったらその成果で世界に貢献すると
いうのはどうでしょうか?
 
なんちゃって英語でもわりといけまし
た
まとめ
 github で pull request をした
 経験をお話しました
 あなたが見つけたバグは直されて
 いないから見つかったものです
 待っていても直らないので積極的
 に直しましょう(報告だけでも十分な
 貢献です)
まとめ
 英語のコミュニケーションも辞書や
 google翻訳を使えばなんとかなり
 ます
 何よりも我々にはコードというコ
 ミュニケーション手段がある
 
    ちなみに
 
     パッチを送る以外にも
    いろいろ出きることはある
出きること
 利用して広める
 不具合や改善案の報告をする
 ドキュメントを書く
 パッチを書く
 
    RubyもOSSソフトウェアです
 
すでにOSSソフトウェアを利用してな
 にかしらの恩恵を受けています
 
OSSから受けた恩
恵は是非OSSへ
貢献することでか
 えしてください
 
    ご清聴ありがとう
     ございました

More Related Content

Viewers also liked

Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしようよしだ あつし
 
僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法よしだ あつし
 
デバッガでデバッグしない
デバッガでデバッグしないデバッガでデバッグしない
デバッガでデバッグしないよしだ あつし
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
まじょのおしごとの裏側
まじょのおしごとの裏側まじょのおしごとの裏側
まじょのおしごとの裏側よしだ あつし
 
15分でできるSQLインジェクション
15分でできるSQLインジェクション15分でできるSQLインジェクション
15分でできるSQLインジェクションよしだ あつし
 
低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミングよしだ あつし
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ Hiroyuki Tanaka
 

Viewers also liked (14)

Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしよう
 
Railsの今昔
Railsの今昔Railsの今昔
Railsの今昔
 
僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法
 
デバッガでデバッグしない
デバッガでデバッグしないデバッガでデバッグしない
デバッガでデバッグしない
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
まじょのおしごとの裏側
まじょのおしごとの裏側まじょのおしごとの裏側
まじょのおしごとの裏側
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
15分でできるSQLインジェクション
15分でできるSQLインジェクション15分でできるSQLインジェクション
15分でできるSQLインジェクション
 
Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
 
Rubyコードの最適化
Rubyコードの最適化Rubyコードの最適化
Rubyコードの最適化
 
低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング
 
Vue.js ハンズオン資料
Vue.js ハンズオン資料Vue.js ハンズオン資料
Vue.js ハンズオン資料
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 

Similar to 私はいかにしてpull request を行ったか - あるいは social development について

サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)Ken Muryoi
 
RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩Masato Noguchi
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Tsutomu Yano
 
Rでを作る
Rでを作るRでを作る
Rでを作るNagi Teramo
 
蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?Hayato Tominaga
 
Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-Jun Saeki
 
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前にPythonの非同期処理を始める前に
Pythonの非同期処理を始める前にkoralle
 
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料Teruki Shinohara
 
SwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみるSwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみるYuya Oka
 
20140903groonga発表資料
20140903groonga発表資料20140903groonga発表資料
20140903groonga発表資料Hironobu Saitoh
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話Shinobu Okano
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Koji SHIMADA
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + NashornTakuya Ueda
 
Dentoo.LT #3 "Party with Twitter"
Dentoo.LT #3 "Party with Twitter"Dentoo.LT #3 "Party with Twitter"
Dentoo.LT #3 "Party with Twitter"Akihiro Urushihara
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 

Similar to 私はいかにしてpull request を行ったか - あるいは social development について (20)

サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
 
RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
Electron を知る
Electron を知るElectron を知る
Electron を知る
 
kamatte(かまって)
kamatte(かまって)kamatte(かまって)
kamatte(かまって)
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
 
メイドめーる
メイドめーるメイドめーる
メイドめーる
 
Rでを作る
Rでを作るRでを作る
Rでを作る
 
蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?
 
Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-
 
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前にPythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
 
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料
第2.1回 ツイッターAPI勉強会 @ts_3156 発表資料
 
SwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみるSwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみる
 
20140903groonga発表資料
20140903groonga発表資料20140903groonga発表資料
20140903groonga発表資料
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + Nashorn
 
Dentoo.LT #3 "Party with Twitter"
Dentoo.LT #3 "Party with Twitter"Dentoo.LT #3 "Party with Twitter"
Dentoo.LT #3 "Party with Twitter"
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 

Recently uploaded

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

私はいかにしてpull request を行ったか - あるいは social development について