Syntax Error.

[Sy] Appleは当初ネイティブのSDKを公開するつもりはなかったらしい。〜iOSアプリ開発を始めました。〜

2013/04/27
 iOSアプリ開発始めました

Evernote Devcup Kick off で開発者としてもっとアウトプットをしていかないと、と刺激を受け、これまでやろうやろうと思って後回しにしてきたiOSアプリの開発にいよいよ挑戦することを決めました。

⇒ 開発者ならもの作って世に出さなきゃと改めて思った日~Evernote Devcup 2013 Kick off and User Meetup in Tokyoに行ってきた~

別件でWebサイトを作っているところなので、それが終わってからと思っていたんですが、いやいや、少しずつでも前に進まなきゃと思って、並行して始めることにしました。

新しい言語を学ぶときには、必ず最初は参考書を読むようにしてますが、今回は オライリー初めてのiOSプログラミング という書籍を使ってイチから学んでいます。オライリーの初心者向けの技術書は、よりコアなところの説明もしてくれるので僕は好きです。

プログラミング自体の初心者という方にはオススメできませんが、ある程度経験のある方がiOSの勉強を始めるには良いと思います。

で、直接プログラムには関係ないのですが、一つ「へ~」と思ったことがあったのでご紹介。

2007年にiPhoneが初めて登場したとき、ネイティブのSDKはありませんでした。当時Appleは、ネイティブのSDKは不要で、初代iPhone用のアプリケーションはJavaScriptとCSS、HTMLを使ったWebアプリケーションとして作成する、と主張していました。

(中略)

初代iPhoneのリリースから1年もたたない2008年3月、Appleはそれまでの方針を転換して、ネイティブSDKをデベロッパコミュニティに向けてリリースしたのです。しかし、これはオープンソースコミュニティの奮闘に応えたものだったのか、それとも最初からAppleの名高い秘密主義による策略だったのか、今となってはわかりません。

知らなかった。そうだったんですね。

開発者ではない方向けに少し解説すると、SDKというのは開発キットというか、ここではiOSアプリを開発するために必要な環境と思ってもらえれば良いです。

Webアプリとネイティブアプリの違いですが、わかりやすい例としては、ちょっと前にFacebookのアプリがバージョンアップした時に速度がかなり改善したという話があったと思います。あれは、Webアプリからネイティブアプリに切り替えた例です。

かなりざっくり比較すると、

ネイティブアプリは、例えばWindowsとかでPCにインストールしてしまうようなソフトや、今iPhoneやAndroidでインストールできるアプリのほとんどはネイティブアプリになります。OSに依存する形で提供されるので、どのOSでも動かすことはできません が、逆に言うとそのOSに最適な形になっているので、処理速度が早く高度な処理を実現しやすい ことがメリットです。あと、オフラインでもある程度使える ものが多いです。

Webアプリ は、アプリといいつつ、動的に変化するWebサイトだと思ってもらって良いかと。最大のメリットの一つは、ブラウザさえあればどのOSでも同じように動かせる ことです。必ずオンラインである必要があります。

また、ネイティブアプリのように起動しているけど、ネイティブアプリ内で内部的にブラウザを起動してWebページを表示しているものもWebアプリと呼ばれたりします。FacebookのiPhoneアプリは初期はこの形です。

EvernoteのWeb版とMacアプリ版も、Webアプリとネイティブアプリですね。Webアプリはブラウザ上で実行しているので、ノートを移動しようとしても速度面で遅かったりしますが、同期の手間はいりません。逆にネイティブアプリ版は、さくさく操作できる反面、いちいち同期処理が必要になります。

HTML5 (と CSS3 )の登場でWebでできることが格段に向上したとはいえ、まだネイティブアプリに敵わない部分もあります。特にOSのハードに関わる機能の操作は、Webアプリだと限界があることが多いです。

で、iOSの話に戻りますが、僕はiPhoneがこんなにファンを増やせたのも、アプリが売れているのも、ネイティブアプリとしてアプリを提供しているからということが大きいと思っています。

なので、元々AppleがネイティブのSDKを公開せずに、Webアプリとして提供しようとしていたことを知って驚いたわけです。たぶん、知らない人も多いと思うので記事にしてみました。

と、まったく開発自体に関係ない話でしたが、これからちょっとずつですがアプリ開発に勤しんでいきます。今年中に1本リリースしたいですね。

また何か新しい発見などあれば書いていきます。