春の 《送料無料キャンペーン》 実施中 !
たのしいSwiftプログラミング
Preview
Preview

たのしいSwiftプログラミング
[iOS 8&Xcode 6対応]

Share
Preview
  1. たのしいSwiftプログラミング
  2. たのしいSwiftプログラミング
  3. たのしいSwiftプログラミング
  4. たのしいSwiftプログラミング
  5. たのしいSwiftプログラミング
¥3,080 (税込み)
BNNストア / 品切れ
Amazonで購入 楽天ブックスで購入

Description

Appleの新しいプログラミング言語「Swift」の入門解説書。「自分でもアプリを作ってみたい!」と思っているプログラミング未経験者に向けて、Swiftを使ったiPhoneアプリ開発の最初の第一歩を、Mac/iOS開発の第一人者 木下誠さんが、わかりやすく、そしてたのしく、語りかけながら教えます。書籍と連動した解説動画をYouTubeに公開しているので、操作手順の理解をより深めることができます。
※[iOS 8.1&Xcode 6.1]への対応を、下記「正誤表」にまとめましたのでご確認ください。

ISBN:978-4-86100-949-5
定価:本体2,800円+税
仕様:B5判変型/288ページ
発売日:2014年10月25日
著者:木下 誠

Profile

木下 誠
HMDT株式会社代表取締役。OS XおよびiOSアプリケーションの開発を行う。開発を手がけたiOSアプリケーションは「大辞泉」「HMDT BOOKS」「音楽のある情景」「GALAPAGOS」「MapFan」「駅探エクスプレス」など。近著に『iOS開発におけるパターンによるオートマティズム』『iPhone SDK 3プログラミング大全』『たのしいCocoaプログラミング[Leopard対応版]』など。

Contents

PART 1 Swiftで始めよう!
1-1 Swift登場! iOSプログラミングを始めるチャンス!
1-2 Swiftの凄さをPlaygroundで体験!
1-3 iOSプログラミングを始めるための準備
1-4 SwiftとCocoa touchフレームワーク
1-5 この本の読み方

PART 2 Playgroundで遊ぼう!
2-1 Playgroundで手早く実験!
2-2 Playgroundで計算をしよう!
2-3 Playgorundでグラフを表示しよう!
2-4 Playgroundで文字列を操作しよう!
2-5 Playgroundで画像を表示しよう!

PART 3 Swiftの文法を学ぼう!
3-1 文法を学ぶということ
3-2 変数
3-3 型
3-4 演算子
3-5 文字列
3-6 配列と辞書
3-7 制御文
3-8 関数
3-9 クロージャ
3-10 クラスと構造体
3-11 プロパティ
3-12 メソッド
3-13 継承
3-14 オプショナル型

PART 4 ボタンを使おう!
4-1 いよいよアプリを作るぜ!
4-2 新規プロジェクトを作成しよう!
4-3 プロジェクトウインドウの使い方
4-4 画面のデザインをしよう!
4-5 デザインとプログラムをつなげよう!
4-6 プログラムを実装しよう!
4-7 実行してみよう!

PART 5 テーブルを使おう!
5-1 テーブルというインタフェース
5-2 Playgroundでテーブルを使ってみよう!
5-3 Swift Newsプロジェクトを発動せよ!

PART 6 ネットワークにつなごう!
6-1 PlaygroundでWebページにアクセス!
6-2 同期と非同期という考え方
6-3 NSURLSessionでダウンロードしよう!
6-4 Swift Newsにネットワークアクセスを組み込め!

PART 7 ニュースを読み込もう!
7-1 ニュースをどうやって取得する?
7-2 RSSのXMLを解析しよう!
7-3 JSONでやってみる?
7-4 Swift Newsにニュース読み込み機能を組み込め!
7-5 ニュースの詳細を表示しよう!

PART 8 TwitterとFacebookを使おう!
8-1 iOSがTwitterとFacebookをサポートしてくれる
8-2 アカウントの設定をしよう!
8-3 Socialフレームワークを追加しよう!
8-4 Twitterに投稿しよう!
8-5 Facebookに投稿しよう!

PART 9 もっといろんな機能を付けよう!
9-1 セルにもっと情報を表示しよう!
9-2 複数のニュースサイトに対応しよう!
9-3 セルに画像を表示しよう!
9-4 最初のセルの表示を変えよう!

PART 10 さらに先へ進もう!
10-1 もっと色んなCocoa touchのクラスを使おう!
10-2 色んなフレームワークを使おう!
10-3 プログラミング解説のサイトを参考にしよう!
10-4 人の真似を恐れるな!

Errata

