iOSDC 2018 day0 参加メモ

iOSDC 2018の前夜祭参加メモです。

標準アプリから学ぶ、HIGが教えてくれないiOSデザインのこと

ドアの話

  • ドアはいろいろあるけど違いを意識しない
  • なぜか
  • 何度も利用したことある、同じふるまい
  • 自動ドアが大きな変化だった
  • 自動ドアはなぜ生まれたか
  • 技術の進化、ユーザの進化、高度な要件
  • ボタンが有る自動ドア、ストレスを感じる
  • 目的は達成するがストレスを感じる
  • 正しくデザインされてないものは、目的は達成されど、ストレスを感じる。

教訓

  • 広く利用されているものを利用する
  • 同じ見た目のものは同じふるまい
  • 新しい標準は背景や使い方を理解する

UITableViewについて

  • なぜ生まれたか
  • 技術の進化:スマホ、小さいディスプレイ
  • ユーザの進化;インターネットへの適用
  • 高度な要件:小さなディスプレイでPCと同じ情報量
  • UITableViewは小さなディスプレイを背景に生まれた
  • 近年、ディスプレイが大きくなってきている
  • それにともない全面を覆わないモーダルビュー(ここではSemiModalViewとする)が登場した
  • 初めはMusicアプリでその後、Mapアプリなど多くのアプリで使われ初めている
  • SemiModelViewを確認すると自己完結不要、タスクを完了されることを要求することもないことがわかる
  • このように新しい標準が登場した時はその背景を理解することが大事

キラリと光るテクニック、アプリをデモするときの心構え

発表資料

  • ハンズオンを円滑に行うテクニック
  • ARの普及とともにデモを機会が増えてくるかも
  • ARアプリのハンズオンでの心構えについて

場所

  • ネットワーク問題:オフラインでも動くようにしておくと安全。自前のインフラ以外は信用しない。
  • Wi-Fi/Bluttooth:人が多いとは接続できないケースが有る- 優先LAN:コントロールできるように
  • 電力:足りているか。請求はどれくらいか。
  • 光源:西日本と東日本で違うことがある。シャッタースピード露出を調整して回避

バイス

  • バッテリー;ARは消費が激しい。充電するデバイスとのローテーションを考慮。
  • 落下;ARでは大きく動かすので、落とすことがある。ストラップや保険を検討
  • 多くの人が触るとデバイスベタベタ

iOS

  • ストアからインストールしていないアプリの場合有効期限に注意
  • provisioning profileやtestflight
  • 他のアプリが起動しないようにロックしておくと安心

再利用可能なUI Componentsを利用したアプリ開発

発表資料

コンポーネント化の背景

  • 課題
  • テキストサイズが指定と異なる
  • Storyboadで指定している色の変更漏れ
  • 複数の画面で同じようなUI実装
  • デザインチームから出たアプローチ
  • デザインシステムを用意する
  • スタイルガイドを定義(カラースキーマ、テキストスタイル)
  • UIコンポーネントを定義(ボタンなど)
  • Sketchのライブラリでできる

コンポーネント化の戦略

  • atomic designに従う
  • 5つの階層:原子、分子、有機体、テンプレート、ページ
  • atomic designに沿って現状のデザインシステムを整理
  • 有機体がなかった
  • それは良いことなのか検討し、なくても良いと判断
  • 決めたこと
  • 原子と分子という2層で考える
  • 再利用されるものだけコンポーネント化する
  • inbision/zeplinでのデザイン共有を廃止。スタイル情報、シンボル情報が欠落するため

実装

  • enum, 関数, カスタムViewなど必要に応じて定義
  • Storyboardでのスタイル適用は行わない(IBInspectableにenumが使えないなどの理由により)

Playground駆動開発のすすめ

発表資料
デモプロジェクト

  • Playground駆動開発を行うための環境構築、進め方の発表
  • とても丁寧でわかりやすかった
  • デモプロジェクトに出来上がっているのでそちらを参考にすると良さそう
  • 実環境ではviewレイアをembedにするのが難しい

アルゴリズムを通じてよりよいアプリを

発表資料

  • 今年のWWDCのメージはアルゴリズム
  • ランダウの記号
  • iOS12でAutoLayoutが指数時間から線形関数に改善される
  • 線形関数であっても傾きがある
  • updateConstraintsでレイアウト成約の最初期化が走ることがありコストになる
  • Swift型とFoundation型の間にブリッジコストがある

ループ

  • Raw Loopを使うとバグが生まれやすい
  • 標準ライブラリで用意されているメソッドを使うこと

まとめ

アルゴリズムを勉強しましょう 標準ライブラリを読みましょう RawLoopを避けましょう