見出し画像

iOSアプリを作ろう・資料の探し方読み方

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

iOSアプリを作ろうシリーズのセミナーは今後も月一回のペースで続けます。(2020年3月以降COVID-19感染拡大防止のため休止しています)
詳細は connpass.com の 札幌Swift でご確認ください。そして機会があればぜひ参加してください。
アプリ作りやプログラミング教育に関連する話題は 札幌Swift のfacebookページ で発信しています。

【2020年12月25日に見直しました】
【2020年8月27日と2020年3月30日に内容やリンクなどを確認しました。】

快技庵(かいぎあん)の高橋です。
1980年代後半からのMacのアプリを作ってきた現役開発者で現在は電子書籍などのiOSアプリを作っています。
noteやTwitterのアイコンは最初に作った電子書籍アプリ豊平文庫(ほうへいぶんこ)のアイコンにしています。

『iOSアプリを作ろう』シリーズ、今回は『資料の探し方読み方』です。
公式ドキュメントを中心に、開発資料の大まかな構成から各ドキュメントの注目点までを解説します。

英語のドキュメントが多いですが、形式が決まっているので恐れる必要はありません。
このセッションを参考に公式資料を少しずつ使いこなしていきましょう。
膨大な情報の『どこを見れば情報を得られるか』も押さてください

画像1


画像2

『何がわからないのかわからない』状態から脱出するには、理解できることを少しずつ増やしていくしかありません。
そのためには情報収集が必要です。しかし開発に必要な資料は膨大な数存在しています。
学びはじめに限っては、資料のすべてを理解する必要はありません。安心してください。
まずは『どの分野か』『どの階層か』を確認しつつ、概要をつかむように心がけるのが良いと思います。

開発資料とは?

画像3

Documentation は一般には文書や説明書類のことです。
開発資料一般をドキュメントと呼び、doc と略されることもあります。
実際にコード作成に必須の『APIリファレンス』や解説記事、それにサンプルコードなども開発資料に含まれます。

iOS の開発資料は Apple が公開しています。
Swift 言語の資料も当初は Apple が公開していましたが、現在 Swift はオープンソースになったので swift.org のサイトで公開されています。

ただし swift.org のサイトも
Copyright © 2019 Apple Inc. All rights reserved.
Swift and the Swift logo are trademarks of Apple Inc.
とフッターに明記されています。
【2020年8月現在「Copyright © 2020 Apple Inc. All rights reserved.」と表示されています】

(この記事もまさにそうですが)参考となる解説記事は Apple 以外からも公開されています。

 Apple の開発者サイト

画像4

公式の Apple 開発情報のトップページは日本語サイトもあります。
https://developer.apple.com/jp/
日本語で読みやすいですが、新情報の対応には時間がかかる場合があります。
特に Apple が力を入れている内容は短時間で日本語に翻訳される場合もあります。
iOS12の特徴などへもリンクしていて日本語で読めます。

【2020年2月追記:iOS14/iPadOS・Xcode 12 についても日本語で読めます。】

英語のサイト(devサイトなどと略して呼ばれる場合もあります)
https://developer.apple.com/
こちらが公式のトップページです。
一番下の English ⌄ で 中文|日本語|ハングル の切り替えできます。ただし対応する翻訳ページがない場合日本語サイトのトップ(または日本語ドキュメントページ)を開きます。

画像5

トップページのデザインはいろいろ変わります。3月の時点ではWWDCへのリンクになっています。

Apple 公式資料の特徴

画像6

当然ですが正式な資料で信頼性も高く最新に保たれています。
後ほど詳しく説明しますが、変更点も明示してくれます。
ただしwebページなので消えてしまう場合があります
かつては pdf ファイルでの公開も多かったのでローカルのHDにダウンロードできましたが、最近はwebページのみでの公開が多くなっています。
基本的に英語の情報です。一部しか日本語に翻訳されていません。
これも後ほど説明しますが『Deprecated』の情報に注意が必要です。(非推奨なので新規のコードには使うべきでない)

【2020年8月現在「Beta」表記のドキュメントはiOS14など新しいOSから利用可能な型やメソッドなどです。毎年WWDC以降新OSリリースまでの過渡期の表示です。利用するにはベータ版のXcodeが必要ですのでご注意ください。】

iOS アプリ開発をするには英語は避けることはできません
翻訳サービスなどを使って乗り切ってください。
英語が得意な方はチャンスです。
得意でない場合でも苦手意識は捨てましょう

公式日本語ドキュメント

