見出し画像

iOSアプリを作ろう・開発に必要な知識

毎月札幌でiOSアプリ作りをアシストするセミナーをやっています。その内容を物理的に参加できない方のためにnote上で公開します。
ぜひアプリ作りにチャレンジしてください。

【この記事は2020年12月24日に見直し、一部加筆修正しています】

快技庵(かいぎあん)の高橋です。
古くからのMacの開発者で現在は電子書籍などのiOSアプリを作っています。
iOSアプリ作りのシリーズ、今回は『開発に必要な知識』です。

私は Mac アプリや iPhone アプリをひとりで作ってきました。『iOSアプリを作ろう』シリーズでは個人でアプリを作るために必要な情報をお届けします。

画像1

このセッションではアプリ開発に必要な情報や知識の概要注意点まとめてお話しします。
項目としてはオブジェクト指向とプログラミング言語Swift、iOSとフレームワーク、それにデザインパターンの各分野です。

それぞれとても重要で丸1日でも終わらないほどのボリュームがありますが、一気に行きます。まずはどの分野の用語か意識してください。
それと必要機材も少し話します。

画像2

アプリ開発のためにはとてもたくさんの情報が必要です。
とてもたくさんです、でも心配はありません。

全て暗記する必要はまったくなく、ちょっと調べてアクセスできるなら覚えなくても大丈夫です。
ただし正確な情報でなければだめです。この点は注意が必要です。
毎回調べるのは効率が悪いので確認したことはメモするのがオススメです。
私はEvernoteにメモしています。
(私の使い方ではEvernoteは無料の範囲で実用上問題なく使えています)

ネット検索では、上位に表示される記事が現在も正しいとは限らない場合があることにご注意ください。
他人のブログを丸写しのページが上位の場合もあります。このようなページは内容も更新されないなど問題が予想されます。

またXcodeにはキー入力の補完機能があり、大文字小文字まで正しいスペルを提示してくれるので、ちょっと入力し候補から選ぶだけで済みます。
特に重要な用語は何度も繰り返し出てくるので自然に身につくはずです。

アプリ開発には膨大な情報が必要ですが、なんとかなります。
膨大な数の用語に圧倒されそうになるかもしれませんが、これから話す概要など元に少しずつ分類整理してください。

アプリ作りは独学可能

画像3

アプリ作り(プログラミング)は独学可能です。
学校で学ばなくてもできます。
逆に講義を受けても復習などの独学は必須です。

アプリ作り(プログラミング)はいつでも、そしてどこでも学べます
ほとんどの情報はネットから無料で得ることができます。

プログラミング(特に iOS アプリ開発)の情報は Apple 公式の技術情報をはじめ、英語で書かれたものが多いです。
このため英語が得意だと有利です。
少なくとも英語の苦手意識は捨てましょう。翻訳サービスなどをどんどん利用してください。私も使っています。

すでに膨大な情報があります。さらに毎年新技術が登場し続けています。
変化が激しいので、短期集中である程度のレベルになるとその後が楽になります。
諸般の事情で短期集中で勉強できなくても大丈夫です。基本はかわりません。少しずつ基本・基礎の理解を深めてください。

古い情報に注意

画像4

技術情報は最新かつ正確であっても確実に古くなる宿命があります。
webで検索すると古くなった情報が多数表示される場合があります。
(古くてもそのまま使える情報もあるので、単純ではありません)

【この記事も2020年3月29日と12月24日に見直し、加筆修正しています】

プログラミング言語Swift や開発ツール Xcode は毎年変更があります。
それぞれバージョンを明記していない記事には注意してください。

注意といっても最初は難しいかもしれません。
自分にとって『質の高い情報を発信している人』を見つけフォローするのが比較的効率よく正確な情報を得られるのでオススメです。
「今の自分にとって」がポイントです。自分自身がレベルアップして行くと、必要な情報も変わってきます
わたしは Twitter で自分用のリストを作り活用しています。

画像5

プログラミングには様々な分野の情報が必要ですが、すべてを理解し熟知している人はたぶんいません。
必要な時にアクセスできれば十分です。
学びはじめでは、まずはサンプルを見つけ自分の環境で動かして開発プロセスの雰囲気を感じましょう。

知らないことばかりなのは当然です。問題ありません。
少しずつで良いので、日々理解できることを増やしましょう。

