Development」カテゴリーアーカイブ

詳解Objective-C 2.0

萩原剛志さんの新著「詳解Objective-C 2.0」が届きました。「Objective-C Mac OS Xプログラミング」の改訂版ですね。例によって、ビジュアル系には目もくれない硬派な内容で、私のようなナンチャッテ派には参考になる事柄が一杯。分かっているようで、分かっていなかったことがあったりします(大丈夫か?>私)。

帯にこそ「iPhone」の文字がありますが、それ以外はiPhoneは一切(たぶん)登場しませんね。Leopard前提であって、iPhone対応ではないらしい。iPhoneのアプリケーション開発言語はObjective-C 2.0で、ただし、iPhoneのランタイムはガベージ・コレクションはナシってことなんだけど、それ以外にも違いはあるのかな?

ナゾのDeveloper Forums

謎でも何でもなければゴメンなさいなんだけど、Web検索していてAppleのサイトにDevelopers Forumなるフォーラムがあって、iPhone SDK関連の話題が多発していることに気が付いた。しかも、1階層上のDiscussionsには、このカテゴリーへのリンクがないんだよね。

iPhone SDKはNDA(秘密保持契約)の元に配布されているので、この2061サイトでは自主規制気味。一方で、堂々と情報を載せているサイトもあるから、無視している人も少なくない。ただ、今回はapple.com下なので、アレレ?と思った次第です。 

iPhone SDKはBeta 6へ

だんだん面倒になって来たので(笑)、Beta 5は記事にしなかったんだけど、本日(昨日?)、iPhone SDKのBeta 6がリリースされました。Firmwareのバージョンは5A308。例によって、APIの変更点(要ログイン)とリリース・ノート(要ログイン)をチェックしてください。

Beta 6は、ほぼ同時にリリースされたMac OS X 10.5.3が必須となっています。これまで、律儀に2週間おきのリリースだったけど、今回は3週間も期間を置いたのは、10.5.3の完成待ちだったみたいね。しかし、10.5.3を必要とする理由って何なのでしょう? 認証強化のためなら、ちょっと溜め息ついちゃいます。

それで、肝心の内容は詳しく書けないけど、かなり良くなってきたね〜ってのが感想です。思う存分、眠れぬ夜を過ごしてくださいませ。

iPhoneで日本語(NSString)表示

iPhoneで日本語の入力や表示ができるのは周知の通りですが、それではプログラム(Cocoa/Objective-C)から日本語テキストを表示するにはどうするの?ってのが昨日のマイ・クエストでした。

例えば、アラート・シートのタイトルを英語で設定するには、

[alertSheet setTitle:@"Shinjuku"];

でOKなんだけど、

[alertSheet setTitle:@"新宿"];

はダメ。文字化けちゃいます。

Mac OS Xなら、localizable.stringsファイルを作って、NSLocalizedString()を使うのが一般的(かな?)。iPhoneでも使えるかもしれないけど、もうちょっと簡単な方法はないかなとNSStringクラスを眺めていると、stringWithUTF8String:メソッドを発見。ハイ、正解!これで正しく日本語が表示できるし、別ファイルを作らずに、ソースコードに日本語を埋め込むことができます(保守性が悪くなるとも言う)。

[alertSheet setTitle:[NSString stringWithUTF8String:"\xe6\x96\xb0\xe5\xae\xbf"]];

この方法では、日本語テキストをUTF-8でエンコードしてC文字列として表す必要があります。そこで、UTF-8ならMax 5でしょ!ってことで、お手軽コンバータを作りました。

嗚呼、美しき哉、iPhoneとMaxの連携!(笑)

ただし、なぜか(なぜだ?)、バックスラッシュ(\)が正しく処理できなかったので(もちろん、\\でもダメ)、スラッシュ(/)で代用しています。実際には、テキスト・エディタでスラッシュをバックスラッシュに全置換して使ってください。

パッチはCopy Compressedで入れておきますね。

----------begin_max5_patcher----------
574.3oc0W1jiSCCE.dcxovJRrqzI14mlvE.jXC6XAZDxMwSqYRrihcDYlQy0
fiAha.mF3bPhcBkoxsSJXxLcii7ytwe5qumsyctNdq4sDgG3UfO.bbty0wQE
pOfyPeGuRbaVAVnllGi7Y95O4sPOjjzJUgK337RhP.DD43fzb0PcS+kvwXWw
YRFtjnF4MzZ7FJiCdK95Fvq4xszLv6p4f2GLN+JrLaKks4i0jLolyX+k9K.n
jn9GIopNgK8AWN7SXMkTVAQp3EtKHuQtezdZDzaUz.QcuIcX8Lk2TQzqnmG3
x9Qt20suYwDUUuOvaHlzAx59H.p7ALUKDzgDB5ITHGH2QxE2TtlWXRT91OwI
T8HN54ahyiWiUgqwRdsAikZQgsR6HnRXPTxYmwts.TPXFrThEsDTmJAiTZJD
dbKYt9CcpVZg8M0lZdSkAWsx5kfvjgLpvyRWIppoL4UfKZeQqAeEaeeoSsRB
N6J.oRhoMohruhP5SA8O6TjDzsIkAGEZcGkNXpfkQmtidxq55NuiZPSAVWS5
1v3imIEXkLoBpPZkKW9aM8yu7se70uaPT+GtxotMb9uvoZk5jGa+ucQwZe7G
ZNAuoNa7UM78Hfc7lSDRJCKob1eNGzClzVZdNQM9Hjkz7Jd2IACLbf+FmJRn
IfTvrRTvDHJbVIJbBDEMqDkLAh5t.E.NqNB9HDkLqNZ0TJ17mUjRe9gzdK2Q
1S5DxkhSUm0uZ3h1658OBazDXMdV0W7DKD+aIpqy8t+BGFJf0A
-----------end_max5_patcher-----------

