この記事は、 JSL (日本システム技研) Advent Calendar 2019 - Qiita 12/2の記事です。
昨年同様、今年もJSLメンバーによるアドベントカレンダーをお届けします。
今回の記事は、ついカッとなって作成したアプリについて、ゆるく書いていきます。
目次
作ったもの
歓迎会の前日の雑談で「自分はなぜか最近の飲み会で役付きの方の隣が多いですー」という話題になりました。
そこで、ついカッとなって、翌朝までに、飲み会座席のくじ引きアプリを作ることにしました。
作成するまでの流れ
まず、欲しい機能としては
- 自分の社員番号を入力したら、席番号を表示する
- ランダムで席番号を割り当てる
- 一回表示した社員番号の場合は、同じ席番号を表示する
- 存在しない社員番号の場合は、エラーを表示する
があれば良さそうでした。
そこで、Python & Python製WebフレームワークのDjangoを使うことにより、各機能を実現できそうでした。
- 自分の社員番号を入力したら、席番号を表示する
- ランダムで席番号を割り当てる
- Pythonの
random
モジュールを使う
- Pythonの
- 一回表示した社員番号の場合は、同じ席番号を表示する
- DjangoのORMを使う
- 存在しない社員番号の場合は、エラーを表示する
- Djangoの
get_object_or_404()
で存在確認する - 存在しない場合のHTTP 404は、カスタム404ページを表示する
- Djangoの
一方、最低限動けばいいだろうと考え、
- CSS
- JavaScript
- テストコード
あたりは、がんばらない方針としました。
機能と実現方法さえ決まれば後は実装するだけなので、夕食後に実装し始めて22時半くらいには完成しました。
ただ、翌朝までという時間制限を加えることで、ハッカソン的になったことから
つい勢いで作ったけど、完成したら満足してしまったので、元々の勢いがどこかへ。。。
— thinkAmi (@thinkAmi) October 31, 2019
と、作るだけで満足してしまいました。。。
アプリの画像
トップ
座席決定
存在しない場合
社内への公開から運用へ
満足したとはいえ、お蔵入りするのもなーと迷う気持ちがありました。
社内Slackでは分報を運用しているため、気軽に
最近の飲み会、くじ引きから自由席になった結果、なぜか役付きの人の近くにしか行けず。。。 ランダム性がほしいと思って、昨夜ついカッとなってくじ引きアプリを作ったけど、アプリ作ったら満足してしまった。。。
と書いてみました。
するとありがたいことに、@_sin_tanaka より
一旦ランダムでやってみる感じでいいと思います!せっかく作ったものなので!
と後押しがありました。
そこで、社内の雑談チャンネルにて
と書いたところ、ありがたいことに @chinoppy0727 の手により運用してもらえることになりました。
とはいえ、上記の通り、かなり機能を絞ったまま公開してしまったため
- アプリ仕様や使い方のドキュメントが無い
- 社員場号だけが使われるので、社員番号が不明だと、誰か分からない
- Django adminによる管理画面作ってなかった
- fixtureは用意していた
- 「実際の物理席に、座席番号を書いて置く必要がある」という制約
など、かなり運用はつらい感じだったと思います。。。
運用に乗ってみて
ランダムで座席を決めているはずなのに、役付の人のまわりには変わり映えしないメンバーが集まるという、現実不具合がありました*1。
そのため、歓迎会が始まるまではつらい気持ちになりました*2。
とはいえ、自分が作ったものが使われると嬉しかったこともあり、カッとなって作るというのもたまには良いなーと感じました。
あと、今年度は開発合宿もあるので、このようなものがまた作れるかもしれないのも楽しみです。