Swiftとは、2014年にApple社がリリースしたプログラミング言語です。Apple社製品のアプリ開発をメインとしていますがWebアプリやWebサーバーの開発もできます。
iOSアプリ開発にはこれまでObjective-Cが利用されてきましたが、現在はSwiftに移行しつつあります。その理由はSwiftが安全性が高いやパフォーマンスが高いなどの特徴をもち、開発者にとって非常に魅力的だからです。
本記事ではSwiftとはどういうものなのかやSwiftでできること、特徴、Objective-Cとの違いなどについて解説します。
目次
1.Swiftとは?
Swiftとは、2014年に登場したプログラミング言語です。iOSやMac向けアプリケーションを開発することを目的にApple社に開発されました。Swiftはアマツバメという鳥を表す用語で、「迅速」や「すばやい」という意味を持ちます。
Swiftを開発するにあたって、Objective-Cをはじめとし、Rust・Haskell・Ruby・Python・C#などの多くのプログラミング言語を参考にしています。もともと、iOSやMac向けアプリケーションを開発するためには、Objective-Cが利用されていました。
しかし、Objective-Cが誕生したのは1983年と古い言語となってしまい、さらに利便性を向上させるためには新しい言語が必要だと判断されました。そこで誕生したのがSwiftです。
Objective-Cでは複雑で習得が難しいとされていた部分を解決するために、Swiftではシンプルで学習がしやすいように作られています。さらにObjective-CやC言語との混在や移行も可能です。
2.Swiftの特徴
Swiftの特徴は下記の通りです。
モダンなプログラミング言語
迅速なパフォーマンス
安全性が高い
他言語との相互性
リアルタイムの動作確認が可能
モダンなプログラミング言語
Swiftは、モダンなプログラミング言語です。モダンとは現代的であることを意味します。プログラミング言語において現代的とは、コードが読みやすく書きやすいということです。
これは、学習のハードルを下げるメリットがあります。また、開発時に参考にしたObjective-CやRuby、Pythonなどのそれぞれの特徴が少しずつみられ、それぞれの言語のいい要素を取り入れて作られています。
迅速なパフォーマンス
Swiftはその名の通り、迅速なパフォーマンスを発揮するプログラミング言語です。Swiftの公式サイトではObjective-Cよりも2.6倍、Python2.7よりも8.4倍処理が高速だといわれています。
従来のObjective-Cよりも2倍以上の差があるという点が、Objective-CからSwiftへの移行が進んだ理由です。
安全性が高い
Swiftは安全性が高い言語です。型の不一致やnil値に対してエラーを検知する仕様であり、バグが発生しにくいです。この仕様によって、人為的なミスを減らすことができ安全なコードを書くことができます。
また、Swiftはクラスのメモリ管理にARC(Automatic Reference Counting)という仕組みを利用しています。ARCによってメモリを自動的に解放してくれるため、メモリリークのリスクを減らすことができます。このような仕組みも安全性が高いといわれている理由の1つです。
他言語との相互性
SwiftはObjective-CやC言語との相互性があります。そのため、Objective-Cで開発された既存アプリの修正や機能追加をSwiftで行うことが可能です。
また、SwiftとObjective-CでAPIを共有したり、SwiftにObjective-Cフレームワークをインポートしたりできます。
通常、開発に使用している言語が古くなり他言語に切り替えるとなれば、相当な工数がかかり現実的ではありません。その中で、移行のコストをおさえられるのは開発者にとって最大のメリットでしょう。
リアルタイムの動作確認が可能
Swiftの魅力の1つがリアルタイムの動作確認が可能なことです。厳密には、Swiftの機能ではなくSwiftの統合開発環境であるXCodeのPlayground機能の恩恵です。
従来のObjective-Cでは、実際にアプリやシステムを実行しなければ動作確認ができませんでした。
一方でPlaygroundの使用によって、プログラムの途中経過の動作をリアルタイムで確認可能です。その結果、開発時間を短縮できます。1行単位で実行して結果をみられるため、プログラミング初心者にとっても嬉しい機能です。
3.SwiftとObjective-Cとの違いとは?
Swiftが登場する前、iOSやMacアプリの開発にはObjective-Cが利用されていました。Swiftが登場してからはiOSアプリ開発といえばSwiftが主流となっています。
ここでは、SwiftとObjective-Cとの違いについて解説します。主な違いは下記の通りです。
Swift | Objective-C | |
---|---|---|
配列やディクショナリの制限 | なし | あり |
文字型の宣言の必要 | 必要 | 不要 |
セミコロン(;) | 不要 | 必要 |
nilの代入 | 不可能 | 可能 |
配列やディクショナリの制限
Swiftでは配列やディクショナリに格納できるものに制限はありません。一方でObjective-Cはオブジェクトのみが格納できます。これは単純に、Swiftの方が利便性が高い要素です。
文字型の宣言の必要
Swiftでは文字型の宣言が必要ありますが、Objective-Cでは文字型の宣言が不要です。文字型の宣言が必要なことは、エラーを発生させないために重要なことであるため、Swiftで予期せぬ動きになることは少ないです。
一見、自動推論してくれるObjective-Cの方が開発効率が上がると思いがちですが、想定する型と違う値を代入してもエラーにならずシステムの予期せぬ動きにつながる可能性が高くなります。
セミコロン(;)
Swiftでは文の終わりにセミコロンが不要です。Objective-Cではセミコロンが必要です。Swiftでは改行はコンパイラが自動で判断するため、複数行にわたるコードは自動的に改行なしと判断されます。ただし、for文など改行以外のセミコロンは省略できません。
nilの代入
Swiftでは変数に空の値であるnilを許容しません。Objective-Cではnilを許容します。nilはそもそも意図して代入することは少なく、誤って入ってしまう場合が多いでしょう。
そのため、Swiftのようにnilに対してエラーを検知した方が潜在的なバグとしてのリスクを避けられます。このような仕様がSwiftの高い安全性を叶えています。
4.Swiftでできること
Swiftでできることは基本的にはApple社製品向けのアプリです。それに加えてWebアプリとWebサーバー開発が可能です。
iOSアプリ開発
Macアプリ開発
Apple Watchアプリ開発
Apple TVアプリ開発
WebアプリとWebサーバー開発
iOSアプリ開発
Swiftの主な用途はiOSアプリ開発です。iOSアプリはiPhoneやiPadに搭載されているOSです。SwiftもiOSもどちらもApple社が制作したソフトウェアとハードウェアであるため、ディスクやメモリなどコンピュータのディープな部分や、ハードウェアのアプリを開発できます。
Swiftのモダンな特徴によってシンプルで直感的な実装が実現し、開発者は開発効率を高めつつ品質の高いアプリをリリース可能です。
Macアプリ開発
SwiftはMacアプリ開発も可能です。MacアプリはMacbookやiMacで利用されるアプリです。Swiftのクロスプラットフォーム開発が可能な特性を活かして、iOSとMacOSのアプリを同時に開発することができます。
そして、Macアプリの開発では、メモリやキーボード・トラックパッドなどのコンピューターのディープな部分に関わるアプリを開発できるのが魅力です。
Apple Watchアプリ開発
SwiftはApple Watchアプリ開発が可能です。Apple WatchはApple社の製品の1つで、ウェアラブルデバイスのことです。
一般的にwatchOSアプリには、ヘルスケア向けのアプリや時間を記録するアプリがみられます。
Apple Watch単体で動作するアプリや、iPhoneと連携して動作するアプリなどが開発でき、iOSの利便性を引き出すことが重要視されます。スムーズなデータ同期や操作を実現するためには、使いやすいUIが必要とされるため、開発者の技術力が問われるでしょう。
Apple TVアプリ開発
SwiftではApple TVアプリ開発が可能です。Apple TVはテレビと接続して利用するApple社の製品の1つです。iPhoneやApple Watchとは違い、リモコンを使用した操作を想定して開発する必要があります。
WebアプリとWebサーバー開発
SwiftはApple製品のアプリケーション以外にも、WebアプリやWebサーバーの開発が可能です。Swiftには、perfectやKituraなどのWebアプリやWebサーバー開発用のフレームワークやライブラリがあります。
5.Swiftの将来性
Swiftの将来性は下記2点の理由から高いと考えられます。
Apple社製品の開発に採用されているため将来性は高い
充分な求人数がある
Apple社製品の開発に採用されているため将来性は高い
Swiftは、Apple社製品の開発に採用されているため、将来性は高いでしょう。日本国内におけるiOSの市場シェアは全体の59.86%を占めており、人気が高いことが伺えます。
Swiftが発表されて以降、iOSアプリ開発で使用する言語はObjective-CからSwiftが主流になってきているため、今後もSwiftの需要が増加していくことが予想できます。
しかし、Swiftの需要はApple社に依存しているため注意が必要です。SwiftはApple社製品以外にWebアプリやWebサーバーの開発ができる言語ですが、JavaScriptやPythonを使用するケースが多いでしょう。
2024年11月時点でSwiftを扱うエンジニアの需要はありますが、今後の需要はApple社の方針によって大きく変わりかねません。
そのため、Apple社との依存度を下げるためには、Swiftと並行して別領域のスキルを習得するなどの工夫が必要です。
充分な求人数がある
Swiftは、充分な求人数があることから将来性は高いと考えられます。下記はフリーランスボードに掲載されているSwiftとObjective-Cの求人数と平均年収の目安です。
Swift | Objective-C | |
---|---|---|
求人数 | 4,354件 | 1,096件 |
フリーランスボードに掲載されているSwiftの求人は2024年11月時点で4,354件です。一方でObjective-Cの求人数は、1,096件です。3,000件ほどの差があり、Objective-CからSwiftへ移行している企業やこれから移行を考えている企業が多いことがわかります。
6.Swiftでのプログラミングを始めるための事前知識
Swiftでプログラミングを始めるには、事前に知っておくべきことがいくつかあります。ここではその事前知識について解説します。
IDEにはXCodeが必要
開発者用のApple IDを作成
学習にはSwift Playground
日本語版ドキュメントの活用
フレームワークを知っておく
IDEにはXCodeが必要
Swiftを使った開発を始めるには、Apple社公式のXcodeという統合開発環境(IDE)が必要です。Xcodeは、インターフェースビルダーというテキストやラベル、ボタンをドラッグ&ドロップするだけで自動的にコードを追加してくれる便利な機能があります。
また、SwiftUIというフレームワークを利用するとソースコード変更がリアルタイムでプレビュー画面が更新され、意図した動作をするかすぐに確認ができます。
2021年まではXamarinというIDEでも開発が可能でしたが、2021年以降はXamarinを使用したiOSアプリ開発は途中までしか行えなくなっているため、最終的にはXcodeが必要です。
開発者用のApple IDを作成
Xcodeを使用する場合、Apple IDの作成が必要です。もし、普段からiOSを使用している人でも開発者用のApple IDを作成しておくのがおすすめです。
アプリを配布する際に、住所や氏名が日本語だと不便なケースがあるためです。
新規Apple IDを作成する場合は、Apple公式サイトのサポートページを参照してください。
学習にはSwift Playground
Swiftをまずは試してみたいという人や学習方法に悩んでいる人には、Swift Playgroundの利用がおすすめです。Swift Playgroundはゲーム感覚でSwiftでのプログラミングが学習できるアプリでiPadとMacOSに対応しています。
Xcodeをインストールしなくても、Swift Playground内でソースコードの記述と実行ができるため気軽にSwiftに触れられるのが魅力的です。
動作確認用のiOS端末があると便利
Xcodeを使用して、iOSアプリ開発を行う場合は動作確認用のiOS端末があると便利です。端末がなくてもXcodeだけで動作確認は可能ですが、端末で動作確認をした方が、よりユーザー視点での開発が進められユーザーエクスペリエンス向上につなげられるでしょう。
フレームワークを知っておく
Swiftのフレームワークを知っておくと、より開発を効率的に進められます。Swiftの代表的なフレームワークは下記の通りです。
フレームワーク | 概要 |
---|---|
Vapor | サーバーサイドアプリケーションやHTTPサーバー開発が可能 |
Perfect | フロントエンド・バックエンド両方の開発が可能 |
Kitura | サーバーサイド開発に適している |
Swifton | MySQLやPostgreSQLなどのデータベース言語に対応 |
Slimane | 非同期通信の機能が充実 |
Express | シンプルで扱いやすく、高機能なWebアプリ開発に最適 |
HTTPSwiftServer | iOSアプリと通信するサーバーの開発が可能 |
Chatto | チャットアプリケーションの作成を主な目的にした軽量フレームワーク |
7.Swiftの基本構文
Swiftの記述量がどれくらいなのかを把握するためにも、Swiftの基本構文について解説します。
出力
変数
配列
関数
条件文
クラス
出力
print関数を実行すると、出力ができます。以下のサンプルコードは「テキスト」という文字列が出力されます。
print("テキスト") |
変数
varを置くことで変数定義をします。「:Int」はInt型を、「:String」はString型を明示的に定義しています。letは定数です。
// Int型 var num:Int = 1
let str:String = "Hello World!" |
なお、Swiftでは型推論が効くため、以下のように略して定義することもできます。
// Int型 var num = 1
let str = "Hello World!" |
配列
配列は、配列名:[型名] = [配列要素]のように定義します。後から配列の要素を追加するためには、append関数を使用します。
var array:[Int] = [1,2,3,4,5]
array.append(6) |
関数
特定の処理をまとめるためには関数を使用します。下記のサンプルは、3つの引数の値の合計を算出して返す関数です。
func sum(first_int:Int, second_int:Int, third_int:Int) -> Int { return(first_int + second_int + third_int) } |
条件文
初期値の設定をした後に、条件文を作成することで条件付きの分岐が行えます。下記のサンプルは代入された変数の値によって処理を分岐させています。
//初期値の設定 var fruit = "Apple"
if(fruit == "Apple") {
|
クラス
「class クラス名{}」でクラスを定義し、メソッドやプロパティはここまでで紹介した変数や関数の定義と同じです。下記のサンプルはstrClassというクラスを定義し、strFuncというString型のメソッド、strPropというString型のプロパティを設定しています。
// クラス定義 class strClass { var strProp:String = "Hello World" func strFunc()->String{ return strProp + "!" } }
var test = strClass() print(test.strFunc()) |
関連記事
Swiftでできること8選|入門用の基礎文法(サンプルコード付)も解説
フリーランスの年収とは?エンジニアの平均年収や会社員との比較、税金なども解説!
8.まとめ
今回はiOSアプリ開発に興味があり、プログラミングを始めたいと考えている初心者や、Swiftを使ったモバイルアプリ開発を検討しているフロントエンドエンジニアに向けてSwiftとはどういうものなのかについて解説しました。
Swiftとは、Objective-Cに代わるApple社製品のアプリ開発をメインとしたプログラミング言語です。他にもWebアプリやWebサーバー開発ができます。モダンな作りであることや、パフォーマンスが高い・安全性が高い・他言語との相互性が高いことから人気の言語です。
iOSシェア市場や求人数からみてSwiftの将来性は高いと考えられるため、これから学習を考えている人におすすめです。
本記事が皆様にとって少しでもお役に立てますと幸いです。