Macの肝/Objective-Cはこわくない

Mac、Apple関係の情報サイトです

HOME > レビュー > プログラミング > Objective-Cはこわくない

milk_btn_prev.png

|1|2|

milk_btn_next.png

Objective-Cは(そんなに)こわくない

MacやiPhoneのアプリを作りたい!
Objective-Cの基本の基本

筆者とうとう入門編クリア

MacやiPhoneのアプリを作るには、Objective-C(おぶじぇくてぃぶ・しー)というプログラミング言語を勉強する必要がある。

このObjective-C、書き方や考え方が他の言語と比べてちょっとだけ変わっていることもあり、難しげな言語としてプログラム初心者から敬遠されがちだったことは否めない。
でもObjective-Cとその開発環境のXcodeが少しずつわかりやすい方向に変わってきたこともあり、とうとう入門編をクリアすることができた。要は簡単なアプリなら作れるようになったということだ。

そんな現在勉強中の人間による、生の入門(?)記事がこれだ。

Objective-Cの概要

難しいこと書いてもしょうがないので、ざっくりまとめる!

  • 基本はC言語とまったく同じ書き方
  • Objective-C独特な記述は [ ] で囲んだ中に書く
  • MacOS Xの基になったNeXTSTEPというOS用に作られたので、頭にNSと付くコードが多い
  • オブジェクト指向の考え方の理解は必須
  • コード名がやたら長いけど、簡単な英語がわかればむしろわかりやすい
  • やたら長いコード名は、開発環境のXcodeが入力を助けてくれるので困らない
  • しちめんどくさい手順を踏むことが多いが、そういうもんだと思ってあきらめる

特に最後の「そういうもんだと思ってあきらめる」、これ大事だと思った!
「オブジェクト(クラス)のインスタンスを作り、それを初期化して、それに対する命令(メソッド)を書いたり、それの設定(プロパティ)を変えたり」ということがいっぱい出てくる。
なにか簡単な事をするのにも、1行で済むということはそうそうない。
その時に、「めんどくせー(>_<;)」とか「なんでこんな変な書き方をさせて開発者を悩ませるんだろう(-_-;)」と思ってるうちはなかなか身につかないと思う。実際俺がそうだったし。
でもある時、「そういうもんだ!」と割りきって、ひとつの儀式だと思えるようになってからずいぶん理解が進んだっけ。理解が進むと勉強も楽しくなってさらに進むという好循環♪

頭にNSと付くのはMacOS Xの前身NeXT STEPの略。
頭にUIと付くのはUser Interfaceの略で、目に見える部品に関するもの。

多くのことをオブジェクトという単位で扱う。
オブジェクトにはひな形であるクラスというものと、ひな形から作られたインスタンスというものがある。

クラス、インスタンスそれぞれにメソッド、プロパティというのがある。
メソッドはオブジェクト(クラスもしくはインスタンス)に対しての命令で、[ ]で囲んで書く。
メソッドは最初から用意されているものを使ったり、書き換えたり、自分で作ったりできる。
オブジェクトの中に、メソッドの中身のプログラムも含まれる。
メソッドは引数がいるもの、いらないもの、返り値を返すもの、返さないものがある。要するにC言語とかの関数だと思えばいい。
メソッド名は、どういう機能や引数なのかを普通の英語っぽく書くため、やたら長いのが多い。簡単な英語なので、わかる人にはわかりやすい。
例)ラベルの文字色を変える
myLabel.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
長いメソッド名などの入力間違いを防ぐため、Xcodeが強力な入力補完機能を持っているので楽。
基本は、画面を開いたら、ボタンをタップしたら…など、何かが起こった時に発生するイベントをとらえて記述する。

プロパティはオブジェクトが持つ設定値のことで、たとえば文字の色、フォント、サイズ、画面上の位置など、オブジェクトの諸設定などである。
例)ラベルのテキストを変える
myLabel.text = @"hoge";

インスタンスには、そのオブジェクト(インスタンス)の中だけで通用するインスタンス変数というものを設定できる。要するにインスタンス内だけのローカル変数だが、インスタンス内のメソッド共通で使える。

ざっくり言えば数値も文字も全部オブジェクトとして扱うので、普通の数字や文字とやり取りするには変換作業が必要だが、さほど難しくはない。(めんどくさいけど)

Interface Builderは画面上の部品のデザイン(配置など)と、部品の名前を設定してプログラムから扱えるように接続する(Outlet)こと、例えばボタンをタップしたらどのメソッドを呼ぶか?(Action)などということを定義する。
Interface Builderの進化形であるStoryboardでは画面移動の設定も超簡単に行える。

オブジェクトを記述するファイルは大きく分けて、拡張子.hの付いた定義ファイルと、.mの付いた実装ファイルの2つ。
定義ファイルはそのオブジェクトの内容がどういう変数やメソッド、プロパティでできているのかを書く。
実装ファイルは実際のプログラムの中身。

Objective-Cの細かい部分の書き方はXcodeのバージョンアップによって少しずつ仕様変更されている。
だいたいはより簡単に書ける方向に変更されており、古い書き方もできるので問題はないんだけど、入門書によって書いてることが違うように思えて混乱することがある。

milk_btn_pagetop.png

milk_btn_prev.png

|1|2|

milk_btn_next.png