2014年9月29日月曜日

無事、ストア申請に通り、 9/24から公開始まりました!

malcのアイコン
普段使いのシンプル電卓 malc(マルク)
無料
バージョン: 1.2


レビュー待ちが長く、いつもより少しかかりましたね。iOS8対応の申請ラッシュでしょうから、仕方ないですね。(AppStoreの中の人ありがとうございます)

公開されたら、次にやるのは宣伝です。
いつもお世話になってる iPhonePlusさんに記事を投稿しました

投稿後、一日に700人以上の方からダウンロードされていました。すごい!


今回は、Searchmanを参考にして、キーワードを見直したりして、検索知名度も急上昇。
「メモリー電卓」 とかでストアで検索すると5位に出てきたりします。

ぜひ、多くの方に試していただきたいです。


2014年9月18日木曜日


他のアプリのiOS8版アップデートを横目に、ストア申請結果を待つ毎日です。

今日は、C(Clear)キーの話しです。


これは市販の電卓や 標準の電卓アプリにもある機能で、直前の数字入力をなかったことにします。
つまり、1080×30と入力した後に、Cキーをタップすると 1080× までしか入力されていない状態に戻ることになります。

malcの場合も同じように動きます。ただ、malcには BS(BackSpace)キーや カーソルキーもあり、「直前の数字入力」を消すだけでは 何か物足りない。。。 ということで、カーソルキーの左側にある数字を消去するという仕様にしました。 要するに、下図のような編集操作ができるということですね。(上段の状態でCを押すと、中段の状態になる。 そしてそのまま数字を打つと下段の状態になる)


このスクリーンショットは iPhoneのカメラや解像度の進化を題材にしていたりします。早くiPhone6欲しいなぁww


プログラム的には、[myTextField offsetFromPosition:toPosition:] でカーソルの位置を求め、先頭からカーソル位置までを対象にして、正規表現[0-9.]+$にマッチする文字列を空文字に置換をかけることで実現できます。 一つ注意としては、myTextFieldに置換結果をセットする前後で、右からのカーソル位置を保存して、戻してやらないといけないことです。これを怠るとカーソルが一番右端に動いてしまって、消した位置に数字を入れ直す操作がしづらくなってしまいます。
int pos = [myTextField offsetFromPosition:myTextField.beginningOfDocument  toPosition:myTextField.selectedRange.start] ;
NSRegularExpression *rex = [NSRegularExpression regularExpressionWithPattern:@"[0-9.]+$" options:0 error:nil] ;
[rex stringByReplacingMatchesInString:text options:0 range:NSMakeRange(0, pos) withTemplate:@""] ;


malcは答えだけでなく 式もメモリーしているので、式の一部の数字を変えて計算しなおすことが簡単です。 そのようなときに、BSキーだけでなく Cキーを使うと便利だと思っています。 




photo by 

2014年9月17日水曜日



週末に「普段使いのシンプル電卓 malc」 のバージョンアップ申請をしました。 iOS8対応、iPhone6対応を含む多くの機能強化、新しいiTunesConnect と 盛りだくさんのアップデートです。 (申請しちゃったら、あとは すんなりレビューを通ってくれることを祈るしかありません)

さて、今回は、キーボードの進化について


きっかけはACキーとBSキーの切り替える機会が多くて面倒だったこと。これを何とかできないかを考え始めました。

最初の思いつきでは、
  • ACキーとBSキーを縦に並べ、その代わりにカーソルキーとして使うキーを1つに減らす 
  • カーソルキーを長押ししたら、すぐ上に、4つのカーソルキーすべてが表示される
という仕様でした。これならACキーとBSキーはとても使いやすくなります。
ただ、色を変える上下キーは滅多に使わないけど、左右キーは良く使うし同時に使う事が多いので、切り替えは面倒そう。 ということでボツにしました。

さきほどのアイディアを改良して、OS標準の日本語入力キーボードのように、フリック入力する方法で解決しようと思いました。
  • 長押しで、キーの上下左右に、隠れていた上下左右のカーソルキーが表示される
  • 表示前でもフリックで入力できる
という仕様です。 ただ、カーソルキーを左端や右端に置けなくなるのでボツ。

