Hello World, Again - Cocoaプログラミング

インターフェースが一新されたXcode 4を使ってもういちど世界よこんにちは。

てくっち

みなさんおひさしぶりです。

てくっち

XcodeとInterface Builderが統合されましたね。Xcode 4。

和田

てくっち

てくっち

いやーんおっきいですう

てくっち

てくっち

新しく生まれ変わったXcode 4を使って、OS Xのアプリケーションを作りましょう。

てくっち

Xcode 4.0.2で動作確認しています。

てくっち

Xcodeを起動して、新規プロジェクトを作ります。

てくっち

てくっち

あるいはメニューから、

てくっち

和田

英語だ!

てくっち

あ、わかりにくいですか・・

てくっち

なんとか対応つけてお願いします・・

てくっち

プロジェクトの名前は、HelloWorldにします。

てくっち

まずCocoaアプリケーションを選びます。

和田

ふむふむ

てくっち

てくっち

そしてプロジェクト名をHelloWorldにします。

てくっち

和田

矢印まで丁寧に!

てくっち

ええ付けましたとも!

てくっち

ファイルダイアログが出るので好きな場所を指定してください。

てくっち

てくっち

このように1つのプロジェクトは1つのフォルダになって保存されます。

和田

ほ~

和田

便利ですね!!

てくっち

さてXcodeのウインドウの左に、いろんなファイルが表示されています。

てくっち

和田

ファイルペインですね!

てくっち

あ、そういうんでしたっけ汗

てくっち

上で示した3つのファイルを編集していきますよ。

和田

はーい!

てくっち

さて今回は「ボタンを押すと、Hello World, Again! と表示する」アプリケーションを作りますよ。

和田

これはあれですか

和田

iPhoneアプリじゃなくてMacアプリですか

てくっち

Macアプリです。Macアプリのほうがずっと簡単に作れるんです。

和田

ふむふむ。

てくっち

てくっち

てくっち

これが完成予想図よ!

和田

ボタンなんか関係あるんすかw

てくっち

ボタンを押すと表示させるようにしたいのです。どうしても。

てくっち

さてアプリケーションのしかけは、次のようなのを考えました。

てくっち

和田

Javascript風に補足してもいいですか先生

てくっち

はいおねがいします

和田

I/F NSButton(type

和田

ぎゃー!!!!

てくっち

なんですかそれは

和田

割と長いこと書いたのに=でエスケープされてもた・・・orz

和田

心が折れたので続きをおねがいしますw

てくっち

はいw

てくっち

オブジェクトが3つあります。

てくっち

てくっち

矢印をたどると、NSButtonが押されると、-pushButton:がHelloWorldAppDelegateに送られて、

てくっち

そのときにHelloWorldAppDelegateがNSTextFieldをいじりにいくというしかけです。

てくっち

和田

ふむふむ

和田

なんか難しいのでてきたー

てくっち

それ以外に舞台裏ではたらいているオブジェクトもかき加えてみました。

和田

一気に敷居が高くなった気がします先生w

てくっち

今回は考えなくてもいいので、また慣れた頃に見返してみてください。

和田

はい!

てくっち

さてまず、GUIをデザインしましょう。

てくっち

てくっち

MainMenu.xibを選択すると、

和田

xibという拡張子は何の拡張子なんですか先生

てくっち

以前.nibという、Interface Builderの書類がありましたが、それの親戚です

和田

親戚!!

てくっち

GUIにまつわる情報を格納しています。

和田

ふむふむ。

てくっち

.nibはバイナリだったのが、.xibはXMLになったのかな。

てくっち

現時点ではどちらも同じように使えます。

和田

ほほ~

てくっち

和田

おぉ~!いまこんななってるんですね!

和田

設計図みたい!

てくっち

そうなんです。しかもXcode内ですべて完結してますね。

てくっち

矢印の窓アイコンをクリックすると、ウインドウが表示されます。

和田

ふむふむ

てくっち

このウインドウに、ボタンとテキストフィールドを配置しましょう。

てくっち

和田

いろんなオブジェクトがあるドン

てくっち

矢印で示したボタンを押すと、Xcodeのウインドウの右側に、このようなツールが出てきます。

てくっち

てくっち

一番下の検索フィールドを使って、ボタンを探しましょう。

てくっち

てくっち

このように、ボタンをウインドウまでドラッグ&ドロップ。

てくっち

てくっち

次はテキストフィールドを探します。

てくっち

てくっち

このようにドラッグ&ドロップ。

てくっち

あと、各オブジェクトの大きさをいい感じに調節してください。

てくっち

てくっち

さて次に、各オブジェクトをつないでいきます。

てくっち

てくっち

この2つの矢印のようにつなぎます。

てくっち

ボタンとテキストフィールドはいま配置したものをつないでいきますが、HelloWorldAppDelegateはどこにあるかというと、

てくっち

てくっち

このファイルが表していると考えてください。このファイルのソースコードにつないでいきます。

てくっち

そのために、Xcodeを2画面モードにします。

てくっち

てくっち

Xcodeのウインドウの右上の、そのボタンを押すと、

てくっち

次のような2画面構成に切り替わるので、

てくっち

てくっち

左のファイルペインでHelloWorldAppDelegate.hを選ぶと2画面のうち左にその内容が出ます。

てくっち

2画面の右に.xibを表示させるために、上のようにManualを選んでから、なんとかしてMainMenu.xibを選びます。

てくっち

無事2画面がととのったら、いよいよ接続です。

てくっち

接続は、常に.xib (GUI) のオブジェクトから、ソースコードに向けてつなぎます。

てくっち

controlキーを押しながらドラッグします。

てくっち

てくっち

まず、このように、controlキーを押しながら、テキストフィールドからドラッグして、ソースコード上の矢印の位置につなぎます。

てくっち

すると上のように吹き出しがぴょこっと出ます。Outletを選び、名前をtextFieldとしてConnectを押します。

てくっち

次に、ボタンとの接続です。

てくっち

てくっち

このように、controlキーを押しながら、ボタンからドラッグして、ソースコード上の矢印の位置につなぎます。

てくっち

出てきた吹き出しの中で、上のようにActionを選び、名前をpushButtonとしてConnectを押します。

てくっち

これで接続はおしまい。次のように、自動的にソースコードが書き加えられています。

てくっち

てくっち

あと、もう1つのファイルにも書きこまれています。左のファイルペインから、HelloWorldAppDelegate.mを選択してください。

てくっち

てくっち

こういうふうになっているはずです。ここまで1文字もプログラム書いてませんね。

てくっち

今回は1行だけ書きます。

てくっち

いま見ているファイル (HelloWorldAppDelegate.m) の中の、pushButtonのあとの{ }の中に書き加えます。

てくっち

てくっち

このように書いてください。

てくっち

いま書き加えた部分は、ボタンが押されたときに呼び出されることになります。

てくっち

ボタンからの接続があるので呼び出されるんです。

てくっち

{ }の中の文は、テキストフィールドに "Hello World, Again!" と表示させる書き方です。

てくっち

textFieldというオブジェクトに、setStringValue:というメッセージを送る(=メソッドを呼び出す)。引数は@"Hello World, Again!"

てくっち

という意味です。

てくっち

さて完成です。実行してみましょう。

てくっち

てくっち

ウインドウの左上にあるボタンで、コンパイル+実行します。

てくっち

ハアハア

てくっち

てくっち

出たー! ボ、ボタンを押してくださいハアハア

てくっち

てくっち

どうですか! 無事出ましたか!

和田

すいません!寝てました先生!

てくっち

ズサーーーー=3