【サンプルコード有】Swiftとは?iOSアプリで定番のプログラミング言語入門

公開日:
最終更新日:

Swift(スイフト)は、iOSアプリを開発するためにAppleが開発した言語です。2014年に公開され、2017年頃にはiOSアプリ開発で確固たる地位を築きました。そして現在はバージョンアップの結果、iOSアプリだけでなく広い開発用途で使用できるようになりました。

ここでは成長が著しいSwiftについて、特徴や開発環境の構築についてなどを解説していきます。

Swiftとはどんなプログラミング言語?

AppleOS上で動作するアプリの開発には、従来は「Objective-C(オブジェクティブシー)」や「Objective-C++(オブジェクティブシープラスプラス)」、C言語が使用されていました。それらの言語と共存しつつ、よりインタラクティブにアプリを開発することを目的にAppleが開発した言語がSwiftです。

コンパイル型の言語で、XcodeのPlaygrounds上やターミナルでインタラクティブにデバッグが可能といった特徴があります。この言語で開発可能なものは多く、主にiOSアプリやMacアプリですがwatchOS、tvOSのほかに、WindowsアプリやWebアプリも開発できます。

従来使用されていたObjective-Cは、その名の通りオブジェクト指向が付与されたC言語です。そのためプログラミング初心者にとっては習得が難しいと言われており、結果的にmacOS用アプリの普及などを妨げる一面がありましたが、Swiftではコードも精錬されて可読性が高くなり、書きやすくなっています。

新しい言語ということもあり頻繁にアップデートが行われ落ち着かない時期もありましたが、現在は頻度も減って安定感が増しました。

Swiftの特徴 - 進化したiOSアプリのプログラミング言語

SwiftはObjective-Cと比較すると、いくつかの突出した特徴があります。

比較項目 Swift Objective-C
速度 早い
※Objective-Cの2.6倍
遅い
互換性 Objective-Cとの互換性あり Objective-Cのみ
インタラクティブモード デフォルトであり デフォルトではなし

高速な動作

Objective-Cで製作されたアプリに比べて、Swiftは高速で軽快に動作します。これは最初から意図して高速化を図った設計をしているため、処理が早く実行速度が向上しているためです。

文法もRubyPythonのようなオブジェクト指向スクリプト言語に近く、ファイル構造を整理して表記もスマートで簡潔になりました。

結果として、今まで複数のファイルを読み込んでいたObjective-Cに比べて動作性が向上しています。

Objective-Cとの互換性

既存のObjective-Cと共存し、互換性があるように設計されています。そのため、Swiftがまだ強いとは言えない部分はObjective-Cで、それ以外はSwiftで開発することもできます。また、Objective-Cで記述されている既存のアプリとの連携も可能です。

インタラクティブに使える

PlaygroundやREPL(リプル:Read-Eval-Print-Loopの略)などの対話型実行環境が使え、インタラクティブな開発が行えます。プログラムを書き終えた後コンパイルして結果を確認するのではなく、画面で1行ずつ実行しながら確認することが可能なため非常に分かりやすく、Swiftの大きな特徴の一つになっています。

Swiftの開発環境について

SwiftはmacOSまたはLinuxで開発環境を構築します。

特にmacOS上で使用することが多いと想定し、今回はmacOSでの開発環境の構築を解説します。

必要になるものは次の通りです。

Apple ID
Appleのサービスを利用するためには必ず要求されるため、事前に用意しておきましょう。

Xcode
Appleが開発した、iOSやmacOS向けのアプリ開発用ソフトウェアです。デスクトップアプリやスマートフォンアプリを制作する際には必須になり、ファイル管理、コンパイル、ビルド、デバッグ、実機検証まで、アプリ開発の工程を一貫してサポートします。

統合開発環境(IDE)としてはとても優秀で、XcodeをインストールすることでSwiftの開発環境は自動的に整います。

Developer ID
開発したアプリをApp Store内で配布するために必須になります。

Swiftの文法

ここからはSwiftの基本的な文法について解説していきます。

変数と配列

var num:Int = 1
let str:String = "Hello World"

varを置くことで変数を宣言します。 :Intは型となるため、上記のサンプルでは Int型の変数numに1を代入しています。また、letは定数です。上記ではString型の定数 str にHello Worldの文字列を代入しています。なお、Swiftでは型推論(自動で型を指定してくれる機能)が効きますので、次のように略して表記することも可能です。

var num = 1
let str = "Hello World"

