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

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

ARの魔法を手に入れるーーARオブジェクトを指で移動・拡大・回転する方法

#AppleのRealityComposerで作ったARオブジェクトに指のジェスチャーによるコントロールをつける方法です

#RealityComposerは簡単にARオブジェクトをつくれる。でも、どうやって指でコントロールすればいいの?

ARオブジェクトをどんどん配置できるRealityComposerは、グラフィック・ユーザー・インターフェースでARコンテンツを作れて便利です。

これらのARを指で操作できたら、魔法みたいじゃないですか?
さて、どうすればそれが実現できるのでしょう?

#これが答えだ

短いコードを書くと実現できま

元記事を表示

NSObjectについてちょっと深堀りしてみた

## 概要

普段何気なく使用しているNSObjectについて、改めて調べまとめました。

なお、筆者はSwift、Objective-C及びアプリ開発初心者のため、内容の正確性をしっかり保証することができません。もし、不正確な表現などございましたら、コメントいただけると幸いです。

## NSObjectとは

Cocoaフレームワークにおける数少ないルートクラスで、NSObjectを継承することで、動的型付けであるObj-Cランタイムの柔軟性を教授することができます。

### その柔軟性とは?

**メソッド呼び出しをランタイム時に動的に行えます。**

より詳細には、NSObjectを継承するサブクラスのメソッド呼び出し時には `objc_msgSend()`によるインターセプションを介するため、ランタイム時にメソッド呼び出し先を柔軟に変えること(通称Swizzling)などが可能になります。

たとえば以下の一行目のようなコードはコンパイラによって、 `objc_msgSend`の呼び出しに置き換えられます。

“`objectivec
[obj message];
//

元記事を表示

ダイエットの進捗報告を爆速でするショートカットを作ってみた(LINE,Twitter)

#:pushpin:はじめに
こんにちは。初投稿です。
フォトウェディングに向けたダイエットのため、パーソナルトレーニングに通ってます:lifter_tone1:
トレーニング初回、トレーナーから「朝と夜の体重・体脂肪率、1日の水分摂取量をLINEで報告してください」と指示されました。
体重計とヘルスケアアプリは連携済みなので、ヘルスケアアプリからポチポチ入力していたものの…

**やっぱりめんどくさい!**

と、いうことで「ショートカット」という純正アプリを使って自動化させました。
また、ちょっと楽しくなってきたので、twitterに体重・体脂肪率を投稿するバージョンも作ってみました。
ダイエットアカウントで体重報告をされてる方がよくいるので需要があるといいなあと思ってます:relaxed:

#:pushpin:そもそもショートカットって何?
![514B0274-C0BF-45BF-87BA-15F57E593AEB.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518596/5f0db

元記事を表示

Couchbase Mobile開発:バックグラウンドでのCouchbase Serverとの同期

## はじめに

ここでは、Couchbaseが公開しているCouchbasae Mobileチュートリアルから、バックグラウンドフェッチに関するものを紹介します。

https://docs.couchbase.com/userprofile-couchbase-mobile/backgroundfetch/userprofile/background-fetch.html

Couchbase Mobileについては、以下参照ください。

https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872

Couchbase Mobileは、NoSQL組み込みデータベースCouchbase Lite、およびCouchbase ServerとCouchbase Liteとのデータ同期を担うSync Gatewayからなります。
Couchbase Serverにつ

元記事を表示

【BitriseとGithub Actionsの比較】iOSアプリでCIをやってみた

# はじめに
参加しているエンジニアコミュニティーで開催された輪読会にて[iOSテスト全書](https://peaks.cc/books/iOS_testing)を読み、その後同コミュニティーで開催されたBitrise体験会に参加しました。
その際に学んだBitriseの導入部分と、一人体験会で触ってみたGithub Actions(記事を読みながらやっただけ)の簡単な比較をCI素人目線でまとめたいと思います。

CI素人と書きましたが、最近までCIという言葉も知りませんでしたので、

>**CIとは?**
>Continuous Integrationの略で、継続的インテグレーションと呼ばれています。
>開発者が書いた新しいコードとマスターブランチ(トランク)を頻繁に統合するプロセスです。新しい機能開発のためにブランチを作成する場合、つぎにマージするまでの期間が長くなるにしたがって変更量が多くなり、マージ作業が大変になるだけでなく、問題が含まれるコードの特定と分離が難しくなります。一回のコミットでの変更量を小さくして頻繁にマージすれば、問題の発見が早くなり対処が楽になります。問題発

元記事を表示

動画を超解像してみたい iOSでやってみた

#CoreMLで動画を超解像してみました

#動画を超解像したらおもしろいんじゃないか

#動画をCoreMLの超解像モデルにかけてみる
今回は1フレームずつ超解像にかけてみるという力技に挑戦します。

#Step

1、CoreML-Modelsから超解像モデルをダウンロード

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

“`swift
lazy var srrequest: VNCoreMLRequest = {
let model = srmodel().model
let vnModel = try! VNCoreMLModel(for: model)
let request = VNCoreMLRequest(model: vnModel)
request.imageCropAndScaleOption = .scaleFill
return request
}()
“`

2、SemanticImageで動画フレームを処理

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

元記事を表示

[Flutter]初心者でもできる無限スクロールの実装方法

一覧表示画面で、スクロールすると次々にデータを読み込んでいく、無限スクロールを簡単に作る方法を紹介します。
無限スクロールを作る方法がいろいろあるのですが、初心者の自分でもできたのでこれが一番簡単かと思います。

## データを取得するAPIを準備する
今回はAPI経由でデータを取得し、一覧表示するのでまずAPIを準備します。
今回は、以下のswaggerで記載したtitleのみが一覧で返されるAPIを用意しました。次のデータがあれば、レスポンスのoffsetに次の位置が返り、なければ返りません。

“`yml:sample.yml
openapi: 3.0.0
info:
title: sample
version: ‘1.0’
description: sample
contact:
name: murapon
servers:
– url: ‘http://localhost:31180’
paths:
/list:
get:
operationId: get-list
summary: 一覧取得
de

