25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyMineAdvent Calendar 2014

Day 12

RubyMineでIssue駆動開発 (GitHubのIssuesとRubyMineのTaskを連携する)

Last updated at Posted at 2014-12-12

こんにちは。

RubyMineはじめ、JetBrainsのIDEにはTaskというツールが備わっておりまして、こいつがどうもIssue駆動(チケット駆動)で開発するときにピッタリンコなので紹介します。
詳細な公式オンラインヘルプも併せてどうぞ。

Taskとは?

ここでいう「Task」は、プロジェクト内でプログラマにアサインされる作業としての「タスク」のことを指します。Task単位でIDEのContext(開いているファイルやタブ)やChangeListを切り替えることで、RubyMineが日々タスクに追われるプログラマをサポートしてくれます。

Taskツールできること
  • GitHubのIssues等のIssueトラッカーと連携して、Issue単位でTaskを管理できます。対応終わったらIssueをCloseしたりできます。
  • Taskごとに、Branch、Context、ChangeListを作れて、Taskごとにパパッと切り替えできます。

実際に使うと、以下のような感じでIssueドリブンで開発するのをRubyMine上で完結できます。

  1. GitHubのIssueから自分にアサインされているOpenなものを探してTaskを作る
  2. 必要なら一緒にBranch, Context, ChangeListも作る
  3. ガーっとコードを書く
  4. コミットしてプッシュして1.にもどる

前置きが長くなりましたが本編です。

用意するもの

(GitHubでやる場合)

  • GitHubのリポジトリ
  • 上記リポジトリのIssues(チケット)
  • 上記リポジトリにアクセスできるアカウント
  • RubyMine

Issueトラッカーの接続設定

まず、Issueを管理しているトラッカーへ接続を設定します。
メニューバーより、Tools → Tasks & Contexts → Configure Servers
ConnectToGitHub1.PNG

右にある緑の+マークを押して、使っているIssueトラッカーを選びます。今回はGitHubにつなぎます。
ConnectToGitHub1.5.PNG

Configured Serversにならびますので、下の方のフォームにリポジトリとAPIトークンを入力します。トークンが未発行の場合は、Create API token ボタンを押してこの場で作ることもできます(パスワード入力を求められます)。
ConnectToGitHub3.PNG

Test ボタンを押して、Connection is successfurlと表示されたら準備OK。 OKボタンを押してウィザードを終了します
GitHubConnectOK.PNG

Taskの作成

GitHubのIssuesに接続ができるようになったら、IssueをベースにTaskを作成します。

まず、先ほど接続したリポジトリのIssueの状態はこんな感じです
GitHubIssues.PNG
ピンクのブタが私のGitHubのアイコンです。上の2つがアサインされているIssueです

RubyMine戻って、Tools → Tasks & Contexts → Open Task
OpenTaskFromMenu.PNG

しばらく待つと、ポップアップでTaskの元にするIssuesが出てきます。GitHubと連携した場合、自分にAssignされているものだけが出てくるようです。ここで作業に取りかかるIssueをダブルクリックで選択します。
SelectTaskSource.PNG

今度はTaskと一緒に作るものについて聞かれます。
OpenTask.PNG

  • Clear Current Context
    • Contextをクリアします(ウインドウ配置をデフォルトに戻して、エディタで開いているファイルをすべて閉じます)。
  • Create Branch
    • Taskと一緒にBranchを作成してくれます。名前とBranch元を選ぶこともできます。
  • Create ChangeList
    • Taskと一緒にCangeListを作成します。

とりあえず全部チェックしてOKします。

おめでとうございます! Taskが完成しました!
TaskCreated.PNG
ツールバー右に現在のTaskが表示されています。また、先ほど作ったChangeListとBranchがアクティブになっています。

ちょっと便利なTaskの機能

Issueベースでタスクを作った場合、Issueにまつわるたまに役立つ機能があるので紹介します。

Tools → Tasks & Contexts
TaskUsefulFunction.PNG

Open <_task name_> in Browser: Issueをブラウザで開く

そのまんまです。GitHubでやってる場合、GitHubのIssueページが開きます。

Show <_task name_> Description: IssueのDescriptionを認する

IssueトラッカーのDescriptionをRubyMineのポップアップで表示することができます。
いちいちブラウザに遷移しなくていいのでチラ見したいとき等には便利かもしれません。
ShowDescription.PNG

Taskの切替

プログラマは一つの作業に集中したいんです。ですが、どうしても横やりは入ってきます。そしてマルチタスクを余儀なくされます。。。
そんなときに力を発揮する(?)のが、Task切り替えです。Taskを切り替えれば、作業に応じてIDEの状態をスイッチしてくれます。

Taskを切り替えるのに一番手っ取り早いのは、ツールバーの現在のタスクからプルダウンで選択する方法です。
ChangingTask.PNG

タスクを切り替えると、チェンジリスト、開いているファイルとウインドウレイアウト、ブランチが切り替わります。
Before
BeforeTaskChange.PNG
After
AfterTaskChange.PNG

Taskのクローズ

Taskの作業が終わったら、Taskをクローズします。

Tools → Tasks & Contexts → Close Active Task
TaskUsefulFunction.PNG

クローズ時のオプションをいろいろ聞かれます。
CloseTask.PNG

  • Close Issue
    • TaskのベースになっているIssueトラッカーのIssueのステータスをCloseへ更新します。
  • Commit Changes
    • Taskで作ったChangeListに未コミットの変更がある場合、コミットします。
  • Merge Branch
    • ローカルリポジトリのBranchをマージします。

個人的にはここのチェックは滅多に使うことはないです(今回記事を作るので、初めてチェックして使ってみました)。
コミットはこまめにしていると思いますし、Masterへのマージはローカルではやりませんし。Issueのクローズはレビューした後で行っていますので、自分のTaskが終わったところでCloseということもありませんので。。。
ま、一応こういう機能もありますよということで。

Close IssueをチェックしてOKすると、GitHubのIssueもきちんとCloseされていました。
※ GitHubの場合、Tokenに、リポジトリへの書き込み権限をつけておかないとエラーになります。
ClosedIssue.PNG

長くなりましたが以上です。
Enjoy RubyMine!

25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?