見出し画像

iOSDCに初参戦してきた!

iOSDC 2019に参加してきました!
iOS界隈の大きなカンファレンスに参加するのは初めてだったので、イベントの雰囲気や規模感も何も分からない状態で望んだ今回ですが、結果的にとても刺激の多い3日間となりましたので、感じたことや知見を書き残しておこうと思います。

きっかけ

iOSDCの存在はTwitterのTLで流れてきたツイートを見て初めて知りました。

(へー、こんなのあるんだー。行きたいなー。)

と思ったんですが、

(いや、俺iOSエンジニアの友達いないしな。行くとしたら…ボッチか。。)

と悩んでいると…

なんと!!
iOSDC実行委員長のHasegawaさん (@tomzoh) からリプライが…笑

事前ミートアップ

ということで、事前ミートアップに行くことを決意。
初のcookpad社へ!
恵比寿ガーデンプレイス綺麗すぎ(・_・;)

当日は、HasegawaさんとKishikawaさんのおふたりからセッションを聞くことが出来ました。

iOSDC JAPANについてのご説明 (@tomzoh)
・iOSDC Japan 2018 ベストトーク賞に選ばれた「デバイス・OSバージョンの依存が少なく、メンテナンスしやすいビューを作る」(@k_katsumi)

お話を伺って、

・iOSDCは大きな勉強会(お堅いカンファレンスではない)
・「双方向コミュニケーション」を軸としている
・めちゃめちゃ勉強になる
・半端ないエンジニアの人たちに会える

ということが分かったので、チケット購入しました!

Day 0

この日は前夜祭みたいな感じですね。
セッション数は少ないのですが、前日にレジストレーションを済ませられるので翌日は混雑を避けてスムーズに入れました。
人が少ないので「ご自由にお取り下さいコーナー」から好きなアイテムを頂けました笑

Day 1

この日は先頭にkishikawaさんのセッションがあったので凄く楽しみにしていたのですが…遅刻しました😭

以下、聞いたセッション。

色についてとことん掘り下げていくお話でした。

僕には難しすぎて殆ど理解できなかったんですが💦…ダークモードにしても液晶ディスプレイの場合バッテリー消費量を抑えることは出来ないというのは初めて知りました。
有機ELディスプレイの場合は自発光型のため、暗い部分は発光せず結果的に消費電力を抑えることが出来るらしいのですが、液晶ディスプレイは受光型でバックライトの液晶カーテンに通すことで色を調節しているため、ダークモードで暗くしてもバックライトは全力で光っているらしい(液晶カーテンで調節して暗くしている)😱

クリーンなコードを書くための手法についてのお話でした。

ごめんなさい、寝てました😪
前日、深夜までコードを書いていたので若干寝不足でした。
いや…iOSDCでアドレナリンが出ていたとはいえ睡眠は十分に取るべきでしたね。。。

iOSDCでは無料でコーヒーを飲むことが出来るので、眠くなったら全力で貰いに行きましょう!☕️

リアルタイム画像処理についてのお話でした。

リアルタイムに取得した画像をUIImageViewへ変換するまでの流れを丁寧に解説して下さいました。リサイズ処理を行う際にCIImageとUIImageどちらを使うべきかを、実際に処理時間を計測し、最大処理時間と平均処理時間まで出されていたのは素晴らしいなと感じました。UIImageの方が遅いというのは意外な結果でした。

決済処理を書き換える際に、どのような判断でテスト方法を選定したかについてのお話でした。

冒頭で注意掛けされていたように、セッションでの話はベストプラクティスではありませんし、多数のチームには当てはまらない内容だったと思います。ですが、世間一般で提唱されているベストプラクティスが必ずしも自分のチームに当てはまる訳ではないということに気づかされました。選択肢を洗い出しメリット・デメリットを照らし合わせた上で、最も現状のプロダクトにマッチしている方法を選定することが大切であるということですね。

Danbo-Tanakaさんのセッションは凄く落ち着いていて、柔らかい雰囲気が常に維持されており、会場全体で「一緒に頑張りましょ〜」的な団結力が見られた気がします。

定期課金に関するお話でした。

処理の流れがシーケンス図によって簡潔に纏まっていて、理解しやすかったです。エラー処理に関しても細部まで説明して頂けました。
セッションはLT裏で行われていたのですが、ホールEはほぼ満席で大勢の方がいらしてました。LTの方も気になりましたが、タイトルにある通り定期課金について詳しく知ることが出来たので行って良かったです。

ひとつ前のロクネムさんのお話と同じく課金周りについてでしたが、こちらは消耗型課金のお話でした。

