はじめに
昨日のQiitaイベントに参加していたら、
「役に立たないけど、やたら面白いもの」を作りたくなりました。
そこで作ったのがこれです。
<社員くん>
放置するとログが増え続ける
見ている人(観測者)を意識し始める
止めようとすると嫌がる
最終的に「選択」を迫ってくる
業務効率は一切上がりません。
Excelなのでこれはアプリなのか?
という疑問はありますが、ひとまずアプリと思うことにして作りました。
理由は
状態を持つ
自動で動く
入力(選択)に反応する
内部ロジックが複雑
UI演出がある
つまり
👉 「Excel VBA製・デスクトップアプリ」
社員くんの全体構成
画面(メインシート)
セル 内容
A1 タイトル
B1 日付
C1 デジタル時計
A4 社員くんの立場(※嘘)
A7 状態
A10 ひとこと
A13 会議 ON / OFF
裏側シート
シート 役割
LOG すべての行動ログ(無限に増える)
ACH 実績解除
SYS 永続データ(VeryHidden)
一番重要な設計思想
① ログは止まらない
何も起きなくても、1分ごとに必ずログが1行増えます。
ログ記録 "AUTO", "時間が進んでいる。"
虚無の日でも増える
見ていなくても増える
止めない限り増える
これが後半の「狂い」の種になります。
② 観測者フェーズ
ログ数・行動・選択によって
社員くんは段階的に変化します。
フェーズ 状態
0 ただの社員
1 違和感
2 視線を感じる
3 観測を認識
4 選択を迫る
5 依存・拒否
6 完全に把握
If t > 160 Then observerPhase = 5
If t > 220 Then observerPhase = 6
③ 嘘の評価システム
本当の評価(内部)
表示される評価(嘘)
fakeEvalPoint = evalPoint + Int(Rnd * 7) - 3
**Excelが最も得意な「それっぽさ」**を悪用しています。
止めさせてくれない仕組み
停止ボタンは存在する
しかし、押すたびに態度が変わります。
素直に止まる
本当に止める?と聞く
拒否する
理由を聞いてくる
条件付きで止める
封印コードを要求する
If stopResistLevel >= 2 Then
表示更新 "停止は拒否された。"
End If
止める行為そのものが物語に組み込まれています。
観測者に選択を迫る
一定条件を満たすと、突然ダイアログが出ます。
MsgBox "観測を続ける?", vbYesNoCancel
選択 影響
Yes 親密度↑
No 反抗度↑
Cancel 不穏度↑
選択はすべてログに残り、
社員くんの人格が変わります。
画面が退屈にならない工夫
放置しても必ず変化が起きるようにしています。
セル色が脈打つ
文字サイズが変わる
表示が一瞬入れ替わる
タイトルが勝手に変わる
If Rnd < 0.25 Then
ws.Range("A10").Font.Italic = True
End If
**「見てないと何か起きてる感」**が重要です。
実績システム(Qiita映え)
LOG100:ログが100を超えた
STOP3:3回止めようとした
DENIED:停止を拒否された
CHAOS:ログが矛盾し始めた
ENDING:一応の終わり
AchUnlock "LOG100", "ログが100を超えた。"
LTで見せると盛り上がります。
なぜExcelでやるのか
理由はシンプルです。
みんな使える
配布が楽
VBAは「制約がある」
だからこそアイデア勝負になる
FlutterやUnityでは“怖くない”
Excelだから不気味
これは何が楽しいのか
作って楽しい
放置して不安
止めたくなる
止められない
最後は選ばされる
クソアプリの皮を被った体験型UIです。
まとめ
Excel VBAでもここまでできる
クソアプリは最高のアウトプット
Qiita LTとの相性が異常に良い
役に立たないものを作るのっておもしろい
「役に立たない」は才能
▼こんなのも作ってるので読んで行ってもらえるとうれしいです
Excel VBAで進捗バーを実装する方法