Swiftとは?Swift UIとの違いと特徴やメリット

この記事からわかること

  • Swiftとは?
  • Swiftの特徴メリット使用方法
  • SwiftとSwiftUIとの違い
  • ターミナルから操作する方法
  • Xcodeから操作する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

iOSアプリ開発ができるプログラミング言語Swiftについて、自分の備忘録がてら特徴やメリット、SwiftUIとの違いなどをまとめていきたいと思います。

認識違いや語弊がありましたら教えていただだけると嬉しいです。

Swift:Apple公式ページ

Swiftとは?

Swift(スウィフト)とはApple社が2014年にWWDCで公開した言語でiOSやMac OS Xでソフトウェア(アプリケーション)を開発するためのオープンソース(コードを公開している)なプログラミング言語のこと。

WWDCとはApple Worldwide Developers Conference(アップル ワールドワイド デベロッパーズ カンファレンス)の略称で毎年夏ごろに開催される有料の開発者向けイベントのこと。

言語名であるSwiftの意味は「迅速」や「敏捷な」、生き物では「アマツバメ」を指す英単語となっている。

ポイント

Swiftはコンパイラ型の言語であり、ソースコードをまとめて読み込み、コンパイル(変換)して処理をしていく。対照的なインタプリタ型言語(1行ずつ処理をしていく)とは違い高速で、効率的な言語。

またプログラミングパラダイム(プログラミングの手法)としてオブジェクト指向型プログラミングが謳われており、データ構造をオブジェクトとして捉えることでデータの再利用性やメンテナンス性、スコープの制御が行いやすくなっている。

Swiftの特徴

Appleが公式に発表しているSwiftの特徴は「モダン・安全・高速・インタラクティブ」の4つ。

モダン

クロージャ、タプル、ジェネリクス、型推論など可読性が高く、記述しやすい機能を最新の言語に倣って搭載

安全

バグが発生しにくい言語仕様

高速

以前Appleの開発に使用されていたObjective-Cとの互換性もありながら、より記述が簡単に、より迅速なパフォーマンスを実現。Object-Cよりも最大2.6倍、Pythonよりも最大8.4倍もの高速処理。

インタラクティブ

コンパイラ言語ながら、ターミナルから操作可能な対話実行環境(REPL)やXcodeのPlaygroundなどで簡単に操作やデバッグが可能

ターミナルからの操作方法

macのコマンドラインアプリ「ターミナル」

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からの操作方法

App storeの中のxcode

Xcodeを使用するにはインストールが必要。エディターとしてだけでなく、デバッガ、GUIデザイン、定義元の参照、実機へのビルドなど開発する上で欠かせない機能が詰め込まれている。

またインタラクティブにSwiftを扱えるPlaygroundと呼ばれる機能があり、変数の変化や挙動を簡単に確認やデバッグすることができる。

SwiftとSwiftUIの違い

SwiftUIとはSwiftで使用できるUI(ユーザーインターフェイス:User Interface)フレームワークのこと。SwiftUIを用いることでユーザーの目に直接触れる部分を直感的に構築できるようになり、開発速度や学習コストを比較的抑えてアプリ開発に臨むことができるようになる。

SwiftとSwiftUIとの違い

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学習に使用した参考書

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index