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

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

SpriteKitで2D横スクロールゲームをつくろう(その3)

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
[前回](https://qiita.com/am10/items/d53d1cdf1b973a9f56cc)の続きです。

今回はついに横スクロールさせます。

## 実装
横スクロールを実現するためにはいくつか方法があるかと思いますが今回はカメラをプレイヤーに追従させて横スクロールします!

こんな感じの構成(背景は固定にしてます)。

camera

シーン上にカメラ、床、プレイヤーをのせ、カメラの上に背景をのせてプレイヤーの位置に合わせてカメ

元記事を表示

アクセシビリティに配慮したモバイルアプリの作り方(開発視点)

# 初めに

**アクセシビリティは開発で無視されがち**ですが、やり方がわかれば、アクセシビリティに配慮するのはそこまで難しいことではありません。

この記事ではアクセシビリティに配慮したアプリの作り方を例を交えながら説明します。

# アクセシビリティに関して

## アクセシビリティの定義

この記事で言うアクセシビリティに配慮するというのは、**スクリーンリーダー(TalkBack / VoiceOver)による読み上げと操作**に対応することを指します。

正確に言えば、認識しやすい色の使い方や小さすぎない文字サイズなどもアクセシビリティに含まれますが、デザインに関わる部分はここでは取り上げません。

## アクセシビリティの基本原則

### 1. 説明の文字がないかつ意味を持つ要素に対しては説明ラベルを指定する

説明の文字がないですが、その要素自体は意味を持つ場合は説明ラベル

– Android: contentDescription
– iOS: label / accessibilityLabel

を指定すべきです。

注意する必要があるのは、要素自体が意味を

元記事を表示

MacOSX の環境にて iOS アプリを Flutter で開発する前段階のお話

本投稿は [テクノロジー検証 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/technology_validation) の 4日目として投稿しています。

はじめに :

テクニカルサポート業務に就いている nk-nara と申します。
1日目も見ていただいていれば、お気づきかもしれませんが、もう一人の中野となります。

本記事から数回は、Flutter って何だろねというところから始め、
環境作る時点から悩みつつ、簡単なアプリ実装していく記事を書いていければと考えております。

前提

私自身は、MS 系の Power Platform 一部 (※2) や
Javascript を独学で遊んだ程度の知識レベルとなります。

アプリ開発の経験値がない状態からスタートしています。

未学習や同様のスキルセットの者による
感想や意見などからしか得られない栄養素が投稿できれば良いな、と考える次第です。

Flutter について :

Flutter は、オープンソースのアプリ開発の環

元記事を表示

Macを使わずWindowsだけでiOSアプリをデバッグする方法(.NET MAUI)

# はじめに
VisualStudioと.NET MAUIを使うとMac無しでiOSアプリをデバッグすることが簡単にできるようになりました。
今回はその方法についてご紹介します。

# WindowsだけでiOSアプリがデバッグできるようになる利点
1.デバッグの際わざわざMacを引っ張り出してこなくてもよくなる
2.Macを買わなくても済む
3.Windowsの便利ツールを生かした環境でそのままアプリの開発からデバッグまでできる。PowerToysはいいぞおじさん「PowerToysはいいぞ~」

# 必要なもの
1.AppleDeveloperProgramに登録・・・AppleDeveloperProgramに登録しないとiOSデバイスのデバッグはできません。(どうせアプリをストアに出すのにAppleDeveloperProgramは必要だからこの機会にでも登録しなさい。(年額13000円程度))
2.iPhoneやiPadなどのiOSデバイス・・・これがないと始まりませんね。VisualStudio内のiOSエミュレーターでのデバッグはMacを別途必要とします。
3.iClou

元記事を表示

【Swift】戻り値を使用しない場合の警告を出さないようにする

# はじめに
コードレビューをしている時に見たことないアノテーションがあったので調べてみました。
どうやら、`@discardableResult`これは戻り値を使用していない場合に警告を出さないようにするものらしいです。

# 通常
通常は戻り値がある場合に戻り値を使用しないと警告が表示されます。
![スクリーンショット 2022-12-03 20.59.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7e89217f-8f80-14fb-798f-3567ff97ee6f.png)

# @ discardableResultを使用
警告が消えました。
![スクリーンショット 2022-12-03 21.00.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/8f9e7171-e753-235b-c939-a38976acb78c.png)

# おわり
これはあまり使い道が分か

元記事を表示

complitionハンドラーについて(自分なりの解釈で)なまら簡単にまとめてみた

## はじめに
complitionハンドラーについて多くの記事や書籍を漁ってみたがどうにもイメージが掴みづらい。そのため、実務を約一年踏んだワイの解釈ではあるがものすごくざっくりとしたイメージを記事にまとめる(間違えていたらごめん)。

## 対象者
この記事は下記のような人を対象にしている。

– プログラミング初学者
– complitionハンドラーという言葉を知っている人
– 非同期処理について(ほんの少しでも)知識がある人

## complitionハンドラーについて
– 非同期処理では、リクエストを送る実行をしても望んでいるタイミングでレスポンスが返ってこないみたいなことがある。その望んでいるタイミングでレスポンスを受け取るために使うのがcomplitionハンドラーだと考える。
– 要は、complitionハンドラーを使って良きタイミングで確実に実行したい処理(レスポンス)をしましょうね、みたいなイメージ。 (これを俗に言う”コールバック”という)
– 基本的にはクロージャーの引数にcomplitionハンドラーを定義する。
– また引数に非同期処理

元記事を表示

SwiftUIで選択中のタブにViewをプッシュ表示する

[qnote Advent Calendar 2022](https://qiita.com/advent-calendar/2022/qnote) の3日目です。

iOS 16が登場しそろそろSwiftUIでの開発が行われる現場も増えてきたのではないでしょうか?
弊社ではFlutterでの開発案件があったのでFlutterの今後の動向も気になっています。

昨今のアプリでは大体下部にタブがあるものが多いと思います。今回プッシュ通知やスキーム、音楽系のプレイヤーの常駐しているView等の通常の遷移以外の画面や動作から選択中のタブでアプリのコンテンツ詳細画面を開く機能を実装するにあたり、Swiftに比べるとSwiftUIでの実装情報はまだまだ多くないのでどう実装するのが良いか迷うかと思います。

少し考えて出てきた案としては
1. 画面毎にNotificationCenterを登録して画面が表示中で通知を受け取った場合にNavigationLinkを有効にする
2. UINavigationControllerをどうにかして取得してそこにプッシュする

1の案は画面毎に通知と

元記事を表示

SpriteKitで2D横スクロールゲームをつくろう(その2)

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
[前回](https://qiita.com/am10/private/df42c1f0091e6c4705e2)の続きです。

今回はステージを作っていきます。

## 素材準備
背景(ちょっと適切なサイズがわからない。。。)

![background](https://user-images.githubusercontent.com/34936885/205078912-82c2dec2-d2c3-4c57-a23c-2fb45f3add58.jpg)

床ブロック

![tile_block](https://user-images.githubusercontent.com/34936885/205078848-2c4bdc61-dbc9-45f1-b961-48d475d72677.jpg)

#

元記事を表示

iOSでESP32のファームウェアをBLE経由で更新する

## はじめに
この記事は[N・S高等学校 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/n-s-highschool)の3日目です。
N高生です。今回はiOSでESP32のファームウェアをBLE経由で更新してみたいと思います。

リポジトリ: /* TODO */

## 環境
– MacOS12.5.1(モントレー)
– Xcode13.3
– ArduinoIDE2.0
– ボードマネージャー: esp32 v1.0.6
– iPhoneX (iOS15.5)
– ESP32 DevKitC_V4

※CoreBluetoothを扱うのでSimulatorでは動きません。

## 本題

以下の手順でファームウェアを送信、更新をしていきたいと思います。
![ble](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437056/a9b880ac-90e0-a7f6-32bf-d2fed22e9a33.png)

とりあえずファ

元記事を表示

【SwiftUI】ATTの許可率を上げる方法

# はじめに
まず、こちらの記事を見てみてください。
[Appleのアプリのトラッキングの透明性でiOS開発者の収益が15%〜20%減](https://iphone-mania.jp/news-382414/)

これはかなり重大な問題です。

iOS14.5からAdMobで全画面広告(リワード広告やインタースティシャル広告)を表示する際はトラッキング許可ダイアログ(以下、ATT)の表示が必須になりました。
ユーザーが許可するか拒否するかで広告収益がかなり変わってきます。
なるべく許可してもらいたいですよね

今回はちょっとの手間で1%許可率を上げることができたので方法を紹介しようと思います。

# トラッキングの許可のリクエストについて
https://developer.apple.com/jp/app-store/user-privacy-and-data-use/

# どのくらい収益が変わるか
アプリによっても異なるのですが、このくらいの差がありました。
![スクリーンショット 2022-12-02 13.04.12.png](https://qiita-image-sto

元記事を表示

React Nativeを利用したアプリ開発でライブラリのライセンスをJSXで表示したい

# モチベーション

React Nativeを利用した開発で利用しているライブラリをAndroid, iOSごとにjson形式でまとめて、React NativeのViewから表示させたい。この仕組みを、できるところは自動化をさせたい。その手順や躓きポイントをまとめた。

### この記事について

[Unipos Advent Calendar 2022](https://qiita.com/advent-calendar/2022/unipos)の2日目の記事です。

## 用意するもの

### ライセンス出力で利用
– [react-native-oss-license](https://github.com/k-tomoyasu/react-native-oss-license)
– [LicensePlist](https://github.com/mono0926/LicensePlist)
– [LicenseToolsPlugin](https://github.com/cookpad/LicenseToolsPlugin)

※LicenseToolsPlugin

元記事を表示

SpriteKitで2D横スクロールゲームをつくろう(その1)

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
SpriteKit を使って 2D 横スクロールゲームをつくってみます。なぜ Unity を使わないんだ?と疑問を持つ方もいるかもしれませんがとくに意味はありません。なんか面白そうなので SpriteKit を使ってみます。

記事は3つくらいになる予定です(たぶん)。

今回は歩いたり跳ねたりするプレイヤーを実装していきます。

## 素材準備
クリスマスも近いのでチキンをプレイヤーにします:chicken:

歩き用

| c1 | c2 |
| — | — |
|![c1](https://user-images.githubusercontent.com/34936885/204984008-4f64e2c6-1727-4ac1-bb35-6042986234e9.png)|![c2](http

元記事を表示

SwiftUIでAdMobバナー広告を表示する

# 要約

SwiftUIで`UIViewRepresentable`を用いてAdMobのバナー広告を表示します。

# 環境
Xcode 14.1
Google-Mobile-Ads-SDK 9.13.0

# はじめに
SwiftUIでAdMobのネイティブ広告を表示します。いわゆるSwiftUI life cycleでの表示例です。
公式での実装ではないので何かしら問題が起こる可能性があります。
AdMobの導入が済んでいる事が前提となります。
https://developers.google.com/admob/ios/quick-start?hl=ja

以前にも[SwiftUIでAdMob対応(バナー編)](https://qiita.com/hyuga_amazia/items/c19fbce63a12231b85d5)というタイトルで投稿していますが、以前の記事が`UIViewControllerRepresentable`で作成したViewControllerにバナーを内包した形だったのに対し、今回のものはUIViewRepresentableとして独立したVie

元記事を表示

Unit test で LifeCycleメソッドを呼ぶ

参考:
[Testing for viewDidLoad in iOS](https://medium.com/fantageek/testing-for-viewdidload-in-ios-7808a155ccfc)
[[iOS、Swift] ユニットテストの時に、任意のタイミングでViewDidLoad()、ViewWill(Did)Appear()、ViewWill(Did)Disappear()を呼び出す方法 – Qiita](https://qiita.com/mii-chan/items/a9d8fd420d04b92a1c34)

# viewDidLoad

実装

“`swift
class ViewController: UIViewController {
var searchBar = UISearchBar()
override func viewDidLoad() {
searchBar.delegate = self
}
}

extension VIewController: UISearchBarDelegate {
public fu

元記事を表示

1年半で12個のサービスをリリースしてわかった個人開発に大切なこと

# 1, はじめに
私は私立文系大学に通う大学3年生です。
プログラミングを始めたのは大学に入学してからです。
「これから開発を始めようと思う人」や「個人開発をやっている人」に少しでも参考になれば嬉しいです。

# 2, どんなアプリを作ったの?
いくつか紹介します

### ShadowBird
TwitterのシャドウバンをチェックすることができるWebアプリです。

https://taishin-miyamoto.com/ShadowBan/

11月は月間150万PVでした。
![スクリーンショット 2022-12-01 11.24.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/850d87b2-4821-2d7f-d494-8004a6b20197.png)
色々な国の方が使用しています。
![スクリーンショット 2022-12-01 11.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

テストコードがローカルだと成功するのにBitrise上だと失敗する原因を特定する方法

これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.7 の 1 日目の記事です。

なぜか、ローカルで走らせたテストだと上手くいくのに、Bitriseで実行すると失敗する時ってありますよね。

そんな時に限ってBitriseのログを見るとFailing testsと書かれているだけで、原因が出力されていない。。。

そんな時は、Bitrise CLIを使ってXcodeのxcresultを確認しましょう。

## 補足. Bitrise CLIとは
Bitrise CLIは、Bitriseのオープンソースランナー。
Bitrise環境をローカルで再現・実行することが可能で、ローカルだと上手くいくけどBitriseだと失敗する場合の原因特定に便利です。
ちなみに実行にBitriseアカウントは不要です。

https://devcenter.bitrise.io/ja/bitrise-cli.html

## 1. Bitrise CLIをインストール

Bitris

元記事を表示

UniVRM使用時に色空間をGammaに設定すると設定変更を促すダイアログを閉じれなくなる問題対策

# 初めに
UniVRMは色空間Linearでの使用を推奨されているため、gammaを設定しようとした際に以下の様なポップアップが表示されてしまいUnityEditorが操作できなくなってしまう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1336886/5ebb937e-ce8e-0bc7-d701-4491e0e7fb7e.png)
モバイルでの対応端末を広げようとすると必然的にWebGL1.0を選択することになるが、その場合はgamma設定が必須となるため、このポップアップが非常に邪魔になってしまう。
※iOS15以降でWebGL2.0に対応しているがリリース後は不具合が多かったためiOS15でも動作しない可能性がある。

# ポップアップの消し方
ScriptingDefineSymbolsに以下のシンボルを追加し `Apply`を押す。
`UNIGLTF_USE_GAMMA_COLORSPACE`
![image.png](https://qiita-image-store

元記事を表示

クリスマスも寂しくない!?会話AIアプリを作った

会話できる人工知能を作成するiOSアプリ「Eveki」を[App Storeにてリリースしました](https://textcheckai.page.link/jofZ)。
今回は機能や開発の経緯についてご紹介します。

[![黄 鹿 イラスト ビジネス ロゴ Twitterヘッダー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/8409d1b8-d1b2-ddf0-a9b8-fe488391d8c5.jpeg)](https://textcheckai.page.link/jofZ)

# Evekiについて

## 会話AI

Evekiの主な機能は会話可能なAIを作成するというものです。従来のサービスだと自然な会話を行うまでにユーザーがトレーニングをしたり調整する必要がありました。これでは不便なので、Evekiでは作ってすぐ話せるような応答を可能にしています。

## 個性の構築

![スクリーンショット 2022-11-30 23.18.13.png](https://qiit

元記事を表示

SnapshotTestingでURLで取得するリモートの画像の代替品としてAsset Catalogの画像を使用する

# はじめに
この記事はand factory.inc Advent Calendar 2022 1日目の記事です。

and factory iOSエンジニアのy-okuderaです!
最近、SwiftUIでSnapshotテストをやってみています。
非同期でリモートの画像を取得するコンポーネントを含むSnapshotテストをするときに外部に依存しないように、ローカルの画像を使う方法を調べてみました。

## 対象読者
Swiftで、非同期で画像を取得している画面のSnapshotテストをしている方もしくはこれからする方。

## 説明しないこと
本投稿の中に記載するソースコードは、一部TCA(The Composable Architecture)を使用していますが、TCAの詳細に関する説明はしません。
TCAのリポジトリにサンプルや説明が充実していますし、Qiitaにも良記事がたくさんありますので、それらを参考にしてください。

# swift-snapshot-testingでできること
iOSでSnapshotテストをするためのライブラリはいくつか有名なものがありますが、今回

元記事を表示

SwiftUIでSpriteKit

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
iOS 14 から [SpriteView](https://developer.apple.com/documentation/spritekit/spriteview) を使って SwiftUI でもかんたんに SpriteKit が使えるようになりました:clap:

## 簡易実装
下記のように実装すると `SKScene` を表示できます。

“`swift
struct ContentView: View {

var body: some View {
GeometryReader {
SpriteView(scene: FirstScene(size: $0.size))
}
}
}

final class FirstS

元記事を表示

OTHERカテゴリの最新記事