元記事を表示

iOSで画像の類似度を計算する

#iOSで画像間の類似度を数値化する方法です

どちらが上の画像に似ている?

#にている画像を探したい

#VisionFeaturePrintが使える
VisionFeaturePrintは、たくさんの画像で学習した機械学習モデルによって画像の特徴

元記事を表示

[iOS] 動画像テクスチャを使って時系列変化を表示する AR アプリを作る

![pict1_1024.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/4d5c6778-0028-50b2-83d8-80a1b0c5fc94.jpeg)

iOS / iPadOS デバイスで動作する AR(拡張現実)アプリにおいて、仮想オブジェクトの表面素材(マテリアル)として動画像を使うことで、AR 体験に動きのある風景を取り入れたり、時系列データのビジュアル化に応用することができます.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.この記事では、NASA earth observatory の動画像(衛星データを元にした地球環境変化のビジュアライズ動画像)を例にとって AR 表示する方法を説明します.

# 仕組み

RealityKit の VideoMaterial 機能を使って動画像を AR 空間の仮想オブジェクトのマテリアルとして再生します.この VideoMaterial 機能は WWDC20 で紹介された

元記事を表示

MacbookでFinderを終了させたい

## はじめに
Macbookを使っていてとても気になること、それはFinderアプリが常に起動していること。
Windowsでいうエクスプローラーの位置づけにあるFinderアプリはたしかによく使うのだが、常に起動状態にあることがモヤモヤしている人も多いのでは。
そんな問題を解決すべく方法を今回はシェアします。
一瞬です。

## Finderアプリの終了する設定

“`
defaults write com.apple.Finder QuitMenuItem -bool true
“`

ターミナルを開いて、上のコマンドを実行するだけです。

このコマンドを実行し、パソコンを再起動すると、Finderアプリのメニューに「Finderを終了」という項目が追加され、⌘+QでFinderを終了できるようになります。

ちなみに以下のコマンドを実行すれば元の状態に戻ります。

“`
defaults write com.apple.Finder QuitMenuItem -bool no
“`

以上、Finderを終了させる方法でした。

元記事を表示

iOS用アプリのストア掲載についての備忘録

IT業界でエンジニアの卵として働いている小生が、iOS用アプリのストア掲載について毎回手順を忘れるので備忘録として手順を記録します。今回のケースはコーディングを外注しており、それをgitで管理しそれをクローンするところから始まります。すでにAppleIDの登録やAppleDeveloperでのアプリの登録は済んでいるものとし省略します。

