【アプリ開発入門】iOSエンジニアになるための説明書
はじめに
本記事は、特典以外は全て無料で閲覧が可能です。
特典の内容は、技術ロードマップ、ポートフォリオ作成例、学習計画表があります。
技術ロードマップでは、どの手順でどんなスキルを取得するべきか記載されています。
ポートフォリオ作成例では、機能仕様書や、UI設計書、単体テスト仕様書の雛形を作成しました。
学習計画表では、1年間でiOSエンジニアになれる計画表を作成しました。
著者のプロフィールは、下記から確認できます。
本記事では、著者の経験からiOSエンジニアになるために、知っておきたいスキルや、学習方法等を紹介していき、少しでも早く読者の皆様がiOSエンジニアになれる様に記事を纏めました。
対象読者
iOSエンジニアとは?
iOSエンジニアは、iPhoneやiPad、Macなどで動作するiOS向けのアプリを開発する技術者のことです。
会社に属して、アプリを開発することが多いです。
自社開発の会社では、自社のアプリに機能の追加及び修正や保守運用を行います。
受託開発の会社では、クライアントから依頼されたアプリの開発を行います。
最近は、副業や起業などでiPhoneアプリの開発を個人で行うエンジニアもいます。
年収相場はどのくらい?
iOSアカデミアさんのブログで、iOSエンジニアのリアルな年収が判明!1481人のアンケート結果から考察の記事がありますので、こちらを基に年収相場を見て行こうと思います。
まず、アンケートの概要から説明します。
アンケートの対象者は、ITエンジニアで募集しているため、正確には1481人のITエンジニアに含まれるiOSエンジニアになります。
つまり、iOSエンジニアの規模だけで見ると、105人になります。
105人の集計データを基に、年収レンジの割合を算出すると下記の様になります。
年収レンジ層ごとに説明して行きます。
250万円未満
未経験や、新卒だとここからスタートになることが多いです。
250 ~ 450万円未満
実務経験を2 ~ 3年ぐらい経験するとこのラインだと思います。
450 ~ 650万円未満
実務経験を5 ~ 6年ぐらい経験するとこのラインだと思います。
リーダーやサブリーダーのクラスになります。
650 ~1000万円未満
実務経験が6年以上で、リーダー経験ありの管理職でこのラインだと思います。
1000 ~ 1600万円未満
ベテランがフリーランスや起業をして、稼ぐレベルだと思います。
1600 ~ 2000万円未満
起業してサービスが売れているレベルだと思います。
2000万円以上
複数サービスを展開して、当ててるレベルだと思います。
年収相場の説明や著者の経験を含めて纏めると、下記になります。
下記、参考文献になります。
必要なスキルは?
必須スキルは下記になります。
順に説明していきます。
言語理解
基本的に「Swift」というプログラミング言語を扱います。
Swiftは、Appleが開発したプログラミング言語で、iOS向けアプリの開発に使用されています。
Swiftの特徴として、下記の2点が挙げられます。
モダンで書きやすいプログラミング言語であるため、初めてプログラミングを触る方でも、無理なく進められます。
他の言語との相互性もあるため、技術力次第で開発パターンの選択肢が増えていきます。
開発する上で最低限理解するべきことは、下記の3点になります。
定数 / 変数は、値を一時的に格納するのに必要です。
例として下記の様に書きます。
let name = "Hanagazaki" // 定数:一度、入れた値は変更が出来ない。
var job = "iOS Engineer" // 変数:再度、値を入れ直すことが出来る。
関数(メソッド)は、処理した値を返すことが出来ます。
例として下記の様に書きます。
// 関数(メソッド):値をセットしたり、関数(メソッド)内で処理した値を返すことが出来ます。
func jobChange(job: String) -> String {
let jobString = job
return jobString
}
var job = jobChange(job: "Android Engineer") // 変数jobに関数jobChangeをセットします。
print(job) // 出力結果:Android Engineer
class Career {
let shared = Career()
func jobChange(job: String) -> String {
let jobString = job
return jobString
}
}
// メソッドは、他のクラスをインスタンス化して、関数を呼び出したもの。
var job = Career.shared.jobChange(job: "Mobile Application Engineer")
print(job) // 出力結果:Mobile Application Engineer
制御構文は、処理の途中で処理を分岐させたり、繰り返したりする構文のことです。
例として下記の様に書きます。
let job = "iOS Engineer"
// if文もしくはelse if文
if job == "iOS Engineer" {
print("Right") // こっちが出力される。
} else {
print("Wrong")
}
// switch文
switch job {
case "iOS Engineer":
print("Right") // こっちが出力される。
default:
print("Wrong")
}
// for文
for _ in 0 ..< 2 {
print(job) // 3回jobの値が呼ばれる。
/* 出力結果
iOS Engineer
iOS Engineer
iOS Engineer
*/
}
// guard文もしくはguard let文
let jobChange = job == "iOS Engineer"
// guard文
guard jobChange else { return } // 値が違っていたら、処理を抜ける。これかなり重要!
// guard let文
func jobChange(job: String?) -> String {
// 値が違っていたら、処理を抜ける。
guard let jobString = job else { return "値が空です。" }
return jobString
}
他にもありますが、開発しながらの方が覚えやすいと思いますので、本記事で説明しません。
開発環境
プログラミング言語だけでは開発は出来ません。開発するためには、「Xcode」という開発環境も必要になります。
Xcodeは、Appleが開発した統合開発環境(IDE)で、iOS向けアプリの開発に必要なものが揃っています。
下記からインストールが可能です。
Git(ソースコード管理)
ソースコード管理は、ソフトウェア開発におけるソースコード(ファイル)の変更履歴を管理することで、変更内容の確認や変更前の状態への復元などを行うことが出来ます。
ソースコード管理をするためのツールとして、下記などがあります。
基本的に行う操作としては、下記になります。
順に説明して行きます。
clone
リポジトリをコピーする操作です。
add
編集内容をリポジトリに加えます。
commit
ローカルに加えた編集内容を確定します。
push
リモートに加えた編集内容を確定します。
merge
他のブランチを合わせます。
pull
mergeとfetch両方の機能を持つ操作です。
fetch
リポジトリの更新をします。
stash
一時的に変更履歴を保持します。
rebase
mergeした内容を、全て変更履歴に加えます。
下記のサイトでGitの学習が出来ますので、是非、試読して見て下さい。
データベース
データベースは、下記の役割があります。
つまり、データベースが無いと、データのやり取りが出来ないので、アプリ開発には欠かせません。
データのやり取りを纏めた表現を、「CRUD」と呼びます。
主なデータベース
下記に各データベースの説明と、使用方法が記載されているサイトを貼りましたので、是非、試読して見てください。
Realm
モバイルアプリ開発に特化したデータベースです。他のデータベースに比べて、少ないソースコードで処理をすることから、アプリを素早く構築できるのが特徴です。
SQL
汎用的なデータベースで、モバイルアプリ以外にも使用されます。ただし、Realmに比べると、ソースコードが肥大化しやすいので、読むのが大変です。
Core Data
Appleが開発したデータベースです。Xcode上で構築することが出来るので、ライブラリの導入をしなくても、データベースを使用することが出来ます。
API
APIは、Application Programming Interfaceの略です。外部サービスとの連携を行い、認証機能の共有やデータを取り込むことで、そのデータをアプリ内で解析することが出来ます。
公開されているAPIでは、下記などがあります。
APIには、HTTPメソッドがあります。
HTTPメソッドとは、「クライアントがサーバーに対して、リソース(資源)の運搬を依頼する手段」となります。
リソースを受け取ることはGETメソッドと呼びます。
逆に、リソースを送ることはPOSTメソッドと呼びます。
最初のうちは、GETメソッドを扱えるようにしましょう。
ライブラリの導入
ライブラリは、予めある機能を持つプログラムで、導入することでそのプログラムを動作できる様になります。
ライブラリを導入するためには、下記の2点を使用します。
CocoaPodsとCarthageは、iOS向けライブラリ管理ツールです。
これらの違いは、環境構築の利便性と、読み込み速度(ビルド時間)にあります。
下記、それぞれの特徴と導入方法になります。
CocoaPods
導入方法
Carthage
導入方法
扱えた方がいいライブラリ
他にもRxSwiftやMoya、SwiftJsonなどありますが、こちらは難しい部類になりますので、まずは上記のライブラリを扱える様にしましょう。
また、開発案件によっても使用するライブラリが違うので、案件ごとに学習していくスタイルで良いと思います。
ユニットテスト(単体テスト)
ユニットテスト(単体テスト)は、開発者自身がテストコードを書き、機能テストやUIテストを自動化する仕組みのことです。
ユニットテストをすることで、目視で確認する必要のないテスト項目を自動で確認してくれるので、開発コストが抑えられ、作業効率が上がります。
エラーが発生した場合は、どの画面でエラーが発生したか分かる様に、自動でスナップショット(スクリーンショット)してくれます。
調査力
分からないことがあった時に、自分で解決する方法を探すことがあるため、調査力は必須です。
エンジニアのスキルの中で、最も必要なスキルになります。
下記、調査する上でのポイントになります。
どうしたらiOSエンジニアになれるか?
新卒の場合
転職する場合
独立する場合
案件を勝ち取る系だと、下記のサービスがあります。
近年では、SNSを利用して案件を貰うことが、増えてきていると思いますので、下記を利用するのも手段としてアリです。
学習方法
順に説明していきます。
udemy
udemyはあらゆる分野を学習できる動画教材のプラットフォームなので、プログラミング以外にも学びたいことがあれば、使ってみて下さい。
言語理解
SwiftとXcodeを開発を通して学べる
SQL
Git
ドットインストール
Swift 3と古いバージョンしかないので、軽く目を通すだけでも良いです。
YouTube
下記のチャンネルや動画がおすすめです。
開発全般
言語理解
ソースコード管理
データベース
API
ライブラリの導入
ユニットテスト
参考書
下記、おすすめの参考書になります。
Swiftの日本語マニュアル的な参考書
SwiftとXcodeを開発を通して学べる参考書
SwiftとRealmを学べる参考書
プログラミングスクール
お金は掛かりますが、経験として通ってみるのも良いのかもしれません。
友達 or 知り合いのエンジニアに教えてもらう
周りにエンジニアがいれば、いけそうですが中々いませんよね。
オンラインサロン
オンラインサロンは、月額制のサービスが多いので、すぐコミュニティから退会できたり、メリットがあります。
Qiita or Zenn or noteなどの技術ブログで学ぶ
Qiita
Zenn
note
著者のページ
著者の書いた記事でオススメ ↓
Macを持ってない人はどうすればいいのか?
考えられる選択肢は、下記になります。
順に説明していきます。
とりあえず買う(新品はかなり高い…)
新品は高いですが、性能に関して間違いなく良いので、自分に投資をすると思って買うのもアリだと思います。
中古でMacを買うのもあり、オークションとか
ある程度、パソコンの知識があれば、中古を買って使うかジャンク品を買い修理して使う手段もあります。
友人や知り合いに譲り受けるか貸して貰う
友人や知り合いに、Macを譲り受けるか貸して貰うかは、交渉次第になると思いますので、交渉上手な方は良いかもしれません。
めんどくさいけど、仮想マシンで作業をするか(邪道、難しいかも…)
これはかなり玄人向けの作業なので、おすすめしないです…
開発案件によって、仮想マシン下で動作確認したいなどは別ですが、今回に限ってはXcodeで開発することが目的なので、普通にMacを買った方がいいと思います。
仮想マシンならvirtualboxとかvmwareあたりで良さそう
それでも仮想マシンで、Xcodeを動かせるか確認したいのであれば、virtualboxやvmwareというソフトウェアをインストールして、試してみるのもアリだと思います。
dockerで仮想環境を構築してもいけそう
dockerでMac環境のコンテナを作成している人もいるので、dockerも興味ある方はMac環境を構築してみるのも面白いと思います。
おわりに
最後まで読んで下さり、ありがとうございます。
エンジニアが不足している中、求人が増え続けているので、誰にでもエンジニアになるチャンスはあります。
特にiOSや、Androidと言ったモバイルアプリエンジニアは、希少な人材なので仕事は見つけ易いと思います。
この記事を読んで、iOSエンジニアになろうと思って頂けると幸いです。
特典(ここから有料になります)
特典内容
技術ロードマップは、.pdfと.xmindのファイル形式の両方を添付しています。
XMindで閲覧したい方は、下記のサイトからXMindをインストールして下さい。
ポートフォリオ作成例に関しては、下記になります。
機能仕様書と単体テスト仕様書は、Googleドライブと.xlsxのファイル形式を添付しています。
UI設計書は、FigmaのURLリンクと、各画面の画像を添付しています。
学習計画表は、Googleドライブと.xlsxのファイル形式を添付しています。
ここから先は
¥ 300
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?