8/30(木)~9/2(日)に開催されたiOSDC Japan 2018にWantedlyのスカラーシップスポンサー枠で参加してきました。 人生初の技術カンファレンスでしたが、非常に楽しかったです! 楽しすぎて長くなりそうだったので、この記事では技術カンファレンスの花形のセッショントークの中から、自分がおもしろいと思ったものをいくつか抜粋して、セッショントーク編としたいと思います。

(9/6追記)

イベント編書きました!

パンフレット(キラキラ)と首から下げるやつ
パンフレット(キラキラ)と首から下げるやつ

スカラーシップスポンサーについて

iOSDCにスカラーシップスポンサー枠で参加したい学生Wanted!

冒頭でも書きましたが今回のiOSDCにはWantedlyさんのスカラーシップスポンサー枠で参加しました。

iOSDCのような大きな技術カンファレンスだと、参加費が学生には少し厳しい価格だったり、また遠方の学生は交通費や宿泊費などの面で参加が難しかったしますが、スカラーシップスポンサーはそういった部分の面倒を見ていただけるというものです。 実際に自分も参加費や交通費のサポートを頂き、本来であれば参加を躊躇していたであろうイベントに参加できたので本当に感謝しています(*^^*)

自分を選んでいただいたWantedlyの皆様にはこの場をお借りして改めて感謝申し上げます。

1日目

ここからは自分がおもしろいと思ったセッショントークを抜粋していきます! 自分は8/30の前夜祭には参加しなかったため、8/31の本編1日目からのまとめになります。

MicroViewControllerで無限にスケールするiOS開発

スライド

MicroViewControllerという考え方で、VIewにおけるパーツ一つ一つごとにViewControllerを分割し、そのViewに関する責務を分割・隠蔽することで開発する人数が増えたり、仕様が複雑になっていっても無限にスケールすることができる開発手法の紹介でした。

発表の冒頭にMicroservices for iOSという言葉があり、これが捉え方として一番しっくり来るように感じました。 また、レイアウトはUIStackViewを継承したクラスを利用しているようで、なれが結構必要そうだなと感じましたが、メルカリさんのような複雑さになってくるとその部分を含めてもこの開発の形をとったほうが効率的なんだろうなとか想像しながら聞いていました。

安定したチャットを実現するためのアプリとAPI設計

チャットのようなデータをサーバから取ってくるときによく見るoffsetlimitを指定するタイプのAPIのデメリットと、それの代わりにlatestoldestにより範囲を指定するAPIのメリットや注意点・工夫点についてと、逆にメッセージを送信するとき重複などを防ぐAPI・クライアントの設計についての発表でした。 このようにAPIをガッツリ叩く開発は経験がありませんが、非常に丁寧に説明されていて、内容は納得できる点が多いものでした。

この先、こういったものを開発する際にはぜひ参考にしたいと思いました。

宣言的UICollectionView

UICollectionViewはうまく利用すると複雑なUIを組むことができる一方、複数の種類のセルがあったりすると一気に難易度が上がる問題があります。 そこでその周辺を

  • 状態を表すデータ(Model? Entity?)
  • セル・セルのコレクションを表すデータ(↑をもとに生成、MVVMのViewModelみたいな認識)
  • 実際のView

に分割して、かつViewModel的な変換の部分をうまくやることでUICollectionViewの内容を宣言的に定義できるようにしよう!という内容でした(間違ってたらごめんなさいm(_ _;)m)

Viewに対してデータの保持部分などの責務を分離しようというのは他でもありますが、それをUICollectionViewのセルに対して行い、なおかつその結果、UIを宣言的に定義できることがおもしろかったです。 MicroViewControllerは趣味レベルの規模だと導入を少し悩みますが、この発表の内容については趣味レベルでもUICollectionViewを組むときは参考にしようと思いました。

iOSと(深層)強化学習

iOSのAccelerate Frameworkで行列演算を行うことで簡単なニューラルネットワークを構築し、デバイス側で学習を行うという内容の発表でした。

