EY-Office ブログ

EY-Officeの吉田裕美が、まだ Ruby on RailsやiPhone開発を行ってない技術者や技術系マネージャー向けに、技術や教育に付いて書いています。

2013-01-16 iPhone開発もだいぶ楽になりました 〜Modern Objective-C〜

iPhoneアプリを開発するには、通常 Objective-Cという言語を使います。もちろん JavaScriptやRubyで開発出来るツールもApple以外から提供されていますが、iPhoneの機能や性能を十分に活かしたアプリを作るにはObjective-Cが最適です。さらに Apple純正のツールXcodeもサポートされ、書籍やドキュメントも充実しています。

しかし、C言語をベースにした言語であるために、JavaScriptやRubyや言語と比べると開発の難易度は高くなります。

写真は https://developer.apple.com/videos/wwdc/2012/ から

ARC

なかでも、メモリー管理はアプリが突然落ちてしまうような複雑なバグを生みやすく iPhoneアプリ作成の鬼門と呼ばれていました。
Webアプリ等で使われているRuby,Perl,PHP,JavaScript,Java,C#… など、ほとんどの言語にはガーベッジコレクション(不要になったメモリーを自動的に回収してくれる機能)があり、プログラマーはメモリーの解放や、動的なメモリーを扱うためのポインターを知らなくてもすみました。しかしiPhoneでは性能や電池の消費を考慮しガーベッジコレクションは実装されていませんし、C言語をベースにしているのでポインターを扱う必要があります。

個々のメモリー管理のコードは難しいものではありませんが、プログラムが大きくなると、どうしても不要になったメモリーの解放を忘れたり、逆にまだ必要なメモリーを解放してしまい、特別な条件で落ちたりするデバックしにくいバグを作ってしまいます。

しかし、iOS5からARC(Automatic Reference Counting)が導入され、メモリー管理が圧倒的に楽になりました。ARCはガーベッジコレクションのようにメモリー管理を完全に言語に任せる事は出来ませんが、通常はメモリーの所有権を宣言するだけで、メモリー管理用のコードはコンパイラーが自動的に生成してくれます。

Objective-Cの改良

iPhone/iPadの開発者が増えたことに対応して、Apple は Objective-C言語をより使い易くする為の改良をしました。従来は非常に冗長だったプロパティー(インスタンス変数)の宣言をシンプルにしたり、前方参照を許すなど、プログラマーの負担を減らすように改良してくれました。

また、オブジェクト定数や配列、ハッシュのアクセスを簡潔に記述できるような文法も導入されました。普段Rubyを書いてる私のようなプログラマーには大変ありがたい機能です、一部かもしれませんが Objective-C のコードが Ruby のように簡潔に書けるようになりました。

まとめ

このようにな Apple の Objective-Cプログラミングを容易にするよな努力によって、iPhone3Gが発売された3年前のiOS3に比べると、iOS6は格段にプログラミングが容易ななったと思います。是非みなさんもiOS(iPhone/iPad)プログラミングに挑戦してみて下さい。

Modern Objective-C に付いての詳細は AppleのWWDC session 405のビデオ・資料 を参照して下さい(登録が必要ですが無料です)。