iOS関連のことを調べてみた

iOS関連のことを調べてみた

【iOS】初心者が公式Sample AppをながらARKitとかMetalを理解する②

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

今回はポイントクラウドのサンプルアプリと、公式を見ながらARKitとかMetalとか、ついでにSwift UIとかをふんわりと理解していこうの②です。

前回の記事

https://qiita.com/keitaMax/items/468afa789368eabe646a

下にあるサンプルアプリで色々学んでいきます。

https://developer.apple.com/documentation/arkit/arkit_in_ios/environmental_analysis/displaying_a_point_cloud_using_scene_depth

# ARDataProviderをみる

前回、点群情報をARDataProviderファイルの`onNewARData()`に渡しているところで終わったので、この続きからみていこうと思います。

“`swift
func onNewARData(arData: ARData) {
lastArData =

元記事を表示

IPAファイルがApp StoreにアップできないAsset validation failed (90771) Missing Info.plist value.の解決法

# IPAファイルがApp Storeにアップできない
Fastlaneなどでビルドからストアにアップロードまで自動化しているのですが、ストアにアップロードする部分でエラーになりました。。。

https://docs.fastlane.tools/getting-started/cross-platform/flutter/

“`console
ERROR: [ContentDelivery.Uploader] Asset validation failed (90771) Missing Info.plist value. The Info.plist key ‘BGTaskSchedulerPermittedIdentifiers’ must contain a list of identifiers used to submit and handle tasks when ‘UIBackgroundModes’ has a value of ‘processing’.
“`

どうやらinfo.plist?の設定の問題か?と思ったが、、
どうやらXcodeの設定を変え

元記事を表示

【Xcode15】@Bindingを使ったViewの#Previewを表示する方法【SwiftUI】

# 問題のコード
@Bindingを使用したViewのプレビューを作成したいとき、#Previewの下で@Stateを付けた変数を定義して渡す必要があることは知られている。

“`swift
#Preview {
@State var hoge = “hoge”
SecondView(foo: hoge)
}
“`

しかし、それだけではこのような警告が表示されてしまう。

::: note warn
Result of ‘SecondView’ initializer is unused
:::

色々調べて試してみたところ、以下の方法で解決しました。

# 【解決】returnを付ける

“`swift
#Preview {
@State var hoge = “hoge”
return SecondView(foo: hoge)
}
“`
SecondViewのイニシャライザが使われていないという警告が出ていたため、このようにreturnを付けることで解決しました。

詳しい内容については私もまだ理解できていないため、ご存知の方がいれば教え

元記事を表示

【Flutter_iOS】TeachableMachineを使って簡単に音声認識アプリを実装する

## はじめに
TeachableMachineでは、ノーコードで音声認識を簡単に実装することができます。今回はそれをアプリに取り込む方法をお伝えします。

## 今回作るもの
ボタンを押すと録音が開始し、完了すると音を分類してその割合を表示するアプリを作りました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984024/7ee943d3-ffe4-bd5b-827d-ccb2302d9522.png)

## 開発環境
– Flutter: 3.14.0
– Dart: 3.2.0
– tflite_audio: 0.3.0

## TeachableMachineで音声を学習させる
TeachableMachineを用いて音声を学習します。学習の仕方は以下の記事で説明しています。ご参照ください。

https://qiita.com/TajimaMiho/items/b865a05bea69bf70e107

## 学習した音声のデータをエクスポートする
以下の手順で`T

元記事を表示

App Store Connectでいきなり出てきた赤字警告「デジタルサービス法について」の対応

## 注意点
警告メッセージから調べた内容をメモとしてまとめたものです。
内容には推測であったり、主観が大きく入っております。

この記事を参考にして、いかなる損害が生じた場合でも、筆者は責任を負いかねます。

## 警告メッセージ
いきなりApp Store Connectにこんな警告が出てきた。

![スクリーンショット 2024-03-15 9.52.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469133/9f14495b-37ef-6360-debf-a73a7cd14dc6.png)

## 内容
ちょっと調べてみると、「欧州連合のデジタルサービス法(DSA)導入に伴い、トレーダーであれば情報を開示するように」ということです。

EU圏内のリリースにあたって、そのEU内のルールには従いましょうというところで、おそらくこのデジタルサービス法に準拠する必要がありそうです。

ただ、よくわからん :innocent: :question: :question: :question:

