こんにちは、ジーニアスウェブの横山です。
今回は、当社で使用しているプロジェクト管理やタスク・カレンダーなどのツールを紹介します。
ちょうど約1年前。
プロジェクト管理についての記事を書きました。
案件を成功に導くためのプロジェクトマネジメント – 基本概念
上記の記事にも書きましたが、
2018年度より、プロジェクト管理を本格導入。
それまでは、Google スプレッドシート、チャットワークなどで案件ごとの工程やスケジュールを管理していました。
まずは、サイトリニューアルプロジェクトやシステム開発プロジェクトなどの比較的大きな案件をメインに運用を開始。
最初はまず最低限の運用ルールをつくり、スタッフへのレクチャーを行い、不十分な状態ですが、無理やり走らることとしました。
案の定、最初は全く機能しませんでした。
しかし運用しながらルールを修正したり、いろんな工夫を行うことで徐々に機能しはじめました。
まだ不完全ではありますが、今年の後半、10〜11月頃には、「生産性が上がる」「工期が早まる」というようなことが何件か、明らかに数値として見えだしました。
成功とは言えませんが、徐々に成果は見え始めています。
成果が見え始めることとなった要因は、以下の5つと考えています。
- すべての機能を使わずに必要な機能のみ使用したこと
- やることを限定し、徹底的にルール化したこと
- 運用しながら自社の状況に合わせてルールを都度改定したこと
- 1年間のスパンを見て徐々に浸透させたこと
- システムがはまらない場合は別のツールをうまく活用したこと
もう少し簡単にいうと自社に合わせてカスタマイズしていったということですね。
いろいろな工夫もしたので、
一部ですが、簡単に紹介していきます。
プロジェクト管理ツール 「Zoho Projects」
プロジェクト管理には、「Zoho Projects」を使用しています。
一定規模の案件のみ、プロジェクトを立てて、進捗管理やリソース管理を行っています。
プロジェクト管理は単なる工程管理ではなく、あくまでプロジェクトの目的を達成するためのものであり、プロジェクトの目的の達成とは、期限内に、予算金額内で、期待レベルの技術成果のもと、割り当て資源を有効活用して、顧客が満足する状態で完了することです。
そのために、まず一番大事なのは、
正確なマイルストーンとタスクを立てることだと思います。
マイルストーンとタスクは、「誰が何をいつまでにやるか」ということです。
各工程ごとに担当者を割り当てます。
当社ではリニューアル、LP制作、広告アカウント構築、システム開発など、予めテンプレートを用意し、案件ごとにそれをカスタマイズして、プロジェクト発足時にまず大まかな地図を作成します。
規模が大きくなればなるほど、マイルストーンとタスクは多くなり、また予見できないことも多々起きます。
「Zoho Projects」では、柔軟な変更が可能なので、プロジェクト状況に応じて調整しながら管理することが可能です。なので大変重宝しています。
また、案件ひとつひとつだけでなく、現状動いているプロジェクトの全体像が視覚的にも見えるので、週に一度すべてのプロジェクト状況を把握し、全体も管理することができます。
そうすることで、例えばプロジェクトが途中で一時停止したとき、想定以上に早く進んだときなど、急遽リソース補給が必要になったり、逆にリソースに空きが出た場合などでも、どこのプロジェクトに誰が何をやるか、すぐに判断し、手持ちのリソースを最大限に活用することができます。
Googleカレンダー+GASで作ったタスク一覧表
リニューアルなどのプロジェクトだけでなく、当社はお客様のサイトの更新や広告など、様々なタスクがあります。また、社内のタスクも当然ありますので、プロジェクト管理ツールだけでは、全体の管理ができません。
Googleカレンダーを使用し、月間のスケジュールや、当日のスケジュールや打ち合わせなどのスケジュールを管理し、各自決定していきます。
Googleカレンダーはとても便利なので、各スタッフの直近状況を一見で見渡すことができないとことろが難点でした。当社はG suiteを全社員導入し、全員でカレンダーを共有していますが、一人ひとりをチェックしないと他人のカレンダーはみれません。複数チェックするとカオスに。
10名以下などであれば一人ひとり見ていくこともできますが、30名となるとそうはいきません。
そこで、google apps scriptを使用し、
Googleカレンダーの予定をスプレッドシートに自動転記するツールを作りました。
- 毎日朝と夕方にカレンダーから自動取得する
(取得用スクリプトと、それを定期的に実行するスクリプトトリガーを作成) - 各googleカレンダーIDをもとにカレンダー情報を取得
- 終日の予定とスケジュールを分けて表示
例) 1週間の1人分のすべての予定を取得するサンプルスクリプト
function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); // 対象のシートを取得 var strWeek = ['日', '月', '火', '水', '木', '金', '土']; // 曜日表記 var today = new Date(); // セルにカレンダーIDを入力し、その値を取得 例)A1に入力されていた場合 var myId = sheet.getRange('A1').getValue(); // カレンダーIDをもとにカレンダー情報を取得 var myCalendar = CalendarApp.getCalendarById(myId); // 本日から1週間の予定を取得 var strBody = ''; for (var i = 0; i <= 4; i ++){ if (i != 0) { today.setDate(today.getDate() + 1) } var week = '(' + strWeek[today.getDay()] + ')'; // (曜日)を生成 strBody += '■' + Utilities.formatDate(today, 'JST', 'yyyy/MM/dd') + week + '\n'; var myEvents = myCalendar.getEventsForDay(today); //各日の予定取得 if (myEvents.length > 0) { strBody = setEvent(strBody, today, myEvents); } } // 予定をB1セルに表示 sheet.getRange('B1').setValue(strBody); } // 各日イベント情報を取得 function setEvent(strBody, today, myEvents){ for (var j = 0; j < myEvents.length; j ++){ var strStart=_HHmm(myEvents[j].getStartTime()); //イベント開始時刻 var strEnd=_HHmm(myEvents[j].getEndTime()); //イベント終了時刻 var strTitle = myEvents[j].getTitle(); //イベントタイトル strBody = strBody + strStart + '-' + strEnd + ' ' + strTitle + '\n'; } if (strBody != ''){ strBody = strBody + '\n'; } return strBody; } /* 時刻の表記をHH:mmに変更 */ function _HHmm(str){ return Utilities.formatDate(str, 'JST', 'HH:mm'); }
※終日の予定を取得する場合は、イベント開始時間=イベント終了時間のみを判別すれば取得可能です。
※使用される際は「&lt;」は「< (半角)」に変換ください。
こちらが各日の予定を終日と終日以外で分けた際のイメージです。
当社のプログラマー(中武)に依頼をし、約半日程度でつくった簡易的なものです。
このタスク一覧表をもとに、毎週1度主にディレクターで週次MTGを行い、
1週間のスケジュールを確定していきます。
シンプルな機能でアナログな手法ですが、とても役立っています。
カレンダーに入力さえすればいいので、運用もカンタンです。
当社には3つのチームが存在します。
- クリエイティブチーム (主にweb制作業務、更新業務を行うチーム)
- マーケティングチーム(主に広告運用やデータ分析を行うチーム)
- システムチーム(主にシステム開発や導入を行うチーム)
私は主にクリエイティブチームを管理し、
各チームにはチームリーダーがタスクを管理します。
このタスク一覧表に統合することで、全体状況が瞬時に把握できるため、
例えば一部のひと、チームにタスクが偏ったりした場合、チームを超えてサポートに入ったり、場合によってはプロジェクトを調整したりすることで、全体が循環します。
さらに、タスクの均一化や情報共有することで、スタッフの残業がほとんどなくなる、または有給とりやすくなる、といった効果もあります。
直近2ヶ月は残業が20時間を超えた人は0人。有給消化率も直近半年で格段に向上しました。
もちろんツールだけの効果ではありませんが、ツールを活用し全体共有ができる状態を作っていなければおそらくこのような結果にはならなかったでしょう。
ChatWork + Zapier で定期連絡を自動化
当社では、約7年ほど前からずっとChatWorkをメインのメッセージルールとして使用しています。社内、お客様とのやりとりもChatWorkをメインにしています。
ChatWorkはとても使いやすくシンプルでカンタンなので、普段チャットを使わないお客様でも無料ですぐに使えるので、とても便利です。
上述のプロジェクト管理ツールやカレンダーツールを運用する上で、まず何よりも大事なのは、ちゃんと入力するということです。
例えばカレンダーであれば、適切に入力し、予定などの変更があれば変更作業をしなければ全く意味はありません。
しっかり入力をしてもらうということをルール化し徹底する必要があります。
しかし、各個人に任せるだけでは、入力をすれていたり、更新できていなかったりということが多々おきます。
なので、日時・時間を決めて、「入力してね」「更新してね」としつこいくらいの周知が必要です。
それを毎回言葉や、チャットで手打ちをしてると、大変です。
なので、Zapierというツールを使用し、定例通知を自動化し、入力指示をしています。
Zapierというのは、複数のサービスを連携させて自分だけの処理を作れるサービスです。
Googleカレンダーの更新してくださいという通知を朝9時、17時にChatWorkで送信
毎週木曜日の10時にプロジェクトの更新をChatWorkで送信
これらは一度設定しまえば、何もしなくても通知をしてくれます。
このように定期的に通知をすることで、入力業務の確実性が上がり、また意識付けにもなります。
もちろん、通知だけでは更新出来ていないケースもあるので、プロジェクトなどは目視で確認をし、細かい指示などは別途行いますが、まずは入力をしっかり行うことが大前提になります。
課題は山積み・・・
できていないことも多く、やはりまだまだ課題は山積みです。
3つほど紹介しましたが、実際は他のツールも多数使っており、
データの統合が難しいということ、いろんな画面を開かないといけないということを考えると、やはりひとつのツールに統合するべきなのかもしれませんね。
将来的には統合も視野にいれていますが、
自社の状況に応じて、自社なりの最適な仕組みを、各ツールの長所を生かし、工夫やアイデアをいれ、構築するということも大事なことの一つだとも感じます。
あまり型にはめずに、常に変化に応じて柔軟に仕組みをアップデートできる状態が理想なのかもしれませんね。