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

iOS関連のことを調べてみた2023年01月27日
目次

CoreML変換で入力を正規化する方法まとめ(inputにmean stdを使う)

# CoreMLの入力正規化ってどうすればいいの?

一般的に機械学習モデルで画像入力を使う場合、入力のピクセル値は小さく正規化されます。
具体的には、元々画像のピクセル値は RGBそれぞれ
**0~255**
で表現されますが、機械学習モデルの入力として使うときは
**0~1**

**-1~1**
などの小さな値に変換されます。

**0~1** であればpythonでは

“`python
# original python code
input = img / 255
“`

**-1~1** であればpythonでは

“`python
# original python code
input = img / 127.5 -1
“`

のように計算されています。

また、**mean(平均)を引いてstd(標準偏差)で割る**という正規化されることもあります。
以下のようなImageNetのmean(平均)とstd(標準偏差)がよく用いられます。

“`python
# original python code
mean = [0.406, 0.456, 0.48

元記事を表示

【Unity】知っていればよかった3Dモデル販売神サイト3選!!!

# はじめに
僕は、都内の某私立文系大学生の1年生です。
UnityとC#でARコンテンツ開発を主として活動しており、サブでWebアプリ開発も行っています。僕についての紹介はこちらから!
https://qiita.com/RyuseiItoh/items/80cc0f3c419b0d5a5e6b
# 開発に必要なモデルはどこから~
## (1)販売サイトから購入する!
3D・2Dオブジェクトなどの素材は多くのサイトで0円から販売しています!
かなりのクオリティの素材がタダで販売していることも多く、先ずこちらの導入を検討してみましょう!!

## (2)自分で作る!
Blenderなどの3DCGアニメーションを作成するための統合環境アプリケーションを利用するのが一般的です!!
ただ、習得にも一定の時間を要するため、こちらの手段を利用するならばそれなりの理由が必要でしょう!

# 神販売サイト3選!!
## (1)Unity Asset Store
**The王道**ですね!!
Unityでアセットを集めるならまず訪れるべき神サイト!!

元記事を表示

ionicでカメラまたはライブラリの写真を使用する

あまり、実装についての参考サイトがなかったため、書きました。

## 公式ページ
https://capacitorjs.com/docs/apis/camera

## 表
公式より抜粋(2023年1月26日)後、日本語訳
|prop|Type|Description|Since|
|—|—|—|—|
|base64Strinig|string|CameraResultType.Base64を使用している場合、base64 でエンコードされた画像の文字列表現|1.0.0|
|dataUrl|string|CameraResultType.DataUrlを使用する場合は、「data:image/jpeg;base64」で始まる URL、および base64 でエンコードされた画像の文字列表現。|1.0.0|
|path|string|CameraResultType.Uriを使用する場合、パスにはプラットフォーム固有の完全なファイル URL が含まれ、後で Filesystem API を使用して読み取ることができます。|1.0.0|
|webPath|string|w

元記事を表示

MVCについてコードを記載してアウトプットしてみた

## はじめに
MVCについてアウトプットしてみる。
また、アウトプットする上でNtificationCenterという通知方法を使用するが、本来の使い方ではない。そのため、あくまでMVCの学習の一環としてNtificationCenterを使用させていただきたい。

## 対象者
この記事は下記のような人を対象にしている。

– プログラミング初学者

## MVCの各々機能について
– Model
– システム内のビジネスロジックを担当する。
– UIに関係しない処理全て
– View
– ユーザーが直接目にするView部分の描画処理を行う
– Controller
– ModelとViewの仲介役(橋渡し的役割)
– ユーザーから入力された情報をModelに伝え、
– Modelが受け取った情報をModelが更新したら、このControllerを介してViewへ描画を指示する

## ソースコード
– Model
“`swift:Swift
import Foundation
import UIKit

//Model
/

元記事を表示

Xcodeビルドエラーの備忘録

**M1,M2のiOS Simulatorでビルドする際に発生するバグが対象。**
## **could not find module for target ‘x86_64-apple-ios-simulator’…**
対処法
1. Finderを開きXcodeのアプリがある場所に移動する。
2. Xcodeを右クリックして、「情報を見る」を選択する。
3. Rossetaを使用して開くにチェックを入れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128814/63c68162-e9ef-805c-69b5-23b220922f92.png)

## **building for iOS Simulator, but linking in object file … for architecture arm64**