また配列は次のようにします。

var arr:[Int] = [1,2,3,4,5]

関数の定義と使い方

次は関数の定義と使い方です。

func testFunc(testData :String) -> String{
  return testData + " !!!"
}

このように、func 関数名(引数)で宣言し、アロー(->)で、つなげて戻り値および、処理を記述します。上記の場合、 testFuncという関数で引数はString型のtestData、戻り値はString型で、引数で渡した文字列に!!!をつけて返す処理になります。

この実行する際は次のようになります。

print(testFunc(testData: "Hello World"))

引数はラベル(今回の場合testData)をつけて渡します。

クラスの定義と使い方

最後にクラスの定義と使い方を紹介します。

class testClass {
  var testProp:String = "Hello World"
  func testFunc()->String{
    return testProp + " !!!"
  }
}

クラスは class クラス名 {} で定義し、メソッド(クラス内の関数)や、プロパティ (クラス内の変数)は、ここまで紹介した変数や関数の定義そのままです。上記の場合、testClassクラスを定義し、String型を返すメソッドとしてtestFunc、String型のプロパティ としてtestPropを設定しています。

なお、クラスおよびメソッドは次のように宣言、実行が可能です。

var TEST = testClass()
print(TEST.testFunc())

Swiftのサンプルコードで学んでみよう

ここからはSwiftの基本的な文法で書かれたサンプルコードを使って解説していきます。

Xcode+Playgroundでサンプルコードを実行する

Playgroundは書いたコードがそのまま実行されます。初めてプログラミングに触れてコードを書き始めた初心者でも、すぐに結果が分かるため「Playground(遊び場)」と名付けられています。

iOSアプリ Playgroundのサンプルで遊ぶ①

Swift Playgroundsを使って、サンプルコードを実行してみましょう。

アプリをインストールし、下記のコードを実行します。

まずはプログラミング言語の最初に触れる定番のHello World!です。

サンプルコード①

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport

