ライブラリ管理を CocoaPods から Swift Package Manager(Xcode)へ移行する

以下のライブラリを CocoaPods で管理していたが、Swift Package Manager(Xcode)管理に移行してみる。 SwiftLint LicensePlist Firebase AnalyticsWithoutAdIdSupport Crashlytics 以下が、その手順。 CocoaPods でのライブラリ管理を削除 まず CocoaPods …

iOS アプリで1画面だけ色の表示が違った件

具体的には LaunchScreen.storyboard に設定している色が、 Hex Color は同じだが、微妙に他の画面と表示が違う。 原因は Color Profile が「Generic RGB」になっていたので「sRGB」に変更したら解決。 現在の Xcode(Xcode 15)で storyboard 作ると sRGB …

本『プログラマのためのサバイバルマニュアル』の感想

プログラマのためのサバイバルマニュアル作者:Josh CarterオライリージャパンAmazon コードの話から、仕事の進め方・考え方、自身の維持の仕方など、、、 いい本だと思う。

Xcode 14.3 で CocoaPods を使用しているプロジェクトのアーカイブが失敗する

Xcode 14.3 から CocoaPods を使用しているプロジェクトで、Archive を実行すると、以下のような rsync error... になって、アーカイブが作成されない。 rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/…

NHK for School API を使った Flutter の習作

Flutter を作って何かアプリを作ってみようと思い、 NHK for School API という API を使って、アプリを作ってみた。 github.com NHK for School API を使うと NHK for School 公開されているコンテンツを API で取得できる。 (すべてが取得できるわけでな…

東京ガスの「ずっとも電気1」と「基本プラン」の電力量料金の計算

東京ガスの 「ずっとも電気1」(2021年5月16日をもって、新規申込受付を停止) 「基本プラン」(あたらしくできたプラン) の「電力量料金」(電力を使用した分の電気代)を計算できる Web ツールを作った。 電力量料金の計算 基本料金、燃料費調整額、再エ…

Swift の未使用コードを分析する periphery コマンドのオプションメモ

periphery を使用すると Swift プロジェクトの中で未使用なコードを特定できる。 (未使用なクラス・プロパティ、不要な public がわかる) インストールして、コマンドのオプションを調べたのでメモする。 インストール brew 経由だと brew install periphe…

iOS 15 から使える GCVirtualController のメモ

GCVirtualController は iOS 15 から使用できるソフトウェアゲームコントローラー。 これを使うことで、アプリで自作のゲームコントローラーを作成しなくてよい、というメリットがある。 GCVirtualController - Apple Developer アプリを作る際に GCVirtualC…

SwiftUI で SKStoreProductViewController を使って AppStore を表示する

SKStoreProductViewController を使うと、アプリから離脱せずに、AppStore で特定のアプリを表示することができる。これを使うと、アプリ内で他のアプリのインストールを促すことに使えたりする。 ただし、SKStoreProductViewController に delegate を設定…

Swift Dictionary の key, value を weak 参照したい

たとえば UIView を key にして、Date を value にした Dictionary を使いたいと考えたとき。 ここで問題があるのは Dictionary の key, value は strong で参照するため、 UIView を key にするとメモリリークが発生する。(本来の UView のライフサイクル…

Swift プロジェクトの テスト CI を Travis CI から GitHub Actions へ移行

Travis CI を使って GitHub のプロジェクトに push した時に、自動でテストが実行されるようになったいたのを GitHub Actions に変えてみた。 GitHub actions の yaml の書き方や、Travis CI からの移行については以下のドキュメントが参考になる。 Building…

マルエツのレシート応募キャンペーンの最大口数を知りたい

スーパーのマルエツのキャンペーンでは、レシート3000円で1口応募できる。(レシート合算可) https://www.ichance.jp/cp/maruetsu-dreamwinter/ たとえば 以下のレシートがあった場合は 600 1000 2000 2500 以下のようにまとめることで「2口応募」で…

青森県のオープンデータを使った「公衆 Wi-Fi スポット」を探せる iOS アプリを作った

青森県のオープンデータは「青い森オープンデータカタログ」にある。 オープンデータで作成されたものはサイト内の「アプリマーケット」というところに登録できるが、みた感じスマホアプリがなく、 アプリマーケット - 青い森オープンデータカタログAoi Mori…

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…

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 が便利 プロパティ…