ここでいったん検討のキッカケまで戻って、なぜACキーとBSキーを切り替える機会が多いのかを考えました。 
まず答えを求めた直後に、ACを使うことが多いのは想定どおり(ここはACが表示されているのでOK)。 問題は、答えの数字を再利用しないのに、続けて数字をまちがって打ってしまった場合にACを使うこと、しかもその頻度が多いことだと気が付きました(その場合は、BSキー表示から ACキー表示に手動で切り替えないとダメ)。
自動的に答えが再利用されるより、計算結果を使う場合にはメモリをタップして、直前の答えを入力してもらう方が自然のような気がします。 そこで次のような仕様にしました。
  • 「答えの再利用をするか? しないか?の仕様を選んでもらう。デフォルトは「再利用しない」
  • 再利用されない時の答えを、式入力の時より明るい色の表示色にする
2つ目の仕様は、よく見ると答えが再利用されるかが見た目で区別できるようにという目的です。
プログラム的には、UITextViewのtext色よりplacehold色を明るくしておきます。そして再利用されない場合は答えは placeholdに代入します。これでキーを打つと答えが消えるというのが自然に実現できます。

これでおしまいにしてもよかったのですが、Cキーを付けたかったこともあり、キーボードはやはり進化させることに。ACやCキーは、他のキーに比べて誤って押しづらい方がいいということもあり、結局ACキーを独立させました。 場所は、キーボードの領域内ではなく、この記事のトップ写真のように、主表示(物理的な電卓でいうとLCDの部分ですね)領域の左上端にキーを置くことにしました。

さらにさらに、キー配置のカスタマイズができるようにしました。
大昔にCASIOが決めたという電卓型レイアウトは、下から0,1,2,3 ...と配置されます。 一方、 電話型(もう誰もそんな言い方しないプッシュフォンですねw)レイアウトは、上から 0,1,2,3 ...と配置されます。どちらが良いかは人により違うかもしれません。 テンキー以外も、デフォルトでは 演算子が左端 カーソルや=が右端ですが、逆に配置したり、両方とも右側に集めるというレイアウトも選べるようにしました。
具体的には 次のようなプログラミングにしています。
  • ボタンの生成と、配置を同時に行うのをやめ、分割して行う。
  • ボタンを生成(フォントサイズの調整、イベント登録)し、キートップの文字列をkeyとするNSDictionaryに ボタンオブジェクトを格納しておく。
  • 配置パターンは、キートップの配列を複数パターン作っておいて、設定でそれを選択する。
  • 全体レイアウトとテンキーレイアウトが入れ子関係なので、上記配列も入れ子関係で表現しておくき、その2つでボタンを配置を行う。


おまけと言ってはなんですが、キータッチを改善するために、BSとAC/CはUIControlEventTouchUpInside、それ以外はUIControlEventTouchDownでイベント処理するようにしました。 UIControlEventTouchDownにできるのは、ボタンが大きいデザインならではの修正です(ボタンが小さいとミスタッチが増えでかえって使いづらいと思います)。 この修正で、式の入力などはボタンを押したタイミングで反応するので、即応性が高まりました。修正系は押し間違えを防ぐため、わざと即応性を落としボタンを離したタイミングで反応するようにしています。
標準アプリも含めて他のアプリではあまりされていないようなとても細かい修整ですが、キモチ良く使っていただけると嬉しいです。



photo by 

2014年9月13日土曜日

今回は、UIWebViewがロードに失敗する現象についてです。

iOS8 で事前に遊べるXcoce 6 GM seedで、いままで動作していた以下のコードがfailする
[myWebView loadRequest:[NSURLRequest requestWithURL:url      cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]] ;

具体的には、iOS8環境では、1回目は上手く動いたあと、Xcodeで停止し 再度プログラムを起動すると
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

が呼び出されてしまいます。(他のOSバージョンならちゃんと動く)
エラー内容は code:-1100 The requested URL was not found on this server.

そんなアホな、そのURLってローカルリソースなのだけど。。。 (キャッシュがあればキャッシュを使ってね! っていうポリシーに関係してるのかな)

