kintone Café 東京 Vol.6(2)リアル業務改善前編

前回までの話

久々に開催された、kintone Café 東京 Vol.6、前回の記事では、ハッカソンスタートまでの紹介をしました。

この記事では、実際に私が参加したチームで作成した業務改善アプリができあがるまでに、どんなことを考えながらどんなふうにkintoneアプリを構築したのかを、順を追ってストーリー形式でお伝えします。業務改善の現場でのいろいろなものの考え方が、少しでも伝わればいいなと思います。

お題:シフト管理 の業務プロセスの仮説

まずは今回のお題の復習。私たちのチームにはあの有名なkintoneプラグイン「カレンダーPlus」を作った、ラジカルブリッジ斎藤さんと、Mr.kintone ジョイゾー四宮さんがいます。

最初にお題を見たときから、これは二人の作ったプラグインを活用する形で、お題2「シフト管理」をやってみたら面白い!と考えていました。二人とも同じことを考えていたみたいで、テーマはすんなりと決定しました。

  • お題2: シフト管理従業員のスタッフさんのシフト管理を、カレンダーを使った見える化も含めて実現したい。これは以前、kintone導入相談カフェで、標準機能では難しいと言われた案件だそうだ。

まずは、飲食店におけるスタッフのシフト管理の業務について、どんな業務なのか仮説を立ててみました。

飲食店スタッフのシフト管理業務(イメージ)

  1. 従業員やアルバイトの人は、月末までに「来月の勤務可能な日時」や希望勤務日等をお店側へ提出する(次月シフトの申請)
  2. お店のマネージャー(店長?)は、メンバーから集まった情報をまとめて、それぞれの店舗の必要人員を満たしているかを確認しながら調整する。
    1. このときに、カレンダー表示でわかりやすく見えるようにしたい
    2. また、各メンバーの勤務時間等が集計できると負荷調整ができる
  3. ここでいう調整は、人が余っている日(時間帯)、人が足りない日(時間帯)を平準化するための各メンバーとの個別調整含む。
  4. 調整が完了したら(たぶん月末)、各メンバーの来月のシフト計画を確定させ(ステータスを調整中から確定に変えるイメージ)、メンバー全員に共有。
  5. 月中の個別の調整は個別に行い、結果(最新情報)はメンバー全員に共有できるようにしたい。

業務プロセスを考えてみる

こんなイメージを持って、柳谷さんに細かいことはヒアリングしていきました。

現地で業務プロセス図は作りませんでしたが、こんなイメージ。

あと、実際の勤務時には勤務開始時間、終了時間を記録する、タイムカード機能が必要になります。これもいちいちkintoneにログインしてアプリを開いてレコードを開いて、キーボードから時間を入力する、というのは非常にめんどくさいので現実的ではありません。

IDカードみたいなのをピッとするだけで記録できるような、簡単に使えるやり方を作りたいところですね。

このタイムカード機能(スタッフごとの勤務時間記録)については、また別の機会に検討してみたいと思います。

ということで、今回の2時間のハッカソンでは、下の図の黄色い範囲(シフト提出→調整→決定→共有・公開)を作ってみることにしましょう!

アプリの構成を考えてみる

最終的にカレンダー形式の表示をしたいので、カレンダー表示機能を持つアプリを作る必要があります。このアプリに各スタッフのシフトを入れる必要があります。

「来月分の希望シフトをまとめて申請する」には、1件ずつレコードを登録していくのは現実的ではありません。

なので、スタッフがシフト申請するためのアプリは、1人のスタッフのひと月分の勤務計画を1レコードでまとめて申請できるようにしたいですね。

基本的なアプリの構成としては、「シフト申請アプリ」と「シフト管理アプリ」の2つにすることにしました。

2つのアプリに必要な要件と、アプリの画面イメージを図にしてみました。

このような考え方で、以下の2つのアプリを作ろうと思いますが、ここで1つ問題があります。気づきましたか?ここまで読んで気がついた方は、かなりのkintone通だと思います。

シフト申請アプリに記載された勤務データを、シフト管理アプリにコピーしてあげる必要があります。このアプリ間のデータコピーをどうやって行うか、という問題です。

アプリ間のデータ転記の方法をどうするか

