2015年6月30日火曜日

Swift 2 (& LLDB) シンポジウムに参加

お疲れ様です。ZuQ9->Nnです。
2015年6月28(日) Swift 2 (& LLDB) シンポジウムが開催されたので参加しました。
場所は渋谷のスマートニュース株式会社さん。

そうあの有名アプリの会社さん 参加者はオーディエンスの
申し込みだけでも80人の大規模な勉強会

まずは、岸川さんからの今回の勉強会の趣旨、
やり方などの説明があり What's new in Swift2として
新しいSwiftのトピックを解説
  • Protocol Extensions
  • Error Handling
  • Guard Statements guard let ... else {}
  • Defer Statements defer {}
  • Pattern Matching
  • OptionSetType
  • Availability
  • Function Pointers
  • Open Source
の各トピックが話のネタとして提供されました。
このあとguard、@noreturnについての議論がパネリスト内で行われました。
一応アイスブレイクだったようなのですが、かなり議論がもりあがりました。

続いては、sonson_twitからSwiftは何処から手をつけていいかわからない。という議題が
この話は、かなり個人的に共感できる部分がありました。
各パネリストからの回答があり、話は、classとstructをどちらを使うか等の話に及んだり
class は全部finalで良いのかといった意見もとびだしました。

ここで一旦休憩があり、続いては

@_ishkawaの「Protocol Extension」

Protocol Extensionはインターフェースしか定義できなかった頃に比べて
 大幅にプログラミングを変えるということで
Swift1時代と Swift2時代のコードを比較しながら説明がありました。

 Protocol Extensionでデフォルトの実装が可能になり、
Objectve-CでのProtocolでのoptional と同じことができる
標準ライブラリのmap関数を例に出し、どのように変わったかを

sortedを例として型制約付きのグローバル関数が
型制約付きのProtocol Extensionに変わったことを
非常にわかりやすく説明されていました。

Protocol Extensionで抽象クラスの継承の問題
抽象化による型の損失の問題を解決できるので
classで設計するより抽象化のコードには向いているそうです。

@es_kumagaiさんの「Swift2.0 大域関数の行方から」

Swift2.0で衝撃的な出来事として大域関数の大幅の削除で
移動先のほとんどがprotocolに行ってしまったことがとても気になったそうで
Protocol Extensionは大域のジェネリック関数を全て置き換えるものなのかなと

また、Protocolになった場合での名前空間の衝突の問題。
型エイリアスの衝突を話されましたが、あまり問題にならないのではと結論
Protocol Extensionは積極的に使っていきましょう
大域関数に残ったものは使い分けが必要かもというお話でした。

再び休憩の後

@cockscombの「私とスウィフトとエラー」

Swift2.0のError Handringについて。昔はNSErrorのポインタからtry catchへ変わったこと
クロージャーのError Handring、非同期処理のコールバックでのエラーハンドリングの例を enum ValueOrErrorを定義してはどうか。。
エラーハンドリングはSwitch文のように網羅的であるかどうかなどを説明されました。
rethrowsなど知らないトピックがあり勉強不足を感じました。

@inamiyさんの「Swift 2 Error Handling V.S. Result

同じくError Handlingについて、今までObjective-C時代のエラー処理から Either/Resultに話が及び、Swift2になりtry catchにエラーの型が緩いのでResultよりも良さげだけど本当?
エラー型がゆるすぎる、非同期の処理では扱いにくい等の問題を説明。

非同期はLazy throwingという仕組みを考えられ、そちらはどうかと提案
やっぱり、Resultが今の所良さげかなと結論。

Resultにしたときの問題点、デメリットも説明。
最終的にRustを検討。Resultにたいしてthrowを行うことが綺麗で良いのではとのこと

勉強会自体、かなり長丁場で、後半かなり聞いているだけでも
疲れるか感じだったのですが、共感できる疑問点もあり非常に有意義に感じました。

また、いつもの発表会形式とは趣が違い、他人の疑問点、思い
試行錯誤などを垣間見られたのは貴重でした。