Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 928 - MVC: iOS, Xcode and Swift Demonstration 2

スタンフォード大学のポール先生の講義の復習をしています。

iOS8、iO9、そして今回3回目の復習をしているので講義の内容もある程度わかります。今まで課題にトライしたことが無かったので、ちょっと挑戦しています。

「.」キー(フローティング・ポイント)を実装しているんですが、スムーズにいかないですね。

関数キーを押したときとフローティング・ポイントキーを押したときで挙動を換える必要があるし、ちゃんと動かそうとすればするほどコードが増えていきます...

しかし、パズルですね。こういう作業嫌いじゃ無いです。

これだけ。

Swiftで遊ぼう! - 927 - MVC: iOS, Xcode and Swift Demonstration 1

スタンフォード大学iOS開発講座がSwift 3に対応しました。

この講義は「must watch」です!
Developing iOS 10 Apps with Swift - Free Course by Stanford on iTunes U

特に講義2の「MVC: iOS, Xcode and Swift Demonstration 」は、Swiftの言語体系を網羅していて、この講義だけでSwiftを理解できるので秀逸です。

デモ「Calculator」では、個々のキーに機能を割り振るんですが、キーと機能コンビネーションをDictionary型を使ってテーブル化します。

Dictionary型のテーブルの場合、value値の型も統一しなければなりません。この講義では、Double型と関数*1型が混在するので、これを解決するためにEnum型を使用します。

流れるような説明が続いて、Double型や関数型の具体的な値をAssciated Valueとして与え使用する方法を完全に理解することができます。

素晴らしいですね。

そして理解しがたい「Generics」の説明もわかりやすく解説して、Autolayoutのさわりを話して終了です。

何度も言いますが、この講座は必ず見て理解してください。

では。

*1:関数も型になります。

Swiftで遊ぼう! - 926 - Xcondeで変数名を変更

スタンフォード大学iOS講座でSwift開発の復習をしていて、Xcodeの知らなかった機能があったので記録します。

yataiblue.hatenablog.com

コードを書いていて、自分で作った変数名が気に入らない時に一括して変更する方法があります。

例えば、次のように変数名「pbo」を変更したい場合、「pbo」を選択します。すると選択した言葉の右側に小さな三角ボタンが現れます。

f:id:yataiblue:20170309062549j:plain

この三角ボタンをクリックするとメニューが表示され、「Edit All in Scope」を選びます。

f:id:yataiblue:20170309062647j:plain

同一スコープ内の変数名を同時に編集できます。

f:id:yataiblue:20170309062821j:plain

コードを書いている時、適切な変数名が思いつかずわかりにくい名前をつけてしまっても後で簡単に変更することができるので便利です。

これだけです。

Swiftで遊ぼう! - 925 - Introduction to to iOS 10, Xcode 8 and Swift 3

Developing iOS 10 Apps with Swift - Free Course by Stanford on iTunes U

スタンフォード大学のポール先生のiOS講義が始まりました。

ある程度Swiftの勉強をしている人は勉強するいいチャンスです。

私のように2度途中で挫折している人にもいいでしょう。そうです私は3度目のチャレンジになりますが、こういう人は少ないかも。

さっそく最初の講義を聴いています。

Introduction to to iOS 10, Xcode 8 and Swift 3

iOSの開発環境の基本的な説明から入って、すぐに「Calculator」プロジェクトがスタートします。

Xcodeの簡単な説明から入って、UIButtonをViewの上に設置してボタンのタイトルを「7」にします。ViewController.swiftに「Ctrl + ドラッグ」して、@IBActionを設置して「関数」の説明をします。

クリックした時の挙動をコンソールで確認した後にViewにUILabeを設置して、ボタンをクリックしてラベルに表示をさせます。

そしてオペランド(演算子)の「π」の挙動の制御をします。コントロールフローの基本的な説明をする中で、オプショナルの説明が入ります。今まで繰り返し勉強した内容なので頭に簡単に入ってきます。

そして、このデモの最も重要な説明は、「Computed Properties(計算型プロパティ)」でしょう。

計算機のラベルに表示する数字は「String型」ですが、コードで扱う数字は「Double型」です。そのため計算して表示する時にString型からDouble型に、Double型からString型に、常に変換をしなければなりません。それを簡略化するために計算型プロパティを使用します。

let operand = Double(display.text!)!
display.text = String(sqrt(operand))

この多重変換をすっきりさせるために次のような計算プロパティを用意します。

var displayValue: Double {
        
    get {
        return Double(display.text!)!
    }

    set {
        display.text = String(newValue)
    }
        
}

これを使用したら最初のコードがシンプルになります。

let operand = displayValue
displayValue = sqrt(operand)

すっきりしました。これで講義1は終了です。

Swiftで遊ぼう! - 924 - Developing iOS 10 Apps with Swift

マルチスレッドの復習しててまだ完全に理解できていないのに話題が変わります!私の大好きなスタンフォード大学のポール先生のiOS開発講座がiOS10対応になりました! 超嬉しい!

Developing iOS 10 Apps with Swift - Free Course by Stanford on iTunes U

ポール先生の講座、iOS8、iOS9、そして今回で3回目です。

今度こそ全ての講座をやり遂げるつもりで講義を聴きます。

今からわくわくしてます。

Swiftで遊ぼう! - 923 - マルチスレッドの考え方で混乱していました。

マルチスレッドなプログラミングの勉強をしていて、自分の理解が甘かったことが分かってきました。

スレッド、キュー、タスク、同期、非同期...

どうもこれらの関係性をしっかり理解していなかったためコードを勉強していてもしっくり頭に入らなかったんです。

「スレッド」とはプロセッサに依存したiOSの低レベルでの処理のようでした。Swiftを使ってこのスレッドの制御をすることもできるようですが、プログラマは処理を全て制御しないといけないようで、私のような素人では太刀打ちできそうもありません。

細かい制御を自動的に請け負ってくれる上位のシステムとしてAppleGCDOperationクラスを用意しているようです。OOPに準拠した新しい制御はOperationクラスなんで、今後はOperationに移行していくのかもしれません。しかし、Swift 3で大幅な改訂があったのはレガシー*1なGCDな訳で、今年のWWDC2017でマルチスレッドに関する新しい発表があるまでGCDの使い方を理解することにします。

*1:今まさに現役で使われている機能なんで間違った言い方かもしれませんね。

Swiftで遊ぼう! - 922 - Serial と Concurrent キュー

Queues

一連のコードブロックをQueueというグルーピングにします。これを英語で「dispatch queue」と言います。これをコードで表現すると「DispatchQueue」です。そして複数のスレッドが生じた時に安全にコードを実行させるために、適切なdispatch queueのタイプを選択して機能を利用しないといけないんです。

基本的にQueueは2種類あります。「Serial」と「Concurrent」です。Serial queueはタスクを1つずつこなすのでGCDは実行タイミングだけコントロールできますが、どのくらい時間がかかりいつ終わるか知ることはできません。

Concurrent queueは複数のタスクを同時に実行させることができます。実行開始時の順番は保証されていますが、タスクの終了タイミングはタスクにより異なる場合があります。

f:id:yataiblue:20170228095518j:plain