ポモドーロと振り返りのための活動記録のつけ方(gasを使ったspreadsheetとcalendarの連携)
概要
5月はテスト設計コンテスト(一人自宅に籠りっきり)での活動もあり、自己管理をきちんとしたいと思いがあった。
そこで、ポモドーロテクニックの「25分作業+5分休憩」を1イテレーションとして、記録することにした。
本編の内容は以下。
- 5月の作業時間報告
- ポモドーロのアプリ紹介
- ポモドーロの5分の使い方
- ポモドーロの30分の使い方
- 振り返りのやり方(KPT/YWD/FDL)
- spreadsheetとcalendarの連携・記録の仕方
- 感想
- 利用するgas
以下の記事の最終アウトプットである。
5月の作業時間報告
5/1-5/25の集計。一日10時間程度活動していた。*1
ポモドーロのアプリ紹介
使っているタイマーはこれ
ポモドーロの5分の使い方
数日おきに5分休憩の時間の使い方を気分によって変えていた。
5分休憩は瞑想する
たぶんポモドーロ本来の正しいやり方で、5分は一切何も考えてはいけない。
ベットに横になって瞑想していた。
あまり気乗りしない時や、マンネリ化してきたときに使っていた。
意図はしっかりと休んだり、次の作業をやりたいという気持ちを抑えて何もしない時間を敢えて作ること。それによって次の時間にメリハリができ、次の1イテレーションの質を保てる。
5分休憩は振り返りの時間に充てる
5分休憩は振り返りや次のタスク整理にあてる。
アイデア出しやアプローチなど色々な方向の事を考え始めると発散しだして元の場所に戻ってこれなくなることがある時に使う。
意図は強制的に30分でやったことを整理しなおして、次にやるタスクと後回しにするタスクを分ける。 後回しにするタスクを書き出しておくことで、短期記憶の無駄遣いを避けて次の作業に集中できる。次にやるタスクの方針や目的を整理しなおすことで、安心して次のタスクに集中できると共に、価値を感じられる活動に繋がる。
5分休憩は休まない
5分休憩を挟まない
イテレーション終了時にベルが鳴るが、いくら音を大きくしても集中していて気づかない時や、そのまま作業を流したいときに使っていた。 次のタスクが明確な時や、作業にのれているときはこれで良い。振り返りは必要になってからあとで纏めて実施する。
ポモドーロの30分の使い方
30分を作業を強制的に区切るという性質と捉えると、以下の様に色々と使いどころが見えてくる。
どこかを参照したわけではないので調べるともっと良いやり方は見つかると思う
難しい事をしているときに、どう進めていくかを整理する起点にする。いらないことをそぎ落として、安心して次のタスクの推進力にする効果。
その時の気持ちを書き出すことで、客観的に自分の気持ちを把握して休憩をとったり、落ち着くなど気持ちを切り替える効果
習慣をいい方向へ強制する効果。
394週間化の科学
— 信頼貯金 (@sinraityokin) 2019年4月30日
起きている時間の33-50%は習慣的な行動が占めている。意識的な所に持って行って無意識に戻す。記録により6割の認識できていないものの明確化する。グーグルスクジュールで1時間おきに予定を突っ込んでおいて、アラームのなったタイミングで場所や考えている事を記録する
振り返りのやり方(KPT/YWD/FDL)
YWTやKPT・fun/done/learnとか自身の活動がコアバリューに沿っているかなど欄を追加しているが、その欄を使う機会は少なかった
25分と短いイテレーションだと負担の少ないライトなやつがよかったので、上記の観点のうち強く思い浮かんだことをどのカテゴリか意識せずに書き出して、必要に応じて整理した。
あと、その時の自分の状態とか気持ちも書き出して、見返した時に自分の状況を把握したり、気分転換に寝るか風呂入るかアロマ炊くとかリフレッシュや、心持ちを変えるためになんでストレスを感じたのか・考え方を変えてみたりしていた。
funやコアバリューに沿っているタスクを計測して単位時間あたりの数値を出すのも面白いかもと思ったが、何回か試したあと続いていない。(個人的には重要だと思っている)
spreadsheetとcalendarの連携・記録の仕方
スプレッドシート⇒gas実行⇒googleカレンダーへ反映させて可視化している。手順は以下の通り。
googlespreadsheetの以下のテンプレートを日付毎に記録する。
gasでスプレッドシートからカレンダーへ日報を反映する - しんらいちょきんを元googlecalendarと連携させる。gasの最新は末節に載せる。
- googleカレンダーに出力する
※スプレッドシート上で完結しても良いが、週単位・月単位で見えるとそれを元に振り返れることを期待している
感想
何かしら記録することで、自信に繋がればいいし過去の自分と比較して良い方向にもっていけると良い。
利用するgas
function createEventFromSheet() { Logger.log('test.gs'); //アクティブなシートを選択 //var sheet = SpreadsheetApp.getActiveSheet(); //特定のシート名を指定する。 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('5/15'); console.log(ss.getName()); console.log(sheet.getName()); // 行を選択 for(var i = 4; i <= sheet.getLastRow(); i++) { // セルの値を取得 var start = sheet.getRange(i, 1).getValue().toString(); var end = sheet.getRange(i+1, 1).getValue().toString(); var titleName = sheet.getRange(i, 2).getDisplayValue().toString(); var myCalendar = sheet.getRange(i, 3).getDisplayValue().toString(); //タイトルが未入力の場合には埋めておく if(titleName === ""){ titleName= '未入力'; } Logger.log('start: "%s"',start); Logger.log('end: "%s"',end); Logger.log('titleName: "%s"',titleName); Logger.log('myCalendar: "%s"',myCalendar); // カレンダー名が未登録の場合は、カレンダーに登録しない if(!(myCalendar.length <=0)) { // 開始と終了の日時を取得。入力形式はYYYY/MM/DD hh:mm var startTime = new Date(start); var endTime = new Date(end); Logger.log('startTime: "%s"',startTime); Logger.log('endTime: "%s"',endTime); // オプションは必要に応じて var options = { location: "", description: "" } // カレンダーを取得 //var cal = CalendarApp.getDefaultCalendar(); //var cal = CalendarApp.getCalendarById("xxxxx8@group.calendar.google.com"); var cal = CalendarApp.getOwnedCalendarsByName(myCalendar);//Calendersと配列であることに注意. Logger.log(cal[0]); // カレンダーにイベントを追加 cal[0].createEvent(titleName, startTime, endTime, options); } } }
*1:人間の集中状態は一日4時間程度が限度と研究もあるため、当然ながら生産性を時間で測ることはできない。