消耗型課金の場合はアプリ内アイテムを購入する度にレシートが更新されるしまう。
Apple Store側で処理が完了していてもサーバ・クライアント側で処理が完了していなければ、ユーザからお金だけ頂いてアプリ内アイテムを付与していない状態が発生してしまう問題をいかに解決しているか詳細にお聞きすることが出来ました。

AbemaTVでは、
・購入中は次のアイテムを購入できないよう制限をかける
・特定のタイミングで未完了トランザクションの有無を確認し、必要があればサーバへリクエストする
ことで解決しているそうです。

不整合が起こるフェーズまでいかないよう徹底的に制限をかける事で対処しているんですね。途中登場したシーケンス図がとても分かりやすく、記憶に残っています。

会場の雰囲気もほんわかしていてコミュニケーションが取りやすく、楽しいセッションでした😆

Day 2

デジタル化粧(仮想的に化粧をしているように見せる技術)についてのお話でした。

複数のライブラリのメリット・デメリットの比較や実装したOSSのデモなど参加型のセッションとなっており、お腹いっぱいになりました。

個人的には、肌を綺麗に見せるフィルターを実装する際にPhotoshopのチュートリアルを参考にしたというお話が興味深かったです。視野を広げてあらゆるフィールドから知識を得ることで目的を実現していく姿勢は、僕に足りないところなので是非参考にさせて頂きたいです。


「自作して理解するリアクティブプログラミングフレームワーク」

RxSwiftのいくつかの機能を自作することでリアクティブプログラミングを完全に理解しようというお話でした。

準備が周到されていて、リスク管理(動画が止まってしまった時用に小サイズの動画も用意されていました)も完璧でした。。。
僕が見た中で一番盛り上がっていたセッションでした!

「ツイートをリアルタイムにディスプレイに表示」「テスト × ボディビルダー」「デモ動画を事前に録画」などの工夫によって、今回のiOSDCで軸として謳われていた双方向コミュニケーションが体現されていました!

ツイートだけ見たら「ホールAは一体何をやっているんだ!?」という感じだったでしょうね笑

「キレてるよ!」
「完全に理解した!」
「肩にちっちゃいジョブズのせてんのかーい!」


以下、LTから幾つか抜粋。

個人的に一番記憶に残っているセッションです!
Swiftがレジスタをどのように使っているかについて調査したお話でした。

自分で調べてよく分からなかったのでWWDCでAppleのエンジニアに直接質問した、という行動力が素晴らしいなと感じました。。(僕もWWDC行ってみたい!)

途中、最適化オプションを付与したらコンパイラが優秀すぎてレジスタさえ使われず即値でリターンされていたのは最高に面白かったです笑

TwitterのTLのように、それぞれ異なる高さのセルを描画しようとするとガクついてしまう問題を解決し全力でスクロールを滑らかにするというお話でした。

これは僕も直面したことがあるため、とても親近感を感じながら聞くことが出来ました。
Facebookはクライアントの画面幅をもとにサーバー側でセルの高さを計算して返しているというのは衝撃でしたね💦

クライアント側で文字数から高さを計算することが可能なので、サーバサイドでセルの高さを計算してくれなんて絶対に頼んじゃダメですよ!笑

C言語でゲームボーイソフトを開発したお話でした。(Swiftは一切出てきません笑)

正直、発想力・実装力・向上心の高さにゾッとしました。
ゲームボーイソフトの開発はアセンブリ言語だったというのも衝撃ですね😱
アセンブリでゲームが作れるのは考えれば当たり前ですが、それでも信じられません。。

最終的に今風のサービスを活用して継続的デプロイを実現されていました。
30年前のゲームソフトを現代の技術を駆使して開発するというギャップも、とても面白かったです。

まとめ

初参戦で不安もありましたが、足を運んで本当に良かったです。
大勢の方がカンファレンスに来ているのを見て、周りの方々の向上心の高さを実感し多くの刺激を得られたことに加え、お互いを認め合いながらレベルアップしていくエンジニアの世界に身を置けて本当に良かったと思います。

スピーカーの方々は実装力も半端ないんでしょうが、何よりプレゼンが上手すぎて感激しました。エンジニアにとって、アウトプットすることが如何に重要なことであるかも実感することが出来ました。今回は聞く側での参加でしたが、僕も早く話す側の人間になれるように頑張っていきたいと思います。iOSDC 202Xも絶対に行くぞ!

最後に…

みなさん話面白すぎん?笑


この記事が気に入ったらサポートをしてみませんか?