1. gitからリポジトリurlをクローンしXcodeで呼び出す
1. 証明書要求の作成(mac側での操作)
1. Certificate(証明書)の作成
1. プロビジョニングプロファイルの作成
1. Xcodeでのビルド
1. ストアアップロード

![iosビルド図.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1508384/117c7e14-a855-444e-7b3a-ba63b3cf4f1e.jpeg)

## 1. gitからリポジトリurlをクローンしXcodeで呼び出す
バージョン管理システムであるgitで共有された、、サーバーリポジトリを

元記事を表示

UnityAds使用アプリにてiOS14以降のATT対応で安心してたらGDPR絡みでリジェクトされた話

#はじめに
これまでに買いきりアプリを作った経験はあるものの、広告収入のアプリは経験ないもので、
iOS14.5からATT(App Tracking Transparency)対応が必要だと言われてもなにそれ(?)状態でした。
「iOS14.5 UnityAds ATT」あたりでググって先人たちの知恵を拝借しなんとかなった結果、
とりあえず2021年12月にリリースできた拙作がコチラ↓(まず宣伝!)

https://play.google.com/store/apps/details?id=jp.Acodebank.JigsawPuzzle&hl=ja

https://apps.apple.com/jp/app/%E3%83%91%E3%82%BA%E3%83%AA%E3%82%A3%E3%83%8F%E3%82%A6%E3%82%B9/id1591404180

万全を期して作ったつもりですが不具合があったり、様々な都合で仕様変更があったりで
アプリのバージョンアップをすることに……

とは言うものの「一度審査を通過しているから大丈夫だろう」なんて思っていました。

Unity

元記事を表示

【2022年1月】【AppleStore審査】審査までの手順が微妙に変わってる。

#AppleStoreConnectの審査提出ページが変わってる。

AppleStoreConnectの右上が`審査へ提出`が`審査用に提出`になっていたり、プロモーションのテキストが`一番上`になってたり変わってます。
今まで通り右上から`審査へ提出`を押すだけでは、`審査に進みません!`
今までは`このバージョンの最新情報`の入力欄が一番上だったのが`中段`に移動したりと変わってますので記載する箇所には`要注意です!`

# 新しい審査提出手順

1.必要情報を記載して`保存`する。
ファイル名

2.`審査用に追加`を押下する。
ファイル名iOSアプリにApple Music機能を追加(音楽の検索と再生) (MusicKit)

これまでは、楽曲を検索するにはApple Music APIを使用する必要がありました。新たに発表されたiOSのMusicKitフレームワークによって、楽曲を検索したり、アルバム内の曲をすべてリストアップしたり、楽曲を再生したりするためのリクエストをより簡単に行えるようになりました。

このフレームワークは、Androidシステムでも利用可能です。この記事では、これについては触れません。

MusicKitの新たなフレームワークには、新しくなったSwiftの並行処理も採用されています。データのリクエストに対するレスポンスを待つには、`await`コマンドを使用することができます。

この記事では、`Apple Music`のカタログを検索し、音楽を再生するアプリの構築について説明します。

## 使用事例

Appleによると、可能となる使用事例にはゲーム内のBGM、トレーニング中の音楽、ソーシャルメディアなどが含まれています(しかしながら、ご使用の際にはライセンスや著作権などに関して、常にご確認をいただくようお願いします)。

## 最初にEntitlementを追加する

最初に

元記事を表示

【Swift】知っておきたいKeyPathの基本と使い方

# この投稿は何?
Swiftにおける`KeyPath`について、基本から解説します。

## 実行環境

– macOS 12.1
– Xcode 13.2.1
– Swift 5.5

# KeyPathとは
要は、「あるデータ型に定義されたプロパティまでの参照(パス)」です。

