webアプリの開発による業務改善への取り組み
チームで業務をする。こうしたときに自分が目立つのではなくて泥臭いことをして、人の業務の助けをするというのは結構大事なことだと思います。
というわけで、現在は多くの人が避けるようなことをwebアプリを作成して全部自動化してやろうという試みを行っています。具体的には、プログラムを書いて行う作業を全部webアプリで自動化して、手間を省いていくといった作業です。
どんなツールを使うか?
dockerなど仮想環境の知識があることが前提ですが、Rであればshiny、pythonであればfastAPIやstreamlitを用いれば、社内公開用のアプリくらい簡単にできます。
本気で製品化するならreactJSとかdjangoとかちゃんとフロントエンドもバックエンドも実装できることが必要です。しかし、今回は業務の自動化という目的なので簡便に作りたいということから、streamlitを採用しました。
具体的になにをしたかったのか?
今回対象とする業務(RNA-seqの解析業務)におけるボトルネック
データの移行が大変
コマンドラインを開くのが大変
グラフの描画までの時間がかかりすぎる
といったところでしたので、一つ一つ潰していくことにしました。
データの移行が大変
RNAseqの解析パイプラインをMac Miniに構築したのですが、fastqファイルという2GB程度のファイルを個人のPCから送らないと解析に進まないので、まずはファイルの移動を簡単にするための方法を考えました。
手っ取り早いのは、webアプリを開いてドラッグアンドドロップで簡単にファイルが移行できれば良いかなと思いました。
streamlitのfile_uploaderを使えば非常に簡単に実装できます。
以下を参照してみてください。
コマンドラインを開くのが大変
コマンドラインを開いてコマンドを打つことが苦手という人たちが多い中で、指示書にコマンドラインを使うことを入れるのはあまり得策ではないことがわかりました。なので、先ほどのfastqファイルをアップロードするwebアプリに解析をスタートするコマンドを実行するボタンをつけました。pythonにはsubprocessという標準ライブラリがあるので、これも非常に簡単に実装できます。
以下参照してみてください。
https://docs.python.org/ja/3/library/subprocess.html
ここまでのファイルについては、streamlitを用いてRNAseqの解析を楽にするにまとめましたので、良かったら読んでみてください。
グラフの描画までの時間がかかりすぎる
グラフの描画が最も重要なアウトプットなので、結果を早く知りたいのにつまらないフォーマット調整などで時間を食う場合が多々ありました。それならば定型化したグラフをちゃちゃっと描けるようにwebアプリでも作って全部自動化してしまえという試みです。
動作としては以下の通りです。
ファイルをアップロードする
クラスターマップを描画する
棒グラフを描画する
全部streamlitで作成可能です。
制作物としては、以下のリンクにまとめました。
よかったら見ていってください。
今後の改善点
というわけで、今回のまとめです。streamlitなどのライブラリを使うことで、非常に簡単にアプリを実装できるので業務改善に役に立ちます。自分にとっては勉強してみれば意外と簡単なことでも、ハードルが高いと感じる人は多いことがあるので学んでみると結構役に立つかもしれません。
一方で、以下の改善点があります。
グラフの描画は典型的なものしかできない
動画がだいぶ遅い
重いファイルの扱いが苦手
こうした改善点について随時追記していきたいと思います。
この記事が気に入ったらサポートをしてみませんか?