iOS関連のことを調べてみた2023年10月16日

iOS関連のことを調べてみた2023年10月16日

ゲーム開発において案外大事な「規約類」のお話

こんにちは!
株式会社OGIXのプロジェクトマネージャのH.Yです。(OGIXについてはページ最下部で紹介しています!)

ソーシャルゲーム開発において注目されがちなのはインゲームの実装であったり、課金処理であったりそういったところにフォーカスが向きがちですが、「規約類」の表示は必ず必要です。
どんなに簡素なゲームであったとしても、個人情報の収集が発生する場合には「**プライバシーポリシー**」の実装が必要ですし、有償通貨を実装する場合には「**資金決済法に基づく表示**」が必要です。

こういった規約類の実装方針がまとまった記事を探してもなかったので、これはまとめたら皆さんに見てもらえるだろう、そして弊社の宣伝にもなるだろう!といった下心からまとめようと決意した次第です。
深夜テンションで始めた企画なので、少し雑多なまとめになっているのはご容赦ください。

## まずゲーム開発に必要な規約類を知ろう
まず概観を知ることが大切です。一般的に必要と言われている規約類は以下の規約です。
– 利用規約
– プライバシーポリシー
– アプリの権利表記
– OSS等権利表記
– 特定商取引法に関

元記事を表示

【Swift】CIFilterで画像に色をオーバーレイブレンドする

# はじめに
CIFilter関係の記事4日目です

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-10-15 at 22.35.08.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9c509652-b1c2-4683-5c33-2c50a1bb9010.gif)

# 実装
“`swift
import SwiftUI

struct ToneCurveView: View {
private let image = UIImage(named: “sample”)!

@State private var uiImage: UIImage?

var body: some View {
ScrollView {
VStack {
if let uiImage {
Image(ui

元記事を表示

SwiftUiでViewの3D回転してみる

今回はViewを3D回転させてみようと思います。
あまり使い所が無さそうですが、頭の片隅にでも入れておけば、何かの役に立つかもしれないですね。

【Xcode】 15.0
【Swift】 5
【iOS】 17

“`Rotation3dSampleView.swift
struct Rotation3dSampleView: View {
var body: some View {
Text(“Hello, World!”)
.rotation3DEffect(.degrees(45), axis: (x: 0.0, y: 1.0, z: 0.0)
)
}
}
“`

`rotation3DEffect`を使用すると、実装できます。
第一引数の`Angle`に角度を設定して、`axis`はどの方向かを設定するみたいです。
実行結果はこのようになりました。

![スクリーンショット 2023-10-15 17.10.23.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

FirebaseUIでアプリにログイン 〜UIkit メールリンク認証・GoogleSignIn~

# Firebase UIとは
FirebaseUIを用いることで簡単にメールリンク、Google、Appleアカウント、Facebook等でアプリにログインすることができるFirebase Authentication SDK の上に構築されるライブラリです。
今回は下記のようなメールリンク認証とGoogleSignInの実装方法について説明します。
![0e6f3391b1e32e2619f3644f4560fc68.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090887/567c7185-d9b5-4572-0227-8710547b88c9.png)

参考文献

https://firebase.google.com/docs/auth/ios/firebaseui?hl=ja

# Firebase SPMの追加
●下記の2つのSPMを追加
![c3a0629eab67450618dc84a887f8ce65 (1).png](https://qiita-image-store.s3

元記事を表示

iPhone (iOS) に Linux(Shell) 環境を構築してPyenv, Pythonを実行

# はじめに

突如スマホでShellを使いたくなったことはありませんか?
そんな時は `iSH` というアプリをインストールすることによってShell、Linuxの実行環境を利用することができます!

# 概要

`iSH` というアプリは、Alpine仮想環境を利用することができるので、その上で、Pyenv環境を構築してPythonをインストールする。
注意点として、Pythonのビルドに数時間かかるので、時間のある時に作業することをお勧めします。

# 1. App

[iSH](https://apps.apple.com/jp/app/ish-shell/id1436902243) をインストールします。

## 操作の対応

・`Tab` キーは「右矢印に縦線のアイコン」から入力できます
・`Ctrl` を入力するには、「`^`」のアイコンを押し、対象のキーを押すことで実行できます。
・`Esc` を入力するには、「円に左上矢印のアイコン」をタップすると入力できます。
・矢印入力は、「上下左右の矢印のアイコン」をタップたまま、操作したい方向に移動して離すと入力できます。

元記事を表示

【Swift】CIFilterで画像の色相を調整する

# はじめに
CIFIlter関係の記事3日目です
今回は色相を調整してみます。

https://qiita.com/SNQ-2001/items/bc2206232e551f5b62d4

https://qiita.com/SNQ-2001/items/044f5d9e592dddccd9b2

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-10-14 at 20.49.49.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7e61a089-1361-e4bb-4199-01a8d81988e9.gif)

# 実装
“`swift
import SwiftUI

