スマートフォンプログラミング-iPhoneとAndroid : 1.iPhoneプログラミング入門
10
0
0
全文
(2) 新年度・ゴールデンウィークチュートリアル スマートフォンプログラミング∼ iPhone と Android. す.iPhone アプリ開発のための iOS SDK は,. 100. Apple Developer として登録すれば,無料 75. で入手できます.ただし,Intel 製の CPU が 搭載された Mac 本体と,その上で動作する. 50. Mac OS X 10.6(最新バージョン)が別途必要 25. 0. となります. 有 料・ 無 料 の 別 を 問 わ ず,iPhone プ ロ 8.7. 8.10. 9.1. 9.4. 9.7. 9.10. 10.1. 10.4. 10.7. 10.1. 11.1 (日付). 図 -2 iPhone アプリのダウンロード回数の推移(単位:億回). グラミングやアプリ販売申請などは,すべ て iOS Dev Center(http://developer.apple.. com/devcenter/ios/)という Web ページか Foundation. 文字列処理・動的配列・連想配列などのサポートを 提供する.. UIKit. ボタンなどの画面の基本になる部品の処理の実装を 提供する.ページめくりやフリップといった画面遷移 効果 (トランジション)も簡単に実現できるように設 計されている.. AV Foundation. 2D オーディオの簡単な再生をサポートする.. Open AL. 3D 空間を考慮したオーディオ再生をサポートする.. ら行います.iOS Dev Center にログインす ると,iOS SDK が無料でダウンロードできる ほか,有料の iOS Developer Program に参 加している場合には,開発に利用する実機登 録や販売アプリの登録申請が行えます.なお,. Core Animation レイヤーと呼ばれる軽量の要素を使って,平面状の 矩形を 3 次元空間の中で変形・移動させて,効率的. 最新の iOS SDK が入った有料の Xcode 4 は,. にアニメーションを実現する.. Mac 用のオンラインストア App Store から. OpenGL ES. 2D/3D グラフィックの効率的な描画をサポートする.. Media Player. 購入することもできます.. ムービーの簡単な再生をサポートする.. Core Data. オブジェクト指向的なデータ管理 (O/R マッピング, シリアライズ,SQL ベースでの検索)のサポートを提 供する.. ■ Apple Developer 登録. Game Kit. ゲーム作成に便利な,各種ネットワーク通信 (ピア検 索,ペアリング,クラウド上でのスコア管理)のサポ ートを提供する.. ダウンロードするためには,無料の Apple. Map Kit. アプリケーション埋め込みの地図表示をサポートす る.. 表 -1 Cocoa Touch の代表的なフレームワーク. iOS Dev Center に ロ グ イ ン し て SDK を. Developer 登録が必要になります.http:// developer.apple.com/jp/programs/register/ から登録作業を行ってください.メールア. のもと,非常に簡単なコード記述で高機能. ドレス・氏名・住所などの個人情報を入力. な ア ニ メ ー シ ョ ン サ ポ ー ト が 可 能 な Core. し,プログラム経験や開発希望分野などのア. Animation や, 高 度 な 音 声 処 理 の た め の. ンケートに答えて,契約条項に同意すると,. Core Audio など,多数の有用なフレームワ. Apple Developer として登録できます.登. ークを iOS デバイス用に提供します.. 録に使用したメールアドレスとパスワード. 表 -1 に,Cocoa Touch の代表的なフレー. を使って iOS Dev Center にログインすると,. ムワークとその概要をまとめます.Cocoa. 図 -3 のような Xcode+iOS SDK のダウンロ. Touch には,これ以外にも 20 以上のフレー. ードリンクが表示されます.Xcode は Mac. ムワークが用意されています.. OS X および iPhone 開発のための統合開発 環境で,高度なテキストエディタやデバッガ. iPhone アプリ開発環境構築. が利用できます.. こ の 章 で は,iPhone ア プ リ の 開 発 環. ■ Xcode+iOS SDK のインストール. 境を整えるための手順について説明しま. ダウンロードしたディスクイメージをマウ. 518 情報処理 Vol.52 No.4・5 Apr. 2011.
(3) iPhone プログラミング入門. 図 -3 Xcode+iOS SDK のダウンロードページ. (2011 年 1 月時点).このプログラムに参加 することで,実機での開発に加えて,App. Store での販売もできるようになります.. iOS プログラミングの基礎知識 この章では,iOS プログラミングを始める にあたって必要な基礎知識を解説します. 図 -4 Xcode+iOS SDK のインストーラ. ■ Xcode と Interface Builder ントすると,図 4 のように Xcode+iOS SDK. iOS プログラミングは,高度な MVC パラ. のインストーラが出てきますので,これをダ. ダイムに基づき,「インタフェースのデザイ. ブルクリックして SDK をインストールしま. ン」と「機能の実装」の 2 つの作業を通じて行. す.インストールされたファイル一式は,デ. います.また統合開発環境(IDE)では当然の. フォルトの設定では, 「Macintosh HD」直下. ことですが,プロジェクトの管理も必要とな. フォルダ以下に格納されます. の「Developer」. ります.. iOS SDK をインストールすると,Mac 上. iOS SDK では,プロジェクトの管理と機能. で動作する iOS シミュレータを使って,動作. の実装を,Xcode というツールを使って行. テストを行いながら iPhone や iPad 用のア. います.また,インタフェースのデザインに. プリケーションが開発できるようになります.. は Interface Builder というツールを使いま. ただし,加速度センサを使った機能やカメラ. す.Xcode は,バージョン管理を行いなが. を使った機能,またアプリケーション実行中. らソースコードが編集できる統合開発環境. に電話がかかってきたときの動作確認などは. で,アプリケーションのビルド(実行ファイ. シミュレータではできませんので,iPhone. ルの作成)ができるだけでなく,デバッグ実. や iPad などの実機を使って動作確認を行わ. 行のためのデバッガも備えています(図 -5).. なければいけません.. また Interface Builder は,GUI 部品をドラッ グ&ドロップでビューに追加し,各部品の設. ■ iOS Developer Program への参加. 定を最終的な見た目どおりに編集することの. 実機を使った開発には,有料の iOS Devel-. できるユーザインタフェースの設計ツールで. oper Program へ の 参 加 が 必 要 で す. 参 加. す(図 -6).. には,年間 10,800 円の参加費がかかります. 情報処理 Vol.52 No.4・5 Apr. 2011. 519.
(4) 新年度・ゴールデンウィークチュートリアル スマートフォンプログラミング∼ iPhone と Android. 図 -5 Xcode の画面. 図 -6 Interface Builder の画面. ■ Objective-C の文法. は,通常通り「#include < ∼ >」で C 言語の. 本誌の読者の方の多くは,すでに C# や. 標準ライブラリのヘッダファイルを読み込ん. C++ や Java などを使ったクラスベースのオ. で,標準ライブラリの関数を呼び出すことが. ブジェクト指向プログラミングに慣れている. できます.. ことと想定して,Objective-C の文法を簡単. Objective-C では,クラスベースのオブジ. に説明します.なお,Objective-C は C 言語. ェクト指向プログラミングを行います.クラ. をベースとした言語ですので,必要な個所で. ス定義は,C++ と同様に宣言部と実装部に. 520 情報処理 Vol.52 No.4・5 Apr. 2011.
(5) iPhone プログラミング入門. #import <Foundation/Foundation.h>. #import "MyClass.h". @interface MyClass : NSObject { // インスタンス変数の宣言 int score; }. @implementation MyClass. // メソッド宣言 - (void)sayHello; @end 図 -7 Objective-C クラスの宣言部. - (void)sayHello { NSLog(@"Hello, world!!"); } @end 図 -8 Objective-C クラスの実装部 #import "MyClass.h". 分かれ,宣言部をヘッダファイル(∼ .h)に. @implementation Foo. 記述し,実装部を実装ファイル(∼ .m)に記 を示します.定義するクラスと,拡張子を除. - (void)doTest { MyClass *obj = [[MyClass alloc] init]; [obj sayHello]; [obj release]; }. いた部分のファイル名は,同じになります.. @end. 述します.図 -7 と図 -8 に,クラス定義の例. このクラス定義例において, 「#import」と いうのは,C 言語の「#include」とほぼ同等の. 図 -9 MyClass クラスの使用例. 機能を持つヘッダファイル読み込みのための 宣言文です.Cocoa Touch では Foundation. ド名の後ろにコロンを 1 つ付け,その後ろ. フレームワークが必要となりますので,その. に「(型名)引数名」の形式で宣言します.メ. ヘッダファイルを読み込みます.. ソッド名が 2 つ以上ある場合には,「- (void). Objective-C で は, ク ラ ス 宣 言 は「@. moveX:(int)x y:(int)y;」という形で引数を増や. interface」と「@end」の間に記述します.「@. します.. interface」の後ろには「定義クラス名 : 親クラ. 図 -8 のように,Objective-C のクラス実. ス名」の形式で,クラスの名前と継承元を指. 装 で は, ま ず #import 文 を 使 っ て 宣 言 部. 定します. 「NSObject」というのは,Cocoa. のヘッダファイルを読み込みます.そして,. Touch におけるすべてのクラスのベースク. 「@implementation」と「@end」の間に実装. ラスとなるクラスの名前です.Java であれ. コードを記述します.この実装コードでは,. ば java.lang.Object,C# で あ れ ば System.. NSLog() という,標準出力に文字列を出力す. Object,VC++ の MFC であれば CObject に. る関数を使って「Hello, World!!」という文字. 相当するクラスです.原則として,iOS プロ. 列を書き出しています.. グラミングのクラス宣言では,親クラスの名. こうして定義したクラスのインスタンス. 前を指定します.. を作成して,メソッドを呼び出して利用す. メソッド宣言は, 「+(戻り値の型)メソッ. る に は, 図 -9 の よ う に, ま ず ク ラ ス 宣 言. ド名」または「-(戻り値の型)メソッド名」と. のヘッダファイルを読み込みます.そして. します. 「+」から始まるメソッドはクラスメ. MyClass クラスに対して alloc メソッドを呼. ソッドを, 「-」から始まるメソッドはインス. び出してインスタンスの生成を行い,さら. タンスメソッドを表します.. にそのインスタンスに対して init メソッドを. 「 な お, 引 数 が 1 つ あ る メ ソ ッ ド は,. 呼び出して初期化を行います.このように,. (void)moveX:(int)x;」というように,メソッ. Objective-C のメソッド呼び出しは,C# や. 情報処理 Vol.52 No.4・5 Apr. 2011. 521.
(6) 新年度・ゴールデンウィークチュートリアル スマートフォンプログラミング∼ iPhone と Android. ますが,アウトレット変数というのは,プロ. #import <UIKit/UIKit.h>. グラムコードから GUI 部品を参照して操作. @interface MyClass : UIViewController { // アウトレット変数の宣言 IBOutlet UISlider *mySlider; }. するための変数です.またアクション・メソ ッドというのは,GUI 部品がユーザにタッチ されたアクションに応じて呼び出されるメソ. // アクション・メソッドの宣言 - (IBAction)doMyAction;. ッドです. これらを使って,多くの iPhone アプリは,. @end 図 -10 アウトレット変数とアクション・メソッドの宣言(ヘッダファイル). 図 -11 に示すような形態で動作します.まず ユーザが iPhone を操作することにより,ボ タンやスライダなどが動かされます.それに. 操作 ユーザ. ボタン ラベル. メソッド呼び出し アクション アウトレット変数 の操作. 実装コード. iPhone 図 -11 アウトレット変数とアクション・メソッド. Java だと「obj.method()」という形式で記述. 応じてアクション・メソッドが自動的に呼び 出されます.そしてその結果を画面に表示す るために,アウトレット変数を操作すること で,ラベルなどの部品を操作して見た目を変 更します.. カラーエディタの作成. するところを,半角の角括弧を使って「[obj. この章では,iOS SDK を使った実際のプロ. method]」という形式で記述します.. グラム例を見てみましょう.1 つのスライダ. インスタンスが作成できたら,そのインス. を動かして色相を変更して色を作る,簡単な. タンスに対して sayHello メソッドを呼び出. アプリケーションを作成してみます.. します. なお,iOS ではガベッジコレクションは提. ■ プロジェクトの作成. 供されていませんので,インスタンスが不要. まずはアプリケーションの基礎となる,空. になった時点で,明示的に release メソッド. のプロジェクトを作成します.Xcode を起. を呼び出して解放しなければいけません.. 動して,メニューから「ファイル」-「新規プ ロジェクト …」を選択してください.図 -12. ■ アウトレット変数とアクション・メソッド. のようにベースとなるテンプレートを選択す. iOS プログラムでは,アウトレット変数と. る画面が表示されますので,最もシンプルな. 呼ばれる特殊な変数と,アクション・メソ. 「View-based Application」を選んで「選択 …」. ッドと呼ばれる特殊なメソッドを利用する. ボタンを押し,次の画面でプロジェクト名を. ことで,インタフェース部品を操作します.. 入力して保存します.. 図 -10 に示すように,アウトレット変数は変 数宣言の頭に「IBOutlet」というキーワードを. ■ インタフェースのデザイン. 付けて宣言します.またアクション・メソッ. 次にインタフェースをデザインしま. ドは,戻り値の型を書く代わりに「IBAction」. す.Xcode の プ ロ ジ ェ ク ト に は い く つ か. と書くことで宣言します.. の フ ァ イ ル が 含 ま れ て い ま す が, 図 -13. 後半で実際のプログラム例を見ていただき. の よ う に「Resources」 グ ル ー プ の 中 の. 522 情報処理 Vol.52 No.4・5 Apr. 2011.
(7) iPhone プログラミング入門. 図 -12 新規プロジェクトの作成. ■ アクションの用意 次に Xcode に戻って,先ほどの手順で追 加したスライダが動かされたときに呼び出 されるアクションを用意します.スライダ を配置したインタフェース定義のファイル が ColorEditorViewController.xib でしたの で,同じファイル名を持つ ColorEditorView 図 -13 インタフェース定義の XIB ファイル. Controller.h にアクション・メソッドの宣言 を追加します.ColorEditorViewController.h. 「ColorEditorViewController.xib」というファ. を開いて,図 -15 のように「colorChanged:」. イルを探し,このファイルをダブルクリッ. というアクション・メソッドの宣言を追加し. クして開きます.この「xib」という拡張子が. てください.このアクション・メソッドでは,. ついた XIB ファイルがインタフェースを定. 値が変更されたスライダを参照できるように,. 義しているファイルです.XIB ファイルは. アクション元のスライダを引数として受け取. Interface Builder で開かれます.. るようにしています.. 「Library」パネルに Interface Builder では,. アクション・メソッドの宣言を追加したら,. 並んでいる各種 GUI 部品をビュー上にドラ. 忘れずに「ファイル」メニューから「保存」を選. ッグ&ドロップで追加できます.図 -14 のよ. 択して,変更を保存しておいてください.. うに,スライダをドラッグ&ドロップでビュ. なお,本稿で作成するカラーエディタのサ. ーに追加してください.. ンプルでは,簡単のためにアウトレット変数 は使用しません.. 情報処理 Vol.52 No.4・5 Apr. 2011. 523.
(8) 新年度・ゴールデンウィークチュートリアル スマートフォンプログラミング∼ iPhone と Android. ■ インタフェース部品とコードの接続 再び Interface Builder に移って,ユーザに よってスライダが動かされたときに,先ほど 追加したアクションが呼び出されるように設 定します.スライダを右クリック(あるいは. control キーを押したままクリック)し,マウ スボタンを押したままマウスカーソルを移動 させます.するとスライダから線が伸びます ので,そのまま「File's Owner」というアイコ ンまでマウスを移動させて指を離すと,スラ イダから接続可能なアクションの一覧メニュ ーが表示されます.このメニューで,先ほど 図 -14 Interface Builder でのスライダの配置. 追加した「colorChanged:」メソッドを選択し てください(図 -16).. #import <UIKit/UIKit.h>. Interface Builder での作業はこれで終わり. @interface ColorEditorViewController : UIViewController {. です.Interface Builder のメニューから「File」. -「Save」を選択して,変更内容を保存してく. } - (IBAction)colorChanged:(UISlider *)slider; @end 図 -15 アクション・メソッド宣言の追加. ださい.. ■ アクションの実装 最後に Xcode に戻り,アクション・メソ ッドの実装コードを書きます.スライダの部 品は,デフォルトでは 0.0 ∼ 1.0 の値を取る ように設定されています.そこでこの値を 色相とする色を表すオブジェクトを作成し, その色をビューの背景色として設定します (図 -17).. ■ 実行テスト それでは iOS シミュレータを使って,こ こまで作成したアプリケーションを実行し てみましょう.アプリケーションの実行は,. Xcode から行います.まず iOS シミュレー タで実行するために,ツールバーの「概要」メ 図 -16 スライダとアクションの接続. ニューで「Simulator」を選択します(図 -18). そして「ビルド」メニューから「ビルドと実行」 を選択してください. すると図 -19 のように iOS シミュレータ が起動して,アプリケーションの実行が始ま. 524 情報処理 Vol.52 No.4・5 Apr. 2011.
(9) iPhone プログラミング入門. ります.マウスを使ってスライダを動かして, スライダの値に応じて画面の背景色が変わる ことを確認してください.. ... @implementation ColorEditorViewController. 実機で動かす方法について解説します.. ... - (IBAction)colorChanged:(UISlider *)slider { float hue = [slider value]; UIColor *color = [UIColor colorWithHue:hue saturation:1.0f brightness:1.0f alpha:1.0f]; [self.view setBackgroundColor:color]; }. 上にも書いたように,自作アプリケーシ. @end. 作った iPhone アプリを実機で動かそう この章では,作成したアプリケーションを. ョンを実機で動作させるためには,有料の. iOS Developer Program への参加が必要です.. 図 -17 アクション・メソッドの実装. iOS Developer Program に参加すると,iOS Dev Center(http://developer.apple.com/ devcenter/ios/)からデバイスの登録とアプ リケーション識別子の登録ができるようにな ります. iOS デバイスを登録するためには,デバ イス固有の識別子(UUID)が必要となります.. UUID は,iTunes 上で見ることのできるデバ イスの概要から, 「シリアル番号」 と書いてあ る部分を 1 回クリックすることで表示され ます(図 -20) .UUID が表示された状態でメ ニューから「編集」-「コピー」を選択すると, クリップボードに UUID がコピーされますの で,この情報を使って iOS Dev Center でデ バイスを登録します.. 図 -18 シミュレータ実行の設定 図 -19 iOS シミュレータで のカラーエディタの実行テ スト. iOS Dev Center で登録するアプリケーシ ョン識別子には,ドメイン名を持っている場 合には,そのドメイン名を逆順にしたもの を登録します.たとえば「ipsj.or.jp」というド メイン名を持っている場合には,「jp.or.ipsj.. apps.*」といった識別子を登録します.ドメ イン名を持っていない場合には, 「myapps.*」 といった識別子で構いません. iOS Dev Center で デ バ イ ス と ア プ リ ケ ーション識別子の登録が完了すると,それ らの情報をひとまとめにした「プロビジョ ニング・プロファイル」というファイル(∼. 図 -20 iTunes による iOS デバイスの UUID の確認. .mobileprovison)を作成してダウンロード. 情報処理 Vol.52 No.4・5 Apr. 2011. 525.
(10) 新年度・ゴールデンウィークチュートリアル スマートフォンプログラミング∼ iPhone と Android. 図 -21 プロジェクトのアプリケーション識別子の設定. で き る よ う に な り ま す. こ の フ ァ イ ル を. 図 -22 ビルドに使用するプロファイルの選択. Xcode の Dock アイコンにドラッグ&ドロッ プして登録することで,実機上で実行できる. 2010 年 6 月に開催された WWDC で Steve. ようになります.. Jobs 氏が発表したデータによれば,アプリ. Xcode の「プロジェクト」メニューから「ア. ケーションの 95% が 7 日以内に承認されて. クティブターゲット ColorEditor を編集」を. いるとのことです.筆者の経験的にも,時. 選択して, 「プロパティ」の設定で,先ほど. 差を含めて 8 日以内には承認されています.. iOS Dev Center で設定したアプリケーショ. なお,アプリケーションのアップデート時に. ン識別子の「*」の部分をアプリケーション名. も,同じ手順を踏む必要があり,承認まで同. に変えて設定します (図 -21).. 程度の時間がかかります.なお,承認されな. Xcode の「プロジェクト」メニューから「ア. かった 5% のアプリケーションで最も多いの. クティブターゲット ColorEditor を編集」を. は,予期せぬクラッシュや説明文のとおり動. 選択して, 「プロパティ」の設定で,先ほど. かないものだと説明されています.. iOS Dev Center で設定したアプリケーショ. なお,iPhone 用に作成したアプリケーシ. ン識別子の「*」の部分をアプリケーション名. ョンは,基本的には iPad でも iPod touch で. に変えて設定します (図 -22).. も実行できることが前提となります.その. 以上の設定が完了したら,ツールバーの. ため,iPhone 実機だけでなく,iPad や iPod. 「概要」メニューで「Device」を選択します.. touch 上での動作も確認しておく方が良いで. 「ビルド」 メニューから 「ビルドと実行」を選択. しょう.筆者の経験では,iPhone での使用. すると,アプリケーションがデバイス上にイ. を想定して「電話をかける」ボタンを用意して. ンストールされて実行が始まります.. いて,iPod touch でもこのボタンが使える ようになっていることを指摘されてアプリケ. iPhone アプリの配布・販売について. ーションが承認されなかったことがあります. 本稿では,iPhone アプリの開発について,. App Store で 配 布 す る た め に は,App. 簡単に概略をまとめました.本稿が皆さんの. Store 専用のプロファイルを新たに作成して. iPhone アプリ開発の足掛かりとなることを. Xcode にインストールし,そのプロファイ. 期待しています.. ルを使ってビルドした実行ファイルが必要に なります.そしてアプリケーションの説明文, アイコン,キーワード,カテゴリ,サポート. URL などを設定して,アプリケーションの 登録申請を行います.. 526 情報処理 Vol.52 No.4・5 Apr. 2011. (平成 23 年 2 月 11 日受付). 沼田哲史(正会員) [email protected] 1978 年 1 月生.2005 年大阪大学大学院情報科学研究科 にて博士(情報科学)取得.同年より大阪電気通信大学総 合情報学部デジタルゲーム学科講師.著書に「実践 iPad/ iPhone ゲームプログラミング」(秀和システム),「iPad/ iPhone アプリを作る前に知っておきたい 70 の常識」(秀和 システム)..
(11)
関連したドキュメント
1 か月無料のサブスクリプションを取得するには、最初に Silhouette Design Store
ESET PROTECT から iOS 端末にポリシーを配布しても Safari の Cookie の設定 を正しく変更できない現象について. 本製品で iOS
メモ : 権利の詳細な管理は、 BlackBerry WorkspacesEnterprise ES モード BlackBerry Workspaces およ. び Enterprise ES ( 制限付きフルアクセス )
サーバー API 複雑化 iOS&Android 間で複雑な API
お客様100人から聞いた“LED導入するにおいて一番ネックと
Cisco IOS ® XE ソフトウェアを搭載する Cisco ® 1000 シリーズ
点から見たときに、 債務者に、 複数債権者の有する債権額を考慮することなく弁済することを可能にしているものとしては、
て当期の損金の額に算入することができるか否かなどが争われた事件におい