2015年9月25日金曜日

iPhone6sを本日(発売日:9/25)ゲットしてきました。

本日発売のiPhone6S早速ゲットしました。ゲットしたのはiPhone6s シルバー128GBです。

参考までに、予約した時間と入荷連絡があった時間は下記の通りです。

予約時間:9/12 17:00



入荷連絡:9/24 21:13



iPhone5S(800万画素)とiPhone6S(1200万画素)の写真画素数の差を比較するために、まずは写真を撮ってみました。
どちらがiPhone6Sからお分かりでしょうか?




正解は、下の方の写真です。
拡大しても微妙に違いがわかるかなって感じでした。

いろいろ使ってみてそのうちレビューしたいと思います。


2015年9月24日木曜日

【Xcode / Swift入門】Swift2.0の変更点(随時更新)

本稿では、Swift 2.0での変更点を気づいた段階で記載していきます。

Println関数


 《変更前》Println()
 《Swift 2.0》Print()

toInt()関数


   テキストフィールドなどから取得した値をIntにする場合に使用するtext.toInt()ですが、Swift 2.0から使用できなくなっています。「"toint()" is unavailable」というエラーが出力されます。その変わりInt()を使用するよう促されます。

 《変更前》TextField.text.toInt()
 《Swift 2.0》Int(TextField.text)

let と varの宣言


 warningレベルですが、varで定義した値がその後変化しない(変数ではない)場合、letにした方が良いとwarning出力されるようになっています。

touchesBeganメソッド


 タッチを検出するオーバーライドファンクションのtouchesBeganメソッドですが、Swift 2.0から下記のように変更になりました。

《変更前》
 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
}

《Swift 2.0》
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
 }

do-while文

 《変更前》
 do {
  繰り返し処理
 }While 繰り返し条件

 《Swift 2.0》
 repeat {
  繰り返し処理
 }While 繰り返し条件





2015年9月1日火曜日

【Xcode / Swift入門】オプショナル型について

本稿では、Swiftのoptional type / optional value(オプショナル型)について、説明します。

オプショナル型について

オプショナル型とは、変数に何も値が入っていない状態(空の状態)と値が入っている状態(通常の状態)の両方を持つことができる変数もしくは定数のことを言います。つまり、空の値が入るかもしれない変数を使用する際に定義します。また、Swiftでは、変数に何も値が入っていない空の状態のことを"nil"と表現します(他のプログラミング言語の"null"と同義です)。

宣言方法は、変数を宣言時に、型の後ろに"?"をつけます。

var 変数名: 型?

では、Playgroundを起動し、下記のコードを記述してみます。
    
//Optional型にnilを代入
var optionalString: String? = "hello"
optionalString = nil
println(optionalString)

//通常の変数にnillを代入
var nomalString: String = "hello"
nomalString = nil
println(nomalString)

すると、Optional型の変数にnilを代入した場合は正常に動作しているのに対し、通常の(Optional型ではない)変数にnilを代入するとエラーを出力することがわかると思います。





このように、nilの値の許容を変数の定義時に行うことによって、nil起因によるアプリの不具合(バグ)を事前に対処することができます。また、アプリ開発者が忘れがちなnil対処をエラーレベルで(ビルド時に)チェックすることができます。

unwrap(アンラップ)について

次に、Optional型とセットで覚えておく必要があるアンラップについて説明します。
Swiftでは、通常の変数と、空の値が入るかもしれないOptional型の変数を明示的に区別しています。そのため、Optional型で定義した値を、関数の引数に代入する際、「"nill"ではありません」と明示的に定義する必要があります(指定しない場合、エラーが出力されます)。

例えば、下記のようにコードを記述してみます。
※文字列(" "で囲めば文字列と認識します。)の中に変数の値を代入したい場合は、\( )を使用します。「\」はoption + ¥です。
    
var optionalString: String?
var nomalString: String
optionalString = "hello"
nomalString = "world"
println("世界一有名なプログラムは\(optionalString + nomalString)である。")

すると、”Stringはオプショナル型の値だけど、unwrap(アンラップ)されていません”とエラーが出力されます。



この「"nill"ではありません」と明示的に定義する方法のことをunwrap(アンラップ)と呼び、変数の後ろに”!”をつけること宣言可能です。つまり、上記の例で言うと、”\(optionalString + nomalString)”のoptionalStringの後ろに"!"を付与することにより、エラーを回避し、正常に動作します。




