技術はメシのタネ

底辺プログラマで技術の向上を目指しているけれどやりたい事が無くて困っている

Swift2本、どれにしようかな

お品書き

ご挨拶

お久しぶりでございます。
俺です。

前回の記事から大分時間が空いてしまったわけなんですけれども、何があったかって、特に何もなかったんです。
忙しかったプロジェクトが終わって、1週間の勤務5日のうち2日は1日中ネットサーフィンやってても問題なくこなせるプロジェクト(しかも定時上がり)に移っただけです。

あれですね、人間暇になるとロクなことしない(小人閑居して不善をなす)どころか、勉強さえしなくなるんですね。

さすがにそろそろ勉強再開しようかと思いまして。

何しようかな?

qiita.com

せっかく仕事でちょっとは技術を培ったし、無料でできるようになったし。
何より、初めて言語そのものが面白い、と思えたので。
しばらくはSwiftを勉強しよう、と。

どうやって勉強する?

初心者ならThe Swift Programming Languageを隅から隅まで舐め回すように読んどけや!と思われるかもしれませんが、あれくらい簡素だと、何が言いたいのか、どういうことなのかがよくわからないんですよ。
……英語ですし。
書いてある通りに打ち込めばそりゃあその通りに動くんでしょうけども、そのことに対する解説が私には足りない。

というわけで、いつも通りとりあえず技術書を買おう、そう思いました。

ちなみに。
アプリ開発の話はね、これでとりあえずやったんですよ。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】 教科書シリーズ

まあ、とりあえずアプリ開発の流れはわかりました。
相変わらず作りたいものとかアプリとかは思い浮かびませんでしたけど。

Cocoaプログラミングとか、MVC的な話とか、各種フレームワークの使い方とか、そういう点に関する自分の問題点が業務を通じて噴出して前プロジェクトではあっぷあっぷしていました。
が、そもそも論としてSwiftでもあっぷあっぷしておりました次第でして。
プログラミング言語くらいまともに使えるようになっとけや、と。
そういうのも背景にあります。

詳解 Swift 改訂版

詳解 Swift 改訂版

●目次

  • CHAPTER01 Swiftでプログラミング
  • CHAPTER02 関数
  • CHAPTER03 構造体
  • CHAPTER04 オプショナル
  • CHAPTER05 基本的なデータ型
  • CHAPTER06 パターン
  • CHAPTER07 演算子
  • CHAPTER08 クラスと継承
  • CHAPTER09 メモリ管理
  • CHAPTER10 プロトコル
  • CHAPTER11 拡張
  • CHAPTER12 エラー処理
  • CHAPTER13 クロージャ
  • CHAPTER14 ジェネリクス
  • CHAPTER15 C/Objective-Cとのデータ受け渡し
  • CHAPTER16 Objective-Cとの連携

まずは王道、とでもいいましょうか。
すでに出ていたSwift1.1版からバージョンアップです。

実はこのシリーズのObj-C版のkindle版を持っているのですが、自分には高レベル過ぎました。
あと、せっかくのkindle版なのに、
固定レイアウト型で、文字を拡大することや、文字列のハイライト、検索なんかができません。
この点に関してはSwift1.1版も同じようですので、もうこれはそういう方針の出版物なんでしょうね。

中身については折り紙つきなのでしょうが、自分には高レベルなのと、kindle版のアドバンテージがなさそうなのでとりあえずパスで。

プロを目指す Swift 基本文法と応用

プロを目指す Swift 基本文法と応用

以下、目次は リックテレコム 書籍情報 から引用。

■[本書の主な内容]

目次を見るに、明らかに詳解 Swift 改訂版よりも粒度が小さいですね。
どこに何ページ費やしたのかを確認する術はありませんが、少なくとも私が気になっている事柄はカバーされているようです。
特に、構造体に1章費やしているところが高評価です。
逆にXcodeのインストールとかは要らんのですが。

ただ、発売はまだ先のことのようです。
同時にkindle版も出るかどうかわかりません。

Swift 2標準ガイドブック

Swift 2標準ガイドブック

以下、目次は Swift 2標準ガイドブック【委託】 - 達人出版会 から引用。

先のプロを目指す Swift 基本文法と応用よりもカバー範囲が広め。
Swift言語そのもの以外にもアプリ作成やデザインパターンも取り扱っている模様。
その分、Swiftそのものの話は薄くなっていそう。
例えばプロを目指す Swift 基本文法と応用と違って、構造体はクラスや列挙体とまとめられているので、あんまり詳しく書いてないのかもしれない。
実際のアプリ開発でどうSwiftSwiftらしく(Swiftyに)使うのか、という要求に応えているのかも。
ただ、REPLとかカリー化とかのプロを目指す Swift 基本文法と応用に載っていなかった気になるワードがカバーされているのは良い。

こちらは既に発売されている書籍であるので、レビューもちらほらと。

rinare.com

blog.mogmet.com

むう、良さげだな。

結論

詳解 Swift 改訂版は、無いな。
難易度もさることながら、先に述べたように、kindle版の良さも活かせそうに無いし。

そうなると、プロを目指す Swift 基本文法と応用Swift 2標準ガイドブックの一騎打ちとなるわけだが。
プロを目指す Swift 基本文法と応用がまだ出ていないのがネックとなる。

粒度は似たような感じに仕上がっているようだ。
アプリ開発まで視野に入れた構成になっている点も共通している。

プロを目指す Swift 基本文法と応用関数型プログラミングに1章割いている点が特色か。
Swift 2標準ガイドブックはすでに発売済みであること、書評を見るに良書であろうというアドバンテージがある。
また、カリー化関数型プログラミングにまつわるワードだと思っているので、こちらも関数型プログラミングについて書いてあると思って良いだろう。


よし、ここは……!



Swift 2標準ガイドブック、君に決めた!




Swift 2標準ガイドブック




というわけで、これからしばらくこいつを頑張ることにしよう。

Convert Signed Int to Unsigned Int

qiita.com

久しぶりに投稿した。
大した話ではないので結論だけここに転載しておく。

let hoge: Int16 = 78
let num = NSNumber(short: hoge)
let uint_num = UInt16(bitPattern: num.shortValue)

Swiftのクロージャが説明からして難しすぎる件について

The Swift Programming Languageや他の解説サイトでクロージャの説明を読んでみたのだが、文法からしてわからん。
試行錯誤しつつ実際に使って見ると、引数付きの場合のstrnums -> [Int] inがちょっと特殊だった。
てか例文をなんでもっと簡潔に書いてくれないんだろう。

func test() {

    // これがクロージャ
    let moge: ([String]) -> ([Int]) = {
        strnums -> [Int] in
        var nums: [Int] = []
        for str: String in strnums {
            nums.append(Int(str)!)
        }
        return nums
    }

    // クロージャを使ってみる
    let bar = moge(["5", "4", "3"])

    // 結果を確認
    for number: Int in bar {
        print("\(number)")    // => 5, 4, 3
    }
}

むしろ関数がクロージャの1種って言われてもなあ。

Swiftの他の機能もそうだけど、iOSアプリを作る中でむしろそれをどう使うのかがいまいちわからん。