struct ToneCurveView: View {
private let image = UIImage(named: “sample”)!

@State private var uiImage: UIImage?

元記事を表示

【Swift】CIFilterで画像のトーンカーブを調整する

# はじめに
昨日のノイズに続き、今回はトーンカーブです。

https://qiita.com/SNQ-2001/items/bc2206232e551f5b62d4

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-10-13 at 21.41.03.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a26ca27c-00fb-e08d-222a-b7135a24a40d.gif)

# 実装
“`swift
import SwiftUI

struct ToneCurveView: View {
private let image = UIImage(named: “sample”)!

@State private var uiImage: UIImage?

@State private var inputPoint0x: CGFloat = 0.0
@State

元記事を表示

【SwiftUI】ScrollViewの高さを動的に変更する方法

## はじめに
記事をお読み頂きありがとうございます!Reeenと申します。
私は現在、株式会社ゆめみで内定者アルバイトとしてiOSアプリの開発を行っています。
そこでScrollViewの縦方向の無限拡張で少し詰まり、この方法を発見したのでアウトプットをしようと思いました。
少しでも参考になれば幸いです?‍♂️

## 動作環境
Swift: 5.7.2
Xcode: 14.2
iOS: 15.0+

## 内容
まず前提としてSwiftUIのScrollViewでは以下のようなコードを書いても内容に合わせて自動で高さが調節されることはなく、無限拡張(.infinityのような挙動)になってしまいます。

“`swift
ScrollView {
Rectangle()
.fill(.purple)
.frame(width: 300, height: 300)
}
.border(.black, width: 5)
“`

【Swift】CIFilterで画像にノイズを合成する

# はじめに
最近、画像加工系のアプリを作っているのでCIFilterを使うことが多いです。
CIFilterを使ったアウトプットをしていこうと思います。
今回は画像にノイズを追加するコードをやってみます。

# 元画像
![icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/287cebbc-c32c-defe-fa7a-bc047bd34519.png)

# 生成されるノイズ画像
![outputImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/49e1bfcb-b07a-4b4c-fece-86a84da14c18.png)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var displayImage: UIImage?

private let ima

元記事を表示

【初心者】FlutterでiOSアプリ画面を見ながら開発する方法

いざFlutterでiOSアプリを開発しようと重い腰を上げたら、環境構築からつまずいた、、

そんな人向けの備忘録的な記事です。

## 困ったこと

– ChromeやmacOSのUIなら起動できるが、iOSを見ながら開発が上手くできない
– `open -a Simulator` でできることもあれば、できないこともある。なぞだ

## 解決方法

1. `open -a Simulator` でXcodeのSimulatorをまず開く
2. 上のメニューから「File > Open Simulator > iPhone 14 (好きなデバイス)」を選択
3. Simulatorを開いたまま、VSCodeで「mytest (createしたディレクトリ) > lib > main.dart」を開き、デバッグの拡張機能を開く
4. デバッグで「Flutter (iPhone 14) 」を選択

![Untitled (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/899381/a020703

元記事を表示

アプリがバックグラウンドになるとcopyNextSampleBufferがnilを返す話

iOSで動画をループで回して画像処理を行う際にcopyNextSampleBufferを使ったことがあると思います。

このcopyNextSampleBufferが曲者でアプリがバックグラウンドに移行するとnilを返します。

[copyNextSampleBuffer](https://developer.apple.com/documentation/avfoundation/avassetreaderoutput/1385732-copynextsamplebuffer)のドキュメントによると、
copyNextSampleBufferはエラーがある場合にnilを返すので[AVAssetReaderのstatus](https://developer.apple.com/documentation/avfoundation/avassetreader/status)を見てねとのことです。
実際のコードでは`reader.status = .failed`を確認するだけで十分動作することが確認できています。
そんなわけで今回は動画をresumeする処理を書いてみました。

##

元記事を表示

【swiftUI】iOSアプリ公開の手順

## はじめに

近いうちにiOSアプリケーションを公開したいと思っているので、参考までに公開するまでの手順を調べてみました!

iOSアプリをApp Storeに申請する際に必要な手続きや準備するべき項目をまとめています。
一般的な手順は以下のとおりですが、最新のガイドラインや要件はAppleの公式サイトで確認した方が確実だと思います。

#### 手順

1. **Apple Developer Programへの登録**
2. **App IDの作成**
3. **プロビジョニングプロファイルの作成**
4. **証明書の作成**
5. **アプリケーションでの設定**
6. **バージョンとビルド番号の設定**
7. **App Store Connectへのアプリの追加**
8. **アプリ情報の入力**
9. **スクリーンショットのアップロード**
10. **プレビュー画像のアップロード**
11. **レビューの申請**
12. **申請の確認と送信**
13. **審査待ちと通知**

これらの手順を順に進めていくことで、iOSアプリをApp Storeに申請する準

元記事を表示

【Xcode】シュミレーターのアニメーションをゆっくり動かす

# はじめに
Twitterを見ていたらシュミレーターをゆっくり動かすという方法を見つけたのでやってみました

https://x.com/emildzwonek/status/1696068726934716898

# やりかた
① 「Debug」を選択します
② 「Slow Animations」を選択します
![スクリーンショット 2023-10-11 22.39.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/57670e4a-43aa-d5c0-64fa-5b825466c5fa.png)

# こうなる
![Simulator Screen Recording – iPhone 15 – 2023-10-11 at 22.44.03.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b184c740-43e0-d303-4d4f-1b844aed87ab.gif)

# お

元記事を表示

Datadog RUM で iOSアプリをUXモニタリングする

## はじめに
本記事では、DatadogのRUMの機能を、Xcodeで作成したiOSアプリに仕込む方法について解説します。

## Datadogの設定
Datadogの**UX Monitoring**メニューから**Real User Monitoring**を選択します。
![Screenshot 2023-10-11 at 14.39.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/cc454cb6-d042-be00-4b63-2b458c9c3898.png)

New Applicationをクリックします。
![Screenshot 2023-10-11 at 14.42.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/a9f7798b-8fbf-9dda-0ed0-c210f975f48e.png)

Application typeは「iOS」を選択します。Appli

元記事を表示

【SwiftUI】PhotosPickerで画像を選択した後、正方形に切り取りできるようにする

# はじめに
画像を選択した後に画像を切り取りたいことがあると思います。
`allowsEditing`というフラグをtrueにすることで選択した後に切り取りの画面に遷移させることができます。

# 実装
“`swift
import SwiftUI

