japan.internet.com
デベロッパー2009年2月17日 10:00
文字サイズ文字サイズ小文字サイズ中文字サイズ大

iPhone徹底解剖: 最初の一歩

この記事のURLhttp://japan.internet.com/developer/20090217/26.html
著者:Wei-Meng Lee
海外internet.com発の記事

はじめに

 もうご存じかと思いますが、AppleはiPhone SDKを使用する開発者に義務付けていた秘密保持契約(Non-Disclosure Agreement: NDA)を撤廃しました。現在、開発者はSDKについて自由に議論し、自分の経験を仲間の開発者と共有することができます。Windows Mobileや最近のAndroidプラットフォームを中心に活動しているモバイル開発者にとって、今後取り組むべき特に重要なプラットフォームの1つがiPhoneであることは間違いありません。

 Windows MobileやAndroidプラットフォームでは構文的によく似たオブジェクト指向言語(Windows MobileではVB.NETとC#、AndroidではJava)を使いますが、iPhone SDKではSmalltalk風のメッセージング機構が付加された拡張版C言語であるObjective-Cを使う必要があります。Objective-Cはオブジェクト指向言語ですが、その構文はJavaやC#とはまるで似ていません。これは、特にMac OS Xプラットフォームを初めて使う開発者にとって習得上の大きな障壁となります。

 筆者のように他のプラットフォームから移行した開発者にとって、iPhone開発で使われる大量の概念は今まで経験したことがないものであり、初心者は大きなフラストレーションを感じるかもしれません(実際、私もそうでした)。iPhoneプログラミングを習得する最もよい方法は、ともかく手を動かしてコーディングを開始することです。そこで、iPhoneプログラミングに関するこの新しいシリーズでは、iPhoneアプリケーション開発に初めて取り組む読者を対象に、この新たな世界への道筋を示すことにします。シリーズ初回の本稿では、SDKの使い方を学び、簡単なiPhoneアプリケーションを作成し、それをiPhoneシミュレータに配備します。この作業の基礎となるフレームワークについて深く理解する必要はありません。このフレームワークについては、次回以降の記事で徹底的に探求します。

 用意はいいですか? では先に進みましょう!

iPhone開発に必要なもの

 iPhoneプログラミングを開始するには、次のものが必要です。

  • Mac OS X Leopard v10.5.4の稼働するIntel Macコンピュータ。
  • iPhone SDK for iPhone OS 2.1。ここからダウンロードできます。このiPhone SDKには、iPhoneアプリケーションの開発に必要なすべてのツールとユーティリティが含まれています。特に、Xcode 3.1(統合開発環境)と、実際の機器がなくてもアプリケーションをテストできるようにするiPhoneシミュレータが同梱されています。
  • 不屈の努力!

Hello Worldアプリケーションの作成

 Xcodeを起動します。Spotlightで「Xcode」と入力すれば、Xcodeがすぐ起動し、開始画面が表示されます。

 新規のiPhoneプロジェクトを作成するには、[File]→[New Project]を選択します。図1を見てわかるように、Xcodeではさまざまなプロジェクトを作成できます。これはiPhone OSアプリケーションとMac OS Xアプリケーションの2つのカテゴリに分かれます。もちろん本稿では、iPhoneアプリケーションのみを扱います。[iPhone OS]の下の[Application]項目をクリックすると、iPhoneアプリケーションの開発に使用できる各種のテンプレートが表示されます。

 現段階では、作成できるiPhoneアプリケーションの種類がかなりあることを押さえておけば十分です。[View-Based Application]テンプレートを選択し、[Choose]をクリックします。

図1 新規プロジェクトの作成: 各種のiPhoneアプリケーションテンプレート
図1 新規プロジェクトの作成: 各種のiPhoneアプリケーションテンプレート
 プロジェクトの名前を「HelloDevX」とし、[Save]をクリックします。選択したテンプレートに対応するプロジェクトが作成されます。図2は、プロジェクトを構成する各種のファイルとフォルダです。

図2 ファイルとフォルダ: iPhoneアプリケーションプロジェクトのファイルとリソース
図2 ファイルとフォルダ: iPhoneアプリケーションプロジェクトのファイルとリソース
 Xcodeの左側のパネルにはプロジェクトを構成するさまざまなグループが示されます。個々のグループを展開すると、そのグループ(およびフォルダ)に含まれるファイルを見ることができます。右側のパネルには左側のパネルで選択したグループ(またはフォルダ)に含まれるファイルが示されます。特定のファイルを編集するには、ファイルを選択します。右側のパネルの下部にあるエディタにファイルの内容が表示され、編集できるようになります。別のウィンドウで編集したければ、ファイルをダブルクリックします。これで編集用の新しいウィンドウが開きます。

 画面上部はツールバー領域です。この領域には、開発作業でよく使うツールバーメニュー項目が置かれています。ツールバー領域をカスタマイズして、よく使う項目を追加できます。試しに、[View]→[Customize Toolbar]を選択してください。ドロップダウンウィンドウが表示されます。

 ツールバーにドラッグアンドドロップするだけで項目を追加できます。図3は、ツールバーに[Active Target]項目を追加した状態を示しています。

 [Active Target]項目では、アプリケーションを実際の機器に配備するのか、それともiPhoneシミュレータに配備するのかを選択できます。

図3 ツールバーのカスタマイズ: ツールバーに[Active Target]項目を追加
図3 ツールバーのカスタマイズ: ツールバーに[Active Target]項目を追加

Interface BuilderによるiPhoneアプリケーションのUI構築

 現段階で、作成したプロジェクトにUIはありません。これを確認するには、Command-Rキーを押します(あるいは[Run]→[Run]を選択します)。これでアプリケーションがiPhoneシミュレータに配備されます。図4は、シミュレータに表示される空白の画面です。

 無論、これでは使い物になりません。そこで、アプリケーションのUIにコントロールをいくつか追加します。プロジェクトのファイルの一覧を見ると、.xibという拡張子を持つ2つのファイル「main.xib」、「HelloDevXViewController.xib」があります。.xibファイルは、アプリケーションのUIの定義を含むXMLファイルです。.xibファイルを編集するには、その内容のXMLを手作業で変更することもできますが、Interface Builderを使って編集する方が簡単です(これが正当なやり方です)。Interface BuilderはiPhone SDKに同梱されており、これを使えばドラッグアンドドロップ操作でiPhone(およびMac)アプリケーションのUIを構築できます。

図4 空白の画面: iPhoneシミュレータでのアプリケーションのテスト
図4 空白の画面: iPhoneシミュレータでのアプリケーションのテスト
 「HelloDevXViewController.xib」ファイルをダブルクリックしてInterface Builderを起動します。図5は、Interface Builderと、そこで表示される「HelloDevXViewController.xib」の内容(現時点では空)です。これを見るとわかるように、Libraryウィンドウに各種のコントロールがあり、それらのコントロールをiPhoneアプリケーションのUIに追加できます。ViewウィンドウにはUIのレイアウトがグラフィックスで示されます。

図5 UIの構築: Interface BuilderによるiPhoneアプリケーションのUI構築
図5 UIの構築: Interface BuilderによるiPhoneアプリケーションのUI構築
 LabelコントロールをUIにドラッグアンドドロップします。追加されたLabelを選択し、[Tools]→[Inspector]をクリックします(図6を参照)。[Attributes]タブをクリックし、「Hello, DevX!」と入力します。さらに、このラベルのレイアウトを変更して中央に位置合わせします。

図6 Inspector Tool: Labelコントロールの属性の編集
図6 Inspector Tool: Labelコントロールの属性の編集
 次に、Text Fieldコントロールをフォームに追加し、さらにRound Rect Buttonコントロールを追加します。Round Rect Buttonコントロールの属性を編集し、そのTitleを「Click Me!」に設定します(図7)。

図7 フォームの編集: Round Rect Buttonコントロールの属性の編集
図7 フォームの編集: Round Rect Buttonコントロールの属性の編集
 Command-Sキーを押して「HelloDevXViewController.xib」ファイルを保存します。Xcodeに戻り、Command-Rキーを押してアプリケーションを再び実行します。iPhoneシミュレータに、今度は変更されたUIが表示されます(図8を参照)。

図8 現時点のUI: コントロールが追加されたUI
図8 現時点のUI: コントロールが追加されたUI
 Text Fieldコントロールをタップして、キーボードが自動的に表示されることを確認します(図9を参照)。

図9 キーボードの起動: Text Fieldコントロールをタップするとキーボードが自動的に表示される
図9 キーボードの起動: Text Fieldコントロールをタップするとキーボードが自動的に表示される
 iPhoneシミュレータのHomeボタンを押して、シミュレータにアプリケーションがインストールされていることを確認します(図10を参照)。HelloDevXアイコンを再びタップすると、アプリケーションに戻ります。

図10 完成! シミュレータにアプリケーションがインストールされている
図10 完成! シミュレータにアプリケーションがインストールされている
筆者注
 iPhone上で同時に複数のアプリケーションを実行することはできません(Appleの一部のビルトインアプリケーションは除く)。そのため、iPhoneの Homeボタンを押すと、アプリケーションは終了します。アプリケーションアイコンをタップすると、アプリケーションが再び最初から開始されます。

 iPhoneシミュレータは表示方向の変更にも対応しています。表示を横長モードに変更するには、Commandキーを押しながら右向き矢印キーを押します。Commandキーを押しながら左向き矢印キーを押すと、縦長モードに戻ります。

 作成したアプリケーションが、表示方向の変更に反応しないことに注意してください。アプリケーションのコードを修正して、表示方向が変更されたとき、それに反応するようにする必要があります。

 Xcodeで、「HelloDevXViewController.m」ファイルを編集し、次のコードセグメントを探します。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
 上記のコードを次のように変更して、YESを返すようにします。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation {
    // Return YES for supported orientations
    return YES;
}
 アプリケーションを再び実行します。今度は、表示方向の変更に応じてアプリケーションが回転します。

コントロールの再配置

 図10を見てわかるように、表示方向を変更してもコントロールの大きさと位置は変わっていません。理想的には、表示方向に応じて画面上のコントロールを再配置すべきです。

 Interface Builderに戻り、Labelコントロールを選択し、[Tools]→[Size Inspector]を選択します。コントロールのAutosizing属性を図11のように変更します。これでLabelコントロールが表示方向の変更に応じて拡大/縮小するようになります。同時に、このコントロールは画面の左側、上側、および右側にアンカー設定されます。

図11 Autosizing: Labelコントロールの属性をオートサイズに変更
図11 Autosizing: Labelコントロールの属性をオートサイズに変更
 同じようにして、Text FieldコントロールのAutosizing属性を変更します。

 最後に、Round Rect ButtonコントロールのAutosizing属性を変更します。今度は、表示方向を変更したとき、コントロールの大きさは変えず、画面上側にアンカー設定されるようにだけします。

 実際にどうなるか確認してみましょう! Interface Builder内で、画面右上隅にある矢印をクリックすれば、画面が回転して変更をすぐ確認できます(図12を参照)。

図12 変更の確認: Interface Builder内での表示の回転
図12 変更の確認: Interface Builder内での表示の回転
 Xcodeに戻り、アプリケーションを再び実行します。今度は画面の回転に応じてコントロールの位置と大きさが自動的に変化します。

コードの記述

 今までのところ、まだコードを書いていません。XcodeとInterface Builderに十分慣れてから、コーディングに取り掛かった方がよいと考えるからです。それでも、iPhoneプログラミングの感じをつかむために、少しだけコードを書いてみましょう。

 前述のように、Interface BuilderにはHelloDevXViewController.xibという名前のウィンドウがあります。このウィンドウを見ると、File's Owner、First Responder、Viewの3つのコンポーネントがあります(図13を参照)。File's Ownerを選択し、[Tools]→[Identity Inspector]を選択します。

図13 HelloDevXViewController.xib: イベントハンドラの作成
図13 HelloDevXViewController.xib: イベントハンドラの作成
 HelloDevXViewController Identityウィンドウで、Class Actionsの下にある「+」ボタンをクリックします。このアクションの名前をbtnClicked:とします(コロンを忘れずに付けてください)。これでbtnClicked:というイベントハンドラが作成されます。

 Controlキーを押しながらViewウィンドウのRound Rect Buttonコントロールをクリックし、HelloDevXViewController.xibウィンドウのFile's Owner項目までドラッグします(図14を参照)。btnClicked:イベントを含む小さなポップアップが表示されます。btnClicked:イベントを選択します。要するに、ここではRound Rect Buttonコントロールのクリックイベントをイベントハンドラとリンクしています。

図14 btnClicked:: イベントとイベントハンドラのリンク
図14 btnClicked:: イベントとイベントハンドラのリンク
 「HelloDevXViewController.h」ファイルで、btnClicked:イベントのヘッダー宣言を追加します。

//
//  HelloDevXViewController.h
//  HelloDevX
//
//  Created by Wei-Meng Lee on 11/12/08.
//  Copyright Developer Learning Solutions 2008. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface HelloDevXViewController : UIViewController {

}

