サークル長の囮猫です。
梅雨ですね。
雨は多いし、バイト帰りで倦怠感もあって、ちょっと寒気するし、憂鬱な季節だなぁと思って体温を測ったところ、38.3度程度発熱していてびっくりした週末です。体調ですか…?安心してください。さっき測ったら36度台でしたので。
そんなことはさておき、今回はXR音楽ゲームの制作チームとしてではなくもっぱら個人の活動記録です。
プレゼンサークル「ITED」から受けた依頼
先にお断りしておきますが、今回作ったのは関数を組みまくったスプレッドシートです。
「プログラミングサークルだし、なんか凄いゲームとかソフトじゃないの??」と思うかもしれませんが、残念ながらプログラミングはしておりません。
具体的に、どんな依頼だったかと言うと、IPUTのプレゼンサークル「ITED」さんから頂いた、以下のような依頼です。
「プレゼンサークルで、ポイントランキングシステムを導入して、サークル活動を盛り上げたく、そのポイント管理するものを作って欲しい」
所謂、ゲーミフィケーションってやつですね。
必要機能とその周り
提示された要件は以下のようなものでした。
- メンバーの「ポイント獲得日」と「その内容」、その「ポイント数」を記録できること
- メンバーの氏名と総ポイント数のランキング表示
- 各メンバーが確認しやすいこと
- 編集者は幹部メンバーや先生
- システムは4年生引退後も引き継ぎやすいもの
技術選定
作る方法はいくつかありますが、今回はスプシで関数シートを組む形で制作しました。
勿論、1からソフトウェアやオンラインサービスとしてガッツリ作る方法もあるものの、時間がかかりすぎるのと、その後の保守点検が面倒。もっとも、まだ手動ですらポイントシステム自体試していないものを、ソフトやサービスとしてヘビィに作ると「あれ変えて!これも変えて」になり、最終的には「やっぱいらねぇな…」となるのがオチ。
スプシの他には、エクセルという手もあります。しかし、各メンバーが確認し易いかと言われたら微妙。
オンライン上のエクセルファイルで共有という手もあるけれど、(あくまでも体感の話だが)Googleサービスに比べてログインするのがスムーズでなかったり、何となくもっさり動く気がする。加えて、スクリプトを組むにしてもGoogleならオンライン上で動作する、比較的慣れ親しんだGASがあるけれど、Web版エクセルにはなかったはず。
そして、これをいうと元も子もないですが、僕のMS社のオンラインOfficeサービスへのヘイトが勝ってしまっているので、使いたくない。
以上、開発速度的にも、今後の保守点検や拡張の手間を考えても一旦スプシで関数シートを組むのが楽そう、というのが結論でした。
要件をすり合わせながら開発
とりあえず、一案目を作り見せたところ、追加で「ポイントをつけたらその地点で自動でタイムスタンプがつくようにできない?」とのこと。
勿論できる。が、作った見た目では見づらくなりそう。そもそもどうしてそういう要望が出たのかも気になったので、実際の運用の想定を聞いてみたところ、どうやら活動は個人単位が多くなる想定で、イベントで一括でポイントをつけることはそんなに多くないだろうと。そのため、イベントごとではなく、個人ごとで記録されるような仕組みが欲しく、そんな要望が出たらしかった。
一案目では、確かに「一つのイベントに対してそれぞれがどれだけポイントを得たかを記録する方式」だったので、これを要望に沿って「個人の活動に対してポイントを記録する方式」に変える必要があります。
また、話を聞いていると、「幹部メンバーや先生がポイントを付与するなら、これ、メンバーにGoogleフォームでポイント付与の申請を飛ばしてもらい、それを幹部メンバーや先生が承認・付与する管理が良いのでは?」という気がしました。それをそのまま伝えたところ、「そこまでは考えていなかったけど、たしかにそのほうが良いかも」との返答が。
こういうちょこっとした提案が通った時、うれしいですよね。
以上を踏まえて、二案目に着手。
ランキング表示の部分はそのままに、管理入力用シートを新規に作成していきました。
ちなみに、スプシで関数シートツールを作る際のコツは、入力用シートと出力用シート、必要に応じてデータ整形用シートに分けてシートを作ることです。
入力場所と閲覧用の整形データが同じシートだと誤操作で関数を消してシートを壊したりする可能性が高くなります。また、ワンセルに難読な激長関数が入るくらいなら、関数を分けて、データ整形だけした非表示の参照用シートを作っておいたほうが後々点検しやすくなります。
二案目を作っているのと並行で、機能についてヒアリングをしていると、全体でイベントを行った際にイベントパスワードを発行して不正参加を防止したい、ワースト3位までを強調表示したいなどの要件が挙がったのでそれらも機能に組み込むことに。
そうして出来上がったシートがこちらです。
https://docs.google.com/spreadsheets/d/1bpFNUJrxikoh00ikEVnTTIJiIjDTir9r03Mq-hnUaTU/edit#gid=1394889201(閲覧権限ですが、ご自身のドライブにコピーしてもらえればフォームまでコピーされて使えるはずです。)
これが今日一日の出来事でした。
なんだろう、アジャイル開発っていうんですかね。多分そんな感じの作り方で楽しかったです。(小並感)
終わりに
スプシで関数を組むだけでも便利なツールが作れる…改めてスプシの汎用性を再認識しました。Google先生バンザイ。
特に、こういう新しい仕組みを導入する際にははじめから高度なものに手を出すより手近な試しやすいものからミニマムに始めることをおすすめします。中でもスプシはjavascriptライクなGASで結構拡張できるのでオヌヌメです。
DX化だの自動化だの色々言われている昨今ですが、正直プログラミングが出来なかろうとそれは良くて、大事なのはなんのためにツールを作っていて、何を使えば何ができるのか、それを知ることが大事かなと思います。
もし、プログラミングサークルに何か自動化したいだったり、ツールを作って欲しいなどあればご気軽にご相談ください。多少力になれる…かも?
ちなみに、関数を組むのが面倒だったので、一部はChatGPTに投げて不具合部分だけ修正したりしていました。そのお陰でたった一日という爆速制作が実現しました。
現代に生まれてよかった…。
(ピピッ)
おっと、体温計を脇に挟んでいたのを忘れてました。
…37.9??
⇐To Be Continued