2021-01-01から1年間の記事一覧
参考 Apple公式の以下チュートリアルをやってみました🙌 Creating and Combining Views 以降、メモです🖋 メモ SwiftUI のライフサイクルを持つアプリは App プロトコルに準拠している。 その構造の body プロパティでは1つ以上の scene を返す。scene とは表示…
参考 編集距離について勉強してもあまりしっくり来ず YouTube で動画を探していたところ、説明が非常に分かりやすい動画を見つけました。 大変感謝です♂️ 情報工学概論(アルゴリズムとデータ構造)09動的計画法02編集距離 - YouTube 編集距離 2つの…
Red Hat系 rpm コマンドでのパッケージ管理 RPM は Red Hat社が開発したパッケージ管理システムで、現在は Red Hat Enterprise Linux, Fedora, CentOS などで使用されています。 RPMパッケージ名は以下の形式になっています。 例 bash bash-4.2.46-30.el7.x8…
そもそもパッケージとは? 以下などを1つのファイルにまとめたものです。 実行プログラム 設定ファイル ドキュメント ...etc このパッケージを管理する方法はディストリビューションによって異なります。 ディストリビューション種類 パッケージ管理形式 コ…
スタティックリンク と ダイナミックリンク について勉強したのでまとめてみようと思います! リンクとは? プログラム本体からライブラリの関数を呼び出せるようにすることです。 リンクには2種類あります。 スタティックリンク(静的リンク) ダイナミック…
重要な点は、UIView.transitionのanimationsでViewControllerの入れ替えをするのではなく、先に入れ替え処理を書いてからUIView.transitionを呼び出すこと。(animations引数は空のクロージャ。) class AppDelegate: UIResponder, UIApplicationDelegate { …
iOSでは NSMutableAttributedString を使いますが、Androidの場合は SpannableStringBuilder を用いるようです。 この例では以下の装飾を加えています。 target 文字列と一致する部分に フォント色を赤色 フォントを太字 val textView = findViewById<TextView>(R.id.d</textview>…
先日、こちらの本を概要をまとめながら読了しました。 booth.pm 前半はテスト駆動開発(TDD)についての概要説明になっていて、中盤は実際にiOSアプリ開発でTDDを実践していくという内容です。 後半は新しいアプリにへの導入や、既存プロジェクトへの導入に…
目的のコマンドはこちら ffmpeg -i origin.mp4 -vf scale=640:-1 -r 24 output.gif 普段のアプリ開発やちょっとしたプロジェクトを作ったときに、動作紹介用のgif画像が欲しいときが今まで多々ありました。 そのgif作成にはffmpegを使っていますが、毎回その…
担当しているプロジェクトのUIテストコードに Quick/Nimble(テスト用フレームワーク) を導入しようとして若干ハマったのでメモします。 何に詰まったのか 最初、Spec1とSpec2のように複数のQuickSpecを用意して、それぞれ初期化処理をしてから実際のテスト…
皆さんこんにちは! 最近作ろうとしているアプリを Clean Architecture で実装しようと思い立ちました。 しかしどういうものかを忘れてしまっていたため、今回は備忘録がてらブログにまとめようと思います。 Clean Architecture はシステムアーキテクチャ ア…
今回は業務で Android の設計について調査したので備忘録がてらつらつら書いていこうと思います。参照したドキュメントはこちらです。 アプリ アーキテクチャ ガイド モバイルアプリのユーザー体験 Android アプリでは アプリマニフェスト にアプリコンポー…
ViewModel の概要 ViewModelはライフサイクルを意識し、UI関連のデータの保存・管理用のクラスです。 UIコントローラ(アクティビティやフラグメント)の主な目的は、UIデータの表示、ユーザー操作への対処、OSとのやり取り(権限リクエストなど)を行うこと…
画面遷移するときにはアクティビティ間の移動が発生する。今回はアクティビティの移動についてまとめる。 アクティビティを別のアクティビティから開始する 別のアクティビティを開始する方法は2通りあるが、両方とも Intent オブジェクトを渡す。 startActi…
アクティビティの状態とメモリからの退避 アクティビティ、システムのプロセスと強制終了の可能性については以下になっている。 プロセスの状態 アクティビティの状態 強制終了の可能性 フォアグラウンド(フォーカスがあるか、すぐにフォーカスを取得する状…
Activityのライフサイクル 全体的な概要図はこちら。 6つのコアセット
アクティビティのコンセプト 1 つのアプリが別のアプリを呼び出すとき、呼び出し元のアプリは、別のアプリ全体をひとまとめとして呼び出すのではなく、その中のアクティビティを呼び出します。そうすることで、アクティビティが、アプリがユーザーとやり取り…
UIテスト実行時間の短縮 UIテストの実行時間短縮には次の2つの方法がある。 方法 ビルドとテストの実行を分離する テストの実行を並列化する ビルドとテストの実行を分離する 通常、Xcodeからテストを実行するときには次の2つのステップで実行される テスト…
Page Object Pattern - アプリのUI変更に対応する Page Object Patternというデザインパターンを使うとUI改修が起こることを含めた運用について改善することができる。 import XCTest import UIKit class LoginPage { // UI要素 private let emailTxtF: XCUI…
XCTAttachment で保存できるコンテンツ 以下の形式をサポートしており、イニシャライザとして指定できるようになっている。 クラス String UIImage XCUIScreenshot URL Data Any UIImage や XCUIScreenshot は XCTAttachment.ImageQuality で保存する品質を…
テスト実行時の成果物を保存する XCTAttachment によって、文字列、画像、XCUITestでのスクリーンショットなどを成果物として保存できる。 テスト実行時の追加情報(APIレスポンスなど)を保存するとテスト失敗時の調査が捗る。 ■ 使用例 import XCTest impo…
アプリの状態を確認する stateメソッドを利用して、アプリの状態(フォアグラウンド、バックグラウンドなど)を取得することができる。 値 状態 unknown notRunning 実行されていない runningBackgroundSuspended バックグラウンドでサスペンド状態 runningB…
XCUIApplicationについて XCUIApplicationはテスト対象となるアプリのプロキシ。 これにより以下について確認可能になる。 複数アプリの操作 アプリの起動 / 終了 アプリの状態を確認 複数アプリの操作 引数なしで XCUIApplication をインスタンス化した場合…
UI要素の状態を確認する UI要素が存在しているかどうかなど、UI要素の状態を確認できる。 宣言 用途 var exists: Bool {get} var isHittable: Bool {get} 対象UI要素をタップできるかどうか func waitForExistence(timeout: TimeInterval) -> Bool タイムア…
UI要素を操作する タップ、長押し XCUITestには操作するためのメソッドが複数用意されている。 宣言 補足 func doubleTap() func twoFingerTap() func tap(withNumberOfTaps numberOfTaps: Int, numberOfTouches: Int タップ回数とタッチ回数を指定する func…
要素の特定を詳しく 子要素の特定をする 宣言 用途 XCUIElementQuery.children(matching:) 子要素(直下の要素)を探す XCUIElementQuery.descendants(matching:) 子孫(孫以降も)を探す XCUITestでは一度に複数のUI要素に対して操作を行えない。そのため、…
UIテスト実装に向けて以下の手順について知る。 項目 UI要素の特定方法 UI要素の操作方法 UI要素の属性や状態の確認方法 UI要素の特定方法 XCUIElementQuery というクラスのクエリで対象となるUI要素(XCUIElement)を検索する。
UIテスト概要 XCUITest は XCTest の一部として存在している。UITest実装をサポートしてくれる機能としていかがある。 テストケースのレコーディング機能 テスト失敗時のスクリーンショット撮影 他にもUIテストとして使えるツールには以下が存在する。 名称 …
HTTP通信のモック HTTPモックは外部のサーバの代わりにレスポンスを返すもの。APIクライアントの単体テストやUIテストで実際にサーバを利用するのが困難な場合に利用する。 Mockingjay ライブラリとしてソースコードの中に組み込むのに使用できるライブラリ…
フレームワーク Quick/Nimble Quick/Nimbleは XCTest 上で動く OSSのBDD(Behavior Driven Deployment)、Assertionフレームワーク。 BDDフレームワークとしての Quick、MatcherによるAssertionを実行する Nimble から成り立つ。 Quick とは BDDスタイルでテス…