対処法
1. Xcodeでプロジェクトを開き、TARGETSからアプリを選択してBuild Settingのタブを選択する。
2. Excluded

元記事を表示

【SwiftUI】SwiftUIでライフサイクルを定義したい。AppDelegateしたい。

# 概要
– SwiftUIでもUIKit時代のアプリのライフサイクルを決めておきたいなと思う
– 当たり前のことだけどメモ

# ソースコード
1. やり方は簡単。まず、AppDelegate.swiftを作成。
1. 以下のように、AppDelegateクラスを継承する(今回は通知の許可リクエストをアプリ起動時にやってほしいことを想定)。

“` swift: AppDelegate.swift

import UIKit

class AppDelegate: NSObject, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// 通知の許可リク
let cent

元記事を表示

【Swift】guardってむずくね

# はじめに
guard文を使用していて「!?」と思ったことがあったので記録しておきます。

# パターン1
このパターンは`url`の`nil`チェックをしています。
`nil`の場合はelse節が実行され、`nil`でない場合は下に処理が移ります。
この例では`url`は`nil`なので`print(“❌: URLが見つかりませんでした”)`が実行されます。
“`swift
let url: URL? = nil
guard let url else { return print(“❌: URLが見つかりませんでした”) }
print(“✅: \(url)”)
“`

# パターン2
このパターンは`bool`の真偽チェックをしています。
`false`の場合はelse節が実行され、`true`の場合は下に処理が移ります。
この例では`bool`は`false`なので`print(“❌: false”)`が実行されます。
“`swift
let bool: Bool = true
guard bool else { return print(“❌: false”) }
pr

元記事を表示

iOS App Dev Tutorialsを読んで実際にやってみた。その4

