スタディサプリ Product Team Blog

株式会社リクルートが開発するスタディサプリのプロダクトチームのブログです

ブログ番長を Bot にした

Web Dev の @mtsmfm です。 ブログ再開 から2年半、年間40~50本程度のブログ記事がこの Product Team Blog からでています。

継続的な更新を重視し、これまで概ね週1本程度が公開されるようにしてきました。 ローテーションを組んでいるものと、個々人が高まったときにゲリラ的に執筆するものの2パターンあります。 このローテーションについて、ブログ番長という責任者を立てスケジュール管理などを行ってきました。そのタスクは概ねローテーションの管理と執筆依頼の 2 つです。とはいえ締め切りの催促は、手間としては大きくないもののお互いにストレスが溜まります。 これの自動化を試みて2ヶ月ほど経過し、少しづつ形が見えてきたので共有したいと思います。

ブログ番長 Bot の仕事

ブログ番長 Bot の業務は、以下の通りです。

  • 次週の執筆者を決定して通知する (木曜朝10時)
  • 執筆中の人の進捗を確認する (平日朝10時)
  • 執筆完了したらレビュー依頼をする (シート上のボタンを押す)
  • 執筆者を再設定する (シート上のボタンを押す)

Google Apps Script で実装しており、200 行も書かずになんとかなっています。

毎朝図1のような通知が執筆担当者に来ます。

図1: 通知例

スケジュール一覧のシート (図2) とローテーションのシート (図3) があり、時期が来たらローテーションシートからピックするようにしています。

図2: スケジュール一覧

図3: ローテーション

考慮したこと、必要だったこと

Bot を試作してから現状に至るまでの間、大事にしたことや必要だとわかったことについて記します。

業務の一環であることを bot が毎回発言する

このブログは、中長期的な採用活動の活性化を目的として運用されています。当然ながら業務の一環です。ブログ執筆にかかる時間が軽視されることのないように、当初の目的のドキュメントへのリンクを毎回発言させるようにしました(図4)。

図4: 大事なことなので毎回言う

ローテーションから抜ける方法とリスケ手段を提供する

ブログ執筆も業務の一環とはいえ、主務が多忙で執筆タイミングをリスケして欲しいケースもあります。次回執筆者割当の際に 図5 のような発言をさせ、ローテーションから抜けたりリスケして欲しい場合に管理シートを編集してもらうようにしています。

図5: リスケ方法案内メッセージ

ゲリラ参加もできるようにする

スケジュールシートには将来に渡っての日付だけが書かれており、時期が来たら Botアサインする方式になっています。一方、自分で名前を書いた場合にはそちらを優先するようにしており、これによって飛び入り参加も可能になっています(図6)。

図6: やっていき手が自らスケジュールに入れていく様子

称える

執筆を期限内に終えるのは大変なことです。社内ブログに興味がある人が集まっているチャンネルなので、@channel でメンションしていきます(図7)。

図7: 無事終えてめでたい

タイムアウトを実装する

書くぞと意気込んだものの、筆が乗らずどうしても間に合わないこともあります。ずーっと催促され続けるのもしんどいので、時間が来たら諦めます(図8)。

図8: そんな日もある

祝日には通知しない

祝日は人間も Bot も休みたいものです。これは、日本の祝日カレンダー上の予定の有無をチェックすると除外することができます。

例えば、ある日付が日本の祝日に該当するかをチェックする関数は次のようになります。

function isHoliday_(date) {
  const cal = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
  
  const events = cal.getEvents(date, new Date(date.getTime() + 24 * 60 * 60));
  
  return events.length !== 0;
}

番長から番長 Bot 番長へ

Bot を作成してからは執筆者への催促メンションは Bot によって行われており、精神のすり減り具合は軽減されているのではないかと思っています。とはいえ、番長の代わりに番長 Bot 番長が生まれているため、ここについて持続可能にするのが今後の課題と言えそうです。