LoginSignup
61
35

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-18

こんにちは、オートレイアウト作ったマン@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つ真心を込めて制約を付けていきたいものですね!

参考文献

61
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
35