📎

研究タスク管理のためのGitHub活用(一例)

2022/05/12に公開
1

はじめに

この記事にたどり着くような人で,研究者の方はたいていソースコードだったり,少なくとも論文執筆でLaTeXをgit管理している方だと思います.(Overleaf?シラナイデスネ)

私の研究活動でGitHubを,特にタスク管理に活用する環境を整えたので,その一例として今回紹介します.まだ試行段階なので各自にあった使い方に調整することをおすすめします.

TL;DR

GitHubの機能について(issue, milestone, projectsなど)熟知してるよって人はこのリポジトリを見れば大体理解できます.
続いて読んでくださる方もこれを見ながら読んでいただけると理解がしやすいと思います.

解説

Issue

これについては特に解説は必要ないと思います.一番細かいタスクをissueとして追加するのが理想ですが,サブタスクが発生するけどmilestoneにするほどでもないタスクもここに追加します.(ちゃんとリンクをつけて上下関係を明確にしましょう)

Issueには適切なラベルを付与することで管理が楽になります.

Milestone

研究における大まかな目標(研究計画とかで書く粒度?)を設定します.その名の通り研究の段階の目安として活用しましょう.
地味に重要だと考えていて,期限と共に設定することで研究が迷走することがなくなるのではないかと思っています.卒論のときは結局何がしたいんだっけ?みたいになったことが多かったので(根本的にテーマから手法から全てよくなかったのは棚上げ).

Projects

この記事の本題になると思います.なかなかProjectsを使っているリポジトリがないので用途がはっきりしませんが,あるプロダクトにおける新しい機能の追加とかで使われるのが想定された使用例ですかね.(それこそmilestoneとか最悪issueとラベルでも管理できるけど)

ここでは進捗管理にProjectsを使用します.例えば私の研究室では,数週間に1度の進捗報告会が行われます.1回のゼミが短くちょっとしたことで延期/中止になってしまうので場合によっては一か月期間が空いたりと,前回のゼミからなにやったっけ?となることもしばしば.

まずは進捗報告の直後に新しくボードを作成します.

  • title: どの時期からの記録かわかるようなタイトル
  • description: ご自由に
  • template: Automated kanban
    • これに設定すると,カラム(To do, In progress, Done)の生成とissueの操作がトリガーになるカードのカラム移動をよしなに設定してくれる

ボードを作成したら,テンプレカードを削除して(これ生成されないようにできないの),ボードになってるエリアの右上の"+ Add cards"から今オープンされているissueを,次の進捗報告までに終わらせたいと考えているものを"To do"に移動させる(脳死で全部ドーンしてもいいと思う).これでカードが生成されて,issueと連携する.

あとは進捗を錬成してissueを閉じればなんとボード側で勝手にカードがDoneカラムに移動する(めんどくて画像無し)

以下の画像みたいにしていけば,この時期なにしてたとかがわかる.なお,closeしたissueは全てのボードでDoneカラムに移動すると思うので注意. ProjectをCloseすれば全てのオートメーションは停止されるらしいです.

進捗報告資料を作るときはその時期のボードを参考にする.

他サービスとの比較

タスク管理ツールといえば,Trelloがあります.私も人生におけるタスク管理をTrelloで行っていますが,Trelloは良くも悪くも気軽にカードを追加/削除できます.commit(コード)や,issueが前提としてあるGitHubの機能は進捗報告向けのタスク管理ができるのかなって思いました.
研究関係だけど資料の提出期限とかはTrelloで管理してたりします.ここらへんの使い分けは個人に依存すると思いますが参考程度に.

感想

こういうの考えるの好きなんだぁ...
こういうことばっかやってるので本来の目的である研究が進まないんだな(本末転倒).

注意ですが,リポジトリは特別な理由がない限りPrivateにしましょう.データセットや資料が流出したら目も当てられないので.

初めてこういうサービスで記事を書きましたが,どこまで技術的である必要があるのかわかんなくて個人ブログに投稿してることも多いので,探り探りほかの記事も書いてみようかなぁなんて思ってます.

ご意見ご感想なんでもよいのでくれると喜びます.

気が向いたらまた.

Discussion