2020-01-01から1年間の記事一覧

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…

macOS Big Sur(macOS 11)からはコマンドで Apple Archive の圧縮・展開ができる。

macOS Big Sur からはコマンドで Apple Archive (aar や lzfse)の圧縮・展開ができるみたい。 以下、コマンドの例。 単体ファイルの圧縮 % aa archive -i alice29.txt -o alice29.txt.lzfse -a lzfse alice29.txt を圧縮した alice29.txt.lzfse を生成する…

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 のアプリのライフサイクルが選べるようになっている。 選べる…

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…