![]() ![]() ![]() ![]() 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プログラミングを開始するには、次のものが必要です。
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アプリケーションテンプレート
![]() 図2 ファイルとフォルダ: iPhoneアプリケーションプロジェクトのファイルとリソース
![]() 画面上部はツールバー領域です。この領域には、開発作業でよく使うツールバーメニュー項目が置かれています。ツールバー領域をカスタマイズして、よく使う項目を追加できます。試しに、[View]→[Customize Toolbar]を選択してください。ドロップダウンウィンドウが表示されます。 ツールバーにドラッグアンドドロップするだけで項目を追加できます。図3は、ツールバーに[Active Target]項目を追加した状態を示しています。 [Active Target]項目では、アプリケーションを実際の機器に配備するのか、それともiPhoneシミュレータに配備するのかを選択できます。 図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シミュレータでのアプリケーションのテスト
![]() 図5 UIの構築: Interface BuilderによるiPhoneアプリケーションのUI構築
![]() 図6 Inspector Tool: Labelコントロールの属性の編集
![]() 図7 フォームの編集: Round Rect Buttonコントロールの属性の編集
![]() 図8 現時点のUI: コントロールが追加されたUI
![]() 図9 キーボードの起動: Text Fieldコントロールをタップするとキーボードが自動的に表示される
![]() 図10 完成! シミュレータにアプリケーションがインストールされている
![]() 筆者注
iPhone上で同時に複数のアプリケーションを実行することはできません(Appleの一部のビルトインアプリケーションは除く)。そのため、iPhoneの Homeボタンを押すと、アプリケーションは終了します。アプリケーションアイコンをタップすると、アプリケーションが再び最初から開始されます。
作成したアプリケーションが、表示方向の変更に反応しないことに注意してください。アプリケーションのコードを修正して、表示方向が変更されたとき、それに反応するようにする必要があります。 Xcodeで、「HelloDevXViewController.m」ファイルを編集し、次のコードセグメントを探します。 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation {
// Return YES for supported orientations
return YES;
}
コントロールの再配置図10を見てわかるように、表示方向を変更してもコントロールの大きさと位置は変わっていません。理想的には、表示方向に応じて画面上のコントロールを再配置すべきです。Interface Builderに戻り、Labelコントロールを選択し、[Tools]→[Size Inspector]を選択します。コントロールのAutosizing属性を図11のように変更します。これでLabelコントロールが表示方向の変更に応じて拡大/縮小するようになります。同時に、このコントロールは画面の左側、上側、および右側にアンカー設定されます。 図11 Autosizing: Labelコントロールの属性をオートサイズに変更
![]() 最後に、Round Rect ButtonコントロールのAutosizing属性を変更します。今度は、表示方向を変更したとき、コントロールの大きさは変えず、画面上側にアンカー設定されるようにだけします。 実際にどうなるか確認してみましょう! Interface Builder内で、画面右上隅にある矢印をクリックすれば、画面が回転して変更をすぐ確認できます(図12を参照)。 図12 変更の確認: Interface Builder内での表示の回転
![]() コードの記述今までのところ、まだコードを書いていません。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: イベントハンドラの作成
![]() Controlキーを押しながらViewウィンドウのRound Rect Buttonコントロールをクリックし、HelloDevXViewController.xibウィンドウのFile's Owner項目までドラッグします(図14を参照)。btnClicked:イベントを含む小さなポップアップが表示されます。btnClicked:イベントを選択します。要するに、ここではRound Rect Buttonコントロールのクリックイベントをイベントハンドラとリンクしています。 図14 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
- (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
図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、メーリングリストなどにおいて共有することはできません。 ただし、コンテンツの著作権又は所有権情報を変更あるいは削除せず、利用者自身の個人的かつ非商業的な利用目的に限ってのみ、本サイトのコンテンツをプリント、ダウンロードすることは認められています。 |