iReCalcを使う10の理由 Part 1

iReCalcを使う10の理由 Part 2

Pocket Jukebox - Coin Mode

Pocket Jukeboxのデモ

2010年2月2日火曜日

iReCalc: セッティング時に落ちる、入力ボタンのレスポンス

AppStoreにて上記のバグ報告とご要望をいただいております。ありがとうございます。

まず、セッティング時に落ちるという点ですが、当方でいろいろ試してみたのですが、落ちるという状況が再現できませんでした。開発中にはそうしたこともあったのですが、現バージョンでは再現できていません。
具体的にどのような状況で落ちるのかご連絡頂ければ対処できると思いますので、メールにてご連絡頂けると有り難く思います。宛先は当サイトの右上に記してありますので、宜しくお願い致します。

セッティングが保持されない件につきましては、操作手順に説明不足がありました。申し訳ありません。
最初のインストール時にはセッティングの設定ファイルそのものが存在しないので、これを作成しなければなりません。Ver.2.0以降は、設定ファイルを複数保持して、切り替えて使える仕様にしてあります。インストール時の設定ファイルは「Default」ですが、ユーザーが設定を変更した場合は新しいファイルを作成する必要があります。
セッティングを変更した場合には、設定画面の2画面目にある「設定ファイル」で新しい設定ファイルを作成します。
「+」ボタンでファイル名の入力画面になりますので、ファイル名を入力し、「完了」(または「Done」)をタップすると、作成したファイルに変更したセッティングが保持されます。
設定ファイルを選択して「Set」ボタンをタップすると、選択した設定ファイルの設定が表示されるはずです。アプリケーション起動時は、前回終了時の設定ファイルを読み込んで、セッティングが行われます。

次に、入力ボタンのレスポンスについてです。
これはVer.2.0で関数ボタンを追加する際に、キーパッドを左右にスライドさせる仕様にしたときに当方でも確認しています。入力ボタンのレスポンスが遅い原因は、スライド出来る仕様にしたことにあります。
iPhone OSではこのキーパッドのスライドや、アプリケーションの選択画面のように、画面上で指をスライドさせて画面を動かす動作を「スワイプ」と呼んでいます。iPhone OSは、このスワイプを検出するのに、画面がタッチされてもすぐに反応せずに、それがタッチであるのかスワイプであるのかを検出する時間を設けているようなのです。
したがって、ボタンのタッチだけを許可する状況であれば素早い反応になるのですが、タッチとスワイプの両方を許可している場合は、反応が遅れてしまうようです。
この点を回避するための方法を検討しましたが、現在のところ回避することはできていません。OSが別の方法を採用してくれれば解決するかもしれませんが、タッチとスワイプを区別するためにタイムラグが発生するのは原理上やむを得ないとも考えています。

それから、レスポンスに違和感を与えているもう一つの点はおそらく、ボタンがタップされたことを示す、ボタンの色が変化するタイミングにあるのではと思っています。
OSの機能としてボタンのタップに反応するレスポンスは予め用意されているのですが、これも先ほどの理由から反応が遅くなっています。試しに、ボタンをタップして離さない場合どうなるかを見てください。タップの瞬間より結構遅れてボタンの色が変わりますよね。このタイミングOSがタップとスワイプを判定している時間のようです。従ってこの判定時間中は、ボタンを素早く反応させようとしてもOSが受け付けません。そうすると、タップされたことを示すボタンの色変化を実行するには、OSが受け付けるギリギリのタイミングを待って行う必要があり、それがボタンを離すタイミングなのです。
そして、ボタンの色変化を元に戻すタイミングは、あまり早すぎると目立たないためある程度の時間をかける必要があります。したがってiReCalcでは、ボタンを離した時点でタップ音を発生させてボタンの色変化を開始し、それから僅かの後にボタンの色を元に戻すという処理をしています。
このように、ボタンの色変化が実際の動作とワンテンポずれているため、余計に違和感を与えることになっているのではないかと考えています。
先ほど、ボタンを押しっぱなしにするという実験をしていただきましたが、画面に指が触れている時間が長いほうがレスポンスが遅くなります。指をタッチしてから離すまでの時間が短いほどレスポンスも向上しますので、ボタンを押すというよりも軽く叩くように操作することで、なんとか許容範囲になると考えたのですがいかがでしょうか。

我々は、電卓のボタンは出来る限り大きなものが必要という判断のもとに、iReCalcをデザインしました。電卓のボタンを小さくしてスワイプを排除するという選択肢もありますが、それは当初のコンセプトに反するものなので、レスポンスの低下には目をつぶってこの選択肢を採ったということをご理解頂ければ有り難いです。

2 件のコメント:

  1. お久しぶりです。すずパパです。質問なのですが。
    1055.4+3618.16= とすると結果が 4673.5599999999995 となります。
    0.4+0.16= とすると 0.56とちゃんとでます。
    「小数点以下桁数と丸め」の設定は
    ON、Round、Flex です。
    どうしたらいいですか?

    返信削除
  2. すずパパさん、こんばんは

    小数点以下を含む数値の計算は浮動小数点を使って行うのですが、これを使うと誤差が発生します。関数を扱えるようにした際に、小数点以下13位までを表示できるようにしたので、誤差が発生しやすくなってしまったのですね。
    iReCalcでは、この誤差を丸めるため一定以上ゼロが続くような場合
    例えば、123.000000001とか
    など、一定数以上ゼロが続く場合は切り捨てる処理を入れているのですが、9が続く場合を忘れていたようです。
    出来るだけ早く対応するつもりですので、もうしばらくお待ち頂ければ幸いです。

    返信削除