古い記事
ランダムジャンプ
新しい記事
グループ分けを複数回やるときになるべく同じ人とかぶらないように振り分ける、というのはよくある課題ですが、それを解決するツールを作りました (HTML + JavaScript)。車輪の再発明とか知らん。

barasukun

「作りました」とは言っていますが、プログラムのコードはすべて生成AI(ChatGPT)に書いてもらいました。私は仕様書(兼プロンプト)を書いただけ。ChatGPTに仕様書テキスト貼り付けて、「これ作って!」と頼む係です。

この手のウェブツール作成は生成AIの得意分野ですね。一手目からかなり思い描いた通りのものが出てきて、未来を感じます。「こういうツールを作りたい」という要望を持つのはまだ人間側の特権(?)みたいなものですので、要望をしっかりと仕様(プロンプト)に落とし込むことが出来さえすればAIとうまく共存できそうな気がしています。当面の間は。

というありきたりな生成AI感想は置いておいて、振り分けロジックの話。結局、目から鱗が落ちるようなトンチ的な解決方法はなくて、スタンダードなやり方に落ち着きました。これまでの回に誰と誰が一緒のグループになったかという共起情報を振り分けのときの使う作戦です。

データの持ち方は、参加者それぞれが何回目にどのグループに割り振られたかの履歴を持ち回るという方法。"#1A" は1回目にグループAに振り分けれらたこと、"#1A#2B#3C" は1回目はグループA、2回目はグループB、3回目はグループCに振り分けられたことを意味する履歴です。"天下一太郎#1A#2B#3C" のように参加者名の末尾にこの履歴を繋げて、それ自体をマスターデータとしています。必要な情報はすべて人目につくようにしています。

そんなわけで、この履歴付き参加者一覧をテキストでコピペすれば、セーブ&ロードになります。前回の続きから(例えば第5回から)グループ分けの再開ができるのです。

途中参加の人は参加者リストの末尾に履歴なしで名前を足すだけ。途中でいなくなる人はその名前を履歴ごと削除するだけ。シンプルです。

グループ振り分けがうまくできたかの評価基準として「またかよ数(MK)」「またかよ平均(MA)」というのを導入しています。これらは共起 (cooccurence) 関連の数値でして、キャッチーにそう呼んでいるだけです。
  • 「またかよ数」は参加者それぞれがグループ振り分け後に「またこの人と同じグループかよ!」と思う回数の合計です。「またAさんと一緒かよ、Bさんもかよ、Bさんは3回目だよ」という場合はこれまでにAさんは1回、Bさんは2回一緒だったので「またかよ数」は3となります。
  • 「またかよ平均」はそのグループの全メンバーの「またかよ数」の平均で、そのグループにうずまく「またかよ!」の強さを表しています。

なお、ツール名はChatGPTに考えてもらいました。他のネーミング候補としては「一期一会シャッフル」「またかよ防止くん」「グループシャッフル最適化ツール」「もう会わないグルーピング」などがありました(すべてChatGPTによる)。