2つのアプリ間でデータをコピーする方法として用意されているkintone標準機能に、「アプリアクション」機能があります。

ヘルプに機能の詳細が記載されていますが、アプリアクションを設定すると、レコード詳細画面にアクションボタンが作られ、ボタンをクリックすると、レコードのデータをコピーして、あらかじめ指定した別のアプリの新規レコード作成画面が開いて、そこにコピーしたデータを貼り付けることができます。

(画像はkintoneヘルプから引用しました)

なんだ、これでいけるじゃん!と思いますが、ヘルプをよーく読んでみます。

下の方に、コピー可能なフィールドの種類とコピー先に設定できるフィールドの種類が表になっています。そしてその下になんと、

テーブルに含まれるフィールドの値はコピーできません。

と書いているではありませんか!

アプリアクション機能では、テーブルのデータを別アプリに持っていくことはできなさそうです。

今回やりたいことは、下の図のようなことです。

シフト申請アプリでは、各スタッフ毎にレコードが作られ、ひと月分の勤務データがサブテーブルで記入されます。

全てのスタッフが申請したデータを1つのアプリ(シフト管理アプリ)に集約し、それをカレンダー表示することで、お店のシフト調整を行いやすくしたい、という考え方です。

アプリアクションという機能は、1つのレコードを、コピー先のアプリの1レコードに転記する機能です。サブテーブルは行(データ)が複数登録されるものなので、一回のアクションでテーブルの行数に相当する複数のレコードを相手アプリに作成してあげる必要があります。

標準機能でできないことはカスタマイズでできそうだ!

kintoneは標準機能も充実していますが、今回のように標準機能では実現できないこともあります。

それをカバーする手段として、JavaScriptカスタマイズという手段があります。しかしできることならカスタマイズはやらずに済ませたいところです。今回のケースを運用でカバーするとしたらどうなるか、考えてみましょう。

  • アプリを2つに分けずに、1つのアプリに1勤務日=1レコードで登録してもらう。

この方法でも可能ですが、スタッフの方の希望勤務時間の入力が面倒そうです。来月、20日勤務できる場合、20個のレコードを作る必要があります。

1から入力するのは面倒なので、レコードの再利用機能を使ってコピーしながら入れていけばできないことはなさそうです。

実際に適用するとなると、シフトが勤務計画を楽に入力する方法を考える必要がありそうです。できれば、スマホからサクサクと入力できるようにしたいところです。

標準機能でもなんとかなりそうですが、ここはハッカソン。

今回はJavaScriptカスタマイズを適用して、アプリ間のデータコピー(サブテーブル→複数レコード)機能を作ってみました。kintoneのカスタマイズノウハウの蓄積が豊富にある、ジョイゾー四宮さんがササッとカスタマイズを作ってくれました。

カスタマイズを行うとき(作ってもらうとき)に必要な考え方については、結構ボリュームがありますので、また別の機会に紹介します。

アプリを作る

シフト申請アプリ完成イメージ

各スタッフの来月の希望シフト作成画面です。

名前と店舗を選択した後、来月の勤務可能な日時をサブテーブルに行を追加しながら登録していきます。

入力が完了したら、レコードを保存します。もちろん作業の途中で一時保存しておいて、あとで続きを行うこともOKです。

シフト管理アプリ完成イメージ

カレンダー表示機能を持たせるアプリのフォーム構成です。

出勤日時、退勤日時(日時フィールド)、スタッフ名(ユーザー選択フィールド)と、調整中か確定したのかを表すラジオボタン「状態」を設置しました。カレンダーPlusの表示用にタイトルとして文字列フィールドを置いています。ここにはスタッフの名前を表示したいので、データコピー時(JavaScriptカスタマイズ)にユーザー選択フィールドの名前をコピーするようにします。

また、「終日」というチェックボックスがついていますが、これはカレンダーPlusで終日表示させたい場合に使います。お店のイベントがあるときなどに使えそうですね!

カレンダーのビジュアル化と簡単操作

シフト管理アプリに集まってきた各スタッフの希望勤務日時の情報を、まずはカレンダー表示する必要があります。

これは、kintone標準のカレンダー表示です。一応表示はされていますが、今回やりたいことである、

  • その日に誰が、何時から何時まで勤務しているかをカレンダーでひとめで確認したい
  • それを確認しながらシフト調整をしたい

