iOS関連のことを調べてみた2020年08月07日

iOS関連のことを調べてみた2020年08月07日

ARKitでDepthDataの深度情報を取得する方法

## はじめに
この記事ではARKitを使ってフロントカメラからDepthDataを取得し、1pixelずつの深度情報を取得する方法を備忘録的にまとめます。
もしかしたらフロントカメラ以外にも使えるかもと思い、タイトルは少し広い内容をカバーできるようにしました。

いろんな事情でiPhone11で顔認識をした時に深度情報がfloatで欲しいと思い、いろいろ調べたんですが、一つにまとまった記事が存在しなかったので、深夜テンションで記事を作ろうと思いました。
(筆者はSwiftを勉強しはじめて数ヶ月のド素人なので、コードや文章の書き方が拙いかもしれませんがお許しください…)
(改善点や技術的補足がある人は大歓迎です)

## 対象となる人
– ARKitで深度情報が欲しくなった人
– (TrueDepth搭載のiPhoneのフロントカメラを使用する人)
– ポインタという概念がちょこっとだけ分かる人

## 筆者の環境
– Xcode11.6
– Swift
– iPhone11
– iOS13.5

## 要約
– CVPixelBufferをコネコネすればできる
– UnsafeM

元記事を表示

iOS シミュレータで動画を収録して gif に自動で変換するスクリプトを書いた

– 知人に作ったアプリを見せたり
– SNS に投稿したり
– Pull Request のメッセージで動作を説明したり

するときに iOS シミュレータの動画を収録 → gif に変換ということを頻繁に行いませんか?
僕もそうで、特に Github の Pull Request で実装した様子を手軽に見せる手段として gif 画像を使います。

でも、毎回 収録 → gif に変換の手順を踏むのが面倒になったので適当にシェルスクリプトを書いてみました。

## 要求

– iOS シミュレータの動画を収録して gif として output するのを 1 コマンドで解決する
– ファイル名はなんでもいい
– だけどできれば収録した順に並んでると嬉しい

## 設計

### iOS シミュレータの動画を収録して gif として output するのを 1 コマンドで解決する
これに対してはシェルスクリプトを作るということで解決します。

### ファイル名はなんでもいい
ファイル名に制限は設けません。

### だけどできれば収録した順に並んでると嬉しい
最初はランダムな文字列.gi

元記事を表示

Fastlane Match利用中にProvisioning ProfileをApple Developer Program上で誤って削除しちゃったら

Apple Developer Program上で複数のApp IDを管理してると、期限切れや利用不可の証明書とProvisioning Profileを一掃してくれるコマンド`fastlane match nuke`が使えなくてハマったのでメモです

## 前提
– Fastlane Matchで証明書/Provisioning Profileを管理
– 1つのApple Developerアカウントで複数のアプリ(App ID)を管理

## 現象

