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

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

顔だけ、体だけを切り抜きたいなら、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番目で回復

元記事を表示

SwiftUI in UIKit!!!

# A Powerful Declarative layout framework for UIKit written in Swift

If you are interesting in SwiftUI but using UIKit in your project, Puyopuyo is the best choice for you to layout your view in SwiftUI way. Feel free to try it.

## Introduce
Youtube: https://youtu.be/3MOBCtIfRFA
Telegram: https://t.me/swift_puyopuyo

https://github.com/scubers/puyopuyo

元記事を表示

Warning: unable to build chain to self-signed root for signer “XXX” のビルドエラーで実機ビルドできない場合の対処法

# 事象|エラー内容

以下のようなエラーが出て実機ビルドができない場合の対処法についてです。
**結論として対症療法までしかわかっていないので、根本解決方法をご存知の方がいらっしゃったらコメントいただけると嬉しいです。**

`Command CodeSign failed with a nonzero exit code`
※このエラーはコード署名に関するもので、さまざまな原因で表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113553/ebe5db01-dd1a-896c-6140-7bb6f851d80b.png)

さらにビルドログを確認すると、`Warning: unable to build chain to self-signed root for signer “XXX”`と記載されており、コード署名がトラストチェーンを構築できていないことがわかります。
![image.png](https://qiita-image-store.s3.ap-north

元記事を表示

人物画像の背景を1行のコードで差し替えるなら、SemanticImageで

#画像にバーチャル背景をつける方法

Swiftで人物の背景を別の画像にかえます。

#簡単に画像合成したい

人物画像の背景を差し替えるには、下記のステップがあるけど、一発で合成したい。

>1、人物をきれいに切り抜く
2、背景画像のサイズと位置を調整する
3、合成する

#SemanticImageならあっという間

[**SemanticImage**](https://github.com/john-rocky/SemanticImage)というライブラリを使えば、1行のコードで差し替えられる。

https://github.com/john-rocky/SemanticImage

[個人開発アプリをグロースさせるためにやっていること

#初めに

– 10月に個人開発した、[セットリー](https://apps.apple.com/us/app/settly-%E3%82%BB%E3%83%83%E3%83%88%E3%83%AA%E3%83%BC/id1585803361)というアプリをリリースした。
– このアプリはポートフォリオというつもりではなく、実際に便利に使ってもらえるはずという仮説のもと開発しており、リリース後の現在ではどうしたら多く使ってもらえるかを試行錯誤している。
– この記事ではそのために現在進行形でどのようなことを行っているかを紹介する。
– 同じ様にリリース直後のアプリのグロースを考える人の参考になれば幸いだし、コメントでアドバイスを頂けたらとても嬉しい。

![Twitter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268579/09058abf-24b3-fcd2-5c8c-53aab334f9c0.png)

– セットリーはセトリ(セットリスト)と呼ばれる、ライブで演奏した曲の曲名一覧をもとに

元記事を表示

【Swift】安全にアンラップするために 〜!(強制アンラップ)とif letとguard letと??(Nil coalescing operator)の使い分け〜

## 1. はじめに
この記事は[レコチョク Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の21日目の記事となります。

株式会社レコチョクで、iOSアプリの開発をしている新卒1年目の後藤です。
米津玄師・スキマスイッチ・BUMP OF CHICKENのみなさんに、日々活力を頂いております。

Swiftにはオプショナル型という`nil`を許容した型があります。これを非オプショナル型の値として取り出すためには、アンラップという作業が必要です。

この記事では

– !(強制アンラップ)
– if let
– guard let
– ??(Nil coalescing operator)

を使ってどのようにアンラップするか、どう使い分けるかを中心にまとめます。

## 2. オプショナル型とは
Swiftでは通常のデータ型(Int型やString型など)には、`nil`を代入することができません。
そこで、オプショナル型を使うと変数に`nil`を代入することができるようになります。

`

元記事を表示

【SwiftUI】NavigationBar に表示された Scrollable な Tab と コンテンツのページングが連動するサンプル実装

## はじめに

SwiftUI での開発できてますか?
私は業務ではまだまだ触れていないです?
なので個人開発のアプリで取り入れてみたり,
このデザインいいなって思った画面を実際に作ってみたり,
的な感じで空き時間見つけて少しずつ触っています。
iOS 14 以上だとある程度ストレスなく(マジ?)開発できるようになりましたね。

今回は,最近サンプル実装したものをネタに書いてみようと思います。
難しい実装はないので気楽に見ていただけたら幸いです。

## 今回作るもの

### 実装イメージ

`NavigationBar` に表示された Tab と
コンテンツのページングが連動するサンプルアプリを作ります。
Tab 部分はスクロール可能になっていて,
コンテンツ部分のページングにより対応する Tab が
画面中央にアニメーションありで移動して表示されます。
GIF アニメだとこんな感じです。

|ページ追加・ページング|Tab 側の選択|
|:–:|:–:|
|![SwipePageChanger_1](https://user-images.githubusercontent

元記事を表示

サイトのメタ情報を教えてくれる Safari Extension (機能拡張) の作り方

![IMG_0055.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48027/283ce576-b5d1-13db-0881-f1b7984124b7.png)

2021年9月にリリースされたiOS 15から、**Safari Extensions**が導入されました。
このアップデートによってiPhoneやiPadのSafariに、よりブラウジングを快適にするための機能拡張を追加できるようになりました。

Safari ExtensionsはHTML, CSS, JavaScriptなどの技術で実装を行うため、Webエンジニアにとって開発がしやすいものとなっています。
これはiOS開発に明るくないWebエンジニアでもApp Storeにアプリケーションを配信するチャンスが広がったと言えるのではないでしょうか。

私自身もSwift, Obj-Cを書いたことはおろか、Xcodeも数える程度しか触れたことがありませんでしたが、iOS 15が配信されてからSafari Extensionを実装し、App

元記事を表示

iPhone で円形度を使ってエゴマと蕎麦の実を識別

Vison Framework を利用することで簡単に円形度の計算ができたのでその紹介です。
サンプルとして[エゴマ](https://www.weblio.jp/content/エゴマ)と蕎麦の実の形状の違いを円形度で比較してみます。
<完成イメージ>
 

円形度が高いと青いパス、低いと赤色のパスで描画しています。
より円に近いエゴマの実が青くなっています。

https://github.com/tamai999/CircleDetection

### 1. 円形度

[円

元記事を表示

【Flutter】AdMob広告のアプリID,ユニットIDをdebug/releaseビルドで切り替える

ちょっと想像してみてください。

Flutterで作ったアプリで儲けたい!そう考え、AdMob広告をつけることにしたあなた。
開発中エミュレータを使用するため、AdMob広告のIDはテスト用のものを設定します。

アプリを頑張って作って、審査も通って、よし、リリースだ!
そんな時ふと気づきます。
「あれ、AdMob広告のID,本番用にしたっけ。。。?」

こんな経験、ありませんか?(私はあります。)

IDを変えるのを忘れなければ済む話ではあるんですが、
リリースにあたっての作業はかなり多く、IDを変える、のような細かいタスクは忘れやすいです。
また、IDを変える作業は結構手間でミスも発生しやすいです。
なので、この作業、自動でできるように検討しました。

本記事では、AdMob広告のアプリID,ユニットIDをdebug/releaseビルドで切り替える方法について解説します。
具体的には以下を解説します。

– アプリID の切り替え
– iOSの場合
– Androidの場合
– ユニットIDの切り替え

設定はちょっと手間ですが、一度やってしまえば、自分で変え

元記事を表示

Swift Concurrencyを使って既存のクロージャベースな非同期処理を残しつつasyncメソッドを追加していきたい話

# はじめに

Swift 5.5からのSwift Concurrencyを使って既存のクロージャベースでコールバックな非同期処理を残しつつasyncメソッドを追加していったらどうなるのか、という試行錯誤みたいなことを書いてみました。

サンプルとしてGitHub APIのリポジトリ検索結果を表示するようにしています。

何か間違いや、もっと良いやり方がある等についてはコメントだったり編集リクエストで是非お願いします :pray:

# 前提

– 今回のコードはViewModelにしてますが、ViewModelを使うということが良いことかどうかは私にはわかりません
– [The Composable Architecture](https://qiita.com/yimajo/items/77c204ab09

元記事を表示

iOS 音声合成SDK(3種類)を聴き比べてみた

# はじめに

iOS音声合成SDKは、すでに色々なアプリで活用されていると思います。
私は残念ながら今まで触ったことはありませんでした。今回、ある事情で[ゆめみ](https://www.yumemi.co.jp)のiOSエンジニア数名で、部活動的に3種類の音声合成SDKを試してみましたので、紹介します。

# 対象としたSDK

– [Apple AVFoundation: Speech Synthesis](https://developer.apple.com/documentation/avfoundation/speech_synthesis)
– [Amazon Polly](https://aws.amazon.com/jp/polly/)
– [Google Cloud Platform: TextToSpeechAPI](https://cloud.google.com/text-to-speech)

他にも候補はあったのですが、メンバーのスケジュールの都合上このあたりが精一杯でした?

# 気になるお値段

費用は気になるところだと思います。
下記のように、A

元記事を表示

classにfinalを付ける基準(Swift)

## はじめに

本記事は [Swift/Kotlin愛好会 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/love_swift_kotlin) の20日目の記事です。

Swiftで `class` に `final` キーワードを付ける基準を考察します。

## 環境

– OS:macOS Big Sur 11.6
– Swift:5.5.2
– Xcode:13.2 (13C90)

## 「finalキーワード」とは?

`class` に `final` キーワードを付けると、そのクラスを継承できなくなります。

以下のように `final` キーワードが付いたクラスを継承しようとすると、 `inheritance from a final class ‘Foo’` のようにビルドエラーが発生します。

“`swift
final class Foo {}

class Bar: Foo // !!!: ビルドエラー
“`

詳細は以下の記事がわかりやすいです。

https://qiita.c

元記事を表示

[Swift] iOS14 から使える UICollectionView の CellRegistration を拡張する

# 初めに

iOS14 から `UICollectionView` に新しいい `API` が 追加されました。

https://developer.apple.com/videos/play/wwdc2020/10026

`Lists in UICollectionView` では `UITableView` ライクな UI の実装を紹介していますが、それに限らず便利なので使ってみました。

今回は実際に使用してみて、**若干不便だった**点もあったので、拡張してみたお話です。

# 実装

## 1. 今までの UICollectionView おける実装の課題

今までの`UICollectionView`を振り返ると

– `Delagate`、`DataSource`、`Layout`をそれぞれ設定
– `register` でセルの登録
– `dequeueReusableCell` で呼び出す

という仕様でした。

これには問題があり、セルの呼び出しが**Stringの直書き**で
– `register`
– `dequeueReusableCell`

元記事を表示

【Swift】ドラッグ&ドロップもどきを作ろう!

##ドラッグ&ドロップとは?
ユーザー視点からは次のような動作をするものである。

1. 移動させたいものを長押ししすると、それが半透明に浮き上がる。
2. 指を画面から離さないまま動かすと、それが指の動きについていく。
3. 指を離すと指を離した場所への移動が完了する。

##今回作るもの
Swiftでドラッグ&ドロップを実装しようと調べると、[この記事](https://qiita.com/hironytic/items/a8ffdf37cfa768d92ced)や[この公式ドキュメント](https://developer.apple.com/documentation/uikit/drag_and_drop/adopting_drag_and_drop_in_a_custom_view)が見つかると思う。これらは大変素晴らしいが、初心者の私には難しかった。しかし、ドラッグ&ドロップが何としても必要。。。そこで思いついたのが今から説明するドラッグ&ドロップもどきである。上で説明したドラッグ&ドロップと比較すると以下のようになる。

1. 移動させたいものをタップする。
2. 同じ

元記事を表示

Firebaseを本番環境と開発環境で切り替えてみた(iOS)

## はじめに
こんにちは!
iOSエンジニアの[けん](https://twitter.com/ken_sasaki2)です。(初めて自己紹介したかも笑)

個人開発でバックエンドにFirebaseを使う場合に、これまでは本番環境でそのまま動作確認などのテストを行なっていました。
しかし、最近は誤ってユーザーデータを削除してしまうお恐れを意識するようになり、開発環境と本番環境を使い分けたいな〜?
と思うようになりました。

今回は、開発するときは開発用Firebaseを、本番では本番用Firebaseを切り替える方法を記事にしました。

## 対象者
– 本番環境のFirebaseを触ることへ抵抗がある方
– Firebaseの接続先を切り替えたい方
– Firestoreへの通信をテストコードから確認したい方

## 開発環境
Swift 5.5
Xcode 13.2

## Firebaseプロジェクトの作成
[Firebase を Apple プロジェクトに追加する](https://firebase.google.com/docs/ios/setup?hl=ja)
を参考に、

元記事を表示

OTHERカテゴリの最新記事