研究に関連がそうだったため聞きに行きましたが、研究の期間がもう少し長ければ参考にしていたかなーという感じで、現実的にこの方法で1からネットワークを構築していくのは厳しいかなと思いました。 ただ、デバイス側での学習は非常に夢のある分野なので、今後のデバイスの性能向上や周辺システムの発達によっては重要となりそうだなといった雰囲気です。

2日目

Depth in Depth

iPhone7 Plus/iPhone8 Plus/iPhone Xに搭載されているカメラから深度データを取得する方法や、深度データを利用して人物画像の背景を差し替えるデモの紹介でした。 発表の中で順を追って正しい深度データの扱い方を説明されていたので、非常にわかりやすく・楽しく聞くことができました。

深度データについては今取り組んでいる研究にそのまま利用できる内容で、iOSDC後の教授とのミーティングで

「こんな情報があってですね….」

と言ったぐらいに参考になりそうです笑

State of the Union ~2018年のアプリ開発事情~

最近のiOSアプリ開発における周辺知識がざっと紹介されていました。 このように様々な内容をまとめてみることはなかなかないため、この機会に一気にキャッチアップできてよかったです。

また、発表の中で述べられていた流行りの技術に飛びつくのではなく、なぜそれが流行ったかの背景を考え、自分がいつかその課題に遭遇したときのために理解しておくことが大切というのがなるほどという感じでした。

3日目

iOSマイクロインタラクション入門

iOSアプリにおけるマイクロインタラクション(ユーザーのアクションに対するシステム側からのちょっとしたリアクション)についての発表でした。 簡単なマイクロインタラクションの実装についても紹介されていて、自分のアプリにも取り入れたいと思いましたが、一方で発表の中で**「使い勝手をよくするためではなく、使い心地をよくするために使う」**や**「アプリによる課題解決ができた次の段階で取り入れるべき」**と言われており、納得もしたので、その点には十分注意して導入してみたいです。

iOSエンジニアのための、SwiftからPythonのライブラリを使って機械学習する方法

Swift5から導入される機能を使ってSwiftからPythonのC APIを呼び出す方法についての発表でした。

これも研究について関連ありそうな内容だったので聞きに行きましたが、まだ実験段階で研究に利用するのは難しそうでしたが、iOS上でそのままTensorflow(Liteなどではなく)やscikit-learnなどが動かせれば既存の機械学習関連の資産をほとんど利用できるため夢があるなと思います!

iOSアプリの開発速度を70%高速化したデバッグノウハウ

iOSの開発速度を上げるいくつかのノウハウについての発表でしたが、一番重要なのはテスト自動化だったように思います。

そのテスト自動化について、あえて「テスト」という言葉を使わずに発表していたのが印象的でした。 これについては、最近の「テスト」という言葉について回る「書かなきゃいけないもの」という押し付けがちな雰囲気を懸念してのものだそうです。 確かにこういう考え方になりがちだなと自分を振り返れることができました。

また、その他にもXcode/AppCodeをつかった実際のフローも紹介されていて学びが多かったです(多すぎてほとんどスキップされていました笑)

「テストを書かなきゃいけない」ではなく目的ベースで考えて必要ならばテストを書くぐらいの感じでやっていきたいです。

あとスライドかわいい。

最後に

おもしろいと思った発表が多すぎてこんなに長くなってしまいましたが、それだけ学びが多かったんだと温かい目で見ていただけるとありがたいです(´・ω・`)

冒頭で書いたように人生初めての技術カンファレンスで、3日間技術のことばかり考えていられてとても楽しかったです。 今大学4年生ですが、高校の進路選択のときに「技術カンファレンスとか勉強会とかに行きまくるんだ!」と思って東京の大学に進学しておきながら、今の今まで小さな勉強会に数回参加した程度できてしまっていることをホントに後悔しています….(TдT)。 今までの分を取り返すためにも、これからはいろいろと参加してみたいです

この記事は「セッショントーク編」で、次の記事はセッショントーク以外の「iOSDCこんな感じだったよ!こんなとこがおもしろかったよ!」的な記事を書ければなーという感じです笑

こんな長い記事を最後まで読んでいただいてありがとうございました。 次もぜひ読んでいただけると嬉しいです!