本文へスキップ
もと @moto_ai_jp

第3部 出す · 第8回 / 全12回 · 10分くらい

出したあとに壊さない。データ・更新・声の受け取り口

出したあとがむしろ本番です。使う人の手元には、自分の手元とは違うデータと環境があります。この回では、出したあとに起きやすい事故を3つに分け、出す前に用意しておく仕組みを決めます。

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12

履修 0 / 12 回

この回を読み終えると、できるようになること

  1. 出したあとに起きやすい事故を3つ挙げ、それぞれの備えを説明できる
  2. 保存の形式を変えるとき、データを失わずに移す手順を書ける
  3. 使う人の声を受け取る場所を、追跡の仕組みに頼らずに用意できる

専門用語は、初めて出たところで括弧に短い説明を付けています。説明が長くなるものには ※番号を付け、ページの終わりの用語メモにまとめました。

1事故1:更新したらデータが読めなくなる

いちばん避けたいのが、更新したら前のデータが読めなくなる事故です。保存の形式を変えたとき、移す処理(マイグレーション※1)に不具合があると、使う人のデータが壊れます。

備えは3つです。

  1. 保存するデータに、形式の版を書いておく:読み込むときに、どの形式かがわかる
  2. 移す前に、元のデータの控えを取る:移す処理が失敗しても、元に戻せる
  3. 前の版のデータで試してから出す:自分の手元の古いデータを、試験の材料として取っておく

2つ目は特に大事です。控えさえあれば、移す処理の不具合は直して入れ直せば済みます。控えが無ければ、取り返しがつきません。

2事故2:更新が届かない

不具合を直した版を出しても、使う人が入れ直してくれなければ、不具合は残ったままです。App Store なら Apple が更新を届けてくれますが、直接配布では、アプリが自分で新しい版を確かめる仕組み(第6回の Sparkle など)を、最初の版から入れておく必要があります。

あとから更新の仕組みを足そうとしても、それを足した版を入れてもらうまでは届きません。更新の仕組みは、最初に出す版に入れておくのが鉄則です。段3で GitHub に置くだけの段階なら、「新しい版はここで確かめてください」と README に書いておくだけでも違います。

3事故3:困っているのに、声が届かない

使っている人が困っていても、その声が届く場所がなければ、気づけません。気づかないまま、その人は静かに使うのをやめます。

声の受け取り口は、出す前に決めておきます。メールのアドレス、GitHub の Issues※2、フォームなど、何でも構いません。大事なのは、アプリの中から1回の操作でたどり着けることです。メニューに「問題を報告する」を置き、押すとメールの下書きが開いて、版の番号と環境が最初から書き込まれている、くらいだと理想的です。

4追跡の仕組みに頼らずに、困りごとを知る

使い方を細かく記録して送る仕組み(アナリティクス※3)を入れると、多くのことがわかります。一方で、使う人のプライバシーに関わり、プライバシーポリシーにも書く必要が出てきます。自分のサイトでは、外部の追跡の仕組みを入れない方針にしています。

追跡に頼らなくても、困りごとを知る方法はあります。

  • エラーが起きたら、アプリの中に記録を残し、報告するときに本人の操作で添付できるようにする
  • 最初の1人に、使っているところを見せてもらう(第2回)
  • 出して1週間後に、「何をしようとして、どこで止まりましたか」と1つだけ聞く

5出したものを支え続ける量を、先に決めておく

出したものが増えるほど、支える仕事(問い合わせへの返事、OS の更新への対応、不具合の修正)も増えます。第1回のリトルの法則は、ここでも効きます。支えるものが多いほど、1つあたりにかけられる時間が減ります。

だから、出すときに「どこまで支えるか」を決めて、README などに書いておきます。たとえば「最新の macOS とその1つ前まで対応」「問い合わせへの返事は週に1回まとめて」。決めて書いておけば、使う人の期待と自分の負担がずれずにすみます。

誤解よくある思い違い

出したあとで問題が見つかったら、そのとき更新の仕組みを足せばいい

更新の仕組みを足した版を入れてもらうまでは、更新が届きません。最初に出す版に入れておきます。

困っている人がいれば、向こうから連絡が来る

連絡する場所が見つからなければ、多くの人は黙って使うのをやめます。アプリの中から1回でたどり着ける受け取り口を置きます。

演習手を動かして確かめる

演習1

メモのアプリで、保存の形式を「1つの大きなファイル」から「メモごとのファイル」に変える版を出します。データを失わないために、移す処理の前後でやることを順に書いてください。

答えを見る
  1. 起動時に、保存されているデータの形式の版を読む(古い形式なら移す処理へ)
  2. 移す前に、元の大きなファイルを日付つきの名前で控えとして残す
  3. メモごとのファイルに書き出す
  4. 書き出したメモの数と、元のメモの数が一致するかを確かめる
  5. 一致したら、形式の版を新しいものに書き換える。一致しなければ、移す処理を取り消して元のファイルで起動し、報告を促す

出す前に、自分の手元の古いデータ(できれば大きいもの)で試しておきます。控えは、少なくとも次の版まで消しません。

頼み方そのまま使える頼み方の例

次のアプリを出す前に、出したあとの事故に備えたいです。次の3つについて、今の状態と、足りないものを表にしてください。
1. データ:保存の形式の版を書いているか、移す前に控えを取るか、前の版のデータで試したか
2. 更新:使う人に新しい版を届ける仕組みがあるか
3. 声:アプリの中から1回で報告にたどり着けるか、そのとき何が添付されるか
追跡の仕組み(アナリティクス)は使わない前提で考えてください。

アプリ:(何をするものか、配り方)

用語メモ本文の ※番号の説明

  1. ※1マイグレーション データの保存の形式を変えるときに、古い形式のデータを新しい形式に移す処理。失敗するとデータが壊れるので、移す前に控えを取るのが基本。 本文へ戻る ↩
  2. ※2GitHub の Issues GitHub のリポジトリに付いている、不具合の報告や要望を受け付けて管理する仕組み。誰でも書き込めるので、公開しているソフトの声の受け取り口によく使われる。 本文へ戻る ↩
  3. ※3アナリティクス アプリやサイトの使われ方(どの画面を開いたか、どのボタンを押したか)を記録して、作る側に送る仕組み。多くのことがわかる一方、使う人のプライバシーに関わる。 本文へ戻る ↩

読めたらチェック

この回:0 / 3