Swift入門


 Swift(スウィフト)は、アップルのiOSおよびmacOS、Linuxで利用出来るプログラミング言語です。Worldwide Developers Conference (WWDC) 2014で発表された。アップル製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存することが意図されています。

 SwiftはiOSなどで使えるアプリケーションを開発するために開発された言語で、Objective-Cに代わる言語として作られているため、基本的にそれに比べてSwiftは扱いやすくなっています。具体的には、簡単で直感的にコードが書ける、Objective-Cよりも高速である、などObjective-Cを意識して作られている分、それよりも優れた言語になっています。
 Swiftは、マルチパラダイムのコンパイラプログラミング言語ですが、XcodeのPlaygroundsの上やターミナルでインタラクティブにデバッグする事が可能です。また、スクリプト言語に近い感覚で設計ができ、非常に簡単にアプリケーションを作ることができる言語です。基本的にMacOSでの開発を想定されている言語ですが、Linux(Ubuntu)でも開発が可能です。  実はXcodeには、iPad版のSwift Playgroundsの元になった機能「Playground」が含まれています。使い勝手や機能がまったく同じというわけではありませんが、少なくともSwiftの学習を始めるにあたって、Xcode版のPlaygraoundを活用することが簡単です。このXcode版のPlaygroundを使って今からSwiftのプログラミング学習を始めて見ましょう。

 Xcode版のPlaygroundを使うには、言うまでもないことですが、まずXcodeをインストールする必要があります。Xcodeは2012年代以降のMacにはすでにインストールされています。バージョン9.2以降のXcodeをインストールするためには、OS 10.12をインストールしたMacが望ましいです。ただし、Xcodeのバージョンがあまり古いと、プログラミング言語Swiftのバージョンも古く、現在のSwiftとは書き方や動作が異なることがあります。さらに古いXcodeでは、Playground自体が使えません。

 最新のMac OS10.14ではXcode 10がインストールできます。Xcode 10にはSwift 4.2が含まれています。Xcode9.2以降の新しいXcodeを用意してください。できるなら、2017年にリリースされたXcode 9.4以降が動く環境を整えてください。

関連記事
OpenGLのページ
WebGLのページ
Swiftのページ
Metalのページ
GitHub repositories

Last updated: 2019.2.1



****************************************************
Swiftの使い方
****************************************************



 Xcodeは、Mac App Storeからダウンロードしてインストールすることができます。ダウンロードサイズからして約10GBと大きいので、インストールして使用するためには、だいたい20GB程度は起動ディスクに余裕があるMacが必要となります。Appleの公式websiteからダウンロードして、インストールしてください。

Xcode10_1.png

インストールしたXcodeは、通常のアプリと同様にLaunchpadから起動できます。Xcodeのメニューバーから'File' -> 'New' -> 'Playground'と行って「Get started with a Playground」を起動しましょう。
playground_02.png

'choose atemplate for your new playgroud'のパネルで'macOS' -> 'Blank'と選択します。
playground_03.png

 その後、名前とプラットフォームを設定したPlaygroundを保存する場所を聞いてくるので、適当な場所を指定して「Create」ボタンをクリックします。保存場所は、これから作るPlaygroundはみんなそこに保存するようにすると良いでしょう。

 これでXcode版Playgroundのウィンドウが開きます。このウィンドウの左側には、MyPlaygroundという表示の下に、SourcesとResourcesという名称のフォルダー名が表示されています。そして中央にはSourceの内容が以下の通り表示されています。

//: Playground - noun: a place where people can play

import Cocoa

var str = "Hello, playground"


この後に、コードを書き入れて行きましょう。いきなりですが、"https://ja.wikipedia.org/wiki/Swift"から引用した以下のコードをコピペしてください。

/*
* コメントはCスタイルの複数行コメントと…
*/
// C++スタイルの一行コメントの双方をサポートしている

// var name:Type = value でType型の変数nameを宣言し、valueで初期化する
var explicitDouble:Double = 70 // 70.0
	
