本当は難しくないObjective-C
今回はObjective-Cについて書こうと思います。
色々な人の話を聞いているとどうもみなさんObjective-Cについて誤解してらっしゃる。
それはひとえに
「難しい」
ということ。
今回このブログで
「そんなに難しくないよ」
ということをお伝えします。
- 結局何をするための言語か?
- オブジェクト指向がそもそも難しい?
- コンパイルの苦手意識。
- まとめ
このような流れで説明します。
結局何をするための言語か?
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を書くにはオブジェクト指向を知る必要がある!」
というわけで後に綺麗に書きたければオブジェクト指向はマスターするべき。
しかし、とりあえず動くものを作りたければオブジェクト指向をマスターする必要は全く無いです。
というより書いていくうちにわかっていくでしょう。
(いつかオブジェクト指向についても書こうと思います。)
コンパイルの苦手意識
これもPHPやRubyなどのLL系しかしたことのない人は思うかもしれません。
コンパイルは簡単にいうとソースコードから実行ファイルを生成すること。(本当に簡単に説明すると。奥が深いものです。)
それでコンパイルをするものをコンパイラといいます。
コンパイラはソースコードを変換するのですが、その過程でエラーがでて中々進まないという経験が少なからずあると思います。これにより生まれるのが苦手意識です。
私もCやJavaをいっぱいやってからPHPやRubyをやって、コンパイル(する必要)がないって最高!とか思ってました。
だけど、コンパイルする必要がないからこそ、どこにエラーがあるかわかりにくい!!
正しくないコードでもある程度実行されてしまうからです。
で、コンパイルをすることによって、予めどこが正しくないかを教えてくれます。
なので重大な異常がある状態では実行できないため、大きなバグが発生しません。
それのみならず、どこに間違いがあるかを教えてくれます。
具体的には、
「ある一部分が小文字でなければいけないのに、大文字になっていたがために表示されない。」
みたいなミスがあるとします。
コンパイルすることによってこれが未然に防げるかつ、どこの部分でミスしているか教えてくれるので、むしろコンパイルはいいやつです。笑
苦手意識をもたず、
「ミスを教えてくれてありがとう」
ぐらいの気持ちでいけばObjective-Cともうまくやっていけるでしょう。