## Swift3時代のString KeyPath
`KeyPath`は、Objective-Cの時代から利用されていました。
Swiftでもそれを受け継いでおり、クラスに`objcMembers’属性をマークすることで利用できました。

“`swift:参照型データの場合
@objcMembers class Kid: NSObject {
dynamic var nickname: String = “”
dynamic var age: Double = 0.0
dynamic var bestFriend: Kid? = nil
dynamic var friends: [Kid] = []

init(nickname: String, age

元記事を表示

Flutter モーダルボトムシート(iOS風)でWebView表示

# はじめに
**Flutter**で**iOS風 モーダルボトムシート**(モーダルが下から出て、後ろの画面が少し小さくなるあれ)でWebView表示を実装しました。

# 環境
– Dart: 2.15.1
– Flutter: 2.8.1

# 完成形

![modl_bottom_sheet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1519965/ad735574-504d-e6fc-6494-c85c8edbf69f.gif)

# 実装
WebViewの説明に関しては、以下の記事で説明しているのでご覧ください。
– [Web画面表示(進捗バー付き)](https://qiita.com/k2rt/items/77cbd77b486c1b825d3f)

## Package

[modal_bottom_sheet](https://pub.dev/packages/modal_bottom_sheet)を使用します。(名前そのまま)

“`pubspec.yaml
dependen

元記事を表示

RxSwift入門に丁度いいサンプルコード書いてみた

## はじめに
最近、少しずつ`RxSwift`の勉強をしています。
僕が勉強始めた時、いい塩梅のサンプルコードを探すのに、少しだけ時間がかかってしまったので、自分が書いたサンプルコードを記事にしようと思いました。

これから`RxSwift`の門を叩く方のお役に立てれば幸いです。

## 前提条件
– Swiftが読めること
– Codableを利用したAPIリクエストについて理解していること
– MVVMの特徴を理解していること
– RxSwiftが概要レベルで分かること

## サンプルコードの概要
アプリを起動すると、Qiitaの記事一覧の検索APIをコールして、そのレスポンスをTableViewに表示するだけのアプリです。

`RxSwift`で動く簡単なアプリを第一目標にしたので、

– Protocolで抽象を参照するなどのリファクタリングはしてません。
– エラーハンドリングとか適当です。

↑ご容赦ください。

## コード&解説

`RxSwift`を利用するからには、データバインディングを活用したMVVMアーキテクチャを採用したいということで、今回は、MVVMで実

元記事を表示

【Swift】Screen(画面)・StatusBar・NavigationBar・TabBarのサイズ取得を集約

#はじめに
画面の縦横の幅やそれぞれのバーの高さを取得することが割と多く感じたのでまとめました。

#コード

“`swift
import UIKit

struct ScreenBarSizes {

// 画面の縦幅を取得する。
static func screenHeight() -> Int {

return Int(UIScreen.main.bounds.size.height)
}

// 画面の横幅を取得する。
static func screenWidth() -> Int {

return Int(UIScreen.main.bounds.size.width)
}

// ステータスバーの縦幅を取得する。
static func statusBarHeight() -> CGFloat {

return UIApplication.shared.statusBarFrame

元記事を表示

【iOS】世界一分かりやすいオープンソースライブラリの実装

#はじめに
アプリをリリースする際に著作権情報として使用したライブラリのライセンスを表示するかと思います。
LicensePlistを使用すると一発で使用中ライブラリを取得し設定アプリに表示してくれます。
アプリにコピペしなくて済む上に、ライブラリの追加・更新作業も自動でやってくれます。
もし他のサイトを参考にやってみたけどうまくできないという方にもお勧めです。

https://github.com/mono0926/LicensePlist

#実装
今回はCocoaPodsにて導入していきます。
Podfileにて↓を記入してpod installします。

“`
pod ‘LicensePlist’
“`

プロジェクトを開き、NewFileにてSettings Bundleを追加します。

![スクリーンショット 2022-01-24 15.45.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656839/54bf6d16-949e-cd26-06ec-39d02fd97080.p

元記事を表示

【iOS】App内課金のレシート検証で responseBody.Latest_receipt_info が undefined だった時の対処法

“NG:“ responseBody. **L** atest_receipt_info
“OK:“ responseBody. **l** atest_receipt_info

先頭を小文字にすればOKでした。

公式DOC([responseBody.Latest_receipt_info _ Apple Developer Documentation](https://developer.apple.com/documentation/appstorereceipts/responsebody/latest_receipt_info))は大文字始まりで書いてあるので注意です。

元記事を表示

OTHERカテゴリの最新記事