池袋で【Swift】iOS・iPhone勉強会「4年前のカメラアプリをSwiftで書きなおした」に行ってきた
自己紹介、会社紹介
FrameCamera 2.1
- カメラ上にフレームをスワイプで切り替えて撮影できる
- 2009年にiPhone3GSを手に入れて、2009年末に開発
- 2010年3月にリリース
- Twitter投稿対応
- 2010年9月にiOS4対応
- iPhone4には未対応
- こないだまでAppStoreでも配信されているぐらいに、動いていた
- 気づいたら4年放置...
- ARCもないので、メモリ管理は自分で。AVFoundation?Storyboard?CollectionView?
2014年夏
- 6月にSwiftが登場
- 勉強をかねてバージョンアップ
- 2014年9月スタート
- 実質2人日ぐらいで動いた
- 6人日弱で申請
- 新機能?に助けられた
開発方針
- 機能はそのまま
- iOS7対応
- StoryBoardを採用
- カメラの上にフレームを表示する
- これまで
- AVFoundation + CollectionView
結論!
ヘッダーファイルがない!
クラス宣言は直感的
- 他言語にありがちなので、すぐ理解できた
enumは結構違う
Obj-Cとの連携は簡単
- SwiftのプロジェクトにObj-Cのコードやライブラリを追加するのは簡単
- ProjectName-Bridding-Header.h を作成しプロジェクトに追加する
Optionlどうなの?
Optionl:1
var ngName: String = nil // NG! var ngName: String? = nil // OK!
var ngName: Opitonal<String> = nil // OK!
Optional:2
var myName:String? = "test" var upper = myName.uppercaseString // NG!
OptionalをUnwrapする
var upper = myName?.uppercaseString // OK!
Optional:3
if(myName != nil){ var upper = myName!.uppercaseString }
var upper = myName?.uppercaseString
Optional:4
Optionl宣言面倒!への対応
var myName: String! = "test" var lower = myName.lowercaseString
Implicitly Unwrapped Optional
Optional:まとめ
DelegateはProtocol
無理にStringを使わない
- 慣れている方を使った方がいい
- Dictionaryだと型が決まってしまう
- NSDictionay、NSArrayをそのまま使う方が便利
単語や演算子間のスペースが超重要
- = の前後にスペースをあけないとエラーになった(Xcode 6.0.1あたり)
Xcodeは旧バージョンを残す
アップできなかった
スクリーンショット準備が大変
- 画面サイズが増えた
- 多言語になると、もっと増える
おすすめ検索方法
- Googleの検索時に、期間指定をするといい
質疑応答
参考にした書籍、ドキュメントは?
Optionalの「?」「!」は、なんて呼ぶ?
- ググりづらい
- wrapの..、unwrapの...と心の中で呼んでいる
- 記号が意味を持つのは好きじゃない
学習コストは?
- Swiftは書きやすい。他の言語をしている方には、慣れやすいのでは
- 今後は、Swiftだし
- 2.0とかで、Optionalもよくなるんじゃないかな?と思います
- ヘッダーがないのは楽
- SDKについて知っているかが、工数では大きく影響が出る