既存の SwiftUI アプリのライフサイクルを iOS 14 の SwiftUI App に変更してみる

Xcode 11 を使って iOS 13 向けに作成されたSwiftUI のアプリだと AppDelegate と SceneDelegate のライフサイクルでアプリが作成されている。 Xcode 12 以降だと、プロジェクト作成時に SwiftUI のアプリのライフサイクルが選べるようになっている。 選べる…

MIT License、Apache License 2.0 についてのメモ

OSS でよくみるMIT, Apache License 2.0 の意味がよくわからなかったので調べたことをメモ。 日本語でオープンソースライセンスについて書かれた資料は、 IPA(情報処理推進機構)が提供している物が分かりやすい。 OSSライセンス関連情報:IPA 独立行政法人…

Firebase iOS SDK を使っていると SwiftUI の Preview が機能しない問題(Firebase iOS SDK v6.33.0)

Firebase iOS SDK を使っている SwiftUI のプロジェクトで Preview が表示されなくなった。(Xcode 12.0.1) とりあえず configure() をコメントアウトすれば、Preview は表示される。 // FirebaseApp.configure() 調べたら、この問題について issue が上が…

Nominatim(OSM) API を試してみた(iOS)

iOS で Nominatim API の動作モックを作って試してみた。 動作イメージはこんな感じ。 Nominatim は OSM(Open Street Map)のデータからジオコーディングした結果を取得できる API で、たとえば地名から住所(緯度経度)検索ができる。また、緯度経度から地…

プロジェクトを Xcode 12 にアップグレードする時の対応あれこれ

CocoaPods で導入したライブラリのターゲットが iOS 8.0 になっている警告 The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. Xcode 12 からは …

fastlane でスクリーンショット撮影するまでのセットアップ

fastlane snapshot を試してみたのでメモ。 資料 https://docs.fastlane.tools/getting-started/ios/setup/ https://docs.fastlane.tools/actions/snapshot/ fastlane snapshot 導入のメリット 導入のコストはそんなに大きくなく、得られるメリットの方が大…

UserDefaults と Keychain を使ったカスタムクラスの永続化

https://github.com/daisuke-t-jp/UserDefaultsAndKeychainSample/ サンプルを作った。以下メモ。 Swift の Codable を使えば、プロパティそれぞれをエンコード、デコードのコードを書く必要なく楽だ。 Keychain の場合は KeychainAccess が便利 プロパティ…

iOS 14 以降の Google AdMob 対応(AppTrackingTransparency Framework)

資料 https://developers.google.com/admob/ios/ios14?hl=ja#request https://support.google.com/admob/answer/9997589?hl=ja 前提 iOS 14 では AppTrackingTransparency Framework が追加され、ユーザのトラッキング収集はこのフレームワークを介して、ユ…

Apple の住所(地名)検索 API を比較する(iOS)

テキストから住所(地名)を得たい場合 (たとえば、"嵐山" という入力から "京都府京都市右京区" という結果が欲しい) その用途に使用できそうな Apple の API は、以下がある。 CLGeocoder.geocodeAddressString() CLGeocoder.geocodePostalAddress() MKL…

OSS の iOS の Web ブラウザアプリで、UserAgent を設定している箇所を見比べてみる。

気になったので、オープンソースな iOS の Web ブラウザアプリで、 WKWebview のカスタムユーザーエージェント(customUserAgent) を設定している部分を見てみる。 Chrome ユーザーエージェントの例 Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) …

Xcode 12.0 beta 2 (12A6163b) に含まれる Framework

Xcode 12.0 beta 2 (12A6163b) の iOS platform の Frameworks の中をみると $ cd /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks $ ls ARKit.framework AVFoundatio…

本『リーダブルコード』の感想

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者:Dustin Boswell,Trevor Foucher発売日: 2012/06/23メディア: 単行本(ソフトカバー) 原題は The Art of Readable Code: Simple and Practical Techniq…

AppStoreConnect での米国輸出規制の暗号に関する質問をスキップする

免除される暗号のみを使用しているのに App Store Connect でアップロードごとに毎回、暗号に関する質問を答えるのが面倒。 その場合は、 Info.plist に以下を追加する。 <key>ITSAppUsesNonExemptEncryption</key> <false/> これでアプリには免除されていない暗号を使用してい</false/>…

iOS 14 の App Clips について