【追記】コメントをいただきました。ソースコードのエンコーディングをUTF-8にして、以下の記述で日本語表示ができます。

[alertSheet setTitle:[NSString stringWithUTF8String:"新宿”]];

よって、Maxでコンバート云々は無用の長物でした。ご指摘ありがとうございます。

iPhoneアプリケーション開発講座がスタート

今日からIAMASでiPhoneアプリケーション開発講座が始まりました。ってか始めました。世界初じゃないとしても、日本ではまだ珍しいんじゃないかな? Maxなら、この本読んでおいてね〜で済んじゃうんですが、さすがにObjective-C/Cocoa Touchはそうは行かないので、簡単なナビゲーションをしている次第。

初回となる今回は開発環境の概要説明から始めて、サンプル・コードのビルド、実行、デバッグなどの開発手順を一通り追いかけるスタイルで進行。以下に資料をリンクしておきますが、これまでの情報を軽くまとめたものです。目新しい情報やクリティカルな情報はありません(それは口頭で〜笑)ので、このサイトをご覧の方には新鮮味がないと思います。


PDFをダウンロード(552KB)

ちなみに、プログラミング経験がない新入生が目を白黒させる一方で、百戦錬磨のベテラン教員&学生が濃い目の議論を交わす対比が可笑しい。シミュレータと実機との違いを実感しつつ(手順はほとんど一緒だけど、体験はかなり異なる)、NeXTSTEP昔話やObjective-Cランタイム特性などへも話が展開しました。

【追記】参加者全員がiPhone Developer(無償分)に登録することで、NDA問題を回避できると思うけど、そこで話された内容は外へ出せないですよね。よって、2回目以降の資料やレポートは、このサイトに掲載しない予定です。

iPhone SDKはBeta 4へ

どうやら2週間ごとの恒例行事になりそうですが、iPhone SDKがBeta 4(Build 5A258f)にバージョン・アップされました。APIの変更点(要ログイン)とリリース・ノート(要ログイン)を眺めると、今回も派手に変更されているような気がしますね。これは安定化への前触れなのか、さらなる大変革への予兆なのか、ジェットコースター気分が続きます。

 小耳に挟んだ話では、ようやくSimulatorでもOpenGL ESが動くとか。それから、デーモン的なアプリケーションがサポートされるって話もありますが、どのことかな?

Max 5でも忙しいのに、またまたiPhoneが忙しくなって、嬉しいやら苦しいやら、複雑な気分。

PwnageToolがバージョン・アップ

お待ちかね、PwnageToolが1.1にバージョン・アップし、Firmware build 5A240dに対応しました。他にもパッケージを追加したり、グラフィックスを入れ替えたり、といったことが可能になるみたいです。これで、US$99を払いたくても払わせてもらえない人たちも、iPhone SDKのBeta 3での実機デバックができますね。

PwnageToolのアプリケーション・パッケージを開けば分かりますが、Firmwareのバージョンごとにパッチ情報が定義されています。なので、Firmwareが新しくなる度に、PwnageToolのバージョン・アップを待つことになるのは、これまでのツールと同じようです。何事も、万能は有り得ないってことでしょうか。

ただ、iPhone自体もそうだけど、AppleはSDKについても「裏口の鍵はユルめに」路線のような気がするな。もちろん、iPhone Devチームらの多大な努力あってのことだけどね。

さてさて、トムとジェリー、チーズを仕掛けたのはどっち?

【追記】PwnageTool 1.0で5A225cをインストール済みのiPhoneを、次の手順で5A240dにアップデートできたそうです。

(1) PwnageTool 1.1を起動し、Browse .ipswでFirmware 5A240dを選択。

(2) IPSW Builderでカスタム・ファームウェアを作成。

(3) iPhoneをリカバリー・モードにする。

(4) iTunesを起動し、カスタム・ファームウェアを選択して、復元を実行。

iPhone SDKはBeta 3へ

本日(昨日?)iPhone SDKがBeta 3にバージョン・アップされました。Beta 2からBeta 3へのAPI変更点はココ(要ログイン)。iPhone OS 2.0のビルド番号は5A225cから5A240dに変わりました。

最初から完成度が高い方が有り難いけど、小刻みなバージョン・アップも健気な感じがして、好印象かもですね。AppleのSDKチームは夜も寝ていないんだろうな。

picocalc.app登場

久々のiPhone用勝手アプリpicocalc.appを公開しました。picomemo.appと同じく、ホーム・スクリーンに極小メモを表示しますが、こちらは数値のみで設定、加算、減算が簡単にできるようになっています。お小遣いメモとかカロリー計算メモとかに使ってください。

しばらく前から非公式SDKでの制作はしていないのですが、今回はちょいとワケありで、toolchainを使いました。同じXcode 3.1を使いながらも、toolchainと公式SDKとはケンカすることなく共存できるみたいですね。

将来、隠された機能を使うためにハイブリッドSDKを使うかもしれませんが、当面は公式SDKオンリーで行きます。3月初頭はイマイチだった公式SDKも、その後(不完全ながら)Interface Builderが対応し、Firmware 2.0 Betaでリモート・デバッグが可能になったので、かなり楽園気分です。と、US特派員は申しています(笑)。