Python + pygame で反応時間測定ツールを作ってみた
はじめに
「反応時間を測定するツールを作ってみたい」と思い立ち、Pythonとpygameを使ってプロトタイプを作成しました。
環境構築からエラー対応、GitHubへのアップロードまで、Python及びVisualStudioの初心者なりに試行錯誤した記録です。
使用技術・環境
- Python 3.12.7
- pygame
- Visual Studio(Python環境構築と実行)
- GitHub(コード管理)
- Windows 11
プロジェクトの目的
- ランダムなタイミングで刺激を提示
- エンターキー入力による反応時間の記録
- 結果をCSVファイルに保存
- 画面表示は最小限、記録に集中
環境構築の流れ
Pythonのインストールとパス設定
-
C:\study\python.exeにインストール - Visual Studioで「カスタム環境」として追加
pygameのインストール
pip install pygame
Visual Studioでの環境切り替え
- ソリューションエクスプローラーから Pyton環境を右クリック
- 環境の追加を押す
- 「既存の環境」を選択し、ファイルからパッケージをインストールで C:\study を指定
- 追加を押す
この環境の追加がよくわからず、既存の環境扱いになっていたところの、Pythonフォルダを丸ごと消して、VisualStudioを開きなおすことを実施して、何とか環境設定が完了。
トラブルと対処
UnicodeDecodeError(cp932 codec can't decode byte)
原因:文字コードの不一致
対処:ファイルの文字コードをSJISからUTF-8に変更 右下のほうにある
pygameが見つからない(No module named 'pygame')
原因:Visual Studioが別のPython環境を使っていた
対処:正しい環境に切り替え
ここで、環境切り替えの問題に引っかかった。
解決法は上記参照。
出力ウィンドウでの文字化け
原因:エンコーディングの不一致
対処:画面表示をやめてCSV出力に切り替え
断念してしまったので、文字表示を成功させたい
実装のポイント
- random.randint() を使って試行間隔をランダム化
- csv.writer() で反応時間をCSVに保存
- utf-8-sig で保存することでExcelでも文字化けしない]
GitHubへのアップロード
リポジトリ作成
- 勇気が出ないので非公開でアップロード
READMEとLICENSEの整備
- READMEには目的・使い方・環境構成を記載
- LICENSEはMITライセンスを採用
MITライセンスって何?ってところから始まった。
コードの使用、改造、商用利用が可能だが、元の著作権表示とライセンスの明記が規則らしい
学びと振り返り
- 環境構築の重要性と落とし穴
苦手意識が消えない…
実装を前提とした環境構築をするという意識と、フォルダ管理が重要 - エラーに向き合うことで理解が深まる
検索やAIを頼って、少しずつでも解決に迎えるように。根性も必要。 - 「動いた!」という達成感は何よりの報酬
思い描いていたものに近いものが出来上がると、とても感動する。
今後の展望
- 折角Pythonを使っているので、グラフ化や統計処理の追加
- GUIの改善
- 公開リポジトリ化
- Qiita記事のシリーズ化
論文なども呼んで、実際の現場で使えるものに近づけていきたい。
終わりに
- Copilotを使い倒そうという思惑も、大分達成できた気がする。
- 他言語で計二年程度の実装経験しかないので、環境構築もエラー対処も初めてのものが多く、根気強く行う必要があった。
- 画面の見方など、今回で感覚がつかめたものもある。
- 突如思い立って、Qiitaの記事まで書いてみた。
- 勇気をもってコードを公開できる日が来ることを祈っておく。