暗黙的なアンラップについて

オプショナル型の宣言方法は上記(型の後ろに"?"をつける)以外にもう一つあります。それは、暗黙的なアンラップという方法です。これは、変数定義時に、"?"ではなく"!"をつけることにより、常にアンラップ状態となり、引数に渡す際の"!"が不要になります。



初期値には、nilが入るかもしれないが、それ以降は必ず値が入る(nilではない)場合に利用するものになります。

オプショナルバインディングについて

オプショナル型の変数をif文などの条件文にて使用する場合、 値が入っていれば"true"、nilの場合は"false"として扱うことが可能になります。例えば、下記のようなコードを記述し、optionalString = "hello"を削除してみてください(つまり、optionalString = nil)。
    
var optionalString: String!
var nomalString: String
optionalString = "hello"
nomalString = "world"

if let isString = optionalString {
    
    println("世界一有名なプログラムは\(optionalString + nomalString)である。")
    
}else{
    
    println("文字列なし")
    
}

optionalString = "hello"の場合とnilの場合で、条件が分岐していることが確認できます。



この手法は、"nil"の場合の処理を意識しなくとも記述することになりますので、とても便利な機能です。

オプショナル型の説明は以上になります。
次回は、for文 / While文などの制御構造について説明したいと思います。




2015年8月28日金曜日

【Xcode / Swift入門】変数と型について

本稿では、Swiftの変数と型について記載していきます。

Swiftの変数と定数について

Swiftには、定義した値を変更可能な変数と、一度値を設定したら変更できない定数があります。変数の宣言には”var 変数名”定数の宣言には”let 定数名”を使用します。では、Playgroundを起動し、下記を記述してみます。
※Playgroudの使い方については、【1-7. Playgroundを使ってみよう】を参照してください
    
//変数定義
var varValue = 1
varValue = 2

//定数定義
let letValue = 1
letValue = 2


すると、定数として宣言したletValueにエラー(Cannot assign to "let" value 'letValue')が出力されていることがわかると思います。このように、varで定義した 変数は値の変更が可能なのですが、letで定義した定数については値の変更が不可になります。

その他のSwiftの特徴として、変数定数名に日本語を使用することができる点C言語やjavaの場合文末につけていた";(セミコロン)"も不要な点が挙げられます(もちろんつけても良いのです)。また、変数名や定数名を","区切ることにより、一度に複数の値の定義が可能になます。試しに、下記のように入力してみましょう。

    
//変数名日本語
var 名前 = "name"

//変数定数名 を漢字かつ";"で区切る
var 勉強 = "swift"; let 今日の記事 = "変数定数について"

//","で区切る
var 値1 = 1,  値2 = 2, 値3 = 3




Swiftの型について

通常、プログラミング言語では、整数(Int型)なのか文字列(String型)なのかなどを変数を定義する際に型を指定する必要があります。型を指定する際は、変数名の後ろに、":(コロン)”を付けて型を記述します。

var 変数名: 型

しかし、Swiftには型推論機能が備わっており、型を明示的に指定しなくても、変数へ代入する値によって型を推測して自動的に決定してくれます。
では、下記の通りPlayground上に入力し、結果がどのように出力されるか確認してみます。
  
//型指定あり
var 名前: String = "name"
var 年齢: Int = 5

//型指定なし
var 名前2 = "name"
var 年齢2 = 5
println(年齢2)

//小数点付きの値を変数に代入し、その後、整数を代入
var 円周率 = 3.141592
円周率 = 3
println(円周率)

円周率 = "3"



上記の結果の通り、型指定あり/なしに関わらず結果に変化がないことが確認できると思います。また、「年齢2 = 5」と「円周率 = 3」の結果をprintlnで確認してみると、「"5"」と「"3.0"」になっているのが確認できるかと思います。これは、変数に最初に代入した値が、年齢2 = 5 (つまり、整数型)、円周率 = 3.141592(つまり、小数点付きの型)となっているため、Swiftが型推論し、最初に代入した値の型を自動的に決定したためです。また、円周率 = "3"(""内に記述された文字はすべて文字列として認識)と代入しようとしても型が違うとエラーが出力されることも確認できます。
このようにSwiftでは、型推論というとても便利な機能をサポートしているため、とても簡単にプログラムを記載していくことが可能になって


