iOSDC Japan 2017 に参加してきました

ほらね、Wi-Fi のパスワードがね、iwillblog になってたら、書かなきゃダメじゃん?

というわけで、はてブデビューさせていただきました。Auto Layout 絶対殺すマンこと、星野恵瑠(ホシノエル)です。Twitter も Qiita もアカウントは lovee です。GitHub だけアカウントは el-hoshino です。

実はどこでブログ書くかかなり悩みました。何故ならば自分のブログ持っているんです。Crazism です。もう 2 年近く更新してないしそもそもほとんどの記事は中国語で書かれてるけど。だからこそね、今更そこに突然完全に違うジャンルの日本語の記事更新してもなんか微妙だよな。もう一度 WordPress 構築する気もぶっちゃけないし。

となるとじゃあやっぱ既存のブログサービスを使うことになるけど、まあこの界隈の人ってだいたいはてブか Medium のどっちかだよね。はてブの中の人たちには申し訳ないけど、正直 Medium の方がテーマが綺麗に見える。さすが海外サービスといったところだろうか。ぶっちゃけデザインセンスのいい日本生まれのサービス本当少ない。ほとんどない。○天市場とかまさにその代表格。デザインのセンスのかけらもない。でも逆に考えてみた。どうせ日本語ブログだから、まあ○天なんかと比べればはてブのテーマはだいぶセンスを感じる。じゃあはてブでいいや、と。

閑話休題、早速本題に入りましょう。iOSDC Japan 2017 に参加してきました。

発表してきました

Swift 4.0 対応しようとしたら大変な目に遭った話というタイトルの発表です。タイトルだけで見るとなんか Swift 4 の言語仕様とかの話に見えなくもないかもしれませんが、中身はただのエモい話です。そもそも当初 CfP 出した時もきちんと書いておきました。対応しようとしたらすんなりと終わっちゃったから色々と「余計」なものに手を突っ込んでしまった結果大変な目に遭ったというエモい話だと。6 つも CfP 出して、うち 4 つがかなり真面目な技術的な話で、残り 2 つは 1 つが 5 分の LT 枠のエモい話で、残りのもう 1 つがこれ、15 分枠のエモい話。だからぶっちゃけ「これだけは絶対当たるわけないだろw」と思ってました。そしたら一体どういう手違いか、この絶対当たるわけがないと思ったテーマが当たりました。

それでも、Track B という比較的に小さい部屋とはいえ、まさかの満員を超えて立ち見まで発生したことにはとても感謝しております。iOS 開発者はみんな優しい。この話に出てきた Pravda というフレームワークは公開するわけにはいかないのがとても辛いですが。

まあ、さすがにエモい話だけで終わってはあまりにもためにならなすぎるので、最後の最後にちょっとだけ「教訓」を入れました。少しでも役に立つことがあったら幸いでございます。

人の発表を聞きました

当然、これだけ大きなカンファレンスだから、ためになる発表はいくらでもあります。人の発表を聞いて、発表者とあとで親睦を深めるのもとても大事です。同時にやってる発表もありますので当然全部の発表を見るのは無理ですが、とりあえず自分が聞いた発表の中で印象に残った、勉強になった発表をピックアップしたいと思います。

節子、それViewControllerやない…、FatViewControllerや…。

dev.classmethod.jp

前夜祭の発表です。発表者は言わずとしれる(?)我ら AKIBA.swift のマスコットキャラ、ダンボーこと田中賢治さんです。この発表では iOS 開発で陥りがちな罠である「Fat ViewController」問題を、「MVP(Model-View-Presenter)」アーキテクチャの導入で解決を図る手法を紹介しました。UIKit、引いては Cocoa はそもそもの設計上、ViewController と View が密結合になりがちなため、多くの人は一度はハマってしまったことがある罠なんじゃないかと思います。筆者自分は MVP は採用しておりませんが、ViewController の債務整理には一つのヒントになるんじゃないかと思うトークです。それにしても、一昔はダンボーといえばクリーンアーキテクチャだったが、最近はどうやら MVP 推しですね。

AutoLayout Algorithm

speakerdeck.com

