こんなに違う? AndroidとiOSの開発流儀

山本 隆一郎

tag: 組み込み Interface

コラム 2011年9月 9日

 iPhoneやiPadのOSとして知られるiOS.Androidとの違いは意外とあります.本コラムでは,これらを,開発者の視点から考察してみます.

●iPhoneとAndroid

 iOSとAndroidは同じスマートフォン向けOSが出自ということもあり,よく比較されます.AppleはiPhoneのタブレット版ともいえるiPadで成功を収め,iOSがスマートフォン以外にもターゲットを広げました.現在,Androidも負けじとAndroid 3.0(Honeycomb)でタブレットの分野に打って出ています.両社は共によきライバルとして,いまこの瞬間も,そしてこれからも競い合う関係です.

 しかし,その人気を二分するプラットホームの違いは,開発者以外はよく分からないというのが実情ではないでしょうか? 両方を開発している人ならば,日々いろいろと感じるところは少なくないでしょう.けれども,iOS開発者にとってAndroidは謎です.同じくAndroid開発者にとってもiOSは謎です.ましてや,両方ともまだ未体験でこれから学ぼうとされている方や,どちらから手をつければよいか検討中の方々にとっては,より一層不可解なものだと感じるでしょう.そこで,本章では,筆者が両方使ってみて感じるところを,独断と偏見で思いつくままに論じてみます.

●JavaとObjective-C

 Androidは基本的にJava言語で開発しますが,iOSはObjective-Cというあまり聞き慣れない言語を用います.これは,Mac OSの開発者以外にはなじみが薄いのではないでしょうか.その名前の通り,C言語の亜種ともいえる言語ですが,古来の由緒正しいオブジェクト指向言語Small Talkの流れをくむ,メッセージ機能を持つオブジェクト指向言語です.

 C言語ベースでオブジェクト指向言語というと,どうしてもC++を思い浮かべますが,Objective-CとC++はまるで別物です.

 例えば,あるオブジェクト(クラス)にPrintTextというメソッドがあったとして,そのメソッドを呼び出す処理は,C++とObjective-Cで表記すると,それぞれ図1のようになります.

 

図1 C++とObjective-Cのメソッドを呼び出す処理

 

 C++とJavaはそれぞれメソッドの定義も呼び出しも似ているのでなじみがあると思いますが,Objective-Cの記述は初めて見る人にとっては,まるで呪文です.メソッドの呼び出しは,[ ]で囲った記述を行い,メッセージ式という形にします.引数には二つ目以降に(一つ目には付けない)ラベルを付ける必要があり,上記例はtoX, toYという引数の意味を表すラベルが付けられています.第1引数はメソッドの名称であるprintTextがラベル代わりになるので,最終的にできあがるのは,
[obj printText:msg toX:x toY:y];
となり,[objというメッセージ通信は,msgをtoXとtoYにprintTextする]という意味になります.言語仕様としては,C++とは全く異なる,ある意味独特の美学が貫かれています.

 Objective-Cの言語仕様は,知れば知るほど,C++やJavaに凝り固まった人にとっては奇妙奇天烈であり,逆にMac OSやジョブズのファン,そして多くの初めて学ぶ先入観のない人にとっては,理解しやすい言語です.

 それに対して,Androidは普通のJavaです.よくも悪くもごくごく普通のJavaなので,特に言語習得で悩むこともない代わりに,Objective-Cのような美学や知的な興奮は少ないかもしれません.

 AndroidとiPhoneでプログラム作成を行う際に,どちらの言語が性に合うか,または興味を持てるかどうか,というのもプログラマにとっては重要なポイントではないかと思います.

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日