// ここの部分は自動で作成されます
class MyViewController : UIViewController {
  override func loadView() {
    let view = UIView()
    // 画面の背景色(白)
    view.backgroundColor = .white
    // ラベルの追加
    let label = UILabel()
    // ラベルの位置、幅、高さ
    label.frame = CGRect(x: 0, y: 100, width: 380, height: 50)
    // ラベル内の文字
    label.text = "Hello World!"
    // ラベルのテキスト色白(青)
    label.textColor = .blue
    // ラベルの背景色(黄色)
    label.backgroundColor = .yellow
    // ラベル内の文字の位置(中央揃え)
    label.textAlignment = NSTextAlignment.center
     // ラベルを画面に追加
    view.addSubview(label)
    // 画面の表示
    self.view = view
  }
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

このソースコードの処理は、背景(view.backgroundColor)が白の画面を作成し、「Hello World!」というテキストを設定(label.text)、文字色(label.textColor)を青にし、位置(label.textAlignment)を中央揃えにして表示するというものになります。

iOSアプリ Playgroundのサンプルで遊ぶ②

次に、サンプルコード①にクリックイベントとボタンを追加します。

button.addTargetでボタンをクリックした時のアクションを指定します。今回はonClick メソッドを呼び出すよう設定しました。

さらにアラート画面にボタンを追加し、ボタンをクリックすると加えてメッセージが表示されるようになっています。CSSに似ているという人もいる通り、スクリプト言語に近い記述形式を持っているのが特徴です。

サンプルコード②

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport
// ここの部分は自動で作成されます
class MyViewController : UIViewController {
  override func loadView() {
    let view = UIView()
    // 画面の背景色(白)
    view.backgroundColor = .white
    // ラベルの追加
    let label = UILabel()
    // ラベルの位置、幅、高さ
    label.frame = CGRect(x: 0, y: 100, width: 380, height: 50)
    // ラベル内の文字
    label.text = "Hello World!"
    // ラベルのテキスト色白(青)
    label.textColor = .blue
    // ラベルの背景色(黄色)
    label.backgroundColor = .yellow
    // ラベル内の文字の位置(中央揃え)
    label.textAlignment = NSTextAlignment.center
    // ラベルを画面に追加
    view.addSubview(label)

    // ボタンの追加(位置、幅、高さも合わせて指定)
    let button = UIButton(frame: CGRect(x: 100, y: 200, width:180, height: 50))
    // ボタン内の文字
    button.setTitle("Test", for: UIControl.State.normal);
    // ボタンが押された際に onClick メソッドを呼び出すよう設定
    button.addTarget(self, action: #selector(self.onClick(_:)), for: .touchUpInside)
    // ボタンの背景色(垢)
    button.backgroundColor = .red
    // ボタンを画面に追加
    view.addSubview(button)
    // 画面の表示
    self.view = view
 }

  // アラート表示
  @objc func onClick(_ sender: AnyObject){
    // アラートの作成
    let alert: UIAlertController = UIAlertController(title: "メッセージ", message: "ボタンが押されました", preferredStyle: .alert)
    // アラート内のOKボタンの作成
    let okAction = UIAlertAction(title: "OK", style: .default) { action in
     //OKを押した時のログメッセージ
     print("OKが押されました")
    }
    // アラートにボタンを追加
    alert.addAction(okAction)
    // アラートを画面に表示
    self.present(alert, animated: true, completion: nil)
  }
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

このソースコードで追加した処理は次の通りです。

まず、ボタン(UIButton)を追加し、ボタンの文字(button.setTitle)、ボタンを押した時の挙動(button.addTarget)およびボタンの色(button.backgroundColor)を設定しています。

次に、ボタンを押すとアラートを表示する関数(func onClick)を作ります。

関数の中では、表示されるアラートを作成(UIAlertController)し、アラート画面を閉じるためのボタン(UIAlertAction)を設定しています。

以上、簡単なSwiftの記述をご紹介しました。Swiftはコードの可読性が高いため、プログラミング経験のない人でも何が書いてあるのかなんとなく感覚で分かるという、習得時のハードルの低さがあります。この可読性の高さとコードのシンプルさこそ、SwiftがObjective-Cよりも習得が容易でパワフルと言われる最大の特徴でもあります。

Swiftの将来性

Swiftは、Apple社の製品でも積極的に利用されていることや、JavaScriptなどのライブラリを使用して作成するよりもアプリのパフォーマンスが高いことなどから、今後も成長していくと考えられます。そのためSwiftエンジニアの需要も高く、将来性のある言語と言えます。

以前からiOSアプリを作る際に使われていたObjective-Cと比較すると格段に使い勝手が良く、PlaygroundやREPLなどの存在もあって、より気軽に試すことができるため、特に、iOSのアプリ開発の現場では利用頻度が高くなるでしょう。アプリ開発をしていきたいと考えている人にとってSwiftは優秀な選択肢となります。

Swiftの知識を活かして派遣として働く

SwiftはiPad用アプリでも学習できるため、個人的な趣味としてプログラミングを習得している人も少なくありません。趣味で作成したアプリをAppStoreで公開して収益を得ているユーザーもおり、実務経験はないがSwiftを使ってアプリ開発ができるという人が存在しています。

しかし、実際にSwiftの技術と知識を活かして就職しようとすると、実務経験がネックになることもあります。そこでおすすめなのが、IT・エンジニアに特化したModisの派遣です。Modisでは実務経験がないだけで知識はある人にも派遣として紹介可能なお仕事が多数あります。

SwiftでiOSアプリ開発を始めてみませんか?

Swiftは登場してまだ日の浅い言語であり、市場の需要に対し、エンジニアの供給が追いついていません。今後、AppleはiOSアプリの開発はSwiftにシフトしていくと考えられており、定番の言語となっていくことは間違いないでしょう。

iOSアプリ以外にもAppleウォッチやAppleTV用のアプリ、Windowsアプリと幅広く開発ができ、MacとXcodeがあればすぐ試せるという強みがあります。
また、MacのパソコンはないけれどiPadなら持っているという人でもプログラミングを学べる敷居の低さに加え、日本語で得ることができる情報も多いので、是非、試してみてはいかがでしょうか。

Swiftに限らず幅広くエンジニアの経験を積みたい人におすすめなのがIT・エンジニアに特化したModisです。Modisでは、「資格取得応援制度」をご用意。IT・エンジニア系の対象資格を取得された方にお祝い金を支給しています。さらに、未経験の方でもIT・エンジニア職種にキャリアチェンジしたい人を就業までサポートするプログラミングスクール「Modis Engineer Academy」を、無料で提供。

Modisは、Swiftのみならず様々なスキルを学びスキルアップする皆様を応援します。
(2020年9月現在)

Modisで探す、エンジニアの仕事

IT・エンジニア派遣に特化したModisでは、スキルを活かせる求人・未経験からOKの求人を多数ご紹介しています。