今年の 3 月に Google から
Please upgrade your projects to Artifact Registry before March 18, 2025
というメールが届いた。Container Registry が deprecate されるので新しい Artifact Registry に移行してねという内容なのだが、そんなもの使った記憶がないと思いながら調べていくと App Engine を使ったデプロイの裏で使われているらしいことがわかった。
App Engine でデプロイしていたのは「政府統計 e-Stat API を使うための事前知識」という Qiita 記事を書いたときに作ったサイトで、ブラウザ上で API からデータを取得して表示できるという内容のもの。どうせ誰もアクセスしていないだろうし潰そうかと考えていたが Google Cloud Console のメトリクスを見てみると意外と 1 日一回以上くらいはアクセスされているようで、 代わりとなるサイトもなさげだったので引き続き使えるようにすることにした。
アプリケーションの構成としてはバックエンドに Django を使用しており、フロントエンドには React を Webpack + Babel でビルドしたものを Django を通してホストしていた。
サービス継続の道筋は 2 通りあって、1 つは Artifact Registry でデプロイし直す方法。小さいサイトなので Python と Django のバージョンさえ上げればできそうな気配はあるのだが、動かなかった場合に 3 年前に書いたコードを修正する必要が出てきてそれは苦しいので避けたかった。
もう一つの方法は、完全に作り直すこと。こっちのほうが楽だし楽しいのでこちらに軍配が上がった。
というわけで作り直した。
解説
バックエンドは Node.js で、 e-Stat API へのアクセスを中継する軽い Wrapper 関数を定義して Google Cloud Functions でホストしている。フロントエンドは Next.js で作って static export して GitHub Pages でホストしている。コンポーネントライブラリはなんとなく使いたくなかったので CSS を手で書いた。
全体で 1 ヶ月くらいかかった。git の履歴を見ると 3 年前に作ったときは 3 週間で作り終えていたらしい...が、当時は修士卒業後の仕事が始まる前の 3 月だったので今よりも相当時間があったと思うので良しとする。
感想
データベースを必要としない軽いアプリであればサクッと作れるくらいには React も手に馴染んできたなと感じる。逆にデータベースを必要とするアプリは全然わかっていないのでかなり弱点となっている。フロントエンドも良くわかっているというよりも不自由なくライブラリが使える程度の能力といったところなので、より本質的なところがわかるようになりたいですね。
あと、メンテナンスめんどくさいので適当に書いたものを適当に公開するのも考えものだなと思った。Maintainability を意識して作って、作った後は真面目にメンテナンスするというのも大事なスキルだなと認識しつつもプロジェクトに対する熱意は下がり続ける宿命なのでどうしたもだろうか。