public struct PhotoPickerView: UIViewControllerRepresentable {
@Environment(\.dismiss) private var dismiss: DismissAction

@Binding private var image: UIImage?

public init(image: Binding) {
self._image = image
}

public func makeCoordinator() -> Coordinator {
Coordinator(self)
}

public func makeUIViewController(con

元記事を表示

Swiftでバケツツールの塗りつぶし

# Swiftでバケツツールの塗りつぶし

ペイントアプリのバケツツールのように、閉じた領域を指定した色で塗りつぶす操作を、[Accelerate frameworkのflood fills](https://developer.apple.com/documentation/accelerate/vimage/vimage_operations/applying_a_flood_fill_to_an_image/applying_flood_fills_to_an_image?changes=___11&language=objc)を用いて簡単に実現できます

![Frame 293.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214313/3970d20a-1641-33db-6cb3-8c1c0b43de2f.png)

# 実装
CGImageをvImageに変換し、vImageFloodFill_ARGB8888を使って、塗りつぶしを始める点を含む閉じた領域を指定した色で塗りつぶします

元記事を表示

[iOS17]Visionで写真の前景をトリミング

# Visionで画像の前景をトリミングする
iOS17からVisionに画像の前景をトリミングするAPIが追加されました
写真アプリで長押しするとハイライトされるアレです!
写真アプリにはiOS16から入っていたのですが、iOS17からVisionにAPIが入ったので、アプリにこの機能を簡単に組み込めるようになりました

![Frame 288.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214313/219b9f77-2888-c405-6347-1fdda4844595.png)

WWDC23のセッション↓

https://developer.apple.com/videos/play/wwdc2023/10176/?time=165

# 前景を全て含むマスク画像を作成する
これだけのコードで前景のマスク画像を作成できます

“`swift
func makeMask(inputImage: CIImage) -> CIImage {
let request = VNGenera

元記事を表示

【Flutter】iOSの生体認証の処理が失敗した時に表示される『パスコードを入力する』を消す方法

# はじめに
業務で生体認証系のパッケージで[local_auth](https://pub.dev/packages/local_auth)を触る機会があり、セキュリティの観点からiOSの生体認証の処理が失敗したらパスコードを入力できないようにしたかったので実装しました。
ドキュメントに方法が記述されておらず、私が少しハマったため他の人が困らないように、と私のために備忘録として残しておこうと思います。
# 結論
生体認証の処理を実行時、連続で失敗すると『パスコードを入力する』ボタンが表示されますが、`IOSAuthMessages`クラスの`localizedFallbackTitle`プロパティを空文字にすることで『パスコードを入力する』を表示しないようにすることができます。

:::note warn
あくまで2023年10月時点での情報のため、パッケージのアップデートによる破壊的変更や、Flutterのバージョンによって実装方法が変わる可能性がありますので参考程度にしていただけたらと思います?‍♂️
:::
# 執筆時の環境
– Flutter3.13.2
– local_au

元記事を表示

【iOS】輸出コンプライアンスの回答を省略する

# はじめに
AppStoreに審査に出す際やテストフライトに出すときなど、毎回輸出コンプライアンスの設定をするのが面倒なので聞かれないように設定します

# やりかた
`Info.plist`にITSAppUsesNonExemptEncryptionを追加して、`NO`を設定します
“`Info.plist


ITSAppUsesNonExemptEncryption

“`

![スクリーンショット 2023-10-09 17.56.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

SwiftUI特定のアイテムまでスクロールする方法

今回は`ScrollViewReader`を使用して特定のアイテムまでスクロールする実装です。

実装サンプル
“`SampleScrollViewReader.swift
struct SampleScrollViewReader: View {
@State private var tee = [“緑茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “麦茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “麦茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “麦茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “麦茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “麦茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”, “烏龍茶”, “ほうじ茶”, “ジャスミン茶”]

var body: some View {

元記事を表示

OTHERカテゴリの最新記事