Swiftとは?Swift UIとの違いと特徴やメリット
この記事からわかること
- Swiftとは?
- Swiftの特徴とメリット、使用方法
- SwiftとSwiftUIとの違い
- ターミナルから操作する方法
- Xcodeから操作する方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
iOSアプリ開発ができるプログラミング言語Swiftについて、自分の備忘録がてら特徴やメリット、SwiftUIとの違いなどをまとめていきたいと思います。
認識違いや語弊がありましたら教えていただだけると嬉しいです。
Swiftとは?
Swift(スウィフト)とはApple社が2014年にWWDCで公開した言語でiOSやMac OS Xでソフトウェア(アプリケーション)を開発するためのオープンソース(コードを公開している)なプログラミング言語のこと。
WWDCとはApple Worldwide Developers Conference(アップル ワールドワイド デベロッパーズ カンファレンス)の略称で毎年夏ごろに開催される有料の開発者向けイベントのこと。
言語名であるSwiftの意味は「迅速」や「敏捷な」、生き物では「アマツバメ」を指す英単語となっている。
ポイント
- コンパイラ言語(静的型付き言語)
- オブジェクト指向型プログラミング
- OSS(オープンソースソフトウェア)
- 2022年7月現在Swift5.6が最新バージョン
- 拡張子は「.swift」
Swiftはコンパイラ型の言語であり、ソースコードをまとめて読み込み、コンパイル(変換)して処理をしていく。対照的なインタプリタ型言語(1行ずつ処理をしていく)とは違い高速で、効率的な言語。
またプログラミングパラダイム(プログラミングの手法)としてオブジェクト指向型プログラミングが謳われており、データ構造をオブジェクトとして捉えることでデータの再利用性やメンテナンス性、スコープの制御が行いやすくなっている。
Swiftの特徴
Appleが公式に発表しているSwiftの特徴は「モダン・安全・高速・インタラクティブ」の4つ。
モダン
クロージャ、タプル、ジェネリクス、型推論など可読性が高く、記述しやすい機能を最新の言語に倣って搭載
安全
バグが発生しにくい言語仕様
- 静的型チェック
- 変数の初期化の強制
- nil値
- 暗黙的型変換なし
- メモリ自動管理
- 数値型のオーバーフロー検査
高速
以前Appleの開発に使用されていたObjective-Cとの互換性もありながら、より記述が簡単に、より迅速なパフォーマンスを実現。Object-Cよりも最大2.6倍、Pythonよりも最大8.4倍もの高速処理。
インタラクティブ
コンパイラ言語ながら、ターミナルから操作可能な対話実行環境(REPL)やXcodeのPlaygroundなどで簡単に操作やデバッグが可能
ターミナルからの操作方法
Swiftを実際に使用するにはターミナルを使用する方法とXcodeと呼ばれるSwiftのIDE:統合開発環境を使用する方法があります。
ターミナルからはswift
と入力すると実行。ターミナルではSwiftをインタラクティブ(対話的)に操作することができる。つまり入力したコードの結果が即座に返される。
$ swift
Welcome to Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8).
Type :help for assistance.
1> print("Hello!")
Hello!
終了するには:
の後にexit
を記述して実行。
1> print("Hello!")
Hello!
2> :exit
ターミナルからSwiftのバージョンは以下のコードで確認できる。
$ swift --version
Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8)
Target: arm64-apple-darwin21.4.0
Xcodeからの操作方法
Xcodeを使用するにはインストールが必要。エディターとしてだけでなく、デバッガ、GUIデザイン、定義元の参照、実機へのビルドなど開発する上で欠かせない機能が詰め込まれている。
またインタラクティブにSwiftを扱えるPlaygroundと呼ばれる機能があり、変数の変化や挙動を簡単に確認やデバッグすることができる。
SwiftとSwiftUIの違い
SwiftUIとはSwiftで使用できるUI(ユーザーインターフェイス:User Interface)フレームワークのこと。SwiftUIを用いることでユーザーの目に直接触れる部分を直感的に構築できるようになり、開発速度や学習コストを比較的抑えてアプリ開発に臨むことができるようになる。
SwiftとSwiftUIとの違い
- Swift :プログラミング言語
- SwiftUI:UIフレームワーク
UIフレームワークにはUIKitと呼ばれるものもある。こちらは Swift UIより前から存在しており、実装できる機能が豊富であるため今でも開発に使われている。
Swift UIとUIKitの違い
そもそもプログラミングには「Declarative Programming(宣言型プログラミング)」と「Imperative Programming(命令型プログラミング)」がある。
- 宣言型プログラミング:何を処理するかを記述
- 命令型プログラミング:どのように処理するか記述
「What(何を)」と「How(どのように)」で区別することが多いですがSwift UIとUIKitの2つの違いとして見ていきます。
例えばSwift UIでは「こんなボタンを作りたい」と書くだけでボタンが出来上がる。
import SwiftUI
struct TestView: View {
@State var check = true
var body: some View {
Button(action: {
check.toggle()
}){
Text(check ? "ON" : "OFF")
}
}
}
一方UIKitでは「ボタンを構築して、位置を決めて、タイトルを決めて、アクションを定義して紐づけて...」と1行ずつ処理していく形になる。
import UIKit
class ViewController: UIViewController {
let button = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
let screenWidth = self.view.frame.width
let screenHeight = self.view.frame.height
// 位置とサイズ
button.frame = CGRect(x:screenWidth/4, y:screenHeight/2,
width:screenWidth/2, height:60)
// タイトル
button.setTitle("ボタン", for:UIControl.State.normal)
// タップされたときの処理
button.addTarget(self,
action: #selector(ViewController.buttonTapped(sender:)),
for: .touchUpInside)
// Viewにボタンを追加
self.view.addSubview(button)
}
@objc func buttonTapped(sender : Any) {
print("ボタンをタップされたよ")
}
}
Swift UIでは宣言的にコードを記述できることによって学習コストを抑えと実装スピードをあげることができるようになっている。
プレビュー機能
SwiftUIではリアルタイムでのプレビュー機能があり、コードを変更すると即座にプレビューが更新され、スムーズな開発ができるようになっている。しかしデータベースとのやり取りなどはSwiftUIの機能ではまた実装できないよう。
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}
// プレビューを構築
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
私がSwift UI学習に使用した参考書