## 前回の記事
[iOS App Dev Tutorialsを読んでみた。その3](https://qiita.com/shomiya181210/items/f9f122fab2db17f2011f)
前回の記事を読んだ後、この記事をご覧ください。
## 今回の範囲
[Displaying data in a list](https://developer.apple.com/tutorials/app-dev-training/displaying-data-in-a-list)
4回目はリストにデータを表示させる。
## 内容の要約
### 1. デイリー スクラムのリストを表示させる.
– ScrumsView.swiftという新しいSwiftUI Viewファイル作成します。
– scrumstypeという定数を追加する。
“`ScrumsView.swift
let scrums: [DailyScrum]
“`
– Daily Scrumを初期値にする。。
“`ScrumsView.swift
ScrumsView(scrums: DailyScrum.sampl

元記事を表示

NavigationBarのカスタムBackボタンの見た目をデフォルトと合わせる

デフォルトのBackボタン(アイコンのみ)と見た目をほぼほぼ合わせることができたのでメモ。

Backボタンタップ時にアラート表示したいときなどにBackボタンの見た目を変えずに対応できるようになります!

| Default | Custom |
| —- | —- |
| ![Simulator Screen Shot – iPhone 8 – 2023-01-25 at 19.38.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179737/d346cb55-42ee-09e5-3d5a-d1796c9f45ee.png) | ![Simulator Screen Shot – iPhone 8 – 2023-01-25 at 20.04.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179737/3a5cc366-2db1-f40f-18bc-9208c3ee71e6.png)

元記事を表示

歩数を取得するならHealthKitと加速度センサーどっちがいいの?

先日投稿したGooglefitと加速度センサーに引き続き、今度はiOSでの歩数取得について書きたいと思います。

## iOSならHealthkit?それとも加速度センサー?

**加速度センサーとは?**

(これは前回とほぼ同じ内容です。)
スマートフォンの動きを検知する仕組みのことです。
iPhoneは端末のx,y,z軸それぞれを計測する加速度センサーを内蔵しています。
私がテストしたアプリだと、端末を軽く振るだけで歩数を増やすことができていました。

**HealthKitとは?**
iPhoneユーザーの方はみたことがあると思いますが、iPhoneに標準装備されている健康管理アプリです。

![スクリーンショット 2023-01-25 17.45.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629197/6d5ed898-d4d9-d69e-b138-2ff9bd084bd5.png)

アプリ内には下記のような機能が搭載されています。
・歩数データの取得
・心拍数や睡眠のデータ収

元記事を表示

プロジェクトで行ったVoiceOver対応

# はじめに

2021年6月に障害者差別解消法の改正により、民間事業者でも義務化され、公布から3年以内に対応が求められるようになりました。
そのため、自分の参画しているプロジェクトでもアクセシビリティの対応が増えました。
今後のためにも備忘録的に取り組んできた対応の一部を書いておこうと思った次第です。

自分の参加しているプロジェクトでは[Apache Cordova](https://cordova.apache.org/)というモバイルアプリ開発向けのフレームワークをベースに開発を行っています。
技術的には3割ほどネイティブの実装で他はwebの技術を利用しています。
なので、iOS,Androidとタグにありますが、この記事ではHTML,TypeScriptでの対応方法です。

また、利用した一部の例を取り上げるだけなので、根本的な技術の理解みたいなのはこの記事ではできません。。

# テキストやボタンの読ませ方の基本的な対応

基本的にはWAI−ARIAに定義されているaria-labelを利用します。
[WAI-ARIAについて](https://developer.mozi

元記事を表示

Xcodeで「The provided entity includes an attribute with a value that has already been used on this account. The app name you entered is already being used for another app in your account. 」

Flutterで作成したモバイルアプリをAppleStoreで提出しようと思ったら、「App record creation error」 と表示されました。

# 結論

https://appstoreconnect.apple.com/apps

App Store Connectで新しいアプリを作成していなかったことが原因

元記事を表示

クリーンアーキテクチャのディレクトリ構成

“`
├── data
│   ├── datasource
│   │   └── 永続記憶デバイスへのアクセス。repositoryから依存される。
│   ├── repository
│   │   └── 永続記憶へのアクセス。データ取得の架け橋。
│   └── network
│   └── ネットワークへのアクセス。
├── domain
│   ├── model
│   │   └── ビジネスロジック。usecase、presenterから依存される。
│   ├── entity
│   │   └── ビジネスロジックが含まれないデータ。メソッドは含む。依存しない。
│   └── usecase
│   └── ユースケース。model、entityに依存する。
├── presentation
│   ├── presenter
│   │   └── ユーザインタフェースの制御。usecase、model、entityに依存。
│   └── ui
│   └

元記事を表示

【Flutter】TextFieldのキーボード管理で苦戦した話

## きっかけ
参画させていただいているプロジェクトで、
「前の画面に戻ったときにキーボードが出ている状態にしたい」
とのことで、思いの外悩んだので備忘録も兼ねて。
(TextFieldも、CupertinoTextFieldも解決済み)

## あまりいい記事がかけなかったので結論
インスタンスの生成タイミングの見直しをすべき:frowning2:

## 悩んだ理由
### 1. 入力後すぐ初期化されてしまう
### 2. 初期値を設定時も入力後すぐ初期化されてしまう
### 3. キーボードが閉じなくなった
### 4. キーボードが開かなくなった
## 結論:何が悪いのか
### インスタンスを生成する場所が悪かった
ただこれに尽きる。
基本的なサイトでは**全て画面を描画するところで説明している**為、インスタンスの生成タイミングについては触れられていないので苦戦してしまったということ。
じゃあどうすればいいのかというと**親クラス**でインスタンスを生成すればいい。
“` dart
class _MyHomePageState extends State

元記事を表示

【SwiftUI】アクセシビリティ設定によって透明度が変化する

# はじめに
https://qiita.com/SNQ-2001/items/d94c39ed765889b46869

https://qiita.com/SNQ-2001/items/25e8602ab341c7ec2cb5

アクセシビリティ設定によって実機で試してみるなんてことはなかなかないので気づきにくいです。
今回もたまたま発見したので紹介します。
(今回はMacOS限定です)
(しかも、メニューバーアプリの`window`スタイルで発生した)
(しかも、私がアクセシビリティをオンにしてた)

ということでかなり限定的な記事ですが、記録しておきます。

# 該当コード
“`swift:App
import SwiftUI

@main
struct accessibility_sampleApp: App {
var body: some Scene {
MenuBarExtra {
ContentView()
} label: {
Image(systemName: “paperp

元記事を表示

iOS/AndroidでONLYOFFICEドキュメントとNextcloudを連携する

## ONLYOFFICEとNextcloudの連携について

ONLYOFFICEでは、ONLYOFFICE DocsとNextcloudを連携させ、クラウドストレージ内でオフィス文書を編集するための公式コネクタを提供しています。ONLYOFFICEコネクタは、Nextcloudの[アプリストア](https://apps.nextcloud.com/apps/onlyoffice)またはONLYOFFICE [GitHubページ](https://github.com/ONLYOFFICE/onlyoffice-nextcloud)よりダウンロードできます。

:::note warn
ONLYOFFICEとNextcloudの連携コネクタの詳細や仕組みについては、[APIドキュメント](https://api.onlyoffice.com/editors/nextcloud)のページをご覧ください。
:::

### 主な機能

* テキスト文書、スプレッドシート、プレゼンテーションの作成、編集、閲覧
* オンラインフォームの作成と記入
* 他のユーザーとのファイル共有
* ト

元記事を表示

【2023年初頭版】BtoB向けのiOSアプリの配信方法についてまとめ(非公開App、非表示App)

## はじめに
一昨年くらいからBtoB向けのiOSアプリを開発しており、ノウハウが溜まってきたので記事にしました。

iOSアプリをリリースする場合、App Store経由で配信するのが一般的かと思いますが、BtoB向けのアプリケーションだと用途やセキュリティ的な観点から、不特定多数には公開したくないというニーズがあるかと思います。

そういったときに、非公開Appと非表示App(名前がややこしい)が選択肢としてあります。
本記事では、この2種類の方法や詳しいやり方、注意事項について説明していきます。

## この記事の対象者

– iOSアプリの一般公開についてざっと知っている
– App Store ConnectのマイAppの画面を見たことがある
– BtoB向けのiOSアプリの配信方法について知りたい

## TL;DR
– 自社や特定企業のみの配信方法として非公開App(カスタムApp)があるよ
– 非公開AppはMDMを使って、組織で管理しているiPhoneや引き換えコードと呼ばれるURLで配信できるよ
– 非表示AppはApp Storeで検索しても出てこないけど、UR

元記事を表示

【SwiftUI】Textを全て大文字で表示する

# はじめに
Textを全て大文字で表記したい時、以下のようなやり方をしてませんか?
私はしてました。
“`swift
Text(“APPLE”)
Text(“Apple”.uppercased())
“`

専用のModifierがあったので記事にしておきます。

# やりかた
### 全て小文字
“`swift
Text(“Apple”)
.textCase(.lowercase)
“`

### 全て大文字
“`swift
Text(“Apple”)
.textCase(.uppercase)
“`
# おわり
結構SwiftUI使ってると思いますが、意外と知らない機能も多いなと感じました。

元記事を表示

【SKAdNetwork 計測】AppsflyerのNullコンバージョン値を使ってコンバージョンを推定する

## なに?

AppsflyerのNullコンバージョン値を使って、Appleのプライバシーしきい値によりマスキングされてしまったコンバージョンを推定してみます。

– [Appsflyer SKAN推定値](https://support.appsflyer.com/hc/ja/articles/7086372479505?query=null%E5%80%A4)

なお、Apple公式では「Null値」という表現はされておらず
プライバシーしきい値を満たしている場合のみ、コンバージョン値(`conversion-value`)が提供されると記載されています。

https://developer.apple.com/documentation/storekit/skadnetwork/identifying_the_parameters_in_install-validation_postbacks

## なぜ?
今までは、IDFAをベースにした推定モデルを使用していましたが、昨今データがどんどん減少していく中で精度が信頼できなくなってきた。

## コンバージョンの推定

S

元記事を表示

R Markdownでスライドを作成(ioslides)

# Rでスライドを作ろう
この記事を読むと、以下の3つができるようになり、どうでもいいことを1つ(4.)知れます。
ちなみに、2と3はスライドでなくても、HTMLファイルにKnitしたものであればできます。
注)Windowsのコンピュータを想定して書いています。他のOSでもできますが多少キーや、やり方が違うかもしれません。

1. R Markdownでスライドを作成できるようになる
2. 細かいスライドの設定のやり方が分かる(上下左右にスクロールできるページなど)
3. 作成したスライドをページのリンクとして共有できる
4. @masato-terai がなぜRでスライドを作るべきだと思っているのか

# Rでスライドを作成するには
 Rでスライドを作成する方法はいくつかあるのですが、今回はioslideを用いて行う方法を紹介します。その他のスライドについてはこちらで紹介されていました [[1]](https://rstudio-pubs-static.s3.amazonaws.com/869589_0491c9112c6d4d48af55a8e114280be2.html#4)。

元記事を表示

OTHERカテゴリの最新記事