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

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

既存の動画にフィルターを適用する方法

#撮影済みの動画にフィルターをかける方法

既に存在している動画にフィルターをかけられれば、
面白い編集ができる。
#フィルターはリアルタイムでしかかけられないのか?

既存の動画を処理したい。
しかし、動画の処理を書くのは大変そう。

#[**SemanticImage**](https://github.com/john-rocky/SemanticImage)で秒で解決

[**SemanticImage**](https://github.com/john-rocky/SemanticImage)というライブラリなら、
かんたんに既存の動画にフィルターを適用できる。

#使用方法

###1、SemanticImageをインポートする
SwiftPackageManagerで[**SemanticImage**](https:/

元記事を表示

[iOS] AR Quick Look API を使って AR アプリを作る

iOS / iPadOS の AR Quick Look API を使うことで、とても少ない行数の Swift コードで iOS / iPadOS 用の AR アプリを作ることができます.
この記事では、AR 表示のための 3D データの準備、アニメーションや対話性を持つ AR シーンの制作、AR Quick Look API を使った AR アプリ開発までの一連の流れを説明します.

1. 3D データ準備: 実物の写真から Computer Vision 処理(Photogrammetry)で 3D データを生成します.
1. AR シーン制作: 仮想オブジェクトを配置したり、アニメーションや対話性を持つ AR シーンを GUI で直感的に制作します.
1. AR アプリ作成: AR Quick Look API を使う Swift code により AR アプリを作ります.

# AR Quick Look の基本

開発の一連の流れの説明の前に、AR Quick Look (ARQL) について復習します.
ARQL は WWDC18 において発表された iOS 12 以降に提

元記事を表示

【iOSアプリ】VIPERアーキテクチャのプロダクトで配属されて3週間の新卒社員のOJTをした話

この記事は[レコチョク Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の最終日の記事となります。

# はじめに

はじめまして。レコチョクの河野です。19年4月に新卒入社し、現在はiOSアプリエンジニアとして、Eggs・新規プロダクトのiOSアプリの開発・運用などを担当しています。また、21年度は新卒エンジニア研修全体の主担当としてカリキュラム策定から新卒メンバーへのフォローなど研修期間を通じて様々な業務を担当しました。音楽の専門領域はアイドルまわりで、個人的今年の1曲は[日向坂46 「どうする?どうする?どうする?」](https://recochoku.jp/album/A2002179393/album?ds=1011563170)です。よろしくお願いします。

レコチョクでは例年、エンジニアとして新卒入社したメンバーが新卒研修を終えた後に各部署に配属されてからOJT期間を経て、段階的に実務的な開発・運用業務に参画する仕組みがあります。そして、今年度iOSチームでは21年入社の[o

元記事を表示

自前でDIコンテナを作ってみる試みとRxSwiftを利用した構成への適用を試してみる

## 1. はじめに

皆様お疲れ様です。「iOS Advent Calendar」の24日目を担当させて頂きます、fumiyasac(Fumiya Sakai)と申します。何卒よろしくお願い致します。

Swift/Kotlin愛好会Advent Calendarでは、[「Androidアプリでバックグラウンド再生機能を実現するためのヒントとiOSアプリとの見比べた際の特徴を簡単にまとめてみた」](https://qiita.com/fumiyasac@github/items/2f698d6c330530338826)というタイトルにて、iOS/Androidアプリでのバックグラウンド再生機能を実現する上で、ポイントになり得る点を双方の比較をしながら解説した記事を書きましたので、こちらもご覧頂けますと嬉しく思います。

今回はUIまわりのトピックではなく、実務や個人開発を通じて、OSSライブラリのDI(Dependency Injection)を実現するためのライブラリを参考にしながら、自前で実装する&リプレイスするが機会がありましたので、自分なりの事例に関して簡単ではありますが

元記事を表示

Playgroundsを用いるApp開発において,パッケージを追加する

#概要
Playgrounds及びiOS, iPadOSのアップデートに伴い,Mac上のXcodeを用いずともAppの開発を行うことが可能となった。Playgroundsにおいて,外部ライブラリを使用したいと思った。XcodeであればcocoaPodsを使用するが,Playgroundsでは使えなさそうだった。そこで,Playgroundsにおいて,外部ライブラリ(パッケージ)を追加する方法を記載する。

#前提
今回は,アプリ内でグラフを描画したかったので,ChartsというSwiftのライブラリを導入しようと思った。基本ライブラリであれば,

“`swift:import.swift
import SwiftUI
import Accelerate
“`

のようにすれば簡単に導入できる。
ところが,外部ライブラリであるChartsはこのままimport文を記述しても”No such module ‘Charts'”と,怒られる。

#方法
①Playgroundsのアプリ内で,ファイルを追加するボタンをタップする。
②最下部に「Swiftパッケージ」とあるので,これをタップす

元記事を表示

Realm objectの取り回し方法について考える

(なぜか限定公開でPublicにしてなかったので今頃公開。基本的な考え方は今でも通じるはず)

# なぜ考える必要があるのか

– 保存されたRealm object(Managed Realm object)は[スレッドを直接またげなかったり](https://realm.io/docs/swift/latest/#models)、[変更にはtransactionが必要](https://realm.io/docs/swift/latest/#writes)だったりと気をつけることが多いです。
– そのため、運用ルール以外の方法で安全にRealm objectを取り回す方法を考える必要があります。

# [VO](https://qiita.com/sagaraya/items/96708cd451021fb040b7#vo-value-object)を何にするか

Realm object([DAO](https://qiita.com/sagaraya/items/96708cd451021fb040b7#dao-data-access-object))を[VO](https:/

元記事を表示

SwiftUIでFormatStyleを使って色々なデータをTextで表示

# 概要

SwiftUIで文字を表示する`Text`では文字列を表示できますが、色々なデータも変換を通して表示できます。
以前からFormatterを使った表示がサポートされていましたが、iOS 15から、`FormatStyle`というものが加わり、Formatterを作らずとも色々なデータをそのままTextで表示できるようになりました。

# 表示方法

## 日付 (Date)
inputに`Date`、formatに`Date.FormatStyle`を指定します。

“`swift
struct SwiftUIView: View {
let date: Date = Date()
var body: some View {
Text(date, format: Date.FormatStyle.dateTime)
.font(.largeTitle)
}
}
“`

![スクリーンショット 2021-12-24 13.22.19.png](https://qiita-image-store.s3.ap-n

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事