Simple gadget life programming diary

Simple gadget life の中の人によるプログラミングメモ

Swift事始め。サンプルプログラムを作ってGitHubへアップロードしてみた。

これまで、自分のアプリ作成(もう少しかかる。。)やサーバサイドの学習をしていた関係上、Swiftに手を出さないままここまで来てしまいました。
アプリ作成のモチベーションアップのためにもこの辺でSwiftにシフトするのもありかなと考えてちょっとGW中に触ってみました。

作った成果物はこちら

github.com

f:id:jtaka1012:20160509071729p:plain
f:id:jtaka1012:20160509071735p:plain

天気予報のAPIを叩いてパースして表示。せっかくなので過去の情報もDBへ保存という内容はともかく技術的には割りと多く求められるタイプのものだと思います。

使用したライブラリは以下の通り(CocoaPodsにて導入)
- Alamofire (通信ライブラリ)
- Realm (DB)

ホントはもっと使いたかったけど、まずは完成させることが最優先なので、この辺で。
今後はRxSwiftも触ってMVVMモデルでもう少しちゃんと書きなおしてみる想定。

とここまではGitHubのREADMEに書いたことのまとめ。
ここからはSwiftを初めて触った感想を少々

文法的にはわりとすぐ慣れそう

iOSフレームワークという点では今までと同じなので、心配はしていなくて最初の難関(?)としては文法的な部分かのかなと。
いろんな言語を参考にされて作られているっぽいので、「みたことあるなぁ」的な感じにはなります。
個人的にどの言語にちかいのかというと、JSのようなJavaのようなPythonのようなみたいな感じです。
触る前はArray,Dictionaryとかの呼び名はPython的かなとおもってましたが、try-catch(do-catch)はJavaだし、メソッドチェーンみてるとJS思い出すしでなんだか不思議な感じです。
慣れるとObjective-Cに戻りたくなくなってきますね、これ。

ビルド遅い

そんなに遅いのって思ってましたが、作ったサンプルでさえ手持ちのMacBookAir(多分2013製)で1分ほどのビルド時間を要することがあります。ビルド時に型推論とかで時間かかってますかね。クラスのインポート行わないので、このタイミングで何かしらするのかなと。
ある意味CPUやメモリに依存する部分なので、マシンスペックが上がれば解決する問題なような気がしますが、個人用のPCではそんなに変わらないかな。(サーバで出来るようになれば全然話が変わりそうだけど)

厳密な型チェック

最初はよくわかりませんでした。!とか?とか。なんで怒られるのかと。。
要約仕組みを理解してきて書けるようにはなってきて受け入れられるようにはなりました。
基本文法はイマドキなフレンドリーさがある一方で、型チェックにはうるさいですね。「これJavaが嫌いな人とか無理だろうなぁ」と何となく思ってみたり。個人的には問題なしです。

と個人的なファーストインプレッションでした。
小さなサンプルだけど、設計的にいろいろ考えながらやってるので勉強になる。やっぱり手を動かさないとですね。
設計で考えたところはRxSwift対応した時に書いてみようかなと。
もっと触る頻度を増やしていって綺麗に早く書けるようになっていきたいです。