1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tuat-sysbiolabAdvent Calendar 2024

Day 22

MS-DIALの動作確認用アプリケーションを作ってみた

Posted at

はじめに

自分たちの研究室では、MS-DIALという質量分析データの解析用ソフトウェアを開発しています。最近、コアな機能の改修を実施しなければならない案件がいくつかあり、そのアップデートを進めています。

ただ、自分が研究室に入る以前から存在しているコードには、ユニットテストがなかったり、ドキュメント化されていない部分が多く、開発が困難を極めています。その結果、意図しないプロセスでデグレが発生し、手戻りが多くなっているのが現状です。

現状の動作を保証するために動作チェックは行っているものの、それらは完全に手動で行われています。特に、異なる解析プロセスの結果に影響を与えるような変更については、テストが煩雑になるため課題となっています。

そこで、決まったテストケースに対して簡易的に動作チェックができるツールを作ってみました。

メソッド

対象

今回対象としたのはMS-DIALのコンソール版です。このツールでは、いくつかの解析プロセスや生データのフォーマットに対して動作を確認できるようにしました。

実行結果の評価

実行結果の評価としては、以下のアプローチを採用しました

  • 出力ファイルのハッシュ値を取得する

  • 前回の結果と比較することで動作確認を行う

使用技術

  • フレームワーク: Blazorを使用。

  • サーバーアプリケーション: 複数人で利用することを考慮し、ローカルサーバー上で動作する形にしました。(開発してくれる学生さんはいませんか?)

  • オブジェクトストレージ: テストケースや実行結果の管理には、研究室のS3互換ストレージであるMinIOを活用しました。

ユースケースの想定

以下の流れを想定しています:

  1. 手元のPCで開発。

  2. サーバー上にコンソール版のアプリケーションをアップロード。

  3. 事前に登録したテストケースを実行。

  4. 実行している間は手元で他の作業を続行。

  5. 実行完了後、ハッシュ値から結果が変わっていないことを確認。

ローカルPCで直接実行させると生成されたファイルが煩雑になるため、ローカルサーバー上で動作させ、不要なファイルは一括削除できるようにしました。

開発手法

ソースコードの生成にはChatGPT o1 を活用しました。事前にChatGPT-4oと話し合いながら仕様を詰めておいたことで、質問回数を抑えつつ十分なコードを生成することができました。

基本的には生成されたコードをそのまま使用し、エラーや細かな変更が必要な箇所のみ手直しを行いました。

結果

以下のスクリーンショットは、完成したアプリケーションの一部を示しています:

image.png

過去のテスト結果を一覧で確認

image.png

ここのテストケースに関して、うまく実行できているのかをチェック
必要があれば、結果のダウンロード

image.png

テストケースごとに過去の結果と比較

終わりに

公開されている便利なツールもあるでしょうが、今回のように"ちょっと使う"用途であれば十分なツールを短期間で作成することができました。

MS-DIALはまだまだ開発が続くソフトウェアです。今後もできるだけ安定したものになるよう努力していきたいと思います。

今回作成したツールはそのうち研究室のGithubに上げようと思ってます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?