Edited at

iOSDC Japan 2017で「Auto Layoutのアルゴリズム」について発表しました

こんにちは、オートレイアウト作ったマン@inamiy です。

オートレイアウト○○マンが全員集結したMARVEL映画に出るのが将来の夢です。

さて先日、2017年9月15-17日の2.5日間にかけて、iOSDC Japan 2017というiOSの一大イベントが、早稲田大学理工学部・西早稲田キャンパスにて開催されました。

昨年に引き続き、第2回目の開催で、総勢800名が参加されたとのことです。

スピーカーの人数も倍増して、大成功した昨年の2016年をさらに上回る規模となりました。

iosdc-2017.png

そんな中、私は今年のテーマとして、「Auto Layoutのアルゴリズム」という若干マニアックな話を選びました。

今年は4トラック同時進行ということもあり、実際にセッションに集まるのは100〜200人くらいだろうと想像していましたが、タイムスケジュールが公開されると、まさかのキーノート登壇!(トップバッター+同時間帯の登壇者なし)

本来であれば、スピーカー冥利に尽きる最高のシチュエーションなのですが、いかんせん内容が小難しいだけに、開幕早々いきなりお通夜にならないか、心の中では大いに心配していました。

・・・で、案の定、発表後には若干RIPなムードが漂ってしまい、去年の自分の発表に届かなかったという無念さがありますが、今年もベストトーク賞7位(?)に入賞させていただいたり、GitHub Trending 1位を取れたり、一部の方々にはしっかり刺さってくれたので、なんとか無事に発表できて良かったです。

今年もイベントを運営して下さったスタッフの皆様と、イベントを盛り上げた参加者の皆様には厚く御礼申し上げます。

なお、昨年のビットコインの賞金について、コメントは差し控えさせていただきます。


発表で伝えたかったこと

当日の発表では、Auto Layoutを「線形計画問題」として捉え、元の論文に沿って、「シンプレックス法 → Cassowaryアルゴリズム」の順で、アルゴリズムを解説しました。

当日のスライドに日本語要約がまとまっていますので、論文と照らし合わせながら読むと分かりやすいと思います。

さらに深く学びたい方は、当日解説できなかったオープンソース版(inamiy/Cassowary)を直接ご参照ください。

ソース内にコメントを多く記述しているので、コードを読むだけでも理解が深まると思います。

また、従来のOOPベースのCassowary実装をさらに発展させて、Swiftらしい、型安全な設計 を心がけましたので、そちらにも注目していただけると嬉しいです。

ちなみに、プラットフォーム別の実装は、overconstrained というサイトにまとまっています。

後日談として、AndroidのConstraintLayoutも似たような仕組みで動いているようで、Webの世界でも制約ベースCSSの可能性について触れられていることから、CassowaryはUIに携わるエンジニアなら知っておいて損のない知識 だと思います。

一方で、今回の私の発表が至らぬばかりに、数式に対して抵抗を感じてしまった方も少なくないと思います。

実際のところは、


  • 難しい数学はほとんど使われていない(高校で学ぶ行列計算が分かればOK)

  • Auto Layoutは数学的に美しい (人類が使うにはまだ早いけど)

  • 裏側の仕組みが分かると、Auto Layout(を考えた人・作った人)に感謝できる

  • 要するに、Auto Layoutは実はすごい!

ということで、ぜひまたスライドを振り返ってもらえれば幸いです。

あと最後に、毎日使うAuto Layoutに日々感謝の気持ちを忘れず、1つ1つ真心を込めて制約を付けていきたいものですね!


参考文献