SPIDERPLUS Tech Blog

建設SaaS「スパイダープラス」のエンジニアとデザイナーのブログ

Github Projectsの進捗率をスプレッドシートで見える化した話

こんにちは、プロダクトGの上田です。

みなさんはプロジェクトの進捗状況をどのように管理していますか。
私はプロジェクトのタスクの進捗率をガントチャートで管理するのが好きです。
以前、GitHub Projectsの進捗率をExcel見える化してガントチャートで管理した話をしました。
今回はExcelからスプレッドシートへ移行した話をしたいと思います。
※公開用に一部情報を省略、編集しております。

 

📝 この記事で説明しないこと

✔️ 目次

前回のおさらい

メンバーはアサインされたIssueを進めています。
私は対応する案件がリリース日までに終わるのかどうか、順調にすすんでいるかどうかを進捗率を見て随時確認したいと考えています。
別途進捗を管理するファイルを用意すると、メンバーに余計な手間がかかってしまいます。

そこで、メンバーにはアサインされたIssueのみ更新してもらい、管理したいIssueの情報を収集することで進捗状況を管理できないか考え、Excelで実装しました。

前回の記事について詳しくは以下↓

techblog.spiderplus.co.jp

 

なぜスプレッドシートへ移行するのか

開発で使用するドキュメントはGoogleドライブに配置することが多く、ExcelGoogleドライブに配置してもマクロを実行するためには各自ダウンロードして確認しなければならず、共有が難しいという手間がありました。
そのため、進捗の確認は私のPCで更新したExcelファイルを画面共有で表示して確認することが多く、メンバー自身で進捗状況を確認する機会が少なくなっていました。
そこで、誰でもチームの状況をいつでも確認できる状態を作るためスプレッドシートへ移行することにしました。

スプレッドシートに移行する際に躓いたこと

Microsoftが提供するExcelガントチャートスプレッドシートに変換したところ、進捗状況欄の進捗率に応じて、スケジュールの線の色を塗りつぶしてくれる機能が動作しなくなりました。
いくつかの条件付き書式が消えてしまい、一部の塗りつぶしが効かない状態となっていました。
原因は、条件付き書式に名前定義された値を用いた関数が使用されており、Excelでは名前定義を重複して登録できるけど、スプレッドシートは同一の名前定義を許していないことにありました。
そのため、同一の名前定義が削除され、関係する条件付き書式も一緒に削除されてしまったのです。 Microsoftが提供するExcelガントチャートの名前定義と条件付き書式を一つずつ紐解いて、スプレッドシート側に再定義することで、なんとか移行することができました。

Excel VBAとGASの違いを経験

Excel VBAからGASに書き換えが完了し、動作確認をしたところ処理完了まで時間がかかるという事象に遭遇しました。複数のシートを全て更新しようとすると、スクリプトの実行タイムアウトである30分を超過して中断してしまいます。原因は、GASで提供されている関数1つ1つがAPIコールであり、1セルずつ取得や更新をすると、APIを何度も呼んでしまうためです。スプレッドシートからのセル情報取得や更新を範囲指定で行うことでAPIコールの数を減らし、処理時間を短くすることができました。
私自身、GASを利用するのは初めてだったため大きな学びとなりました。

 

【Before】1セルずつsetValueを使って更新していた ※一部抜粋

// タイトル
sheet.getRange(rowIndex,colIndex++).setValue(issue['タイトル']);
// 担当者
sheet.getRange(rowIndex,colIndex++).setValue(issue['担当者']);
// ステータス
sheet.getRange(rowIndex,colIndex++).setValue(issue['Status']);

【After】2次元配列(tmpData)にいったん格納しておき、setValuesで一括でセル更新

 if (tmpData.length > 0){
   sheet.getRange(rowIndex,colIndex,tmpData.length, cj).setValues(tmpData);
     rowIndex = rowIndex + tmpData.length;
 }

Excelからスプレッドシートへ移行した結果

スプレッドシートにしたことによりチーム内で簡単に進捗状況を共有できるようになりました。また、チーム外のメンバーも予定や状況を確認することができ、チーム間の共有もやりやすくなったと思います。
現在は、案件別シートやメンバー別シートなどを用意し、トリガー設定で1時間置きに更新しています。
また、スプレッドシートのテスト項目書とリンクしてテスト項目数をタスク数に反映することも行っているため、テストが遅延していないかも合わせて確認することができます。
Excelに比べ非常に便利になったと感じました。

今後の運用について

今後はプロジェクトの運営方法の変化に応じて、随時カスタマイズしていこうと思います。

最後に

スパイダープラスでは仲間を募集中です。
もっといい方法を知っている、自分だったらこんな風に管理する、などなど、スパイダープラスにちょっと興味が出てきたなという方がいらっしゃったらお気軽にご連絡ください。

https://spiderplus.co.jp/contact/

参考

docs.github.com