2008/07/15

iPhone SDKを使ってみた

iPhone 3G
iPhone 3G, originally uploaded by takekazu.

なんとか、11日にiPhoneを入手。さてと、iPhone SDKでごにょごにょ
したものを実機で動かしてみよかと思ったが、iPhone Developer Program への申し込みが待ちになっていて、Appleからの連絡待ちの状態 ^^;;

すると、12日の朝に、Appleから、「iPhone Developer Program Enrollment Status」のメールが来た!

遅いよ〜と思って、12日11時に、早速購入の手続きを・・・・、Apple Storeでサクッとライセンスを買うだけなので、すぐに続きができるかと思ったら、出荷は24時間以内ということ、とりあえず待つことにする。

待つこと、44時間(?)、14日の朝7時に、アクティベーションキーが送られてきた。おお!、これでと思ったら、アクティベーション出来ず・・・サイトでエラーになってしまう。

「ダメじゃん Apple 」と思いつつ、問い合わせ窓口から状況を投げてみる。

すると、数時間後(11時)には、アカウントを調整したので、もう一度やって見てくれという返事がくる。素晴らしい!返事も日本語だったし、レスポンスも早い。

自分のiPhoneで、プログラムを動かすためには、ここからが少々長い。
どうも、専用CAから発行された証明書でコードサインしていないと実機では動かないらしい。しかも、開発用のプログラムの場合は、証明書と開発機が紐付けられた状態になるらしく、他の個体では動かないらしいという念の入りよう。

Appleとしては、ウイルスなどを作られないようにしたかったようだが、どこまで有効かは、これから市場が証明するだろう。

でも、これは面倒くさい。

とりあえず、手順のドキュメントは良く出来ているので、そのとおりやればできる。

iPhone Developer Program
Standard Program Portal User Guide for OS X iPhone 2.0

2008/07/01

Subversionを入れてみた

サンプルコードを参考にしながらcocoaのアプリケーションを作ってみた。なんとなく動くがものすごく手探りな状態。やはりSCMが無いと怖いので、とりあえずfinkを入れて、subversionをapt-getした。
どうせ一人しか使わないので、svnadmin create ~/var/lib/svn でhomeの下にレポジトリを作って使うことにする。
ここまでやって、やはりObjective-Cがわかっていないと進まないことを痛感する。

10数年前に使っていあたはずなのだが、まったく覚えていない・・・・・
とりあえず、下記のようなコードを書いてみて、

#import
#import

@interface Hello : Object
- (void)say;
@end

@implementation Hello
- (void)say {
  printf("Hello world\n");
}
@end

int main() {
  id obj = [Hello alloc];
  [obj say];

  return 0;
}

コンパイルしてみる

$ gcc  hello.m
Undefined symbols:
  ".objc_class_name_Object", referenced from:
      .objc_class_name_Hello in ccjQ8A00.o
  "_objc_msgSend", referenced from:
      _main in ccjQ8A00.o
      _main in ccjQ8A00.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
$
だめだ。
 「.objc_class_name_Object」は、基底クラスっぽい。「_objc_msgSend」は、メッセージ送信のメソッドかな?Objectから派生するのを止めて、mainでアロックとメッセージパッシングを止めたらリンクできた。

ライブラリが足りないだけのようなので「ググって」みる。どうも、libobjcがリンクされていないのが原因らしい。


$gcc -lobjc hello.m
$./a.out
Hello world
$
 動いた!

同じことをcygwin/gccでもやってみた。

$ gcc -lobjc hello.m
....cc2TPXNs.o:hello.m:(.text+0x47): undefined reference to `_objc_get_class'
....cc2TPXNs.o:hello.m:(.text+0x59): undefined reference to `_objc_msg_lookup'
....cc2TPXNs.o:hello.m:(.text+0x7c): undefined reference to `_objc_msg_lookup'
....cc2TPXNs.o:hello.m:(.text+0xa5): undefined reference to `___objc_exec_class'
....cc2TPXNs.o:hello.m:(.data+0xe4): undefined reference to `___objc_class_name_Object'
動かない・・・・・
残念。Windowsでも動くと便利なんだけど。

HDD交換、メモリ増設完了

AirMacの接続確認と筐体を閉めるのに手間取りましたが無事作業完了しました。これで、HDD 160GByte, メモリ2GのMac miniとなりました。

iPhone SDKを入れて2、3のサンプルをコンパイルして実行。SCMとしてsubversionをサポートしているようでほっとした。xcodeのキーアサインは、ところどころemacs風、保存が^X^Sでは無いし、いろいろおかしいけど結構つかえるかも。もう少し使ってみようという気にはなる。

iPhoneの開発者向けのサイトでドキュメントを読もうかとしたところ、チュートリアル関連は、ことごとく動画....時代の流れを感じます。

我が家のWindows環境も、一新しようかと、VMWare Fusion を入れて見た。ちょっと心配していたのだが、家人にも使えるようでちょっと安心。

ふたも閉めたし、明日からは本格的にiPhone SDK しよう。