画像7

日本のデベロッパーサイト「開発」をクリックするとドキュメント(英語)日本語ドキュメントへのリンクがあります。
日本語ドキュメントのURLは
https://developer.apple.com/jp/documentation/
現在公開されているタイトル数は昨年より少ないです。
2019年3月末に公開されているものは iOS アプリ開発経験者向けの資料です。

【デベロッパアカウントヘルプは販売/公開に関連する情報です。】

公式ドキュメント(英語)

画像8

Apple の公式ドキュメントのURLは
https://developer.apple.com/documentation/
です。

【2020年8月現在記事執筆時と構成が変わっています。
Featured と Technologies の二つにわかれました。上記アドレスでは次画面を表示します。】

画像65

【下までスクロールすると Release Notes (OSやXcodeへのリンク)があります】

【Technologiesでフレームワーク別のドキュメントを選べます】

画像66

【ABC順で選びやすいとは言えません(230以上あります)、Filterにキーワードを入力し絞り込むと探しやすくなります。】
【Filter on this pageをクリックするとカテゴリーを選ぶこともできます。】

画像67

【フレームワーク選択後はあまり変わっていません。】

【2020年12月古い画面と説明を削除 】

フレームワークはたくさんあります。
決して最初から順に制覇などとは考えないでください(笑)。(AppKit は macOS 用のフレームワークです)
iOS アプリ作りにはまずは UIKit から見てください。
このページには全ての Apple プロダクトのドキュメントがあります。たとえば AppKit は macOS 用、TVMLKit は tvOS用です。

【2020年12月追記:プラットフォームによらないSwiftUIが追加になっています】

Documentation ページのヘッダ

画像10

Documentationページのヘッダ部分には現在のページに至る階層言語の切り替えAPI変更の表示設定を表示します。
ただし表示文字サイズとウインドウの幅で表示は変わります。
表示文字サイズに比べて幅が不足の場合は上記の情報は1行で表示できないため、階層などを確認するにはアクションが必要です。

画像11

ヘッダーを下に広げると階層、言語の切り替え、API変更の有無(変更ありの場合は表示・非表示切り替え)を表示します。

変更点の確認

画像12

変更点は基準になる開発環境を Xcode のバージョンで指定します。
上の図では Xcode 10.1 とは5箇所の変更があり、追加とDeprecated はないことがわかります。(Deprecatedは後で説明します)

画像13

変更や追加があった部分には上図のようなマークが付きます。
このマークも変更点を表示状態にした場合のみ表示します。

プログラミング言語選択

言語選択は現在 Objective-C と Swift を選択できます。

画像14

選択は保存されるのでページごとに切り替える必要はありません。
言語の選択は Declaration とメソッド名やインスタンス名のリンクなどに影響します。
確認した範囲では説明文やサンプル部分には影響しないようです。

【2020年8月追記:Swift専用のフレームワークがあるので注意してください。】
【2020年8月追記:Swiftにしなければ表示されない型・プロトコル・メソッド・プロパティなどがあります。】


画像15

残念ながら現在のドキュメンテーションページは少々使いにくい。
特に Getting Started や Guides など概要のドキュメントがどこにあるかすぐに見つけられないのは残念です。これは初学者はもちろん、ベテランでも初めて使うフレームワークはいくらでもあるのでそのたびにちょっと残念な感じになります。

ただ今回このセッションのために少しみてみたらそれらの情報も(英語では)消えたわけでなく、私が新しいサイトに不慣れなためにそう感じただけかもしれません。

iOSアプリをはじめて作る場合はいきなり UIKit のドキュメントを読み始めるのではなく、次に紹介するヒューマンインターフェイスガイドラインをまず読むことをおすすめします。

ヒューマンインターガイドライン(最初に読むべき資料)

画像16

Human Interface GuidelinesHIG と略される場合があります。
Mac が登城した1980年代から存在する資料です。(もちろん当時はMac専用の内容で書籍『インサイドマック』の一部でした)
当時の HIG は利用者の立場にたったソフトウェアにするための哲学から、さまざまな画面設計や操作についてすべき事するべきでない事が具体的に書かれていました。

画像17

現在の Human Interface Guidelines は OS 別テクノロジー別に書かれています。
英語ですが画面の例なども豊富で  iOS デバイスを使っている人であれば読みやすいでしょう。

画像18

HIG はアプリを作る時の指標です。

画像19

HIG はデベロッパーサイトの「デザイン」ページからリンクしています(英文)。
https://developer.apple.com/design/human-interface-guidelines/
iOSのヒューマンインターフェイスガイドラインへのリンクURLは
https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/

