inFablic | Fablic, inc. Developer's Blog.

フリマアプリ フリル (FRIL) を運営する Fablic の公式開発者ブログです。Fablic のデザイナー・エンジニア・ディレクターが情報発信していきます。

FablicにJIRAを導入をしようとしたけど諦めた話

f:id:infablic:20171215145755p:plain

この記事は Fablic Advent Calendar 2017 16日目の記事です

こんにちは、Fablicでサーバーサイドエンジニアをやっている岸です。 オフィスの近くにある たいやき ひいらぎ の鯛焼きを来る日も来る日も食べることが生きがいです。

さて、16日目の記事テーマは「プロジェクト管理」です。そしてこのテーマは「複雑性の管理」という問題にスポットライトを当てていくことになります。

その前に、エンジニアの私が何故プロジェクト管理を?と思われるかもしれませんが、Fablicは慢性的に人不足であり、多忙な創業メンバーが現場で指揮するという事態が依然と発生しています。そこで彼らのエネルギーをもっと大事なところに集中してもらいたい・また私自身もキャリアの幅を広げたいという思いからプロジェクト管理を担当してみることにしました。

ちなみに私はプロジェクト管理の経験はほぼ無く、生まれたてホヤホヤでよちよち歩きの新米PMちゃんだと思ってお手柔らかに読んでみて下さい 🐣

プロジェクトの大きさ

今回管理するプロジェクトは

  • それなりの長期プロジェクトである
  • 期日が決まっており、開発都合ではスケジュールをズラせない
  • デザイナー、ディレクター、エンジニアが協働して変更が行われる
  • 複数のフィーチャが並行する(例:意思決定→プランニング→デザイン→コーディング という工程が並行する)

というものです。

どうやって管理するか?

これを管理し、参加メンバーが負担なく過ごせるために、以下を両立できることを目指しました。

  • 管理者(私)が俯瞰して調整できる(ガントチャート)
  • 各作業者が、長期間を複数の短い期間に分けて作業に集中できる(カンバン、スプリント)

さらに、細かな要件として次のようなこともできないか検討しました。

  • 複数チーム(GitHubリポジトリ)のタスク管理が横断的に可能であるか?
    • WebやAPIなどコンポーネントはGitHubリポジトリに依存しているので、横断的に俯瞰したい
    • しかしカスタマーサポートなどGitHubリポジトリの無いコンポーネントもある
  • ソースコードとIssueの進捗が連動するか?(例:コミットがあったらDOING、マージされたらDONE)

ただ一点、Googleスプレッドシートの全手動管理だけは避けようと思っていました。

  • すぐにローカルルールが乱立する
  • 大事なタスクに色を塗るとだいたい原色になるし、統一感が無いので何が何色か分からない
  • 「終わった」 ときのグレーアウトなど、配色が人によって異なる
  • スクロールがセル単位なので、文字数の多くセルの縦・横幅が広くなると見渡しづらくなる
  • セルをコピペする時に枠線や背景色を考慮したペーストが面倒
    • 背景色だけ維持して枠線は貼り付け先に合わせる、等…

けっこうあるあるじゃないでしょうか。

ツールの比較・選定

以上を踏まえて、世の中にある各種ツールを比較しました。

f:id:infablic:20171214165330p:plain

比較結果の通り、私が目指していたプロジェクト管理の形に近いのは JIRA であり、私の中でJIRA以外の選択をすることはもはや考えられませんでした。

どんどんJIRAの魅力にはまっていく私とは裏腹に、社内のJIRA経験者からは過去の辛い経験が挙がっていました。

  • jiraを便利に使おうとするとどんどん罠にハマって危険でとにかくつらかった
  • jira使うなら社内にjiraのメンテのみをする専任が少なくとも二人いないときついという経験則があって、fablicで使うのかなりきつそうな印象
  • 前職jira職人の人があまりのストレスで体重が三倍になってた (比喩ではなく)
  • 単純に使いづらい
  • 前職でやっすいサーバーで動かしたら重くて使い物にならない悲しい出来事が起こりました

しかし一定規模のプロジェクトとは本質的に複雑なので、複雑性を管理することは避けようがありません。

むしろJIRAをシンプルに使うことによって、プロジェクトを1つのツールで統合的に・シンプルに管理することが今回のチャレンジでした。

その試みが、たったの1週間で失敗に終わることも知らずに――

【シンプルに管理するイメージ図】 f:id:infablic:20171215145755p:plain

[AD] ちなみに、4日目の記事で Waffle.io を使ったタスク管理方法が紹介されているので、そちらも合わせてチェケラしてみてください😘 in.fablic.co.jp

JIRA使用1週間のまとめ

今回はJIRA Cloudを使用して一週間のトライアルを行いました。

結論を言うと、タイトルの通り導入は諦めざるを得ませんでした。その主たる理由が以下になります。

メンバーの負担が大きい

  • タスクの所属・階層・依存関係の定義のためにフィールド入力が必要で、覚えきれない
  • フィールドが多くて入力が大変

JIRA自体の管理コストが大きい

  • タスクの種類、状態遷移、画面やフィールド構成が複雑
    • 構成内容というよりは、UIがすんなり飲み込めなかった
    • 「〜スキーム」の意味するところが未だによく分からない
  • JIRA全体の設定とプロジェクトの設定に遷移するリンクの場所が違ってほぼ毎回迷う
  • 少し設定を間違えると破綻する
  • デフォルト設定が変更可能だが「変更しないで下さい」という説明が付いてミスリーディング

