muapps

iOSアプリ開発で得られた知見をメモ代わりに投稿します。

Macが重い・熱い

M1 MBPがめちゃくちゃ重かった。 セーフモードで起動したりしても変化なし。 アクティビティモニタで1PasswordSLSNativeMessageHostのプロセスが大量にあってCPUを使いまくってた。 これを全部終了させたらサクサク動き始めた。

端末の向きに合わせて一部のViewのみ移動&回転させる

移動 複数の制約を設定しpriorityを変更することで制約を切り替える @IBOutlet weak var targetViewPortraitCenterX: NSLayoutConstraint! // 初期priority: 999 @IBOutlet weak var targetViewPortraitCenterY: NSLayoutConstraint! // 初期priority: 999 @…

Swiftの命名規則

命名について コードのロジックを変更しなくても適切な命名をすればプログラムの動作を壊さずに可読性を改善することができます。 書籍「リーダブルコード」では第1部 表面上の改善 で命名方法が解説されています。 書籍「iOSアプリ設計パターン入門」にはモ…

SwiftLint導入

前提 環境: M1 Mac Xcode13.2.1 SwiftLint0.46.3 インストール SwiftLintのreadme https://zgithub.com/realm/SwiftLint まずMintでインストールしようとしたが以下のエラーが出た。 warning: SwiftLint not installed, download from https://github.com/re…

Clousure - クロージャ

公式ドキュメントを読んでクロージャの整理。 docs.swift.org クロージャはコード内で受け渡しできる自己完結型のブロック。 クロージャは定数および変数への参照をそれらが定義されているコンテキストからキャプチャして保存できる。 グローバル関数とネス…

Dispatchqueueの挙動整理

以下の記事を参考にDispatchqueueの種類ごとにPlaygroundで実行してみた dev.classmethod.jp 実行環境: Xcode13.0 Swift5.2 メインキュー sync(同期) // メインキューは直列(前のタスクが完了次第、次のタスクが実行される) let mainQueue = DispatchQueue.m…

Androidアプリ開発時に便利なツール

前提 端末: Mac ツール Android File Transfer Mac-Android間のファイル転送。AndroidのUSB接続が「充電」になっている場合「ファイル転送」をONにする必要あり www.android.com Android Tool Androidのスクショや画面収録 github.com

Derived Data削除を試そう

直近で以下のようなことがあった。 よく分からないエラーがあって結局Derived Data削除したら直った。。 当時原因分からなかったけどあとから考えればDerived Dataが原因だったかも。。 特に問題起きることなかったからClean Build Folderくらいしかしなくな…

レビュアー指名されたPRを確認する

複数アプリを担当したり開発メンバーが増えてくるとレビューしなければいけないPRも増えレビュー状況把握がコストになってきたので簡単にチェックできる方法を調べた。 qiita.com 上記記事にGitHubの検索修飾子が書いてあるのでそれを使用すればいいが、毎回…

プログレスインジケータ実装

通信中にクルクルするやつ。 extension UIViewController { /// プログレスインジケータを表示する func displayProgressIndicator() { // UI更新はメインスレッドで行う DispatchQueue.main.async { let indicator = UIActivityIndicatorView(style: .white…

Swiftで値をハッシュ化する(SHA256)

ネットで調べると以下の方法が見つかりました。 CommonCrypto(標準搭載) CryptoKit(標準搭載、iOS13以上) CryptoSwift(外部ライブラリ) 1のCommonCryptoは初めから搭載されており、Xcode10以降では単純にCommonCryptoをインポートするだけで使えるようです。…

AppStore用プレビュー画像の作り方

左: スクショのみ、右: スクショ+文字 ASO対策的にスクリーンショットをそのまま貼り付けるより、機種のイメージにはめ込んで周りに文字をつけたほうがいいとされています。 このようなAppStore用プレビュー画像を作成する方法としては2通りあると思います。…

Privacy Policy

built the ToDoリスト 好きなところに入力できるタスクリスト app as a Free app. This SERVICE is provided by at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and dis…

CocoaPodsをgitignoreに追加する手順

CocoaPodsをGitに含めない場合、PodfileとPodfile.lockのみGitに含める。 Pods/以下のファイルをgitignoreに追加する Pods/* もしくは ディレクトリ名/Pods/* すでにGit管理に含めている場合 ローカルでPodsディレクトリを削除してコミット、プッシュする Gi…

ブランチモデルについて

ブランチモデルの採用 Git Flow その他のブランチモデル ブランチモデルの採用 iOSアプリ開発をしていてブランチ運用について曖昧だったので、調べました。 私の場合、以下の理由で基本的にgit-flowを採用することにしました。 調べた限りモバイルアプリでは…

iOSアプリに新バージョンの要素が適用(反映)されるタイミング

新バージョンiOSのSDKを含んだXcodeにアップデートしたとき(と思われる)。 例えばXcode11のリリースノートを見ると、iOS13のSDKを含んでいるとの記述があります。1つ前のバージョン10.3ではこれを含んでいないことも分かります。 Xcode11と10.3のリリースノ…

iOSDC2019に初参加

1、2年前から存在は知っていたけど、今年初めて参加。 2日目からの参加。 参加1日目 2、3日前に開催に気づいて参加したから準備不足だった。 申込みが遅かったせいか、パスにはTwittetアイコンと名前は印刷されず。 せっかくだから記念に印刷されてるものが…