UIKitとは?SwiftUIとの違いは?iOSアプリ開発の根幹・UIKitをiOSエンジニアが解説!

ios開発uikitサムネ

こんにちは!Apple信者のiOSエンジニアです。

この記事では、現役/フルタイムで働くiOSエンジニアの僕が、iOSアプリ開発の根幹とも言えるフレームワーク・UIKitについてご紹介しています。

UIKitを知ることこそが、iOSアプリ開発への第一歩だと言っても過言ではありません。

iOSアプリ開発を始める方や、iOSエンジニアとしてお仕事をしたいと思っている方にとって、UIKitは避けて通れないほど大切なもの。

この記事をお読みいただき、少しでも理解を深めてくだされば幸いです。

スポンサーリンク

UIKiとは

UIKitとは、iOSアプリを始めとしてAppleのフレームワークで駆動するアプリケーションを構築するために欠かせないフレームワーク

フレームワークというのはざっくり言えば機能(クラスや構造体など)の塊のことであり、アプリケーションを作成する上での「土台」ともいえるもの。

iOSアプリを開発する上では、Appleが用意してくれているこのUIKitという土台を活用して作業を進めていくわけです。

詳しくは後述しますが、UIKitの中に含まれている機能やクラスというものは、iOSアプリをネイティブ環境でビルドする上で欠かせないもの

Appleが用意してくれている統合開発環境Xcodeをダウンロードすることで、このUIKitフレームワークも一緒に同梱されます。

※Xcodeについて詳しく知りたい方は、こちら「Xcode(エックスコード)とは?IDEとは?Apple信者の現役iOSエンジニアが徹底解説!」に詳しくまとめておりますのでご一読ください!

補足メモ

正確にいえば、XcodeをダウンロードするとまずiOS SDKと呼ばれるiOSの開発キットが付随します。そのiOS SDKの中には、iOSアプリ上で駆動するCocoa Touchと呼ばれる重要なフレームワークが内包されています。

Cocoa Touchというのは、macOS(古くはOS X)で動作するアプリのフレームワークであるCocoaをiPhoneなどのタッチスクリーンデバイス用に改変したものです。そのため、基本的にiOS開発というのは、macOS向けの開発のノウハウによって形作られたものだといえるでしょう。

そのためiOSアプリ開発は、基本的にはXcodeをダウンロードするだけで始められるようになっています

基本的なチュートリアルなどでは、開発者自身が手動でフレームワークをダウンロードすることはありません。

ただし良くも悪くも、UIKitについて理解しないままに動くものが作れてしまうということ。

だからこそUIKitの存在について積極的に理解して知っておくことは、iOSエンジニアとして大切なのではないかなと思います。

Apple信者メモ

なおかつCocoaには、かつてAppleを去ったスティーブ・ジョブズが興した会社・Next(ネクスト)の「NextSTEP」と呼ばれるシステム(API)が用いられています。そのため少々話が飛躍しますが、iOSのシステムやアプリケーション開発のノウハウの中には、今の時代にも若かりし頃のスティーブ・ジョブズの存在が息づいているわけです。Apple信者としても、とても興味深いですよね。

ちなみにmacOS上で動くアプリの開発には、主にAppKitと呼ばれるフレームワークが使われてきました。

ただしmacOS←→iOSでソースコードの移植が容易にできるCatalyst、さらにはUIKitの普及によって、macOSでもUIKitを用いた開発が行われるようになった経緯があります。

UIKitの使い方

先程もお伝えしたとおりに、UIKitはXcodeに同梱されています。

そのため、開発者が手動でダウンロードする必要はありません。

そしてViewController属性のファイルを新規作成したときには、ファイルにUIKitがインポートされていることがわかりますね。下の画像の8行目です。

import文参照

この処理が、ViewControllerファイルにUIKitをインポートするための記述です。

import UIKit

この場合もすでにimport文が書かれているので、UIKitを使うために開発者が行うことは特段ありません。

ただし手書きでViewControllerやViewのswift拡張子ファイルを作成したときには、自分でimport UIKitのコードを書き足す必要があります

そうすることで、ファイル内でUIKitのクラスを呼び出して使えるようになるわけです。

スポンサーリンク

iOSアプリ開発におけるUIKitの重要性

少しだけ触れたとおりに、UIKitはAppleのフレームワークの歴史の中に脈々と続く歴史の一部。

ネイティブ環境でiOSアプリを開発するのならば、iOSアプリが駆動するための心臓部のひとつと言っても過言ではありません。

またUIKitに含まれるコンポーネント(部品や機能)を知っておくことによって、実現したい機能をよりスムーズに実装できます。

それぞれの目的に合わせて正確に機能を選定することで、開発スピードは大幅に早くなるでしょう。

UIKitを使わなくてもiOSアプリ開発はできる?

Xcodeを使用したネイティブiOSアプリ開発においては、UIKitを使用して開発していくことがほとんど必須といえます。

ただReact NavteveやFlutterを用いたクロスプラットフォーム開発においては、独自のコンポーネントを用いる方法もあるようですが、そういった場合にもiOSのネイティブコードを呼び出す方法があります。

そのため、UIKitを使わない開発は可能ですが、iOS開発においてはやはりUIKitに依存する部分が多いでしょう。

また後述するSwiftUIを使用することによって、StoryboardやUIKitを直接用いることなくネイティブのアプリ開発を行うこともできますよ。

スポンサーリンク

UIKitとSwiftUIの違いは?

SwiftUIは、2019年6月のWWDCで発表されたiOSアプリ開発のための新しいフレームワークのこと。

UIKitよりも新しいフレームワークであり、基本的には別物と思ってもらって構いません。

両者の違いとして、UIKitを用いたSwiftプログラミングでは命令形の記述が主(おも)です。

