Swiftについて今日は紹介するよ!
- Swiftとは?
- Swiftができることって?
- Swiftの勉強方法は?
- Swiftの将来性は?
などの疑問をお持ちの方の悩みを解決できる記事になっています!
この記事では、現役のフリーランスエンジニアがSwiftの特徴、できること、将来性、勉強方法について解説します!
記事を読めば、Swiftの特徴や効率的な勉強方法について理解できますよ!
それでは、見てみましょう!
- Swiftに興味がある人
- Swiftで何ができるか知りたい人
- Swiftの学び方を知りたい人
目次
Swiftとは?
Swiftは2014年にAppleが発表したオープンソースのプログラミング言語です。iOS、macOS、iPadOS、watchOS、tvOS向けのアプリケーション開発をすることができます。普段、わたしたちが利用しているiPhoneアプリはSwiftで作られています。
Swiftは、コードがシンプルで、わかりやすいプログラミング言語です。これまではObjective-Cというプログラミング言語が使われていました。Objective-Cは、文法が少し複雑で学習コストが高いものでした。しかし、Swiftはモダンな言語仕様を取り入れることにより、初心者にも学習しやすいように開発されました。
Swiftは、iOS、macOSで動作するプログラミング言語です。そのため、iPhoneアプリ開発、macアプリ開発に使われることが多いです。アプリ以外にも、Swiftはサーバーサイドで動作するアプリケーション開発も可能です。まだ事例は少ないですが、今後増えてくるでしょう。
Swiftは、TOIBE指標のような人気や成長の度合いからプログラミング言語を測る指標のほとんどで、 トップ20内にランクインし、日々進化を遂げています。
Swiftの特徴とは?
Swiftの特徴は、次の通りです。
- 静的型付け言語
- モダンな仕様
- パフォーマンス性が高い
- SwiftUI
- Swift Package Managerでパッケージ管理
- Webアプリケーションフレームワークも充実
- 本・ドキュメントサイトが充実している
静的型付け言語
Swiftは、「静的型付け言語」です。
静的型付け言語とはプログラムが実行される前に、プログラムの整合性や合理性を担保する仕組みをもったプログラミング言語です。
プログラミング言語には、「静的型付け言語」と「動的型付け言語」があります。
Swiftは静的型付け言語であり、プログラム上で使われる値の型を定義することで安全性を確保しています。
Swift以外の静的型付け言語は次のものがあります。
- Java
- Kotlin
- TypeScript
- Scala
一方、「動的型付け言語」とはプログラムが実行されるタイミングでプログラムの整合性をチェックします。そのため、プログラムが実行されるまでバグに気付きづらいです。
サーバーサイドで実装されるRuby、PHPなどは、「動的型付け言語」です。そのため、型を定義する必要はありません。しかし、プログラムを実行するまで正しい値が使われているかは分からず、エンジニア自身が安全性を担保する必要があります。
主要な動的型付け言語は次の通りです。
- PHP
- Ruby
- Python
- JavaScript
両者ともメリット、デメリットがあるので覚えておきましょう。
種類 | メリット | デメリット |
動的型付け言語 |
|
|
静的型付け言語 |
|
|
モダンな仕様
Swiftの最大の特徴は、文法がシンプルであることです。
Swiftは、モダンなプログラミング言語の仕様を取り入れています。
例えば、
- 型推論
- クロージャ
- ジェネリクス
- プロトコル(インターフェース)
- 構造体
- クラス
- 型キャスト
などがあります。他のプログラミング言語でもある仕様を使用することで、エンジニアにとって学習しやすいように設計されています。
Swiftは、Javaなどの静的型付け言語と比べると記述量が少なくコードを書けます。
簡単なサンプルコードを見てみましょう。
let array = ["りんご", "みかん", "もも"]
print(array)
実行結果:
["りんご", "みかん", "もも"]
変数に配列を入れて、出力しています。
Swiftは静的型付け言語のため、変数に型を指定しなくてはなりません。しかし、上記の配列には型が書かれていません。これはSwiftの型推論が作用しているからです。
明示的に型を定義すると、次のようになります。
let array: [String] = ["りんご", "みかん", "もも"]
print(array)
実行結果:
["りんご", "みかん", "もも"]
Swiftは、代入された値から型を推論できるので明示的に書かなくてもコンパイルが通るようになっています。
このような省略した書き方で、Swiftはシンプルで、わかりやすいコードを保つことできます。
パフォーマンス性が高い
Swiftは、コンパイル言語のため、RubyやPythonなどのスクリプト言語に比べて、実行速度が圧倒的に速いです。
Swiftのコンパイルは、LLVMというコンパイラ基盤を採用しています。LLVMは、Swiftがコンパイルした中間コードを最適化して、特定のプラットフォーム上で動作する実行ファイルを生成します。
このLLVMの最適化により、Swiftの高速性能を実現しています。
SwiftUI
引用元: SwiftUI
SwiftUIは、2019年にAppleが発表した新しいUIフレームワークです。
SwiftUIを使うと、ページやボタンなどを簡単に実装できます。
以前のiOS開発では、UIの作成はStoryboardというGUIツールやXib、UiKitといったツールが使われていました。
このStoryboardやXibによるUI作成はいくつか問題点がありました。
- メンテナンス性が低い
- プログラムロジックとUIが分離してるため、バグが発生しやすい
これらの問題を解決するために、SwiftUIは開発されました。
SwiftUIの最大の特徴は、宣言的にUIを構築できることです。
SwiftUIを使うと、Storyboardよりも可読性が大幅に向上します。プログラムとUIを同じファイルで管理できるのでコードの管理もしやすくなるからですね。
SwiftUIは、iOS13以降のみ動作します。まだ全てのアプリがiOS13以下もサポート対象にしていますが、今後SwiftUIが主流になるのは間違いないでしょう。
しかし、UIKitはSwiftUIと共存できるので使われる機会がまだまだあります。そのため、iOSエンジニアはUIKitとSwiftUI両方の使い方を覚えておく必要があります。
Swift Package Managerでパッケージ管理
Swiftのパッケージ管理は、「Swift Package Manager」を使います。以前はCocoaPodsやCarthageなどが使われていましたが、Swiftの公式パッケージ管理ツールとしてXcode11から使えるようになりました。
Swift Package Managerとはパッケージ管理ツールです。
パッケージ管理とは、アプリケーション開発で必要なパッケージを管理することです。
パッケージとは、便利な機能がまとまったものです。例えば
- データベースの接続パッケージ
- メール送信パッケージ
- フォームパッケージ
- テスト管理パッケージ
- ログイン機能パッケージ
- 検索機能パッケージ
などがあります。パッケージは、プログラミング開発をサポートするために作られたひとまとまりの機能です。自分のサービスにメールやログイン機能を入れたければ、「自分で実装する」か「パッケージを使用する」ことになります。スピーディに開発をしたい場面では、「パッケージを使用する」機会が圧倒的に多いです。なぜなら、「自分で実装する」場合はゼロから作らなければならず、コストがかかるからですね。その点、パッケージは既に出来上がっているのですぐに機能を追加ができます。
iOSエンジニアはアプリで必要なパッケージをインストールしますが、パッケージの数が多くなると管理も大変になります。その管理の複雑性を解決するために、Swift Package Managerが使われます。
Swift Package Managerの使い方
Swift Package Managerは、Xcode上から使うことができます。
Xcodeのメニューから「File」>「Swift Packages」>「Add Package Dependency」を実行します。
次に、追加したいパッケージのGitHubのURLを入力します。ここでは、「RxSwift」をインストールします。
次に、どのバージョンを使うかを指定します。
インストールが終わると、プロジェクト設定の「Swift Packages」タブから確認することができます。
このように、Xcode上から簡単にパッケージを追加することができます。
Webアプリケーションフレームワークも充実
Swiftは主にiOSアプリを作る用途で使われますが、実はWebアプリケーションの開発もできます。
他のサーバーサイド言語と同様に、Webアプリケーションフレームワークもあります。
Webアプリケーションフレームワークとは、Webアプリケーションを開発するためのサポート機能がまとまっているツールのことです。
Webアプリケーションには、データベースの操作、httpリクエストの処理、メールなど多くの機能が必要とされます。これら全ての機能をゼロから作ると大変ですよね。Webアプリケーションフレームワークは、そのようなアプリに関わる機能が備わっています。そのため、初心者の人でもすぐにWebアプリケーション開発ができるようになっています。
Swiftでよく使われるWebアプリケーションフレームワークは次の通りです。
- perfect
- Swifton
- Express
- Vapor
perfect
引用元: perfect
perfectは、Swift製のサーバーサイドで動作するWebアプリケーションフレームワークです。
RESTful機能、ルーディング機能、セッション管理などの基本的なWebアプリケーション機能に加えて、iOS通知といったアプリ独自の機能も提供しています。
アプリ開発とバックエンド開発の両方でSwiftを使うというコンセプトで開発されています。
Swifton
引用元: Swifton
Swiftonは、Ruby on Railsに影響されて作られたWebアプリケーションフレームワークです。
SwitonはRuby on Railsのようにコードを書くことができ、MVCアーキテクチャを採用しています。
デプロイ環境では、Herokuにも対応しています。
Express
引用元: express
expressは、Swift製の軽量のWebアプリケーションフレームワークです。
高速で動作するように設計され、Restful APIやMVCアーキテクチャのサポートも含まれています。
シンプルな設計なので、柔軟性と拡張性が高いのが特徴です。
Vapor
引用元: Vapor
Vaporは、PHPのフレームワーク「Laravel」に影響を受けたSwift製のWebアプリケーションフレームワークです。
周辺技術のエコシステムが充実しており、MySQL、MongoDB、Fluent、Redisなどにも対応しています。
書籍・ドキュメントサイトが充実している
Swiftの書籍は充実しています。日本語の書籍も多く、最新のバージョンを学ぶことができます。
書籍はたくさんありますが、いくつかおすすめをご紹介しておきます。
[増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
「[増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語」「詳解 Swift 第5版」で基礎を習得し、次に「SwiftUI 徹底入門」で実践的なSwiftUIの使い方を学習しましょう。
また、本に加えて、Swiftのサイトを見ておくのをおすすめします。
Swiftを使うと何ができるの?
Swiftを使うと様々なアプリケーションを開発できます。
よく開発されるアプリケーションは、次の通りです。
- iOSアプリ
- macOSアプリ
- APIサーバー
iOSアプリ
Swiftが一番利用されるのは、iOSアプリ(iPhoneアプリ)です。
iOSアプリはSwift、もしくはObjective-Cでしか開発できません。
そのため、iOSエンジニアはSwiftが必須となります。
iOSアプリ開発には、Xcodeが使われます。Xcodeとは、Appleのアプリケーションを開発するための統合開発環境です。Xcode上でSwiftを書いたり、アプリをビルド、デバックする機能を提供しています。
引用元: Mac Apple Store
macOSアプリ
macOSアプリもSwiftで開発できます。
macOSアプリとは、Mac上で使われるアプリケーションです。
Mac上にインストールして、「Applicaitons」フォルダに格納されます。
例えば、スマホで使う機会が多いLINEもMac用のアプリが提供されています。
macOSアプリは、「Mac App Store」で確認することができます。
APIサーバー
前述した通り、Swiftはバックエンド開発にも使われます。
そのため、SwiftはAPIサーバーの開発にも使われます。
APIとは「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略で、「プログラム同士をインターフェースを通じで繋げる機能」です。
APIの仕組みを使うと、様々なプログラムを組み合わせて一つのサービスを作ることができます。
例えば、TwitterやインスタグラムもAPIを提供しており、API経由でツイートや写真を取得できます。そして、その取得したデータを自分のWebサイトに表示させることができます。
APIサーバーは、APIの仕組みを利用して、データを提供するサーバーです。
Swiftを使えば、このAPIサーバーを実装することができます。
Swiftが使えるとなれる職種
Swiftが使えると、iOSエンジニアになれます。
iOSエンジニアとは、iOSアプリを作るエンジニアのことです。
iOSエンジニアの仕事は、アプリのUIや動きを実装することです。データの保存やサーバーサイドの処理は、バックエンドエンジニアに任せるパターンが多いです。しかし、近年ではWebサーバーもSwiftで開発できるので、iOSエンジニア兼、バックエンドエンジニアということも可能でしょう。
iOSエンジニアの詳しい解説は、こちらをご確認ください。
iOSエンジニアとは?仕事内容、年収、必要なスキルを解説!Swiftエンジニアの年収は?
Swiftエンジニアの年収は、どのくらいでしょうか。Swiftエンジニアを目指す人は気になるところでしょう。
転職支援サービスなどを見ると、Swiftエンジニアの年収は400〜900万円程度とされています。
実際に「求人検索エンジン「スタンバイ」プログラミング言語別年収ランキング2018」によると、年収は550万〜1200万で設定されています。
引用元: 求人検索エンジン「スタンバイ」調べ
日本の平均年収と比べると、かなり高い傾向ですね。
スキルの高いSwiftエンジニアは独立して、もっと稼いでいます!
エンジニアは作ってナンボの世界なので、スキル次第ではもっと高い年収を狙うことも可能です。
Swiftの今後の将来性は?
Swiftは、今後も需要が期待されます。
なぜなら、Swiftのコミュニティは活発で日々進化を遂げているからです。学習のしやすさと実用性の高さからエンジニアの間でも高い人気があります。エンジニアが求めるプログラミング言語は、企業でも使われる傾向が高いです。さらに、SwiftUIが新しいUIフレームワークとして大注目されています。iOS13以上のアプリのみが対応ですが、今後、主流になるのは間違いないでしょう。
さらに現在、日本のIT業界は深刻な人手不足に陥っています。実際に、経済産業省のデータによると、2025年には約40万人、2030年には約45万人が不足すると試算されています。
労働人口が年々減少しているのも関わらず、企業はITへの投資をするため、エンジニアの需要が高くなっているのです。
求人サイトでもSwiftの需要が高いのがわかります。実際に、私の周りでもバックエンドエンジニア、特にSwiftを使えるエンジニアを探している企業はたくさんいます。
これからバックエンドエンジニアを目指す人は、Swiftを検討してみてください!そして、新しい技術を常にキャッチアップしていけばエンジニアの価値を高め続けられますよ!
Swiftを習得するには
Swiftを習得するためには、まずは基礎を学習して、次に実践学習をしましょう。
- プログラミング学習サイトでSwiftを始める
- プログラミング本でSwiftの仕様を理解する
- ポートフォリオを作る
プログラミング学習サイトでSwiftを始める
基礎を身につけるには、プログラミング学習サイトがおすすめです。
なぜなら、プログラミング学習サイトは、環境構築が不要ですぐにプログラミングを始められるからです。
例えば、Progateなどのプログラミング学習サイトを活用すれば、簡単にプログラミングを始められます!
Progateは「Swift」を学べます。また、それ以外にも「Git」「コマンドラインツール」を学べるので試してみてください!
Progateでプログラミングを学習する方法を解説【独学で可能】プログラミング本でSwiftの仕様を理解する
基礎学習では、プログラミング本も有効です。
プログラミング学習サイトでは扱えきれない細かい仕様を学べます。
前述した、おすすめの本を活用してみましょう。
ポートフォリオを作る
次に実践として、ポートフォリオやアプリを作りましょう。
アウトプットすることでプログラミングをより理解できます。
基礎ではプログラミング言語の特徴や使い方を学び、実践ではアウトプットすることで効率的にプログラミングを習得できます。
エンジニア未経験者でもできる!絶対ためになる魅力的なポートフォリオの作り方!エンジニアへの具体的なステップ
プログラミングを学習しただけでは、エンジニアにはなれません。
エンジニアになるための具体的なステップは次の記事で解説しているので、参考にしてくださいね!
【初心者のための】未経験からWebエンジニアになる3ステップ【完全保存版】最短でエンジニアになりたい人は
最短でエンジニアを目指すひとは、プログラミングスクールに行きましょう!
独学でも勉強できますが、時間がかかるのは事実です。
実践的なスキルをつけるにはプログラミングスクールの方が効率的です。
なぜなら、プログラミングスクールだと実践的な課題をやったり、プロのエンジニア講師にいつでも質問できるので独学よりも早く習得できるからです。
初心者の頃は、エラーに遭遇すると挫折しやすいです。プロに教わった方が自分で調べるより遥かに効率的です。
その他にも、プログラミングスクールでは実践的なプログラムが用意されています。独学ではできない体系的なプログラミング学習と転職支援を受けられます。
例えば、TechAcademyやCodeCampだとSwiftの実践的なコースがあります。
- 「iPhoneアプリコース」 … オリジナルアプリをAppStoreで公開
- 「CodeCamp アプリマスターコース」…. スマートフォンアプリの開発を本格的に学べる
プログラミングスクールは当たり外れがあると言われてます。実際に、無料のプログラミングスクールで失敗したという人もいます。
こちらの記事では、失敗しないために厳選したプログラミングスクールをまとめています。すぐにエンジニアに転職した方は検討してくださいね!
【転職もサポート】おすすめのプログラミングスクール3選!【現役エンジニアが厳選】まとめ
この記事では、Swiftについてまとめました。
今ではたくさんのプログラミング学習サイトや本があります。実際にコードに触れると、プログラミングの雰囲気を掴めますよ!
皆さんがエンジニアになれるのを応援しています!