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

Swiftだめ自慢Beta5

8,368

Published on

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,368
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
16
Comments
0
Likes
21
Embeds 0
No embeds

No notes for slide

Transcript of "Swiftだめ自慢Beta5"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×