こんにちは、かみじょうです。
過去記事を見ていただくと分かりますが、弊社では自分用アプリを作っている人が多いです。自分もその中のひとりで、「食べたリンゴを集計する」アプリを作成しています。
https://ringo-tabetter.herokuapp.com/hc/total
今回は、このアプリをアップデートした話を書きます。
そもそもこのアプリですが、
[ある年] 産直所でリンゴを買う ---> おいしい!!! ---> 来年もほしい!!!
[翌年] いつ頃食べたのか思い出せない...
を解消するために作成しました。
リンゴは季節モノなので、早いものはお盆明けから並びます。ただ、品種によっては、あっという間に姿を消してしまいます。
そのため、買える時期を記録し、あとで見返せるようにしました。
ただ、このアプリはDjangoをさわり始めた時に作ったモノなため、
・Python 3.4系 & Django 1.8系
・テストコードなし
など、寿命が過ぎているのにメンテナンスしづらいという、つらい状態でした。
さらに、時間の経過とともにパフォーマンスも悪化し、ついには使いづらいアプリになってしまいました。
そこで、リンゴのおいしいシーズンが終わったのを見計らって、このアプリをメンテナンスしました。
メンテナンス内容は以下で、仕事でよくあるようなものです。
・開発環境のDBをDocker化
・テストコードを作成
・基盤を最新版 (Python 3.7.2 & Django 2.1.5) へアップデート
・合わせて、各種ライブラリも最新化
・Djangoっぽいアプリケーション構成へと修正
・jQuery + getJsonでの非同期データ取得を、Fetch API + async/await へと修正
・パフォーマンスの改善
メンテナンス後は、開発・閲覧の両方が快適になりました。使いづらいまま放置するのではなく、「常に運用・メンテナンスしやすくしておく」ということの大切さを、改めて感じました。
また、機能追加をしやすくなったので、今後は実験的な機能を追加したいと思えるようにもなりました。
なお、何をしたのか詳しく知りたい方は、以下を参照ください。また、誤りや「こうした方がいい」などありましたら、ご指摘いただけるとありがたいです。
Python3.4 & Django1.8な個人アプリを、Python3.7 & Django 2.1 へとアップデートした - メモ的な思考的な
半年後から始まるリンゴシーズンが楽しみです。