正誤表:初版第1刷(2015年3月16日最終更新)
P.004 ビデオ解説マーク 誤:
MOVE
正:
MOVIE
P.007 誤:
3-7-7 switch
正:
3-7-7 switch文
P.047 誤:
拡張子はなしにしておいて。読み込みに成功すれば、実行結果のところには画像サイズが表示される。
正:
画像のフォーマットがpngの場合、拡張子なしでもいけるぜ。それ以外の場合は、拡張子まで含めて記述してね。
P.073 下 誤:
ECU-JP
正:
EUC-JP
P.082 下

誤:
これが、配列の作り方ね。

配列ができあがったら、
正:
これが辞書の作り方ね。

辞書ができあがったら、

P.091 ソースコード下から2行目 誤:
zはminより小さいまたは
正:
Xはminより小さいまたは
P.093 キャプション 誤:
条件文付きforルールの文法
正:
条件文付きforループの文法
P.098 見出し 誤:
3-7-7 switch
正:
3-7-7 switch文
P.099 誤:
switch 値 {
case 値1:
処理
}
case 値2:
処理
}
default:
処理
}
}

正:
switch 値 {
case 値1:
処理
case 値2:
処理
default:
処理
}
P.103 下 誤:
受け取る方は、返り値は普通の方じゃなくて
正:
受け取る方は、返り値は普通の型じゃなくて
P.104 中 誤:
クロージャを使うスッキリとして、
正:
クロージャを使うとスッキリして、
P.144 中 誤:
まず気になるのは、.swiftという拡張子持つファイル
正:
まず気になるのは、.swiftという拡張子を持つファイル
P.165 上 誤:
ってセロベースで数えていく。
正:
ってゼロベースで数えていく。
P.170 誤:
tableView(numberOfRowsInSection)
正:
tableView(tableView, numberOfRowsInSection)
P.170 誤:
tableView(cellForRowAtIndexPath)
正:
tableView(tableView, cellForRowAtIndexPath)
P.172 UITableViewクラス 誤:
registerClass:(forCellReuseIdentifier)
正:
registerClass(forCellReuseIdentifier)
P.173 上 誤:
tableView(numberOfRowsInSection)
正:
tableView(tableView, numberOfRowsInSection)
P.173 上 誤:
tableView(cellForRowAtIndexPath)
正:
tableView(tableView, cellForRowAtIndexPath)
P.173 誤:
dequeueReusableCellWithIdentifier()
正:
dequeueReusableCellWithIdentifier(identifier)
P.173 下 誤:
UITextViewCellにはtextLabelっていうプロパティ
正:
UITableViewCellにはtextLabelっていうプロパティ
P.175 ソースコード2行目と6行目 行末のセミコロン(;)をトル
P.175 ソースコード4行目と9行目 行頭のfuncを、override funcに
P.176 ソースコード2行目と3行目と7行目 行末のセミコロン(;)をトル
P.176 ソースコード5行目 誤:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
正:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
P.176 ソースコード10行目 誤:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
正:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
P.177 ソースコード2行目 誤:
let cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "detailCell")
正:
var cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "detailCell")
P.187 誤:
1ヶ所だけ変えてほしい。dequeueReusableCellwithIdentifier()を呼ぶところ。
正:
1ヶ所だけ変えてほしい。dequeueReusableCellwithIdentifier(identifier)を呼ぶところ。
P.194 誤:
sendSynchronousRequest(returningResponse, error)
正:
sendSynchronousRequest(request, returningResponse, error)
P.195 中 誤:
まず、先頭にUI Kitをimportする分を
正:
まず、先頭にUI Kitをimportする文を
P.200 NSURLConnectionクラス 誤:
sendAsynchronousRequest(queue, completionHandler)
正:
sendAsynchronousRequest(request, queue, completionHandler)
P.204 NSURLSessionクラス 誤:
dataTaskWithURL(completionHandler)
正:
dataTaskWithURL(url, completionHandler)
P.207 ソースコード2行目の後に挿入 let newsUrlString = "http://www.apple.com"
P.215 中 誤:同期的読み込みの問題についてはPART 7を

正:同期的読み込みの問題についてはPART 6を

