https://qiita.com/0903osa/items/46fa59470afb1bc0b3fc
前回の記事
はじめに
前回の記事ではシステム構成や設計について紹介しました。
しかし実際の開発では、設計よりも「なぜ動かないのか」と格闘していた時間の方が長かった気がします。
今回は実際にハマったポイントを紹介します。
失敗その1 仮想環境が理解できない
最初は仮想環境の意味がわかりませんでした。
ライブラリをインストールしても認識されなかったり、別プロジェクトの環境が壊れたりしました。
結果として、venvとrequirements.txtの重要性を痛感しました。(仮想環境を導入する理由はあとで話します)
ちなみに、ここでAIに仮想環境の説明しないと、勝手に最新バージョンにしてしまう
失敗その2 顔認証を試した
(仮想環境を入れた理由。最新のPythonにはこのAPIは対応していなかった)
実は最初はQRではなく顔認証をやりたかったです。
OpenCVで実装を試しました。
しかし、
- エラーが発生する
- 認識まで時間がかかる
- 照明条件で結果が変わる
などの問題がありました。
(あとそもそも動かなかったあとプライバシー的にも無理だったかも?)
最終的に勤怠システムとしてはQRコードの方が速く、安定していました。
そのため顔認証は採用しませんでした。
失敗その3 1画面で全部やろうとした
最初は入場も退場も同じ画面で処理していました。
しかし状態管理が複雑になり、コードも読みにくくなりました。
そこでv2では入場・退場・管理画面の3つに分割しました。
まとめ
今回の開発で学んだのは、
「コードを書くこと」よりも、
「問題を見つけて修正すること」の方が重要だということです。
完成したシステム以上に、失敗した経験の方が多くの学びを与えてくれました。
次回は、このシステムを実運用レベルに近づけるために考えていること
(セキュリティ、クラウド化、データベースの見直しなど)
について書こうと思います。