これはたとえば、とある変数の型が変わったとき、開発者のほうで変数を監視したり明示的に指示をして、UI部品に変数の値を当てはめられるということ。

一方でSwiftUIでは、宣言形の記法でアプリをビルドできます

変数とUI部品を予め紐付けることで、開発者が指示を出す機会を大幅に減らし、コードの記述量そのものを少なくできる。

このようにSwiftUIには、より高速でリアルタイムでアプリ開発が行えるようなエッセンスが多く秘められています。

SwiftUIについては、また別の記事で深堀りしていけたらと思いますよ。

UIKitに含まれる主なクラス

ここからは、UIKitに含まれるクラスについて深堀りしていきましょう。

UIKitにはすぐには把握しきれないほど多くの要素が含まれていますが、その中でもiOSエンジニアがよく使うものについて抜粋して見ていきましょう。

Core Appクラス

ここには、iOSのシステムとiOSアプリの間で情報伝達を行うための機能が含まれています。

UIApplication

このUIApplicationクラスとは、アプリそのもののライフサイクルを管理するクラスのこと。

アプリが起動すると、一つのアプリにつき一つだけインスタンスが生成されます。

アプリ開発の場面でよくある使い方としては、アプリがPush通知を受け取ったとき、アプリの状態を判別して処理を行うという使い方ですね。

UIApplicationクラスを用いることで、アプリが閉じているときはこう、ユーザがアプリ使用中ならこう、などとアプリステータス別に細かく処理を行えるわけです。

UIDevice

UIDeviceクラスは、その名の通りデバイス情報を持ちます。

アプリ開発の現場では、ユーザのデバイスがiPadだったらこの処理、iPhoneだったらこの処理、のようなデバイスごとの条件分岐などに用いられます。

またiPhoneが横向きだった場合の処理を個別に記述するなども可能です。

View関連のクラス

View関連クラスには、その名の通りアプリのスクリーンに表示される様々な種類のViewが用意されています。

UIView

UIViewクラス

UIViewはその名の通り、画面上に表示されるViewを司るクラスのこと。

またこのクラスは、画面表示系のViewの親クラスにもなっており、アプリ開発では欠かせないUI部品です。

UIImageView

UIImageViewクラス

このUIImageViewクラスは、アプリ画面に画像を表示させたいときなどに用いられるUI部品です。

iOSアプリ開発において、額縁のような役割だといえますね。

ちなみに、上記のImageViewに画像を当てはめるのも簡単。画像を当てはめると、下のようになります。

imageView画像当てはめ後

もともとUIImageViewのあった部分に、Appleロゴの画像が当てはめられていることがわかるかと思います。

iOSアプリ開発で画像を用いるときには、このようにするのがベストプラクティスです。

UITableView

UITableView

UITableViewは、項目をリスト表示するためのUI部品です。

たとえば有名なiOSアプリでいえば、LINEのトーク一覧画面などのような感じ。

実際にUITableViewを使っているかはLINEの中の人にしかわかりませんが、情報を一覧で表示したい場合によく使われるUIですね。

Control関連のクラス

Controlとは、アプリ内でユーザ操作を受け付けるための部品のことです。

以下のようなものが、アプリ開発の現場では主に使われています。

UIButton

UIButton

UIButtonは、その名の通りアプリ内でボタンの役割をなすUIのことです。

タップしたときに特定の処理を行うなど、ユーザ挙動発信の処理を行えます。

また色やデザインなども、開発者の意図に沿って自由にカスタマイズが可能。

UIButtonの使い方をマスターすれば、開発ライフはより楽しいものになるでしょう。

UISlider

UISlider

UISliderは、値を緩やかに上げ下げするために用いられるUI部品です。

AppleMusicやアラーム音などの音量調整などで見かけたことがある方も多いかもしれませんね。

UISwitch

UISwitch

UISwitchは、その名の通りスイッチ機能をアプリに持たせるためのUIです。

オンオフのトグルスイッチになっていますから、シンプルな設定などで使えるUI部品といえるでしょう。

UIDatePicker

UIDatePicker

UIDatePickerは、日付を選択する(ピックする)ためのUI部品です。

これを使えば、開発者側でカレンダーなどを実装することなく、ユーザに日時を選択させることが可能になります。

ViewController関連のクラス

ViewControllerとは、Viewやアニメーションなどの管理を行うクラス。

独自のライフサイクルを持っており、iOSアプリ開発には欠かせないクラスです。

ここでは、他画面のアプリを作る上で欠かせないクラスについてご紹介していきましょう。

UINavigationController

UINavigation

UINavigationControllerは、アプリの画面遷移を助ける役割を担うクラスです。

階層状にViewControllerを持っており、画面の進む/戻るを管理する際に用いられます

UITabBarController

UITabbar

UITabBarControllerは、アプリの下にあるタブの挙動を制御するクラスです。

多くのアプリは、下にあるタブを選択することによって画面を切り替えられますよね。

このクラスを適切に使うことで、ユーザフレンドリーな画面遷移を実現できるわけです。

さいごに

この記事ではUIKitについて、またそこに含まれる代表的なクラスについてご紹介してきました。

アプリ開発の場面では、この部品たちをいかに使いこなしていくかが鍵となっていきます。

とはいえ、一度にすべてを完璧に覚えることは簡単ではありません。

UIKitについては、はじめは「こんなものがあるんだなぁ」くらいの感覚で眺めていただき、実際に使用していく中で徐々に覚えていけば大丈夫ですよ。

UIKitは奥が深くて、知れば知るほど面白いと感じることも多いです。

この記事を読んで面白いと感じてくださった方は、UIKitを使ったiOSアプリ開発にチャレンジしてみてくださいね!

スポンサーリンク
ios開発uikitサムネ
Twitterもやってます!