みどりのあくま

勉強したことをアウトプットしていきます。

一年前に作ったWebアプリをアップデートする案

以前まではブログに書く内容はもう少しまとまってからにしようと思っていたのですが、こちらのnoteの記事を読んでもう少し頻繁に書いていこうかと思います。

note.mu

今日は以前自分が作ったアプリをアップデートしたいと思ったので、そのプランについて書いていこうと思います。

作ったアプリについて

まず今のアプリについて話します。
ちょうど去年の今くらいに「けものフレンズ解析機」というアプリをリリースしました。

orange634.hatenablog.com

ボクニマカセテ! フレンズ解析機

今まで自分でサーバーを立てたことないので、その練習用に作成しました。
また、興味があった機械学習と業務でpythonを使っていることもあり、機械学習にチャレンジもしてみました。

実装方法

webアプリはconohaでVPCを借りて、nginx + gunicorn + flaskで実装しています。
機械学習部分はtensorflow + dlibを使っています。
webフロントはjQueryで実装しています。

アップデート案

目的

このアプリをアップデートをしようと考えています。
理由としては以下の4つが上げられます。

  • アプリの特性上一発ネタなので、今はアクセスはゼロに近い。でもサーバー費はわずかながらかかっている。勿体無い。
  • 表示をjQuerydisplay: blockdisplay: none を切り替えることで実現していますが、正直微妙
  • 最近はwebフロントに触るようになり、jQuery以外の選択肢がある
  • タスクキューを使うなど、より実践的な実装を試してみたい

特にサーバー費を浮かしたいのが今回の目的にメインです。
たかが500円、されど500円。

方法

それぞれに関して案を考えてみました。

サーバー費節約

案1:dcockerを使い他のアプリと同一サーバーに複数アプリを同居させる

サーバー一つをこのアプリに使っているから勿体無く感じるので、複数のアプリがデプロイ出来ればいいのではと考えました。
自分専用botのサーバーとかちょうど欲しかったので合い乗せできるならそこまでそんな感じはしないかなと思いました。 合い乗せにする際も、dockerを使ってアプリ同士の依存なく稼働させるように作りたいと考えています。

案2:herokuを使う

どうやらherokuでopencvやtensorflowを動かすことが可能みたいです。

tomoto335.hatenablog.com

qiita.com

正直ネタアプリなので、常に稼働している必要はなく、動くならherokuを利用してもいいかもしれません。
何よりタダと言うのがいいですね。

これに関しては案2を先に進めて、難しい場合は案1に戻る方法を取ろうと思います。

フロントの書き換え

jQueryでなんちゃってSPAを実装していましたがこれも書き換えたいと考えています。
自分が使える、VueかHyperappにしようと考えています。
こちらもとりあえずHyperappで作成して、無理そうならVueに置き換えるようにしたいと思います。

タスクキューの導入

あんまり必要ないので後回しになりますがこれもやってみようかと思います。
前に使ったことのあって、pythonで動くceleryを考えています。
ただherokuを選んだ時、celeryが動くようになるのか…
ちょっとわからないので、おまけで出来ればやる程度の認識です。

判定方法やフレンズ数を増やす

dlibで顔の位置を判定して、tensorflowでどのフレンズか判別しています。
dlibで学習したデータはどれも正面を向いているものばかりなので、ちょっとでも傾いていると判定が出来ません。
今後は画像を徐々に回転して判定出来るようにしたいと思っています。
そうすることで、より判定の制度をあげるとこができます。

また、今は4人のフレンズしか判定出来ないので、学習し直して判定できるフレンズを増やしたいです。

まとめ

つらつら書きましたが、まとめると以下のようになります。

  • サーバーをherokuに移す
    • 上手くいかなかったら、元サーバー上にdockerで稼働するようにする
  • WebフロントをHyperappで書き換える
    • 上手くいかなかったら、Vueでもやってみる
  • 検証しながらceleryなどのタスクキューも入れていきたい
  • 判定方法やフレンズ数を増やす

移行作業の過程も積極的に記事に書いていこうと思います。