「母親が丸一日かけて作っていた30人分のシフト表を、プログラムで自動化した」という、とある人物のツイートが大反響を呼んだ。
母親が毎月ヒーヒー言いながらから丸一日かけて作成してた(意味わからないくらい条件が複雑な)シフト表(30人分)を、Pythonで自動作成するプログラム書いてあげた
日曜の3時間生贄になったけど、ITリテラシー皆無な母親は魔法みたいと言って5千円くれたし、PythonでExcel操作する勉強になったから○
このツイートは3.6万いいね、3000回以上の RTを記録。「技術者として最高の親孝行」「うちの息子になってほしい」「日本の未来は明るい」などといった、好意的な反応が寄せられた。
ツイートした24歳のシステムエンジニアmorioさんは、キャリコネニュースの取材にこう語る。
「驚きましたね。Twitterは“見る専”で、たまに気持ちをつぶやくくらい。自分のツイートがバズるなんて思いもしませんでした。ちなみに、Twitterの『トレンド』にも僕のツイートが出たそうで、彼女にアカウントがバレました(笑)」
ツイートした経緯は、どんなものだったのだろうか? morioさんに聞いてみた(取材・文:キャリコネニュース編集部)。
複雑すぎた「シフト表」
すべての発端は、1通のLINEだった。「勤務先のシフト表を毎月作るのが本当に大変。何とかしてもらえないかな」。市の保育士としてフルタイムで働き続けている母からの相談だった。
morioさんは母と仲がいい。子供の頃からかわいがられて育った。教育方針は“自由放任”。進学先や就職先選びにはいっさい口出しせず、morioさんが自分で決めて事後報告してきた。けれど、困った時には相談し合える間柄だ。
「シフト表を作るのが大変」って、どういうことだろう。職員の勤務予定を表にまとめるだけなら、手書きでも簡単にやれるはずだ。きっと「シフト表をExcelで作りたいけれど、使い方がわからない」ということだろう――。
morioさんはそう思い、「そんなの簡単だから、今度作りに行くよ」と返事した。そしてある日、電車で30分ほどの実家に行くと、母から2枚の紙を手渡された。そこには「シフト表が満たすべき条件」がびっしりと書き綴られていた。
それはこんな内容だった。保育園には年齢別のクラスがある。そのクラスごとに、遅番・早番・普通番の保育士が必要だ。さらに、保育士の勤務体系は10~15 ほどあり、それぞれの勤務日数には上限が設定されている。さらに、遅番を担当した保育士には次の日の早番が割り振れないなどの制限もあった。
そうか、お母さんは「複雑な条件をすべて満たすシフトを組むのが大変」と言いたかったのか。となると、Excelで解決できる話ではなくなってくる。仕事で使っているプログラミング言語Pythonでコードを書くしかない――。
morioさんは普段、クライアント企業の新規Webサービス開発に携わっている。自身はフロントエンドの担当でJavaScriptを書く機会が多いが、バックエンドはPythonで開発しているため、Pythonの読み書きもできたのだ。
morioさんがシフト表作成のために書いたPythonのコードは101行。このコードのファイルをダブルクリックして実行すると、複雑な条件をすべて満たすExcelのシフト表ができあがる。
シフト表作成のPythonコード(個人名などを伏せるため、一部改変)。「条件をそのまま書いただけで、ベテランの方からすれば、まったくきれいなコードではないですが……」とmorioさん本人は語る
自動生成されるシフト表のサンプル。実際には、アルファベット部分が個人名になっている。
こうして、morioさんのわずか3時間ほどの作業で、母はシフト表作成の苦しみから解放された。その後、morioさんには、父から感謝のLINEが長文で届いたという。毎月間近で見てきた妻の苦行を、息子が技術力で解決してくれたことがうれしかったようだ。
「繰り返し作業は、仕組みで解決したい」
今でこそ技術力を身につけているmorioさんだが、社会人になるまではプログラミング経験ゼロだった。就活時にSEを志望したのは、腕を磨いた分だけ課題が解決できるようになり、やりがいが感じられそうだと思ったからだ。実際働いていると、想像していた以上に毎日が楽しい。ものづくりができるだけでなく、その過程で自分自身も技術的に成長していくからだ。
「難しい実装に成功した時には脳汁が出ますね。『よっしゃー!』となって気持ちいいです」
今回のシフト表同様、仕事やプライベートで何かあると、ちょっとしたツールを作ることもある。仕事では、毎回1時間以上かかっていたExcelの事務作業をたった1分に短縮するVBAツールを作り、後輩に引き継いだ。プライベートでは、勉強用のAWSアカウントで高額請求が来ないよう、当月分の使用金額を定期的に通知してくれるLINEボットを作った。
面倒な繰り返し作業はできるだけ仕組みで解決したいmorioさんの性格は、プログラミングを離れた領域でも発揮されている。自宅ではアレクサを活用して生活の一部を自動化。冷房の温度や照明の明るさを時間帯によって切り替え、ゴミの日の朝には教えてもらっているという。
シフト表のその後は……
morioさんは20代のうちに技術力を高め、同じチームにいる先輩のように何でもできるエンジニアになりたいと考えている。いま、気にしていることは何だろうか?
「そうですね……エンジニアとしてのスキルは思ったよりも身についてきています。それよりも、社会人としての対人スキルが心配です」
morioさんは2020年4月入社のコロナ直撃世代。入社してからリモート勤務で、出社回数は20回にも満たない。これまでリアルの場では目上の人と接する機会があまりなかった。だから、立ち振る舞いをはじめ、社会人としての基本ができているか不安だと語る。
ちなみに、シフト表のその後を聞くと、morioさんは笑ってこう答えた。
「母からはすでに2度、追加で依頼が来ています。『この条件を言い忘れていたから、付け加えて』と。1度目はすぐ対応したけど、2度目はまだです。職員さんが入れ替わったら、またメンテの依頼が来るんでしょうね」
morioさんの「エンジニア流・親孝行」は、まだまだ続くことになりそうだ。