- 1. App Store Connectでいきなり出てきた赤字警告「デジタルサービス法について」の対応
- 2. 【Swift】専門家に処理を依頼するDelegate
- 3. SwiftのThrowsとthrow
- 4. Swiftのself keywordとは?
- 5. UniversalLinksの設定方法とハマりポイント
- 6. iosで複数のImageViewを拡縮回転して置けるViewを作成をしてみた
- 7. 【知見メモ】NavigationBarのBackButtonのサイズが大きくなってしまうケースの応急処置
- 8. Simulatorの画面を録画するbash
- 9. Intune から iOS/iPadOS に ブックマーク (Web クリップ) を展開する!【GIF付き】
- 10. 【Swift】DIとは?コンストラクタインジェクションについて説明
- 11. development.csr 証明書の作成
- 12. 開発チーム発足時に最初にやったこと
- 13. ビルドできないエラーについて
- 14. 【Flutter × Vuforia】flutter unity widgetを用いてiOS向けARアプリを作成する
- 15. デザインパターンと図からさくっと理解するRxSwift
- 16. 【Flutter × Unity】UnityのSceneをFlutterで制御する
- 17. IsarでMap型は取り扱えないので, IsarLinkを使った話
- 18. FlutterFlow GitHub経由でデプロイする際のエラー
- 19. 【iOS】初心者がSwift UI でフェイストラッキングをやってみた
- 20. 【SwiftUI】push遷移先でタブバーを非表示にした後、前画面に戻った時にタブの表示が遅れる問題の解決法
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
IsarでMap型は取り扱えないので, IsarLinkを使った話
# Isarとは
[Isar公式ドキュメント](https://isar.dev/tutorials/quickstart.html)曰く,**最もcoolなFlutterデータベース**とのこと。Flutter のために最適化された高速で軽量なオープンソースのデータベースエンジンであり, 他のモバイルデータベースエンジンと比べてはるかに高速で, あらゆるオブジェクトのデータを保存できます。
執筆時現在, Isarが対応している型は以下です。
– bool
– byte
– short
– int
– float
– double
– DateTime
– String
– List
– List
– List
– List
– List
– List
– List
– List残念ながらMap型には対応しておらず, 複雑なオブジェクトを取り扱う必要がある時に少し困ります。
# IsarLinkとは
`リンクは、例えばコメントの作成者(User)のようなオブジ
FlutterFlow GitHub経由でデプロイする際のエラー
## 初めに
### FlutterFlowについてFlutterFlowは、爆速モバイルアプリ開発を実現する、画期的なノーコードツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
他のノーコードツールと違って書ける、Flutterアプリとして吐き出せる、という点が強みです。
Flutterでできることならなんだってできちゃいます。https://flutterflow.io/
### GitHubを使った開発が可能
FlutterFlowではコードをGitHubのレポジトリにボタンひとつでプッシュする機能が備わっています。また、それだけではなく、GitHub上のブランチを指定すると、そのブランチのコードを使ってデプロイまでしてくれます。
例えば、僕はFlutterFlowではどうしても修正できない箇所を修正・追加するためにこの機能を使っています。(具体的な手順は下の通り)
1. FlutterFlowからGitHubのレポジトリにプッシュ(flutterflowブランチが作成される)
1. プッシュされたコードをmai
【iOS】初心者がSwift UI でフェイストラッキングをやってみた
# はじめに
こんにちは、エンジニアのkeitaMaxです。
以下の記事で紹介されているソースを動かしてみてiOSのFace Trackingを自分なりに理解してみようと思います。
https://seeds-digital.com/switui-ar-face-tracking/
# ソースをそのまま動かしてみる。
まずは前回作成した`example-ar-app`に組み込んでみようと思います。
“`swift:FaceTrackingView
import SwiftUI
import RealityKit
import ARKitstruct FaceTrackingView : View {
var body: some View {
ARFaceTrackingContainer().edgesIgnoringSafeArea(.all)
}
}
struct ARFaceTrackingContainer: UIViewRepresentable {func makeUIView(context: Co
【SwiftUI】push遷移先でタブバーを非表示にした後、前画面に戻った時にタブの表示が遅れる問題の解決法
## 概要
以下のような仕様を実現したいと考え、TabViewとNavigationStackを使用することにしました。
– 複数のタブがある
– タブの中の画面から別画面にpush遷移するが、その際、表示する画面はフルスクリーンで表示したい
– 別のタブでも上記を実現したい
(複数のタブでNavigationStackによる遷移を利用するため、NavigationStackでTabViewをラップすることは出来ない)この仕様に対して、TabViewでNavigationStackをラップし、`.toolbar(, for:)`にhiddenを設定すれば良いと考えていましたが、以下の問題が発生しました。
**遷移元から別画面にpush遷移後、遷移元に戻るとタブバーの表示にラグが発生する**
この問題に対して、以下で考察と解決法の実装を行います。
## 考察
遷移先の画面(SecondView)に遷移後、前画面 (FirstView)に戻ると問題なくタブは表示されるのですが、上述の通りタブバーの表示にはラグがありました。
`.toolbar(, for:)`を特に設定しなければ