Swiftだめ自慢Beta5
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Swiftだめ自慢Beta5

on

  • 8,254 views

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

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

まとめ

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

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

Statistics

Views

Total Views
8,254
Views on SlideShare
7,931
Embed Views
323

Actions

Likes
20
Downloads
13
Comments
0

6 Embeds 323

https://twitter.com 218
https://cybozulive.com 70
http://www.slideee.com 32
https://tweetdeck.twitter.com 1
http://tweetedtimes.com 1
http://s.deeeki.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Swiftだめ自慢Beta5 Presentation 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がある言語は珍しく、深く考えずにコーディング しちゃう人多いと思うのでクラッシュ率上がるかも