1 日目の Track A にて行われた発表です。発表者は「Auto Layout 作ったマン」こと、Abema TV の稲見泰宏さんです。自分は Auto Layout 絶対殺すマンですが、敵を殺すには敵を知る必要がありますので、大変興味深く聞かせていただきました。このトークでは、Auto Layout が実際に方程式を解く際に使われていると思われる Cassowary やシンプレックス法を解説し、そして Auto Layout が自らの可能性にかけた制限を解除した Cassowary という自作フレームワークを最後に紹介しました。もちろんほとんどの人はこれ聞いても「結局我々は雰囲気で Auto Layout してる」ことに変わりはないと思いますが、最低限のイメージを頭に入れておけば使う際には必ずいいことがあると思います。同じ AT 車を運転しても、AT 限しか乗れない人と MT も乗れる人とでは大きな差がある(筆者脳内談)のと同じです。ちなみに筆者の独断と偏見を言いますと、これだけ計算量が多い上不等式とプライオリティまで取り入れて、確かに可能性は無限に広がりそうですがその代価は人類には早すぎたのでやはり筆者はこれからも Auto Layout 絶対殺していきます。

具体例とクイズで学ぶ、Swift4種類のエラーの使い分け

speakerdeck.com

1 日目 Track B にて行われた発表です。内容は簡単に言ってしまえば発表者が以前 Qiita で書いた記事をさらにより実践向きに解説したような発表です。Domain Error、Recoverable Error、Universal Error、そして Logic Failure、この 4 つのエラータイプですが、「どのようなカテゴリーなエラー」ではなく、「どのように処理させたいか」という発想の元で生まれました。最後のクイズはおそらくみんな納得いかない部分もあるかと思いますが、それこそ「俺はこういう風に処理したいからこのタイプのエラーだと思う!」でよろしいかと思います。重要なのは「これはこんなエラー」ではなく、「これはこういう風に処理したいエラー」だと認識することです。

Swiftで数学のススメ 〜 プログラミングと数学を同時に学べ

www.slideshare.net

1 日目の Track B にて行われた発表です。数学は別に得意でもなんでもないですが、発表者の数学への熱意は十二分伝わりましたし聞いててとても面白く感じます。ちなみに筆者の個人的に一番ツボにはまった発言は「√2 のように振る舞うなら、それが √2 だ!」という言葉です。確かに普通計算機のメモリは有限だから、無理数である √2 を直接表現するのは不可能ですが、逆に √2 の定義からして、自分と自分の積がが 2 になるのであれば、それは √2 とみなしてなんの問題もないのです。そんな表現を作ってしまえば良いんです。そしてアップルプラットフォーム開発以外の Swift の活躍の場として、数学の応用も確かに期待できそうに思います。それにしても、1 日目は数学関連のトークが多くあり、さらに英語に関するトークもあったので、開催会場である早稲田大学理工学部キャンパスという要素が相まって本当にまるで 1 日だけ大学生に戻ったような不思議な気分です。

クラス名に個人の名前を含めるとこうなる

togetter.com

1 日目の LT でエモい話です。が、とても面白かったです。何より Eltaso とか Usami とか嫁の名前駆動開発を実践しいつも変な名前の Framework を作ってしまう筆者にとってはとても他人事には聞こえなくて胃が痛いです。いつか Eltaso の Framework の不具合のせいで「Eltaso 問題」と dis られたりしないかとピクピクしてます。そしてそんなことを呟いたら「Danbo 問題起こそう」との優しい声をいただきました。起こしちゃいましょう。

触り心地の良いInteractive Transitionをマスターしよう

speakerdeck.com

2 日目の Track A にて行われた発表です。Pairs というコミュ障でキモオタな筆者としてはおそらく一生使う勇気が湧かないアプリの中の人の発表ですが、気持ちよく動くアニメーションに対する執念はきちんと伝わりました。ちなみに発表者曰く日本発のアプリで気持ちよく動くアニメーションにこだわるアプリ見たことないとのことですが、違います。筆者はきちんと気持ちよく動くアニメーションにこだわっております。まあ筆者は日本人ではないですが。余談すると筆者は ServalCat という画像プレビュー用の Framework も制作しており、発表者がデモにしたアニメーションの動きとは共通する部分も多いです。ただまあ筆者の場合は TransitionDelegate を真面目にやる余裕が当時無かった(納期問題)ため簡単に View の追加のアニメーションだけで対応してましたが。というわけで今度時間あった時に ServalCat をきちんと Transition で対応させたい所存でございます。

AutoLayout と友達になる方法

speakerdeck.com

2 日目の Track A にて行われた発表です。Auto Layout 絶対殺すマンとしては Auto Layout と友達になるつもりなんて端からないのですが、Twitter の反応からしてみるとやはりというか当然というか会場内でも Auto Layout ではまった人が非常に多かったのです。そんな人たちのためにはとても役にたつトークだったとは思います。実際それらのポイントは筆者でもはまったところですので、これから Auto Layout を触らなくてはならない人たちはこのトークを聞いて少なくとも大まかな Auto Layout(正確には Storyboard)の手順がわかったんじゃないかと思います。ちなみに発表者に一言言っておきたいのです:公式表記は AutoLayout ではなく、Auto Layout です。友達になるのでしたら名前を間違えないようにしましょう。

