Your SlideShare is downloading. ×
0
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Swiftだめ自慢Beta5

8,276

Published on

LLDiverの「帰ってきただめ自慢」で発表した資料です …

LLDiverの「帰ってきただめ自慢」で発表した資料です

まとめ

・Optionalの変数を扱うときは当然Optional ChainingやBindingは使おうというのは前提で、それでもSwiftで完結できない現状ではクラッシュ率が上がるのでは、というお話です。

補足:
「WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方」
http://www.slideshare.net/YoshinoriImajo/webapioptional-bindingswift

Published in: Technology
0 Comments
21 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,276
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
16
Comments
0
Likes
21
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Swiftだめ自慢 LL Diver 夜の部 2014.8.23(Xcode6 b5) 株式会社キュリオシティソフトウェア 今城 善矩(@yimajo)
  • 2. 会場の皆さんに質問 iOSアプリ開発経験はないが、 Swiftで始めてみようかなという方 挙手をして下さい! ! ! (・ω・)ノノノノノシ (´∀`)ノノノノノシ
  • 3. にわか乙
  • 4. 今はまだやめとけ!! (今はまだObjective-Cから始めたほうが近道だと思う)
  • 5. XcodeのSwift対応も まだいまいちで 苦痛を伴うし、
  • 6. Swiftの言語仕様は大きく変 化している最中、
  • 7. Swiftの言語設計者自身は iOSアプリを作った経験がない のではないかと疑うほど iOSアプリ開発と相性が悪い点 がある
  • 8. iOSアプリとの 相性の部分について
  • 9. Swiftでは オブジェクトがnilの場合にメソッド 呼び出しは実行時エラーになり アプリがクラッシュする
  • 10. Hoge *object = [Hoge piyoA]; //nil返した ! [object methodA]; //クラッシュせず [object methodB]; //クラッシュせず let object: Hoge = Hoge.piyoB() //nil返した ! object.methodA() //クラッシュする object.methodB() //クラッシュする Objective-C Swift 例 [注釈]piyoBメソッドはnilを返さないと定義されていたのにnilを返された
  • 11. SIer的な人「クラッシュしないというこ とはバグが発見されるタイミングが遅く なって致命的なエラーになりかねないの に、Objective-C使ってる奴らは何を考え ているのか…」
  • 12. すごく気持ちは分かる が iOSアプリの性質というものもある
  • 13. iOSアプリは手触りの良さが全てなのでUIに凝りがち イベントドリブンなのでアニメーション中の操作など 加味しないといけない 事例1
  • 14. Objective-Cを使った場合 特にUI関連のコードは条件分岐による nilチェックを入れるまでもないと判断 される場面が多く 素早くかつ安全なコードを書けた
  • 15. SIer的な人「SwiftにはOptionalが 言語レベルでサポートされていて、 それのおかげでそもそもnilへのメ ソッド実行は防げるので相性悪く はないのではないか」
  • 16. それも言いたいことはわかる ! Swiftで完結していて自分だけが書いたコー ドでアプリが作れるのであればそれは正しい
  • 17. iOSアプリは広告や効果測定ライブラリ などサードパーティーのコンパイル済み ライブラリをてんこ盛りに入れがち 事例2
  • 18. コンパイル済みライブラリはアプリ開 発者によるソースコード変更はできな いので、ライブラリ提供者の習熟度を 期待するしかないという 厳しい戦い
  • 19. 事例3 Appleが提供してくれる Foundation FrameworkのOptional対応も 今のところまだ雑
  • 20. 事例3 公式リファレンスには通信失敗時はNSDataオブジェクトがnilになると書 いてあり、そうであればNSDataはOptionalのNSData?になるはずだが NSData!になっていてメソッドの宣言部分で意味が捉えられない。 (通信成功でもレスポンスにHTTPBodyがない場合もnilになると思う) NSURLConnectionで通信結果を非同期に取得するメソッド
  • 21. AppleはObjective-Cで書かれたAPIの 引数の型に機械的に !を付けてImplicitly Unwrapped Optionals にしている気がする。 ! よくわかってないとクラッシュする可能性 は高いので 今はまだSwiftで始めるのは時期尚早
  • 22. 結論
  • 23. SwiftはOptionalという概念が 言語レベルで存在することで コンパイラがロジックをチェックしてくれ る型安全な面を持っていて 言語としてとても良い感じがする
  • 24. しかし
  • 25. 最近みたネット上の技術記事で、nilになる可 能性があるメンバ変数に対して都度Optional として扱うのは面倒だからという理由で Implicitly Unwraped OptionalでOptional型 から変換していたり…
  • 26. 優秀なObjective-Cエンジニア だってSwiftに慣れていなければ間 違うので結構難しい問題だと思う
  • 27. まとめ • Objective-Cではnilへのメソッド呼び出しは無視されるの であまり頻繁にnilかどうかをチェックしなかった(した ければすればよかった) • SwiftのOptionalで型安全になったがiOSアプリ開発者は 元々必要性は感じてなかった(言語仕様としてとても素 晴らしいとは思う) • Optionalがある言語は珍しく、深く考えずにコーディング しちゃう人多いと思うのでクラッシュ率上がるかも

×