Fastlane Matchで生成されたProvisioning Profileを[Apple Developer Program](https://developer.apple.com/account/resources/profiles/list)で直接削除したら、

“`
$ fastlane match development
“`

コマンドを実行したときに以下のエラーが出てきた
> [15:50:22]: Provisioning profile ‘XXXXX’ is not available on the Dev

元記事を表示

Create MLで自動車部品の不良品検知

#Create MLで100%検知
目視できるレベルの金属部品の表面異常検知であれば、 **Create MLで十分な高精度を達成できます。**

Pythonに潜って専用モデルを探したり、カスタムモデルをつくる必要はありません。

**我々が自動車部品メーカーとの技術研究で100%の検知結果を出した**Create MLでの画像分類タスクの取り組みについて紹介します。

###Create MLは表面異常検知の現場で使えるのか

自動車に用いられている4cm程度の細長い部品の表面異常検知をおこないました。
**傷の大きさは1〜4mm程度。**
![良品.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/07d51e2b-1188-a655-031b-f52433af1686.png) ![不良品.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/bc475fd4-0ec6-397f-19da-c8b

元記事を表示

Dictionary<Key, Value>型

## Dictionary<Key, Value>型

Dictionary<Key, Value>型は、
**キー**と**値**を`:`で分けて、`[]`で囲みます。

“`ruby
var screenSizesInInches: Dictionary
= [“iPhone 7”: 4.7, “iPhone 7 Plus”: 5.2, “iPad Pro”: 12.9]
“`
“`ruby
var screenSizesInInches: Dictionary
= [“キー”: 値, “キー”: 値, “キー”: 値]
“`
スマホの、インチ(Inchi)数?

###連想配列

-`Dictionary`は、**連想配列**らしいです。

>『連想配列』。 辞書(英語: dictionary)、ハッシュ(英語: hash)、マップ(英語: map)とも呼ばれる。

.
>フツーの配列は、**インデックス**(=始点からのズレ。) で、値を特定。
連想配列では、**キー**によって、値を特

元記事を表示

Create MLで自動車部品の不良品検知

#Create MLで100%検知
目視できるレベルの金属部品の表面異常検知であれば、 **Create MLで十分な高精度を達成できます。**

Pythonに潜って専用モデルを探したり、カスタムモデルをつくる必要はありません。

**我々が自動車部品メーカーとの技術研究で100%の検知結果を出した**Create MLでの画像分類タスクの取り組みについて紹介します。

###Create MLは表面異常検知の現場で使えるのか

自動車に用いられている4cm程度の細長い部品の表面異常検知をおこないました。
**傷の大きさは1〜4mm程度。**
![良品.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/07d51e2b-1188-a655-031b-f52433af1686.png) ![不良品.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/bc475fd4-0ec6-397f-19da-c8b

元記事を表示

[swift5]エラーUse of unresolved identifier ‘FirebaseApp’の対処法

## エラー内容
FacebookログインをFirebaseを用いて実装しようと思い、コードを書いている際に発生したエラーです。記述コードは以下の通り。

“`AppDelegate.swift
import UIKit
import Firebase //このコードを記述

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.

FirebaseApp.configure() //このコードを記述

元記事を表示

iOS14での写真アプリへのアクセスレベルについて

# はじめに
*※ 本記事はWWDC2020で発表された内容を元に作成しております。*
*※ 記事中の画像はWWDC2020での発表のものを引用させていただいております。*

iOS14から写真アプリへのアクセス方法に更新があるため、今回調査してまとめてみました。

# 写真アプリへのアクセスレベルの指定
iOS14から写真アプリへの認証を確認する際にはアクセスレベルを指定することが必要になります。
これには新たに定義された列挙型の`PHAccessLevel`を用います。
これによりアクセスレベルを**追加のみ**`.addOnly`、もしくは**読み込み/書き込み**`.readWrite`に指定することができるようになりました。

スクリーンショット 2020-08-05 22.36.12.png

# 見た

元記事を表示

Stack Viewは便利ですね?

## Stack Viewは便利ですね。

Swiftを始めて、3日目。
Stackについて学んだので、簡単にまとめ。

-[**【Swift】超便利StackViewの実践的使い方!まだAutoLayoutで消耗してるの?**]
(https://qiita.com/kinopontas/items/d08f84dbb711c5acbe28)
-[**遅ればせながら UIStackView 入門**]
(https://qiita.com/tasanobu/items/6908c956b758547ccf6c)

と言っても、他サイト引用です。?

###-Stack
「レイアウトの修正が大変…」という`Auto Layout`の欠点を解決してくれます。
 最低限の`AutoLayout`の設定で済む、良心的な機能です。

## 補足

右下に5個並んでるボタンについて、ちょっと補足。

スクリーンショット 2020-08-06 8.24.29.pngiOSデバイスからAzure上の仮想ネットワークにP2S接続する

# 背景

iPhoneやiPadから、Azure上の仮想ネットワークにP2S接続(ポイント対サイト接続)したくなったのだが、Microsoftのドキュメントは要点が掴みづらくてわかりにくいし(機械翻訳の影響か?)、Google先生に聞いてもドンピシャな回答が見つけられなかったので、その手順を記す。

# 調査

## そもそも、iOSデバイスでAzureにP2S接続できるのか?

[公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/point-to-site-about)には、

> ポイント対サイト VPN では、次のいずれかのプロトコルを使用できます。
>
> * SSL/TLS ベースの VPN プロトコルである OpenVPN® プロトコル。 ほとんどのファイアウォールは、TLS で使用されるアウトバウンド TCP ポート 443 を開いているため、TLS VPN ソリューションはファイアウォールを通過できます。 OpenVPN は、Android、iOS (バージョン 11.0 以上)、Windows

元記事を表示

String.split(separator:) で Xcode Previews がコケる

SwiftUIで画面を実装中していたらXcode Previewsで表示していたプレビューが突然できなくなった。

Diagnosticsを開くとこんなエラー

“`
Compiling failed: global function ‘__designTimeString(_:fallback:)’ requires that ‘String.Element’ (aka ‘Character’) conform to ‘ExpressibleByStringLiteral’
“`

エラーの行も表示されるので当該箇所を見たら大体こんな感じ

“`swift
let str = ~
let array = str.split(separator: “\n”) // ← ここでエラー発生
.map(String.init)
“`

どうやら`”\n”`(String Literal)がXcode Previews上だと`Character`として認識されないらしい(なぜ?)

# 解決策

Characterであることを明示すれば良い。

“`swift
let arr

元記事を表示

Udemyのswiftコース(英語のやつ)でiOSアプリ開発を学ぶ その3

勉強するコースはこれです:point_down:
https://www.udemy.com/course/ios-13-app-development-bootcamp/

##進捗
セクション4の途中まで終了(全部で36セクション)
Xcodeの使い方など開発環境について実際の操作を学び、アプリをつくった:grinning:

最初はただ表示するだけのアプリ。二つ目でタップしてサイコロの目を出すアプリを開発する(ようだ)。

##感想
前回の記事([Udemyのswiftコース(英語のやつ)でiOSアプリ開発を学ぶ その2](https://qiita.com/KitaDaro/items/197ee6f32611b5acb886))から2週間以上も間があいてしまった…
提出期限とかないしコース視聴いつでもできるし、Angela(先生)の優しさに甘えてしまった(オンラインコースあるある)
**やはり絶対にこの曜日のこの時間にやるとか決まり事をつくって習慣化していかないとオンラインコースは続かないのだ(戒め)**

何はともあれアプリをつくって自分のiPhoneで表示させるのは実に気

元記事を表示

iOS のライブラリを自作して Carthage と CocoaPods で公開する。CI で自動化まで。

こんにちは。iOS エンジニアです。

というふうに名乗っていながら、iOS 向けのライブラリを作ったことがなかったので、やばいと思って作ってみました。
作成中の一連の流れを記事に残したいと思います。
(具体的なコードの書き方とかではないです。)

# 成果物

https://github.com/yuki0n0/WaveSlider/
以下解説するものは、こちらのライブラリを作成したときの情報に基づいています。

中身自体は大したものではないんですが、
ライブラリ公開の経験をしたかったという動機なのでお手柔らかに、、、
よかったら GitHub で **Star ★** つけてね。

# 作成

## 1. プロジェクト作成

Framework を選択して、次の画面で選択して、プロジェクト作る。
プロジェクト作成スクリーンショット複数のボタンを、1つの変数でまとめる。

※**オブジェクト**
(Label とか Buttonとか Text Field とかもオブジェクト。)
(Swiftは、オブジェクト指向言語。)
[**「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典**](https://wa3.i-3-i.info/word1119.html)

##複数のオブジェクトを、1つの変数でまとめる。
こんな感じで、**複数のボタンを並べたい**とき、
スクリーンショット 2020-08-05 21.27.58.png

`var Button1`, `var Button2`, `var Button3`, `var Button4`,でも良いのですが、
(“`@IBOutlet weak var Button1: UIButton!“` ✖️ 4

元記事を表示

ボタンの角を丸くする?

## ボタンの角を丸くする?

Buttonを、中流の河原の石にしたいと思います。
侵食作用を及ぼすコードは、以下の通りです。

スクリーンショット 2020-08-05 21.30.40.png

“`ruby
@IBOutlet weak var startButton: UIButton!

override func viewDidLoad() {
super.viewDidLoad()

startButton.layer.cornerRadius = 10.0<-------------- } ``` -`Outlet`で接続したのち、 `startButton.layer.cornerRadius = 10.0`を記述します。(10は、任意

元記事を表示

[swift5]エラーNo such module ‘ライブラリ名’

## エラー状況
画像のようにXcodeでビルドを行うと`No such module ‘ライブラリ名’`というエラーが発生する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/bc049112-f057-ea15-74c1-0b4225ed76f7.png)

## 対応したこと

①Xcodeの再起動
②Macの再起動
③podfileの確認と`pod install`を再度実行

①〜③全て不発…
検索を行い色々と模索していると解決しそうな記事に遭遇!
https://qiita.com/doge_kun55/items/26ac2fa2031ddbeee879

## 解決方法
Xcodeのツールバーにある`Product/Scheme/ManageSchemes/`を選択。
すると以下のようにページが開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6433

元記事を表示

Buildしたけど真っ黒、アルアル原因まとめ

# Buildしたけど真っ黒、アルアル原因まとめ

2点。

### 1, NSUnknownKeyException

お笑い養成所(NSC)ではなく、NS Unknown〜(※)です。

`ViewController`と`Main StoryBoard`を繋げるとき、 やっぱ繋げるのやめようってなって コードを削除しても、**繋がりは切れません**。

**不要な接続が繋がったままだから、エラーが起きるみたい。**
[**NSUnknownKeyExceptionが出た時の回避方法**]
(http://ios.steppers-hi.net/?eid=24)

![20130925_1583616.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683795/b33ba891-285f-142a-f9f1-75d090dfeb25.png)

ユーティリティーエリアの、**Show the Connection Inspector**からも同じ操作できます。
(メニューバーの、一番右のボタン)

元記事を表示

manacaでiOSアプリをカスタムビルドする流れをシーケンス図に起こした

monacaを使って、iOSアプリをカスタムビルド(自分の端末でのみ動くアプリのビルド)を行ったのですが、
monaca側でやれることと、Apple developer Programでやれる事の区切りや、CSR・証明書・プロファイル・BundleIdなどのよくわからない登場ファイルたちがどこで作られどう使われるのかが、全くわからなくなるので、とりあえずシーケンス図にして流れを書き起こしました。
完全自分のためです。

シーケンス図は、manacaでの開発が終わり、Appleに開発者の登録も行っている状態から始まります。
なぜなら、私がその状態でこれを作ろうと思ったからです。

![iosAuth.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98758/3225b892-ece4-e0ce-53b3-f9b850966771.png)

以上です。
自分的には役に立ったので、(一度やり直した)きっと誰かの役に立つと信じてます。
信じるって大事。

一応このUMLはplantUMLを使ったのでソース載

元記事を表示

サードパーティ製アプリをiOS標準Webブラウザとして登録するための条件

iOS14では、デフォルトで起動するWebブラウザを「Safari」以外のアプリにユーザー自身が設定できる様になります。
今回「サードパーティ製アプリが標準ブラウザになる為の要件」が公開されたので簡単にまとめてみました。

## 概要

標準ブラウザになる為の各要件をクリアする

Appleへメール(default-browser-requests@apple.com)で申請

という流れになる様です。

承認後は、Entitlementsに「com.apple.developer.web-browser」キーを追加する形に?

## 標準ブラウザになったら出来ること

> Be an option for the user to choose as their default browser.

– 「標準で開くブラウザ」としてユーザが選択出来る様になる

> Load pages from all domains with full script access.

– フルスクリプトアクセスですべてのドメインからページをロード可能に。

> Use Service Worke

元記事を表示

MarketingCloudSDK iOSでリッチPush通知を送信する

#環境
・xcode Version 11.3.1 (11C504)
・swift Version 5.1.3
・MarketingCloudSDK iOS (v7.2.1)
・Mac OS 10.14.6(Mojave)
#準備
[MarketingCloudSDK iOSでシンプルなpush通知を送信する](https://qiita.com/techman/items/a136c903ea74f065b92c)
の続きとなります。
#リッチPushとは
push通知を開くと遷移したいurlに飛べたり、push通知に画像、動画などを表示することができる。
#リッチPush通知の実装
1.opendirect機能(ディープリンクとも呼ばれる)

“`AppDelegate.swift
MarketingCloudSDK.sharedInstance().sfmc_setURLHandlingDelegate(self)
“`
上記コードをSDKの初期設定記述の後に、AppDelegate.swift内に記述する。
その後、
`MarketingCloudSDKURLHandlin

元記事を表示

OTHERカテゴリの最新記事