ふと4年前に作ったwebサービスにアクセスしてみたところ、エラーが出ていたので、いい機会だと思いコードの修正をすることにした。
hatena-bookmark-read-all.herokuapp.com
コードとwebサービスはこれ。はてなブックマークの「あとで読む」を一気に読めるwebサービスで、4年前に はてな×ドワンゴ合同ハッカソン@京都 で作った。
はてなブックマークのAPIの仕様が変わっていてエラーを吐いていたので、とりあえず動くようにした。そのついでにコードをガリガリ書き換えていて、いくつか気づきがあった。
- HerokuもはてなブックマークもHTTPS対応してた
- jQuery!!
- sixを使ってるけど捨てる
- Python2と3の非互換変更を吸収するライブラリ
- HerokuがPython3対応してたので退役してもらう
- requirements.txt使うのをやめてpipenvを使う
- Herokuのstackをアップグレードしたら自然とpipenvを使うようになった
- 現代的で良い
- 状態がいろいろなところに散らばっている
- リクエストごとにAPI叩きまくって一気にデータを持ってきていてワイルド
- かっこよく書こうとして分かりづらいみたいな書き方がある
any(map(x.__contains__, ys))
って書いてあったらギョッとすると思う
- 当然テストはない
これはハッカソンのコードですね、というところから、雑なwebサービスのコードですね、というところまで持っていくことができたと思う。 ページ遷移とくにないので、今やるならReactとかVue.jsとか使ってナウい感じに書くと思う。当時はMVVMみたいな概念は知らなくて、jQuery使ってDOMを直接いじってて手作り感がある。 まだ雑ではあって、認証失敗したらセッションをflushするのでもう一度ログインしてください、というモデルになっている。
みなさんも4年前に作ったもののコードを見直してみてはいかがでしょうか。4年経つとこうも変わるのかというのを感じられてお得だし、リファクタリングの練習になる。