2週間かかっていたシフト作りが、10分に。AIで社内システムを一式作りました
- 3 日前
- 読了時間: 12分
クリーニングのクボタ社長です。
クボタでは毎月、20店舗分のシフトを作っています。
これが、正直かなり大変でした(--;)
といっても、シフトを作っているのは私ではありません。作成を担当している営業担当者です。
私はその様子をそばで見ながら、「これは大変そうだな」と、ずっと思っていました。
店舗ごとに営業時間も定休日も違います。働ける曜日や時間も人によって違いますし、一つの店舗だけでなく、何店舗かを掛け持ちしている人もいます。そこへ休日希望が入り、誰かが休めば別の店舗から応援を考えなければなりません。
営業担当者は、集まった希望を見ながら、紙とExcelで一つずつ組んでいました。
一か所を直すと、別の店で人が足りなくなる。そちらを直すと、今度は連勤が長くなる。20店舗分を行ったり来たりして、休日希望の締切から従業員へ配るまで、2週間近くかかっていました。
そこで、シフトだけでなく、人に関する社内の仕事をまとめて扱える仕組みを作ることにしました。
作ったのは、一つの大きなソフトではありません。役割ごとに分けた、次の七つのソフトです。
・店舗シフト作成――20店舗分のシフトを組み、手直しして配るソフト
・従業員名簿――写真や所属、連絡先などを管理するソフト
・店舗管理――営業時間、定休日、特別営業日などを管理するソフト
・働き方の希望――働き方の希望や誰がどの店に入れるか、月の勤務日数や連勤などの条件を決めるソフト
・祝日設定――祝日の追加や除外、毎年のルールを管理するソフト
・従業員総合ポータル――休日希望の提出、シフトの確認、給与明細などの受け取りをまとめた画面
・有給休暇管理――有給の付与、使用、残数、失効履歴などを管理するソフト
この七つをつなぎ、一つの入口から使えるようにしたのが、今回作った社内業務ソフトです。

先月、初めて一か月分を作ってみました
結果から先に書くと、手直しまで含めて10分ほどで完成しました。
そのまま従業員へ配ったところ、あまりに早く届いたので、「これは何月分のシフトですか?」と聞かれたそうです(笑)。
今までは、そんな時期に翌月分が届くことなどありませんでしたから、無理もありません。
ただ、私が本当にやりたかったのは、単に担当者の作業時間を短くすることではありません。
シフトが早く分かれば、働く人も先の予定を立てやすくなります。子どもの行事、通院、旅行、家族との予定。早く分かっていた方がいいことは、たくさんあります。
2週間かかっていた仕事を10分にする。その時間は、会社だけでなく、働く人にも返せる時間だと思っています。
クリーニング店に合うものが、なかなかありません
シフト管理のソフトは、世の中にたくさんあります。
ただ、クリーニング店の働き方に、そのまま合うものがなかなかありません。
店ごとに営業時間や定休日が違う。複数の店に入れる人がいる。春の衣替え時期と、それ以外の時期では忙しさも違う。営業店のほかに工場もあります。
出来合いのソフトに合わせようとすると、どこかに無理が残ります。
しかも、名簿は名簿、シフトはシフト、有給は有給、給与明細はまた別、とソフトが分かれてしまうと、同じ情報を何度も入れることになります。
だったら、最初から全部をつなげた方がいい。
そう思って作り始めました。
希望を集めるところから、配るところまで
この社内業務ソフトでやっていることを大きく分けると、「集める」「組む」「直す」「配る」の四つです。
1.休日希望を集める
休日希望は、紙でもスマートフォンでも出せるようにしました。
紙で出したい人は、今までどおり用紙に丸をつけます。回収した用紙をスキャンすると、つけた丸を読み取り、休日希望として取り込めます。
スマートフォンなら、社員コードと暗証番号を入れて、休みたい日を押すだけです。締切が近づいてもまだ提出していない人には、お知らせのメールも送ります。
全員に新しいやり方を押しつけるのではなく、紙が使いやすい人は紙、スマートフォンが使いやすい人はスマートフォン。どちらからでも、最後は同じところへ集まるようにしました。

