試しにiPhoneアプリを開発ということで、16進数電卓を作り始めました。
まぁこれなら簡単かもと思って作り始めたところ、ビューにボタンを配置してクラスのメソッドにアクションを接続して、いざ計算部分を作り始めたところ…。ひ~、これって実はかなり面倒くさいですよ。まじめにやろうとすればするだけはまっていくような気さえします。
苦労しつつ一通り四則演算ができるようになったので、今度はiPhoneの標準アプリにある計算機とカシオの太陽電池で動く安い電卓と、そこに自分が作った電卓を並べてそれぞれ同じ値になるか確認するわけですが…、1+1=は大丈夫。1+2+3=も大丈夫。1+2+3===も大丈夫。1+2+3=4=。あれ、違う…。その後、1+2+3+CLR=とか色々なコンビネーションを試してみたところ、標準アプリとカシオ電卓は大体同じ動作をするけど、自分が作った電卓は微妙なところで同じにならないパターンが結構ありました。なにかそもそも仕組みが違うみたい。
そもそもが有限オートマトンな動作モデルなのに、やっぱり設計もしないで適当に作ったら、そりゃぁやっぱり駄目かなーということで、ここまで3日ぐらいかかって書いた計算処理を捨てて(趣味でやってるだけにこの辺の勢いが強気)、土日ほとんど使って、状態遷移図と状態遷移表を書いてそれぞれ必要な処理を埋めて、そこからガリガリと新しい計算処理を作り直しました。もっとも、ここまでやっても完全に同じ振る舞いをしないけど、もうそれはレアなパターンだからこの際無視しようかと思います。
基本的なところはできたので次に設定画面に着手したわけですが、これがまたメイン画面のビューから設定変更のビューに切り替えるのも勝手がわからない。標準アプリの設定画面でやってるようなテーブルの行選択っぽいUIって画面デザインツールでは全てをサポートしていない事も発覚したので、SDKのサンプルを見つつ強引に作ってみました。これが正解って気が全然しません。残っている最後の関門は、計算結果のコピーとペーストですがこれはどうやらカスタムなUILabelを作らねばならないようです。面倒くさい…。
と、ここまでを全部できれば電卓としての目標はほとんど達成ですが、結局、作り始めてからすでに10日とか軽くかかってます。これがもし仕事だったら全然ペイしない予感です。