アイコンや画像の配置をCIで自動化する

speakerdeck.com

2 日目の Track D にて行われた発表です。Sketch からのアイコン出力を CI で回せば自動的に iOSAndroid のプロジェクトにプルリクを出し、開発者は後でレビューしてマージするだけで仕事が終わるのでヒューマンエラーを最小限に抑えたとても素晴らしいプロセスです。あとは次の会社は Sketch を導入していることを祈るだけです。

地方在住iOSエンジニアの生存戦略

speakerdeck.com

2 日目の LT です。発表者の方は徳島在住で、東京に住んでる開発者たちと違って地方在住の場合はどれだけ不便があるかの話。しかしそんな不便さを全て踏み抜いてこそ一人前の開発者で、そんな気概もなければ地方にいても東京にいても結局何もダメ人間で終わるとのことです。というわけで東京在住の開発者たち、東京という便利すぎる地理条件に甘えすぎず、ちゃんと前向きな気持ちで今日も 1 日がんばるぞい。

人の発表を聞きたかった

同時に複数の発表があるってことは、当然全ての聞きたい発表が聞けるわけではありません。自分の発表とダブってしまったり、別の聞きたい発表とダブってしまったり、そんな様々な要因で気になってたけど結局聞きに行けなかった発表もピックアップしたいと思います。

インタラクティブ画面遷移の実践的解説

speakerdeck.com

1 日目の Track A にて行われた発表です。画面遷移含む UI に関しては筆者はいつも非常に気をつける部分ですので、とても気になってはいたのですが、残念ながらエラーの話とダブってしまい聞けませんでした。

Building High Performance and Testable UI component

speakerdeck.com

1 日目の Track A にて行われた発表です。こちらも同じく UI の話でしかもあの iOS 開発界隈で有名な岸川大先生の話なのでとても気になった発表だったのですが、結局 Track B にずっといたため聞けませんでした。

Xcode Source Editor Extensionの世界

speakerdeck.com

1 日目の Track C にて行われた発表です。発表者は「ほぼ FiNC」「軍曹」で知られる takasek 先生です。Xcode にいろんな便利なプラグインをずっと作りたいと思っていたのでとても聞きたかったのですが、残念ながら自分の発表とダブってしまいまして大変辛かったです。ちなみにちょうど自分の発表の隣の部屋で行われて、そしてどうやら自分が声がちょっとデカかったためそちらの部屋の壁際の人に「うるさい」との苦情をいただきました。大変申し訳ないです。

Server Side Swift実用性評価 2017

speakerdeck.com

2 日目の Track B にて行われた発表です。Swift 信者として、当然何でもかんでも Swift で書きたいですし、何よりサーバサイドができればフルスタックエンジニアになるワンチャンもあるので、前からずっと気になっていたのです。しかし残念ながら当日は Track D で iosdc.fm の公開収録も気になっていたためこちらを断念しました。

詳解Objective-C

speakerdeck.com

2 日目の Track B にて行われた発表です。発表者はスター乞食こと bannzai さんです。今更 Obj-C なんて書きたくはないですが、何せ Obj-C 時代からゲームの移植に携わってきたしそれなりに Obj-C に対する思い入れがあります。というか正直好きか嫌いかと言われたら好きです。今更書きたくはないですが。しかし当日は残念ながら Track D での「iOS 11 Programming プレビュー」を見に行ったためこちらを聞きに行けませんでした。

Human Interface Guidelinesから滲み出る限界感を考える

speakerdeck.com

2 日目の Track C にて行われた発表です。いつも率先して Human Interface Guideline を破っているのはまさにアップル自分自身ですが、まあとにかくタイトルでとても気になりました。残念ながら当日はアイコンを CI で回す話を聞きに行ったためこちらは聞けませんでしたが。

あとがき

iOSDC と関係ない話ですが、ここまで読んでいただいた読者の皆さん、特にリアルで筆者と会ったことのないみなさん、もしかして頭の中で「このブロガーなんか怖い」みたいな感情、抱いてないでしょうか。大丈夫です。筆者はとても人畜無害な人です。基本人前ではニコニコ笑顔です。文章書くときいつも格好つけてるだけです。

ちなみに来年の iOSDC では是非とももう、(Auto Layout)やめても、いいんだよ?というタイトルで発表したく存じます。30 分枠で CfP 出しますから、コアスタッフの皆さん、宜しく御願い致します。もちろんベストスピーカー賞も狙う予定です。