iOS 8.3、OS X 10.10.3 (Yosemite)、Xcode 6.3、Swift 1.2対応 (2015年4月27日更新)

1-4 SwiftとCocoa touchフレームワーク

1-4-1 フレームワークとは?

Swiftは確かに凄いんだけど、実はこれだけではアプリは作れないんだ。Swiftはプログラミング言語で、言語としての文法が色々とあるんだけど、これを覚えてもそれだけでは足りない。言語の目的は、それを使って、あるものを操作することにある。それが、Cocoa touchと呼ばれるものだ。

Cocoa touch(ココアタッチ)は、フレームワークって呼ばれる種類のソフトウェアだ。じゃあ、フレームワークってなんだ? これがプログラミング独特の概念で、なかなか説明が難しい。だからその前に、iPhoneアプリをちょっと観察してみよう。

たとえば、電話のアプリがあるでしょ。この画面の構成要素を考えてみよう。まず、いちばん上にタイトルが書いてあるラベルがあるでしょ。その左には編集ボタン、右側には追加ボタン。これらのタイトルとボタンは、バーの上に置いてある。

画面の下の方を見てみよう。機能を切り換えるための「よく使う項目」や「履歴」といったボタンがあるね。それらのボタンもバーの上に置いてあり、タップすると画面をタブのように切り換えることができる。

画面中央には、電話先の項目がテーブル状に並んでいる。このテーブルは上下にスワイプすればスクロールするし、左にスワイプすると削除することもできる。

つまりこの画面は、ラベルやボタンやバーやテーブルといった、様々な部品を集めて作られているんだ。ここまではわかるよね。


電話アプリの画面

そして、ここからが重要! これらのボタンやテーブルといった部品、電話アプリだけじゃなくて他のアプリでも見たことがあるよねぇ? たとえば、メール。メールアプリにもテーブルやバーがある。たとえばSafari。Safariの画面にもバーとボタンがあるでしょ。


メールやSafariの画面

つまり、これらの部品は、それぞれのアプリが独自に作っているわけじゃなく、どこかに共通の部品庫があって、それをみんなで利用しているんだ。それがフレームワークだ。アプリの構成要素を再利用するための、ソフトウェアなんだ。

フレームワークがあるおかげで、アプリの開発はとても簡単になったんだ。フレームワークがなかった時代はひどかったんだよ。昔のMacプログラミングなんてねぇ、大変だったんだよ。昔ってのは、Mac OS 6とか7の時代ね。ウインドウを使おうとするだけでもすごく大変だったんだから。だって、表示したのはいいけど、それだけじゃ動かせないんだ。マウスでウインドウをドラッグするには、まずイベントループってのを作って、マウスイベントを取得して、そこから移動量を割り出して、それでウインドウの移動先を計算して、ってのを全部自分で書かなきゃいけなかった。それが、MetrowerksからPowerPlantっていうフレームワークが出てきて少しマシになって。さらに、OS XとCocoaが登場して、ガラッと環境が変わったんだよね。それがいまのYosemiteやiOSにも引き継がれているんだ。

昔話はこのくらいにして、とにかくフレームワークは便利だ。でもそれは逆の言い方をすれば、フレームワークの使い方を学ばなくてはいけない、ということでもあるんだ。つまり、アプリを作るには、プログラミング言語と、それを使ってフレームワークを操作する方法の、2つを理解する必要がある。これがiOSでは、SwiftとCocoa touchということになる。

1-4-2 FoundationとUI Kitフレームワーク

Cocoa touchっていうフレームワークは、実は2つのフレームワークの集合体なんだ。だから、Swiftでプログラミングしていても、意外にCocoa touchっていう単語は登場しない。その代わり、構成している2つのフレームワークの名前がバシバシ出てくる。FoundationとUI Kitだ。


Cocoa touchの構成

Foundationっていう英語は、「基礎的な」っていう意味だ。その名前の通り、Foundationフレームワークはアプリを下支えする基礎的な機能を提供する。たとえば、文字列。またはコレクションと呼ばれる、集合を管理するもの。え? 何のことだかわからないって? それはある意味当然だ。Foundationは、画面には表示されない、プログラミング特有の概念を提供するものなんだ。だから、説明するのが難しい。でもプログラミングを始めれば、なにせ基礎的で基本的なものなんで、ものすごく頻繁に使うことになる。まあ、すぐ慣れると思うよ。あとは、そうだ、ネットワーク機能もFoundationの担当だ。これは理解しやすいよね。

UI Kitは、User Interface、つまりユーザインタフェース機能を提供するものだ。簡単に言っちゃえば、画面に表示されるものだ。さっきも紹介したボタンだとか、ラベルだとか、テーブルだとか、スライダーだとか。そういった、画面上に見えて、ユーザが操作するもの。その辺りの派手なものが、UI Kitフレームワークの担当だ。

この2つのフレームワークを利用して、iOSアプリを組み立てていくんだ。

1-4-3 プログラミング言語とフレームワークは車の両輪

この種のフレームワークへの理解というのは、iOSだけではなく、モダンなユーザインタフェースを持つすべてのアプリ開発で不可欠なんだ。フレームワークに則って作らないと、アプリとしてOSにインストールすることすらままならないからね。

これを学習することを考えると、両方一緒にやっていくのが効率的だと思う。iOSアプリを作るには、プログラミング言語としてSwiftを覚えないといけない。でも、Swiftだけじゃアプリにならなくて、Cocoa touchの使い方も理解しないといけない。ならば、ちょっとSwiftを覚えて、それでちょっとCocoa touchを操作して、もっと複雑な機能が欲しくなったらもっとCocoa touchを勉強して、そのためにはもっとSwiftの文法を覚えて……といった感じで、あっちいったりこっちいったりしながら進めていくのが効果的だと思う。それに何より、楽しいんだ。

いわば、アプリ開発にとっては、プログラミング言語とフレームワークが車の両輪なんだ。どっちかだけじゃダメ。この2つが組み合わさることで、お互いの魅力がどんどん引き出されるんだ。だからねぇ、ここからは話がそれるんだけどね、プログラマってよくプログラミング言語の優劣を議論するのが好きなんだけど。個人的には言語だけの比較ってほとんど意味がないと思っている。フレームワークの使い勝手も加えなくちゃ意味がないだろう、って。まぁほとんどの場合、結局は好き嫌いの話で終わっちゃうんだけどね。


『たのスイ』紹介ページへもどる

AppStoreでダウンロード'

アプリアイコン
たのしいアプリプログラミング
〜Swiftで始めよう!

Fアプリアイコン
たのしいアプリプログラミング
〜Swiftで始めよう![無料版]

HMDTホームへ