iOS の場合は iOS、App Architecture、User Interaction、System Capabilities、Visual Design、Icons and Images、Bars、Views、Controls、Extensions に分類されています。

画像20

各項の For developer guidance から クラスやAPI などの技術資料へリンクしています。
画面などの要素の解説があり、それを実装するクラスなどがすぐにわかる点が開発者にとってありがたいです。

画像21

HIGの各ページの一番下には Previous / Next のリンクがあり最後まで順に見ることもできます。

これからアプリを作る場合はまず ViewsControls 次に Bars あたりから確認することをお勧めします。
サンプル画面や短いサンプル動画もあります。動画は Play ボタンで再生し確認してください。(Accessibility の動画は音声つきのものもあります)

デバイスOS 機能の変化で HIG も変化しています。これまでも iPhone X やマルチタスキングで HIG の内容が追加や一部修正がありました。
今年も6月に WWDC が開催されます。そこで新しいガイドラインが追加になるかもしれません。

【iOS 13.4から User Interaction > Pointers (iPadOS)が追加になっています。】
【2020年8月追記:What's New で最新の追加変更を確認できます。】

画像22

HIG には次のタブもあります。
Resourcesデザインに利用可能なデータをいくつかのファイルフォーマットでダウンロードできます。(初学者向けではありません)
Video はHIG関連ビデオへリンクです。iOSだけでなくmacOSなどのビデオもあります。
What's New はこれまでのデザイン関連のニュースが日付順に並んでいます。

テクノロジー別 HIG

画像23

AirPlay からはじまるテクノロジー別リンクもあります。
中でも Augmented Reality は ARアプリを作る場合に必見です。
https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/augmented-reality/

Documentation ページ共通情報

ドキュメンテーションページの説明に戻ります。

ページ右側は共通のフォーマットで次の情報が書かれています。
SDK 対応OSとバージョン iOS tvOS など複数の場合もあり
Framework (インポートすべき)フレームワーク
On This Page ページ内見出しへのリンク
 Declaration 宣言(指定言語で表示)型などを確認できる
 Overview   概要説明
 Topics    項目へのリンク
 Relationships 継承・被継承クラス・準拠プロトコル
 See Also   参照すべき項目

●UIButton ページの表示例

画像24

カテゴリー別のリンクや Article にはアイコンがついて種類をあらわします
メソッド、プロパティ、定数などはアイコンはありません

画像25

【2020年8月現在Articleが充実しつつあります。短いコードサンプルなどを含む説明が増えてきました。】
サンプルコードには{}のアイコンが付いています。

UIKit の階層

画像26

UIKit を例にドキュメントの階層を説明します。

UIKit を選ぶと Framework としての解説(Overview)と First Steps/App Structure/User Interface などに分類されています。
【2020年12月現在最初は Essentials になっています。】
User Interface はさらに Views and ControlsView Controllers といった直下の記事(Article)ページへのリンクがあります。

画像27

View Controllers のページは class UIViewController などへリンクします。

UIViewController は重要なクラスなので Overview には図版付きで詳しく解説が載っています

画像28

Topics には UIViewController クラスのメソッドやプロパティが概要とともに一覧になっていて、それぞれの解説ページにリンクしています。

画像29

メソッドやプロパティのページでは、そのクラスに後から追加された場合も考えられます。 OS バージョン表示に注意してください。

画像30

ヘッダーでの階層表示

画像31

ドキュメントのヘッダに表示している階層表示はリンクとしても働きます。
(幅不足の場合は右側をクリックしヘッダを詳細表示に切り替えてください)
クリックでそのページを開きます。

Deprecated に注意

画像32

ドキュメントの Deprecated 表記には十分注意しましょう。
Deprecated は過去には正式使われていたメソッドやプロパティ(クラスやフレームワークの場合もある)だが、現在は非推奨となっていることを意味します。
当然古いOSでは問題なく利用できますが、今後の OS アップデートで互換性が保証されないものです。
Deprecated にはいろいろな理由が考えられますが、新しく作るコードには使わないのが最善です。

既に利用している場合、代わりとなるメソッドやプロパティの存在が確認できればそちらを使うなどの対応をはやめにとりましょう。
放置しておくと、原因のつかみにくいバグとなり実行に悪影響を与える場合があります。(私自身も放置したために苦労したことがあります)

ここから先は

5,505字 / 32画像
この記事のみ ¥ 500

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