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

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

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

元記事を表示

Flutterで、flutter_stripeを利用してサブスクリプションの決済画面を作成する

この記事は、[Flutter Advent Calendar 2022](https://qiita.com/advent-calendar/2022/flutter) 23日目の記事です。

Flutterを利用してDartでiOS / Androidに対応したアプリケーションを開発できます。

この記事では、FlutterでStripeの決済情報入力画面を表示するためのライブラリ「`flutter_stripe`」を利用して、サブスクリプションの申し込みを完了する方法を紹介します。

## 事前準備

Flutterを動かすために、DartとFlutter CLIをインストールしましょう。

### Dartのインストール

Homebrewを利用して、Dartをインストールします。

“`bash
$ brew tap dart-lang/dart
$ brew install dart
“`

今回は、以下のバージョンを利用しています。

“`bash
dart –version
Dart SDK version: 2.18.5 (stable) (Tue Nov 22

元記事を表示

SwiftUIで、外部からテキストを受け取りMarkdown表示する

# 概要

SwiftUIのTextなどは、Markdown記法が使えるようになりました。例えば以下のTextは、

“`swift
struct MarkdownView: View {
var body: some View {
List {
Text(“**BOLD**”)
}
}
}
“`

実際にプレビューに表示するとBold表示になります。

![MarkDownでBold表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/63bd7562-71d9-6ff8-642e-c472359ca013.png)

# パラメータとしてマークダウン文字列を取得する

例えば[Qiita API v2](https://qiita.com/api/v2/docs)などは、レスポンスの中にMarkdownで記述されたbodyがあります。これをMarkdownで表示しようと思います。
(Qiita APIからデータを取得する

元記事を表示

長年運用しているプロジェクトがPeripheryを導入してスリムアップした話

# これは

この記事は、[Yamapエンジニア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/yamap-engineers)の12月23日の記事です。

こんにちは、YamapでiOSエンジニアをやっている竹ノ内です。

普段はiOSアプリの開発に従事しています。

Yamapアプリは、歴史のあるアプリで元々はObjective-Cで書かれていましたが、それをSwift化したり、度々のリファクタリングと並行しながら、機能追加を重ねて成長してきました。

ただ、長年運用されている影響で全体を通して、
使われていないコードががそのままになっているところもあり、見通しが悪い箇所がありました。

なので、Peripheryを導入して、シェイプアップを図ることにしました。

# そもそもPeripheryとは

[Periphery](https://github.com/peripheryapp/periphery)とは使われていないコードに対して、警告を出してくれるライブラリです。

> The goal of

元記事を表示

OperationQueueを活用して、前処理,後処理,キャンセル処理が必要なタスクをバックグラウンドで行う

# はじめに
この記事はand factory.inc Advent Calendar 2022 23日目の記事です。
昨日は @twumo さんの 「[【JetpackCompose】テキスト入力された最後の文字だけマスクを外したい](https://qiita.com/twumo/items/155a7f1cc53aa55dc739)」でした。

開発中の機能で`OperationQueue`について調べていた時期があり、大変便利だったので備忘録がてら共有です。

今回は表題の通り、
– 時間のかかる複雑な非同期処理をバックグラウンドで行いたい(ex: データダウンロード)
かつ
– 前処理(ex: 実行前に事前準備となる処理), 後処理が必要
– キャンセル処理(前処理~後処理のいずれかのポイントで問題が発生した時に、必ず実行したい処理)
があるようなケースを想定し、`OperationQueue`を活用したデモを作成しました。

# デモ
今回実装した[簡易デモ](https://github.com/ykkd/OperationQueueDemo)の画面収録が下記になります

元記事を表示

2022年にいまさら振り返るObjective-C

好きな言語は`C++`です.どうも @mizuhugu35 です.
いかがお過ごしでしょうか.私は今朝寝違えたため,首がとても痛いです.

## 初めに
Objcを触る機会があって,基本ができていない気がしてきたので,今年の4月頃に勉強しました.
それをこの2022年の最後として,Objective-Cを再確認しよう!という記事です.

(iOSアプリ開発は,Swiftから入ったクチです)

すべてを書くと長すぎるので端折るか,また違う記事として書こうと思います.

間違っているところがありましたら,ぜひコメントお願いします!

## Objective-C
名前の通りオブジェクト指向の言語で,**メッセージ式**と呼ばれる記述方法が特徴的です.

“`objective_c
// – (id) a; で自分自身を返すメソッド
[object a];
// ネストできる
[[[object a] a] a];
“`
初めて見たときは, なんかLISPみたいな見た目してんな…と思いました.

## コンパイラ指定子
`@`から始める命令のことで,代表的なのは`@intarface

元記事を表示

【SwiftUI】Toggleのスタイルについて

# はじめに
iOS15からToggleのスタイルが増えてたので整理してみました。

# スタイル
## iOS
### switch
“`swift
import SwiftUI

struct ContentView: View {
@State private var isOn = false
var body: some View {
Toggle(“トグル”, isOn: $isOn)
.toggleStyle(.switch)
}
}
“`
![Simulator Screen Recording – iPhone 14 Pro – 2022-12-22 at 20.45.02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3e288046-b2fa-ae51-4b77-ab76b4e95d43.gif)

### button
“`swift
import SwiftUI

struct ContentV

元記事を表示

iOSのViewable Impression対応の話

社内で内製化のログシステムを推進している中で、ZOZOTOWNのiOSアプリはLoggerの内製、またはクリック、Viewable Impression(以降、view-impと表記)などイベントの対応してきました。
この記事では、先日に公開されたTechBlog[【ZOZOTOWNホーム画面におけるログ設計と改善サイクルの紹介】](https://techblog.zozo.com/entry/zozotown-home-data-driven)のview-impについてのiOSの実現方法を深堀りして紹介します。
画面の構成や実装により、適切な対応がそれぞれになりますが、今回の対応で気づいたポイトンがきっとどこかで参考になると思います。

# おさらい

## 背景
ホーム画面は主に**バナー**と「タイトル、一覧ページへのリンク、商品コンテンツ」という3つのパーツを持つ**モジュール**で構成されています。
これまで定性的な意思決定に基づいたモジュールの運用を、定量的に運用できるように、次ページ遷移率(以降、CTRと表記)をKPIとしました。

“`math
CTR = コンテン

元記事を表示

OTHERカテゴリの最新記事