Categories: iOS

Developers.IO Meetup 09に参加してきたレポート

秋葉原のクラスメソッド株式会社にてクラスメソッドとゆめみの合同勉強会が開催されたのでいってきたときのメモ残し。

TestFlightはTestFlightではない

  • 諏訪 悠紀
  • TestFlightの概要や使い方などはこちらを参照
  • iOS8以上でないとTestflightアプリ自体が入れられない
  • 配信できる状態までに最大3〜4時間のタイムラグが有る
    • pushをトリガにビルドして配信するといったことはできない
  • 内部テスターは開発者or開発者権限が必要
    • 開発者は配信中のアプリの編集ができてしまうため危険
  • BundleVersionを上げる必要がある
    • Submit済みのBundlerVersionと同じだとエラーが出る
  • 運用例
    • 開発中はjenkinsから旧testflightで配信
    • リリース直前に新TestFlightで配信して問題なければリリース
  • 新しいプレリリース機能だと思い込む
    • 運用フローに取り入れる形で使おう

煮詰まる!MVCアーキテクチャ論考

  • @amoO_O
  • MVCとは…エアコンを例に取ると
    • 温度などの状態をカプセル化したものがModel
    • エアコンの電源ON/OFFの表示などがView
    • 温度などを変えるリモコンがController
  • MVCにおいて忘れられがちだが、UserがいないとViewとControllerを紐付けられない
  • 不特定多数のユーザがいるwebframeworkで実はMVCはうまくいかない
  • サーバサイド向けに提供されているMVCフレームワークは実はFrontControllerPattern
    • 一つのコントローラがリクエストを受け取って適宜なコントローラにリクエストなどをわりふる方法
    • MVCとではControllerの意味するところが全く違う
  • MVCアーキテクチャの使いどころはクライアントサイドやネイティブアプリなどに有効

WKWebView と UIWebView

  • 平井 祐樹
  • WKWebViewはios8以上で使えるようになったUIWebViewの強化版
  • プログレスの取得
    • estimatedProgressプロパティが追加されて進捗がとれるようになったがUIは自分で実装する
  • タイトル・URLの取得
    • webViewDidFinishLoadで取得していたものが、title/URLというプロパティだけで取れるようになった
  • Safariのような閲覧履歴
    • backForwardListプロパティで勝手に閲覧履歴が管理されるようになったが、UIは自分で実装する
  • エッジスワイプでの戻る/進む操作
    • UISwipeGestureRecognizerを使っていたものが、allowsBackForwardNavigationGesturesで設定できるようになった
  • JavaScriptとの連携強化
    • UserScriptsというものが追加され、読み込み開始、終了時に実行するJavaScriptを注入することができるようになった
    • JavaScript -> Native
      • 今まではdelegateをセットしてやっていたが、MessageHandlersというものが追加され、JavaScriptからNativeコードを送信できるようになった
  • デモアプリ
  • プロパティのKVOを利用できるようになったがこれが便利
    • プログレスのプロパティにKVOを登録してプログレスバーを表示したり出来る
    • ロード中かどうかのステータスを見てインジケータを表示したりできる
    • 表示中のタイトルを監視してナビゲーションバーに表示したりできる
    • 戻る(canGoBack)、進む(canGoForward)の変更を監視して有効無効を切り替えたりできる

知らないと損するアプリ開発におけるStateMachineの活用法

  • @mokemokechicken
  • StateMachineを使って以下のようなことを解決してみよう
    • 通信やダイアログアニメーションが多いViewControllerがカオス
    • アプリの初期化・起動処理がカオス
  • 状態、イベント、アクション、遷移
  • 状態図を実装したものがStateMachine
  • State Machine Compilerを使うといいかも
  • 状態図をみればコードをみなくてやってる内容がわかる
  • SMCを使うときは「状態図を作る」、「DSLを書いてコンパイル」、「アクションを実装する」の手順でやっていく
  • メリット
    • FSMや状態図はほぼ仕様書として対応できる
    • 仕様書を理解しているかなどがわかるので抜け漏れも少なく、レビューが捗る
    • 仕様追加時に他にソースを加えずに追加ができる
    • 単体テストなどがかきやすい
    • 状態図を見るだけでなにをやっているのかがわかる
  • デメリット
    • 覚えないといけない
    • StateMachineを実装するのが大変
    • 導入前後のリファクタリングが大変
  • SMCの実行環境をセットアップするのはめんどくさいのでDockerを配布してます

FAQ

  • StateMachineを使うときは?
    • ステートが多くて複雑になりそうなときに導入する
  • StateMachineは重くない?
    • 重くはない
    • StateMachineのソースはとくにみたりはしない。
  • TestFlightをbeta版のものをそのままリリースできる?
    • 申請用にビルドを追加すればそれが申請用として使える
  • TestFlightのレビューは必要?
    • 内部テスターはレビュー要らないが、外部テスターはレビューが必須です
    • 外部テスターでお客さんに確認してもらうなどで使えると思われる
  • DSLで書いたソースと実際に書いたソースの関連付けはどうしてる?
  • WKWebViewのデメリットは?
    • ios7で動かない程度
    • Performanceは数値的には実感できなかったが、今後高速化するのではないか
  • アプリ内のリソースアクセスで使えるか?
    • 確認してないです
  • TestFlightでiTunesConnectで既存のAppleIDを追加できない?
    • 既存のAppleIDは追加できた
    • そのAppleIDがDeveloper登録してないのではないか
    • 一人に対して10人、1アカウントで25人までの制限などにひっかかっているのでは

所感

testflightは外部テスターに公開した時のレビューがやはり本番のレビューと同じく1週間とかかかるなら使いづらいなぁとか思ったりしてます。

WKWebViewが色々使えそうで今後に期待なところで興味深かった。ただ、ひとつおもったのが、javascriptからネイティブコードが実行できるというところでセキュリティホールとかできてたりしないかなぁとか感じたりしました。

mogmet

View Comments

  • I may need your help. I've been doing research on gate io recently, and I've tried a lot of different things. Later, I read your article, and I think your way of writing has given me some innovative ideas, thank you very much.

  • I don't think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  • เล่นได้ทุกที่ทุกเวลา: รองรับการเล่นผ่านมือถือ เล่นง่าย สะดวก ทุกที่ทุกเวลา

  • เล่นได้ทุกที่ทุกเวลา: รองรับการเล่นผ่านมือถือ เล่นง่าย สะดวก ทุกที่ทุกเวลา

  • มีรีวิวจากผู้ใช้จริง: รีวิวจากผู้ใช้จริง น่าเชื่อถือ

  • เล่นได้อย่างบันเทิง: เล่นเพื่อความบันเทิง คลายเครียด

  • Ufabet เว็บพนันออนไลน์ที่มีระบบการเดิมพันที่มีการบริการลูกค้าที่ยอดเยี่ยม: ทีมงานมืออาชีพ คอยให้บริการตลอด 24 ชั่วโมง ตอบคำถาม แก้ไขปัญหา รวดเร็ว ทันใจ

  • ระบบแทงทบ: บาคาร่า รองรับระบบแทงทบ เพิ่มโอกาสในการชนะรางวัล

  • เล่นได้ทุกที่ทุกเวลา: รองรับการเล่นผ่านมือถือ เล่นง่าย สะดวก ทุกที่ทุกเวลา

  • มั่นคง ปลอดภัย: เว็บไซต์มาตรฐาน ระบบความปลอดภัยสูง