nigoblog

技術系会社のCEOブログ~私的編~

本当は難しくないObjective-C

今回はObjective-Cについて書こうと思います。

色々な人の話を聞いているとどうもみなさんObjective-Cについて誤解してらっしゃる。
それはひとえに
難しい
ということ。
今回このブログで
そんなに難しくないよ
ということをお伝えします。

  1. 結局何をするための言語か?
  2. オブジェクト指向がそもそも難しい?
  3. コンパイルの苦手意識。
  4. まとめ

このような流れで説明します。

結局何をするための言語か?

Objective-Cの目的ですが、
iPhoneアプリを作るためにある
一言で言うとこんな感じ。(MacのアプリやiPadはとか言わないように)
その中でも、
iPhoneアプリの画面を制御する
のがObjective-Cの目的です。

では、『iPhone』を『web』に置き換えて考えてみましょう。
webアプリを作るためにある
このような言語はHTML+CSS+JS, PHP, Ruby ... etc
です。
その中でも、
webアプリの画面を制御する
ための言語はHTML+CSS+JSですよね。
というわけでなんとObjective-Cの目的とHTML+CSS+JSの目的は一緒!!

つまり結論から言うと
HTML+CSS+JSが出来ればObjective-Cが出来る力がある!!
こう考えると、Objective-Cってそんなに難しくないと思えますよね。

というわけで一例を考えます。
あるボタンを配置するコードについて。
HTML+CSSの場合

<style>
.btn{
    width: 50px;
    height: 50px;
    position: absolute;
    top: 20px;
    left: 20px;
}
</style>
<a class="btn">Button</a>

こんな感じになります。だいたい何をやっているかわかりますよね。

Objective-Cの場合

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 50, 50) ];
button.titleLabel.text = [NSString stringWithFormat: @"Button"];

みたいな感じです。まずボタンを生成して、初期化と同時に位置を決定しています。
その後にボタンのタイトル指定しています。

以上の2つのようにとにかくHTML+CSS+JSで出来るようなことはObjective-Cでも出来るということ!

オブジェクト指向がそもそも難しい?

確かにこれはあると思いますが、はっきり言ってしまうと、
Objective-Cを書くにあたってオブジェクト指向を知る必要はない!
おそらくですが、オブジェクト指向を理解してObjective-Cを書いているエンジニアは50%いないのではないかと睨んでます。
戸愚呂でいうと闇ブローカー時代くらい。
(念のため私は一応オブジェクト指向理解してます笑)
ただし、上記のものに少し付け足します。
綺麗なObjective-Cを書くにはオブジェクト指向を知る必要がある!
というわけで後に綺麗に書きたければオブジェクト指向はマスターするべき。
しかし、とりあえず動くものを作りたければオブジェクト指向をマスターする必要は全く無いです。
というより書いていくうちにわかっていくでしょう。
(いつかオブジェクト指向についても書こうと思います。)

コンパイルの苦手意識

これもPHPRubyなどのLL系しかしたことのない人は思うかもしれません。
コンパイルは簡単にいうとソースコードから実行ファイルを生成すること。(本当に簡単に説明すると。奥が深いものです。)
それでコンパイルをするものをコンパイラといいます。
コンパイラソースコードを変換するのですが、その過程でエラーがでて中々進まないという経験が少なからずあると思います。これにより生まれるのが苦手意識です。
私もCやJavaをいっぱいやってからPHPRubyをやって、コンパイル(する必要)がないって最高!とか思ってました。
だけど、コンパイルする必要がないからこそ、どこにエラーがあるかわかりにくい!!
正しくないコードでもある程度実行されてしまうからです。
で、コンパイルをすることによって、予めどこが正しくないかを教えてくれます。
なので重大な異常がある状態では実行できないため、大きなバグが発生しません。
それのみならず、どこに間違いがあるかを教えてくれます。
具体的には、
「ある一部分が小文字でなければいけないのに、大文字になっていたがために表示されない。」
みたいなミスがあるとします。
コンパイルすることによってこれが未然に防げるかつ、どこの部分でミスしているか教えてくれるので、むしろコンパイルはいいやつです。笑
苦手意識をもたず、
ミスを教えてくれてありがとう
ぐらいの気持ちでいけばObjective-Cともうまくやっていけるでしょう。

まとめ

以上を簡単にまとめると

  1. 結局HTML+CSS+JSとやってることは変わらない。
  2. オブジェクト指向を知らなくても書ける。
  3. コンパイルはいいやつ。

なのでみなさんも入門書片手に是非Objective-Cを初めてiPhoneアプリを作りましょう!!