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

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

DJI公式アプリ+αなドローン操作アプリ(iOS)を作った話

## はじめに

DJI 製のドローンを触れる機会があったので、ドローンを操作できるiOS アプリを作ってみました。
ドローン操作アプリってハードル高そう? と思っていたのですが、DJI が用意しているSDK を利用することで案外簡単に作ることができたので、敷居を下げるきっかけになればと思います。

### 書くこと

– 今回使用した DJI 製ドローン (Mavic 2 Enterprise) の基本的な概要
– DJI SDK を使った DJI 公式アプリ +α なアプリ作成の要点
– DJI SDK の辛いポイント
– DJI SDK を使用した写真の扱い方

### 書かないこと

– iOS アプリの基本的な作り方
– Onboard SDK / Payload SDK
– 詳細な実装方法、ソースコード

## 使用したドローン

ここでは、今回使用したドローン「Mavic 2 Enterprise」について説明します。
今回使用したドローンは、株式会社メディア・リース様から無償で貸していただきました。?

### Mavic 2 Enterprise

以下公式サイトより

元記事を表示

iOSのアクセスガイド(Guided Access)下で実行中のアプリが落ちたときの挙動を調べる

## 概要

iOSには、[アクセスガイド(Guided Access)](https://support.apple.com/ja-jp/HT202612)の機能があり、動かせるアプリを1つに制限することができます。

このエントリでは、筆者が「アクセスガイドを有効にしているときにアプリが落ちた場合はどのような挙動になるのか」がふと気になり、実験してみた内容を紹介します。

## ご注意

– ご自身でも実験される場合には、アクセスガイドについて[Appleのサイトの説明](https://support.apple.com/ja-jp/HT202612)をよく理解した上で取り組まれてください。特に、アクセスガイドをパスワード付きで設定した上で、パスワードを忘れてしまうと解除ができなくなります。ご注意下さい。
– アクセスガイドを理解しないで使用すると大変なことになる場合があるので注意してください。
– アクセスガイドを理解しないで使用すると大変なことになる場合があるので注意してください。(大切なことなので2回繰り返しました)

## 前提

本エントリでは、下記を使用しています。

元記事を表示

ARをさわる【コンピュータ・ビジョン*AR】

ARオブジェクトにさわれたらいいと思いませんか?


【ARをさわる】

VisionとRealityKitで指が触れたARオブジェクトを反応させられます。

まずはVisionで指先の位置を取得します。

“`swift
import Vision
import RealityKit

var handPoseRequest = VNDetectHumanHandPoseRequest(completionHandler: handDetectionCompletionHandler)
// 手のポイントを取得してくれるリクエスト
// CompletionHandler内で結果を処理します

func session(_ session: ARSession, didUpdate frame: ARFrame) {

元記事を表示

[Tips]Xcode13.1のSwiftUIのpreviewでCPU使用率が高くなるのをSpotlightを止めて回避する(iOS15)

## このエントリでできること

– タイトル通りです。

## おことわり

– このTipsは、2021年12月時点のXcodeの最新版(13.1)を使用するときを対象としています。iOSシミュレータのバージョンは15.0です。
– この後のXcodeでは必要がなくなっているかもしれません。
– 上記以外のバージョンでは動作を確認していません。

## TL;DR;

筆者の場合は、ターミナルで以下を実行してからXcode再起動でCPU使用率が低くなりました。

“`shell
cd ~/Library/Developer/Xcode/UserData/Previews/Simulator\ Devices/

find . -name com.apple.suggestions.plist -exec plutil -replace SuggestionsAppLibraryEnabled -bool NO {} “;”
“`

## 対象

– Xcode 13.1
– 筆者はM1なMacBook Airで確認しましたが、IntelなMacでもおそらく同様では。

– i

元記事を表示

【SwiftUI】チャットアプリのような動的な高さの TextEditor を実装する

# やりたいこと
チャットアプリで使われるような動的な高さの TextEditor を実装する。

[![Image from Gyazo](https://i.gyazo.com/c71ab0d56b11a8ad0216229594abfb26.gif)](https://gyazo.com/c71ab0d56b11a8ad0216229594abfb26)

# 実装
多少ハッキーな気もしますが、SwiftUI のみで実装しました。

“`swift
struct DynamicHeightTextEditor: View {
@Binding var text: String
let placeholder: String
let maxHeight: CGFloat

var body: some View {
ZStack(alignment: .leading) {
// プレースホルダー
if text.isEmpty {
Text(p

元記事を表示

データの暗号化・復号とSwiftでの実装の仕方について改めて調べてみた

# はじめに

この記事は[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 4日目の記事です。

and factory iOSエンジニアのy-okuderaです!
最近はちょいちょいFlutterを触ったりもしているのですが、今回はiOSの記事を投稿します。

最近、iOSでデータを暗号化/復号する処理をSwiftで実装してみたので、実装時に調べたことなども含めてまとめてみようと思います。

# そもそも暗号化ってなんだろう?
「暗号化」とは、データを何らかの鍵を使わないと意味を成さないような形に変換することです。
暗号化によって変換されたデータを「暗号文」といいます。
鍵を使ってこのプロセスを逆に行い、データを元の形(平文)に戻すことを「復号」といいます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103695/7b93b0b2-1c03-a4ff-345e-

元記事を表示

Crashlyticsとクラッシュ レポートツールを併用する話

この記事は、ゆめみ [Advent Calendar 2021](https://qiita.com/advent-calendar/2021/yumemi) の3日目の記事です。
ちょっと間に合わなかった

# はじめに

Firebase Crashlyticsはよく使われるクラッシュ検知ツールです
別のクラッシュ検知ツールからCrashlyticsへ載せ替えが必要になったのですが
一定期間は元のツールとCrashlyticsを併用して欲しい要件へ対応した際のメモです

## 環境

* OS:macOS Big Sur 11.6.1
* Swift:5.5
* Xcode:13.0 (13A233)

## 現象

クラッシュレポートがCrashlyticsか他ツールのどちらかにしかレポートされない

## 原因

クラッシュ検知ツールは概ねtop-level error handlerを利用して、クラッシュ検知などを行なっていると考えられます
ただtop-levelとあるため、一つしか登録できず複数のクラッシュ検知を有効にした場合に、競合してしまう場合があります

## 対応

元記事を表示

flutterのFriendlyChat(codelabs)をAPI操作にする

flutter勉強のためにcodelabs(https://codelabs.developers.google.com/codelabs/flutter)
をやっていたのですが、こちらで作成するチャットアプリのメッセージが腹持ちだったため、apiで管理することができるようにしました。
サーバー側はbeegoとgormで作成してます。
参考: https://qiita.com/yufuku/items/dff8597e00fc0bdc6864

今回作成したflutterコード: https://github.com/fu-yuta/flutter_friendly_chat/tree/chat_api_access

# 環境
“`shell
$ flutter doctor -v
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
• Flutter version 2.5.3 at /usr/local/flutter
• Upstream re

元記事を表示

クロージャでメモリリークする原因と解決策(Swift)

## はじめに

本記事は [Swift/Kotlin愛好会 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/love_swift_kotlin) の4日目の記事です。
昨日は @n_takehata さんで [【Kotlin初心者向け】KotlinでvarとMutableListを使わなくする方法](https://blog.takehata-engineer.com/entry/not-use-var-and-mutable-list) でした。

Swiftのクロージャでメモリリークする原因と解決策を紹介します。

## 環境

– OS:macOS Big Sur 11.6
– Swift:5.5
– Xcode:13.0 (13A233)

## 現象

どのような場合にクロージャでメモリリークが発生するか紹介します。

URLから画像を取得し、キャッシュした上でcompletion handlerに画像を渡す `ImageCacheManager#cacheImage(imageUrl:complet

元記事を表示

Fat Singletonを救いたい【Swiftでデザインパターン攻略 #2】

## はじめに
今回は「FatSingletonを救いたい」と題して、Singletonパターンについて書きました。
自分は、Singletonパターンを結構使うので、かなり馴染み深いデザインパターンです。

Singletonパターンは便利なのですが、気をつけて使わないと、何でもありコードになってしまうので、そのあたりを記事にできたらと思い書いてみました。

## この記事で学べること
– SwiftのSingletonパターンの書き方
– Singletonのメリット、デメリット
– `FatSingleton`にならないようにするためのリファクタリング **<- Point** - UnitTestに都合の良いSingletonクラスにしておく **<- Point** ## Singletonパターンとは #### 概要 特定のクラスのインスタンスがアプリケーションの中で1つしか生成されないことを保証するデザインパターンのことです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

アイコン作成等のツールリンク集

たまたまどこかで知り、便利じゃん!と思ってブックマークに入れたは良いが、
本当に必要なときに結局どこにしまったか忘れているので、
個人的にたまに使ったりするツール系のリンクを備忘録としてまとめてみました。

# Android/iOS

– AndroidAssetStudio(各種アイコン作成)

https://romannurik.github.io/AndroidAssetStudio/

– MakeAppIcon(アイコン作成)

https://makeappicon.com/

– resizeappicon(アイコン作成)

https://resizeappicon.com/

– (Android用)BundleToolを使用してaabファイルを実機にインストール

https://apuridasuo.hatenablog.com/entry/2019/09/25/144546

# 画像系

– RemoveBackground(透過画像作成)

https://www.remove.bg/

– MethodDraw(SVGエディタ)

https://

元記事を表示

Swifアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる

## はじめに
本稿では、Swiftアプリケーション開発に、NoSQLドキュメント指向モバイルデータベース Couchbase Liteを使うための具体的な方法について解説します。

本稿では、Couchbase Lite 3.0.0ベータ版をKotlinアプリケーションで利用する際の動作確認までを行います。

Couchbaseをモバイルアプリケーションで利用する意義については、以下の記事をご参考ください。

https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2

### 確認環境

– macOS Catalina Version 10.15.7
– Xcode Version 12.4

## 実行手順

### プロジェクト作成・Couchbase Liteインストール

本稿では、Swiftパッケージマネージャーを使用して、Couchbase Liteをセットアップする手順を紹介します(Swiftパッケージマネージャーを使用してCouchbaseLiteSwiftをインストールするにはXcode12 +が必

元記事を表示

Interface Builder 上で maskedCorners を設定

## 背景

iOS11 より、 View の四隅を丸める際に `maskedCorners` を指定することで、一部だけに `cornerRadius` を設定することが可能となりました。

https://qiita.com/hachinobu/items/dc2ff32fa2be6b78ea86

コード上での設定するとなると

“` swift
view.layer.cornerRadius = 16
view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXminYCorner]
“`

となるのですが、レイアウトを Interface Builder で組んでいる場合、このためだけにコード側で処理するのは面倒なため、 Interface Builder 上で `maskedCorners` の設定が完結することを目指します。

## 設定方法

Interface Builder 上の _User Defined Runtime Attributes_ にて、 `layer.maskedCorners` の

元記事を表示

CocoapodsにPrivateのフレームワークを作ってみる

# はじめに
株式会社ピー・アール・オーのアドベントカレンダー3日目です。

今までiOSプロジェクトを開発時、共通で使えるユーティリティクラスを既存のプロジェクトからコピーして、新しいプロジェクト側に流用する形でした。しかし、ユーティリティクラスに修正や機能追加が入った場合、全てのプロジェクトにファイル更新を行う必要があり、効率は良くないです。

そこで、共通のユーティリティークラスをフレームワーク化し、Cocoapods経由で全てのプロジェクト内にインストールすれば今後楽になると思いました。フレームワークのソースコードは公開できない場合もあるため、CocoapodsにPrivateのフレームワークを作成する方法を調べて、作ってみました。

# 事前準備
– Cocoapodsのインストール

“`
sudo gem install cocoapods
“`

# プライベートのSpecリポジトリを作成する
さて、一番最初に用意する必要があるのはSpecリポジトリです。今回はGitHub上にリポジトリを用意します。
※リポジトリ自体はpublicにする必要がないです。ただし、チー

元記事を表示

【キュンです】指ハートを機械学習してエフェクトを出す

Macで機械学習でHand Pose Classification(手のポーズ分類)ができます。
今回はデモとして、CreateMLでポーズ認識モデルを作成して、「指ハート」と「ピースサイン」を認識するスマホアプリを作ってみます。

**【キュンです】**

動画解説:**[Youtube](ttps://www.youtube.com/watch?v=HDAf4kdKgaA)**
[](https://www.youtube.com/watch?v=HDAf4kdKgaA)

元記事を表示

未経験から月収100万円のフリーランスエンジニアになった経緯とコツ

未経験からフリーランスとして稼げるようになったポイントは3つあると思っています。

**[1、時間をつくる](#1時間をつくる)**
**[2、全体像をつかむ](#2全体像をつかむ)**
**[3、発信する](#3発信する)**

です。それぞれ解説していきます。

>【著者近影】

>[](https://www.youtube.com/watch?v=FVf-iKM-eBY)
僕がニートからエンジニアになった経緯は、
**[Youtubeチャンネル「エンジニアと人生」](

元記事を表示

iOSアプリをApp Storeに公開するまでの流れ

# はじめに
こんにちは、HCB Advent Calendar 2021の3日目を担当する、kudokaiです。
今年は個人開発のアプリをApp Storeにリリースしたこともあり、ストアに申請を出す手順を備忘録的にまとめようと思います。
リリースしてから4ヶ月ほど経つので思い出す作業も兼ねて書きます。
ここではApple Developerへの登録手順の説明は省きます。
※記事内に添付しているスクリーンショットは2021/12/2時点のものです。

# 申請までの大まかな流れ
1. Certificate作成
1. App IDs登録
1. Provisioning Profile作成
1. アプリをApp Store Connectに登録
1. Xcodeを用いてアプリをアップロード
1. App Store Connectでアプリの情報を編集
1. スクリーンショット
1. アプリアイコン
1. プロモーション用テキスト
1. 概要
1. キーワード
1. サポートURL
1. ビルド情報
1. 申請

やること多いんですよね…

# Certificate作

元記事を表示

Swift Concurrency で遅延実行

Swift Concurrency な環境で `DispatchQueue` を書きたくないので

## コード
### Before

“`swift
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
print(“遅延処理”)
}
“`

### After

“`swift
Task {
try await Task.sleep(nanoseconds: 1_000_000_000)
print(“遅延処理”)
}
“`

## 参考

https://developer.apple.com/documentation/swift/task/3862701-sleep

元記事を表示

FirebaseCrashlyticsのiOSで「dSYMが不足している」というエラーが発生した場合のトラブルシューティング

# 概要
FirebaseCrashlyticsと連携していて、管理コンソール上で「dSYMが不足している」という文言が表記された場合のトラブルシューティングです。

↓参考画像
![without_dsym.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/e741f8a3-c207-5925-e0d9-8cc418ac35c6.png)

# 結論
XCodeで`/ios/Runner.xcworkspace`を開き、`debug information format` を `DWARF` から `DWARF with dSYM File` に変更します。
![スクリーンショット 2021-12-02 15.18.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/a266f08d-a880-f6a1-6587-e5226a6c31bd.png)

# 参考
### dSYMが必要な理由
Fi

元記事を表示

IDE上でiOSのアプリ起動ができなくなった場合のtips

この場合、IDEの実行ボタンではなくコンソールで`flutter run`すると起動できます。
※こんなエラーが出ます

“`
Launching lib/main.dart on iPhone 11 Pro Max in debug mode…
Warning: CocoaPods is installed but broken. Skipping pod install.
You appear to have CocoaPods installed but it is not working.
This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
This can usually be fixed by re-installing CocoaPods. For more info, see https://github.com/flutter/flutter/issues/

元記事を表示

OTHERカテゴリの最新記事