iPhoneやiPad向けのソフトウェア開発では、Objective-C(オブジェクティブC)というマイナーなプログラミング言語が主に使われています。なぜなのでしょうか?

 というのはソフトウェアの開発では、プログラミング言語は最重要な道具です。単純に考えれば、多くの開発者が使い慣れた道具、つまり広く普及しているプログラミング言語で開発できれば、数多くの開発者の参加が見込め、結果としてアプリケーションの数が増えるようにもみえます。道具と同じで、見知らぬプログラミング言語を使いこなせるようになるのは大変で、大きな参入障壁になります。

アップルはあえてマイナーなプログラミング言語を選んだ!?

 前述の問に対する定番な答えは、Objective-Cは同じアップルのマッキントッシュの主たる開発用言語だったため、ということになるでしょう(正しくはMacOS Xの前身となったNeXTの開発言語でした)。iPhoneの発表当時、アップルには、ソフトウェア開発環境などを準備する時間がなかったため、iPhoneやiPadでもObjective-Cを採用したということです。しかし、それだけが理由とは思えません。

 確かに当初は準備時間がなかったとしても、前述のように多くの開発者に参加してもらうのには、マイナーなプログラミング言語を採用することは不利な戦略なのですから、その後は開発者が多いメジャーなプログラミング言語であるC++やJavaなどを積極的にサポートしてもよかったはずです。

 さてここからは当方の仮説ですが、アップルはマイナーな言語を選択した方が、新しいアプリケーションが集まると考えていたのではないでしょうか。

 当時の状況からすると、マッキントッシュ向けのアプリケーションの開発者ならばObjective-Cを使いこなせ、iPhone向けの開発もマッキントッシュ向けの開発によく似ていましたが、そもそもマッキントッシュの開発者の人数は多いとはいえませんでした。

 つまりObjective-CによるiPhoneやiPad向けのアプリケーション開発は、誰でも初心者、つまりスタートラインにいる状態だったのです。これは誰でもトップになれるチャンスがあることを意味します。そして我こそはと思う人たちが、iPhoneやiPad向けアプリケーション開発に流れ込むことが期待できます。というのはソフトウェアは再生産・流通コストが低いので、数が売れるほど収益率が上昇し、収穫逓増となります。だから、どうせiPhoneやiPad向けアプリケーション開発参入にするなら、売れ筋アプリケーションを世に出したいと意気込むことになります。

 実際、iPhoneやiPadの開発者には、それまでソフトウェア開発をほとんどしたことのないような未経験者も結構おられました。これがC++やJavaなどのメジャーなプログラミング言語が主たる開発言語だったら、その言語に慣れた開発者が有利になりますし、少なくともソフトウェア開発の未経験者が参入してもトップになれる可能性は低い。