iOS 14 の App Clips に関して調べたことのまとめ 資料一覧 Introducing App Clips Human Interface Guidelines / App Clips Developer Document / App Clips Creating an App Clip Developing a Great App Clip 資料から重要そうなところを抜粋 概要 (画像…

iOS / Android 用のローカライズ文字列ファイルを生成するツール「strgen」

iOS / Android のローカライズ文字列ファイルを一括で生成するツールstrgen(Python)を作った。 PyPI に登録してあるので、 pip でインストールできます。 PyPI : https://pypi.org/project/strgen/ GitHub : https://github.com/daisuke-t-jp/strgen 概要 …

Python パッケージ作成に関する情報まとめ

Python パッケージ作成、PyPI(パイ・ピーアイ) への登録などに役立つ情報を、まとめる。 setup.py だけ使用するパターン、setup.cfg も使用するパターン、__init__.py に多くの役割を持たせるパターン/ほとんど役割を持たせないパターン、などパッケージ作…

iOS でパラパラ漫画のような見た目のインジケーターを作った

everysing というカラオケのアプリで、読み込み中に表示されるインジケーターがパラパラ漫画のようになっていて、キュートな感じがしてよい。(マイクやヘッドフォンのアイコンが表示される) この UI を再現したく、パラパラとアニメするインジケータを作っ…

macOS 10.15 から有効な EndpointSecurity API(SystemExtension.framework)

https://developer.apple.com/jp/system-extensions/ macOS 10.15 から、従来のカーネル拡張(KEXT)を使わずに、ユーザーランドで動作するソフトでシステムイベントを監視(おそらくイベントの許可/禁止も)できるようになった。 https://developer.apple.c…

GitHub Action の Private / Public リポジトリの制限

GitHub Actionsの支払いについて - GitHub ヘルプ Public リポジトリ GitHub Actions の制限はない Private リポジトリ GitHub Actions の実行時間とストレージに制限がある。 アカウントに存在するすべての Private リポジトリの実行時間、ストレージ使用量…

GitHub ワークフローで環境変数、シークレットな情報を使用する

これは 2020/05 時点の情報をもとにした記事なので、最新では事情が変わっている可能性を留意すること。 ワークフロー内で使用できる環境変数 環境変数の利用 - GitHub ヘルプ たとえば GITHUB_REPOSITORY(所有者とリポジトリの名前 octocat/Hello-World な…

GitHub ワークフローを使って、プロジェクトを定期実行し、成果物をデプロイする(Python)

GitHub ワークフローを使ってプロジェクトの定期実行→成果物をデプロイする方法を調べたのでまとめる。 これは 2020/05 時点の情報をもとにした記事なので、最新では事情が変わっている可能性を留意すること。 目的 GitHub ワークフロー / アクションの意味…

DuckDuckGo iOS アプリの「Find In Page(ページ内検索)」で入力文字の候補が選択できない問題を修正

DuckDuckGo Privacy BrowserDuckDuckGo, Inc.ユーティリティ無料 DuckDuckGo の iOS アプリで「Find In Page(ページ内検索)」で日本語が入力できない現象があったので、原因を調べて修正した。 DuckDuckGo は iOS / Android 共にオープンソースなので、第…

iOS の TensorFlow サンプルを試してみる

TensorFlow(テンソルフロー) や iOS でのサンプル実行の方法を調べたメモ。 https://www.tensorflow.org/lite?hl=ja iOS で TensorFlow を動かすには TensorFlow Lite を使用すると良い。 TensorFlow Lite はモバイルや組み込みデバイス向けにチューニング…

pod install と update の違い。あと deintegrate

pod install / update をいままで何となく使っていたので、違いを調べる。 https://guides.cocoapods.org/terminal/commands.html コマンドのマニュアル↑をみると install Podfile.lock に記載されているバージョンで、依存関係をインストールする update 古…

SwiftUI で GoogleAdMob バナーを表示する

SwiftUI で GoogleAds のバナー広告を表示するサンプルを作った。 方法としてはまず GADBannerView を表示する UIViewController を用意する。 class GADBannerViewController: UIViewController { let bannerView = GADBannerView(adSize: kGADAdSizeBanner…

Google AdMob (iOS)バナー広告のサンプルコードで「bottomLayoutGuide」の警告が出る件

https://developers.google.com/admob/ios/banner 2020/04/29 時点で、サンプルコードが以下になっているが func addBannerViewToView(_ bannerView: GADBannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(banne…

Swift TextField で入力した数内を金額(通貨)フォーマットにして表示する

https://github.com/daisuke-t-jp/SwiftCurrencyTextFieldSample Swift のテキストフィールドで入力した数値を「金額(円)表記」するサンプルを作ってみた。 ユーロ(€),ドル($) ならば、小数点の考慮も必要だが、日本円ならばこんな感じで。。

Swift URLRequest のタイムアウトを発生させる

URLRequest のリクエストがタイムアウトになった時の動作をみたい時がある。 そういう時は URLRequest の initializer で timeoutinterval をとても小さな値(たとえば 0.0001 秒とか)にすると、タイムアウトを発生させて、動作を試すことができる。 こんな…

UIResponder.keyboardDidShowNotification が他のアプリに切替した時にも通知される問題

iOS アプリでキーボードが表示されたイベントを知りたい時に UIResponder.keyboardDidShowNotification を通知を受ける。 コードは以下のたとえば下のようになる。 import UIKit import os class ViewController: UIViewController { override func viewDidL…

Python | POI データを取得して、地点の天気を得る

https://github.com/daisuke-t-jp/overpass_weather 今回作成したプロジェクトは GitHub に置いた。 概要 OpenWeatherMap API を使うと、呼び出し頻度の制限はあるが、無料で天気情報を取得できる。 https://openweathermap.org/ この取得する天気情報を、意…