iOS関連のことを調べてみた2021年12月24日

iOS関連のことを調べてみた2021年12月24日
目次

Combine を使ったアニメーションを Scheduler で自由自在に操る方法

# はじめに
こんにちは、[アイカワ](https://twitter.com/kalupas226)と申します。
この記事は [Qiita iOS Advent Calendar 2021 Calendar2](https://qiita.com/advent-calendar/2021/ios) の 24 日目の記事になります。

[前回の記事](https://qiita.com/kalupas226/items/153fdaf783379e7d865a)では、SwiftUI の基本的なアニメーションの実装方法について紹介しました。
本記事では、SwiftUI のアニメーションについて非同期なコードが絡む時にどのような工夫をしなければならないかということについて紹介します。特に、非同期なコードとして Combine を利用した時の話をしていきます。

前提知識として、combine-schedulers というライブラリの仕組みを知っていると記事が理解しやすくなると思うため、combine-schedulers についてキャッチアップするための記事等をぶら下げます。

– com

元記事を表示

【ゆく年くる年】2021年末からiOSアプリをリリースするためApple Developer Programにジョインしましょう

# どういうことか

iOSのアプリをリリースするためにはApple Developer Programに登録する必要がある。
で、このプログラムを始めるためには年額12,980円(1,180円の税込み)というまあまあな課金をする必要がある。

## よくわからなかったこと(読み飛ばしてもいい)

下記のページを見たら「アプリを使って登録しましょう」といったことが書いてあるが、いざアプリをDLして開いてみたら「**このApple IDでは、Apple Developer Appからの登録をご利用できません**」などと書いてある。なんなのだ??
結論から言うと下記のページは参考にしなくてもいい(もしかするとこれが当てはまるユーザもいるのかもしれない。Apple IDの登録時期とかで)。

https://developer.apple.com/jp/support/enrollment/

https://developer.apple.com/jp/support/app-account/

## 実際に登録する

まず個人情報の登録。

https://developer.apple

元記事を表示

最新の超解像モデルReal ESRGANをiOSでつかう

#最新の超解像機械学習モデルがiOSでつかえる
320*320


超解像


1280*1280

小さなサイズの画像を鮮明に、大きなサイズにしてくれる超解像モデル。
2021年発表のReal ESRGANもiOSで使える。

#機械学習モデルを扱うのは難しそう?

とはいえ、最新の機械学習モデルをつかうのはたくさん手順が必要なんじゃないの?

#変換済みのCoreML Modelをつかえばかんたん

Real ESRGANも変換済みのものがあります。これをつかえばすぐにiOSで超解像ができます。

#かんたん手順

[**CoreML

元記事を表示

Universal Linksを用いたiOSのDeep Link対応

iOS 13以降の Universal Links について紹介します。

# Universal Linksとは

iOS 9からサポートされて、Apple が正式に提供したディープリンク技術です。
簡単にいうと、通常の HTTP リンクで設定すると、その URL を踏んだ時に、端末のデフォルトブラウザで Web サイトを開く代わりに、アプリを起動してページへ遷移することができます。
URL スキームと似ている機能ですが、主に下記の違いがあると思います。

* Custom URL スキームが不要です。 `hoge://` みたいなスキームではなく、 通常の HTTP リンクのスキーム `https://` でアプリが起動できるので、 Web サイトとアプリ両方同じURLで遷移できます。
* Web サーバーにアプリの起動条件を記載する apple-app-site-association を配置する必要がある。URL のパスやパラメータなど設定することで、アプリに遷移させたいリンクのみ指定可能です。
* 直接にブラウザにURLを入力した場合、アプリが起動しません。同一ドメイン内で

元記事を表示

スマホでストレージの空き容量が無くなった時に、アプリデータがどうなるか試してみた

##はじめに
面倒なのであまりやらないんですが、ストレージの空き容量が無くなった時にアプリが動いてて、どうなるのかなーって思いますよね。
まあOSが不安定になったり、動かなくなったりするので、アプリ側はあまり心配もしてないんですが、自前アプリで動作確認してみました。

スマホはフラッシュメモリーなので、長く使ってると、ライトエラーも起きますしねえ。
##結果
###android 11エミュレータで試しました。
– プリファレンスへ出力
– 消えたりしなかった。書き込もうとした分は書き込めてなかった。
– ファイルへ出力
– ファイル内容は丸っと消えた。途中まで書き込めたりもするだろうね、きっと。試してないけど。対策すればいいんだけど面倒だね。
– sqliteへ出力
– DBファイルは無事。書き込めないので例外が発生して、落ちた。

###iPhone XRで試しました。
androidと違い、空き容量200MBぐらいでダメになりました。設定のiPhoneストレージで確認したので、使用セクターの使ってない部分の合計が200MB近いとかなのかな

– NS

元記事を表示

XcodeのiOSシミュレータ、古めのやつが劇遅な件

##はじめに
自社アプリを開発していて、ちょっと古いiOSシミュレータが劇遅だった。
最新iOSシミュレータだと問題なかった。xcode11/12/13でそうだった。
##原因は
Objective-CアプリでAVAudioPlayerを使っていると、理由はわかりませんが、劇遅になるようです。自社アプリだけかもしれませんが。
Swiftアプリは作ってないので、どうなのか不明です。

対策として、シミュレータ向けビルドではAVAudioPlayerを使わないようにしました。まあ主要機能じゃ無いので、開発中はなくても困らない。

“`obj-c
//古めのiOSシミュレータだと劇遅になるので、SE無し
#if TARGET_OS_SIMULATOR
return;
#endif
“`

##終わりに
まあそれだけ。最新iOSシミュレータのみ問題無いのは謎。
困ってないので、それ以上は追ってないよ。

今までで一番手抜き:yum:

元記事を表示

SAP モバイル開発についてまとめてみた

# はじめに

この記事は [SAP Advent Calendar 2021](https://adventar.org/calendars/6252) の12月23日分の記事として執筆しています。

このブログでは SAP モバイル開発について書きたいと思います。
with コロナの新しいライフスタイルが定着しつつある今、モバイルアプリを使っていつでも、どこでも、リモートであらゆることができるようになりました。SAP では、今年に入ってからの企業間インタラクションのうち、最大 70% がモバイルで発生していると推定されているようです[^1]。今、モバイルがアツい:metal:
というわけで、モバイル開発をやってみたい、SAP にはどんな選択肢があるのか知りたい、という方の参考になれば幸いです。

# SAP Mobile Services

SAP Mobile Services は、モバイルアプリの開発や設定、管理をすることができるサービスです。一昔前までは、ただ一つのバックエンドと接続すればいい、非常に単純なアプリだったかもしれません。しかし最近のアプリは、様々なデータソースや

元記事を表示

[React Native] MacでReactNativeプロジェクトの環境設定 (iOS&Android)

# はじめに
アプリを開発するために必ずSwiftやKotlinを学ぶ必要はありません。Dart言語のFlutterフレームワークもあるし、JS基盤のReact Native(今から略でRNで書きます。)フレームワークでもiOSやAndroidのアプリ開発ができます。

それで、今回の記事はMacでRNプロジェクトの環境を構成する方法についてお話しします。

# Mac(OSX)でiOS開発の環境設定
Mac環境でXcodeを使用してiOSアプリをビルドする方法を説明します。

## パッケージ設置

### Homebrew 設置

“`
#設置しているか確認
$ brew –version
– zsh: command not found: brew
$ /usr/bin/ruby -e “$(curl -fsSL

# 設置コマンド実行
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

#設置完了確認
$ brew –vers

元記事を表示

ViewModelのPublishedな値をViewでBinding<型>で扱う方法

## はじめに
“`ViewModel.swift
class ViewModel: NSObject, ObservableObject {
@Published var isShowAlert: Bool = false

/// 省略 ///
}
“`

“`ContentView.swift
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()

var body: some View {
Button(action: {
/// 省略 ///
}) {
/// 省略 ///
}
.alert(isPresented: Binding) {
Alert(title: Text(“確認”),
message: Text(“これはテストです”),

元記事を表示

iOS の widget を設定可能にする

## 概要

iOS 14 からホーム画面に widget が置けるようになりました。widget には設定可能なものとそうでないものの2種類があります。

設定可能なものの例として Apple の天気 widget があります。天気 widget を長押しして出てくる「ウィジェットを編集」をタップすると編集画面が開き、天気を表示する場所を設定することができます。天気の widget を追加する上ではどの場所の天気を見たいのかをユーザが決めたいでしょうから、この項目が指定可能になっているのは自然に思えます。

設定可能でないものの例としては Apple のマップ widget があります。こちらは widget を長押ししても「ウィジェットを編集」という項目が出てきません。これは、マップ widget では天気と異なりユーザがなにかを設定する余地がないように設計されているからでしょう。

widget を自作する上では、作りたい widget の性質を鑑みて widget を設定可能にするかどうか決める必要があります。この記事では、widget を設定可能にする方法をまとめます。まず設

元記事を表示

iOS用の機械学習ライブラリをつくる

#機械学習モデルを搭載したライブラリをつくる方法

![christmas-6873868_640.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/6634f1b7-cc30-efe3-0de3-cd208b9cc0ca.jpeg)

機械学習の機能をライブラリに盛り込めます。

#機械学習モデルをライブラリでも使いたい

画像認識、物体検出、セグメンテーション、音声認識、文字認識、画像生成、超解像、深度推定、画像復元など、
機械学習モデルには様々な便利なものがあります。
それらのパワーをライブラリにも搭載したい。

iOSプロジェクトで機械学習モデルを使うときは、CoreMLModelをプロジェクトに搭載しますが、SwiftPackageManagerに対応したライブラリでは直接mlmodelの拡張子のファイルを積み込めない。
といって、ユーザーに別でmlmodelだけダウンロードしてもらってプロジェクトにコピーしてもらうのは手間。
なんとかモデルごとパッケージに組み込めないか。。。

元記事を表示

React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる

## はじめに

先日、下記の記事を発表しました。

https://qiita.com/yoshiyuki_kono/items/bffda8fba33839a3e9aa#couchbase-lite

そこで、Couchbase Liteについて、下記のように書きました。

>…チュートリアルが公開されています。提供されているReact NativeのUI実装(スタータープロジェクト)に対して、Couchbase Liteを利用するためのコードを追加していく形になっています。2018年時点のものにて、提供されているReact Nativeのソースコードは、すでに時代遅れなものとなっていますが、提供されているUI実装は無視しても(React Nativeを昔から使っている人は、提供物をベースに最新化してもよいかもしれませんが )、チュートリアルの内容を参考にして実装を行うことができるでしょう(将来別の記事で発表したいと思っています)。

本稿では、「Couchbase Liteを利用するためのコードを追加していく」部分について、見ていきたいと思います。

ここでは、提供されている

元記事を表示

あなたと私の見ている色は同じだろうか?

あすけんの [@sato-shin](https://twitter.com/sankakuButton) です。
哲学的なタイトルですが「カラープロファイルには気をつけようぜ」というお話です。

## はじめに
印刷した画像と、ディスプレイでみた画像を比較して「なんか違う」と思ったことはないでしょうか?
これは表現できる色域の違いから来ています。

色域?カラープロファイル?と思った人のためにざっくり説明を書いておきます。
正確な表現ではないですが、大体合っているはず。

* 色域:表現できる色の範囲
* 印刷物の場合は、プリンターやインク・トナーの性能に依存する
* ディスプレイの場合は、ディスプレイの性能に依存する
* カラープロファイル:表現物(印刷物やディスプレイ)によって、色が異ならないように補正する設定・仕組み

実際に体感して見てみましょう。

## 右と左の色は同じですか?

**ブラウザによっては補正がかかるので、画像をクリック・タップして、生画像を見てください。**
![スクリーンショット 2021-12-23 0.25.34.png](https

元記事を表示

iOSアプリ名のローカライズ対応(Xcode13,1)

## 方法
#### 1. 追加したい言語を追加する
プロジェクト設定から、「Info」→「Localizations」→ 「+ボタン」を押下。
追加したい言語(Japanese)を選択する。
![スクリーンショット 2021-12-22 22.11.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667331/b1d8e99e-0900-a59a-b4c0-db87e8084bfb.png)
#### 2. ローカライズ用のファイルを作成する
「New File…」より「Strings File」を選択。
「InfoPlist.strings」という名前でファイルを新規作成。
![スクリーンショット 2021-12-22 22.12.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667331/79070f50-2ee0-c615-8f5c-28d70c89c194.png)
#### 3. 対応する言語を

元記事を表示

社内の複数のiOSアプリの証明書をどう管理するのか

# はじめに

この記事は[株式会社Diverse Advent Calendar2021](https://qiita.com/advent-calendar/2021/diverse) 22日目の記事です。

直近、社内で扱っている複数のiOSアプリの証明書の管理方法を整えたのでその内容を共有しようと思います。

弊社ではプロダクトごとにチームが別れており、それぞれのチームのエンジニアが手動で証明書の更新などの対応をしていました。

そのため証明書の管理が属人化してしまい、管理者が特定の人に偏っていました。
また新しくジョインしたメンバーは誰がどのように証明書を管理しているのか分かりづらい状況でもありました。

この課題を解決するために導入したのが [fastlane match](https://docs.fastlane.tools/actions/match/) です。

※この記事ではfastlaneの詳しい使い方については触れません。
詳細については公式ドキュメントと以下の記事をご覧ください。
・[公式ドキュメント](https://docs.fastlane.tools

元記事を表示

顔だけ、体だけを切り抜きたいなら、SemanticImage

#写真から顔や体を自動で切り抜く

自動認識して切り抜く方法です。
iOSで使えます。


【SpriteKit】チワワがB’zからのXmasプレゼントを貰うだけのクソゲーRPGを作ってみよう!

##これを作ります

##はじめに
どうも!反町隆史顔真似芸人

元記事を表示

CarPlayについて簡単にまとめてみました

こんにちわ。iOSアプリ開発をしている[@haseken_dev](https://twitter.com/haseken_dev)です。
[iOS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ios)の22日目を担当させていただきました。

今回はCarPlayについてちょっと簡単にまとめてみようと思います。
既に知っていることも多々あるかとは思いますが、読んでもらえたら幸いです。

# 1. はじめに
この記事は、Appleが提供するCarPlayについてかんたんにですがまとめてみました。
自分でもCarPlayを実際にドライバーとして利用していたりしますが、これまでどのような流れでCarPlayが発表されて来たのか、またアップデートはどのようなものがあったのかをまとめたことがなかったので、
良い機会だとも思い、まとめてみることにしました。

# 2. イメージする対象の方
本記事の対象者は下記のような方をイメージしています。

– CarPlayって聞いたことあるけど、実際に何ができるのかいまいちわから

元記事を表示

GlobalActorとTaskを使う際の実行スレッドがメインスレッドなのかを速攻で思い出すためのサンプルコード

## はじめに

みなさーん、ActorとTask使ってますかー?
 (ΩΩΩ<使ってまーす!!) MainActorとかGlobalActor使ってる時にー、Taskの実行スレッドわけわからんくなりますよねー? (Ω<ない気がするけどなあ。 Ω<あるようなないような。 Ω<それはないでーす!) はい。みなさんわけわからなくなってますねー、ということで今日はGlobalActorとTask使ってる時にTaskの実行スレッドが想定通りかわからなくなったときに、すぐにそれが整理できるコード例を示したいと思います。 ## 概要 コード例で示すことの概要 - 型自体に対するActor isolated指定は型のメソッドに引き継がれる(他にはプロパティにも) - しかしメソッドに別のActor isolatedが指定してあれば指定した別のActor isolatedを優先する - 優先度は `型への指定 < メソッドへの指定` - nonisolated指定されてると引き継がない - TaskクロージャのActor指定はそれが一番優先される -

元記事を表示

iOS 15にアップデート後いくつかのアプリで通知が来なくなった際の対応

##通知が来なくなったアプリ
– +メッセージ
– LINE

###症状
– メッセージが送られているにもかかわらず通知されない
– アプリを起動した時点でメッセージを読み込む

###実施したこと
1. 再起動
1. アプリ退避と再ロード
1. ツールによるリカバリーモード移行と復帰
1. ファームウェアマイナーバージョンアップ
1. アプリ完全削除と再インストール

###結果
上記、5番目で回復

元記事を表示

OTHERカテゴリの最新記事