Swiftの動向とアツさを追う try! Swift参加レポート

try! Swift 2日目 参加レポート

この記事を読むのに必要な時間:およそ 5 分

Yosuke Ishikawaさん「Protocol-Oriented Programing in Networking」

ネットワークライブラリAPIKitの開発者のYosuke Ishikawaさん@_ishkawaは,Protocol-Oriented Programmingを適用したネットワーク関連のコードに関するセッションを行いました。

NSURLSessionをProtocolを使ってラッピングする

実装のゴールとしてはリクエストの型を指定すると自動でレスポンスの型が決定され,型安全にレスポンスが取得できるようにすることでした。

画像

この設計にProtocolが適している理由は以下の2つだそうです。

リクエストとレスポンスを紐付けが可能になる

Protocol内でtypealiasなレスポンスを宣言し,レスポンスを返すメソッドを作成することで,リクエストとレスポンスを紐付けることができます。リクエストの結果を受け取った時にレスポンスを返すメソッドを使用することで,リクエストごとに違う型を返すことができます。

デフォルト実装をフレキシブルに実装できる

DecodableというProtocolでdecodeメソッドを定義します。Protocol ExtensionにDecodableに準拠したResponseの型制約を使うことで,Protocol ExtensionのメソッドでResponseからdecodeメソッドが呼べるようになります。

参考になるソースコードは以下のものだそうです。

Generic Programing on Protocols

ページングなどの制約をprotocolで表していました。

  • ページ情報とページ指定をするメソッドを定義したProtocolを定義
  • 次のページの有無を表すProtocolを定義
  • 上記のProtocolに準拠したページネーションクライアントを実装

Protocolで定義したメソッドでしか実装しないことで汎用的なページネーションタイプのクライアントになれるとのことです。

Reactive Stream

画像

最後にRxSwiftを用いて,リフレッシュとネクストページをトリガーにしたリアクティブプログラミングをライブコーディングを行っていました。

画像

著者プロフィール

田中孝明(たなかたかあき)

岡山県岡山市出身。愛知県>福岡県と様々な地で開発業務に従事。電子制御機器のプログラミングでC言語に触れてから,C++,Java,PHP等を経験。iPhoneアプリ開発に触れてからはObjective-Cを学び,2015年にクラスメソッドにジョインしてからはSwiftでのiPhoneアプリ開発に従事。

Twitter:@kongmingtrap

コメント

コメントの記入