Swiftは、iPhoneやMac向けアプリ開発に欠かせないプログラミング言語です。
しかし、「Swiftって実際どんな言語なの?」と、詳しく知らない方も多いのではないでしょうか。
そこで本記事では、Swift入門者に向けて以下の内容を分かりやすく解説します!
- Swiftとは
- Objective-Cとの違い
- Swiftの特徴とメリット
- Swiftでできること
- Swiftの基本構文
「Swiftについてもっと知りたい」「Swiftを使って実際にアプリを作りたい」という方は、ぜひ参考にしてみてくださいね。
Swiftとは
「Swift(スウィフト)」とは、Apple社が2014年に発表したプログラミング言語です。
iPhoneやiPadでお馴染みのApple社が開発したこともあり、SwiftはiOSやmacOSに特化したアプリを誰でも効率よく開発するために設計されています。
Swiftが登場する前は、iOSやmacOSのアプリ開発では「Objective-C(オブジェクティブ シー)」というプログラミング言語が使われていました。
しかし、Objective-Cはコードが複雑で、初心者には習得が難しいという課題があったのです。
そこで、Objective-Cの後継言語として、より安全でパフォーマンスに優れた言語を目標に、Swiftが作られました。
現在、Apple製品向けのアプリ開発現場ではSwiftが主流となっています。
SwiftとObjective-Cとの違い
すでに説明した通り、SwiftもObjective-CもApple製品向けのアプリ開発に使われる言語ですが、その中身にはいくつか違いがあります。
SwiftとObjective-Cの違いを表で確認していきましょう!
| 項目 | Swift | Objective-C |
|---|---|---|
| 文法 | モダンでシンプル | C言語ベースで複雑 |
| 処理スピード | 非常に速い | 速い |
| 安全性 | 非常に高い (エラーが起きにくい) | 低め (不具合に気づきにくい) |
| 学習難易度 | 初心者でも学びやすい | 専門知識が必要で難しい |
ちなみにSwiftは、Objective-C以外にも、C言語、Ruby、Python、Javaなど、さまざまな言語の良いところを少しずつ取り入れて設計されています。
そのため、プログラミング入門者でも、直感的にコードを書いていけるのが魅力です!
Swiftの特徴とメリット
ここからは、Swiftの主な特徴とメリットを6つ紹介します。
- モダンなプログラミング
- 安全性が重視されている
- 他の言語と相互性がある
- 迅速で高いパフォーマンスを実現できる
- Apple製品すべてに共通で使える
- プログラミング入門者でも学びやすい
1つずつ見ていきましょう。
モダンなプログラミング
Swiftの特徴の1つが、「モダン(現代的)」な設計です。
プログラミングにおける「モダン」とは、「コードが読みやすく、書きやすく、安全で高速」なことを指します。
Swiftは、RubyやPythonといった「スクリプト言語」のように直感的にコードを書けるのが特徴です。
それでいて、コンピュータが理解しやすいように高速に処理される仕組みも備えています。
このモダンな設計により、開発者は複雑なコードに悩まされることなく、アプリの開発効率を上げることが可能です!
安全性が重視されている
Swiftにはプログラミングのミスを防ぐための仕組みが多く備わっており、安全性を重視した設計になっています。
具体的には、以下のような仕組みがバグを防いでくれます。
- ミスの起きにくい書き方
- 「一度決めたら変えられない値(定数)」を積極的に使うルールになっており、プログラムの途中でデータが勝手に書き換わってしまうトラブルを減らす。
- アプリが突然落ちるのを防ぐ(オプショナル型)
- 「データが空(nil)になる可能性がある変数(オプショナル型)」と「絶対にデータがある変数」を明確に区別する。これにより、空のデータに無理やりアクセスしてアプリが強制終了(クラッシュ)するのを防ぐ。
- コンピュータによる厳格な型チェック
- 「型推論」という機能でコンピュータがデータの種類を自動で判別し、型が違うデータ同士の計算などを厳しくチェックする。これにより、間違ったデータ操作によるエラーを未然に防ぐ。
- メモリ管理の自動化(ARC)
- プログラムが使い終わったメモリを自動で掃除する。これにより「メモリリーク」のリスクを減らし、アプリの動作を安定させる。
単語の意味
メモリリーク:使い終わったデータがメモリに残ったままになり、スマホやPCの動作が重くなったり不安定になったりする現象。
動作確認をリアルタイムで行なえる
Swiftには、書いたコードの結果をその場ですぐに確認できる仕組みが備わっています。
- 練習に最適な「Playgrounds」
- 「Swift Playgrounds」というツールを使えば、アプリを完成させる前でも、書いたコードがどう動くかをリアルタイムでチェックできる。
- パズルを解くような感覚で、文法の練習やロジックの確認ができるため、Swift入門者の学習に最適。
- 画面の見た目をすぐ確認できる「プレビュー機能」
- Swiftのアプリ開発には、コードを書き換えた瞬間に「ボタンの色」や「文字の大きさ」などのデザイン変更が画面に反映される機能(SwiftUI Preview)がある。
- アプリを起動し直す必要がないため、デザインの微調整がとてもスムーズ。
リアルタイムで動作や見た目の確認ができるため、修正箇所を見つけやすくなります!
その結果、開発時間を短縮でき、実際にアプリやシステムを動かすときのエラーを減らせるでしょう。
他の言語と相互性がある
Swiftは、これまでiOSやMac向けのアプリ開発に使われてきたObjective-Cをはじめ、Objective-C++やC言語を一緒に混ぜて使うことが可能です。
これにより、以下のメリットが得られます。
- 新旧のコードを組み合わせられる
- 既存のアプリにある古いコード(Objective-C)を残したまま、新しく追加する機能だけをSwiftで書く、といった柔軟な開発が可能
- スムーズなリニューアルが可能
- 一気にすべてを書き換える必要がないため、大きなアプリの場合は最新のSwiftへと少しずつ移行していける
古いアプリも継続的なリニューアルにより、少しずつSwiftへの置き換えが進んでいるケースは珍しくありません。
これまでの開発リソースを無駄にせず、最新の技術を取り入れられるSwiftの互換性の高さは、開発現場にとって大きなメリットと言えるでしょう!
迅速で高いパフォーマンスを実現できる
「Swift」という名前の由来は「アマツバメ」という鳥からきており、「速い」「すばやい」「迅速な」といった意味がありますが、その名の通り、スピーディーな処理が可能です。
高速処理の理由は、「LLVM」というプログラミング言語をコンピュータが理解しやすい機械語に素早く変換する仕組みがあるからです。
Appleの発表によると、Objective-Cより最大2.6倍、人気のPython 2.7より最大8.4倍も速いとのこと!
また、この高いパフォーマンスのおかげで、動きの激しいゲームや最新のAR(拡張現実)アプリなども、ストレスなくパワフルに動かすことができ、デバッグ作業も楽になります。
Apple製品すべてに共通で使える
通常、開発するデバイスが変われば使う開発言語も変わることが多いですが、Apple製品の場合はSwiftひとつでOK。
iPhoneやMacはもちろん、Apple Watch、iPad、そして最新のVision Pro向けアプリまで、すべてSwiftで開発できます!
また、通常のアプリ開発ではJavaScriptやJavaなどのプログラミング言語だけでなく、HTMLやCSSも覚える必要があります。
対して、Appleが提供する無料ツール「Xcode」を活用すれば、Swiftだけでアプリ開発が完結するのです。
デザインの作成からプログラムの記述、動作確認までを「Xcode」で行えるため、学習の負担も少なく、プログラミング入門者でもスムーズに開発をスタートできるのが魅力でしょう!
Swiftはプログラミング入門者でも学びやすい
Swiftは数あるプログラミング言語の中でも、学びやすい言語です。
その理由として、主に以下の3つが挙げられます。
- 直感的なコードで読み書きしやすい
- 「Xcode」と「Swift」だけでアプリを作れる
- 充実した学習環境が用意されている
直感的なコードで読み書きしやすい
英語に近い自然な書き方ができるため、コードを見ただけで「何をしているのか」をイメージしやすいのが特徴です。
「Xcode」と「Swift」だけでアプリを作れる
複雑な設定を覚えなくても、Appleが提供する開発環境「Xcode」とSwiftを使ってアプリを開発できます。
必要な基本ツールをそろえて学習を始めやすく、実際にアプリを作りながらSwiftを身につけられる点も魅力です。
充実した学習環境が用意されている
Apple公式から、Swiftを学ぶためのさまざまな教材やツールが提供されています。
- Swift Playgrounds
- Swift Tutorials
- Swift Coding Club
このように、プログラミング入門者はもちろん、ほかの言語からSwiftへ移行する開発者にとっても学びやすい環境が整っています。
Swiftのデメリット
メリットの多いSwiftですが、いくつかデメリットもあります。Swiftを学習・利用する前に、以下の点を確認しておきましょう。
- Apple製品以外への展開には向いていない
- 言語の進化が速く、アップデートへの対応が必要
- 開発にはMacが必要になる
Apple製品以外への展開には向いていない
SwiftはApple製品向けのアプリ開発で広く利用されている一方、AndroidやWindowsなど、Apple以外のプラットフォームへの展開には向いていません。
Swiftで開発したアプリをそのままAndroidやWindows向けに利用できるわけではないため、複数のプラットフォームに対応する場合は、別の言語や開発環境が必要になることがあります。
言語の進化が速く、アップデートへの対応が必要
Swiftは継続的にアップデートされており、言語仕様や機能が変更されることがあります。
そのため、Swiftのバージョンアップによって、これまで動いていたコードに修正が必要になる場合があります。Swiftを使い続けるには、アップデートの内容を確認し、新しい仕様に対応していくことが大切です。
開発にはMacが必要になる
Swiftの主な開発環境として利用されている「Xcode」は、macOS上で動作します。そのため、Xcodeを使って本格的にSwiftのアプリ開発を行う場合は、Macが必要です。
なお、WindowsでもSwiftを利用すること自体は可能ですが、Apple向けアプリを開発する場合はXcodeが必要になるため、Macを用意するのが一般的です。
Swiftでできること
Swiftの主な用途はApple製品向けのアプリ開発です。iPhoneやiPadだけでなく、MacやApple Watch、Apple TV、Apple Vision Pro向けのアプリ開発にも利用できます。
iOS・iPadOSアプリを開発できる
Swiftは、iPhoneやiPadで動作するアプリの開発に利用されています。SNSやゲーム、業務効率化ツールなど、さまざまなジャンルのアプリを開発できます。
macOSアプリを開発できる
Swiftを使えば、Macで動作するアプリも開発できます。Apple製品向けの開発環境や技術を活用しながら、iPhoneやiPad向けのアプリと連携したサービスを作ることも可能です。
watchOSアプリを開発できる
Apple Watch向けのアプリ開発にもSwiftが使われています。
ヘルスケアや通知管理など、Apple Watch単体で利用するアプリから、iPhoneと連携して使うアプリまで、さまざまなアプリを開発できます。
tvOSアプリを開発できる
Apple TV向けのアプリもSwiftで開発できます。
動画配信などのストリーミングアプリやゲームアプリなど、大画面で楽しめるコンテンツの開発に活用されています。
visionOSアプリを開発できる
Swiftは、Appleの空間コンピュータ「Apple Vision Pro」向けのアプリ開発にも利用されています。
visionOSでは、現実空間にデジタルコンテンツを重ねたり、3D空間を活用したりするアプリを開発できます。
バックエンド(サーバーサイド)の開発にも利用できる
Swiftはアプリ開発だけでなく、専用のフレームワークを利用することで、Webサイトやアプリの裏側で動作するバックエンド(サーバーサイド)のシステム開発にも利用できます。
そのため、Swiftを活用すれば、ユーザーが操作するアプリからサーバー側のシステムまで、幅広い領域の開発に携わることが可能です。
Swiftの需要と将来性
Swiftは、今後も一定の需要が見込まれるプログラミング言語です。
その理由として、主に以下の3つが挙げられます。
- Apple製品向けアプリ開発で継続的な需要が見込まれる
- Appleによる継続的な開発・サポートが行われている
- アプリ開発以外にも活用できる
Apple製品向けアプリ開発で継続的な需要が見込まれる
Swiftは、iPhoneやiPad、Mac、Apple Watchなど、Apple製品向けのアプリ開発に幅広く利用されています。
特に日本ではiPhoneの利用率が高く、iOS向けアプリの開発需要も見込まれます。そのため、Apple製品向けのサービスやアプリが開発される限り、Swiftを扱えるエンジニアにも一定の需要が期待できます。
Appleによる継続的な開発・サポートが行われている
SwiftはAppleが開発したプログラミング言語で、現在も新しいバージョンが継続的にリリースされています。
また、AppleはSwiftに関する公式ドキュメントや学習コンテンツも提供しています。Apple製品向けアプリ開発の基盤となる言語として、今後も発展していくことが期待されます。
アプリ開発以外にも活用できる
SwiftはApple製品向けアプリの開発だけでなく、専用のフレームワークを利用することで、Webサイトやアプリのバックエンド(サーバーサイド)の開発にも活用できます。
また、WindowsやLinuxなど、macOS以外の環境でもSwiftを利用できるようになっています。
このように、SwiftはApple製品向けアプリ開発を中心としながら、活用できる領域を広げています。Apple製品の利用が続く限り、Swiftを扱えるエンジニアには今後も一定の需要が見込まれるでしょう。
Swiftの基本構文
ここからは「実際にSwiftのコードを書いてみたい!」という方に向けて、入門者が覚えておきたいSwiftの基本構文を紹介します。
- 変数と定数宣言
- 型推論
- データ型
- オプショナル型
- 配列
- 条件分岐
- 繰り返し処理
- 関数
それでは1つずつ見ていきましょう。
変数と定数宣言
Swiftでは、データを入れる箱として「変数」と「定数」を使い分けます。
| 種類 | 特徴 |
|---|---|
| 変数(var) | あとから値を書き換えられる |
| 定数(let) | 一度決めた値を書き換えられない |
それぞれの基本構文と具体例を見ていきましょう。
変数は、コードの先頭に「var」を付けて定義します。
| 変数の基本構文var 変数名 = 値変数の具体例var message = “こんにちは”message = “さようなら” // 2回目以降は var なしで再代入できるこのコードでは、「message」という変数に最初は「こんにちは」を代入し、その後「さようなら」に値を変更しています。2行目では「var」を付けずに、すでに定義した変数へ新しい値を代入しています。 |
|---|
" "(ダブルクォーテーション)は、文字列を扱うときに使います。
また、//から行末まではコメントとして扱われ、プログラムの実行には影響しません。コードの補足やメモを書くときなどに利用できます。
定数は、コードの先頭に「let」を付けて定義します。
| 定数の基本構文let 定数名 = 値定数の具体例let name = “鈴木”name = “佐藤” // 値を変更できないためエラーになるこのコードでは、「name」という定数に「鈴木」を代入しています。定数は一度値を決めると、あとから別の値を再代入できません。そのため、2行目でエラーが発生します。 |
|---|
Swiftでは、あとから値を変更する必要がない場合は、let(定数)を使うことが推奨されています。意図しない値の変更を防ぎ、コードの安全性を高められるためです。
型推論
プログラミングにおける「型」とは、データの種類を表すものです。
通常は変数や定数の型を指定する必要がありますが、Swiftには「型推論」という機能があります。型推論を利用すると、型を明示的に指定しなくても、代入した値からSwiftが適切な型を判断してくれます。
| 型宣言を省略する場合(型推論)let name = “田中” // ” “で囲まれているためString型と判断var age = 25 // 整数なのでInt型と判断let pi = 3.14 // 小数なのでDouble型と判断型を明示的に指定する場合let name: String = “田中”var age: Int = 25let pi: Double = 3.14型を明示的に指定したい場合は、変数名や定数名の後ろに「: 型名」を付けます。 |
|---|
Swiftは型を厳密に扱う言語ですが、型推論を利用することで、型を毎回記述しなくても簡潔なコードを書くことができます。
データ型
Swiftでよく使われる基本的なデータ型には、主に以下の4種類があります。
| 型名 | 概要・具体例 |
|---|---|
| String(文字列) | テキストを扱う型。「” “(ダブルクォーテーション)」で囲みます。例:”こんにちは” |
| Int(整数) | 正の数・負の数を含む、端数のない整数を扱う型。例:100、-5 |
| Double / Float(浮動小数点数) | 小数を含む数値を扱う型。一般的には、より高い精度を持つDoubleがよく使われます。FloatはDoubleよりも少ないメモリで値を扱えます。例:3.14 |
| Bool(真偽値) | true(真)とfalse(偽)の2つの状態を扱う型。 |
このほかにも、Swiftには配列や辞書、オプショナル型など、さまざまな型があります。
オプショナル型
オプショナル型とは、値が存在する場合と、値が存在しない(nil)場合の両方を扱えるSwiftの仕組みです。
Swiftでは、通常の型の変数や定数にnilを代入することはできません。しかし、実際のアプリ開発では「データがまだ取得できていない」「入力されていない」など、値が存在しないケースがあります。
このような場合に使われるのがオプショナル型です。
| オプショナル型の基本構文// 正式な書き方let 定数名: Optional<型> = 値// 一般的な省略記法let 定数名: 型? = 値オプショナル型では、型の後ろに「?」を付ける書き方が一般的です。これは「シンタックスシュガー(省略記法)」と呼ばれます。オプショナル型の具体例let age: Optional = 25let age: Int? = 25どちらも、Int型の値またはnilを扱えるオプショナル型を表しています。 |
|---|
例えば、値が存在しない状態を表す場合は、次のようにnilを代入できます。
let age: Int? = nil
このように、オプショナル型を使うことで「値がある場合」と「値がない場合」の両方を安全に扱えます。
配列
Swiftの配列(Array)は、同じ型のデータを順番に並べて管理するためのものです。
配列の基本構文// 型を書く場合var 配列名: [型名] = [配列の要素]// 型を省略する場合var 配列名 = [配列の要素]配列は型推論が働くため、型を明示しなくても、[ ]で値を囲むことで作成できます。配列の具体例var fruits = [“リンゴ”, “バナナ”, “ミカン”]このコードでは、String型の要素を3つ持つ配列を作成しています。varで宣言しているため、あとから要素を追加したり、要素を書き換えたりできます。 |
|---|
配列の中身を取り出すときは、「0」から始まる番号(インデックス)を使って指定します。
上記の配列は、以下のように管理されます。
- fruits[0]
- fruits[1]
- fruits[2]
例えば、次のように記述すると「リンゴ」を取得できます。
print(fruits[0])
なお、存在しないインデックスを指定すると実行時エラーが発生し、アプリがクラッシュする場合があるため注意しましょう。
例えば、要素が3つしかない配列に対してfruits[5]と指定することはできません。
条件分岐
条件分岐とは、ある条件を満たしているかどうかによって、実行する処理を切り替える仕組みです。
Swiftの条件分岐では、主に「if文」と「switch文」が使われます。
if文は、「もし条件を満たしていれば、この処理を実行する」というように、条件に応じて処理を分ける構文です。
if文の基本構文if 条件 { 実行する処理} else if 条件 { 実行する処理} else { 実行する処理}条件がtrueの場合は、{ }内の処理を実行します。「else if」を使うと、前の条件に当てはまらなかった場合に追加の条件を指定できます。「else」を使うと、どの条件にも当てはまらなかった場合の処理を指定できます。 |
|---|
if文の具体例は以下のとおりです。
let score = 85
if score >= 90 {
print("優秀です!")
} else if score >= 70 {
print("合格です")
} else {
print("不合格です")
}
このコードは、点数(score)に応じて、表示するメッセージを3つのパターンに切り替えるものです。
- 点数が90以上なら「優秀です!」を表示
- 点数が70以上なら「合格です」を表示
- どちらの条件も満たさなければ「不合格です」を表示
上記ではscoreが85なので、「合格です」と表示されます。
switch文とは、1つの値を複数のパターンと比較して、処理を分ける構文です。
複数の条件を整理して記述したい場合に適しています。
switch文の基本構文switch 値 {case パターン1: // パターン1に一致した場合の処理case パターン2, パターン3: // パターン2または3に一致した場合の処理default: // どのパターンにも一致しなかった場合の処理}Swiftのswitch文では、すべての可能性を網羅する必要があります。caseだけですべての可能性をカバーできない場合は、defaultを使って、それ以外の場合の処理を指定します。 |
|---|
switch文の具体例は以下のとおりです。
let rank = "B"
switch rank {
case "A":
print("素晴らしい!")
case "B":
print("良いですね")
case "C":
print("合格です")
default:
print("判定不能です")
}
このコードは、rankの値に応じて、表示するメッセージを切り替えるものです。
- rank
- rank
- rank
- どのケースにも当てはまらなければ「判定不能です」を表示
上記ではrankがBなので、「良いですね」と表示されます。
繰り返し処理
同じ処理を複数回実行したいときは、主に「for-in文」を使います。
| 繰り返し処理の基本構文for 変数 in コレクション { 繰り返し処理}「コレクション」には、配列などの複数のデータをまとめたものを指定できます。 |
|---|
まずは、指定した範囲の数字を繰り返し処理する例を見てみましょう。
// 1から3まで処理を繰り返す場合
for i in 1...3 {
print("\(i)回目")
}
このコードでは、範囲内の数字(1から3まで)を1つずつ取り出し、変数iに代入して{ }内の処理を実行します。
- 1回目:
- 2回目:
- 3回目:
次に、配列の中身を1つずつ処理する例を見てみましょう。
let colors = ["赤", "青", "黄"]
for color in colors {
print("色は\(color)です")
}
このコードでは、for color in colorsの部分で、配列の要素を先頭から順番に取り出し、一時的な変数colorに代入します。
- 1回目:
- 2回目:
- 3回目:
関数
Swiftの関数は、特定の処理をひとまとまりにして、必要なときに繰り返し利用できるようにしたものです。
関数は「func」というキーワードを使って定義します。
| 関数の基本構文func 関数名(引数名: 型) -> 戻り値の型 { 処理} |
|---|
関数で使われる主な要素は以下のとおりです。
- 引数
- 戻り値
- func
戻り値が不要な場合は、「-> 戻り値の型」を省略できます。
関数の具体例を見てみましょう。
func greet(name: String) {
print("こんにちは、\(name)さん")
}
greet(name: "田中")
このコードでは、nameという引数を受け取り、挨拶を表示するgreetという関数を定義しています。
greet(name: "田中")として関数を呼び出し、「田中」という文字列を引数として渡すと、「こんにちは、田中さん」と表示されます。
Swiftでは、関数を定義するときにname: Stringのように引数名を指定すると、関数を呼び出す際にもname:という引数ラベルを使うのが基本です。
Swiftの基本構文
ここからは「実際にSwiftのコードを書いてみたい!」という方に向けて、入門者が覚えておきたいSwiftの基本構文を紹介します。
- 変数と定数
- 型推論
- データ型
- オプショナル型
- 配列
- 条件分岐
- 繰り返し処理
- 関数
それでは、1つずつ見ていきましょう。
変数と定数
Swiftでは、データを入れる箱として「変数」と「定数」を使い分けます。
| 変数(var) | あとから中身を書き換えられる箱 |
| 定数(let) | 一度決めたら中身を変えられない箱 |
それぞれの基本構文と具体例を見ていきましょう。
変数は、コードの先頭に「var」を付けて定義します。
var 変数名 = 値var message = "こんにちは"
message = "さようなら" // 2回目以降はvarなしで再代入できる上記のコードでは、最初にmessageという変数に「こんにちは」という文字列を代入しています。
その後、message = "さようなら"と記述することで、変数の中身を「さようなら」に変更しています。このように、変数に新しい値を入れることを再代入といいます。
再代入するときは、最初に変数を定義するときのvarは付けません。すでに作られている変数に新しい値を代入するためです。
なお、文字列を扱う場合は、文字を"(ダブルクォーテーション)で囲みます。
また、コードの中にメモを残したい場合は、//を使います。//から行末までの内容はコメントとして扱われ、プログラムの実行には影響しません。
var message = "こんにちは" // messageに「こんにちは」を代入
message = "さようなら" // messageの値を「さようなら」に変更定数は、コードの先頭に「let」を付けて定義します。
let 定数名 = 値let name = "鈴木"
name = "佐藤" // エラー上記のコードでは、nameという定数に「鈴木」という値を代入しています。
定数は、一度値を決めるとあとから変更できません。そのため、2行目で「佐藤」を代入しようとするとエラーが発生します。
Swiftでは、あとから値を書き換える必要がない場合は、let(定数)を使うことが推奨されています。値を意図せず変更してしまうのを防ぎ、コードの安全性や読みやすさを高められるためです。
型推論
プログラミングにおける「型」とは、データの種類を表すものです。たとえば、文字列や整数、小数など、それぞれ異なる型として扱われます。
通常、変数や定数には型を指定できますが、Swiftには「型推論」という機能が備わっています。
型推論とは、変数や定数に代入された値から、Swiftがデータの型を自動的に判断する仕組みです。
let name = "田中" // String型と判断
var age = 25 // Int型と判断
let pi = 3.14 // Double型と判断let name: String = "田中"
var age: Int = 25
let pi: Double = 3.14あえて型を自分で指定したい場合は、変数名や定数名の後ろに「: 型名」を記述します。
このように、Swiftでは型を自分で指定しなくても、代入する値から型を自動的に判断できます。
Swiftは型を厳密に扱う言語ですが、型推論によって不要な型指定を省略できるため、コードを簡潔に書けます。
データ型
Swiftでよく使われる基本的なデータ型には、以下のようなものがあります。
| 型名 | 概要・具体例 |
|---|---|
| String(文字列) | テキストを扱う型。文字列は"(ダブルクォーテーション)で囲みます。例:"こんにちは" |
| Int(整数) | 正の数・負の数を含む、端数のない整数を扱う型。例:100、-5 |
| Double(倍精度浮動小数点数) | 小数を含む数値を扱う型。Swiftでは小数リテラルのデフォルトの型として使われます。例:3.14 |
| Float(単精度浮動小数点数) | 小数を扱う型。Doubleより精度は低くなりますが、メモリ使用量を抑えたい場合などに使われます。例:3.14 |
| Bool(真偽値) | true(真)とfalse(偽)の2つの状態を扱う型。 |
このほかにも、Swiftには配列や辞書、タプルなど、さまざまなデータを扱うための型があります。
オプショナル型
オプショナル型とは、「値が存在する場合もあれば、nil(値がない状態)の場合もある」という状態を安全に扱うための型です。
Swiftでは、通常の型にnilを代入することはできません。
たとえば、以下のようにInt型の変数へnilを代入するとエラーになります。
var age: Int = 25
age = nil // エラー
一方、「値がない可能性がある」ことをあらかじめ示したい場合は、オプショナル型を使います。
let 定数名: Optional<型> = 値let 定数名: 型? = 値オプショナル型では、型の後ろに「?」を付ける書き方が一般的です。これは「シンタックスシュガー(省略記法)」と呼ばれます。
たとえば、以下のように記述できます。
var age: Int? = 25
age = nil
この場合、ageはInt?型なので、整数の値だけでなくnilも代入できます。
つまり、Int?は「整数が入るかもしれないし、値がないnilになるかもしれない」という状態を表します。
オプショナル型は、ユーザーが入力した値が存在しない場合や、データベースから取得した値が存在しない場合など、値がない可能性を安全に扱いたい場面で活用されます。
配列
Swiftの配列(Array)は、同じ型のデータを順番に並べて管理するためのものです。
型を指定する場合:var 配列名: [型名] = [要素]
型を省略する場合:var 配列名 = [要素]
Swiftでは型推論が働くため、型を指定せずに[]で要素を囲むだけでも配列を作れます。
具体的には、以下のように記述します。
var fruits = ["リンゴ", "バナナ", "ミカン"]
このコードでは、fruitsという変数に3つの文字列を入れています。
varで宣言されているため、あとから要素を追加したり、中身を変更したりできます。
配列の中身を取り出すときは、**「0」から始まる番号(インデックス)**を使って指定します。
上記の配列は、以下のように管理されています。
fruits[0]:"リンゴ"fruits[1]:"バナナ"fruits[2]:"ミカン"
存在しないインデックスを指定すると実行時エラーが発生し、アプリがクラッシュする場合があるため注意しましょう。
たとえば、要素が3つしかない配列でfruits[5]を指定することはできません。
条件分岐
条件分岐とは、ある条件を満たしているかどうかによって、実行する処理を切り替える仕組みです。
Swiftの条件分岐では、主に「if文」と「switch文」が使われます。
if文
if文は、「もし条件を満たしていれば、この処理を実行する」という命令を出す構文です。
条件がtrue(真)かfalse(偽)かによって、実行する処理を分けます。
if 条件 {
実行する処理
} else if 条件 {
実行する処理
} else {
実行する処理
}条件を満たした場合は、{ }内の処理を実行します。else ifを使うと、最初の条件に当てはまらなかった場合に、別の条件を追加でチェックできます。elseを使うと、どの条件にも当てはまらなかった場合の処理を指定できます。
具体例を見てみましょう。
let score = 85
if score >= 90 {
print("優秀です!")
} else if score >= 70 {
print("合格です")
} else {
print("不合格です")
}
このコードは、点数(score)に応じて、表示するメッセージを3つのパターンに切り替えるものです。
- 点数が90以上なら「優秀です!」を表示
- 点数が70以上90未満なら「合格です」を表示
- どちらの条件も満たさなければ「不合格です」を表示
上記の例ではscoreが85なので、「合格です」と表示されます。
switch文
switch文は、1つの値を複数のケース(候補)と比較して、処理を分ける構文です。
複数の条件を整理して記述したい場合に適しています。
switch 値 {
case パターン1:
パターン1に一致した場合の処理
case パターン2, パターン3:
パターン2または3に一致した場合の処理
default:
どのパターンにも一致しなかった場合の処理
}Swiftのswitch文には、すべての可能性を網羅する必要があるというルールがあります。
すべてのケースを明示していない場合は、defaultを使って、どのケースにも当てはまらない場合の処理を指定します。
具体例を見てみましょう。
let rank = "B"
switch rank {
case "A":
print("素晴らしい!")
case "B":
print("良いですね")
case "C":
print("合格です")
default:
print("判定不能です")
}
このコードは、rankの値に応じて、表示するメッセージを切り替えるものです。
rankが"A"なら「素晴らしい!」を表示rankが"B"なら「良いですね」を表示rankが"C"なら「合格です」を表示- どのケースにも当てはまらなければ「判定不能です」を表示
上記の例ではrankが"B"なので、「良いですね」と表示されます。
繰り返し処理
同じ処理を複数回実行したいときは、主に「for-in文」を使います。
for 変数 in コレクション {
繰り返し処理
}指定した範囲の値を繰り返し処理する
たとえば、1から3までの範囲の値を順番に取り出して処理する場合は、以下のように記述します。
for i in 1...3 {
print("\(i)回目")
}
このコードでは、1から3までの範囲に含まれる値を1つずつ取り出し、変数iに代入して{ }内の処理を実行します。
- 1回目:
iに1が入り、「1回目」と表示 - 2回目:
iに2が入り、「2回目」と表示 - 3回目:
iに3が入り、「3回目」と表示
配列の要素を繰り返し処理する
配列の中身を1つずつ処理する場合も、for-in文を使えます。
let colors = ["赤", "青", "黄"]
for color in colors {
print("色は\(color)です")
}
このコードでは、for color in colorsの部分で、配列の要素を先頭から順番に取り出し、一時的な変数colorに代入しています。
- 1回目:
colorに「赤」が入り、「色は赤です」と表示 - 2回目:
colorに「青」が入り、「色は青です」と表示 - 3回目:
colorに「黄」が入り、「色は黄です」と表示
関数
Swiftの関数は、特定の処理をひとまとまりにして、必要なときに繰り返し使えるようにする仕組みです。
関数は「func」というキーワードを使って定義します。
func 関数名(引数名: 型) -> 戻り値の型 {
処理
}関数では、必要に応じてデータを受け取ったり、処理結果を返したりできます。
- 引数:関数に渡すデータのこと。下の具体例では
name: Stringが該当します。 - 戻り値:関数の処理結果として呼び出し元に返す値。戻り値がない場合は、
-> 型名を省略できます。
具体例を見てみましょう。
func greet(name: String) {
print("こんにちは、\(name)さん")
}
greet(name: "田中")
このコードでは、「名前を受け取って挨拶を表示する」という処理にgreetという名前を付け、必要なときに呼び出せるようにしています。
greet(name: "田中")を呼び出すと、「こんにちは、田中さん」と表示されます。
Swiftでは、関数を呼び出す際に、基本的に引数ラベルを指定します。上記の例ではnameが引数ラベルとして使われています。
関数を使うことで、同じ処理を何度も書く必要がなくなり、コードを整理しやすくなります。
Swiftのおもな学習方法
ここからは、「Swiftを本格的に学んでみたい!」という方に向けて、おすすめの学習方法3つを紹介します。
| 方法 | メリット | デメリット |
|---|---|---|
| 学習サイト・アプリ | 無料のものもある動画教材や「Swift Playgrounds」アプリなら、ゲーム感覚で楽しく学べる | 無料サイトは内容が限られる |
| 書籍 | 基礎から応用まで体系的に学べる自分のペースで学べる | 分からないことがあった際、自力で解決する必要がある |
| プログラミングスクール | プロの講師に直接教えてもらえる実戦的なカリキュラムで挫折しにくい | 受講料がかかる |
どの学習方法にも言えるのは、「実際に自分の手を動かしてコードを書くことが、Swift習得の近道」ということです。
自分に合う学習スタイルを見つけてみてくださいね!
まとめ
Swiftは他の言語の良いところを取り入れ、現代の開発環境に合うように作られた言語です。
特にApple製品向けのアプリ開発においては欠かせない存在であり、今後も安定した需要が続くでしょう。
もし、iOSアプリ開発のノウハウや専門の人材が社内にない場合は、プロに開発を任せるのも1つの手です。
WEB制作会社の「I-SEED」では、豊富な実績とこれまでに培ったノウハウで、お客様のご要望や社内の状況に適したオーダーメイド開発を行っています!
相談や見積もりは無料なので、ぜひ気軽にお問い合わせください。
システム開発のお悩みはI-SEEDにご相談ください
システム開発について以下のようなお悩みをお持ちの場合、ぜひI-SEEDにご相談ください。
- Excelで内製したシステムが業務とマッチしなくなってきた
- 人的コストがかかっている業務をシステム化したい
- 運用中のWebシステムをスマホ対応にしたい
I-SEEDでは、システム開発やWebデザイン、Webマーケティングそれぞれの分野で幅広いスキルと経験を持ったスタッフが、お客様のお悩みをひとつひとつ細かくヒアリング。「使いやすく分かりやすいUI/UX」をモットーに、最適な解決策をご提案します。
メールフォームでのご相談も可能ですので、お気軽にご相談ください。
