iOS関連のことを調べてみた2022年03月09日

iOS関連のことを調べてみた2022年03月09日

Xcode 13で作ったプロジェクトでbitriseでのCIビルドに対応する

最近、新規のiOSアプリをxcode13を使って開発しました。Xcode 13でbitriseのCIビルドについて設定方法が見つからなかったので、備忘録として展開します。

## 前提
– 以下の説明では、ソースコードはGitHub上で管理されているものとします。ただし、他のバージョン管理システム(Bitbucket, GitLab, etc.)も使用可能です。
– すでにbitriseのアカウントを設定していて、GitHubに対して接続完了している状態とします。

## 1. Xcode上でTests iOSが実行できるよう設定
アプリのTARGETS設定にて、Tests iOS > Target Applicationを一度Noneにしてからアプリ名に指定し直す必要があります。デフォルト設定の場合、`UITargetAppPath should be provided`となり、UIテスト段階でビルドに失敗します。

![Tests iOSを実行できるよう、TARGETSからTarget Applicationを再設定する](https://qiita

元記事を表示

【Swift × RxSwift】 RxSwift を使ってコード実装してみた!

# 目的
RxSwift の使い方をまとめること
単語の意味も詳しくまとめたい
MVVM で開発を行えるようになること

# 流れ
1: SPM(Swift Package Manager)を使って RxSwift をインストール
2: ViewController のみで簡単に実装
3: ViewController と ViewModel で実装
4: TextField に入力された文字を Label として表示する
5: 単語集

# SPM(Swift Package Manager)を使って RxSwift をインストール
[こちらを参考](https://qiita.com/Soccerboy_Hamada/items/037f80c95acc9ae9949e)

# ViewController のみで簡単に実装

“`ViewController.swift
import UIKit
import RxSwift
import RxCocoa

class ViewController: UIViewController {

private let

元記事を表示

イニシャライザーってなんだ。

# はじめに
野良でコードをまねていたりすると、たまに構造体の中に出てくるinit( ) 。
調べてみるとどうやらイニシャライザーというものらしい。
使い方が全く分からない。てかいらなくない?と思ってしまった。
しかし、イニシャライザーを理解できていない = しっかり基礎が身についていないということに気づいてしまいました。。。
そこで今回は、イニシャライザーについて備忘録的にまとめていくことにします。

Swiftは勉強中ですので、間違えていましたら指摘いただけると幸いです。

# 目次
| 項番 | ページ内リンク |
|:—-:|:————-|
| 1 | [イニシャライザーとは](#-1-イニシャライザーとは) |
| 2 | [どのような時に必要なのか](#-2-どのような時に必要なのか) |
| 3 | [selfとは](#-3-selfとは) |
| 4 | [まとめ](#-4-まとめ) |

# 1.イニシャライザーとは
結論から言うとイニシャライザーとは、 **「構造体の初期設定を実行するメソッド」** です。

・・・???
わけわかんねぇよ。お

元記事を表示

iPadOSの審査ではEthernet接続が使われている

先日、iOSアプリを審査に出したところ「iPadOSで起動時に通信エラーで進めない」とリジェクトされました。
これまでこのようなリジェクトを受けたことはなく、特にサーバーも問題なく動作していました。

では、なぜ審査落ちになったのでしょう。審査落ちのメッセージに添付されていたスクリーンショットを確認したところ、通信インジケーターが出ていませんでした。通常、ここにはWi-FiやCellularのアイコンが表示されているはずです。

![20220303194545.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609129/8aeea41b-a695-f12d-607c-3811d3733ff4.png)

一応この点について指摘してみましたが「このデバイスは正しくインターネットに接続している。詳しくは教えられない。」という回答があったのみでした。

## iPhone/iPadに有線LANをつなぐ

Wi-FiやCellularの表示がなくても接続できる状況ってあるか…?いや、そういえばEthernet

元記事を表示

WatchKit 機能調査メモ・リンクまとめ(2022年3月 – iOS15時点)

## はじめに

Apple Watch対応アプリを作ろうと思い、調査したドキュメントへのリンクをまとめました。

Apple Watchは年々本体の性能も上がっているし、それに伴いWatch OSの機能も増え、アプリで出来ることも広がっています。一方で、アプリ作成の情報は初期のWatch OS 時代の情報が多く、最近の情報は少なめ…の印象でした。

今Apple Watchアプリを作成するなら、基本に戻ってAppleのサイトから一次情報を得るのが一番良いと思います。

## WatchKit で実現できること

WatchKitは多機能な上に似ている用語も多く、結構混乱しました。WatchKitで何が出来るのか、整理して用語を覚えておきたいところ。

[WatchKit | Apple Developer Documentation](https://developer.apple.com/documentation/watchkit)

### iOS App with Watch App
* iOSアプリと連動して動作するWatchアプリ(Watchアプリ単体では動作しな

元記事を表示

言語モデルをiOSアプリで使うときに気をつけたこと

機械学習のモデルは日々進化しており、言語モデルもその例の一つです。Webサービスとしてはかなり普及している印象ですが、モバイルアプリでの活用も考えるといくつか注意点があります。今回はその課題と対処法を考えていきます。

# 課題
Webと異なるモバイルアプリ独特の問題点には次のようなことが挙げられます。
– **アプリのサイズ**
– **デバイスごとの処理能力の差**
– **セキュリティ**

## アプリのサイズ
機械学習の肝となるモデルはどうしてもデータサイズが大きくなってしまいます。もちろんモデル以外にもさまざまな機能をアプリ内に用意することを考えると負担の増加は避けられません。またこれらの事情はあくまでも知識のある私たちの目線であり、一般の人からすれば単に「やたらと容量を圧迫するアプリだな」という、使用をためらう原因になる恐れもあります。

## 処理能力の差
モバイル端末にはそれぞれ処理能力に差があります。使われる端末が最新機種なのか、それとも古いものなのかはわかりません。クラッシュや電池消耗はアプリの評価に影響を与えることが多く、ここは注意する点です。

## セキュリ

元記事を表示

Couchbase Lite機能解説:クエリAPI①ステートメント

## はじめに

ここでは、Couchbase Lite 3.0の新機能であるクエリAPIについて解説します。

なお、Couchbase Mobileについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)](https://www.amazon.

元記事を表示

UnityでC++プラグイン・iOSプラグインを使用する

# 概要
UnityでC++を呼び出し、さらにOSの機能を使用するためにSwiftを使用する方法について調べたので備忘録として残します。
また、SwiftからC++のコールバックを呼び出すための方法についても調べました。

# 前提
– macOS Big Sur バージョン11.6.2
– Xcode バージョン13.2.1
– Unity 2019.4.19

# 内容/手順
C++ Static LibraryとiOS Native Pluginを作成し、Unityに組み込んで使用できることを目指します。
UnityでiOS Native Pluginを使用する方法については以下の記事を参考にさせていただきました。
https://qiita.com/fuziki/items/955c2b35514bcfc37969

## 1. SwiftのFrameworkを作成する
Swift Package Managerを使用し、Frameworkを作成する。

①typeにlibrary、nameにSwiftPluginを指定しパッケージを初期化する。
“`
swift pack

元記事を表示

APIKitとPromiseKitでDeepL APIをMix-in(Trait)

# はじめに
賢い翻訳AIのDeepLを使うにあたり、タイプセーフな通信ライブラリAPIKitの存在を知ったので、PromiseKitと一緒に使ってみました。DeepLのAuth Keyをクライアントに持たせるのは危ういので実際にはこの方法は使わないですが、Alamofireから乗り換えようかなと思ってます。

– DeepL API
50万文字/月までの翻訳は無料で使えるステキなry。
– APIKit
タイプセーフなAPIプログラミングを可能としてくれるステキなry。
– PromiseKit
非同期処理を書くときにクロージャーの入れ子から開放してくれるステキなry。

# Decodable準拠
DeepL APIのレスポンスは以下のようなJSON形式なので、JSONDecoderでdecodeできるように定義します。

“`json:DeepLのレスポンス
{
“translations”: [{
“detected_source_language”:”EN”,
“text”:”Hallo, Welt!”
}]
}
“`

“`swift: Decodable

元記事を表示

「The Ultimate Guide to WKWebView」をSwiftUIで実装する #09 – Reading pages the user has visited –

[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)をSwiftUIで実装してみるの、
9つ目になります。

今回は、
「[「The Ultimate Guide to WKWebView」をSwiftUIで実装する #07 – Monitoring page loads -](https://qiita.com/kamimi01/items/33446e032822518cb7f7)」と
「[「The Ultimate Guide to WKWebView」をSwiftUIで実装する #08 – Reading a web page’s title as it changes -](https://qiita.com/kamimi01/items/7e0153ee68474a155b9a)」で作成したものをベースに、
少しiOS15向けに修正して、履歴閲覧機能をつけました。

ちなみに今回はWKWebViewが、

元記事を表示

ARKitでシーンの明るさを推定する

# ARKitでシーンの明るさを推定できます

# 方法

“`swift
func session(_ session: ARSession, didUpdate frame: ARFrame) {
let lightEstimate = frame.lightEstimate
print(lightEstimate)
}
“`

**↑
ambientIntensity=588.18(lumens)
ambientColorTemperature=6132.34(Kelvin)**

【Swift・iOS】綺麗なコードの書き方とは??設計的思考を混ぜながら考えてみた

こんにちは、@shogunzozoです。

これまで書いてきた記事は知識ベースな物でした。目的として、自身の知識の確認&定着という事があります。
また、初心者の方がみても分かりやすいと思って頂く事に重点を置いていたのでベーシック感は否めませんした。

今回は少し踏み込みます。

ネイティブやWEBに関係なく実装時は綺麗なコードを書きたいですよね。

そこで、綺麗なコードを具体的に説明できるかと自問自答しました。
最近、上司の方から腑に落ちるアドバイスを頂けたので皆さんにも共有したいと思い残す事にしました!!

今回はテーマにもある通り、**綺麗なコード**とは何か??について現状の自分の考えを以下に書いていきます。

何か間違えや、不自然な記述等あればご指摘いただけると幸いです!!

## SOLIDの原則

初めに皆さんSOLIDの原則は聞いた事はありますか??

[こちらの記事](https://postd.cc/solid-principles-every-developer-should-know/)に詳しく書いてあるので参考にされても良いかもしれません。

以下簡単に説明して

元記事を表示

iOSアプリ申請手順2022

下記記事を見ながら初めてのiOSアプリ申請をやってみたのでメモ。

https://qiita.com/Labi/items/3b71b8f5ef065904c1de

## ①事前準備
### iOSアプリの作成
iOSアプリを作成する。
ビルドとアイコンは後で説明するので、ビルドとアイコンの設定以外が完成していれば良い。

### アイコンの設定
1024×1024、透過なし画像を用意する。

(例)絶対音感というアプリの例

各サイズのアイコンを、この1024×1024の画像を元に生成する。ここでは下記の自動生成サイトを使う。

https://appicon.co/

ダウンロードされたファイルを解凍すると次のようになっている。

SwiftUI + MVVM + Realm で iOS アプリを開発

## 内容
– SwiftUI を利用したアプリを開発
– アーキテクチャは MVVM を利用
– データの永続化に Realm を使用

## 開発したアプリ
メモアプリ

## 開発環境
### ハードウエア
|項目||
|—|—|
|PC| MacBook Air(M1,2020) メモリ:16GB ストレージ:1TB |
|実機 | iPhoneSE(2nd Generation 128GB iOS 15.3.1) |
|PCと実機を接続する|[USB-C Digital AV Multiportアダプタ](https://www.apple.com/jp/shop/product/MUF82ZA/A/usb-c-digital-av-multiport%E3%82%A2%E3%83%80%E3%83%97

元記事を表示

ARKitでデバイスの位置を取得する

# デバイスの位置って重要
ARはユーザーとARコンテンツのインタラクションなので、ユーザーの視点の位置=デバイスの位置は大事です。

# ARKitでデバイスの位置を取得できます

### デバイス位置取得

“`swift
func session(_ session: ARSession, didUpdate frame: ARFrame) {
let transform = frame.camera.transform.columns.3
let devicePosition = simd_float3(x: transform.x, y: transform.y, z: transform.z)
print(devicePosition)
}
“`

>SIMD3(0.0, 0.0, 0.0)
SIMD3(9.0870006e-10, 4.1317643e-09, -3.1889111e-09)
SIMD3(-2.9535964e-05, -4.5597553e-06, -9.115785e-06)
SIM

元記事を表示

ARCoachingOverlayViewが表示されないときの対処法

# ちゃんと設定しているのに表示されない!

ARKitがWorldTrackingを確立するには、デバイスを動かして、ARKitに視点を与える必要があります。
トラッキングが確立するまで、ユーザに補助メッセージを表示するARCoachingOverlayView。
うまく表示されないケースがありましたので、対処法を書いておきます。

基本的な表示法は以下の記事で大丈夫です。

https:

元記事を表示

SAP BTP SDK for iOS を利用した iOS アプリを開発

### 内容
SAP BTP SDK for iOS を利用して SAP のシステムと連携した iOS アプリを開発

### SAP BTP SDK for iOS とは
– SAP が提供する iOS 向けの SDK
– この SDK は Swift で書かれている
– OData を利用して SAP のデータベースに接続可能
– この SDK を利用すると SAP ID を利用したログインを簡単に実装可能
– デザインは Apple と SAP のガイドラインに準拠
– タイムライン・グラフ等を利用可能

https://developers.sap.com/topics/sap-btp-sdk-for-ios.html

### この SDK を利用するために必要なもの

1. XCode をインストールした Mac PC
1. SAP ID
1. SAP BTP SDK Assistant for iOS (Mac PC向けアプリ 以下: Assistant と表記)
1. iPad 向けアプリ SAP Fiori Mentor (コード集)

https://develop

元記事を表示

in3Dでリアルアバターを作成し、clusterにアップロードすーる

# はじめに
in3Dを使ってリアルアバターを作成し、clusterにアップロードしていくー

# 開発環境
– iPhone 12 Pro
– in3D
– Windows 10 PC
– Unity 2019.4.22f1
– UniVRM 0.96.2
– cluster
– 3脚([DaiGoセット](https://youtu.be/9KuE6BS6Frk))

|Ulanzi MT-24|Ulanzi VL49|koolehaoda|JOBY|こんな感じ|
|:–|:–|:–|:–|:–|
|ObservableObjectをProtocolで差し替える

# 概要
SwiftUIでのアプリ開発では、多くの場合はObservableObjectプロトコルを組み合わせるかと思います。
ObservableObjectプロトコル対応させたclassを作成し、ObservedObjectに設定して使います。

以下はTopContentViewModelをObservableObjectとして作成しています。

“`swift
struct ContentView: View {
@ObservedObject var viewModel: TopContentViewModel

var body: some View {
Button {
viewModel.update()
} label: {
Text(viewModel.name)
}
}
}

@MainActor
class TopContentViewModel: ObservableObject {
@Published var name: Str

元記事を表示

ARKitのフレームを解析するときの注意点

ARKitのCapturedFrameをVisionなどで解析してARインタラクションを作る場合があるが、
この際**ARKitSessionDelegateで取得できるフレームとディスプレイに表示されているフレームの領域が違うことがある。(キャプチャされた一部分を表示していることがある)**

例えば、iPhone11ではディスプレイが 414×896 だが、キャプチャしたフレームサイズは 1440×1920 である。

ディスプレイ内にフレーム縦幅は全て収まっているが、横は中心部しか収まっていない。

![スクリーンショット 2022-03-03 22.48.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9b539c45-4bd2-7228-b4af-1f9f7bf14e6e.png)

ディスプレイに表示されている領域でフレームをクロップするコード。

“`swift
func session(_ session: ARSession, didUpdate frame: AR

元記事を表示

OTHERカテゴリの最新記事