P.217 NSXMLParserDelegateプロトコル 誤:
parser(didStartElement, namespaceURI, qualifiedName, attributes)
正:
parser(parser, didStartElement, namespaceURI, qualifiedName, attributes)
P.218 NSXMLParserDelegateプロトコル 誤:
parser(foundCharacters)
正:
parser(parser, foundCharacters)
P.219 NSXMLParserDelegateプロトコル 誤:
parser(didEndElement, namespaceURI, qualifiedName)
正:
parser(parser, didEndElement, namespaceURI, qualifiedName)
P.224 NSJSONSerializationクラス 誤:
JSONObjectWithData(options, error)
正:
JSONObjectWithData(data, options, error)
P.231 下 ソースコード3行目 行末のセミコロン(;)をトル
P.235 下 誤:
tableView(didSelectRowAtIndexPath)
正:
tableView(tableView, didSelectRowAtIndexPath)
P.238 UIWebViewクラス 誤:
loadRequest()
正:
loadRequest(request)
P.239 上 誤:
最後に、ViewControllerからDetailController()に、
正:
最後に、ViewControllerからDetailControllerに、
P.239 ソースコードファイル名 誤:
DetailController.swift
正:
ViewController.swift
P.247 下 一文追加 ライブラリペインからドラッグして追加してくれ。DetailControllerの下にあるツールバーに追加するんだ。2つ追加する。
P.251 SLComposeViewControllerクラス 誤:
isAvailableForServiceType()
正:
isAvailableForServiceType(serviceType)
P.252 SLComposeViewControllerクラス 誤:
presentViewController(animated, completion)
正:
presentViewController(viewControllerToPresent, animated, completion)
P.258 UIViewクラス 誤:
viewWithTag()
正:
viewWithTag(tag)
P.264 NSMutableArrayクラス 誤:
sortUsingComparator()
正:
sortUsingComparator(cmptr)
P.268 クラス名 誤:
UIViewクラス
正:
UIImageクラス
サポート表(iOS 8.1&Xcode 6.1への対応):初版第1刷(2015年3月23日最終更新)
P.043 下 ソースコード4行目 旧:
string.addAttribute(NSFontAttributeName, value: UIFont(name: "Times", size: 48), range: NSMakeRange(0, 6))
新:
string.addAttribute(NSFontAttributeName, value: UIFont(name: "Times", size: 48)!, range: NSMakeRange(0, 6))
P.044 ソースコード2行目 旧:
string.addAttribute(NSFontAttributeName, value: UIFont(name: "Times", size: 48), range: NSMakeRange(0, 6))
新:
string.addAttribute(NSFontAttributeName, value: UIFont(name: "Times", size: 48)!, range: NSMakeRange(0, 6))
P.047 ソースコード3行目 旧:
var image = UIImage(named: "tokyo_iPhone")
新:
var image = UIImage(named: "tokyo_iPhone")!
P.098 下 ソースコード4行目 旧:
var monthName
新:
var monthName: String
P.105 下 ソースコード 旧:
func dataTaskWithURL(_ url: NSURL!, completionHandler completionHandler: ((NSData!, NSURLResponse!, NSError!) ->
Void)!) -> NSURLSessionDataTask!