2.働き方の希望を考え、一か月分を自動で作る
集まった休日希望に、店舗の営業時間、一人ひとりの勤務条件、どの店舗に入れるかといった情報を合わせて、一か月分の案を自動で作ります。
ここで一番大切にしたのは、単に空いている枠へ人を当てはめるのではなく、一人ひとりの働き方の意向を、最大限尊重できるようにすることです。
人によって、「数日ごとにこまめに休みたい」「ある程度まとめて働き、そのぶん休みもまとめて取りたい」など、希望する働き方は違います。そうした休みの間隔や働き方の希望も、個人ごとに登録してシフトへ反映するようにしました。
また、月が替わったからといって、勤務の流れをいったんゼロにはしません。前月末の勤務も引き継いで確認し、月をまたいで長い連勤にならないようにしています。
そのうえで、月の出勤日数の上限と下限、週の上限、最大連勤日数、出られない曜日、休日希望、応援へ行く店舗までの距離など、さまざまな条件を組み合わせます。
誰がどの店舗にどの程度入れるかも、人と店舗の組み合わせごとに登録してあります。
こうした数多くの条件(パラメーター)を見ながら、一日ずつ順番に穴を埋めるのではなく、月全体をまとめて、できるだけ無理の少ない組み合わせを探します。
ただ人数をそろえるためではなく、できるだけ働きやすいシフトにする。そのための自動(オート)作成です。
3.最後は人が見て直す
もちろん、自動で出てきたものを、そのまま配るわけではありません。最後は人が見て調整します。
ここも、なるべく迷わないように作りました。
空いている場所を押すと、そこへ入れる人が候補として並びます。その日が空いているのか、別の店に入っているのか、休日希望があるのかを色で表示し、無理の少ない人から順に出します。
人をドラッグして動かすと、その人がもともと入っていた場所まで一緒に追えるので、玉突きの変更も分かります。
ゼロから全部を組むのと、八割ほどできた案を人が仕上げるのとでは、かかる時間がまったく違います。

4.紙でもスマートフォンでも配る
完成したシフトは、その場で三種類のPDFにできます。
店頭に貼る店舗別の表、全員を一覧にしたA3の表、本人へ渡す個人別の表です。今までExcelで作り直していた部分も、まとめて出せるようにしました。
スマートフォンでは、自分の今日の勤務と、この先の予定を確認できます。月間カレンダーでも見られますし、変更があれば「更新あり」と表示します。
シフトが初めて公開されたときだけでなく、後から変更版が出たときも、登録したメールアドレスへお知らせします。画面を開いていないときでも、変更に気づけるようにしました。
……で、いつものパターンです
最初は、シフトを作るソフトのつもりでした。
ところが、シフトを作るには従業員の情報が必要です。それで写真付きの名簿ができ、給与ソフトのCSVも取り込めるようになりました。
店舗ごとの営業時間や定休日、住所も必要なので、店舗を管理する画面ができました。誰がどの店に入れるか、勤務日数や連勤の条件を決める画面も必要になりました。祝日の扱いもあります。
さらに、計画したシフトと実際の勤務をつなげて、有給休暇も管理できるようにしました。勤続年数や出勤率をもとに付与日数を計算し、半日単位の取得、2年で失効する分、対象者の年5日の取得状況、一人ずつの管理簿まで確認できます。
従業員が使う画面には、シフトだけでなく、給与明細などの書類、店舗の営業日、福利厚生のクリーニング券もまとめました。出勤前に見たときに便利なので、勤務地の天気予報まで付いています。
業務画面があまりに殺風景なのもつまらないので、月ごとに色と背景の絵柄が変わるようにもしました。このあたりは、仕事に絶対必要というわけではありませんが、私のこだわりです(笑)。
そして、ソフトが増えると、今度は「どれを起動すればいいのか分からない」という問題が出てきます。
そこで入口を一つにまとめ、そこから必要なソフトを開けるようにしました。修正したプログラムを各パソコンへ一斉に配る更新機能と、「ここが動かない」「ここが分かりにくい」をその場で送れる不具合報告のボタンも付けました。
気づけば、七つのソフトがつながった社内システムになっていました。
一つ始めると、つい全部やりたくなってしまう。今回も見事にそれが出ました。

