2014年1月8日水曜日

カラバリ

 後付でカラーバリエーションをつけることにしました。つまり、キーボード、メモリーの部分の色をいろいろ変えられるようにしようと。 

 パーツがいっぱいあるので、それぞれ色を変えるのは結構面倒です。 しかも実は、一色というわけにはいきません。メモリーは視認性が悪くならないように縞々にしています。
 その面倒を解決する工夫としては、キーボードと メモリーのパーツは 非常に透明度が高い白や黒で着色しています。 つまり、それらを通して一番裏のUIViewが見えているわけです。 なので、このUIView1つだけの色を変えればよいわけです。 (実際には、入力中の計算式の表示エリアの文字色も変えてます)

 5cのカラバリに合わせ、malcは Apple Storeの第一画面もカラバリです。 アイコンもカラバリを意識したデザインです。  そんな一押しのカラバリですが、こんなとても簡単なシカケでできています。



2013年12月28日土曜日

名前

 パートナーから名前の由来を聞かれました。
 Memory Calculatorの略称で、Mcalc、発音しずらいので、Malcにしました(テキトーw)。なんか「まるく」って音がかわいいかなと。 短いのも気に入ってます。
 ググっても、類似品はなさそうだし、英語での変な意味もなさそうなので Malcに決定しました。 

 もうひとつ、アプリの名前を考えます。ストア用の名前は別な名前が付けられ、アプリの特徴が分かり、検索を意識したものがいいということで、「普段使いのシンプル電卓」という修飾子を付けました。毎日のちょっとした計算に使ってもらいたいという気持ちから来ています。

 アイコンが円で構成されているのも、色の三原色の意味もあるのですけど、「丸く」からきているのではないかと勝手に思っていたり。 アイコンは、いつものようにパートナーがデザインしてくれているので、勝手に思っているだけですけどw。

2013年12月18日水曜日

コーディングスタート

 設計ができたので、そろそろコーディング開始です。
 まずは電卓なので、数式から答えを求める計算ロジックを作ります。 折角なのでw、ちゃんと優先順位つきのものが作りたい。1+3*3が先に足し算をして12になる電卓もあるけど、算数のルールどおりに掛け算を先に実行して10になってほしい。

 Rubyなら文字列で式を渡せば計算してくれたりしますが、どうやらそんな都合よいことはないので、自力で作ることになります。
 すぐに思いだしたのは、yacc, lex。大学の授業の課題で電卓作りました。 探せばソースもあるだろし、C言語なので使えると思うけど、コードが大きくなりそうな気がするのでボツに。
 次に思い出したのは、forthというか逆ポーランド計算(RPN)。懐かしいとか思いながら、これで作ることにしました。
通常の式からRPNに変換するために、2状態のオートマトンとスタック2つを使いました。 RPNになっちゃえば、計算は簡単。 演算子の計算に必要な個数の数字をスタックから取り出して計算するだけw。

といってもテストが煩雑なので、今回はじめてテストコードを書いてみました。 アタマでは分かっていてもやったことのないテストファースト。 なかなか面白いと思いましたが、この手のテストは教科書通りなので、簡単だったからかもしれません。 UIとか通信とか絡むと、難しいのかも。

2013年12月17日火曜日

12歳の少年二人がプログラミングスクールを開校, 2年間ですでに150名が課程を終了
小6から中3の生徒達に混ざって一緒に学びたいです。しかし賢そうな二人ですね。



ターミナルウィンドウに雪を降らせよう!
これもプログラミングの一種ですよね。プログラミングの一歩を踏み出すきっかけに。



「お金がかかるのは変」 無料の受験動画サイト「manavee」作った東大生 プログラミング未経験から5万人が使うサイトに (1/4) - ITmedia ニュース
1人から270人へ。すごくパワーを感じます。今の高校生は恵まれてるな、って思える記事です。



トップ1%だけが実践している集中力メソッド:スティーブ・ジョブズも毎朝やっていた! 集中できない時の最終兵器 (1/2) - 誠 Biz.ID
これからでも真似できるメソッドです。ちょっと時間を作ってリフレッシュしてみましょ。



iPhone/Androidアプリのリリース前に絶対押さえておきたい!品質向上チェックリスト | Find Job ! Startup
チェックボックスもついてますから、リリース前に是非チェックしてみてくださいね。



もうすぐ冬至ですね。夜が来るのが早いです。
でも暗くなると意外と集中力がアップするのは私だけでしょうか?
でも暗くなると眠くなるのもあるから思ったように作業が進まないのが危ういです。

