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

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

【Flutter-iOS】【GithubActions】flutterのCD環境を整備してみた

# はじめに
普段仕事ではiOSアプリを開発していますが、
昨年5月頃からFlutterに興味を持ち始め、趣味の時間でFlutterアプリの勉強を始めました。
アプリの配信は毎回手間に感じていて自動化できないか?と調査をしていた内容を共有します。iOS編とAndroid編で分けようと思っていて、今回はiOS編です。

# 目標
「Githubにコードがpushされたときに、iOSアプリをTestFlightへのビルドのアップロードする。」
ことが目標です。
TestFlightへのアップロードが自動化できるだけでもかなり作業が楽になると思います。

# Storeにビルド配信する。
では作業を開始します。

## 最終的なフォルダ構成
今回追加するファイル、フォルダを含めた最終的なフォルダの構成です。

“`
.
├── .github
│ └── workflows
│ └── cd_ios.yml・・・・iOS用githubActionsの設定ファイル
├── ios
│ └── fastlane
│ ├── Appfile・・・・Store関係の

元記事を表示

【SwiftUI】Toggleを用いてチェックボックスを作る

SwiftUIでチェックボックスを実装する方法の1つとして、ToggleStyleのカスタムクラスを追加する方法があります。

**ToggleStyleとは、Toggleの外観と動作を定義するモディファイアです**

#カスタムクラスを実装する

“`swift
struct CheckboxStyle: ToggleStyle {
func makeBody(configuration: Configuration) -> some View {
// チェックボックスの外観と動作を返す
return HStack {
Image(systemName: configuration.isOn ? “checkmark.circle.fill” :
“circle”)
.foregroundColor(configuration.isOn ? .blue : .black)
.font(.system(size: 2

元記事を表示

torchvisionの画像分類モデルをCoreMLに変換する

#事前トレーニング済みモデルをCoreMLの画像分類モデルに変換してiOSで使う方法です

#画像分類モデルを変換したい
そのままTorchVisionの画像分類モデルを変換すると、出力は1000の数値になります。
これを、信頼度のパーセンテージに直し、画像分類モデルとしてプレビューできるようにしたい。

#クラス名とソフトマックス層を追加する
クラス名とソフトマックス層を追加すれば、1000クラス内のクラスごとの信頼度のパーセンテージが得られ、xcodeのプレビューも使えます。

#方法

torchvisionからモデルをダウンロード。

“`python
import torchvision.models as models

regnet_y_400mf = models.regnet_y_400mf(pretrain

元記事を表示

スマホからVNC / リモートデスクトップRDP

# はじめに
~ VNC/RDP connection from your Smart phone ~
スマホからサーバーやPC、またはラズパイのデスクトップにVNCやリモートデスクトップ(RDP)する、ちっちゃいけど使えるよ!しかもremote.itでインターネット越しにつないじゃおうという記事です。

# やりたいこと
AndroidまたはiPhoneを小さいながらも VNC/リモートデスクトップ のクライアントとして使ってみたいと思います。remote.itを経由すれば携帯電波網でも、しかもポートフォワーディング無しでリモートホストに接続できます。
キーボード/マウスをつなぐとなお一層使いやすいですね。Androidならテキトーなキーボード・マウスでも認識するのでハードルは低くかなり使える環境になります。

![smartphonevncrdp_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309124/77fc8a2f-7184-aee0-4854-a6822db8b5c1.p

元記事を表示

UNTimeIntervalNotificationTrigger.nextTriggerDate が正しい値を返さない話

## やりたいこと
UNTimeIntervalNotificationTriggerをNotificationCenterに登録したのち、あとからgetPendingNotificationRequestsを使って通知が発火する日時を知りたい。

## 何が変なのか
UNTimeIntervalNotificationTrigger.nextTriggerDateは、一見「次にイベントが発火する日」を返しそうだし、ドキュメントにもそう書いてあるのに、「現在時刻 + timeInterval」を常に返す。

### 返して欲しいもの
次にプッシュ通知が発火する日付

### 実際に返ってくるもの
現在時刻+timeInterval(なんの意味もない日付)

## 公式ドキュメント
次に発火する日が知りたかったらこのプロパティ使ってね、としっかり書いてある(2022/2/22現在)

“`
Use this property to find out when a notification associated with this trigger will next be deliver

元記事を表示

【SwiftUI練習】ビジネスチャットアプリのコピーアプリを作る #0

初めまして!Qiita初投稿です!
本日から自分の開発の記録を残すために投稿をしていこうと思います。初心者ですがよろしくお願いいたします。

# やること
* ビジネスチャットアプリのUIをSwiftUIを使って再現する
* ビジネスチャットアプリの動作をSwiftUIを使って再現する(第二弾に分ける?)

#筆者のレベル
専門学校1年生。
SwiftUIは一年ほど前にほんの少しだけ触れた。
独学でのFlutter歴が約半年。
Swiftはほぼ初心者。就職活動をする中で体験入社に参加させていただいた際に、Swiftをほぼ0から学習し、2週間かけてStoryboardでアプリを開発した。
(現在、その企業様にモバイルアプリエンジニアとして採用していただくことを目標に、就職活動に取り組んでいます。)

# やろうと思ったキッカケ
* とある企業様の体験入社に参加させていただいた際に、入社までに学習しておくべき内容についてご回答いただき、その内容を参考に、自分を成長させるために取り組みたいと思った。
* その企業様のアプリの仕様を再現することで、アプリの仕様を理解することにつながると考えた。

元記事を表示

iPhone is busy: Making Apple Watch ready for development 問題

iPhone is busy: Making Apple Watch ready for development 問題

## 解決方法
– iPhoneとMacの接続を一度切る
– Connect via networkしているなら、Bluetoothを切る
– AppleWatchのBluetoothを切る
– iPhoneをMacに再接続する

※AppleWatchの機内モードやWifiをオフにする必要はなく、Bluetoothだけの問題

## 参考
数ヶ月前からかなりの数の開発者がSame problemしてるなか、これが一番手っ取り早かったです。

https://developer.apple.com/forums/thread/691452?answerId=704977022#704977022

## 環境
– Xcode 13.0
– iOS 15.1.1
– Apple Watch 8.4.2

※Developer Forumを見る限り、Xcode 13.0 – 13.2まで広範囲で起きていて、2022/2/22現在根本的な解決方法が提供されてない模様。

元記事を表示

【ティラノスクリプト】背景に動画を流している場面でSEが途中で止まってしまうときの対処法(OSの問題)

#背景
ティラノスクリプトで作ったゲームをiPhoneでもプレイできるようにしたい!
ということでプロジェクトをそのままサーバーにアップロードしブラウザでプレイできるように試みました。
最初は「お、普通に動くじゃん!」と思っていましたが、bgmovieで背景に動画を流している場面で、playseで鳴らしていたボイスが途中で切れてしまうことに気づきました。
こちらの不具合が起きるのは自分が見た限りではiPhoneとiPadのみでした(macでも起きるかも?)。
windowsPCやAndroid端末では後ろで動画を流していてもSEは問題なく再生されました。

#原因
OSの問題。
ティラノスクリプト制のブラウザゲームはiPhoneだとBGMの音量が変更できない等の不具合が起きるので、今回の問題も似たようなものだと思われます。
Androidだと問題ないのに、、、

#解決策
mute=trueを追加しよう。

`@bgmovie storage=haikei.mp4 mute=true`

背景で流している動画をミュートにすることで解決します。
定かではないですが動画による音とSEでなら

元記事を表示

【iOS】UnitTestプロジェクトのディレクトリ内にあるJSONファイルのロード方法

# 課題
UnitTestをする時にテストデータのJSONファイルを、アプリ本体のディレクトリではなく、UnitTestのディレクトリに配置し、Test実行時に読み込もうとしたら、上手く読み込みができなくてハマったので解決方法を記事にしました。

今回やろうとしたことは、画像で見ていただいたほうが早いかもしれません。
![スクリーンショット 2022-02-21 16.30.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580445/530fb202-32eb-05ef-6f04-52f117791647.png)

上記のように、`QiitaPracticeTests`(UnitTest)のディレクトリ直下にテストデータ(JSONファイル)を配置している状態。

これをやる理由としては、テストでしか使わないデータを、アプリ本体のプロジェクトに入れたくないからです。
**→ 混乱するので、テストデータはテストディレクトリにしか入れたくない。**

### エラーになるコード
“`swift
cl

元記事を表示

SwiftUIスタディーアプリFabulaに関するお話

###Fabulaとは
[Fabula](https://apps.apple.com/app/id1591155142)アプリは、SwiftUIを学習して作成した小さな単位プロジェクトを集めて共有するサービスです。 学習を通じて作られた結果物をgithubにオープンソースとして共有しています。

また、[FabulaItemsProvider](https://github.com/jasudev/FabulaItemsProvider)というプロジェクトを通じて、複数の開発者が参加して、自分のコードをFabulaサービスを通じて配布することができます。 SwiftUIを学ぶ多くの開発者に情報を提供し、多数の開発者が参加することで、自分の開発スキルも向上させるための良い方法です。

[FabulaItemsProvider](https://github.com/jasudev/FabulaItemsProvider)はオープンソースです。 自分が開発したコードをPR(Pull Request)を通じて提供し、オペレータは最小限のエラーのみを除去してApp Storeに配布します。

元記事を表示

Flutterのslider(スライダー/ゲージ/メモリバー)ライブラリならSfSliderが断然オススメすぎる

## Sliderって?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533351/a4fa3c07-5f10-8172-9916-02e427f1e1a9.png)
これです。
もちろん汎用的な機能はflutter純正のsliderウィジェットにも備わっているのですが、
「メモリをつけたい…」
「(文字等は反転させず)左右反転させたい…」
「選択する●に文字を表示させたい…」
などの要望を叶えてくれるのがこのSfSliderです

## ライブラリ
syncfusion_flutter_sliders
https://pub.dev/packages/syncfusion_flutter_sliders
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533351/3d6a6a02-710c-b61c-3b23-052d2be94834.png)![image.png](

元記事を表示

服をセグメンテーションする cloth segmentation

#画像の中の服の領域だけを検出・分離する方法です

#衣服用のアプリケーションが作りたい
ファッションEC、試着アプリなど、服のセグメンテーションを行うことで、さまざまなアプリケーションが作れます。

#機械学習で服の領域を検出

セマンティック・セグメンテーションを用いれば、自動で服の領域を検出できます。

以下のモデルを用いて、Pythonで手軽に実行できます。

https://github.com/ternaus/cloths_segmentation

また、

元記事を表示

【SwiftUI】Watch Connectivity を利用して Apple Watch からバックグラウンドで iPhone にデータを送って画面更新する

## はじめに

iPhone でとある記録を取るアプリを作っていて,
Apple Watch でも記録取れると楽でいいよね〜ということになり,
機能実現できるかを簡単なサンプルアプリを SwiftUI で作って確認してみました。

使う技術は **Watch Connectivity** を使います。
以前同じような内容で記事書いたのですが,こちらは iPhone と Watch 側が
それぞれアプリを起動してアクティブであることを前提にしていました。

https://qiita.com/MilanistaDev/items/319e80033a185f31111e

ただ,実際に記録を取る際には急いでいたり,片手が塞がっていたりするため,
Watch 側で送信だけ行い iPhone 側のアプリを起動した際にデータを受信して
画面も更新する形の方が良さそうです。

今回は Apple Watch 側でバックグラウンドのデータ送信を行い,
iPhone 側でちゃんと受信して画面更新ができるかを確認します。

## Watch Connectivity

[Watch Connecti

元記事を表示

設計パターンとは ios

# 設計パターン

設計パターンについて初めて調べたので記録のために残しておきます?

## ?what
一言で言うと、**「どういうパターンでシンプルにするか」**の設計のこと。
![what_img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569820/e507188b-57c5-ffb6-351d-4fc75e089a85.png)

アプリ開発に慣れてくると、機能も多くなりコードを1つのファイル等に書きまくってFatViewControllerになってしまうことがあると思います。そんな時に設計パターンを意識することでみやすいコード、プロジェクトにすることができるのです。

設計パターンは別名アーキテクチャとも言います。今回はiosでの設計パターンを書きますが、他の言語においても概念としては同じことが言えます!

# ?Specific pattern
ここからは具体的なパターンを紹介していきます。

##① MVC (iosでは cocoaMVC ともいう)
###特長:Viewとmode

元記事を表示

【Swift】ジェネリクス?何それ美味しいの?

# はじめに
「ジェネリクスってなんやねん!」そう思っていた過去の自分にもわかるように、ジェネリクスの基礎の基礎の部分を説明していきます。この記事で説明するのは`関数`でどのようにジェネリクスを使うことができるかのみです。
この記事を読んでいただくことで、ジェネリクスを関数でどのように使えるか、ということがなんとなくわかるはずです!

# 開発環境
– macOS Monterey (Version 12.1)
– Xcode (Version 13.2.1)
– MacBook Pro (13-inch, 2020, Two Thunderbolt 3 ports)

# ジェネリクスのイメージ
ジェネリクスのイメージは___`「どんな型にもなれるやつ!」`___という感じです。
ポケモンでいうところのメタモンです。
ときにInt型に、ときにString型に変化することができる。そんなものだというイメージをまずは持っていただければと思います。
では、実際にサンプルを見ながら確認していきましょう。

# 実際の例を使って考えるパート①
## Int型の値を表示する関数を作ってみる。

元記事を表示

【iOS × SPM】Swift Package Manager で RxSwift インストールしてみた!

# 目的
Swift Package Manager でライブラリをインストールする手順を知ること
筆者の備忘録

# 流れ
①: XCode の Package Dependencies へ移動
②: ライブラリ(RxSwift)の GithubURL を入力する

# ①: XCode の Package Dependencies へ移動

「app → PROJECT → Package Dependencies → +」

# ②: ライブラリ(RxSwift)の GithubURL を入力する

RxSwift の Githubページ にアクセスする
「The Ultimate Guide to WKWebView」をSwiftUIで実装する #08 – Reading a web page’s title as it changes –

[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)をSwiftUIで実装してみるの、
8つ目になります。

前回と結構似てるので、軽めにいきます。

## 目次

シリーズ化していこうと思うので、全体の目次を置いておきます。
リンクが貼られていないアジェンダは、記事作成中または未作成のものになります。

|#|タイトル|
|——|—————–|—|
|01|[Making a web view fill the screen](https://qiita.com/kamimi01/items/b4d6cbafa587831c1be0)
(WebViewを画面に表示する)|
|02|[Loading remote content](https://qiita.com/kamimi01/items/c889979964820d5f9fa2)
(リモートのコンテンツ

元記事を表示

【Flutter】Error: Member not found: ‘packageRoot’.

# iOSのビルドでエラー

Flutterの参考書として購入した本のサンプルを実行しようとしたら以下のようなメッセージが出て、ビルドができませんでした。
自分でプロジェクトを新規作成した場合は、ビルドが成功してiPhoneのシミュレータが起動するのに…。

“`
Error: Member not found: ‘packageRoot’.
“`

なんせFlutterをインストールして参考書を買ってきたばかりなので、右も左もわかりません。
とりあえずGoogle先生に聞いてみました。

|![スクリーンショット 2022-02-20 12.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/1a085b38-b762-f6b7-32f1-328acbae1e17.png)|
|:-:|

ありがたいことにドンピシャの内容がありました!

https://stackoverflow.com/questions/70389267/error-member-not-found-pac

元記事を表示

PyTorchMobile-iOSで速度比較 「CPUのみ」「CoreMLバックエンド」「Metal」最速は?

#TorchMobileでGPUパワーを使う

MobileNetv2をiPhone11で実行。
CPUのみ、CoreMLバックエンド、Metalバックエンドを比べてみました。

#PyTorchモバイルを高速で使いたい

#CoreMLバックエンドもしくはMetalが使える
CoreMLバックエンドやMetalを使用するようにモデルを設定できます。
これでデバイスのGPUやニューラルエンジンを使えるようです。

https://github.com/pytorch/ios-demo-app

#変換方法

CPU

“`python
import torch
import torchvision
from torch.utils.mobile_optimizer import optimize_for_mobile

mo

元記事を表示

[iOS] (社内アプリ等で)限定的にアプリを配布する方法をまとめてみた

# 前提知識

## Apple Business Manager(ABM)

– Appleデバイスやアカウントを管理し、Mobile Device Management(MDM)による管理をサポートするための公式サービス。
– 法人であれば、無料で登録・利用可能。
– MDM製品と連携して利用するサービス。
– 実際に端末に適用させる設定を作るのがMDMで、配布するアプリを入手したり、端末を組織の所有物として紐付けたりしてMDMによる管理をサポートするのがABM。

**参考リンク:**

法人のiOSデバイス管理必携?Apple Business Manager総まとめ!

**公式ドキュメント:**

https://support.apple.com/ja-jp/guide/apple-business-manager/welcome/web

※教育期間向けには同じ位置づけで[Apple School Manager(ASM)](https://support.apple.com/ja-jp/guide/apple-school-manager/welcome/web)がある。

#

元記事を表示

OTHERカテゴリの最新記事