プログラミング

iOS の Google AdMob のテスト広告が出なくなってしまった時の対応

ここに書いてある「デモ広告」のユニット ID を使って、テスト広告を表示させていたのだが、いつの間にか出なくなっていた。 実行時にこんなログが出る。 <Google> Cannot find an ad network adapter with the name(s): com.google.DummyAdapter. Remember to link </google>…

SwiftUI で下から出てくる Picker を作ってみる

UIKit の場合だと UITextField の inputView に UIPicker を設定して、UITextField をタッチすると下からニュッと Picker が出てくる。ができる。 それを SwiftUI でやろうとすると、適当なものが用意されていなかったので、作ってみた。 こんな感じ。 コー…

Xcode プロジェクトにローカルの SwiftPackage を追加する

SwiftPackageManager で配布されているパッケージを、ローカルに持ってきてそれを Xcode プロジェクトで参照して使用するメモ。 パッケージのリポジトリを clone する。 対象のアプリのプロジェクトを開く Xcode のプロジェクトツリーに、パッケージのフォル…

写真に写っている人・動物をヒエログリフにする iOS アプリを作ってみた

機械学習のフレームワークを使ったアプリを作ってみたくなり、試しに作ってみた。ついでに最近、エジプトのヒエログリフが面白いなあ、と思っていたのでそれをアプリのテーマにした。 Egyptian Hieroglyphs PhotoDaisuke Tonosaki写真/ビデオ無料 Apple の …

iOS の Google MLKit で静止画像の ObjectDetection を試してみた

Google MLKit の ObjectDetection での静止画像の解析を試してみた。 公式のサンプルもあるが、バンドルされている静止画像しか解析できない。 そのため、写真を選んで解析する iOS サンプル を作ってみた。 動かすとこんな感じ。 試してみて分かったこと Fi…

CocoaPods で「Your project does not explicitly specify the CocoaPods master specs repo...」の警告が出る

pod のコマンドを実行した時、以下の警告が表示されるようになった。 [!] Your project does not explicitly specify the CocoaPods master specs repo. Since CDN is now used as the default, you may safely remove it from your repos directory via `po…

Apple Archive フレームワークを使って LZFSE の CLI ツールを作った

macOS 11.0(Big Sur)、iOS 14 から Apple Archive Framework が使えるようになった。 Apple Archive Framework Apple Archive Framework では Apple によって開発された LZFSE アルゴリズムの圧縮・展開ができる。 LZFSE 試しにこの Apple Archive Framewo…

SwiftUI キーボードを表示時に特定の View を非表示にする

たとえばこんなコードで ScrollView 内に TextField を置いて、さらにスクロール位置によらないで常に画面下部にある View が表示されるような構成を ZStack で表現すると import SwiftUI struct ContentView: View { @State private var text: String = "" …

mac で使用する Python のバージョンを Python 3 にする

mac のシステムでデフォルトインストールされているのは Python 2系。(Big Sur 時点) これを Python 3系に変える。 brew インストール % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" pyenv イン…

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

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

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…

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

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

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 古…