Enviar búsqueda
Cargar
Swift入門
•
2 recomendaciones
•
3,972 vistas
聡 中川
Seguir
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 88
Descargar ahora
Descargar para leer sin conexión
Recomendados
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
Jongwon Kim
Robot framework en Browser Library
Robot framework en Browser Library
christiantester
Introduction to Python Asyncio
Introduction to Python Asyncio
Nathan Van Gheem
Introduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design Application
eXo Platform
Beautfiul world of Flutter Testing
Beautfiul world of Flutter Testing
Max Weber
Automatizando uma app Híbrida
Automatizando uma app Híbrida
Elias Nogueira
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
Walmyr Lima e Silva Filho
Rest API Testing
Rest API Testing
upadhyay_25
Recomendados
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
Jongwon Kim
Robot framework en Browser Library
Robot framework en Browser Library
christiantester
Introduction to Python Asyncio
Introduction to Python Asyncio
Nathan Van Gheem
Introduce Bootstrap 3 to Develop Responsive Design Application
Introduce Bootstrap 3 to Develop Responsive Design Application
eXo Platform
Beautfiul world of Flutter Testing
Beautfiul world of Flutter Testing
Max Weber
Automatizando uma app Híbrida
Automatizando uma app Híbrida
Elias Nogueira
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
Walmyr Lima e Silva Filho
Rest API Testing
Rest API Testing
upadhyay_25
Application Lifecycle Management
Application Lifecycle Management
Amazon Web Services
The Architecture of an API Platform
The Architecture of an API Platform
Johannes Ridderstedt
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
Microservices Integration Patterns with Kafka
Microservices Integration Patterns with Kafka
Kasun Indrasiri
Getting sh*t done with Azure Functions (on AKS!)
Getting sh*t done with Azure Functions (on AKS!)
Rick van den Bosch
UiPath Test Suite
UiPath Test Suite
Cristina Vidu
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
jbugkorea
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
Diana Gray, MBA
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
iFunFactory Inc.
Getting started with Appium 2.0
Getting started with Appium 2.0
Anand Bagmar
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
Chris Ohk
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Samanta Cicilia
Load Testing in Python with Locust from Zero
Load Testing in Python with Locust from Zero
Prashanth Sams
Detox Mobile Automation
Detox Mobile Automation
Sharaniya Premkumar
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
DevOpsDays Tel Aviv
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
Redis Labs
Test your microservices with REST-Assured
Test your microservices with REST-Assured
Michel Schudel
UiPath Test Suite Overview
UiPath Test Suite Overview
Erik Leaseburg
E2 e test with testcafe
E2 e test with testcafe
Malang QA Community
Applitools Visual AI Overview.pdf
Applitools Visual AI Overview.pdf
Applitools
Study Swift
Study Swift
Akihiro Urushihara
Swift入門おさらい
Swift入門おさらい
GMO TECH 株式会社
Más contenido relacionado
La actualidad más candente
Application Lifecycle Management
Application Lifecycle Management
Amazon Web Services
The Architecture of an API Platform
The Architecture of an API Platform
Johannes Ridderstedt
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
Microservices Integration Patterns with Kafka
Microservices Integration Patterns with Kafka
Kasun Indrasiri
Getting sh*t done with Azure Functions (on AKS!)
Getting sh*t done with Azure Functions (on AKS!)
Rick van den Bosch
UiPath Test Suite
UiPath Test Suite
Cristina Vidu
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
jbugkorea
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
Diana Gray, MBA
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
iFunFactory Inc.
Getting started with Appium 2.0
Getting started with Appium 2.0
Anand Bagmar
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
Chris Ohk
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Samanta Cicilia
Load Testing in Python with Locust from Zero
Load Testing in Python with Locust from Zero
Prashanth Sams
Detox Mobile Automation
Detox Mobile Automation
Sharaniya Premkumar
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
DevOpsDays Tel Aviv
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
Redis Labs
Test your microservices with REST-Assured
Test your microservices with REST-Assured
Michel Schudel
UiPath Test Suite Overview
UiPath Test Suite Overview
Erik Leaseburg
E2 e test with testcafe
E2 e test with testcafe
Malang QA Community
Applitools Visual AI Overview.pdf
Applitools Visual AI Overview.pdf
Applitools
La actualidad más candente
(20)
Application Lifecycle Management
Application Lifecycle Management
The Architecture of an API Platform
The Architecture of an API Platform
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Microservices Integration Patterns with Kafka
Microservices Integration Patterns with Kafka
Getting sh*t done with Azure Functions (on AKS!)
Getting sh*t done with Azure Functions (on AKS!)
UiPath Test Suite
UiPath Test Suite
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-1.pdf
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
Getting started with Appium 2.0
Getting started with Appium 2.0
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Load Testing in Python with Locust from Zero
Load Testing in Python with Locust from Zero
Detox Mobile Automation
Detox Mobile Automation
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
Test your microservices with REST-Assured
Test your microservices with REST-Assured
UiPath Test Suite Overview
UiPath Test Suite Overview
E2 e test with testcafe
E2 e test with testcafe
Applitools Visual AI Overview.pdf
Applitools Visual AI Overview.pdf
Destacado
Study Swift
Study Swift
Akihiro Urushihara
Swift入門おさらい
Swift入門おさらい
GMO TECH 株式会社
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
聡 中川
Briancheong resume
Briancheong resume
shakeela1992
AW 学び続ける力 スライド
AW 学び続ける力 スライド
聡 中川
Recruitment slides
Recruitment slides
shakeela1992
Math54 o n
Math54 o n
Iceeci Flatron
ปี2553
ปี2553
Iceeci Flatron
Engels cricket
Engels cricket
Maartje Zwart
Gat2
Gat2
Iceeci Flatron
ปี2554
ปี2554
Iceeci Flatron
0 kscl de_chung
0 kscl de_chung
Lê Thị Hương Trang
Desfile enscoop 2011
Desfile enscoop 2011
AgostinaBerni
เฉลย2554
เฉลย2554
Iceeci Flatron
Logik 1
Logik 1
bsnnsb
Women Smokers is More Risk from Colon Cancer - Springhill Medical
Women Smokers is More Risk from Colon Cancer - Springhill Medical
aleidadominik
Brillen en lenzen
Brillen en lenzen
Maartje Zwart
งานคู่ 9 16
งานคู่ 9 16
'Fixation Tar
Android part1
Android part1
Aman Agarwal
Destacado
(20)
Study Swift
Study Swift
Swift入門おさらい
Swift入門おさらい
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
Briancheong resume
Briancheong resume
AW 学び続ける力 スライド
AW 学び続ける力 スライド
Recruitment slides
Recruitment slides
Math54 o n
Math54 o n
ปี2553
ปี2553
Engels cricket
Engels cricket
Gat2
Gat2
ปี2554
ปี2554
0 kscl de_chung
0 kscl de_chung
Desfile enscoop 2011
Desfile enscoop 2011
เฉลย2554
เฉลย2554
Logik 1
Logik 1
Women Smokers is More Risk from Colon Cancer - Springhill Medical
Women Smokers is More Risk from Colon Cancer - Springhill Medical
Brillen en lenzen
Brillen en lenzen
งานคู่ 9 16
งานคู่ 9 16
Android part1
Android part1
Similar a Swift入門
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム
聡 中川
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
Swift勉強会
Swift勉強会
Nagamine Hiromasa
フロントエンド開発環境
フロントエンド開発環境
Masaki Kawaguchi
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
toyship
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
iOSでMVVM入門
iOSでMVVM入門
ishikawa akira
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
iOSハンズオントレーニング Uikit編
iOSハンズオントレーニング Uikit編
聡 大久保
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
Tomohiro Kumagai
MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
flasherがはじめてiOS開発をしてみて
flasherがはじめてiOS開発をしてみて
佐藤 俊太郎
Keep a diary
Keep a diary
幸雄 村上
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
Fumiya Sakai
WKWebViewとUIWebView
WKWebViewとUIWebView
Yuki Hirai
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckin
Kosuke Ogawa
Similar a Swift入門
(20)
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Swift勉強会
Swift勉強会
フロントエンド開発環境
フロントエンド開発環境
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
iOSでMVVM入門
iOSでMVVM入門
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
Xcode 6の新機能
Xcode 6の新機能
iOSハンズオントレーニング Uikit編
iOSハンズオントレーニング Uikit編
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
MVCもやもや話
MVCもやもや話
flasherがはじめてiOS開発をしてみて
flasherがはじめてiOS開発をしてみて
Keep a diary
Keep a diary
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
WKWebViewとUIWebView
WKWebViewとUIWebView
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckin
Más de 聡 中川
先端技術 プレテスト
先端技術 プレテスト
聡 中川
先端技術 No sql
先端技術 No sql
聡 中川
先端技術 Hft
先端技術 Hft
聡 中川
先端技術 データサイエンティスト
先端技術 データサイエンティスト
聡 中川
先端技術トピックス 言語ランキング
先端技術トピックス 言語ランキング
聡 中川
先端技術 競技プログラミング
先端技術 競技プログラミング
聡 中川
先端技術 スーパーコンピュータ
先端技術 スーパーコンピュータ
聡 中川
先端技術 セキュリティ最前線
先端技術 セキュリティ最前線
聡 中川
先端技術 関数型プログラミング
先端技術 関数型プログラミング
聡 中川
先端技術 気象とコンピュータ
先端技術 気象とコンピュータ
聡 中川
先端技術 量子コンピュータ
先端技術 量子コンピュータ
聡 中川
先端技術ガイダンス
先端技術ガイダンス
聡 中川
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門
聡 中川
Más de 聡 中川
(14)
先端技術 プレテスト
先端技術 プレテスト
先端技術 No sql
先端技術 No sql
先端技術 Hft
先端技術 Hft
先端技術 データサイエンティスト
先端技術 データサイエンティスト
先端技術トピックス 言語ランキング
先端技術トピックス 言語ランキング
先端技術 競技プログラミング
先端技術 競技プログラミング
先端技術 スーパーコンピュータ
先端技術 スーパーコンピュータ
先端技術 セキュリティ最前線
先端技術 セキュリティ最前線
先端技術 関数型プログラミング
先端技術 関数型プログラミング
先端技術 気象とコンピュータ
先端技術 気象とコンピュータ
先端技術 量子コンピュータ
先端技術 量子コンピュータ
先端技術ガイダンス
先端技術ガイダンス
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門
Swift入門
1.
iOSアプリを作ってみたい人のための Swift入門 nakasen_20th
2.
目指すところ • Swift言語の特徴を知る • Swift言語でiOSアプリを作る
3.
前提 • 他言語でのプログラミング経験がある • Xcode
6.3以降がインストールされた Macintoshを持っている • メモリ4GB以上
4.
学習項目 1. Swift言語概要 2. Xcode基礎 3.
Swift基礎 4. UIKit基礎 5. サンプルアプリ作成
5.
1. Swift言語概要 • Apple社が開発、2014年6月発表 •
OS X、iOSアプリ開発用言語 • Objective-C言語からの移行に配慮 • 他言語の長所を吸収、基本的に関数型 • 言語仕様がまだ流動的 (なぜSwift言語が誕生したのか?)
6.
iOSのバージョン • Swift言語はiOS7(& OS
X 10.9)以降に対応 • 今回はiOS8以降のみを対象 ‣ iOS8動作機種 • iPhone4S以降 • iPad 2以降、iPad mini全て • iPod Touch 第5世代以降
7.
フレームワーク • https://developer.apple.com/legacy/library/ documentation/Cocoa/Conceptual/ CocoaFundamentals/CocoaFundamentals.pdf • 各フレームワークの機能を利用して一番上層の アプリケーション部を作成する。
8.
2. Xcode基礎 • Apple社純正統合開発環境 •
バージョンは最新(6.4)にしておく (20150711現在) • Swift言語の基礎を学ぶ時は「Playground」で • iOSアプリ構築時は「Project」で • 画面構成を覚える
9.
Playground画面 • 「File」→「New」→「Playground」 • エディタエリア(初期画面) •
Assistant Editor画面を表示 「View」→「Assistant Editor」→ 「Show Assistant Editor」 • ソースコード入力で自動実行
10.
Playground画面
11.
Project画面 • 「File」→「New」→「Project」 • 通常のiOSアプリは 「Single
View Application」で • 大きく分けて3つのエリア ✦ Navigators Area ✦ Debug Area ✦ Utilities Area
12.
Project画面 • 主に左右に3分割で把握
13.
Storyboard • エディタエリアの初期状態を確認 • Document
Outlineを表示 View Controllerがひとつ その上にViewがひとつ
14.
Object library • UIパーツを確認 •
ドラッグでView上に配置 Label Button View Controller
15.
セグエで連結 • Buttonから次のView Controllerへ Control
+ ドラッグ • セグエの種類は「Show」 • 最初のView ControllerにNavigation ControllerをEmbed In • もう一度Document Outlineを確認
16.
Navigation Controller • View
Controllerの遷移を記録して管理 • 画面上部のNavigation Barに戻るボタンを 自動生成 • Embed InしたView Controllerから記録開始
17.
Attributes inspector • Viewの属性を変えてみる •
Labelのテキストを変えてみる • Buttonの種類を変えてみる • Segueの種類を変えてみる
18.
ビルド、実行 • ここで実行してみる(iOSシミュレータの起動) • ハードウェアを選択 •
画面の向きを変えてみる
19.
3. Swift基礎 a. 変数と定数、型 b.
式、演算 c. 構文 d. 関数 e. クラス f. オプショナル型 g. その他の型
20.
a. 変数と定数、型 • 変数と定数は値の入れもの •
変数は値の変更あり、定数は値固定 • 可能であればなるべく定数で宣言 • 宣言時、型は省略可能(型推論が可能な場合)
21.
a. 変数と定数、型 • 代表的な型 ✦
Int(整数) ✦ Double、Float(実数) ✦ Bool(真偽) ✦ String(文字列)
22.
変数、定数の宣言
23.
b. 式、演算 • 式と演算は他の言語とほぼ同じ ✦
各種演算子(代入、算術、比較、論理…) ✦ 演算順序 ✦ 実例で習得
24.
c. 構文 • if文 ✦
条件式の書き方に注意 • for文 • while文 • Switch文
25.
if文、for文
26.
switch文
27.
列挙型とswitch文
28.
d. 関数 • 数学の関数との違い •
引数と戻り値 • 引数がない場合、1つある場合、 2つ以上ある場合 • 戻り値がない場合、ある場合 • 関数の型
29.
関数の書き方 (1) func 関数名{} (2)
func 関数名(引数リスト){} (3) func 関数名(引数リスト) -> 戻り値の型 {} (4) func 関数名(引数リスト) -> 戻り値の型 { 処理(戻り値を求めるなど) }
30.
関数の書き方 • 引数リストの指定 ✦ 引数がない場合 () ✦
引数が1個の場合 (引数名: 型名) ✦ 引数が2個以上の場合 (引数名1: 型名, 引数名2: 型名・・・)
31.
関数の書き方
32.
関数の書き方 • 関数の実行(呼び出し) ✦ 関数名(引数名:
値・・・)
33.
e. クラス • クラスは変数と関数からなる設計図 •
クラスでの変数はプロパティ、関数はメソッド • 設計図をもとに作られた実体がインスタンス • Swiftではクラス(とクロージャ)のみ参照型 • 継承とイニシャライザ
34.
クラスの書き方 (1) class クラス名{} (2)
class クラス名: スーパークラス名{} (3) class クラス名: スーパークラス名{ プロパティ宣言 メソッド宣言 }
35.
クラスの書き方
36.
クラスの書き方 • クラスの利用(インスタンス作成、実行)
37.
イニシャライザ • initという特別な名前を持つメソッド • クラス(や構造体)の初期化のために用いる
38.
イニシャライザ • イニシャライザの呼び出し
39.
e . 構造体 •
構造体はクラスとほぼ同じ方法で定義 • クラスとの違いは「値型」であること (クラスは「参照型」) • メソッドの引数の指定方法に一部違いあり • クラスメソッド→タイプメソッド • クラスプロパティ→タイププロパティ
40.
f. オプショナル型 • nilの存在(値が何も入っていない状態) (空白、""、0はnilではない) •
nilにアクセスすると実行時エラー • nilをうまく使うプログラミングも可能 nilは必要
41.
オプショナル型 • 変数宣言時に「?」をつけるとオプショナル型 (変数をラップ) • オプショナル型から変数の中身を取り出すとき は「!」(アンラップ) •
nilの存在を気づかせてくれるのがオプショナル型
42.
オプショナル型
43.
オプショナル型の書き方 • オプショナル型を「!」で宣言すると アンラップ時「!」が不要(暗黙的アンラップ) • オプショナル型変数のプロパティに アクセスする時に「?」を付加 (オプショナルチェーン)
44.
g. その他の型 • Array(配列) •
Dictionary(辞書、連想配列、ハッシュ) • Any、AnyObject(様々な型を含められる) • さまざまな数値型 • その他新たな型をどんどん作れる仕組みあり (クラス、構造体、列挙型、プトロコル・・・)
45.
Array
46.
Dictionary
47.
型の変換 • 数値計算での型合わせ(型変換)
48.
型の変換 • スーパークラス、サブクラス間の型合わせ (アップキャスト、ダウンキャスト)
49.
4. UIKit基礎 • UI(ユーザインターフェース)の役割 情報の伝達 ユーザの誘導 総合的なユーザ体験 •
UIで迷ったらAppleのドキュメントに立ち返る 「iOSヒューマンインターフェースガイドライン」 https://developer.apple.com/jp/devcenter/ios/library/ documentation/userexperience/conceptual/mobilehig/ BasicsPart/BasicsPart.html#//apple_ref/doc/uid/ TP40006556-CH2-SW1
50.
StoryboardでUI構築 • UI構築作業をStoryboardに任せる • もう一度Object
libraryでUIパーツを確認 • もう一度Attributes inspectorの項目を確認
51.
ViewControllerグループ • UIViewControllerクラス • UINavigationControllerクラス •
UITableViewControllerクラス • その他
52.
Viewグループ • UILabelクラス • UIViewクラス •
UIImageViewクラス • UITextViewクラス • その他
53.
Controlグループ • UIButtonクラス • UISegmentedControlクラス •
UITextFieldクラス • その他
54.
その他グループ • UITableViewCellクラス • UIGestureRecognizerクラス •
その他
55.
UIKit重点項目 • UIViewControllerクラス ライフサイクル Navigation Controllerによる管理 遷移してきた画面(ViewController)を配列で記憶 pushで追加、popで取り出し(戻る) •
UITableViewControllerクラス 構成要素 代表的なメソッド セルの生成方法
56.
UIViewController • 各メソッドの呼び出されるタイミング http://d.hatena.ne.jp/glass-_-onion/20120405/ 1333611664 など、良記事がたくさん viewDidLoad viewWillAppear: viewWillDisappear: prepareForSegue:: didReceiveMemoryWarning
57.
UITableViewController • 各メソッドの機能 http://blogios.stack3.net/archives/604 (UITableViewの解説)など、良記事あり セクション数を返すメソッド 各セクションのセル数を返すメソッド 各セル表示の際に呼び出されるメソッド 各セルの高さを決定するメソッド 各セルのクリック時に呼び出されるメソッド など
58.
UIKitをSwiftで利用 • フレームワークのインポート • クラスメソッドの利用 •
クロージャの利用
59.
フレームワークのインポート • Single View
ApplicationではUIKitをインポート • さまざまなフレームワーク(Apple) https://developer.apple.com/jp/ documentation/iOSTechOverview.pdf
60.
クラスメソッド • クラスメソッド・・・各インスタンスに共通の クラスそのものの性質に関する処理 • class
func メソッド名 ・・・ • フレームワーク利用の際に呼び出すことが多い
61.
クラスメソッドの呼び出し • インスタンスを生成せずに呼び出せる (クラス名.メソッド名)
62.
クロージャの利用 • クロージャ・・・関数を変数として扱う時の 関数定義部分 • Appleのクロージャ定義 Apple
Inc. The Swift Programming Language より抜粋
63.
クロージャの利用
64.
クロージャの利用 • フレームワーク使用の際のクロージャ利用では 簡単に考える 「メソッドの引数に直接処理を書く」 { 引数名
in 処理 }
65.
5. アプリ作成 • 簡単なシューティングゲームアプリを作成 https://github.com/nakasen/Codeal-Seminar-Swift •
画面上をランダムに動くUFOをタッチする • 1秒ごとにUFOが画面内を移動 • UFOをタッチするとUFOが爆発 • 宇宙空間、UFO、UFO爆発の画像は用意済み • 爆発音も用意済み
66.
アプリ作成手順1 • Single View
Applicationで新規作成 • プロジェクトに画像とサウンドのファイルを追加 ✦ Project Navigatorでフォルダを右クリック ✦ Add Files to ∼ で画像フォルダ、サウンド フォルダを追加
67.
アプリ作成手順2 • Storyboardで画面作成 ✦ ViewControllerのFile
inspectorで Auto Layoutのチェックをはずし、iPhoneを選択する ✦ ViewControllerのAttributes inspectorで Simulated MetricsのSizeを iPhone 4.7-inchにする(iPhone6の画面サイズ) ✦ 画面全体にImageViewを配置 ✦ ImageViewのAttributes inspectorで imageを背景用宇宙空間画像に
68.
アプリ作成手順2の図説
69.
アプリ作成手順2の図説
70.
アプリ作成手順3 ✦ 画面上部にButtonを配置 ✦ ButtonのAttributes
inspector画面で TypeをCustomに ✦ 同じくTitleの文字列「Button」を消去 ✦ State Config「Default」時のImageを 通常時のUFO画像、「Highlighted」時の Imageをタッチした時のUFO爆発画像に
71.
アプリ作成手順4 • Storyboardでソースコードとのひも付け ✦ Assistant
EditorでButton画像に名前を設定 (UFOのIBOutlet名「target」) ✦ Assistant EditorでButtonにActionを設定 (UFOタッチ時のIBAction名「smash」)
72.
アプリ作成手順4の図説
73.
アプリ作成手順5 • ViewControllerクラスのプロパティを設定 (class ViewController行の直後に) •
UFOを画面内で動かすために画面サイズを取得 (viewDidLoad()メソッドの中で)
74.
アプリ作成手順6 • タイマーから呼び出される空のメソッドを定義 • タイマー処理を設定 (viewDidLoad()メソッドの中で)
75.
アプリ作成手順7 • タイマーから呼び出されるmove()メソッドで、 UFOをランダムに動かす処理を定義 • 移動を滑らかにするために、上記3行目を UIViewクラスのクラスメソッドの第2引数の クロージャに入れる
76.
アプリ作成手順8 • 爆発音のサウンドファイル名をプロパティ名と ひも付けする(viewDidLoad()メソッドの中で) • UFOをタッチした時に呼び出されるIBActionで 爆発音を再生する
77.
アプリのカスタマイズ • 難易度を調整する ✦ 動きのスピード(タイマー呼び出しの調整) ✦
動きの範囲(乱数発生の引数の調整) • スコアを表示(Labelを用いて) • ミスショットで減点(画面全体の透明ボタン)
78.
付録:GitHub • バージョン管理 • Gitコマンド基礎 •
GitHubにアカウント作成 • GitHubでのバージョン管理 • GitHubでの分散バージョン管理
79.
バージョン管理 • ソースプログラムのライフサイクル • 終わりなき更新 •
過去に戻れるか • 本体 + 差分 + 管理情報
80.
Gitコマンド基礎 • まずはローカルから じっくり取り組むならここ(宣伝) http://engineer-intern.jp/archives/11957 • 3つの段階を理解 ワーキングツリー インデックス リポジトリ
81.
ローカルでGitコマンド • git config
で初期設定 • git init でリポジトリ作成 取り消しは rm -r .git • git status で状態確認 • ファイル作成(修正)でワーキングツリーへ(赤文字) 取り消しは rm ファイル名(作成時)または git chekout --ファイル名(修正時)
82.
ローカルでGitコマンド • git add
でワーキングツリーからインデックスへ (緑文字) 取り消しは git rm -- cached ファイル名(作成時)または git reset HEAD ファイル名(修正時) • git commit でインデックスからリポジトリへ 取り消しは git reset -- soft HEAD^(修正時のみ)
83.
状態を見るGitコマンド • git log
でオブジェクトIDと日付を確認 • git diff で差分を確認 • gitk で経過を確認
84.
GitHubにアカウント作成 • ソーシャルコーディング • 無料のアカウントはソースが常にさらされる (かえって勉強になる) •
他の人のソースもじっくり見る • git clone でリポジトリごとコピー
85.
GitHubでのバージョン管理 • リモートリポジトリ作成(New repositoryボタン) じっくり取り組むならここ(宣伝) http://engineer-intern.jp/archives/12305 •
公開されることを覚悟して名前をつける • 後々のことも考えて設定する • git remote でリモートリポジトリの設定 • git push でリモートリポジトリにプッシュ
86.
GitHubで分散バージョン管理 • もう一人になり切って分散開発の疑似体験 • 2人目が
git clone でリポジトリコピー • git add、git commit 後 git push • 1人目が git pull で2人目の修正取り込み • わざとコンフリクト発生 • git pull、修正、git push でコンフリクト解消
87.
手っ取り早くGitHubにアップ(1) • フォルダを作成し、そこでgit init •
プロジェクトごとそのフォルダにコピー • git add . • git commit -m First commit • GitHubにアカウント作成 • git config --global user.name "あなたのユーザ名" • git config --global user.email あなたのメールアドレス"
88.
手っ取り早くGitHubにアップ(2) • GitHubにログイン後、緑の「+ New
repository」 ボタンを押す • Repository name(リポジトリ名)をつけて緑の 「Create Repository」ボタンを押す (Initialize this repository with a READMEの チェックは外すこと!) (リポジトリ名はソースの中身をきちんと表すこと) • git remote add origin https://github.com/あなたのID/あな たのリポジトリ名.git(ここからは画面の指示に従えば良い) • git push -u origin master
Descargar ahora