Objective-C入門その3:「@」って何だ?

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > Objective-C入門その3:「@」って何だ?

2009/08/27 09:00 投稿先 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) 投稿者 カワサキ タカシ

当不安な立ち上がりをしているObjective-C入門、今回が第3回目となります。

前回見てよーくわかった通り、Objective-Cは結構難解な言語のようです。
Objective-C入門その2:山の高さを知ろう!

こういう場合、一旦まっさらの状態に戻ってイチから言語を見て行く方法もあるのですが、
今回はこのまま踏ん張る方法で行かせていただきます。

理由は至ってシンプル。
ココがゴールだからです。

実のところプログラムの書き方にオンリーワンの正解はありません。
お客様に納品するにしても、10チームでやれば10通りのモノが出来上がります。

「動けば良い」って元も子もないこと言っちゃいかんのですが、
「お客様の満足を得られるものは皆正解」なんです。

じゃぁ今回のお客様は誰か。

使ってくれるユーザーさん?

もちろんそうです。

でももう一人。

アプリを審査する Apple を忘れてはいけません。

彼らの許可なしにはアプリは世の中に出ないのですから。

Appleの基準をクリアするために今できることは何か。

それは、彼らの考え方を知ることです。

どうやって?

彼ら自身が提供しているサンプルコードで。

でしょ?
彼らが「こうだ」って言ってるんです。この場合は100%正解です。

なので、キッツイですが、ココで踏ん張りましょう。
他行ったってどうせ戻ってくるんですから。

では、覚悟を決めて、どん!

HelloWorldAppDelegate.h
Objective-C入門その3:「@」って何だ?
<クリックで拡大>

比較的とっかかりが良さそうなところからお話しします。

#import

プログラムを書く場合、全部のコードを1個のプログラムファイルの中に書くことはしません。
っていうか、できません。

「1+1=  」
と黒板に書いてあって、アナタがその問題に答えるとしましょう。

答えを書くためにチョークを作りに工場まで行きますか?

ということです。

「チョークは誰かが用意しててよ」って思いますよね。

#import <XXXXXX>は、
「XXXXXXっていうプログラムを呼んできて~」という意味です。

ちなみに「#」は「プリプロセッサ命令」と呼びます。
プロセスが始まる前に動く命令ですね。

こういう単語を覚えておくと、パッと見「デキそう」な印象を与えます。
とっても大事です。一緒に覚えましょう。

@interface

前回も触れましたけど、この言語にはやたらいっぱい「@」が出てきます。

この「@」のことを、「コンパイラディレクティブ」と呼びます。
直訳すると「コンパイラに命令する」って意味です。

<コンパイラって何よ?って言う人のための解説>

前々回お話しした、人間語と機械語の話、覚えてますか?
Objective-C入門その1:まずはコメントの書き方から

コンパイラって言うのは「プログラム言語を機械語に変換する装置」のことです。

<解説ここまで>

さて、じゃぁ何を命令するんでしょうね?

実は「この部分はObjective-Cだからよろしく!」って命令をしています。

このへんは段々と触れていきますが、
Objective-C言語は前にも言った通り「都会に行って今風になったC言語」です。
何が今風かって言うと「オブジェクティブ指向」って考え方が今風なんです。

ですが、全てがC言語から変わってしまったわけではなく、
「オブジェクティブ指向以外の部分は、C言語を使う」という、
プリウス的ハイブリッド言語になっています。

Apple Developer Connection上でこんな1文を見つけました。
「コンパイラに対する Objective-C のディレクティブはすべて「@」で始まります」

なんとなくわかりますよね。
「@」が付いてる部分が、厳密な意味でのObjective-C言語ってことです。

わかったところでもう一度コードを眺めてみましょう。

HelloWorldAppDelegate.h
Objective-C入門その3:「@」って何だ?
<クリックで拡大>

なにやらピンクの線が引かれてますね。

@interface ~ @end

コレが、Objective-C言語での「クラスの宣言」ってヤツです。

他の言語でクラスってのをいじったことがある人はOKなんですけど、
そうじゃない人にとってクラスって意味不明なシロモノだと思うんです。私。

オブジェクティブ指向とクラスって切っても切りはなせない存在なのですが、
それが「しっくり」きたのは私もFlashをいじってからでした。

モノが目の前にあるからわかるってところなので、
クラスのお話は次回きっちり枠を取ってお話しします。

とりあえずここでは、

@interface ~ @endは大事って覚えておいてください。

でもそれだけじゃちょっと足りないので、こっちもついでに。

HelloWorldAppDelegate.m
Objective-C入門その3:「@」って何だ?
<クリックで拡大>

@implementation ~ @end

同じようなピンク線が引いてありますね。

こっちは、Objective-C言語での「クラスの実装」ってヤツです。

「宣言」と「実装」で1セットです。

HelloWorldAppDelegate.h
HelloWorldAppDelegate.m

2つのファイルに分かれて書かれていますけど、
片方だけでは動きません。
1つのクラスについて、宣言部分と実装部分を分けて書いてあるだけで、2つで1つの機能です。

@implementation ~ @endも大事って覚えておいてください。

・プリプロセッサ命令
・コンパイラディレクティブ
・#import
・@interface
・@implementation
・@end

いろいろ出てきましたね。
まだまだ沢山ありそうです。

コンパイラディレクティブはWebで検索すると一覧形式にまとまったページが出てきます。
調べてみるのも良いのですが、日本語が「日本語?」だったりします。

今見ると不安にしかなりませんので、
一気に詰め込むのではなく、「何コレ?」順に1つずつ潰していきましょう。

関連する記事:


Advertisement