/// 型が省略された場合は、型推論により初期値の型が適用される
var implicitInteger = 70    // Int
var implicitDouble = 70.0   // Double
	
// let name:Type = value でType型の定数nameにvalueを設定する。
// 型推論可能な場合、型の表記は省略できる。
let theAnswer = 42
	
// 識別子にはたいていのUnicode文字を用いることができる。
let リンゴの数 = 3
let みかんの数 = 5
	
// 文字列リテラル"..."の中にある\(expr)には、式exprの内容が展開される
let リンゴ説明 = "私は\(リンゴの数)個のリンゴを持っている。"  // ”私は3個のリンゴを持っている。"
let 果物説明 = "私は\(リンゴの数 + みかんの数)個の果物を持っている。" //"私は8個の果物を持っている。"

// Swiftでは辞書も組み込みでサポートされている。
// 以下は Dictionary 型の定数辞書の定義の一例である。
let people = ["Anna": 67, "Bety": 8, "Jack": 33, "Sam": 25]
	
// 辞書の内容の列挙は for (key, value) in dict { ... }
for (name, age) in people {
print("\(name) is \(age) years old.")
}
	
// メソッドや関数は "func"文法を使って宣言する。
// パラメータ名の付け方に注意。-> で戻り値の型を宣言する
func sayHello(personName: String) -> String {
let greeting = "こんにちは、" + personName + "さん"
return greeting
}
// "こんにちは、Johnさん"を出力
print(sayHello(personName:"John"))
	

このコードで大まかな文法がわかります。Xcodeの画面の右上に下のような表示ありますので、
swift_1.jpg

中央部分の表示をクリックすると、下側に「Debugger Area」がせり出します。デバック時などに使えます。下側のウインドウの▶️ボタンをクリックして、これをコンパイルすると、そのウインドウに

	Jack is 33 years old.
	Sam is 25 years old.
	Bety is 8 years old.
	Anna is 67 years old.
	こんにちは、Johnさん
	

と表示されます。このPlaygroundファイルを"save"して、Xcodeを終了します。

 Commandline でSwiftを利用するときは、ターミナルから"$ swift"と打つと、エラーがなければ、

$ swift
Welcome to Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1). 
Type :help for assistance.
  1> 


と返ってきます。プロンプト”1>"の後にコマンド文を入力します。Swiftの公式ページのチュートリアルに従って、
	
var myVariable = 42
myVariable = 50
let myConstant = 42


と打ってみましょう。"var myVariable = 42"はmyVariableという名称の変数を定義して、その値を42にすることです。その後で、値を50に変更しています。 以下のような表示が出ます。
myVariable: Int = 50
myConstant: Int = 42
  4>  

プログラムの終了は":eixt"と打ちます。"Int"は値が整数になっていることを意味します。


****************************************************
iOS用のアプリの作成
****************************************************


Xcode を起動します。メニューから、「File」「New」「Create a new Xcode project…」を選択する。すると、choose a template の選択ウィンドウが出てきます。
「iOS」「Single View App
を選び「Next」とします。最初は 「Single View Application」で始めましょう。
swift_2.jpg

「Product Name」にプロジェクトの名前を入れて、Organization Identifier に登録したApple ID名を入れます。「Language」はSwiftを選択します。「Next」とします。プロジェクトの保存先を聞いてきますので適当な場所を指定します。「create」をクリックします。

 Xcode が立ち上がりいよいよアプリ作成の準備ができました。表示画面は以下のように主に5つのエリアに分かれています。「display」にiphone名を入れ、「team」に自分のIDを選択します。
Toolbar
Navigator area
Editor area
Utility area
Debug area

swift_3.jpg

