GitHub の新機能 Projects を使ってみる

# Projects とは
[GitHub Universe 2016](https://github.com/universe-2016) にて発表された新機能です。いわゆるカンバン機能で、リポジトリ別に作成することができます。

## 参考サイト
- [A whole new GitHub Universe: announcing new tools, forums, and features](https://github.com/blog/2256-a-whole-new-github-universe-announcing-new-tools-forums-and-features)
- [Tracking the progress of your work with Projects - User Documentation](https://help.github.com/articles/tracking-the-progress-of-your-work-with-projects/)
    - [About Projects - User Documentation](https://help.github.com/articles/about-projects/)

# 2016-10-31: 追記
2016-10-28 を以って、Projects が Organizations 上でも使えるようになりました。これにより、複数のリポジトリを跨いで Issue を管理することができます。

## 参考サイト
- [Introducing Projects for Organizations](https://github.com/blog/2272-introducing-projects-for-organizations)

# 利用方法
## Project の作成
1. リポジトリに **Projects** タブが追加されているので、それをクリックします。
2. **New Project** ボタンをクリックします。
3. プロジェクトの名前と説明文（任意）を入力し、**Save project** をクリックして完了です。

### Project 詳細
- プロジェクト名は 140 文字まで。
- 説明文には [GitHub Flavored Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) が使用できます。ただし、タスクリストや Issue などへのリンクは機能しません。
- プロジェクト名と説明文は **Edit project** をクリックすることで再度編集できます。
- プロジェクト画面右上の **Fullscreen** をクリックすることで、最低限のヘッダを残してカンバン部分がブラウザいっぱいまで広がります。
    - **Exit fullscreen** をクリックすることで戻ります。
- プロジェクトの数に制限はないようです。
- 作成したプロジェクトは、リストの一番下に追加されていきます。
- プロジェクトを名前で検索することができます。

## Column の追加
1. **Add column** をクリックします。
2. カラムの名前を入力し、**Create column** をクリックして完了です。

### Column 詳細
- カラム名は 140 文字まで。
- カラムの数に制限はないようです。
- カラムを削除すると、登録されていたカードはすべて削除されます。

## Card の管理
- カードとして、Note を新しく作成するか、既存の Issue や Pull Request を追加することができます。
- ドラッグ＆ドロップで、カラム内の順番やカラム間を移動できます。
- プロジェクト間を移動させることはできません。
- **Copy Card URL** をクリックすることで、そのカードへジャンプするための URL をコピーすることができます。

### Note の作成
1. カラム右上の **＋** ボタンをクリックします。
2. ノートの内容を入力し、**Add note** をクリックして完了です。

#### カード（Note）詳細
- ノートの内容は 140 文字まで。
- 内容には [GitHub Flavored Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) が使用できます。ただし、タスクリストや Issue などへのリンクは機能しません。
- **Convert issue** をクリックすることで、Issue へ変換することができます。
    - この時、２行目を空行にしておくと、１行目が Issue のタイトルに、３行目以降が Issue の内容として変換されます。
- **Edit note** から編集を、**Delete note** から削除を行うことができます。
- カード上には、追加したユーザーの名前が表示されます。

### Issue または Pull Request の追加
1. プロジェクト右上の **Add cards** をクリックします。
2. 右側に追加できるカードの一覧が表示され、ドラッグ＆ドロップで任意のカラムに追加することができます。

#### カード（Issue または PR）詳細
- クローズまたはマージ済みでも一覧に表示されます。
- フィルターを記述することで絞り込むことができます。
- **Remove from project** をクリックすることで、プロジェクトから除外することができます。
    - 元の Issue または PR が削除されるわけではありません。
- Issue または PR 画面からは、追加されているプロジェクトのみ確認できますが、その画面から任意のプロジェクトやカラムを選択することはできません。
- Issue または PR がクローズまたはマージされても、プロジェクト側はなんら関与しないため、手動で管理する必要があります。
- カード上には、オープンしたユーザーの名前、設定されているタグ、割り振られているユーザーのアイコンが表示されます。

## 参考サイト
- [Creating a Project - User Documentation](https://help.github.com/articles/creating-a-project/)
- [Editing and deleting a Project - User Documentation](https://help.github.com/articles/editing-and-deleting-a-project/)
- [Adding issues and pull requests to a Project - User Documentation](https://help.github.com/articles/adding-issues-and-pull-requests-to-a-project/)
- [Adding notes to a Project - User Documentation](https://help.github.com/articles/adding-notes-to-a-project/)

# 使ってみての所感
## プロジェクト
- リポジトリ下にいくらでも作れるので、バージョンやチーム別に分けられて便利。
- ただし、リポジトリを跨ぐことはできないため、その辺りは別サービスに譲るか。
- Issue のようにオープンやクローズをしたい。
- 現状だと、作成すると下へ下へ追加されるので、並び替えを行いたい。
- プロジェクトやカラム、カードの操作で通知は一切ないが、必要な人もいるかもしれない。

## カラム
- 最低限の機能はあるため、特に問題なし。
- カラムのコピーや、別カラムへのまとめてカード移動、別プロジェクトへの移動があると便利かもしれない。
- ZenHub のように、移動すると自動でクローズするカラムがあると便利かもしれない。
- Issue のようにオープンやクローズをしたい。

## カード
- ノートもマイルストーンへ追加できると便利かもしれない。
- カード上に、マイルストーンやタスク残数なども表示してほしい。
- プロジェクト間も移動したい。

## 別サービスとの競合
- 開発に ZenHub と Waffle が協力しているらしいので、お互いを喰い合うことは無さそう。
- 少なくとも ZenHub は Projects に対応予定とのこと。
    - [Dispatches from GitHub Universe: Integrating with Projects](https://www.zenhub.com/blog/dispatches-from-github-universe/)
- 開発コンセプトもそれぞれと微妙に異なると思われるので、共存は可能。
- ただし、それ以外のサービスについては競合は起こりうる。
- 現状では必要最低限の機能のみなので、小規模な開発には向いていそう。更にリッチな機能が必要であれば、各種サービスを利用する必要があるか。
- 標準機能かつ無料なので、いつでもどこでも気軽に使えるのが強み。ただし、GitHub 自体はスマホ対応にあまり力を入れていないようなので、そのあたりはサードパーティ製のアプリに期待か。

# まとめ
必要最低限の機能ですが、あまり大きくない規模の開発ならこれで必要十分だと思われます。タグで進捗管理するよりよっぽど使いやすいので、試してみる価値はあるでしょう。まだ実装されたばかりなので、今後のアップデートで更に使いやすくなる可能性もあります。

既に存在するサービスとも微妙に開発コンセプトが異なるため、共存は十分可能です。もちろん、既に利用しているサービスで十分なら無理に使う必要はありませんが。

# テストした環境
[remyroez/sandbox](https://github.com/remyroez/sandbox)