GitHub Kaigiに参加してきました

2014/6/1 に渋谷のサイバーエージェントさんのセミナールームで開催された GitHub Kaigiに参加してきました。

会場

サイバーエージェントさんのセミナールームAは渋谷マークシティの13Fにあり、駅からは少し迷いがちですが近い場所でした。参加者500名にもかかわらず会議テーブルと電源が使えるようになっていて驚きました。
(私が全体を知らないのでもしかすると部分的だったかもしれません。)
無線LANや飲み物の提供、ビアバッシュでの食事提供などもあり、スポンサーやボランティアで運営している技術者の方々には頭が下がります。

セッションの概要

以下、セッションの概要を簡単に記載します。各セッションの資料はPDFで上がっていて、そのうちustreamビデオも公開されるそうなので、詳細はそちらを確認されることをお勧めします。

  • GitHub実践入門 ─ Pull Request による開発の変
    • GitHub実践入門」の著者によるGitHubを活用した開発の世界の話。GitHubのある開発の世界とそうでない世界の差を、習慣、機会、品質、心理の面から示していました。また、GitHubをただ利用している開発と、その先の活用している状態との差として、Pull Requestがただのマージ依頼でなくそこで対話が生まれる状態としていました。GitHubを活用できるようになるために成長の段階に応じて必要なことを示したガイドブックとしてこの書籍を紹介していました。
    • GitHub実践入門は私も購入しました。Pull Requestの送り方、受け方を実際に手を動かして学べるようにしている他、画面構成を細かく説明しているのが私にとっては助かりました。
  • はてなブログチームの開発フローとGitHub
    • はてなブログの開発におけるGitHub利用前および使い始めてからの課題とその解決について取り上げていました。はてなブログは開発者5人+デザイナー二人で月間1300コミット、月間45回リリースという規模で開発されているそうです。タスク管理ではGitHubイシューがタスク管理には使いにくいこと、レビューではPullReqが放置される問題、リリースではデプロイ作業とプロセスとの乖離の問題を取り上げ、それぞれはてなでどのように取り組んでいるかを示していました。
    • 私は業務ではほとんどGitHubを使っていませんが、オンラインでのレビューが滞りがちになるとか、デプロイ作業と管理が人でしかつながっていないという問題は一般的なように感じました。レビュータイムの導入や、デプロイ時のチェックリスト生成自動化のようなことは改善のヒントになりそうです。
  • OSS と GitHub (仮)
    • RubyRailsのコミッター、kaminariの開発者である @a_matsuda さんによるOSS界隈でのGitHubの使われ方に関するお話。GitHubにとてもマッチしているRails、かたくなにsvnがマスターのRuby、ドキュメントとコミュニティでうまくいっているkaminariなどを例示していました。その上でGitHubはコードを書く人に「あちら側」と「こちら側」のない平等な世界を提供するので、1歩を踏み出してコードを書こうという呼びかけになっていました。
  • How GitHub Works
    • GitHubではモチベーションを重要視していて、そのために柔軟な働き方が可能な仕組みを構築しているそうです。同じオフィスで働くこともできるけれど、リモートをデフォルトと考えてツールを整備、その上で信頼を築くために実際に会う機会を作るなど。
  • GitHubで
雑誌・書籍を作る
    • Web+DB Press関連書籍の著者とのやりとりをGitHubで行っているお話。原稿は以前は専用の全角編集記号によるマークアップだったのを、今はMarkdownにし、そこからAdobe InDesignテキストに変換するツールを使っているそうです。GitHubにしてから執筆の進捗が見える化された、バージョン管理前提なので大きな変更提案がしやすいなどを挙げていました。
    • テキストベースの高度な編集作業である点はソフト開発と同じなので、GitHubの使いこなしさえうまくいけば雑誌編集に使うのは実は自然な流れなのかもしれません。
  • Atom, the Programmable Text Editor
    • Emacsのようにパワフルだけど普段使う言語で拡張でき、シンプルでそのまま使えるエディタとして開発。でもOSに近いレイヤーまで新たに実装するのを避けるためにChromeをベースに開発されています。HTML5実装であるために、変更したい時に探しやすいといった利点もあるようでした。
    • おもしろそうなので私もAtomをダウンロードしてはみましたが、残念ながらMacのVoiceOverからは表示内容を取得できませんでした。しかし多機能なエディタなので、単にVoiceOverがHTMLビューとして認識しても機能を果たす期はしません。HTML直接でなく内部APIがあるようなので、それらを使ってEmacspeak的アプローチで音声UIを構築すべきなのではと思いつつ、0からそこまで持っていくほどの必要性を感じていません。
  • 入門書には載ってない Git & GitHub Tips
    • qiitaで人気のあるGitHubのTips紹介でした。merge.conflictstyleによるコンフリクト時の元ソース表示、インデックスにgit addしている状態からのgit stashの操作、git-new-workdir、git diff/applyによる空白コミットの分離、git fsckによるコミット救出、hub browseと hub pul-request、rebase.autosquashなど。
    • まだまだgitは奥が深いです。
  • Rebuild.fm Live(47になるみたい?)
    • PullRequest駆動、Hubot、Atom contribution guideline、リモートワークにおけるSqweggleなど
  • LT

感想

全体として、GitHubやgitのTips、自プロジェクトでの使い方や工夫、エモな話まで、とても勉強になりました。

今日はおそらくGitHub Kaigiなので特殊な環境かもしれませんが、もはやgit + GitHub利用はWeb系やOSS開発において当然のツールとなっているなと改めて感じました。最近やっとGitHubのUIが理解できてPull Requestを送ったりしていると、少しがんばればもっと世の中に貢献できるんじゃないかという期がしてきます。コードを中心にした共同のツールとしてよく考えられているからでしょう。

またそこから1歩進んで、Hubotにデプロイ依頼するとデプロイのチェックリストが入ったプルリクエストが生成されて、それがレビュー・マージされるとデプロイ、といったように、共同作業の土台としてGitHubを使う工夫はおもしろいと思いました。ここはGitHubに限らず、ワークフローの改善ととらえて参考にしたいところです。

最後に

久しぶりにこのような規模の一般のセミナーに参加し、日頃文字や声だけで聞いている人と同じ場を共有したり一部の方とはお話できて、とても有意義でした。運営やスポンサーの方々、また、いきなり私のフォローを頼まれたのに対応してくださった sota0805 さん、ありがとうございました。
今後も機会があれば勇気を出して参加して行きたいと思います。
その前にコード…。