貧乏サラリーマンが副業せずにどうにか稼ぎたい

副業禁止のサラリーマンがなんとか家で稼げないか挑戦します!

とりあえず1個Webアプリを作ってみた

アプリ作成の経緯

サラリー以外の収入が欲しいと思い始める以前から、趣味でWebアプリを作っていた。
元々は自分が便利だと思ったツールを作ってみたのだけれど、どうせならみんなに使ってもらえないかなーと思いWebアプリ化してみた。

そもそものツール作成の部分を含めて、Webアプリ化に伴って色々挑戦したのでここでちょっとずつ記事にしていこうと思います。

作ったWebアプリ

作成したWebアプリはこんな感じ。

Webページの画像

2d3dclassifier.drunkworker.net

シンプルなシングルページのアプリケーションで、できることもシンプル。

  1. 画像ファイルを単体か、zipファイルでアップロードする
  2. 「判定開始」ボタンを押して少し待つ
  3. 画像なら判定結果、zipファイルなら判定結果にフォルダ分けしたzipファイルのダウンロードURLを表示

とこんな感じのWebアプリです。 皆さんぜひ使ってみてください。

需要

個人的には2次元画像と3次元画像を仕分ける需要がめちゃくちゃあったわけなんですよ。皆さんもありますよねぇ??ねぇ?
人の目で何千枚の画像を仕分けるのはしんどいじゃないか、、ということでちょうどたまたま画像分類AIの勉強がてらツールを作ってたら、これ便利なんじゃね?となったのでWebアプリの形にしてみました。

構成

開発・運用環境

Webアプリの構成はこんな感じです。結構シンプルな構成ですね。
今回は開発環境は基本的にすべてローカルで、アプリの配置関係をすべてAzureに行っています。

構成要素

ローカル

  • Anaconda
    • Pythonの開発環境を仮想化するのに使用しています。Pythonのパッケージ周りは管理が結構面倒くさいですね。。
    • Anaconda環境の上でPythonとPytorch、Flaskなどのライブラリを動作させています。
  • Docker
    • 最終的に必要なライブラリを記載したrequirements.txtをDockerFileから呼び出して、イメージファイルを作成します。

Azure

  • Container Registries
    • ローカルで作成したコンテナイメージをContainer RegistriesにPushします。
    • ローカルのコンテナイメージをいきなりApp ServicesにDeployしたかったのですが、一度Container Registriesを挟まないとDeployできないようです。
    • こいつはおおざっぱに月400円くらいかかります。あまり頻繁にコンテナイメージのPushをしないのであれば都度リソースを消してしまうのがいいかもしれないですね。
  • App Servicies
    • リソースの作成時にPublishでDockerコンテナを選択、WebアプリはFlaskで動くのでOSはLinuxを選択します。
    • こいつ自体にはお金は発生しません。ただの仮想ディレクトリなので。
  • App Service Plans
    • App Servicesの作成時に必ず必要です。これがサーバの実態です。
    • 無料プランもありますが、ドメインを設定するためと無料プランだとコンテナイメージの読み込みに毎回3分程度かかってしまって使いものにならないので、最低限のB1というプランに設定しています。

苦労

Azureは結構使うことが多くて多少慣れてはいたのですが、Dockerを使うのは初めてだったので、コンテナイメージをAzureにあげて使うところで結構詰まってしまいました。 この辺の話と解決策についてもどこかのタイミングで書きたいと思います。 今回の内容はここまでとさせてください。

記事の書き方ってこんな感じでいいんですかね?