//---declaration for the btnClicked: event---
-(IBAction) btnClicked:(id)sender;

@end
 「HelloDevXViewController.m」ファイルで、btnClicked:イベントの実装を提供するコードを追加します。

- (void)dealloc {
    [super dealloc];
}

//---implementation for the btnClicked: event---
-(IBAction) btnClicked:(id)sender {
	UIAlertView *alert = [[UIAlertView alloc] 
                 initWithTitle:@"Hello DevX" message:   
                @"iPhone, here I come!"  
	delegate:self cancelButtonTitle:@"OK" 
                otherButtonTitles:nil, nil];
	[alert show];
    [alert release];
}

@end
 上記のコードは、「iPhone, here I come!」という内容の警告ウィンドウを表示します。Xcodeコードに戻り、アプリケーションを再び実行します。今度は、Buttonコントロールをタップすると、警告ウィンドウが表示されます(図15を参照)。

図15 警告ウィンドウ: ボタンをタップすると、警告ウィンドウが表示される
図15 警告ウィンドウ: ボタンをタップすると、警告ウィンドウが表示される

本稿のまとめ

 本稿では、あまりコーディングをしませんでしたが、XcodeとInterface Builderを使って、ごく簡単なiPhoneアプリケーションを作成できるようになりました。Objective-C言語を使ったさらに複雑な作業については、次回以降の記事で解説するのでご期待ください。