常に勉強は必要です。やればやるだけ理解できることが着実に広がるはずです。
勉強といっても学校の勉強とはちょっと違い、情報収拾(分類&整理)と確認が重要と思っています。
日本語で見つからなくても、英語では提供されていることが多いです。

料理と似ている

画像6

アプリ作りは料理と似ています。食べる人のことを思いいろいろ工夫するところも似ています。
最初はまねして作ってみるのが近道なところも似ています。
実際にやってみないとわからないこともたくさんあるので、ぜひサンプルなどを操作しアプリを作ってみてください。
少し慣れてきたら、自分なりにいろいろ変更したり追加したりして経験を積んでください。

料理用語も使われています。
『レシピ』は最もよくみかけますね。

キッチン』も使われます。ずいぶん昔ですがAppleが Mac の CPU を 68KからPowerPC に変えたとき、対応方法を開発者に伝える少人数の講習会が「キッチン」と呼ばれていました。数日かけて各社の担当者がアプリをPowerPC用に対応させたものです。

コンピュータの基礎知識

画像7

コンピュータの基礎知識は概論のレベルは必要です。
メモリの概念とバイトやビットなどの単位について、メモリとデータの関係(アドレスとデータのサイズ)、16進数の書き方(読み書き)、論理演算、それに文字コードなどコンピュータサイエンスの基礎的な知識(使うための知識)があると楽です。
中学または高校で習ったかもしれません。明確にはわからない場合は早めに確認してください。

昔(おおざっぱに2000年以前の印象)はコンピュータ内部の少し詳しい知識(作るための知識)がないとアプリ作りは困難が多かったのですが、現在は後ほど説明するフレームワークが充実しメモリサイズなど環境の制限が少なくなったのでとりあえずなんとかなる場合が多いと思います。
もちろん作るアプリが複雑になりバグの原因をさぐったり、性能を高める(チューニングする)にはそれなりの知識と技術が必要になります。

用語の洪水とその対策

画像8

『用語の洪水』を脅威に感じている方は多いでしょう。
私もオブジェクト指向プログラミングをよく知らない頃はさっぱりわからず苦労しました。

わからない用語を調べる方法は、現在であればサイトで検索が使えます。
書籍の索引やコンピュータ用語辞典もありますが、変化が激しいので陳腐化も早いかもしれません。でも一貫性のある詳しい解説は大切です。
用語は英単語でも本来の意味や語感と違っている場合もあります。普通の辞書でもコンピュータ用語としての説明を載せている辞書もふえているようです。

ことわざで『聞くは一時の恥、聞かぬは一生の恥』とあります。
どんどん吸収するのは良いことですが、(私を含めて)教えてくれる人の情報が最新とは限らないので、必ず自分でも確認しましょう。

画像9

このセッションでは用語の洪水対策として色分けで分類しました。(オブジェクト指向を含め、分野を四つ色と一つのアイコンで区別しています)
知らない用語が出てきてもまずはどの分野かを確認してください。
このセッションでは基本的なことを話すので、これから何度も目にすることになる用語は特に基本的な用語です。
繰り返し目にすることで覚えてしまうので心配はいりません。

オブジェクト指向

画像10

まずは『オブジェクト指向』です。
これは「オブジェクト-オリエンテッド-プログラミング(object-oriented programming)」のことで OOP と略される場合も多いです。
このオブジェクト指向では用語が独特です。
ひとことで言って『とっつきにくい』用語ばかりです。
でも重要で、現代のアプリ作成には不可欠なのでじっくり取り組んでください。

オブジェクト指向はプログラミング言語によらず考え方は同じですので、この先も必要な知識です。
とっつきにくさの要因のひとつはなじみのない用語です。
原理的な解説だけでなく『実際のプログラミングではどうなのか』を実感しながら調べたり動かしてみたりすると比較的早く理解が進むと思います。

画像11

ここに挙げたオブジェクト指向プログラミングの用語はどれも常時使われるものです。
これらの用語に限らず、見知らぬ用語がアプリ作りの解説などで出てきたら、意味を確認しながら進んでください。

プログラミング言語Swift

画像12

ここからはプログラミング言語の話です。
アプリを作ろうのシリーズでは常に『Swift言語』を使います。(以下 Swift と書きます)
『言語』なので文法があります。この文法は独学しやすいものの一つです。

