ShapeClipperをリリースしました。

写真をいろいろな形に切り取るアプリ、ShapeClipperをリリースしました。

Clipperシリーズの第三弾です。

というか、実は最初はこの名前ではなくClipperもつかない全く別の名前を考えていたのですが、いざ申請という段になって、その名前は既に使用されているとのことで使うことができず、あえなくこの名前に落ち着きました。ちなみにその名前でiPhoneアプリを検索してみても出てこないのですが、Mac用のアプリとして見つかりました。アプリ名はMac版も含めて重複できないようになっているのでしょうか。

 

それと、お気づきの方もいるかもしれませんが、ShapeClipperは、このアプリの前に出したIconClipperというアプリと操作や画面構成がとても良く似ています。実際、多くの部分をIconClipperから流用して作成しました。そのため実質的な制作期間も2週間程という割と短い期間で完成できたのですが、その半分近くを、切り取り用の型の作成に費やしています。

 

次のアプリを申請しました。

本日、次のアプリを申請しました。

 

写真をいろいろな形に切り取ることができるアプリです。

画面はこんな感じです。

ss1.png  ss2.png

 

最近はAppleの審査期間が以前より短くなっている印象なので、うまくいけば来週の中頃にはリリース出来るかと思います。今度はリジェクトされなければいいんですが...

IconClipperをリリースしました。

IconClipperは写真をくり抜いてiPhoneのアイコン風に装飾するアプリです。

range_select.png

実はこのアプリ、先週リリースの予定だったのですがリジェクトされてしまいました。リジェクトの通知が届いた時、もしかしてiPhoneのアイコン風な加工はまずかった?と一瞬思ったのですが、原因はアプリが起動しないとのことでした。理由についてはホッとしたものの、こちらで試してみてもクラッシュの現象が再現できなかったので、特に原因究明もせず再提出して今日のリリースとなった次第です。もしかすると、最初に提出した後、iPadへの対応やら全体の調整等をしたので、その時にバグも直ってしまったのかもしれません。

 

Obj-Cの可変配列を簡潔に記述

Xcode4.4(?)からObjective-Cで配列や連想配列の初期化にリテラル記法が使えるようになっています。

文字列については、もともと NSString *s = @"ABC"; といった簡潔な書き方ができていたのですが、同じような記法が、NSArrayやNSDictionary、NSNumberについても出来るようになっています。

 

以前はNSArrayのインスタンス生成を次のように書いていました。


NSArray *a = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", nil];

それが、次のように簡潔に書けるようになっています。(もちろん今までの書き方も出来ます)


NSArray *a = @[@"A", @"B", @"C"];

NSDictionaryは次のように書けます。


NSDictionary *d = @{@"Name":@"Yamada", @"Job":@"Programmer"};

NSNumberは次のように書けます。

バッチリサイズのv1.2.1をリリースしました。

ピンチイン/アウト操作でのサムネイルの表示サイズの変更と、JPEG品質の設定オプションを追加しました。

 

写真の選択画面で、二本指で広げたり狭めたりすると、サムネイルのサイズを3段階で変更できます。

pinch.png

ただ、操作する時にちょっとでも画面がスクロールしてしまうと、スクロールの方が優先されてしまい、うまく拡大、縮小できません。

操作にちょっとコツが要ります。あまり力を入れずにサムネイルの部分をそっとなでるように操作するとうまくいくと思います。

操作した後の大きさは設定値として保存されるので、次回起動時にはその大きさで表示されます。字が小さくて見づらい場合などは大きなサイズで使って頂ければと思います。

 

GoogleMap V2の終了日延期

以前の記事で、GoogleMap API V2が2013年5月19日で終了しますよと書きましたが、その終了日が2013年11月19日まで延期されたようです。

 

https://developers.google.com/maps/documentation/javascript/v2/?hl=ja

 

しかも、現行のAPI V3にV2へのある程度の下位互換性ももたせるとのことです。

間際になっての延期&下位互換性サポートの告知ですが、よっぼど移行が進んでなかったのでしょうか。

ちょうど、こちらでも移行の作業をやってた時だったので、微妙なタイミングです。ん~もう少し早めに発表されてれば...

まぁ、いずれにしても移行しとくにこしたことはないので、作業自体は無駄ではないと思うのですが。

iPhoneアプリの国際化

アプリをつくる時には国際化のことも考えないといけません。

App Store は、150 を超える国で利用され、40 を超える言語をサポートしているとのことですが、これら全ての言語をサポートするのは無理としても、日本語の他にせめて、英語ぐらいはサポートしておきたいところです。

 

最初からiPhoneアプリを国際化するつもりでいる場合は、通常、アプリで使用するメッセージ類は全て英語で書いておいて、後からそれらに対応する翻訳用のファイルを用意することで対応します。C言語等で利用するgettextとpoファイルの関係に似ています。

デフォルトの言語を英語にしておけば 、翻訳していない言語でアプリが使用される場合は英語で表示されることになります。

 

国際化する場合は、まずXCodeのプロジェクトの設定で、ターゲットの言語を追加します。

ss1.png

プロジェクトで使用中のストーリーボードや文字列リソースの一覧が表示されるので、翻訳するファイルを選びます。

HTML5 Boilerplate を使ってみる

HTML5 Boilerplateは、Webサイトを作る上で必要となる基本的なファイルがまとめられたパッケージです。

http://html5boilerplate.com/ からダウンロードできます。

gitを使える環境であれば、GitHub(https://github.com/h5bp/html5-boilerplate)から最新版を取得できます。

中身の構成は以下のようになっています。

h5bp_contents.png

拡張子が.mdのファイルは、HTML5 Boilerplateに関するドキュメントで中身はマークダウン記法で書かれています。これらは実際のサイトに置く必要はありません。

 

Objective-Cで可変引数

※本記事は、http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html を参考に(というかほぼそのまま意訳)しました。

 

Objective-CはC言語を拡張した言語なのでC言語と同じように可変引数も扱えます。

一般的に、書式文字列と、nil終端リストによる2つのパターンで可変引数を扱います。

 

書式文字列による可変引数

C言語のprintf系で使われている書き方で、書式文字列中のプレースホルダーの位置に引数を埋めてやるやり方です。プレースホルダは%で始まる書式指定子で指定します。

以下は、NSStringのstringWithFormathメソッドの例です。

MacでPostfixを起動

PerlやPHPを使った開発でメールを送信する機能を実装することがありますが、Macの場合、標準の状態ではメールが送信されないようです。

※sendmailコマンドや、mail関数(phpの場合)を使って送信する場合の話です。以下は、Mac OSX 10.7.5で試しました。環境によっては違うかもしれません。

 

Macには最初からPostfixがインストールされているのですが、自動起動はしないので設定して起動する必要があります。

ps_postfix.png

sudoを使ってルートユーザで起動します。

postfix_start.png

警告が出ていますが、とりあえず起動はしたようです。