VB.Net
ポエム
Swift

VBプログラマがSwift入門してみた

More than 1 year has passed since last update.


自己紹介


  • VB歴: 9年

  • Swift歴: 約4ヶ月


  • Udemy講座で勉強
    2011年にMacBook Airを購入していたのですが、Xcodeを1度だけ起動してiOSアプリ作ろうとして、触りかたが全くわからず諦めた過去がありました。
    今回は、iOS10のUdemy講座を買って勉強しました。様々なシーンで使用できるコードテクニックを紹介されているので非常に参考になりました。



アジェンダ


  • 似ているところ

  • 異なるところ

  • つまずいてところ

  • 今回作ったもの

  • まとめ



似ているところ


  • UI開発がマウスで出来る

  • 型に厳格



UI開発がマウスで出来る(Swift)

Swiftコントロール貼り付け.gif



UI開発がマウスで出来る(Swift)

Swiftコントロールとソースの関連.gif



UI開発がマウスで出来る(VB)

VBコントロール貼り付け.gif



UI開発がマウスで出来る(VB)

VBコントロールとソースの関連.gif



型に厳格


VB.NET

Dim int As Integer

If Not Integer.TryParse(TextBox1.Text, int) Then
int = 9999
End If
Label1.Text = CStr(int + 1)

※ Option Strict を On に設定した場合



Swift

if var int: Int = Int(InputText.text!) {

int = int + 1
OutputText.text = String(int)
} else {
OutputText.text = "9999"
}

ただし、型に厳格すぎて鬱陶しく感じる面も..



異なるところ

色々あるけど...

僕が素晴らしいと思ったところをあげます。


  • 関数がNullを返すかすぐわかる



関数がNullを返すかすぐわかる(VB)

Nothingが返るかは、ドキュメントを見るか、ソースを追うか、トライエラーしかありません。

(Nullableを使うべきですが、こんな書き方が許されています)

''' ブランクを渡すとNothingが返る

Function NullableFunc(ByVal str as String) as List(Of String)
Dim list As List(Of String) = Nothing
If Not str.Equals("") Then
list = new List(Of String)
list.Add(str)
End If
Return list
End Function

Dim result = NullableFunc("")
Console.Out(result(0)) ' NothingReferenceException

コーディング規約で「関数の最初に変数宣言こと」とか「必ず初期化すること」と書かれているのでこんなことに...



関数がNullを返すかすぐわかる(Swift)

func NullableFunc(str: String) -> Array<String>? {

var list: Array<String> // nil代入できない
if str != "" {
list = Array<String>()
list.append(str)
return list
}
//return list コンパイルエラーになる
return nil
}

// Nullable型なので`!`でアンラップする必要がある、だったら事前にnilチェック
if let val = NullableFunc(str: "") {
print(val)
}

VB.NETで警告だった諸々が、コンパイルエラーになる!!



つまずいたところ



class AppDelegateの行でアプリが停止する

ログにはこんなエラーが...

\'NSUnknownKeyException\', reason: \'[<SampleSwift.CountUpCollectionViewCell 0x7ffbf8901d90> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key count.


コントローラーでコントロールと紐づいている変数名を変更した場合などに発生します。

ストーリーボードでViewController上の黄色いアイコンを右クリックすると、このように警告が表示されています。

コントロール紐付けエラー.png



今回作ったもの



まとめ

SwiftとVB.NET両方とも画面の完成イメージを見ながら直感的に画面作成できて初心者向きなイメージを抱きました。

ただ、Swiftのチュートリアルは英語しかなく、勉強するなら書籍や動画学習が中心になるのではと思います(私はこれがSwift入門を躊躇していた要因)。

様々な言語に触ると、普段使用している言語の悪いところ・いいところが垣間見えてVB.NETを少し惚れ直しました。