コードは最初のうちは主に、ViewController.swift に記述します。画面レイアウトはMain.storyboardを使います。

 これで、実際にアプリを作成できる段階になります。Xcode の左上にある三角印とその右側の iOS Simulator を見てください。Simulator を自分が所有するiPhoneに、例えば、「iPhone 8」 を選択して三角印をクリックします。Build Succeededと表示されて、Simulatorのiconがdockに表示されるので、これをクリックします。すると、何も描かれていないiPhone 8の画面がウインドウに表示されます。これは、空のアプリを作成したことになります。

 簡単なアプリを作成します。画面上にはボタンが1つ配置され、タップするとテキストフィールドに文字列が出力されるアプリを想定してください。鹿賀さんのWebサイトを参考にしました。XcodeのバージョンがXcode8準拠なので注意してください。

 まずは、「storyboard」で画面を作成します。storyboardとは、Xcodeでアプリの画面を開発するためのファイルを意味します。1画面は「View Controller」という単位で区切られ、画面が増えるごとにView Controllerが増えていきます。
swift_4.jpg

「Mainstoryboard」をクリックして開いてください。Webページでボタンやテキストフィールドを表示するときには、button要素や「type="text"」のinput要素を使用します。XcodeによるiOSアプリ開発では、画面右側にあるエリア(オブジェクトライブラリ)から必要な要素をドラッグ&ドロップすることで、要素を配置します。Xcode10から、libraryは右上のiconに移動しました。
swift_5.jpg

ボタン用の[Button]オブジェクト、テキストフィールド用の[Text Field]オブジェクトをそれぞれ配置してみましょう。右上に配置されたライブラリ(コインマーク)、これをクリックして、検索します。buttonと入力して、表示された「Button ..」をiPhone画面にドラッグ&ドロップします。次に、textと入力して、「Text ..」をドラッグ&ドロップします。ボタンとテキストの配置は好きなようにします。

 アプリの画面ができたので、プログラムで動きを実装しましょう。WebGLの場合は、HTML・CSSで作成した要素に対してJavaScriptで通信をしたり、アニメーションを実装したりします。iOSアプリでは、Swiftを使ってプログラムを作ります。右上の二つの円環マークをクリックすると、StroryboardのiPhine画面とViewController.swiftのエディターが並んで表示されます。

 次のようにして画面(View Controller)とプログラム(UIViewController.swift)を紐付けます。
① テキストフィールド上で右クリックしながら、ViewController.swiftまで線を引っ張ります(ドラッグ&ドロップ)
② Connection(接続方法)を、[Outlet]に設定します
③ Nameの箇所に、テキストフィールドの名前を入れます(例として、myTextFieldと設定)
これで、Swift上から画面のテキストフィールドをmyTextFieldという名前で操作できるようになりました。このような接続方法をIBOutletといいます。

 次に、ボタンタップ時のイベントを設定します (IBAction)。
① ボタン上で[control]キーを押しながらViewController.swiftまで線を引っ張る
② [Connection]を[Action]に設定する
③ [Name]に、処理の名前を入力(例として、onButtonTapと設定する)
完了すると、onButtonTapという名前の関数ができます。ボタンをタップした際に実行される関数です。このような接続方法をIBActionといいます。

 最後に、追加の部分を挿入して、ViewController.swiftを以下のように修正します。

//
//  ViewController.swift
//  TestApp
//
//  Created by 増山幸一 on 2019/02/06.
//  Copyright © 2019 増山幸一. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

@IBAction func onButtonTap(_ sender: Any) {
myTextField.text = "タップされました" // 追加の部分
}
@IBOutlet weak var myTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

}

 画面の作成、プログラムの作成が完了したので、実際にアプリとして動かしてみましょう。アプリの動作を確認するには、iOSシミュレーターを使う方法と、iOS実機端末を使う方法があります。iOSシミュレーターとは、macOS上でiOSの動作を確認できるツールです。処理が重く画面のアニメーションがやや遅い等の制限はありますが、コンテンツの挙動をすばやく確認したい場合に便利です。iOSシミュレーターで確認してみましょう。画面上部のツールバーより、シミュレートしたい端末を選択、iPhone 8を選択し、Xcode の左上にある三角印をクリックすると、iOSシミュレーターが起動します。

Xcodeの使い方, iOSアプリ作成の関するwebsiteは多数あります。例えば、以下のWebsiteも初心者には参考になります。

************* 続く ****************


トップ・ページに行く