BPStudy #87
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
363
On Slideshare
293
From Embeds
70
Number of Embeds
2

Actions

Shares
Downloads
1
Comments
0
Likes
5

Embeds 70

https://twitter.com 39
http://bpstudy.connpass.com 26

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. iPhone 6がリリースされて 2ヶ月が過ぎました ~iOSの分断化時代を乗り切ろう~ 小野将司 (@akisutesama)
  • 2. お前、誰よ • akisuteというのよ • iOSのアプリ書いて飯食ってるのよ • 闇仕様の発見とワークアラウンドが得意よ
  • 3. アジェンダ 1. 2ヶ月前のおさらいと 現状の把握 2. 今の時代、使った方がいい機能 逆にやめたほうがいい機能 3. WatchKitのお話
  • 4. アジェンダ 1. 2ヶ月前のおさらいと 現状の把握 2. 今の時代、使った方がいい機能 逆にやめたほうがいい機能 3. WatchKit
  • 5. アジェンダ 1. ページングUIのススメ 2. AutoLayoutドリル 3. Swiftの光の話 4. Swiftの闇の話
  • 6. 1. ページングUIのススメ
  • 7. なんで?
  • 8. • iPhone 6, 6plus, Apple Watchの登場 ➡ width=320の時代が完全に終了 ➡ 専用のUIやアプリを作るプラットフォームが iPhone, iPad以外にも増えた
  • 9. • iPhone 6, 6plus, Apple Watchの登場 ➡ width=320の時代が完全に終了 ➡ 専用のUIやアプリを作るプラットフォームが iPhone, iPad以外にも増えた
  • 10. • 大画面デバイス(ファブレット)の人気 ➡ すでに片手での操作は不可能に近い ➡ 四隅が遠すぎる ➡ 画面が広くて表現できるモノが多すぎる
  • 11. そこでスワイプを使いましょう
  • 12. • スワイプ中心のUIって? ➡ 左端からスワイプして前の画面に戻るとか ➡ タブじゃなくて、ページを使うとか ➡ 極端な例はFacebook Paper
  • 13. ページUIの例
  • 14. ページUIの例
  • 15. このページの生成で固まる
  • 16. • 対策? ➡ ページの生成とレンダリングを分離する ➡ FacebookのAsyncDisplayKitみたいな ➡ ページをプリレンダーして置いておく
  • 17. • その他アドバイス ➡ UICollectionViewを使いましょう ➡ UICollectionViewLayoutを自作しましょう ➡ 落とし穴も多いですが基本便利です
  • 18. 2. AutoLayoutドリル
  • 19. AutoLayoutは大事 そんなの常識
  • 20. でも本当に使えてますか?
  • 21. TEST
  • 22. 3. Swiftの光の話
  • 23. • Swiftを選択する利点 ➡ コード量が短く、簡潔にできる ➡ type-safe, generics, 名前空間, custom operator, access control… ➡ 書く人間の士気が上がる!
  • 24. 4. Swiftの闇の話
  • 25. 光の話、短くね?
  • 26. 純粋に生産性だけ見ると 現状 Objective-C > Swift
  • 27. • Swiftを選択する利点 ➡ コード量が短く、簡潔にできる ➡ type-safe, generics, 名前空間, custom operator, access control… ➡ 書く人間の士気が上がる!
  • 28. • Swiftを選択する利点 ➡ コード量が短く、簡潔にできる ➡ type-safe, generics, 名前空間, custom operator, access control… ➡ 書く人間の士気が上がる!
  • 29. 理想と現実
  • 30. HKObjectQueryNoLimitを使うと何故か怒られる
  • 31. 簡素に書けないclosure
  • 32. 推論してくれない型
  • 33. • Swiftを選択する利点 ➡ コード量が短く、簡潔にできる ➡ type-safe, generics, 名前空間, custom operator, access control… ➡ 書く人間の士気が上がる!
  • 34. どうして名前空間が使えない?
  • 35. frameworkが使えない ↓ moduleが使えない ↓ 名前空間が使えない ついでにaccess controlも使えない
  • 36. frameworkの理想
  • 37. workspaceに依存ライブラリのコードを追加して
  • 38. 依存関係を設定するだけ!あとはビルドしたら終わり!
  • 39. frameworkの現実
  • 40. workspaceに依存ライブラリのコードを追加して
  • 41. 依存関係を設定してビルド!通った!
  • 42. 他人のマシンに持って行ってビルドするとエラー
  • 43. 実機でRunしようとするとエラー
  • 44. 何故?
  • 45. • frameworkは動的リンクなので、アプリ本体に frameworkのファイルを含める作業が必要 • あとアプリ本体同様にコードサインも必要 • qiitaのトラブル解決記事
  • 46. ビルドする ↓ frameworkがDerivedDataに出力される ↓ DerivedDataのパスは個々人で全員違う ↓ したがってframeworkのビルドを自動化できない
  • 47. ビルドスクリプトで何とかしよう ↓ frameworkをビルドするprojectの ビルド設定を変更しなければならない ↓ ライブラリ側のproject設定を 変更しなければならない ↓ ライブラリ側が変わる度に手動対応?
  • 48. っていうかfat binaryはどうするの? (Simulatorと実機の両対応) ↓ 知らん ↓ \(^o^)/
  • 49. まだまだあるよSwiftの闇
  • 50. • 開発途上の言語なので仕様がコロコロ変わる • しかも破壊的に仕様が変わる • コード変更や仕様理解が追いつかなくなる
  • 51. Xcode 6.1 beta 2
  • 52. Xcode 6.2 beta 1
  • 53. • コードが増えるとコンパイルが遅い • おまけにデバッガが遅い • 入力補完が効かない、特にclosureとgenerics
  • 54. がんばろう
  • 55. 一応具体的なアドバイス
  • 56. • 初級編 ➡ すべてNSObjectを継承して使う ➡ NSCopyingが使える=dictのkeyにできる ➡ descriptionが使える
  • 57. • 初級編2 ➡ Cocoaを優先して使う ➡ ArrayよりNSArrayとして使う ➡ sortedよりsortedArrayUsingComparator:
  • 58. • 初級編3 ➡ generics, closureを避ける ➡ コンパイルが通らないとかエラーがわからない ➡ 入力補完が効かない
  • 59. • 初級編のメリット ➡ Swiftの生産性の高い上澄みだけを得られる ➡ コンパイラがちゃんと動くところだけを使う
  • 60. No More .h
  • 61. No More #import
  • 62. No More @interface
  • 63. YES Swift
  • 64. • 中級編 ➡ あえて今挙げた初級編の内容の逆をやる ➡ そして苦しみ絶望する ➡ 闇の中に光を見る
  • 65. Swiftの未来は明るい!!
  • 66. ありがとうございました
  • 67. 時間が余った時用
  • 68. おすすめしないもの • Swift (の一部の機能) • UIView - Size Classes • 従来型のタッチUI、特に画面の四隅
  • 69. • Size Classes ➡ デバイスの画面の種類を分類する新しい方式 ➡ 具体的なデバイス名ではなく、縦/横の 大きさはどれぐらいかでデバイスを表す ➡ qiitaの記事
  • 70. デメリット
  • 71. • どのSize Classがどのデバイスにどの向きで適用 されるか非常にわかりにくい • 一部iPadとiPhoneを区別できない • Size Class毎に別々のIBOutlet接続ができない ➡ これのせいで事実上使い道がない
  • 72. メリット
  • 73. • ない
  • 74. • iPhone 6 plusで横画面対応をした時にiPadみた いなUIになったほうがいいな~~~と思った時