元記事を表示

【Swift】専門家に処理を依頼するDelegate

# 目次
[1.Delegateとは?](#Delegateとは?)
[2.実例](#2-実例)
[3.おわりに](#3-おわりに)

# 1. Delegateとは?
Swiftを勉強していると、初期段階でつまずくのが`Delegate`。
日本語で言うと`委譲`、`委ねる`です。
近年の、オブジェクト指向プログラミングでは、1クラス1機能に特化したクラス設計を行うことが多いです。いわば***その機能の専門家***クラスを作って、使いたいところで呼べば良いよね?という思想です。
Swiftも同様に、他のクラスへ処理を委譲(専門家に処理を任せる)して実装させることが多いです。
そんな時に便利なのが`Delegate`です。

# 2. 実例
コードを見ていきます。
## コード
~~~swift: MainClass.swift
protocol mainDelegate {
func printIntro()
}

class MainClass {
var delegate: mainDelegate?

func introduce() {

元記事を表示

SwiftのThrowsとthrow

## SwiftのThrowsとthrowとは?

Swiftでエラー処理をするときに、提供されている機能でthrowとThrowがある。

throwキーワードは、エラーをスローするために使用され、Throwsキーワードはメソッド宣言で指定されます。

## エラー処理の作り方

Enumを使用して、Error型の列挙型を作ります。ただの定数ですね。errorのcaseに対して必要なだけ書きます。

“`swift
// throwing errors
enum Errors: Error {
case OutOfStock
}
“`

if文でエラーチェックする処理を書きます。メソッドに、`throws`キーワードをつけると、Enumで定義したエラーを使うことができます。

throwを使うには、do catchの中で使う必要があります。

“`swift
import UIKit

// throwing errors
enum Errors: Error {
case OutOfStock
}

struct Stock {
var totalLa

元記事を表示

Swiftのself keywordとは?

## selfとは?
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/methods/

公式によると…

**self プロパティ**
ある型のすべてのインスタンスは、selfと呼ばれる暗黙のプロパティを持つ。selfプロパティは、インスタンスメソッド内で現在のインスタンスを参照するために使用します。

上の例のincrement()メソッドは、次のように書くことができる:
“`swift
func increment() {
self.count += 1
}
“`

実際には、コードに self を書く必要はあまりありません。明示的に self を書かない場合、Swift は、メソッド内で既知のプロパティまたはメソッド名を使用するときはいつでも、現在のインスタンスのプロパティまたはメソッドを参照していると仮定します。この仮定は、Counterの3つのインスタンスメソッド内で(self.countではなく)countを使用することで実証されています。

この

元記事を表示

UniversalLinksの設定方法とハマりポイント

# ユニバーサルリンクとは
Webサイトのリンクをクリックした時にiOSアプリを起動させるAppleが提供している機能のことです。
SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができます。アプリがインストールされている場合は、アプリでユニバーサルリンクが開きます。インストールされていない場合は、デフォルトのWebブラウザでリンクが開きます。[^1]

# ユニバーサルリンクの仕組み
XcodeのAssociated Domainsで設定したドメインのapple-app-site-association(以下、AASA)が、アプリの初回ダウンロード時・アップデート時にAppleのCDNからダウンロードされることで、AASAに記載されている特定のパスからのみアプリを起動可能になるというものです。
図にすると以下のような感じでしょうか。
![スクリーンショット 2024-03-13 22.51.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425368/4a

元記事を表示

iosで複数のImageViewを拡縮回転して置けるViewを作成をしてみた

## サンプルGif
![RPReplay_Final1709803076.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165363/c280cbac-b1c8-36cf-566e-ce6333b2312f.gif)

## 事前準備など
RxSwiftを使うので追加をしておく
今回はVer6.6.0を使用しました

cocoapods
“`
 pod ‘RxSwift’, ‘6.6.0’
 pod ‘RxCocoa’, ‘6.6.0’
“`

CGPointについてのExの作成
“`swift
extension CGPoint {
// 二点間の距離を返す
func length(from: CGPoint) -> CGFloat {
return sqrt(pow(self.x – from.x, 2.0) + pow(self.y – from.y, 2.0))
}
// 二点を結んだ線分の角度(ラジアン)を返す
func rad

元記事を表示

【知見メモ】NavigationBarのBackButtonのサイズが大きくなってしまうケースの応急処置

# 概要

本記事では、カスタマイズされたNavigationBarを用いて画面遷移した際、BackButtonのサイズが意図せず大きくなってしまう問題の対処法を紹介します。

プロジェクトの構成や具体的な再現方法には触れませんが、同様の問題に直面した際の参考にしていただければ幸いです。

# 背景

私の所属しているプロジェクトでは、不透明な色、透明、および非表示の状態を持つ3種類のNavigationbarがあります。

これらの異なるタイプのNavigationbarが混在すると、画面遷移時にスタイルが崩れやすくなるため、独自にカスタマイズしたNavigationbarを使用しています。

# 問題

特定の条件下で、タイトルの位置がずれるという問題に遭遇しました。
再現手順はアプリに依存するため、エッジケースだと考えられます。

![スクリーンショット 2024-03-13 15.14.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3368292/7dcd3f50-12be-eb3d-2f

元記事を表示

Simulatorの画面を録画するbash

# Simulatorの画面を録画する方法

下記シェルを実行することにより、録画できます。

“`bash
xcrun simctl io booted recordVideo ~/demo.mov
“`

aliasにするとこんな感じ

~/.bashrc or ~/.bash_profile

“`bash
alias simrec=”xcrun simctl io booted recordVideo ~/demo.mov”
“`

元記事を表示

Intune から iOS/iPadOS に ブックマーク (Web クリップ) を展開する!【GIF付き】

先日 Intune の「iOS/iPadOS Web クリップ」機能を使って、Intune Company Portal (`portal.manage.microsoft.com`) ブックマークを展開しました。
ユーザー エクスペリエンスなど確認しながらチューニングすると、なかなか奥深かったです。

もともとは Web-based device enrollment[^1] の一部として記事にしようと思っていましたが、任意構成である Web クリップについて語りたいことが増えてしまったため、独立した記事としてこちらを先にまとめます!

「そういえばブックマーク展開したかったんだよね」というみなさまに刺さればうれしいです。

[^1]: Web-based (Web based) device enrollment:日本語表記は「Web ベースのデバイス登録」。2023年10月にGAされた BYOD iOS/iPadOS 向けの新しいデバイス登録方法 (参考:[Set up web based device enrollment for iOS](https://learn.micr

元記事を表示

【Swift】DIとは?コンストラクタインジェクションについて説明

# 目次
[1.DIとは?](#DIとは?)
[2.コンストラクタインジェクションの実例](#2-コンストラクタインジェクションの実例)
[3.おわりに](#3-おわりに)

# 1. DIとは?
正式名称Dependency Injection、通称DI。日本語で言うと「依存性注入」です。
訳分からないですよね?、、
でも、大丈夫です。本記事で誤解を恐れずに、なるべく簡単に説明します。

DIとは、簡単に言うと「オブジェクトを生成する際に(、もしくは遅れて)、必要なデータセットを渡しますよ〜」と言うことです。
その中でもSwiftのDIでは***コンストラクタインジェクション***というものがあります。
コンストラクタインへクションとは簡単にいうと「オブジェクトを生成する際に、必要なデータセットを渡しますよ〜」です。

# 2. コンストラクタインジェクションの実例
早速コードを見てみます。
## コンストラクタインジェクションを***使用しない***場合
~~~swift: HogeWireframe.swift
protocol Wireframe {
associate

元記事を表示

development.csr 証明書の作成

# はじめに

パソコンを新しく乗り換えて、初めての証明書更新
毎年手順が覚えられないので、メモメモです

# 手順

ローカルPCの証明書を発行する。

![スクリーンショット 2024-03-13 1.06.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/4794427a-382b-e07d-5cc6-742ee712f04a.png)

![スクリーンショット 2024-03-13 1.07.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/f1219b20-18bf-fe6e-1167-9b100ac3f78b.png)

![スクリーンショット 2024-03-13 1.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517291/8d655642-b3e0-64cc-3670-

元記事を表示

開発チーム発足時に最初にやったこと

# はじめに
今年度に自身のキャリアとして初めて,新規モバイルアプリケーションの開発にチームビルディングから参加しました。

開発チーム発足時に最初にやったことを備忘録も兼ねて記載していこうと思います。
# ブランチ戦略の決定
発足時は下記のようなブランチ戦略で開発を始めました。
タスク管理にはJiraを使用していたのでGitHub連携機能を使用し, 開発ブランチについてはチケット番号をそのままブランチ名にして管理していました。
![スクリーンショット 2024-03-10 23.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1550392/7e085709-af9b-7df1-43b1-9c754d267ff8.png)

|ブランチ名 |役割 |
|—|—|
|main |マスターブランチ このブランチは必ず動く |
|feature(CH-XXXX/CH-YYYY) |開発用ブランチ チケット名をそのままブランチ名に |
|release |リリースブランチ cod

元記事を表示

ビルドできないエラーについて

## はじめに
私は最近プログラミングスクールにて学習をスタートした初学者で、学習していく中で疑問に思ったことや苦労したことなどについて記事を書いております。

知識が浅はかですので、間違っている部分があるかもしれません。
あらかじめご了承ください。

## Realmをインストールしたらビルドができなくなった
cocoapodsにてRealmをインストールしてから急に下記のエラーがでて、ビルドができなくなりました。

![スクリーンショット 2024-02-29 20.48.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715605/20815650-ea48-1ed5-f9e5-a96b330c4d99.png)

**Command PhaseScriptExecution failed with a nonzero exit code**をググってみたところ、同じようなエラーが出ている人の記事を見つけることができましたが、エラー解消につながりませんでした。

## 試したけどダメだった

元記事を表示

【Flutter × Vuforia】flutter unity widgetを用いてiOS向けARアプリを作成する

# はじめに
UnityとVuforiaをFlutterに組み込み、iOS向けのARアプリを作成する方法をご紹介します。

本稿は[【Vuforia × Unity】URLから取得した画像をARマーカーとして使う](https://qiita.com/aosounairo_/items/9a4cb9efed81f5738245)で作成したUnityプロジェクトを使用しています。

https://qiita.com/aosounairo_/items/9a4cb9efed81f5738245

# 開発環境
“`
macOS: 14.1.2
iOS: 17.3
Flutter: 3.19.0
Dart: 3.3.0
Unity: 2022.3.15f1
Vuforia: 10.21.3
VS Code: 1.84.2
XCode: 15.1 (15C65)
“`
# 事前準備

– Unityプロジェクトの作成
https://qiita.com/aosounairo_/items/9a4cb9efed81f5738245

>今回使用するUnityプロジェクトは以上のものを使用し

元記事を表示

デザインパターンと図からさくっと理解するRxSwift

## はじめに

こんにちは。
モバイルアプリエンジニア2年目として、iOSアプリやAndroidアプリの開発を行っています。

最近の開発の中で、ReactiveX(以下、Rx)にはじめて出会ったのですが、このRxなかなかとっつきにくく理解するのにかなり苦労していました。そこでObserverパターンの観点から、Rxの登場人物の役割や関係を図で整理してみるとイメージがかなりつかみやすかったので、記事としてまとめてみました。

最近のトレンドを考えると新規のプロジェクトでRxを使用することは少ないかもしれませんが、自分のように何らかの理由でRxを理解する必要が出てきた場合に、この記事が少しでも役に立てば幸いです。

:::note warn
本記事はSwiftを対象としてます。
具体的なライブラリとバージョンは以下のとおりです。

– RxSwift v6.x
– RxCocoa v6.x
:::

## この記事の対象者

– Swiftの基本的な文法をある程度理解している人
– GoFのObserverパターンについてある程度知っている人
– 本記事でも簡単に触れますが、そうで

元記事を表示

【Flutter × Unity】UnityのSceneをFlutterで制御する

FlutterにUnityを組み込むことができる「flutter_unity_widget」
今回はこのプラグインを用いて、UnityのScene切替をFlutterで制御する方法を紹介します。

# はじめに
### 前提条件
– **flutter_unity_widget** プラグインを使用したことがある

https://github.com/juicycleff/flutter-unity-view-widget?tab=readme-ov-file

:::note warn
注意
本稿では導入に際する詳細な手順(UnityプロジェクトのセットアップやRunnerの設定など)については省略をしています。
:::

# 開発環境
“`
macOS: 14.1.2
iOS: 17.3
Dart: 3.3.0
Flutter: 3.19.0
Unity: 2022.3.15f1
Vuforia: 10.21.3
VS Code: 1.84.2
XCode: 15.1 (15C65)
“`

# Unity側の設定
`Assets` > `Scene`に「Scene1」「Sc

元記事を表示

OTHERカテゴリの最新記事