2008年6月24日火曜日

Tools for iPhone OS Development and ...

Tools for iPhone OS Development
http://developer.apple.com/iphone/gettingstarted/docs/iphonedevtools.action

Learning Objective-C: A Primer
http://developer.apple.com/iphone/gettingstarted/docs/objectivecprimer.action

この資料に限らず、HTMLの資料は動画の説明とほぼ同じ内容か、拡張した内容のようです。ビデオでうまく理解できなかった内容を確認するには良さそうです。

iPhone OS Overview

iPhone OS Overview
http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action

iPhoneの一番下にあるCore OSはMac OS Xと同じMachカーネルを元にしているとしていますが、Mac OS XのDarwinカーネルのようなMachカーネルとI/O Kitの組み合わせ、とは書いていません(笑)

Core OSとCore Servicesが提供するインタフェースはC言語ベースで以下のようなものが含まれています。
 Core Foundation
 CFNetwork
 SQLite
 access to POSIX threads
 UNIX sockets

上位のレイヤではC言語とObjective-Cベースで、メディア レイヤを例にするとC言語ベースのOpenGL ES、Quartz、Core Audio、Objective-CベースのCore Animationが含まれています。

Cocoa TouchレイヤではほとんどがObjective-Cベースです。Foundationフレームワークはファイル管理やネットワークなどを提供し、UIKitフレームワークはWindows、View、Controlそして、各オブジェクトを管理するcontrollerなどを提供しているそうです。

システムが起動できるアプリケーションの数は一度に一つだけで、アプリケーションは画面などハードウェアを占有できます。また、iPhoneのViewやControlはMac OS Xとは違いがあるので注意が必要だと書いています。

iPhone OSのイベント処理もタッチパネルなど今までと異なるので既存のOSとは異なり、今までのアプリケーション開発とは別のものとして考察する事になるそうです。

開発の手始めはFoundationとUIKitのフレームワークで、資料を読み始めるように書いています。

Foundation Framework Reference
http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html

UIKit Framework Reference
http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIKit_Framework/index.html

iPhone OS Programming Guide: Introduction
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/chapter_1_section_1.html

2008年6月18日水曜日

iPhone SDK β7

iPhone SDKのサイトを見るとβ7が上がっていました。以前は新しい版がアップされるとメールで案内が来ていましたが、最近は来なくなりました。iphone_sdk__9m2199__wwdc08.dmgというファイル名から推測するとWWDC 2008で配布されたものと思われます。

この版からiPhone用のプロジェクト テンプレートの数が6つになり、Cocoa Touchという名前が消えました。どういう訳か資料からもCocoa Touchという名前が消えているようです。

以前から思っているのですが「新規プロジェクト」の画面左側はiPhone OSとMac OS Xの二つに分類されているですが、各項目がネストしていないうえに、iPhone OSには項目が一つしかないので分かりにくいです。

2008年6月14日土曜日

WWDCで発表せず

WWDC 2008でiPhone SDKの正規版は発表されなかった。

ここに書いた内容もまだしばらくは非公開のままである。

2008年6月13日金曜日

1-10 iPhone SDK for Web Developers.m4v

ビデオのメモ