println()とは、()内に記述された変数の中身を表示してくれるとても便利な関数です。様々な場面で活用できるので、是非覚えといてください。
(Xcode2.0の場合は、Println→Printに変更してください。)

Swiftの型一覧

では、最後にSwiftにて使用可能な型一覧を記載します。配列やディクショナリについては、【2-4. 配列(Array)とディクショナリーについて】にて、詳細を記載いたします。

・整数型【var 変数名: Int
 整数を扱う場合に使用する型です。
 
・浮動小数点型【var 変数名: Double
 小数点付きの数値を扱う場合に使用する型です。

・文字列型【var 変数名: String
 文字列を扱う場合に使用する型です。変数代入時に""(ダブルクォーテーション)で囲まれた値を代入すると、すべて文字列型になります。
 
・論理型【var 変数名: Bool
 true or falseの値をとる場合に使用する型です。

・配列【var 変数名: [型]
 複数の値を連続的に並べてデータのことを配列と呼びます。Swiftでも 複数のデータを一つの変数として扱う場合に使用します。

・ディクショナリ型【var 変数名: Dictionary<型: 型>
 文字列や数値をキーとして、キーと値のセットを持つ型です。キーを指定することにより、値の参照などが可能となります。

では次回は、オプショナル型について説明します。



2015年8月27日木曜日

【Xcode / Swift入門】Playgroundを使ってみよう

本稿では、Xcodeの機能の一つであるPlaygroundについて説明したいと思います。

Playgroundとは、 Xcodeに組み込まれているSwiftの実行環境で、Swiftで記載したコードの実行結果をリアルタイムに表示してくれるものです。
通常、プログラミング言語を勉強する場合、コードを書いて、ビルドして、デバックして実行結果を確認して・・・という少々面倒な処理を実行しなければいけませんでした。

そういった面倒なことを省いて簡単にSwiftを勉強できるようにしたのが、このPlaygroundになります。

つまり、Swiftを勉強する上では、欠かせないツールになります。

Playgroundの起動


では、早速Playgroundを起動してみましょう。
Xcodeを起動し、Welcome to Xcodeの画面が出てきたら、"Get started with a playground"を選択します。


次にPlaygroundのファイル名を設定する画面が出てきますので、Name欄を入力します。
名前は何でも良いですが、今回は初期値であるMyPlaygroundとします。名前入力後、Platform欄にてiOSを選択し、Nextボタンを押します。


すると、プロジェクトを保存する際と同様に、Playgroundを保存する画面が表示されますので、お好きなフォルダを選択し、”Create”を押してください。

下図のような画面が表示されましたら、Playgroundの起動は完了です。Playgroundはデフォルトでは、2画面表示になっており、左側がソースコードを記載するエディタエリア右側が実行結果を即座に表示してくれるエリアになっています。


Playgroundの使い方

では、実際にPlaygroundを使ってみたいと思います。使い方は左側のエディタエリアにソースコードを記載するだけです。
今回は、文字列の変更、ラベル作成、値をグラフとして表示してみたいと思います。下記のように入力します。
※コードの詳細は別 章にて説明します。

    
if str == "Hello, playground" {
    str = "Hello Xcode!!"
}

println(str)

//ラベル作成
var rect = CGRect(x: 10, y: 10, width:200, height:50)
var label = UILabel(frame:rect)
label.backgroundColor = UIColor.lightGrayColor()
label.textAlignment = .Center
label.text = str

//グラフを表示してみます
var value = 1
for i in 1...10{
  
    i + i
    
}



※Xcode2.0の場合は、Println→Printに変更してください。
実行結果エリアに結果がすぐに表示されるのが確認できます。ただ、これだけでは、ラベルが正常に作成されたのか、グラフの値が合っているのかなど確認することができません。そういったところを確認する機能として、リザルトビューという機能があります。
確認方法は、実行結果エリアで詳細を確認したい実行結果の右側にマウスカーソルを合わせると”+”マークが出てきますので、それをクリックするだけです。



すると、上図のようにUI、値やグラフなど詳細な実行結果を確認することができます。

※Xodeの6.4よりレザルトビューは、アシスタントエディターではなく、インラインにて表示されるように仕様が変更されています。よって、本記事では、敢えてアシスタントエディターの説明を省いています。

では、次回からは、Playgroundを使ってSwifについて説明していきます。