新:
func dataTaskWithURL(url: NSURL, completionHandler: ((NSData!, NSURLResponse!, NSError!) ->
Void)?) -> NSURLSessionDataTask
P.131 上 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.131 中 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.131 下 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.132 上 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.132 下 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.133 上 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.133 中 ソースコード2行目 旧:
var url = NSURL(string: "http://www.apple.com")
新:
var url = NSURL(string: "http://www.apple.com")!
P.168 ソースコード2行目 backgroundColor 新:
backgroundColorの設定をしているが、Xcode 6.1のPlaygroundだと、問題が発生して設定できない。Playgroundではなくプロジェクトを作成すれば、設定できる。
P.171 ソースコード下から3行目 旧:
cell.textLabel?.text = "Swift"
新:
cell.textLabel.text = "Swift"
P.173 UITableViewCellクラス 旧:
var textLabel: UILabel? { get }
新:
var textLabel: UILabel { get }
P.175 ソースコード14行目 旧:
cell.textLabel?.text = iphones[indexPath.row]
新:
cell.textLabel.text = iphones[indexPath.row]
P.177 ソースコード5行目 旧:
cell.textLabel?.text = iphones[indexPath.row]
新:
cell.textLabel.text = iphones[indexPath.row]
P.188 ソースコード1行目 旧:
cell.textLabel?.text = "Swift News"
新:
cell.textLabel.text = "Swift News"
P.190 ソースコード最後の行 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.191 NSURLクラス 旧:
convenience init(string URLString: String)
新:
convenience init?(string URLString: String)
P.193 ソースコード7行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.193 ソースコード最後の行 旧:
var htmlString = NSString(data: data!, encoding: NSUTF8StringEncoding)
新:
var htmlString = NSString(data: data!, encoding: NSUTF8StringEncoding)!
P.194 NSURLConnectionクラス 旧:
class func sendSynchronousRequest(request: NSURLRequest, returningResponse response: AutoreleasingUnsafeMutablePointer, error error: NSErrorPointer) -> NSData?
新:
class func sendSynchronousRequest(request: NSURLRequest, returningResponse response: AutoreleasingUnsafeMutablePointer, error: NSErrorPointer) -> NSData?
P.194 NSStringクラス 旧:
convenience init(data: NSData, encoding: UInt)
新:
convenience init?(data: NSData, encoding: UInt)
P.195 ソースコード最後の行 旧:
let image = UIImage(data: htmlData!)
新:
let image = UIImage(data: htmlData!)!
P.200 ソースコード1行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.200 ソースコード7行目 旧:
var html = NSString(data: data, encoding: NSUTF8StringEncoding)
新:
var html = NSString(data: data, encoding: NSUTF8StringEncoding)!
P.200 NSURLConnectionクラス 旧:
class func sendAsynchronousRequest(request: NSURLRequest, queue queue: NSOperationQueue!, completionHandler handler: (NSURLResponse!, NSData!, NSError!) -> Void)
新:
class func sendAsynchronousRequest(request: NSURLRequest, queue: NSOperationQueue!, completionHandler handler: ((NSURLResponse!, NSData!, NSError!) -> Void)!)
P.203 ソースコード7行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.203 ソースコード12行目 旧:
var string = NSString(data: data, encoding: NSUTF8StringEncoding)
新:
var string = NSString(data: data, encoding: NSUTF8StringEncoding)!
P.204 NSURLSessionクラス 旧:
func dataTaskWithURL(url: NSURL, completionHandler completionHandler: ((NSURL!, NSURLResponse!, NSError!) -> Void)?) -> NSURLSessionDataTask
新:
func dataTaskWithURL(url: NSURL, completionHandler: ((NSData!, NSURLResponse!, NSError!) -> Void)?) -> NSURLSessionDataTask
P.208 ソースコード2行目 旧:
var url = NSURL(string: newsUrlString)
新:
var url = NSURL(string: newsUrlString)!
P.214 ソースコード5行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.214 ソースコード8行目 旧:
var parser = NSXMLParser(contentsOfURL: url)
新:
var parser = NSXMLParser(contentsOfURL: url)!
P.215 NSXMLParserクラス 旧:
convenience init(contentsOfURL url: NSURL!)
新:
convenience init?(contentsOfURL url: NSURL!)
P.216 ソースコード9行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.216 ソースコード12行目 旧:
var parser = NSXMLParser(contentsOfURL: url)
新:
var parser = NSXMLParser(contentsOfURL: url)!
P.217 NSXMLParserDelegateプロトコル 旧:
optional func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI namespaceURI: String, qualifiedName qualifiedName: String, attributes attributeDict: [NSObject : AnyObject])
新:
optional func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!)
P.218 NSXMLParserDelegateプロトコル 旧:
optional func parser(parser: NSXMLParser, foundCharacters string: String)
新:
optional func parser(parser: NSXMLParser!, foundCharacters string: String!)
P.219 NSXMLParserDelegateプロトコル 旧:
optional func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI namespaceURI: String, qualifiedName qName: String)
新:
optional func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!)
P.223 下 ソースコード6行目 旧:
var url = NSURL(string: urlString)
新:
var url = NSURL(string: urlString)!
P.224 NSJSONSerializationクラス 旧:
class func JSONObjectWithData(data: NSData, options opt: NSJSONReadingOptions, error error: NSErrorPointer) -> AnyObject?
新:
class func JSONObjectWithData(data: NSData, options opt: NSJSONReadingOptions, error: NSErrorPointer) -> AnyObject?
P.229 ソースコード3行目 旧:
var url = NSURL(string: newsUrlString)
新:
var url = NSURL(string: newsUrlString)!
P.232 ソースコード下から4行目 旧:
cell.textLabel?.text = entry["title"] as? String
新:
cell.textLabel.text = entry["title"] as? String
P.238 中 ソースコード下から4行目 旧:
var url = NSURL(string: self.entry["link"] as String)
新:
var url = NSURL(string: self.entry["link"] as String)!
P.251 下 SLComposeViewControllerクラス 旧:
init(forServiceType serviceType: String!) -> SLComposeViewController
新:
init!(forServiceType serviceType: String!) -> SLComposeViewController
P.261 下 ソースコード下から3行目 旧:
let url = NSURL(string: newsUrlString)
新:
let url = NSURL(string: newsUrlString)!
P.268 UIImageクラス 旧:
init(named name: String) -> UIImage
新:
init?(named name: String) -> UIImage
Related Books