開発プロセス Ruby

毎日の開発ふりかえりを支援する furik のご紹介

開発プロセス Ruby

チーフエンジニアの @hsbt です。

今日はペパボでの日報と日報支援ツール furik について紹介します。

日報とは

日報とは、企業をはじめとする組織で様々な用途に使用されます。日々の作業の結果や記録として使われたり、チームのメンバーが考えていることや、その日その日の気分を知ることでコミュニケーションを取るための材料として使われたりします。

上記に述べた日報の使われ方は、主に自分以外の他者が参照するための用途ですが、@hsbt は日報を書きながら、何が原因で質の低い仕事をしたのか、明日良い結果を出すにはどうすればいいのか、というその日の仕事の質のふりかえりを行っています。

GitHub と日報

ペパボでは、GitHub と GitHub Enterprise を使用しています。開発者は pull request によるコードのアウトプットだけではなく、issue を用いた設計の議論、pull request のレビューによるソフトウェアの品質改善活動など、あらゆる用途に用いています。このGitHub を通じた開発の活動のアウトプットは、ペパボの大切にしてほしい3つのことの1つである「アウトプットすること」の実践ともいえます。

この GitHub の活動と活動の記録である日報をうまく融合させることはできないかと考え、生まれたのが furik です。

furik

当初、retrospective という名称で作成していましたが、長くて打ちにくいというフィードバックから "furikaeri" の先頭5文字である furik と名付けました。

furik は GitHub と GitHub Enterprise の API を用いて、オプションで与えた期間(デフォルトは実行した日のみ)の pull request, issue の open, comment, close の情報を取得し、markdown 形式で標準出力に出力します。furik は rubygems からインストールできます。

$ gem install furik

furik は元々社内ツールとして開発されてていたスクリプトのため、GitHub と GitHub Enterprise の両方の活動結果を出力していましたが、今回 OSS として公開するにあたって、GitHub Enterprise の活動についてはオプションの -l を付けることで出力するように変更を加えました。

その日の活動を出力するには furik activity を実行します。初回実行時に Pit による GitHub と GitHub Enterprise の API トークンを yaml として保存するよう促されるので、自分のアカウントのトークンを yaml の値として入力してください。以下が設定後の yaml ファイルの例です。

% cat ~/.pit/default.yaml
---
github.com:
  access_token: your_token
your.github-enterpise.host:
  access_token: your_enterprise_token
furik:
  github_enterprise_host: your.github-enterpise.host

トークンの設定が完了すると、GitHub の活動記録が出力されます。以下が @hsbt のアカウントで実行した例です。

% furik activity
Today's Activities
-

### ruby/rubyspec

- [pull_request](https://github.com/ruby/rubyspec/pull/158): Set Net::FTP.default_passive to false.
- [comment](https://github.com/ruby/rubyspec/pull/158#issuecomment-155703551): :+1: (Set Net::FTP.default_passive t...)

### ruby/ruby

- [pull_request](https://github.com/ruby/ruby/pull/1091): Fix typo, double 'means'
(snip)

@hsbt は上記の出力結果を、日報にコピーアンドペーストし、以下のように所感を加えた上で社内に共有しています。

## 2015年11月10日

### ruby/rubyspec

- [pull_request](https://github.com/ruby/rubyspec/pull/158): Set Net::FTP.default_passive to false.

上記は Net::FTP モジュールのパッシブオプションをデフォルトで true としたら、rubyspec が落ちてしまったという修正

### ruby/ruby

- [pull_request](https://github.com/ruby/ruby/pull/1091): Fix typo, double 'means'

単純な typo だったのでさくっとマージ

(snip)

上記の例では、pull request が何なのかということを簡単に説明するだけになっていますが、心に残ったレビューコメントなどは、何故このようなコメントをしたのか、何が重要なのかという「その時の考え」を頭の中だけに留めずに外に"アウトプット"するよう心がけています。

また、GitHub の活動結果が、issue へのコメントのみになり、pull request として現れない時は「次の日はもっとコードを書いてアウトプットしよう」とその日を省みたり、close する pull request や issue が多い日は「今日は積極的に DONE の条件を確認してメンバーのアウトプットを世の中に出して行けた日だな」などと自分が何を中心に活動した日だったか、ということを確認したりしています。

まとめ

GitHub を通したアウトプットを日報に可視化することを支援する furik について紹介しました。皆さんも是非 furik を利用して、日報を自分自身のフィードバックの手段として活用してください。