Debugging Auto Layout feedback loops How to use UIViewLayoutFeedbackLoopDebuggingThreshold today This article is dedicated to Marian Goldeen and Russell Ladd, who work tirelessly to help all of us build great apps. A while ago, Tyler Fox mentioned Auto Layout’s feedback loop debugger on Twitter, which was a feature announced back in WWDC 2016 but largely seems to have gone unnoticed since. Apple c
iPhoneターゲットでArchive Built Productsでexport *.instrdst をダブルクリックしてインストール 以下、共通で使う *.tracetemplate を作成する方法 (すでにある場合は不要) Instrumentsを開き、最初はBlankを選択 右上のプルダウンにインストールしたpackageがある 必要なものと合わせてtraceviewに追加する。 File => Save as Template 保存したTemplateをダブルクリックでいつでも上記で選択した設定でProfileが開始できる repositoryにコミットするのがオススメ *.instrpkg *.tracetemplate チームで共有できる。各メンバーごとに上記packageのインストールは必要そう。 *.instrdst (archive&exportした成果物) をコミッ
2018年12月12日、株式会社サイバーエージェントにて「CA.swift」の 第7回が開催されました。AbemaTVやAmeba、AWAなどを担当しているiOSエンジニアが登壇し、それぞれのチームの開発ノウハウを惜しみなく語るイベント。今回は、『iOSアプリ設計パターン入門』の著者2名を含む5人のエンジニアが、iOS開発における知見を披露します。プレゼンテーション「Profiling using signpost」に登壇したのは、株式会社AbemaTVの鈴木俊裕氏。講演資料はこちら Siginpostを用いたプロファイリング 鈴木俊裕氏:「Profiling using signpost」というタイトルで発表します。 AbemaTVでiOSチームと、Streaming Clientっていう動画ドメインに特化したチームに所属しています。チームでは「トッシー」とか呼ばれてるんで、適当に呼んで
概要 TwitterのタイムラインでLLDBの話を見かけた時にこんなことを書きました。 LLDBといえば今年のWWDCでAppleのXcodeエンジニアリングマネージャによるこのLLDBデバッグ芸がめちゃくちゃ盛り上がってました。Xcode+LLDBを駆使したデバッグの凄さをわかりやすく伝えていて面白いので、printデバッグで十分でしょ?っていう人に見せるとよいかもw #swtwshttps://t.co/LtbIWmr52e — kazuhiro4949 (@kazuhiro494949) 2018年7月14日 こちらのセッションになるのですが、特に「話がうまいなー」と感じたのは前半部分です。 Advanced Debugging with Xcode and LLDB ポイントは「Xcode + LLDBはちゃんと使えば再ビルドなしにアプリを書き換えながらデバッグできるよ」っていう所
Method SwizzlingによるURLSessionConfiguration.defaultの入れ替え 今回はURLSessionConfiguration.defaultをモック用に置き換えるという方法で実装してみます。 Alamofire.requestやSessionManager.defaultも内部で、URLSessionConfiguration.defaultを使用しています。 URLSessionConfigurationにextensionで入れ替え準備用のメソッドと入れ替えるプロパティを追加します。 public extension URLSessionConfiguration { // .defaultをモック用と入れ替えるメソッド public class func setupMockDefaultSessionConfiguration() { let
ビルドの時間の算出にはBuildTimeAnalyzerというmacのアプリを使います。 導入後このアプリを立ち上げたままいつも通りアプリをビルドだけでビルド時間が出力される便利なツールでリファクラリングに一役買ってくれます。 ツールの取得 まずは下記のGitHubからcloneもしくはzipファイルをダウンロードします。 GitHub 設定 取得してきたファイルを開くとpopupで手順を示してくれます。 が、ちょっと英語難しかったのでこちらで紹介します。 ビルド時間を算出したいアプリを立ち上げ、 TARGETのBuild SettingsからOther Swift Flagsという項目を探しだし、 Debugの欄に下記テキストを追加します。 設定後一度クリーンしてからアプリをビルドしてください。 BuildTimeAnalyzerが立ち上がり、 メソッドごと、ファイルごとのビルド時間が出
はじめに 2016/12/01 に行われた Rollout.io MeetUp に参加してきたので、そこで聞いた話をベースに Rollout をご紹介いたします。 Rollout とは Rollout は iOS 向けのアプリケーションに審査なしでパッチを当てるためのサービスです。 いろんな方が経験していると思うのですが、アプリをリリースしたものの、重大なバグを見つけてしまった場合、再度アプリを審査に出して反映を待つ必要があります。しかもストアに反映されたとしても、ユーザーはアプリを再度落とし直さないとその修正は反映されません。 Rollout を用いると、Web のインターフェースから JavaScript でパッチを作成することで、審査なしですぐにバグの修正や機能の解放を行えます。これによって、通常は再度審査をはさむ必要があるバグ修正であっても、アプリのユーザーはアプリを落とし直す必要
A cross-platform FOSS library written in C to communicate with iOS devices natively. ... and a bunch of libraries and command-line utilities. Get Started Native Protocols The library implements the native protocols needed to communicate with services running on iOS devices. Due to the reimplemention it does not depend on using or bundling any existing libraries from Apple. Cross-Platform The C pro
通常アプリのログを確認するときにはXcodeのデバッグモードでログ出力を行いますが、AdHoc版であったり、リリース版でもログを確認したいときがあります。 そういう時のログ出力をして確認する方法を紹介したいと思います。 Xcodeのログ出力機能を使用する まず、iPhoneをMacに接続します。 そして、Xcodeを起動して、Devices画面(ツールバー・Window > Devices)を表示します。 Devicesの画面下部のところにあるこのボタンをタップします。 すると、ログがこのように出力されます。 NSLogで出力されるログはもちろんですが、それ以外にもシステムメッセージなども表示されます。 アプリのエラーなどを確認するときにはアプリのBundle IDで検索すれば、該当のアプリのメッセージを抽出できるかと思います。 ログ出力アプリ「iOS Console」を使う Xcodeを
class Member { let name: String let age: Int let account: Account init(name: String, age: Int, account: Account) { self.name = name self.age = age self.account = account } } let yoshio: Member = Member(name: "yoshio", age: 62, account: account) // 出力! print(yoshio) 出力結果: うん。知ってる そんな中、最近@shapesさんのツイートで、dump関数がSwiftでも使えることを知ったので、少しだけ掘り下げてご紹介します。 dumpメソッドを使うメリット ビルトイン関数のdump(value: T)を使うと、 クラスのインスタンス
概要 Xcode8から追加された「Debug Memory Graph」機能を用いてメモリリークをビジュアル化してみました。 想定したケース 一覧画面・詳細画面の2画面構成 詳細画面でAPI呼び出しを行う API呼び出しクラスが呼び出し元のViewControllerのあるメソッドを呼ぶ設計になっている 詳細画面のViewControllerクラスと、API呼び出しクラスが強参照で相互参照している プログラム作成 メモリリークが発生するプログラムを作成します。 Storyboard 一覧画面・詳細画面の2画面を作成しています。 一覧画面 一覧画面は単純にTableViewで1行セルを表示し、セルをタップすると詳細画面に遷移するだけです。 遷移はStoryboard上でSegueを利用しています。 (例なので、値・Identifierは固定とし、force unwrapして表示させています。
はじめに モバイルアプリを開発しているときに、アプリとサーバー間の通信を確認したいときがあります。たとえば、期待通りの HTTP リクエストが送られているか調べたり、サーバーからのレスポンスが間違っていないか確認したりする必要が生じます。 そんなときに、いちいちデバッガで止めても良いのですが、プロキシをはさめば簡単に通信を覗くことができます。しかも、レスポンスを改竄して、わざと不正なレスポンスにしてアプリがクラッシュしないかテストしたり、特定のリクエストだけブロックしてサーバー障害を擬似的に再現することができます。 mitmproxy とは mitmproxy は man-in-the-middle 型のプロキシサーバーのツールです。OS X や Windows、Linux 上で動作し、対話式の CUI を持ちます。SSL サポートをしている点が特長になります。 公式サイト: http:/
個人的にフロントエンドエンジニア三種の神器の一つとして認定した。 特にハイブリッドアプリ(いわゆるガワネイティヴ)のデバッグですごく重宝している。 でもちょっと癖のあるUIで取っ付きにところもあり、こいつの魅力を伝えることを妨げる一因にもなっているように思える。 ということで、フロントエンジニア目線で何回かに分けてCharlesの使い方を紹介していこうと思う。 もちろんフロントエンジニアじゃなくても便利に使えるツールなので知らなければ何が出来るかくらいはちょっと見て欲しい。 SSLに対応したMITM(Man In The Middle)プロキシサーバーであるところ ブラウザなどのクライアントとインターネットの中間者となり、その間に流れてくるデータ、つまりHTTPリクエスト、レスポンスの内容を記録したり変更することが出来る。 また、CAとしての役割も果たすことができるためSSLの通信内容も復
こんにちは。インフラストラクチャー部 セキュリティグループの星 (@kani_b) です。 クックパッドでは主に "セキュリティ" か "AWS" というタグのつきそうな業務全般を担当しています。 ここ数年、クックパッドではいわゆるネイティブアプリの開発が非常に盛んです。 私達インフラストラクチャー部はネイティブアプリの直接の開発者ではありませんが、開発が円滑に進むように色々なレイヤでそのお手伝いをしています。 PC 向けサービス開発と比較して、スマートフォン向け、特にネイティブアプリにおいては、何かトラブルがあった際に どこで何が起きているか、そのデバッグを行うことが若干難しいと感じています。 今回はいわゆる jailbreak や root 化をせず、ネットワークのレイヤからデバッグを行う方法についていくつかご紹介します。 HTTP プロキシによるキャプチャ まずは HTTP プロキシ
Effective Objective-C 2.0の中に、ZombieObjectの事が書いてあり面白かったので、自分なりにまとめてみました。 ZombieObjectの話の前に、解放されたオブジェクトにアクセスするとどうなるのか?の話をします。 解放されたオブジェクトにアクセスするとどうなるのか? 使い終わり解放されたオブジェクトにアクセスすると、普通はクラッシュします。ARCの登場以前は、呼吸をするようにクラッシュしてましたが、ARC以後はその頻度も減りました。でもまだクラッシュするときはします。ニンゲンダモノ。シカタガナイネ。 このとき、「偶然にもクラッシュしない」場合が発生します。これは、オブジェクトを解放後、そのアドレスでアクセスした場合に、ゴミデータにアクセスできてしまったり、別オブジェクトがそこに割り当てられていたりなど、いろいろな原因があり得ます。 ↑の例では、_assig
あるメソッドが、どのメソッドから呼ばれているのか気になるときがあります。 ファイルを辿っていけば最終的には見つかりますが、複数のメソッドを同時並行で追うのはなかなか面倒です。 そんなとき、debug identifiers(デバッグ識別子)をデフォルトパラメータとして使うと捗ります。 環境 Version 8.0 beta Swift 3.0 変更前 例えば、こんなメソッドがあるとします。 何の変哲もないIntを合計し、printするだけのメソッドです。 このメソッドの呼び出し元を知りたいとき、どうしたらよいでしょうか?
コマンドラインからHTTPリクエストを送信できる「HTTP Prompt」をご紹介。 Python製のコマンドラインHTTPクライアントHTTPieと、インタラクティブなコマンドラインツールを作成するためのライブラリprompt_toolkitを使って作られていて、強力な自動補完機能とシンタックスハイライトが特徴です。 インストール pipコマンドでインストールできます。 $ pip install http-prompt 使用方法 http-promptコマンドにURLを指定して起動します。 $ http-prompt http://httpbin.org URLを変更するときはcdコマンドを使います。 > cd api/v1 > cd http://localhost/api HTTPieで使える形式に従って、ヘッダーやクエリ文字列、ボディパラメータを追加することもできます。 > Co
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く