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

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

【Flutter】Shimmerを利用してUXの高いローディング処理を実現

インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。

Zennで本を出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)(30,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)

## Shimmerとは
データの読み込み中であることをユーザーに伝える方法の一つとして、読み込み中のコンテンツの形状に近似したUIの上に、グレー等の色でローディング状態を表現するアニメーションです。

以下、[Flutter公式](https://docs.flutter.dev/cookbook/effects/shimmer-loading)から参照。
![]

元記事を表示

Apple ホームAppで暖房の予約をする

#オフトゥンから出られない
執筆時現在の季節は真冬です。この寒い季節、私は朝布団からすぐに出ることができません。
そこで、起きる前にどうにかエアコンをつけて部屋を暖めておくことはできないかと考えました。

#自室の環境
エアコンの制御はhomebridgeを母艦とするAppleのホームAppを使用しています。
iPhoneのホームAppからエアコンの任意の設定を行うことが可能です。
わかりやすく言うと、iPhoneでエアコンのオンオフや温度設定を自由に行える状態にあるということです。

また、起床時のアラームはiPhoneの標準時計アプリを使っており、8時に予鈴が1回、20分後に1回鳴ります。

#環境の理想系
・就寝直前、翌朝の気温を確認して予約をする。
・予約がある場合、8時になったらエアコンをつける。
といったものを想定しました。

ここで必要になる事は、
__(A) 就寝から8時までの間、予約をすることを記録しておく事__
__(B) その記録を元にエアコンをつける事__
の両方を満たす事です。
この環境でのこれらを満たす最適解を見つけようとしました。

#解決策

###(i

元記事を表示

FlutterでFirebaseを使ってみる〜Firebase導入編(iOS)〜

## 投稿の経緯
FlutterのキャッチアップでFirebaseと連携してFirestoreを使うサンプルプロジェクトを立ち上げました。今回はiOSアプリにFirebaseを導入してエミュレーターでビルドするところまでを書こうと思います。

## 環境
Flutter:2.8.1
MacOS:12.1

## サンプルプロジェクト
GitHubにコードPushしています。気になる方はご覧ください。
![QR_925113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/f774b418-6fc2-a814-c742-ebf8dde02847.png)

## Firebaseの導入
公式情報を参考にして進めていきます。

https://firebase.google.com/docs/flutter/setup?platform=ios#analytics-not-enabled

#### Firebaseプロジェクトの作成
![a800c466878afb7914d8583967d7

元記事を表示

【Combine】debounce(for:schedule:option) オペレータを理解する

今回は、`debounce`というオペレータについて、理解してみようと思います。

## 環境

【Xcode】13.1
【Swift】5.5
【macOS】Big Sur バージョン 11.4

## 公式ドキュメントから理解する

まずドキュメントにあったコードは以下の通り

“`swift
// 以下のimportはドキュメントにはなかったので追加
import Combine
import Foundation

let bounces:[(Int,TimeInterval)] = [
(0, 0),
(1, 0.25), // 0.25s interval since last index
(2, 1), // 0.75s interval since last index
(3, 1.25), // 0.25s interval since last index
(4, 1.5), // 0.25s interval since last index
(5, 2) // 0.5s interval

元記事を表示

[iOS] 国際宇宙ステーション(ISS)を歩く AR アプリを作る

![title_1024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/e44ab591-1fc5-d9e1-6b33-c879334a4d2f.png)

閉じた空間の中にある構造物を歩き回る体験を AR(拡張現実)を使って提供します.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.この記事では、宇宙空間に浮かぶリアルスケールの国際宇宙ステーション(International Space Station: ISS)(一部分のユニット)の中を自由に歩き回ることができるアプリの作成方法を説明します.

# 仕組み

ISS(一部ユニット)のリアルスケールの 3D モデルを用意します.AR 体験を開始する際のデバイスの位置を ISS モデルの通路に位置合わせして仮想空間を作成します.こうすることで、背丈の異なる大人や子供が、AR 体験を開始したデバイスの位置に合わせて作られる仮想空間により、通路の中を自然な姿勢で歩くことができます.

元記事を表示

アニメ変換をiPhoneでつかいたい — CoreMLに変換すればOK

#AnimeGAN2-pytorchをiPhoneで使える形式に変換する方法です

変換ずみモデルを入手したい方はこちら:

https://github.com/john-rocky/CoreML-Models

アニメ変換機械学習モデルであるAnimeGAN2をiPhoneアプリで使えるようにします。

#AnimeGANはかっこいい、、でもPythonかあ。。。

アプリケーションでPythonのモデルを使うには、サーバーに画像をアップして処理したり、、、と大変そう。

#CoreMLに変換すれば

元記事を表示

よく使うコマンド集

コマンドを使用する際に、いつも検索する事から始めてしまい、時間も取られてしまうので、予めメモとして投稿しようと思いました。
– – –
#指定先に移動する
“`
cd 指定ファイル、フォルダまたはディレクトリ
“`
cdの後に半角スペース、後は指定先をドロップアンドドラッグでOKです。
#gitの初期化
“`
git init
“`
#設定したRepositoryの確認
“`
git remote -v
“`
#コミット履歴確認
“`
git log
“`
#ローカルエリアの差分確認
“`
git status
“`
#ステージングエリアに保存(全て)
“`
git add .
“`
#コミットする
“`
git commit -m”任意のメッセージ”
“`
#現在のブランチの確認
“`
git branch
“`
#リモート環境にアップロードする
“`
git push origin master
“`
“`
git push origin main
“`
– – –
#・トラブル発生時によく使うコマンド
#ファイル全体のキャッシュ削除
`

元記事を表示

【SwiftUI】アラートを表示する

#環境
Xcode 13.2.1
Swift 5.5.2

#実装
ボタンをタップした時にアラートを表示する場合は以下のようなコードになります。

“`swift
struct ContentView: View {
@State private var isShowingAlert: Bool = false

var body: some View {
Button(“アラートを表示する”) {
isShowingAlert = true
}
.alert(“Text”, isPresented: $isShowingAlert) {
Button(“Button1”) {
// タップした時の処理
}
Button(“Button2”) {
// タップした時の処理
}
} message: {

元記事を表示

Unity の SystemInfo.deviceModel が表示するiPhoneの情報

Unity の SystemInfo.deviceModel が表示する iOS の情報についてです。

# 結論
https://www.theiphonewiki.com/wiki/Models の Identifier が表示されています。

# 背景
問い合わせ用に Unity の SystemInfo.deviceModel の情報を取得しようとして、自身の端末 iPhone 11 Pro が iPhone 12,3 と表示され、なんのこっちゃと思ったので調べました。
Android は未調査です。

# 参考
* [iPhone iPad 端末での 一般名と内部名の対応表](https://qiita.com/YumaInaura/items/31838a72678fa09d7e19)

元記事を表示

UIViewでTap検出

UIViewでTap検出を行う

・Viewの作成時にGestureRecognizerをタップを検出したいUIViewに追加する

~~~
UIView* LabelA;
~~~

~~~objc
// TapGestureRecognizer作成 タップ検出時LabelAをコールするよう登録
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(LabelATap)];

// UIView LabelA にタップ検出をアタッチ
[self.LabelA addGestureRecognizer:tapGesture];
~~~

~~~
// LabelAタップ検知時処理
-(void)LabelATap{

}
~~~

[Apple Developler](https://developer.apple.com/documentation/uikit/uitapgesturerecognizer)

元記事を表示

文字列からスペースと改行を削除

# 環境
– Swift ver 5.5.1

# コード
## 文字列の前後から

利用しているメソッド

– Apple Developer Documentation – [trimmingCharacters(in:)](https://developer.apple.com/documentation/foundation/nsstring/1415462-trimmingcharacters)

### スペースを取り除く

“`swift
let text = “ 前後にスペース ”
let trimmedText = text.trimmingCharacters(in: .whitespaces)
print(trimmedText, terminator: “”)
// 出力:”前後にスペース”
“`

### 改行を取り除く

“`swift
let text = “\n前後に改行\n”
let trimmedText = text.trimmingCharacters(in: .newlines)
print(trimmedText, terminat

元記事を表示

プリクラ並みの美肌フィルターをつかう #YUCIHighPassSkinSmoothing

#iPhoneでつかえる美肌フィルターのつかいかたです

#見たいものを見せることがサービスには肝要です
現代は浄化されたものが好まれる時代だと思います。
SNSでも、何も加工せずに顔写真を載せている人はむしろ珍しいのではないでしょうか?
もしもあなたが画像アプリを作りたい場合、美肌フィルターが必要になることもあるかもしれません。
さて、どのようにして商用アプリ並みの美肌加工を実装できるのでしょうか?

Swift Package内のリソースにアクセスする便利な方法

## はじめに

本記事は [Swift/Kotlin愛好会 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/love_swift_kotlin) の14日目の記事です。
空いていたので埋めました。

Swift Package内のリソースにアクセスするには `bundle:` に `Bundle.main` でなく `Bundle.module` を指定する必要があります。
毎回指定するのが手間なので、私は便利メソッドを実装し、さらに __リソースへのアクセスを1つのSwiftファイルにまとめています__ 。
その方法を紹介します。

## 環境

– OS:macOS Big Sur 11.6
– Swift:5.5.2
– Xcode:13.2.1 (13C100)

## リソースの格納

Swift Packageにおいて、リソースのほとんどは `Sources/{target name}/Resources/` フォルダに格納すれば自動的にリソースと認識します。

## リソースにアクセスする便利な方

元記事を表示

[iOS] AR ポータルアプリを作る

![TitleImage](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/36bd045f-376b-d8ef-976c-0050c362c557.png)
AR ポータルアプリ(AR Portal App)は、入口(Portal)を通って特別な空間(内部空間)に入る体験を AR(拡張現実) を使って提供します.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.

# 仕組み

内部空間を大きな箱や球で囲み、その内面にその世界の風景を貼り付けます.内部空間に入ると外部のカメラ映像が遮蔽されるため没入感が得られます.更に、その内部空間自体を外部から見えないようにすると、サイズや中の様子が分からないため未知の世界への期待感などを持たせることもできます.RealityKit の Occlusion Material はその内部を遮蔽するので、これを使って内部空間を外部から見えなくすることができます.

![pict1.png](https://q

元記事を表示

【Swift】CoreBluetoothの使い方 その2:セントラルの実装例

#はじめに
Corebluetoothのセントラル側の実装例について記載していきます。

[①その1:BLEにおける役割](https://qiita.com/JunNonaka/items/348eeecc63cbce4cfed0)
②その2:セントラルの実装 ← 今回はここ

#処理の順番
・必要な機能の初期化
・スキャン処理
・接続処理
・ペリフェラルの情報を取得して通信を行う。
・切断
上記順番に処理を行いますので、順番に記載していきます。

#必要な機能の初期化
・BLE関連の設定の追記
info.plistに「Privacy – Bluetooth Always Usage Description」を追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671830/ab5e3db4-7d3b-1685-bc15-14d6f4c2b60c.png)

試すだけであれば上記だけで問題ありませんが、実際にアプリに組み込み、Appstoreconnectに上げる場合はペリフェラル側

元記事を表示

【Swift】CoreBluetoothの使い方 その1:BLEにおける役割

#はじめに
2022年はOutPutしていくぞ!!ということで、
初めてQiitaに投稿しますが、iOSでのBLEの使い方、CoreBluetooth周りの投稿をしていきます。

①その1:BLEにおける役割 ← 今回はここ
[②その2:セントラルの実装例](https://qiita.com/JunNonaka/items/cde2f4f3934a3d452770)

#CoreBluetoothとは?

>Core Bluetoothフレームワークは、アプリがBluetooth搭載の低エネルギー(LE)および基本レート/拡張データレート(BR/EDR)ワイヤレステクノロジーと通信するために必要なクラスを提供します。
Apple Developerより
https://developer.apple.com/documentation/corebluetooth

iOSでBLE(Bluetooth Low Energy)を使う時に使用するフレームワークです。
iOSでBLEを使う時は基本的にCoreBluetoothを使うことになります。

#BLEにおける役割とは?
CoreBl

元記事を表示

iOS & iPadOS 15 リリースノート日本語訳

# iOS & iPadOS 15 リリースノート

新機能を利用し、APIの変更をテストするためにアプリをアップデートしてください。

## 概要

iOS & iPadOS 15 SDKは、iOS & iPadOS 15を実行するiPhone、iPad、及びiPod touchデバイス用のアプリを開発するためのサポートを提供します。
SDKはMac AppStoreから入手できるXcode 13にバンドルされています。
Xcode 13の互換性要件についてはXcode 13[リリースノート](https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-13-release-notes)を参照して下さい。

## App Store

### 新機能

– [StoreKit](https://developer.apple.com/documentation/storekit) 2はSwiftの同時実行性などの新しい言語機能を利用する最新のSwiftベースのAPIを導入しています。このAPIを使用

元記事を表示

ios申請

## 概要
flutterで作成したアプリをapp storeに申請

## やり方
基本は[こちら](https://qiita.com/Labi/items/3b71b8f5ef065904c1de)のサイトを参考にさせていただきました
## ポイント
archiveする前にビルドする必要があるが、dbの設定をしてあげた
提出したら、appleチームが確認するので、専用のログインIDやパスワードも作成しておいてあげるとよい![スクリーンショット 2022-01-19 15.32.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417196/1571b5af-098b-69b0-58da-1d322bdbe3f2.png)

1 ビルドする
本番環境でアプリをビルドする

`flutter run –flavor prod -t lib/main-prod.dart`

2 archvieする
ターゲットをany ios device(arm64)に設定する
xcodeの上のメニューバーから

元記事を表示

【iOS × MVC】MVC アーキテクチャとは【コードあり コピペでOK】

# 目的
iOS開発における、MVCアーキテクチャを理解すること
筆者の備忘録

# 流れ
1. MVCの誕生
2. MVCの目的
3. 各レイヤーの役割
4. MVCの課題
5. (補足)Presentation Modelパターン
6. 画像表示アプリでMVCの実装 ← コードつき, コピペでOK

# 1. MVCの誕生
ここではMVCが誕生するまでの流れを説明していきます。

コード(:ViewControllerのようなもの) を ウィジェット(:ボタンやテーブル等のUIコンポーネント) に全て記載していた

`メンタルモデル`と違うものになってしまう

1979年にUIの表示をEditor、メンタルモデルをModelと名付けて、責務を分けた。

その後、Editorを「入力に属するもの(Controller)」「出力に属するもの(View)」に分けた。

View-Controller-Model:`MVC`の誕生

#### 補足
`メンタルモデル`とは
**人間が無自覚のうちに持っている、思い込みや価値観**
(例:画面は画面のプログラム、処理は処理のプログ

元記事を表示

ARの使い道が思いつかない人へ ARとはセンシングであるという考え方と、具体例 ARで紙を切り取る

#ARの使い道の考え方と、その具体例です。
具体例では、画像を登録して、現実の紙からその部分を切り取ります。

#ARってなかなか使い道がわからない
ARって楽しそうなものの、イマイチどういうアプリケーションに使えばいいかわからない。

#現実のものとどうインタラクトするかが鍵
リアリティを拡張するもの、ということは、ベースとなるリアルの理解が鍵となります。

#ARはセンシングである

現実を拡張するためには、現実を理解する必要があります。

ARとは、コンテンツを表示するもの、というのに加えて、
「センシングである」
というところから考えてみます。

ARコンテンツの配置は、あくまで現実を拡張する手段の一つであって、
コンテンツを現実のどこに配置するか、それによって何の現実を拡張しているか、がARの目的を形作るのではないでしょうか。

となると、**まずは現実を

元記事を表示

OTHERカテゴリの最新記事