プラグインの完成度・プラグイン同士の統合性に欠ける

JIRAはMarketplaceを提供してサードパーティによる拡張を許容していますが、完成度にはバラつきがあるということが分かりました。

たとえば

  • トラックパッドでガントチャートを左右にスクロールするとMacのバージョンによってはブラウザの「進む/戻る」が発生する
  • ガントチャート上のタスク絞り込みにJQL が効かない

という事象に苦しめられました。

また、ガントチャートタスク階層化機能がプラグイン内でプロジェクト管理の1世界を構成することを目的としており、JIRA本体や他のプラグインとの連動がしづらかったです。

具体的に述べると以下のような状態です。

  • 階層化プラグインによって定義された階層情報がガントチャートでは利用できない
  • ガントチャート上でタスクを開始日順に並べることができない
  • ガントチャート上に「仮想タスク」が作れてしまい、それはJIRA本体のカンバンには現れない

例えて言うなら、同じ家なのにお風呂だけお湯が出るけど台所や洗面所からはお湯が出ない、みたいな違和感です(伝わっているか不安)

GitHubソースコードとの連動が不十分

JIRAで作成したIssueは HOGE-1 のような連番のキーが付くのですが、HOGE-1-feature-xxx のようにGitHubのブランチ名にIssueキーを含めることで、自動的にIssue状態を連動することができます。

  • コミットされると自動的にTODOからDOINGになる
  • Pull Requestが出されていることがわかる
  • マージされるとDONEになる

開発作業によって自動的に状態が管理されるのは便利ですね。

ただし、現実にはまったく連動できないことがわかりました(以下図)

f:id:infablic:20171215113031p:plain

  • 同期が1時間に1回で、10,000コミット以上あるリポジトリが複数あると同期に失敗する
  • BitBucketとならコミットフックを利用するようなので、もっとリアルタイムなのかもしれない
  • ただ、いきなりソース管理までAttlasianにするという選択肢にはならなかった

などといった問題が噴出し、最終的に解決できませんでした。

特に、きっちりやろうとするとメンバーの負担が大きいことは「シンプルに管理したい」という目的に対して本末転倒であることが致命的でした。

また私自身、十分に機能や設定方法を理解せずに見切り発車で使い始めてしまったことを悔やみました。

こうして1週間のトライアルを経て、FablicのJIRAは静かに息を引き取りました。

代替手段

JIRAを諦めた後、他の方法を検討しました。最終的に行き着いたのは

  • 1つ1つのタスクはこれまで社内で一般的だったGitHub IssueやQiita:Teamを使用する
  • Googleスプレッドシートを使用してガントチャート管理し、それぞれの行にIssueへのリンクを貼る
  • カンバンはホワイトボードで管理する

という方法でした。

前述の通り、社内1, 2を争うほどGoogleスプレッドシートでのタスク管理が嫌いな私ですが、 ProjectSheet project planning というガントチャートプラグインは中々良いのではないかと思っています。

f:id:infablic:20171214175600p:plain

  • 罫線、カラム名、スクロール固定など初期レイアウトは全自動で行ってくれる
  • タスクに日付と進捗%を入力するだけで、ガントチャート化してくれる
    • 間に合ってないと黄信号、赤信号で警告してくれる
  • タスクを入力するとWBS(Work Breakdown Structure)番号が上から連番で付けられて、枝番(x.x.x...)にすると直前のタスクの子タスクになる
  • 親タスクは子タスクの期日や進捗を自動的に反映してくれる
  • GitHub IssueやQiitaへのリンクなどはカラムを足して対応

「Googleスプレッドシートでのタスク管理は破綻しやすい」という前提のもと「1行1タスクで細かいことはリンクにする」というルールを設けたのは、我ながらガントチャートをキレイに保つ良い指針だったと思っています(どう思われているか知りませんが)。

また、チームや個人に定着しているタスク管理方法を維持したままガントチャート管理ができるので、今のところ運用が継続しています。

さいごに

ただ、複雑な問題を解決するのに、銀の弾丸は無いのだなと痛感しました。

一概に「JIRAが悪い!」と訴えるつもりは毛頭なく、むしろJIRAという選択肢を与えてくれたことに感謝しています。 我々が抱える複雑な問題にリーチしようと尽力してくれているからこそです。

しかしその複雑さ故に、JIRA自身のシンプルさを犠牲にせざるを得なくなっているという苦悩を勝手に想像して、労わずにはいられませんでした。

いつかUIも機能もイケてるツールに出会いたいものです。

いいプロジェクト管理ツールを知ってるよ!という方は今すぐFablicにジョインして教えてください。

プロジェクト=複雑なものをどうやってシンプルに管理するか?

現段階での私の見解は

  • ツールで管理しすぎてしまうことは、むしろメンバーに負担を増やしてしまい害悪である
  • ペインポイントを絞って、身の回りのシンプルなツールに任せるべき(今回はガントチャート化に ProjectSheet project planning を使用した)

というまとめとさせていただきます。1つでも参考になれば幸いです。