2013年12月15日日曜日

広告

 普段使いのシンプル電卓malcの開発日記のづづき です。

 広告を入れたいと思いました。 理由は、使ってもらえているのが分かるから。 ダウンロード数だと、どのくらいの頻度で使ってくれているかまでは分かりません。落としただけで使ってないかもしれないし、もしかしたら毎日使ってくれてるかもしれない。 でも、広告をいれると、そこまで分かるというのがモチベーションになります。
(実際、収入という意味では、あまり意味のある数字にはなりません、いまのところw。) 

 そういう理由ということもあり、広告は出すが、操作の邪魔はできるだけしたくない。 他の方の作品のレビューで、「起動時に広告読み込みがあるせいでサッと使い始められない」というのがあって、気になったのです。

 というわけで、広告の表示タイミングを工夫してみました。 起動直後は、広告は表示されません。 計算が終わったら、つまりイコールを押して計算結果が出てから広告を表示します。また、メモリーの領域を縮めて表示するので、メモリーを操作したら消えるようにしました。

 実際に使ってみて、邪魔になってない気がしています。自己満足な感覚でないといいのですが。

今回は、iPadのプログラマーな方むけのとっても技術的なハナシです

iPadのUIPopoverを できるだけStoryboardを有効活用して作る場合のお話です。
(なお、Storyboardを使わないパターンは UIPopoverControllerチュートリアル その2 などが参考になりました。)


以下が最善の策かは分かりませんが、とりあえず動いているし、いろいろググって調べたものと比較しても簡単です。



■StoryboardでUIPopoverを設定する
SegueにIdをつけて、StyelはPopoverを選びます。これで接続されたUIViewController(destinationViewController)が Popoverで開きます。

でも、これだけだと

  • 自分自身の多重起動も含め、同時に二つ以上のPopoverが表示されます。
  • 閉じるボタンを作れない

という問題があります。


■Popoverを呼び出す UIViewControllerで解決する
呼び出し元のUIViewControllerに -(void)prepareForSegue: sender:を追加し、その中で

  1. staticなUIPopoverController変数を定義し、Popoverの二重起動を防ぐ
  2. Popoverで開かれるUIViewControllerにPopoverControllerを通知しておく
  3. 上記2つの処理はsegueがUIStoryboardPopoverSegueクラスの時に実施する

を行います。 あとは、呼び出されるUIViewControllerから PopoverControllerが参照されるので、 [self.popc dismissPopoverAnimated:YES] ; とすれば消すこともできます。


ソースも付けておきます。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    static UIPopoverController* popoc = nil;
   
    if ([[segue identifier] isEqualToString:@"SplitViewFlip"]) {
        MasterViewController* mvc = [((UISplitViewController*)
                                 [segue destinationViewController]).viewControllers objectAtIndex:0] ;
        // mvc関連のデータ受け渡しをする
    }
    else if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
        if ( popoc )
            [popoc dismissPopoverAnimated:NO] ;
        popoc = ((UIStoryboardPopoverSegue*)segue).popoverController ;
        if ( [segue.identifier isEqualToString:@"PlanPopover"]) {
            PlanViewController* pvc =(PlanViewController*)[segue destinationViewController] ;
            pvc.popc = popoc ;
        }
    }
}


2013年12月10日火曜日

米大統領「全ての人よ、プログラミングを!」 | Life is Tech!(ライフイズテック)
アプリを作る意欲がさらに沸きますように。




英作文に時間をかけるな!英語圏のWEB制作現場でよく使われる英語表現テンプレート集! - バンクーバーのWEB屋
プログラミングも英語、アプリを申請する先も英語、こういう言葉を覚えて楽しましょ。




はてなにおけるモダンiOSアプリ開発入門 // Speaker Deck
全46枚のスライド。パラパラと見るとなるほど!とハッとさせられるかもです。




 【島国大和】ゲームを作る立場で,どうやって落とし穴を回避するかを考えるよ。
フレーバーって言葉初めて知りました。業界によって言い方違うんですね。




iPhone、米国では「5c」購入者の半数が他社からの乗り換え、英国では「5s」が3倍売れている
相変わらず日本ではすごい人気のiPhone。英国でどんな色が人気か知りたいですね。



気がつけば12月も中旬に。忘年会シーズンですね。
その後はクリスマスにお正月。あっという間に一年が終わりそうです。
そんな中、サッカーW杯、日本はC組でした。6月が楽しみですね。