Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

普通の人は「何がエラーか」なんて分からない ~デスクトップアプリ&ブラウザ(Colab)アプリをリリースして~

はじめに

この記事は「個人アプリ/サービス開発の進め方と運用、得た学び - 03【PR】 Lenovo Advent Calendar 2020」の25日目の記事です。大トリ!

この一年でリリース(バージョンアップ含む)したアプリ

VMDサイジング

  • 機能概要:特定のモデルに合わせて作られたモーションを、他のモデルの体型に合わせて調整するアプリ(デスクトップ)
  • 解決したかった課題:MMDで使用されるモデルは概ね標準・準標準と呼ばれるボーンが搭載されており、互換性があるように見えるが、身長や体形などによってボーンの付け方が異なっており、実際に作られたモーション(元モーション)を他のモデルで読み込むと、微妙に(あるいは大幅に)違いが出てしまうため、適用したいモデルに合わせたモーションに変換したかった。

モーションサポーター

  • 機能概要:MMDのモーションを操作する時に便利かもしれない小ネタアプリ(デスクトップ)
  • 解説したかった課題:MMDモーションを作成する際に、標準・準標準に準拠して作ろうとすると若干無理が出るところがあり、それをフォローしたかった。

MMD自動トレース

  • 機能概要:MMDモーショントレースを自動で行うアプリ(Colab:ブラウザ)
  • 解決したかった課題:MMDのモーションデータは手でひとつずつキーを打っていくか、あるいはKinectなどのキャプチャーソフトを使用してキャプチャーを行うかの二択しか無かったため、単眼映像からモーションデータを生成できるようにしたかった。

内部処理はすべてPython

ターゲットユーザー

MMDで遊んでいるユーザー … PCは持っているが、スペックと習熟度は人それぞれ。年齢性別も千差万別。

心がけた点(デスクトップアプリ)

  • ユーザーフレンドリーである事
    • MMDは(多くは無料配布されている)モデルとモーションを手元にダウンロードして、読み込むとそれだけでモデルがモーションを踊ってくれる、という気軽なソフト。その為に使用するツールも出来るだけユーザーにとって気軽に使ってもらえるものにしたかった。
    • 工夫点
      • ファイルの指定は、ファイルダイアログ・D&D・履歴の3種類から好きに選べるようにした。
      • 現在の進捗(全体の工程のどこまで進んだか等)をユーザーが確認したい時に確認できるようにした。
      • 選択肢は出来るだけプルダウンやスライダーなどで、感覚的に指定できるようにした。
      • MMDの表示形式に合わせたレイアウトとするとことで、学習コストを下げた。
  • 繰り返し使ってもらえる事
    • モデルとモーションの組合せはとても多くあるため、そのたびに変換をしてもらえるようにしたかった。
    • 工夫点
      • 過去に設定した内容を記録して、履歴として再利用できるようにした。
      • 履歴データはJSONとして外部保持し、バージョンが上がっても移植できるようにした。
      • 速度にも考慮して、Cythonや並列処理などを取り入れた。
        • マシンスペックに配慮して、デフォルトのexeでは並列処理を行わず(正確には並列数1)、並列数5で実行出来るハイスペック版を提供した。
  • エラーハンドリングを丁寧にする事
    • エンジニアではない人々は、ログがずらーっと出ていても、どれがエラーメッセージに相当するものなのかなどを判断することはできない。逆に、エンジニアとしては、ログそのものを提出してもらわないと、エラーメッセージだけでは原因の判断がつかない。
    • 工夫点
      • 最初に、「どういった処理をどのバージョンで行うか」のメッセージを表示するようにした。
      • デフォルトのexeの他にログファイル出力版を提供し、問題が起きた場合に、情報を提供してもらいやすくした。
      • ハンドリングできるエラーについては、エラーログまでは出力せず、「何が問題で、どう対処すべきか」をメッセージとして表示するようにした
      • 想定外のエラーについてはエラーログまですべて出力し、エラー理由まで追えるようにした。

心がけた点(Colabアプリ)

  • どこまで進んだかを明確にする
    • セルにナンバリング表記を追加して、順番に処理してもらえるよう促した。(これにより、サポートもやりやすくなった)
    • それでもすっ飛ばされる事が多かったため、各セル単位で実行有無をチェックして、前のセルが実行されていない場合には、実際の処理前にエラーを出すよう心がけた
    • 不安にさせないため、無視可能な警告などは、図入りで案内するようにした。
    • 内部処理では、tqdm を活用して、長いループ処理でどのくらい進んだか、またいつ頃終わるかを表記するようにした。
  • ブラウザ上で出来るだけ完結させる
    • Colab内でmp4をwebmに変換して表示させるなどして、出来るだけブラウザのみで作業が完結するようにした。
  • 使い方動画を作成する
    • 文章だけではイメージがつかみ取ってもらいにくいため、動画でひとつずつの作業を案内した。

成果

  • VMDサイジング:累計DL数 約13500
  • モーションサポーター:累計DL数 約1200
  • MMD自動トレース:リリースしたばかりでまだ不明

所感

  • ユーザーフレンドリーは難しいし面倒くさい。だが、きちんと作り込めば、その分だけ使ってもらいやすくなる。
  • 普通の人の感覚だと「なんか分からないから不安」というのがかなりありそう。その不安を具体的な数字を示すことである程度取り除く事が出来る。
  • 沢山のユーザーに喜んでもらえたのがとても嬉しい。

Merry Christmas & Happy New Year !!!

miu200521358
「手を抜く為の手間は惜しまない」がモットー。 MMD, 画像認識, ディープラーニング等。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away