iOS関連のことを調べてみた2021年02月24日

iOS関連のことを調べてみた2021年02月24日

Xcode Gen を初めて使ってみる

チーム開発を行っているとき、プロジェクトファイルがよくコンフリクトします。

![confrict.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139353/ccad7ddc-b7ee-842f-dff2-d4f9f3939bd0.png)
その問題を解決する方法があります。

参考:

– [Xcodeプロジェクトの生成ツール「XcodeGen」のセットアップ&操作方法](https://qiita.com/uhooi/items/16a870eaae24b46103fb)
– [既存のプロジェクトを XcodeGen に移行する](https://qiita.com/gin0606/items/64855bb96570d875f231)

本記事は、他の記事を見ながら実際にやってみた、いわゆる備忘録となっています。
「まだ情報は集まってない…」
「とりあえず試したい…」
そんな方には役立てられるかと。

## 目次
Qiita なら必要ないかと思うけど一応

– [Xcode Gen とは](

元記事を表示

SwiftのMVCについて

###はじめに
自分用メモです。MVCについてまとめます。(随時更新予定)

###Modelの役割
・データ構造の表現
・WebAPIとのやりとり
・ローカルデーターベースへの保存
・データの振る舞いロジック
(UIやレイアウトに関するロジックは保持しない)

###Viewの役割
・UIの表示
・データを表示するようなUIの場合Controllerからデータを受け取りUIに反映
(データ構造に関する一切のロジックを持たない)

###Controllerの役割
・Modelからデータを受け取り、ViewにわたしUIを更新する
・ユーザーインタラクションをViewから受け取り、適切なアクションを処理する
・ViewControllerにしかできないロジック処理を行う(ライクサイクルや画面遷移など)

元記事を表示

[SwiftUI] 画面遷移に関して

今回はSwiftUIの画面遷移に関して解説していきます。

#遷移後画面の作成

command + Nで新たなファイルを作成します。
SwiftUI Viewを選択してください。
その後createで作成します。

“`swift

import SwiftUI

struct SecondView: View {
var body: some View {
Text(“画面遷移出来たよ!”)
}
}

struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}

“`

上のコードは`SecondView`とし、Textも”画面遷移出来たよ!”と変更しましたが変えても変えなくてもどちらでも良いです。

#遷移前画面の作成

“`swift

import SwiftUI

struct ContentView: View {
var body: some View {

元記事を表示

SwiftでClosureを用いてAPIを扱う

###はじめに
今回は自分用メモです。
質問などはコメントのところで受け付けています!

###今回したいこと
closureを用いてServerの通信が完了した後、成功したらUIを更新、失敗したらエラーアラートを出す処理を作る。
ネットワークエラーが発生した時のエラー内容をenumで書き出しておく。

“`Swift
enum NetworkError: Error, CustomStringConvertible {
case unknown
case invalidResponse
case invalidURL
var description: String {
switch self {
case .unknown: return “不明なエラーです”
case .invalidResponse: return “不正なレスポンスです”
case .invalidURL: return “不正なURLです”
}
}
}
“`
次に、APIClien

元記事を表示

neal – 近辺飲食店検索アプリ について

![neal-serviceimage](https://user-images.githubusercontent.com/64912886/105801408-6b259100-5fdc-11eb-887e-dc3ff9209435.png)
 
  この度は、nealをご利用いただきありがとうございます。こちらでは、nealの利用方法であったり、作成秘話などについて記載させていただいております。nealを利用する際の助けになると嬉しいです。

# ・ neal – 近辺飲食店検索アプリ とは??
 現在地から1 km圏内にある飲食店を提示してくれるモバイルアプリケーションとなります。リストのタブでは、店名はもちろん画像が掲載されている店舗からはお店の雰囲気を掴んだり、詳細ページからは、メニューや店舗予約なども行うことができます。

# ・ 機能
### 1. 近辺の飲食店をリストで確認
 先述にもありますが、現在地から1 km圏内にある飲食店を最大15店舗程ピックアップし、リストに表示されます。店舗名、ジャンル(居酒屋、カフェなど)、営業時間などが表示されます。気になった

元記事を表示

Swiftにおける配列操作まとめ

#目次
[はじめに](#はじめに)
[部分置換](#部分置換)
[部分配列の型](#部分配列の型)
[配列のプロパティ](#配列のプロパティ)
[配列のメソッド](#配列のメソッド)
[シーケンス操作](#シーケンス操作)
[最後に](#最後に)

#はじめに
配列操作のまとめです。主に、部分配列、配列のプロパティ、メソッド、シーケンス操作についてまとめています。
SequenceとCollectionや基本的な配列のアクセス方法、その他配列以外の知識が必要なものは今回は説明していません。

#部分置換
“`swift
var a = [“赤”, “青”, “緑”, “白”, “黒”]
//①
a[1…1] = [“橙”, “茶”, “紫”]
print(a) // [“赤”, “橙”, “茶”, “紫”, “緑”, “白”, “黒”]
//②
a[2…3] = [“黄”]
print(a) // [“赤”, “橙”, “黄”, “緑”, “白”, “黒”]
//③
a[1…2] = []
print(a) // [“赤”, “緑”, “白”, “黒”]
//④
a[2.

元記事を表示

【SwiftUI】TabViewの基本的な使い方

先日、私にとって初のiOSアプリがリリースとなりましたので、開発に使った技術を細分化してアウトプットしていこうかなと思います。良かったらインストールしてみてください。

[わかりすと -勉強サポートアプリ-](https://apps.apple.com/jp/app/id1553876980)

# TabViewとは

複数の子ビューを切り替えることのできるビュー。

[公式リファレンス](https://developer.apple.com/documentation/swiftui/tabview)

# 実際の動作

# コード

上の動

元記事を表示

【iOS】いつの間にかサポート外OSの端末で新規インストールできなくなった

# 概要
iOSアプリ開発で悩ましい、サポートiOSの終了において、過去と挙動が変わっていたためまとめました。
サポートを切る=IPHONEOS_DEPLOYMENT_TARGETでOSバージョンを変更する、の前提です。

# 想定と事象
想定

| OS | 新規インストール |
|—|—|
| 対象外 | 対応しているうちの最新バージョンが落ちる |
| 対象内| 最新バージョンが落ちる |

事象

| OS | 新規インストール |
|—|—|
| 対象外 | AppSotoreでアプリ名を検索:ヒットしない
サイトからAppStoreに誘導:「iOSXX.X以降が必要です。iPhone,iPad,およびiPod touchに対応。」という文言が表示されており、ダウンロードボタンは非活性|
| 対象内| 最新バージョンが落ちる |

# 過去(2013~)はできてた
> 今日(米国時間9/17)、あるRedditユーザーが、App StoreでiOSの旧バージョンを使っているユーザーが、互換性のある最後のバージョンのアプリをダウン

元記事を表示

UITextFieldでキーボードのサジェストとフォーカスの動きが意図しない件について

# 事の始まり
サービスの新規登録画面を作り直すことになりました。

内容としては簡単なもので、項目は以下の通り。
・メールアドレス入力
・パスワード入力
・パスワード再入力

`UITextField`をパラパラっと設置して、キーボードのタイプを指定して、

最後にパスワードは見えないように`isSecureTextEntry`を忘れずに。

簡単ですね?!!

“`SignUpViewController.swift
class SignUpViewController: UIViewController {
@IBOutlet private weak var emailAddressText: UITextField!
@IBOutlet private weak var passwordText: UITextField!
@IBOutlet private weak var rePasswordText: UITextField!

override func viewDidLoad() {
super.viewDidLoa

元記事を表示

【SwiftUI】APIとJSONで取得したものをList表示する方法【tutorial】

## 今回作成するアプリ
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517666/28f0f0ff-6165-e224-6899-ac88b99f6fec.gif)
## はじめに
今回は初めてSwiftUIでAPIを叩いてJSONを取得し、List表示する方法をご紹介したいと思います。
よってこの記事は、SwiftUIは触ったことがあるが、APIやJSONは初めてと言う方向けの記事です。
尚、APIやJSONはなんぞやと言うことについては、様々な良記事が沢山ありますのでそちらを参照下さい。
## 環境
・ /macOS Big Sur 11.3
・ SwiftUI : 2.0
・ Xcode : 12.4
## サンプルJSON
今回は初めてJSONを取得し、Listで表示させる為、オーソドックスな天気APIとかではなく、様々なJSONのサンプルが用意されている[jsonplaceholder](https://jsonplaceholder.typicode.com/)を使用してきます。

元記事を表示

【Swift】Compact状態のDatePickerに戻る処理を行う

##新しいDatePicker
iOS14からどうやらDatePickerの挙動が変わったらしく、今までのドラムロール式の日付・日時選択からカレンダー表示の様な選択方法が選べるようになりました(従来のDatePickerも引き続き使用出来る)。
しかしこのポップアップされるDatePickerは日付を選択時に一つ前に戻る機能が備わって居らず自分で書いて選択時に戻る処理を入れてあげる必要がある。
![CompactDatePickerが表示されたiPhoneSimulator](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176908/d9a5c518-76be-c63c-bab2-bc7c2d0b940b.png)

##コード
“`Swift:ViewController
@IBAction func CompactDatePicker(_ sender: UIDatePicker) {
// 日付選択時に選択前の画面に戻る
self.dismiss(animated: true, comp

元記事を表示

Multipeer ConnectivityでのP2P通信(Swift)

![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen) ![iOS-14](https://img.shields.io/badge/iOS-14-brightgreen)

## はじめに
iOS の端末間で通信とかしたいなと思い [Multipeer Connectivity](https://developer.apple.com/documentation/multipeerconnectivity) について調べました。

ソース :point_right: [GitHub](https://github.com/adventam10/MultipeerConnectivitySample)

## Multipeer Connectivityとは
Multipeer Connectivity は Wi-Fi と Bluetooth を使って iOS 端末間の近距離通信(ピア・ツ

元記事を表示

M1 macでIPA processing failedを解決する

## 環境

– m1チップのMacBook air
– xcode12.3

## 症状

– ipaを作成するためにarchiveする
– Organizer画面からDistributeAppする
– adhocを選択してnextをクリック
– 次の画面に移動して1秒くらいで`IPA processing failed`と表示され、ipaの作成に失敗する
![スクリーンショット 2021-02-19 10.43.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268579/130e8924-2f18-689b-4dd3-4264c3a9a073.png)

– show logから`IDEDistribution.standard.log`を確認すると下記のようなlogがのこっている

“`
description = “Configuration issue: platform AppleTVSimulator.platform doesn’t have any non-simulator

元記事を表示

Vision+CoreML+Metal で信号機の点灯色を読み取ってみる

色の表現として**HSV色空間**というものに触れる機会があったので、信号機の色を読み取ってみた。
信号機の画像認識には [YOLOv3-Tiny](https://developer.apple.com/jp/machine-learning/models/) のCore MLモデルを利用。
<完成イメージ>
![demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/e3ba23fe-1329-527b-97c0-3d8f00015fce.png) ![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/ae2eb924-5468-070d-4784-fcd7c62599a3.gif)
※このgif画像は外で撮影した動画をモニタで再生し、それをiPhoneで撮影。

#### 「色」をどう読み取るのか 〜HSV色空間について〜
業務でアプリ開発をしていて色の指定にはRGBを使っていて、

元記事を表示

[tf2.x] VisionTransformer(ViT)を用いて画像分類(ついでにiOSで動かしてみる)

# はじめに
この記事ではVisionTransformer(ViT)を用いて画像分類を行います。
ViTって何?って方は[こちらの記事](https://qiita.com/omiita/items/0049ade809c4817670d7)が参考になるかと思います。

簡単にいうと自然言語処理等で猛威を奮っているTransformerを画像に応用したものです。自分は画像の研究はしていませんでしたが、自然言語処理においてRNNが駆逐されていったのと同じように画像でもCNNが駆逐されていく日も近いのかもしれません。

[以前](https://qiita.com/SeeLog/items/e622f528e6c9a8cc9d43)はInceptionV3というものを使って遊びましたが、今回はViTを使って遊んでみたいと思います。

# ViTのメリット・デメリット
InceptionV3を用いた画像分類と比較するとメリットは以下の通りだと思います。

– CNNを用いずTransformerのみで計算を行うため、より高速に推論が可能
– いろんなタスクでSoTAはViTがとってるらしい

元記事を表示

【Swift】タプル型の便利な使い方(備考録)

## 導入
Swiftを使っていて、これまでタプル型を自分で実装して使う機会がなかったんですが、
開発していたらタプル型ってこういう時に使えばいいんだという気づきがあったため記事を書きました。

僕はMVPモデルでアプリ開発をしていた時に、タプル型の利便性に気付かされたので、今回はMVPモデルで作ったサンプルアプリを元に解説します。
※あまりに簡素なサンプルアプリであり、Modelは不要なので今回は、ViewとPresenterのみを使用します。

■ MVPモデルについてはこちらの記事が大変参考になりました
https://qiita.com/hicka04/items/25be38a90fdde29c97c2

## サンプルアプリについて
下記に画面のキャプチャを載せました。
「計算ボタン」をタップすると、画面上に書かれている足し算を行い、水色の枠の部分に答えを表示します。
TupleApp.pngJenkinsのBuild AgentをMac上に構築する

Jenkinsを使ったiOSアプリのCI/CD環境を構築するために、ビルドエージェントとしてmac miniを登録する機会があったため手順をまとめておきます。

基本的な流れは GitLab CI Runner に近いです。
https://qiita.com/takamii228/items/64fd6879e6acce845980

なお今回利用したJenkinsのバージョンは 2.235.2 です。

## mac miniの設定をする

まずmac miniでJenkinsのAgentが動作する準備をします。

JenkinsのAgentを動作させるためにはJavaが必要なのでHomeBrew経由でインストールします。

“`shell
$ brew install openjdk@11
$ export PATH=”/usr/local/opt/openjdk@11/bin:$PATH”
$ java -version
openjdk version “11.0.9” 2020-10-20
OpenJDK Runtime Environment (build 11.0

元記事を表示

iOS Simulatorのスクリーンショットがデフォルトでデスクトップに保存されるけど保存先を変えたい

iOS Simulatorを利用中にキーボードのCommand + Sを押すとスクリーンショットが撮影されディスクトップに保存されます。

– Altを押しながらCommand + Sを押すとスクリーンショットの保存先を選択できます
– 次回はCommand + Sだけで指定した保存先に保存されるようです
– デフォルトの保存先にするか決めるチェックボックスが表示される場合もあるらしい
– Command + Control + Cを押すとスクリーンショットがクリップボードにコピーされます
– Excelスクリーンショットエビデンスが高速に作れます

参考
[iphone – Take screenshots in the iOS simulator – Stack Overflow](https://stackoverflow.com/questions/7092613/take-screenshots-in-the-ios-simulator)

元記事を表示

pod install実行時に`target overrides the OTHER_SWIFT_FLAGS build setting defined`が表示され、追加したライブラリがロードできない

## 環境
Xcode Version 12.4
MacOS BigSur 11.2.1

## 発生した問題
プロジェクトのPodfileにSnapKitを追記し、`pod install`を実行したところ、
`Cannot load underlying module for ‘SnapKit’`という問題が発生しました。
追加したライブラリのインポートはできるがロードができていない様子。

“`
$ pod install

Analyzing dependencies
Downloading dependencies
Installing SnapKit (5.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 12 dependencies from the Podfile and 22 total pods installed.

[!] The `MySampleApp [Debug]` target overrides the `OTH

元記事を表示

iOSアプリケーションにキーボードショートカットのサポートを追加(UIKitとSwiftUI両方で)

この短い記事では、アプリケーションにキーボードショートカット (keyboardShortcut, UIKeyCommand) 機能を加える方法について説明します。これは、ユーザーがiPadにキーボードを接続した状態でアプリを実行している場合に便利です。

多くの人はiPad用のキーボードカバーを購入しているので、アプリケーションにキーボードショートカットを実装しておくと便利になるでしょう。実装はほんの数分で完了します。

アプリケーションが提供するすべてのショートカットを表示するには、iPadキーボードのコマンド ⌘ キーを長押しします。それにより提供されているショートカット一覧のメニューが表示されます。

# SwiftUIのアプリケーションに

修飾キー `keyboardShortcut` を使うことで、SwiftUIのインタラクティブなU

元記事を表示

OTHERカテゴリの最新記事