給与明細の電子交付まで、自前で作りました
給与明細をスマートフォンで受け取れる仕組みは、一般には専門のソフト会社が提供する有料サービスを使うことが多い分野だと思います。
今回は、そこも社内業務ソフトの中に自前で作りました。
ただPDFを置いて、本人が見られるようにすれば終わり、というものではありません。給与明細を電子交付するには、受け取り方をあらかじめ説明して本人の承諾を得ること、画面で確認して保存・印刷できること、書類が届いたことを知らせること、紙での交付を希望する人には紙で渡すことなど、守らなければならないことがあります。
そこで、国税庁の案内を確認しながら、電子交付の承諾画面と承諾書も作りました。誰が、いつ、どの内容に承諾したのかを履歴として残し、承諾した人にだけ電子交付します。紙での交付を選んだ人、まだ回答していない人、承諾を取り消した人には、紙で渡すことが分かるようにしました。交付方法などの大切な内容を変更した場合には、再度承諾を受ける仕組みも入れています。
便利そうだから作る、だけでは済まない部分です。承諾の文面や記録の残し方まで含め、制度上必要な手続きを一つずつ確認して実装しました。
外部の有料サービスに任せることが多い部分まで、社内の仕組みとして自前で持てたことは、今回作った中でも大きなところです。
人の情報だから、置き場所も考えました
このシステムには、従業員の名前、勤務条件、給与明細、有給の残日数などが入ります。
外へ出したくない情報ばかりなので、データの中心は社内のサーバーに置いています。スマートフォンから使う部分は、外から必要な画面だけにつながるようにしました。
便利になっても、情報の扱いが雑になっては意味がありません。ここは機能を増やす以上に、慎重に作っています。
実は二十歳の頃にも、レジシステムを作っていました
ここまで読むと、「クリーニング店の社長が、なぜこんなシステムを作れるのか」と思われるかもしれません。
実は二十歳くらいの頃に、自分でクリーニング店のレジシステムを開発し、全店で運用していました。当時は設計だけでなく、コードもすべて自分で書いていました。
その後も、社内で必要になるアプリケーションやソフトを作りながら、データベースやサーバーの知識も身につけてきました。
現場の仕事を知ったうえで、「この情報はここで使う」「この操作の次にはこれが必要になる」と考え、それを仕組みにしていく。そうした経験が、今回の土台になっています。
ですから、AIがあったから突然ソフトを作り始めたわけではありません。コードを書く方法は変わりましたが、何を作るのか、どう動かすのかを考える部分は、二十歳の頃から変わっていません。
基本設計は人間、コードを書く作業はAI
この開発では、プログラムを書く部分にAIを使っています。
基本的なアルゴリズムや業務のロジック、条件に使うパラメータ、データの持ち方、画面ごとの役割、七つのソフトをどうつなぐかは、すべて私が考えています。
AIに代行してもらったのは、こちらで考えた設計と指示を、実際のコードにする作業です。
こう書くと、設計さえ渡せば、あとはAIが勝手に完成させてくれるように聞こえるかもしれません。
実際は、そんなにうまくはいきません。
正直に書くと、AIはかなりアホです(笑)。
「ここだけ直して」と頼んだのに、関係のないところまで変える。一つの不具合を直したら、昨日まで動いていた別の機能を壊す。前に決めたことを忘れる。「できました」と言うので動かしてみたら、まったく動かない。
何度振り回されたか分かりません(--;)
最後には、ソフトごとの役割、データの流れ、どこを変更してよいのか、どこには絶対に触れてはいけないのか、どんな結果になれば正しいのかまで、こちらで事細かに考えて指示するようになりました。
それでも、少し曖昧なところがあると、おかしな方向へ進みます。かなり細かく制約をかけ、こちらの設計から外れないようにしなければなりませんでした。出来上がったものは自分で動かし、関係のない機能まで壊れていないか、一つずつ確認しています。
つまり、AIに考えてもらって完成したのではありません。私が構造を設計し、AIにコードを書かせ、自分で確認し、違っていれば細かく指摘してやり直させる。その繰り返しで、少しずつ形にしたという方が実際に近いです。
AIがなければ、ここまでの規模を一人で作ることは難しかったと思います。ただ、AIを使えば楽に作れるのかというと、まったくそんなことはありませんでした。
ちなみに、まだ開発途中ですが、Pythonで書いたプログラムは、動作確認のためのテストを除いても約8万7千行あります。テスト用のコードまで含めると、すでに10万行を超えています。
これくらいの規模になると、しっかり形にするまで何か月もかかります。実際、この夏~お盆も、ほとんどずっとこの社内業務ソフトを作っていました(笑)。
大きなプログラムは、作っても作っても、しばらく先が見えません。
そんなときは、数時間や数日で完成が見えるものを間に挟むと、気分が変わります。短い距離でも一度ゴールまで行けると、また長い方へ戻れるんですよね。
その合間に作っていたのが、癒やし系の動画と、その動画を作るためのソフトです。
前回のジャズの記事では「動画を作るためのプログラムも作り始めています」と書きましたが、実は動画作成ソフトの方が先に完成してしまいました(笑)。そのソフトで作った動画は、もうYouTubeでも公開しています。(https://youtu.be/cUTQh9grwbM)
こちらの話は、また改めてこのブログでご紹介します。
まだ完成ではありません
今動いているのは、まず営業店の部分です。次は工場のシフト作成に取りかかっています。
その先には、店舗と本部のやり取りをタブレットで「やること」として残す仕組みや、社内マニュアルをその場で検索し、質問できる仕組みも考えています。
とはいえ、機能を増やすこと自体が目的ではありません。
シフトが早く届く。自分の予定を自分で確認できる。紙を探したり、同じことを何度も入力したりする時間が減る。働く人が感じている小さな不便やストレスを、一つずつ減らしたいと思っています。
働く人に少し余裕ができれば、仕事も丁寧になります。それは回り回って、お客様へお渡しする品物や、店頭での応対にもつながるはずです。
表からは見えない、社内の仕組みの話ですが、そんなことを考えながら作っています。
クリーニングのクボタ 社長・久保田





