> èf¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/cssnitelp27-s8-tokuda.pdf ·...

75
iOS 版 CodeGrid 実装の裏側 徳田和規(株式会社ピクセルグリッド)

Upload: others

Post on 04-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iOS 版 CodeGrid 実装の裏側徳田和規(株式会社ピクセルグリッド)

Page 2: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

徳田和規

フロントエンドエンジニア

株式会社ピクセルグリッド

CodeGrid などの実装

Page 3: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

CodeGrid について

Page 4: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を
Page 5: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

フロントエンド技術のメールマガジン

Page 6: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

豪華執筆陣

Page 7: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iOS 版 CodeGrid

Page 8: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を
Page 9: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

今日の話は…

Page 10: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

今日の話は…

Page 11: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

×

Page 12: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

UI の設計について

Page 13: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

でもせっかくなので

コード関連で意識したことも簡単にまとめました

Page 14: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

闇鍋コードやめたい

Page 15: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

• PC に引き続き Backbone.js• ファイルは記事表示、シリーズ表示など、区切れる最小単位で分ける

• コメントは出来るだけ詳しく書く

Page 16: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

なぜ闇鍋コードになるのか

Page 17: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

技術力が足りない

怒濤の仕様追加

Page 18: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

PC 版のコードは使えない

Page 19: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

いつリファクタリングするの

Page 20: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

いい機会と思った

Page 21: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

詳しくはソースでChrome の UA をiOS でオーバーライドすればiOS 版のソースコードも見られます

Page 22: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

demo

Page 23: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iOS 版 の役割

Page 24: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

合間時間を活用

Page 25: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

合間時間を活用

通勤時間

寝る前

トイレで

お風呂♡

Page 26: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

水没しても保証外です

Page 27: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

まずは iOS から

Page 28: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Android の人ごめんなさい

Page 29: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

機能の洗い出しと選定

Page 30: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

最低限の機能

Page 31: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

最低限の機能記事の閲覧ができる

Page 32: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

結局ほぼ実装

Page 33: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

結局ほぼ実装ナビゲーションエントリー一覧未読一覧シリーズ一覧アーカイブ一覧タグ一覧

Page 34: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

今後の展開

Page 35: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

今後の展開

PC 版には検索やお気に入り機能

iOS(モバイル)版は読みやすさ

Page 36: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Web アプリとしての位置づけ

Page 37: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

フルスクリーンモード

Page 38: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

フルスクリーン表示

Page 39: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

フルスクリーンモード

Page 40: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

小さな違い

Page 41: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

小さな違いリンクを開くと別途 Safari が起動

別のアプリを経由すると必ずトップページに

Page 42: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

解決策は?

Page 43: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iframe ?

履歴を共有してしまう

意図していない動作

Page 44: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

フルスクリーン(ネイティブっぽい)Web アプリの限界

Page 45: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

ナビゲーション

Page 46: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

位置や階層の移動

Page 47: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

ネイティブアプリ

Page 48: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Safari のナビゲーション

Page 49: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

CodeGrid のナビゲーション

Page 50: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

固定UI とスクロール

Page 51: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

overflow: scroll

Page 52: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

-webkit-overflow-scrolling

Page 53: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Android では解決が難しい

Page 54: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iScroll とかもあるけど…

Page 55: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

その他の細かな違い

Page 56: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

シリーズやタグページ

Page 57: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

PC iOS

Page 58: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

PC 版は現状破綻気味

Page 59: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

TOC メニュー

Page 60: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

TOC にシリーズ内の記事を表示

Page 61: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iPad ランドスケープ表示時

Page 62: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

サンプルやスライドのリンク

Page 63: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

リンクで埋め込み

Page 64: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

ソーシャルボタン

Page 65: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

ソーシャルボタンはパフォーマンスを著しく悪化させる

Page 66: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

ただのリンク

Page 67: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

アニメーション

Page 68: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Contact.app の場合

Page 69: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

CodeGrid の場合

Page 70: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

iOS 版はアニメーションオフ

Page 71: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

理由

Page 72: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

理想と現実

Page 73: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

まとめ

Page 74: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

• 理想と現実のギャップはまだある• その機能、本当に必要ですか• 用途に合わせた最適な実装を

Page 75: > èF¢ÒÜqþЫ·ç¬æ¿Å£cssnite.jp/lp/lp27/CSSNiteLP27-s8-tokuda.pdf · •理想と現実のギャップはまだある • その機能、本当に必要ですか • 用途に合わせた最適な実装を

Thank you