著者紹介

Wei-Meng Lee(Wei-Meng Lee)
Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。
国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関する著書、共著書多数。.NETからMac OS Xに至るまで広範な分野について執筆している。著書に『.NET Compact Framework Pocket Guide』 (Oreilly&Associates Inc、2005年5月)、『ASP.NET 2.0: A Developer's Notebook』 (Oreilly&Associates Inc、2005年6月)、『Programming Sudoku』 (Apress刊、2006年3月)など。ブログ「Wei-Meng Lee's Blog」を開設している。
japan.internet.comのウエブサイトの内容は全て、国際法、日本国内法の定める著作権法並びに商標法の規定によって保護されており、その知的財産権、著作権、商標の所有者はインターネットコム株式会社、インターネットコム株式会社の関連会社または第三者にあたる権利者となっています。
本サイトの全てのコンテンツ、テキスト、グラフィック、写真、表、グラフ、音声、動画などに関して、その一部または全部を、japan.internet.comの許諾なしに、変更、複製、再出版、アップロード、掲示、転送、配布、さらには、社内LAN、メーリングリストなどにおいて共有することはできません。
ただし、コンテンツの著作権又は所有権情報を変更あるいは削除せず、利用者自身の個人的かつ非商業的な利用目的に限ってのみ、本サイトのコンテンツをプリント、ダウンロードすることは認められています。

Copyright 2012 internet.com K.K. (Japan) All Rights Reserved.