実際のプログラミングは『言語』の応用で、オブジェクト指向プログラミングの知識が必要になります。
Swift ではオブジェクト指向を実現する仕組みは言語自体に組み込み済みです。
このため Swift のクラスは NSObject クラスを継承する必要はありません。(NSObject を継承している場合も問題なく使えます)

NSObjectはCocoaの基本となるクラスです。

Swiftは変化が早い

画像13

Swift は 2014年にApple が発表しました。現在はオープンソースとなっていますが、Appleとの関係は深いです。
登場以降毎年バージョンアップされています。2016年くらいまでは毎年かなり大幅に変わっていました。
現在ではかなり安定しています。2020年12月現在のバージョンは5.3です。
Swiftの新しいバージョンは開発ツール Xcode の新しいバージョンで提供されます。

【2020年12月24日現在 Xcode 12.3が対応するSwiftのバージョンは5.3です】
5.1から5.2の変更点は少なめでした。
5.0から5.1はかなり追加がありました。

日本の場合、Swift関連用語の正式な日本語訳がないことが問題です。
残念ながら用語の日本語訳がまちまちな状態です。
書籍により用語が違う場合があるので(いろいろ調べるほど)初学者に混乱を招く状況です、解決策としてはできるだけ英語での用語と結びつけて学ぶのが良いと思います。

画像14

Swiftは新しく登場しただけあっていろいろ便利です。
(Objective-C よりも評判も良いようです)
実行する前、コンパイルの段階で多くの問題を検出してくれます。
Objective-C で書かれた資産も問題なく使えます。

注意点ももちろんあります。
強力で柔軟な記述ができるので、上級者がテイクニックを駆使したコードは読むのが難しいことがあります。

Swiftの特徴

画像15

Swift でコードを書くといろいろとエラーが出る場合が少なくありません。
これは実行前に問題となりそうな部分の細かい指摘です。
Xcode を使っていて指摘されるエラーやワーニングには淡々と対応しましょう。ワーニングを残しておくことはよくありません。せっかくの指摘が埋没することでバグになってしまいます。
自分で書くコードはワーニングなしを常に目指すのが得策です。

画像16

『値なし』の扱いとオプショナルoptional)も特徴です。
はじめのうちはなぜこのように面倒なことをするか不思議に思うことでしょう。

Swiftでは通常型の変数は値なしの状態をゆるしません。実行時に予期しないエラーによる終了を防ぐためです。
このため初期化しない場合や、『値なし』を意味する「nil」を代入しようとするとエラーが発生します。
既存の iOS 用開発環境(※Cocoa Touch 後述)では『値なし』を様々な場面で使っています。これらの環境を利用するソフトウェアを Swift言語で置き換えるためにも『値なし』に対応が必要でした。
Swift では『値なし』で扱う必要がある場合は optional を使います。
『値なし』かもしれない部分はかならず optional にすることで不注意などを検出できるようになっているのです。
optional では値を取り出すための「アンラップ操作」が必要です。これも必ず『値なし』に対応するための仕組みです。
optional は避けて通ることはできません、どんどん使って慣れてください。

【宣伝:Swift5初級ガイド】

画像17


電子書籍『Swift5初級ガイド』をAppleのブックストアから出しています。サンプルは無料です。MacでもiPadでもiPhoneでも読めます。
Swift 5.3に対応した第7版がダウンロード可能です。(ご購入済みの場合は無料アップデートです)
ブックストアから一度購入すると今後のアップデートは無料で読めます。

7宣伝store

記事執筆時には古い「Swift4初級ガイド」もストアに残していましたが、現在は『Swift5初級ガイド』のみにしました。
Playgroundsの情報が必用な場合は「未経験者のための『コードを学ぼう』ガイド」をご検討ください。

宣伝1storeのコピー

『Swift5初級ガイド』と「未経験者のための『コードを学ぼう』ガイド」はどちらも Apple Books アプリ(ブック アプリ)で iPad iPhone Mac のどれでも読むことができます。
文字サイズも自在に設定でき、本文を検索できる電子書籍です。
無料サンプルでご確認ください。

iOSとは

画像18

ここから先は

6,183字 / 16画像
この記事のみ ¥ 500

今後も記事を増やすつもりです。 サポートしていただけると大変はげみになります。