を実現するのは難しいところです。このあたりは柳谷さんの記事「kintoneの導入相談カフェで根掘り葉掘り質問してみる」でも紹介されているとおりです。1日の表示エリアに一度に表示できるのは3件まで。しかも時間を入れたとしても情報量が少ないです。また、この日に誰が何時から何時までいるのだろう?といった、日次表示や週次表示もありません。

さっそく斎藤さん(ラジカルブリッジ)が開発されたプラグイン「カレンダーPlus」を導入して、カレンダー画面の見え方、操作性を一気に向上させてみます。

プラグインの設定方法はまた別の機会に紹介しますが、このプラグインを使うとこんなことができるようになります。

このプラグインは有料ですが、お試しで機能を試してみることができます。上記のリンクからダウンロードできます。

これはリソース別表示(店舗およびスタッフ別)の月間表示画面です。誰がどの日に勤務する予定なのかがひと目でわかります。青いバーが縦に重なっていることで、その日に何人のスタッフが出勤可能か確認することができます。

標準カレンダーと比べてみると、その違いがはっきりとわかります。

また、こちらは日次ビュー。マウスのドラッグで勤務時間の変更やスタッフの変更が可能になっています。kintoneのカレンダーがGoogleカレンダーのような見た目と操作性に進化します。

kintone標準の機能だと、1つのデータを修正するためには、まずレコード詳細画面を開き、編集モードにして開始日時と終了日時をそれぞれ変更する必要があります。この操作がマウス操作一発でできるようになりますので、生産性はめちゃめちゃ向上します。

カスタマイズの動きを確認してみる

2つのアプリが完成しました。

カレンダーPlusの表示設定も完了したので、さっそく「シフト申請アプリ」から「シフト管理アプリ」へのデータコピーの動きを試してみましょう。

シフト申請アプリで勤務データの記入が終わったら、詳細画面の上の方にある「シフト表に登録する」ボタンをクリックします。このボタンがカスタマイズによって作られた、アプリ間のデータ転記機能を動かすスイッチです。

今回はテストとして3件のデータをテーブルに入れています。

▽今回登録したデータ:

  1. 10/1 17:00 ~ 10/2 3:00 ※営業時間の17時から3時までフルタイムで出勤可能です
  2. 10/3 21:00 ~ 10/4 3:00 ※この日は夕方用事があって、21時以降であれば出勤可能
  3. 10/5 17:00 ~ 10/6 0:00 ※この日は翌日の早朝から予定があり、0時で切り上げたいという計画です

ボタンをクリックすると、ほぼ一瞬でデータの転記が終わり、登録完了のダイアログが出てきました。短い時間でこの完成度、完璧です。

シフト管理アプリを開いてみると、ちゃんと10/1から5日のところに3件、データが登録されています。

ここで、バーの色が青ではなくグレーになっているのは、調整中なのか確定したものなのかを表すために用意した「状態」フィールドが、「調整中」のレコードはグレー、「確定」になれば青の表示になるよう、カレンダーPlusのプラグイン設定で設定してあるからです。

先ほどのデータ転送のカスタマイズでは、シフト管理アプリにレコード登録するときに、「状態」フィールドは「調整中」で登録するように作ってあります。こうしておくと、どのデータがまだ調整中なのか、ひと目でわかりますね。

ここまでのまとめ

今回の記事では、飲食店のシフト管理を効率よく行うためのkintone業務改善のストーリー(中編)をお送りしました。

  • kintoneの標準機能だけでは使い勝手が悪いところがあったので、JavaScriptカスタマイズでアプリ間のデータコピー(サブテーブルから複数レコード)を行いました
  • カレンダー表示で多くの情報を見える化し、効率よくシフト調整を行うために、プラグイン「カレンダーPlus」を導入しました
  • 「シフト申請アプリ」「シフト管理アプリ」の2つのアプリを作り、上記のカスタマイズを行うことで、スタッフが入力した来月のシフト計画を1つのアプリに集約し、カレンダー表示で見える化・簡単調整ができるところまで完成です

次回は、もう1つの問題「調整~来月シフトの確定作業」に取り組んでみます!


前回の記事:参加レポート

続きはこちら:リアル業務改善後編

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です