Web技術
 Java script
  getElementsBy_Class_Name_
   エレメントのアレイを返す
  var myDivs = document.get getElementsBy_Class_Name_("myDivClass")

   Selectors API
   CSSのセレクタを得る
  var fooOrBar = document.querySelector("#foo, #bar"); // 次のセレクタ
  var warnings = document.querySelectorAll("p.warning") // 全てのセレクタ

 Native SVG ベクトル画
  Scalable Vector Graphics 1.1
  <img src="asf-logo.svg" style="height:90%;width:90%;">
  background-image: url("asf-log.svg")

 CSS Effect アニメーション
  変形(回転など)
   -webkit-transform : trasform_function
   -webkit-transform-origin : 3dpoint trasform_function

   skew(angle)ひねり
   scale(number)拡大縮小
   rotate(angle)回転
   translate(number)移動
  移動
   -webkit-transition-property : opacity; //透明などのスタイル
   -webkit-transition-duration : 2s; // 2秒で移動
   -webkit-transition-timing-function : linear; // 移動速度
   -myyElement.style.opacity = "10%"; // 最終の透明度

  アニメーション CSS Animation
   -animation-name : 'bounce'; // キーフレーム名の指定
    キーフレームの例
    @keyframes 'bounce' {
     0 { top: 100px; }
     25% { top: 150px; }
     50% { top: 200px; }
     75% { top: 150px; }
     100% { top: 100px; }
   -animation-duration : '2s'; // アニメーションの時間
   -animation-iteration-count : 1; // 繰り返し回数
  アニメーションはハードウェアで実行

  offline Data クライアント側のデータベースAPI
   HTML 5規格
   JavaScript API
    openDatabase
     myDB = openDatabase("noteDB", "1.0", "My Database", 200000);
     データベース名、バージョン、概要、サイズ
    executeSQL
     myDB.executeSql("INSERT INTO NoteTable (id, note,) VALUES ( ?, ?)", [note.id, note.text]);
   SQL syntaxが使える
   Transactionをサポート
   セキュア 同じドメインのみアクセス

  フル スクリーン モード
   SafariのURL欄とToolbarを表示せずにWebサイトを表示できる
   Homeスクリーン アイコンが必要
    apple-touch-icon.png または
    <link rel="apple-touch-icon" href="/customIcon.png"/>
   メタタグも必要
    <meta name="apple-touch-fullscreen" content="YES" />

  ジェスチャ イベント
   JavaScriptのハンドラ
    gesturestart
    gesturechange
    gestureend
   回転、拡大縮小ができる
    <div ongesturestart="handleGesture()"> </dive>
   mouseEventsの代用

ツール
 iPhone Simulator
 Dashcode

1-09 Leveraging iPhone Location, Acceleration, Orientation, and System Information.m4v

ビデオのメモ

静的情報
 システムの情報
  System name
  System version
  Model name
   iPhone
   iPod touch
  User Name
   SettingとiTunesで表示されている内容
 取得方法

  UIDevice * myCurrentDevice = [UIDevice currentDevice];

  NS Log (@"%@ is an %@ running %@", [myCurrentDevice neme],
    [myCurrentDevice model],
    [myCurrentDevice systemVersion[);

  出力結果
   "Vicki's Music is an iPod touch running version 1.3"
 Unique IDが聞き事に提供されている
 オリエンテーション
  縦上、縦下、右横、左横、下向き、上向き、不明を知ることができる
  情報はPropertyやNotification設定で入手
  UIDevice.hで宣言
動的情報
 位置情報
  緯度 経度 高度 計測時そして前回の計測時が提供
  CLLocationManager
  消費電力に注意
  
 加速度センサ情報
  ゲームだけでなくユーザインタフェースとしても有用
  iPhoneを縦に置いて
   X方向 水平 右が+
   Y方向 垂直 上が+
   Z方向 前後 前が+
  UIAccelerometer 一定時間ごとに情報を入手
  UIAcceleration 呼び出したときのみ
  消費電力に注意

1-08 Key Practices for iPhone Application Development.m4v

ビデオのメモ

1.iPhone用に設計
 設計の善し悪しがパフォーマンスに影響
 使い方の違いを考慮
 小さな画面サイズ
 アプリケーションは一つだけ起動

2.メモリ保護
 スワップ ファイルはない
 メモリスペースが無くなると再起動
 害像ファイルフォーマットはPNG
 Plistはバイナリに変換
 バイナリはThumb命令セット
  ARM 16 bit命令のサブセット
 メモリ リークをなくす
 Instrumentsを使って確認
 不要メモリは即座に解放
 アロケート プールの使用

- (NSString *) modifyMyString:(NSString *(myString {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* メモリをアロケートする*/
[pool release];
}

 独自でメモリスワップのファイルを作成する
 データのロードを最小限にする。
  一画面に表示しきれない情報は小分けにしてロード
 メモリ残警告は以下の三通りで、UIKit経由
  application delegate経由
   applicationDidReceiveMemoryWarning;
 UIViewControllerのサブクラス時
  didReceiveMemoryWarning
 ノティフィケイション経由
  UIApplicationDidReceiveMemoryWarningNotification
 メモリ残警告の処理
 off-screen viewを解放
 キャッシュをパージ
 イメージデータのキャッシュ削除
3.応答性
 起動を速くすることが重要
 終了時に現状を記録し、次回起動時に戻す
 20秒以内に応答、起動、終了
4.省エネ
 データの送受信は電力消耗が大きい
  ネットワークのポーリングをさける
  ロケーション サービスの起動と終了を明示
5.保安
 全アプリケーションはサンドボックス内にある
  自身のファイルとプレファレンスのみ使用可
  システム リソースの使用制限
 Keychainなどのサービスが利用可

Open Source

Appleが主催するdarwin-devのMailing listにAppleのDarwin TeamのWilliam SiegristがDeveloper Tools 3.1.3とiPhone OS 3.0関連のソース一部を公開したと投稿していました。 Developer To...