あっ、そういえば 以前 そんな経験が!(経験は積んでおくものですねw)  前回は、キャッシュが動かなかっただけだったけど、また原因は、iOSシミュレータのバグ? ですかねぇ。
実機にiOS8を入れたら動いてくれるといいのだけど。


2014年9月8日月曜日


普段使いのシンプル電卓 malcの今回のバージョンアップは盛り沢山になってしまいました。といってもまだアップルへの申請もしていません。まだ、テストやストア用の画像を作ったりしないといけません。
予告の意味を含め、ざっとリストアップしておきます。

◆ACキーを独立させました

当初思っていた以上にACキーとBSキーの切り替えをよく使うこと、そのせいで使いにくいことに気が付きました。 考えた末、最終的にはACキーを独立させています。

◆キー配置をカスタマイズできるようにしました

私にとっては自然なキー配置なのですが、他のアプリとキー配置が違うので、ユーザが既に慣れたキー配置があるのではないか?と思い6種類の配置から選択してもらえるようにしました。

◆C(Clear)機能を作りました

標準電卓でもAC(All Clear)機能の他にC(Clear)機能があります(これらは自動で切り替わるようになっていて、ACが式全体を Cが直前に入力した数字を消去します)。 同等の機能を提供します。

◆メモリーの消去

式や答えのメモリーを消去できるようにしました。

◆キータッチの修正

旧バージョンでは、キーから指を離したら入力されたことにしていましたが、指を置いたタイミングで入力されるようにしました。 細かいですが、応答性が良くなったと感じます。

◆答えの再利用

旧バージョンでは、=を押して出てきた「答え」が 必ず次の式の入力の歳にも残っていて、不要ならACキーで消してもらう仕様でした。 そのままの仕様も設定で選べますが、デフォルトでは、「答え」は次の式の入力を始めると消えるようにしました。

◆計算後アニメーション

電卓の利用目的である答えが出たところで、キモチ良さを演出できないか?と思い、軽めのアニメーションをつけてみました。

◆レビュー誘導

ストアでのレイティングやレビューが殆どないので、ジャマにならない誘導路をつけてみました。



photo by 


2014年9月6日土曜日

今回はいつもとまったく違う話

頸椎症という病気になりました。
首の骨が経年変化で変形して神経を圧迫して、痛みや痺れが出るという病気です。(整形外科だし、物理的な異常なので怪我っぽいキブンですが、とりあえず病気と言っておきます)

まず、整形外科に行きました

昼間から寝違えたような症状になったことと、仕事中は殆どPC操作をしていると言ったとたん、「レントゲンを撮りましょう」。 すぐに、ピンときたようです。
診断を受け、薬が出てオシマイ。
今すぐ何とかして欲しいレベルなのだが、まぁ薬飲みましょう。

薬飲んで、数日安静に

薬を飲んでも直ぐにラクになるわけではないようで、私は下を向くとツライので、家にあった一番低い枕に替えて、とにかくよく寝ました。薬のせいか、いくらでも寝れるかんじ。翌日会社に行ったらつらくて、翌々日からまた休暇。また寝ます。 
しばらくすると、薬のおかげで首の痛みはとれたのですが、腕のしびれには全く効果無し。ネットで調べるとそういうモノらしい。

首用のサポータを購入

ネットで頸椎固定カラーなるモノをされている方もいらっしゃる。整形外科でそんな話しは全くなかったなぁと思いつつ、Amazonで購入。この季節少し暑いw。他のと違って洗えるのがウレシイ。
出かける時に使ってます。効果はそこそこという気がするものの、人混みでも何となく安心!というのが大きいです。買ってよかった。 

他に使っているもの

しびれは日によってキツさが違うものの、夕方になるにつれて我慢できなくなるくらいきつくなることが多い。 薬は効かないので、緩和するものとして 美顔ローラを使ってます。 「こんなものが!」という感じですが、とても良い感じなのが面白い。

考えたこともありませんでしたが、下を向けないとエスカレータが怖い。真下は見えないので横目で黄色い枠を見ながら乗ると上手く乗れます。階段は手すりのカーブがかなり階段の始まり終わりの位置の手がかりになります。

妙齢のプログラマな方は、ぜひ作業中の姿勢にご注意下さい。 同じ病気の方にご参考になれば。