かみやんの技術者ブログ

主にプログラムの話です

iPhone OS 3.2(iPad用OS)の特徴

iPadがリリースされたので、APIとかの話もできるようになったのでiPadについて調べたときのメモ(リリースされるまではNDAの中)。

iPhone OS 3.2の特徴

iPhone OS 3.2の特徴という公式文章があるので、それを読んだときの抜粋です。

  • OS 3.2はiPad用でありiPhoneiPod touchには対応していない
  • ポップオーバーUI
    • ユーザのアクションの応答として表示され、ポップオーバーの外をタップで閉じることができる。
    • 普通スクリーンのうちの一部を使用し、コンテンツを全部みえなくするようなことはない。
    • これは、吹き出しのような外枠の絵で、ポップオーバーを呼び出した元になるアクションの近くに吹き出しの根元がある感じ。
  • スプリットビュー
    • UISpritViewContorllerクラスでコンテンツビューを2つ横に並べることができる。普通、マスター・詳細インターフェースを作ることができる。左ペインで1つのアイテムを選択するとその詳細が右ペインに表示されるなど(iPadの設定アプリ参照)。左右のペインは好きなビューコントローラーを指定できる。つまりiPhone版からの移植の場合は、iPhoneで作った画面(ビューコントローラのサブクラス)をがんがん、右ペインまたは左ペインに入れることができるわけだ。
    • iPadの設定アプリは、左ペインがマスター、右ペインがドリルダウンしていく画面。逆にiPadのOS付属のメールアプリは左ペインがドリルダウンしていく画面で、右ペインがメインコンテンツ(メッセージ本文)。
  • カスタムインプットビュー
    • UIResponderクラスのインスタンスは、ファーストレスポンダになる(テキストフィールドなどにフォーカスイン)ときにカスタム入力やアクセサリビューを表示することができる。以前は、キーボードしかサポートしていなかった、また、テキストビューとテキストフィールドしかサポートしていなかった。
    • インプットビューの上にカスタムアクセサリビューを表示できるようになった。アクセサリビューはキーボードが表示されたときに追加のボタンやコントロールを表示できる。APIとして追加されたので簡単にアニメーションさせながらその場所に表示できる。
    • アクセサリビューはSafariでテキストフィールドにフォーカスが行ったときにその上に「次へ」などのバーとボタンが表示されるがそれがAPIとして簡単に作れるようになったということであろう。
    • カスタムインプットビューは、独自キーボードが作れるようになったということだろう。ただしアプリケーション内でのキーボードのようでアプリケーションを超えたIMEは作れないようである。Apple製のiWorksは積極的にカスタムインプットビュー(カスタムキーボード)を使っているようだ
  • 外部ディスプレイのサポート
    • iPadはケーブルでつないで外部ディスプレイとつながるようになった。
    • UIScreenクラスは、現在利用可能なiPadのスクリーンを含むスクリーン情報を取得できるようになった。
    • 縦横のピクセル数やアスペクト比などの情報が取れる。
    • UIScreenModeではサイズやアスペクト比の情報が得られる。
    • Window ( UIWindowクラス )は、指定したスクリーンにアサインできる。
  • ジェスチャーレコグナイザー
  • 進化したテキストサポート
  • テキストインプットのサポート
    • UIKitフレームワークは、カスタムテキストインプットを作るためのインターフェースがある。
    • UIKeyInputプロトコルは、キーボードなどの文字からテキストフィールドなの文字への入力ののようなシンプルオブジェクトを定義することができる。
    • UITextInputプロトコルは、複数行のテキストや複数の選択、クリップボード操作などの複雑なテキストビューを定義することができる。やっとビュー位置やタップ位置とカレット(カーソル)の対応が取れるようになったっぽい。ibisMail for iPhoneではこの制御がAPIになくて、泣いたところがある。うれしい。
  • カスタムフォントのサポート
    • Info.plistファイルにUIAppFontsキーを含め、アプリにフォントを埋め込むことでカスタムフォントを使うことができる。このキーの値は、アプリケーションバンドルのフォントファイルを識別する文字列の配列である。
    • 電子書籍ビューアを作る人向けのAPIか。
  • ICU 正規表現のサポート
    • ICUライブラリの4.2を修正したもの。インストールされているのは、正規表現に必要なヘッダファイルのみ。
    • ICUがOS2.2のころからシステムに入っているのは気づいていたが公開されていなかった。とりあえず正規表現だけは公開されたようだ。どうせならICUの多言語対応の文字コード認識も公開してほしい。
  • ファイル共有のサポート
    • ユーザデータファイルをアクセス可能にしたいアプリはファイル共有を使うことができる。
    • ファイル共有はアプリフォルダの/DocumentsフォルダのデータをiTunesを通して公開できる。ユーザはiPadとコンピュータの間でファイルを移動できる。この機能は、同じデバイスのほかのアプリケーションにファイルの共有を許可するものではない。アプリ間でのデータやファイルの共有はペーストボード(クリップボード)やドキュメントインタラクションコントローラを使う。
    • ファイル共有を使うには
      • Info.plistにUIFileSharingEnabled=YESを追加する
      • アプリのDocumentsフォルダにファイルを置く
      • ユーザがiTunes9.1のアプリタブのファイル共有セクションを表示する
      • ユーザはこのフォルダにファイルを置いたり、ファイルをコンピュータに移動したりできる
  • ドキュメントのサポート
    • アプリは、サポートしているファイルタイプをシステムに登録し、指定したファイルタイプのファイルが開かれるときに通知を受け取ることができる
    • Info.plistファイルにCFBundleDocumentTypesキーを追加する。
    • application:didFinishLaounchingWithOptions:メソッドをアプリデリゲートに実装し、UIApplicationLauchOptionsURLKeyを与えられたディクショナリから得てファイルを探す。
    • UIKitフレームワークのUIDocumentInteractionContollerクラスを使うと他のアプリケーションにそのファイルを開いてもらうことができる
  • PDFの生成
    • UIKitフレームワークは、アプリのカスタムコンテンツからPDFファイルやデータを生成できる。
    • UIKitはPDFデータのセットアップとページングを管理することができる。
    • OpenGLを除いて、画面に描画するようにPDFに描画できる。
  • Xcode
    • iPadをターゲットにする変換コマンド
    • 検証と申請を簡単にする機能
    • iPhoneディベロッパ認証情報を他のコンピュータに簡単に転送する機能
    • iPad用のビューコントローラやウインドウサイズのサポート
  • APIの変更
    • UIBezierPathクラスの追加
    • UIScrollViewDelegateにズーム関連の通知追加
    • モーダルビュー。UIViewControllerにmodalPresentationStyleプロパティ追加
    • UIMenuControllerはカット、コピー、ペースト、すべて選択などのメニューにカスタムメニューアイテムを追加
    • UITextCheckerクラスは、スペルチェックと単語補完
      • これはうれしい。
    • ポップオーバービュー
    • UISplitViewControllerクラス追加
    • ジェスチャーレコグナイザー追加
    • カスタムインプットビュー追加
    • 外部ディスプレイ追加
    • PDF生成追加
    • ドキュメントサポート追加
    • メディアプレーヤー、Core Animation、MapKitフレームワーク、Foundationフレームワークは多少の変更があるようだがみていない。

英語のドキュメントを斜め読みしただけでAPIリファレンスの詳細は読んでないので、間違っている部分もあるかも。気づいたら指摘ください。

やー、iPad最高ですね。もう家のノートPCは使わないことにしました(開発をしない限り)。家のノートPCは主に妻が使っていたのですが、妻も「電源がすぐつくこと」「使うときに電源ケーブルをはずして使えること(充電しながら使う必要がない)」「ブラウザの起動が早いこと」「スクロールが早いこと」などで気に入っていて、PCいらね。って感じです。
私の思うこと。現状、iPadアプリが少ないですね。GoodReaderとi文庫が最強!って感じです。GoodReaderは、上記のドキュメントインタラクション機能によりアプリケーション間でのドキュメントの交換ができるようになり、また、DropboxやGoogleDocs連携、IMAPからダウンロード、Webからダウンロードなどがあるため、ダウンローダー兼ドキュメントフォルダって感じですね。i文庫はGoodReaderよりもPDFを見るのも高速でビジュアルが美しい。ええ、ScanSnapでPDF化した確率ロボティクス(570ページ)もiPadで読んでいます。