EY-Office ブログ

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

2012-06-24 iPhone開発者に成るために必要なスキルとは?

これからiPhone開発を始めようとする方に、必要なスキルはなんでしょうか? iPhone開発が早く始められる開発者とはどんな人でしょうか?

Xcode is Apple's powerful integrated development environment

iPhone開発に必要なスキル

代表的なスキルとしては、以下が考えられます

  • Objective-C言語
  • iOS SDK
  • オブジェクト指向
  • GUIプログラミング
  • 英語のドキュメントが読める
  • iPhoneのアプリを使いなれている



これからiPhone開発を始めようという人は、たぶん Objective-C言語 や iOS SDK の知識は無いと思います。それでは、現在どんなスキルを持っている人が早く良いiPhone開発者になれるのでしょうか?

私は以下のスキルが重要だと思います。

  1. C言語での開発経験
  2. 英語のドキュメントが読める
  3. 新しい事に挑戦するが好き

重要な順に並べてみました、これから順に説明していきます。

C言語での開発経験

Objective-C言語は、Mac/iPhone以外ではあまり使われてないのでご存知ない方が多いと思います。 ウィキペディア によると、

Objective-CはCを拡張してオブジェクト指向を可能にしたというよりは、Cで書かれたオブジェクト指向システムを制御しやすいようにマクロ的な拡張を施した言語である。したがって、「better C」に進んだC++とは異なり、「C & Object System」という考え方であり、ある意味2つの言語が混在した状態にある。

と書かれているようにC言語の上にSamlltalk由来の動的なオブジェクト指向を乗せた言語であり、根幹はC言語そのもです。iPhoneプログラミングでは機能が豊富な基本クラスライブラリー(Foundation Framework)があり、C言語的な低レイヤーのプログラミングはあまりしなくて済みますが、オブジェクトはC言語のポインターで扱っていますのでポインターを理解していないと、すぐに落ちたりメモリー不足ななってしまったりと原因不明のバグに悩まされる事になります。

最近は、Java,C#やPerl,Rubyのようにメモリーを意識しなくてもプログラミング出来る言語が一般化し、C言語のようにメモリー(ポインター)を知らないプログラマーが増えていますが、ポインターやメモリー管理という概念が身についていないプログラマーはObjective-Cではメモリー(ポインター)に由来するバグで悩ませられると思います。

英語のドキュメントが読める

本屋さんに行くと、たくさんの(日本語の)iPhone開発の書籍が売っていますが、開発で必要になるSDKのドキュメントは全て英語です。AppleからはSDKの解説、サンプルコード、WWDC等での説明ビデオなどが公開されていいますが、当然英語です。
SDKの解説ドキュメントの一部は日本語からされいてますが、プログラミングで一番必要なSDKのドキュメントは英語で日本語版が作られる気配はありません。

ネット上にたくさんの日本人によるiPhoneプログラミングのblog等が公開されています。しかし、表面的な内容が多かったり、iOS SDKの激しい進歩から、ネットを検索して出てくる日本語の結果は役に立たない事が多いです。
本当に役に立つ情報は、AppleのiOS Developer Program内の(検索では出てこない)情報か、またはプログラミングQAサイト stackoverflow などで、これも英語です。

英語のドキュメントがまったく読めないプログラマーはiPhone開発を始め、進歩の激しい分野では役に立たないと思います。

新しい事に挑戦するが好き

これはスキルではありませんが、明確な仕様をもとに自分が現在持っている能力だけで仕事をして行きたいというタイプではなく、新しい技術に挑戦するのが好きなエンジニアの方がiPhone 開発には向いています。

iOSのSDKは1〜2年でメジャーアップデートします、その間にもアップデートがあります。新しい機能には素晴らしいものが多いですが、ドキュメントや情報不足も否めません、そんな中でもドキュメントやサンプルコード、ネット、勉強会などから情報を収集しそれを物にしていく気概があるエンジニアでないと良いiPhoneアプリは作れないと思います。

その他

オブジェクト指向は今や常識だと思います。Objective-Cはオブジェクト指向言語ですし、iOS SDKは オブジェクト指向の上に出来ています。
また、iPhoneのプログラミングのスタイルは、一般にGUIプログラミングと言われているスタイルです。バッチ処理やJavascript(Ajax)をほとんど使わないWebアプリとはかなり違うスタイルです。GUIアプリの経験は必須ではありませんが、在った方が望ましいと思います。

また、iPhoneには特徴的なGUIのスタイルや、色々な制限があります。その中で使い勝手の良いアプリを作るには、プログラマー自身が色々なiPhoneアプリに触れて良いアプリを経験している必要があると思います。