🎯

【文化祭】ダーツのスコアランキングを可視化するスコアボードを開発してみた

2024/10/31に公開

動機

文化祭でダーツ屋さんを出店することになり、来場者の得点をランキング形式で表示できると面白いと思ったので開発してみた。

画面

要件定義

ダーツのスコアボードを実装するにあたって以下の要件定義を行った:

  • スコアの挿入・削除を簡単に行えること:利用者がスムーズに操作できること
  • ファイルの読み書きでランキングデータを保持:プログラムが終了してもデータが失われない
  • シンプルで分かりやすいUIであること:誰でもすぐに使いこなせること
  • ダーツスコアボードとしての視覚的な特徴:ダーツのイメージが分かるデザイン
  • 実行が簡単であること:EXE形式での配布

開発環境

  • 言語:Python 3.xx
  • ライブラリ:
    • tkinter:UIの構築に使用
    • Pillow:背景画像の設定に使用
    • json:ランキングデータの読み込み・書き込みに使用

概要

  • 要件定義で示した仕様を満たすようにPythonのtkinterでGUIアプリケーションを作成した
  • 背景としてダーツのイラストを使うために、Pillowを用いて画像処理を行った
  • ファイル読み込み・書き込みを行うためにファイルフォーマットをjsonに決め、jsonに名前とスコアを書き込むようにした
  • 簡単にプログラムを配布。実行するために、.exe(実行可能バイナリ)での配布が望ましかったので、実装したPythonのコードをpyinstallerでコンパイル(.exe化)し配布した

使用方法

スコアの挿入

  • 名前とスコアを入力し、「Add Score」ボタンをクリックする
  • 追加されたスコアはリアルタイムでトップ5ランキングに反映される

スコアの削除

  • 削除したいプレイヤーの名前を入力し、「Delete Score」ボタンをクリックする
  • 該当する名前のスコアが削除され、ランキングが更新される

スコアの保存・読み込み

  • スコアデータは自動的にJSONファイルに保存され、アプリ起動時にデータが復元される

感想

このプログラムは実装にあたりAIの力を一部借りている。私はAIの力を借りる前に要件定義をしておいたので、スムーズに開発を進めることができ、要件定義の重要性を改めて実感した。

参考

Discussion