Developers.IO Meetup 09に参加してきたレポート
秋葉原のクラスメソッド株式会社にてクラスメソッドとゆめみの合同勉強会が開催されたのでいってきたときのメモ残し。
TestFlightはTestFlightではない
- 諏訪 悠紀様
- TestFlightの概要や使い方などはこちらを参照
- iOS8以上でないとTestflightアプリ自体が入れられない
- 配信できる状態までに最大3〜4時間のタイムラグが有る
- pushをトリガにビルドして配信するといったことはできない
- 内部テスターは開発者or開発者権限が必要
- 開発者は配信中のアプリの編集ができてしまうため危険
- BundleVersionを上げる必要がある
- Submit済みのBundlerVersionと同じだとエラーが出る
- 運用例
- 開発中はjenkinsから旧testflightで配信
- リリース直前に新TestFlightで配信して問題なければリリース
- 新しいプレリリース機能だと思い込む
- 運用フローに取り入れる形で使おう
煮詰まる!MVCアーキテクチャ論考
Mvc from ShutaroAnno
- @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からネイティブコードが実行できるというところでセキュリティホールとかできてたりしないかなぁとか感じたりしました。