iOSDC Japan 2017とは?
iOSDC Japan 2017はエンジニアが主役の、iOSと周辺技術を題材としたカンファレンスです。昨年初開催のiOSDC Japan 2016に続き、今年が2回目の開催となりました。
今年はiOSDC Japan 2017 実行委員会とWASEDA-EDGE人事育成プログラム実行委員会の主催のもと、早稲田大学 理工学部西早稲田キャンパス 63号館で、9月15日〜17日の2.5日間(15日は夕方から開催の前夜祭)にわたり開催されました。
昨年と比較すると、開催日数は前夜祭を含め1.5日から2.5日、トーク応募数は168から282、スピーカー数は42人から91人、参加者は478人から742人となり、好評だった昨年を大きく上回る規模となりました。
ご参加いただいた参加者やスピーカーの皆さま、協賛いただいたスポンサーの皆さま、ともにiOSDCを支えていただいたボランティアスタッフの皆さん、本当にありがとうございました。
このレポートでは、たくさんの興味深いトークの中から、いくつかピックアップしてお届けしていきます。まずは前夜祭から「SiriKit and Me」と「Swaggerで始めるAPI定義管理とコードジェネレート」のレポートです。
SiriKit and Me
前夜祭最初のトークは、フリーランスのiOSエンジニアで今回のイベントスタッフでもある@TachibanaKaoru氏です。タイトルは「SiriKit and Me」で、SiriKitをテーマとしたものでした。
SiriKitはiOS10から追加されたツールキットで、サードパーティー製のアプリをSiriやMapなどのシステムアプリと連携させるためのものです。
実例を交えSiriKit対応の有用性を解説
日本のサービスでは、全国タクシーがSiriを利用した配車サービスを、LINEがSiriを利用したメッセージ送信に対応しています。
来場者にSiriKitをユーザーとして使ったことがあるかを挙手でアンケートを取ったところ、3名が利用したことがある状況でした。
TachibanaKaoru氏はSiriKitの実装をおすすめする理由として、次の2点を挙げています。
- システムアプリからの導線を確保できる
- 視覚障害者の方への対応
HomePodへの展望
12月にオーストラリア、英国、米国で発売が予定されているApple製スマートスピーカー、HomePodへの予想も語られました。
現在のところHomePodはアプリへの対応を特にアナウンスしていませんが、TachibanaKaoru氏はSiriKit対応アプリがHomePodにも対応できるのではないかと予想しています。
STRUGGLE WITH SIRIKIT
トーク後半は、SiriKit対応時の技術的な困難さを実際の経験を踏まえて解説しました。
SiriKitはExtensionとしてHost AppのBundleに含まれるものの、別プロセスとなるため、App Groupsを活用してデータを共有することで異なるプロセスでのデータ共有が実現可能になります。
また、タイムアウトやサーバーエラーなどのエラーハンドリングについても取り上げました。タイムアウトはキャッシュを利用したレスポンス時間の短縮を利用すること、サーバーエラーはSiriKitのログを見て解析することを解決方法として挙げています。
さらにiOSのバージョンアップで、コードを変えていないのにもかかわらずSiriからのレスポンスが変わることがあるとのことで、この対策として一連の流れを映像として残しておくことを推奨しています。
これからの方向性をひらくもの
TachibanaKaoru氏は「10年のiOS経験で最も辛かった」とSiriKitのデバッグの難しさを分かりやすい表現で述べています。その一方、技術的な困難さがありながらもHomePodへの展望と予想を述べるなど、「これからの方向性をひらくもの」であるとしてトークを締めくくりました。
Swaggerで始めるAPI定義管理とコードジェネレート
前夜祭3番目のトークは、フリーランスのiOSエンジニアである杉上洋平氏(@susieyy)による「Swaggerで始めるAPI定義管理とコードジェネレート」でした。
RESTful APIの標準化を目指すSwagger
SwaggerはMicrosoft、Google、IBMなどの企業がRESTful APIの定義記述の標準化を目指して立ち上げたOpen API Initiativeで採用されているツール群の総称です。このSwaggerについては杉上氏のスライドで詳しく説明されています。
API定義の明文化でコラボレーションの円滑化を
杉上氏はAPI定義を明文化する目的は「値の型やOptionalについての共通認識のすり合わせを行って手戻りを少なくすること」だと述べました。
このトークでは、Swagger Editorを使ってAPIのエンドポイントやモデルの定義を明文化させる手順を説明し、さらにコードジェネレートの必要性についても解説しました。
コードジェネレートが必要な理由として、次の3点を挙げています。
- 通信時(疎通時)にサーバとクライアント間の実装齟齬よる課題発生を抑止
- 開発のスピード向上
- 人為的なミスの抑止と品質の向上
コードジェネレートには、SwiftをはじめKotlinなどの新しい言語にも積極的に対応しているswagger-codegen
を使用しています。Swaggerによる定義とコードジェネレートの運用の際は、swagger.yamlのタグとPodspecのタグを一致させる方法を提案しています。
一致させることで、生成されたSwiftのコードとAPI定義がタグによってわかるようになります。このタグをリクエストヘッダに追加することでトラブルシューティングにも役立つと話していました。
開発効率化や品質向上にフォーカスするケースが増える
杉上氏は最後に、iOS/Swiftコミュニティの成熟化が始まってきており、今後は開発効率化や品質向上にフォーカスするケースが増えてくるのではと予想しています。そのようなことからも「Swagger及びコードジェネレートが一助になることを願っている」としてトークを締めくくりました。
まとめ
iOSDC Japan 2017の前夜祭から「SiriKit and Me」と「Swaggerで始めるAPI定義管理とコードジェネレート」の2つのレポートをお届けしました。
前夜祭は平日の午後から行われましたが、運営側の予想を上回る300人超の参加者が来場しました。トーク終了後にはスピーカディナーも開催され大いに盛り上がりました。
実践的なトーク、予想以上の来場者、スピーカーディナーの盛り上がりから、本開催に向けて期待が膨らむiOSDC Japan 2017幕開け前夜となりました。
(1日目のレポートに続きます。)