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

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

React Native で OS判定 を実装する方法

## やりたいこと

React Native で OS判定 を行い
iOS と Android で処理を出し分けたい

## 使用技術

– react : 18.1.0
– react-native : 0.70.2
– @types/react-native : 0.70.0
– typescript : 4.8.3

## 実現方法

[React Native Platform](https://reactnative.dev/docs/platform) を使用すれば
iOS と Android で処理を分けることは実現可能

以下に、実際のサンプルコードを記載しておきます。

### iOS判定をしたい場合

`Platform.OS === ‘ios’` で判定を行う

“`tsx
import { Platform } from ‘react-native’;
const isIOS = Platform.OS === ‘ios’
console.log(isIOS)
// expected output : iOSの場合`true`になる。Androidの

元記事を表示

React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい

## やりたいこと

ローカルPCから `fastlane` コマンドを実行したときに
fastlaneディレクトリ配下に `README.md` が自動生成されないようにしたい

## なぜ、この作業をやりたいと考えたのか?

fastlaneディレクトリ配下の `README.md` を独自で編集していたので、fastlaneコマンドを実行するたびに `README.md` に Gitの差分が出るのが面倒だったから

## なぜ、毎回 README.md が作成されるのか?

デフォルトの設定では`fastlane`コマンドを実行時に
`fastlane/README.md`が自動で作成される仕様だから

## 実現方法

`fastlaneディレクトリ` の Fastfile に `before_each` block を追加する

Android も iOS も追加する処理は同様の処理で問題ない。

### Android の場合

“`ruby
# android / fastlane / Fastfile

default_platform(:android)

元記事を表示

iOSでTFLiteを動かすのにとても苦労した

前回の記事「[姿勢推定の精度をval2017で評価しつつiOSでの動作を試していく](https://qiita.com/mbotsu/items/13442b54a2358e084bec)」ではCoreMLを試しました。
今度はTensorFlowLiteでもVitPoseを動かしてみます。

## モデルをTFLiteに変換する

Pytorch -> ONNX -> Tensorflow -> TensorFlowLiteの順に変換しました。
注意点としては、proftobufのバージョン違いが発生するので変換する環境は別々に作った方がいいです。

### Pytorch -> ONNX

ViTPoseが提供しているONNX変換コードを使います。
https://github.com/ViTAE-Transformer/ViTPose/blob/main/tools/deployment/pytorch2onnx.py

変換に必要なViTPoseの実行環境を作るのに地味にハマります。
環境が出来ればコマンドラインから実行します。
“`
$ python tools/depl

元記事を表示

【Xcode】iOS16以上の端末で、OTA配信しているipaが開けないエラー

# 環境
– Mac M1 OS Monterey12.6
– Xcode 14.0.1
– iPhone13Pro iOS 16.1.2

# OTA配信しているipaが開けない
iOS16の端末でOTA配信しているipaをインストールしたが、`”アプリ名”をインストールできません。あとでやり直してください。`とダイアログが出続けてしまう。
iOS12や13では正常にインストールすることができている。

# 解決までに行ったこと
#### ①最新のXcodeでアーカイブを作成する
筆者はXcode13と14両方使用する機会があったため、案件のアプリによって対応するバージョンが異なっていることを忘れていたので、もう一度アーカイブを作成しました。ただそれでもうまくいかず、、

#### ②manifest.plistをもう一度作成する
原因を考えていると、最近`manifest.plist`のファイルを作り直したらしくそれでOTAを配信行っていました。
なので、Xcode14の方でもう一度作り直してインストールするとダウンロードすることができました。

# 参考
`manifest.pl

元記事を表示

【SwiftUI】iOS16から登場したPasteButtonについて調べた

# はじめに
iOS16から追加されたコンポーネントで使ったことがなかったので調べてみました。

# 基本的な使い方
`payloadType`には[こちら](https://qiita.com/SNQ-2001/items/093d56fba9bdb9c838e3)にある型が指定できると思います。
戻り値は指定した型の配列です。

複数の型を取得する方法もありますが、使い方があまり変わらないので今回は省略します。

“`swift
import SwiftUI

struct ContentView: View {
@State var text: String = “”
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text(“テキストフィールド”)
}
.textFieldStyle(.roundedBorder)

元記事を表示

カメラからQRコードの検出、ハイライト表示、SwiftUI対応ビューの作成

この記事では、カメラからのビデオストリームを表示し、
QRコード(または他のタイプのコード)を検出し、
その周りに矩形を表示することによってコードを強調するビューを作成することについて話します。
また、SwiftUI互換のビューを作成し、SwiftUIのビュー内で使用できるようにします。

![RPReplay_Final1671678172_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/94abc373-5262-de1b-0d03-130b4166d1af.gif)

# 変数を用意する

まず、スキャンした結果とカメラプレビューレイヤーを保存するために、以下の変数を追加します。

“`swift
@Binding var scannedCode: String?
var viewSize: CGSize

private var captureSession = AVCaptureSession()
private var qrCodeFrameV

元記事を表示

[TCA]推しがv1.0にいってくれたらしぬ

# はじめに

この記事では、わたくしの推しOSSであるThe Composable Architecture(TCA)のバージョン1.0への道について、本家Discussionsに書かれていたことを軽く解説したり、これまでのバージョンを振り返ったりしてみます。

# 本題

## なぜまだv1.0ではないのか

v0.42.0の現在、v1.0へと至るロードマップのようなものがGitHub上のDiscussionsでRoad to 1.0というタイトルですでに述べられています。

https://github.com/pointfreeco/swift-composable-architecture/discussions/1477

上記を読むと、

> We’ve held off on 1.0 for this long not because we believe the library is in beta/unstable territory, but because there were a few key problem areas of library use th

元記事を表示

React Native Agora v3からv4の変更点

現在はReact Nativeでビデオ通信を用いたアプリを開発しています。

初期の開発は[React Native WebRTC](https://github.com/react-native-webrtc/react-native-webrtc)を使用していましたが、現在はドキュメントの充実と将来的な開発の安定性を考えて[React Native Agora](https://github.com/AgoraIO-Extensions/react-native-agora)を使用しています。

導入時期はまだv3系でしたが、node_modulesをアップデートした際にv4系に上がっていました。

修正する箇所が何箇所かあったので、まずは調査を兼ねてミニマムなものを作りました。

## 作ったもの

以下の要件のシンプルなものを作成しました。

1. スクリーンをロードした際に自分のカメラの映像を表示
2. 「JOIN」をタップするとserverへuidTokenを作成をリクエストし、チャンネルへJOINする
3. 両方のデバイスがJOINすると相手の画面に映像が小窓で表示される

元記事を表示

【Swift】Xcodeのログを見やすくしたい

# はじめに
成功or失敗で条件分岐させた時にどこが実行されたか一目でわかるようにしたいです。
そう思った時にログに色を付けられたらいいのでは?と思ったのですが出来なさそうなので別の方法を考えました。

???????⬛⬜

このような絵文字を使用してログを出力できるようにします。

# 実装
“`swift
public enum LogType {
case success
case warning
case error
case custom(String)
}

public func print(_ type: LogType, _ message: String) {
switch type {
case .success:
print(“?: \(message)”)
case .warning:
print(“?: \(message)”)
case .error:
print(“?: \(message)”)
case let .custom(e

元記事を表示

エラー処理についてすごく簡単にまとめてみた#3

## はじめに
エラー処理について3にパターン分けて記事を投稿する。

①Optional型 >>>>> 成功時は値を返し、失敗時はnilを返す
②Result型 >>>>> 成功時は値を返し、失敗時はエラーの値(詳細)を返す
③do-catch文によるエラー処理

今回は③について記載する。

下記URLの続編である。
https://qiita.com/RammaruIshii/items/861da45cd8c610b43341
## 対象者
この記事は下記のような人を対象にしている。

– プログラミング初学者

## 詳細
– do-catch文によるエラー処理
– エラーが発生する可能性のある処理をdo節内に記述する。そして、エラーが発生した場合、catch節へプログラムの制御が移る(要は、do節でエラーが起きると下で定義したcatch節内へ処理が走りますよってこと)。

– コードを見る上で押さえておきたいキーワードなどを簡単に説明
– tryキーワード
– throwsキーワードを定義した関数などを呼び出すときに必要なキーワード。

元記事を表示

【Swift】OpenAIのGPT-3をSwiftで統合する方法

Swift/Kotlin愛好会 Advent Calendar 2022の18日の記事です。
Swift/Kotlin愛好会の皆様、とんとんぼと申します。Advent Calendarそのものが初参加です。よろしくお願いいたします?‍♂️

# はじめに

この記事では、まず初めにOpenAIとGPT-3について簡単に解説し、GPT-3モデルをiOSアプリに組み込む方法を紹介します。

# OpenAIとは
OpenAIとは、AIの研究・開発企業です。人類全体に利益をもたらす形で友好的なAIを普及・発展させることを目標に掲げています。
2015年にサム・アルトマン、イーロン・マスクらによってサンフランシスコで設立されました。

主なアプリケーションは、自然言語処理と画像生成モデル(VAE Clip)を組み合わせた**DALL-E**、**DALL-E2**、
強化学習ライブラリの**Gym**,
教師なし変換言語モデルの**GPT-3**
などがあります。

https://openai.com/

# GPT-3とは
事前学習による自然言語技術処理モデルの1つです。
大きな特徴

元記事を表示

RxDataSourceをNSDiffableDataSourceへ置き換える&新しいUICollectionViewのAPIへ置き換える際のTIPS紹介

## 1. はじめに

皆様お疲れ様です。Swift AdventCalendarの24日目を担当させて頂きます、fumiyasac(Fumiya Sakai)と申します。何卒よろしくお願い致します。

今年は本記事でご紹介するトピックの他にも、iOSやSwiftに関連する記事を2つ公開しております。

– Swift Advent Calendar 12日目:
__[SwiftUIで作る「Drag処理を利用したCarousel型UI」と「Pinterest風GridレイアウトUI」の実装例とポイントまとめ](https://qiita.com/fumiyasac@github/items/b5b313d9807ff858a73c)__
– iOS Advent Calendar 17日目:
__[Firebase Realtime Database & FireStorageでasync/awaitを利用した簡単な処理実装例の紹介](https://qiita.com/fumiyasac@github/items/22f539f554981da6afb0)__

Swift

元記事を表示

[Flutter] iOSシミュレータ起動時にgetLocation()が返されない。

# はじめに
今回Flutterアプリで位置情報を使用するため、[Flutter Location Plugin](https://pub.dev/packages/location “https://pub.dev/packages/location”)を使用してみたのですが、iOSシミュレータでgetLocation()した際に、エラーなしでサイレントに失敗する(値が返ってこない)エラーに躓いたので、備忘録として記事を書きます。
※Androidシミュレータでは、問題なく動作しました。

# エラー原因と解決
iOSシミュレータの位置情報設定をCustom Location…にしていたことが原因で値が返ってこなかったようです。
iOSシミュレータのLocation設定には、「None, Custom Location…, City Run, City Bicycle Ride, Freeway Drive, Apple」があります。
各設定で値が返されるか確認してみたところ、「NoneとCustom Location…」では、値が返されずサイレントエラー、「City R

元記事を表示

MVCとMVVMについて

# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# webサービス、アプリを開発する基礎
webアプリケーションを作成する上で、設計思想(ソフトウェアアーキテクチャ)または設計モデルと呼ばれる、『MVC』を基盤に作成してきました。その中で『MVVM』という概念もあるということを知ったのでその違いを説明して行きます。

# MVCについて
webアプリやwebサービスを開発する設計の手法の一つで、3つの処理を切り分けた頭文字をとって表現しています。
この設計を用いることで画面変更を容易にできたりします。
## Model(モデル)
データの処理を行い、viewから独立した処理を担当しています。
![スクリーンショット 2022-12-24 14.33.21.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

MKMapView で中心座標をちょっとずらした位置で表示させる

たまには、このような需要があるのではないでしょうか:地図をなるべく大きく表示したいのですが、画面の一部にバナーやボタンを置きたいので、地図の中心座標をその分ずらしたいですね。例えば下記のような感じで、全画面で地図を表示したいのですが、下の水色の部分に何かを置きたいです。そしてこの状態で東京駅を中心に移動したいです。ところがこのまま東京駅の座標を指定するとマップビューのど真ん中に東京駅が来るので、下の水色の部分とのバランスが悪いから、東京駅を真ん中ではなく少し上にずらして、水色がない部分の中心を東京駅にしたいですね。

![スクリーンショット-2022-12-24-11.49.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63998/66d4d8a4-816a-f2af-b152-0fff9cf24932.png)

残念ながら、`MKMapView` の純正 API では、このような動きを直接対応するものがありません。特定の座標を、画面の中央以外の特定の場所に移動する API はありません。一瞬

元記事を表示

Swift 5.7の新機能を用いて、複数サービスを扱うアプリをリアーキテクチャする

この記事は[レコチョク Advent Calendar 2022](https://qiita.com/advent-calendar/2022/recochoku)の24日目の記事となります。

# はじめに

初めまして、永田です。
株式会社レコチョクでiOSアプリエンジニアとして働いています。

本日はクリスマスイブということでいよいよ年の瀬ですね。
今年の個人的ベストライブは「NUMBER GIRL 無常の日」、ベストアルバムは[柴田聡子「ぼちぼち銀河」](https://recochoku.jp/album/A2002809745/album)でした(柴田聡子さんかなりオススメです)。

さて、現在私が開発を担当している[PlayPASS Music](https://apps.apple.com/jp/app/id1079370868)アプリではリアーキテクチャを推進しています。
その中でSwift 5.7の新機能を用いた設計を導入したので、そのご紹介をしようと思います。

# 開発環境
本記事で扱うコードは以下の環境で動くことを想定しています。

– Xcode 14.1

元記事を表示

Kotlin のマルチプラットフォームモバイル開発の話

# はじめに!

今年久しぶりに ACCESS Advent Calendar 2022 参加させていただきます!
こちらはACCESS Advent calendarの24日目の記事となります。
今回の記事のテーマは **Kotlin のマルチプラットフォームモバイル開発** を試してみた記事です。
書かれていたコードは全部サンプルプロジェクト作ったら生成されているので、興味がありましたら、是非参考のリンクを辿って、試してみてください。

# Kotlin Multiplatform Mobile (KMM) とは?

Kotlin Multiplatform Mobile (KMM) は Android と iOS を開発するための Kotlin の SDK です。
以下の図を見ると、ビジネスロジックは共通することができますが、View は各 OS の実装になります。
Shared Code は Kotlin で書きます。
【Swift】Mozc-for-iOSを使って日本語変換を実装してみた

# はじめに
iOSで日本語の予測変換を実装したいと思い、ちょっと調べてたら[Mozc-for-iOS](https://github.com/kishikawakatsumi/Mozc-for-iOS)を発見しました!!
最終更新が8年前だったので使えないかなと思いましたが、ちゃんと使うことができたので記事にしておきます。

先に言っときますが、大変です笑
単純作業が続きます笑

# 手順
### Python2の環境構築
ここの解説は飛ばします。
私はPython 2.7.18を使用しました。

https://retval.jp/blog/python2-install/

![スクリーンショット 2022-12-23 17.11.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c320f132-2f23-686f-22de-16fb9392fc59.png)

### クローン
“`:ターミナル
cd ディレクトリの移動
git clone https://github.c

元記事を表示

[SwiftUI + CoreBluetooth]感染症対策・熱中症対策に iPhone や MacBook Air(M1)で温度・湿度を測定する

## 記事の内容
ソニーが販売している IoT タグ MESH を利用して、温度・湿度を測定する。
![スクリーンショット 2022-12-20 0.10.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/7b987b7e-4913-532d-33e6-719ceedab15f.png)

## 動機
**感染症対策・熱中症対策として、部屋の温度・湿度を測定したい**

「感染症対策・熱中症対策には温度と湿度の管理が大切」 ということはわかっていたが、実際の温度・湿度は把握していなかった。

単純に温度計・湿度計を購入して測定すればいいが、自動的に一定間隔で測定データを記録して、そのデータを可視化したり機械学習で活用できるのではないか。

また以前、BLE通信を利用してセンサと接続できる iOS アプリを開発するプロジェクトに参画していた。その際の内容を思い出すためにも、温度・湿度を測定できる iOS アプリの開発に挑戦した。

## 開発環境
**PC**
MacBook Air(20

元記事を表示

WebViewの動画広告をインライン再生させる時の注意点

WebView内の動画広告をインライン再生させようとしたが
思うようにいかない部分があったので注意点と共にご紹介します。

#### ■インライン再生させるには、これを追加するだけ
“`swift
configuration.allowsInlineMediaPlayback = true // インライン再生を許可
configuration.mediaTypesRequiringUserActionForPlayback = [] // すべてのメディアについてユーザインタラクションなしの自動再生を許可
“`
:::note warn
↓上記のコードを入れようと思ったが使えない:sweat:
:::
![スクリーンショット 2022-12-23 16.31.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2370083/3dff6ba1-0c02-5db3-6836-cc30af35732e.png)

# ■使えなかった理由と注意点
1.インライン再生のコードを追加するには、WKWebVi

元記事を表示

OTHERカテゴリの最新記事