iOS関連のことを調べてみた

iOS関連のことを調べてみた

ARUCOマーカーをiOSで使う

# シンプルに検出する方法

### 1、OpenCVをXcodeプロジェクトに入れる

色々方法ありますが、これがシンプルかと。
ARUCOを含んだopenCV-iOSフレームワークを以下からダウンロード。

https://drive.google.com/file/d/1SpEmjRedHKq4XxWXAXiLv8alnKq1cuJ7/view?usp=sharing

zipを解凍してopencv2.frameworkというファイル名にしてXcodeプロジェクトのファイルのところにドラッグドロップしてコピー。

### 2、Objective-Cファイルとヘッダーとブリッジング・ヘッダーを作る。
OpenCV.mm(Objective-Cファイル。拡張子はmからmmに変更)
OpenCV.h(ヘッダー)
{プロジェクト名}-Bridgeng-Header.h(Objective-Cファイルを作ると自動生成のポップアップが出る)
という3ファイルを作り、OpenCVの関数呼び出しコードを記述。

“`obj-c:OpenCV.mm
#import

元記事を表示

ARKitで現実のオブジェクトとインタラクトする【ARObjectAnchor】

**現実のものとARオブジェクトを関係を持たせて配置したい**。
箱の上にARオブジェクトを置くとか。
そのためには、3次元の物の位置と大きさをつかむ必要がある。
ARKitの平面検出や、FeaturePointでは、詳細に物体の形状を認識できない!
LiDARならポリゴンメッシュが取れるけれど、搭載端末は少ない。
機械学習で2次元の位置形状はとれるが、3次元への変換がむずかしい。

**スキャンして物体を登録しておいて検出してみよう。**
妥協策として、物体をあらかじめスキャンすることで、ARアンカーとして位置検出する方法がある。

![May-15-2021 10-08-22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/0b42d2e6-c0e3-d3b0-beb1-d831ed584003.gif)

#スキャン済みのオブジェクトを検出する

###スキャン済みオブジェクトの登録

Assets.xcassetsの+ボタンからAR Resorsesのフォルダを作って、.arobje

元記事を表示

iOS の UI テストに Maestro を試してみる

# はじめに

UI 向けのテストツールはいくつかありますが、`Maestro` は後発?のツールです。
`DroidKaigi` の勉強会を発端?に SNS でも少し話題になっていたので、チームで試して見ました。

こちらは試してみた系の記事も出回っているので、重複した内容もあると思いますがお付き合いくださいmm
(半分は自分のメモようみたいな感じです、あしからず)

## Maestro とは?

UI テストを従来のもの(`XCUITest`)より簡単に書けるツールです。
具体的には指定された yml 形式で書くだけです。

https://maestro.mobile.dev/

タイトルは `iOS` ですが、`Android` もテスト可能です。
(フレームワークとしては `Flutter`, `React Native` も対応している)

さらにオープンソースになっており、無償で使うことができるのも面白い点です。

h

元記事を表示

LINEログインの実装を検討してみた

## やりたかったこと
– webアプリ
– スマホアプリ
LINEログインをどちらも実装したい。

## 実際にどうやるのか
細かい事は公式マニュアルに細かく記載してあるのではしょりますが、
簡単な図を使ってざっくりと説明して行こうと思います。

### 必要な設定・情報
実装するにあたり必要な前設定ですが。
– 公式アカウントを作成
– LINE Developersにビジネスアカウントでログイン
`サービスを利用するにはLINEアカウントと連携してください。`と表示されるので、連携する。
(公式アカウントで始めていれば問題ないと思いますが個人のLINEアカウントが必要ケースもあります)
– プロバイダーとチャンネルを作成

#### チャンネルを作成と以下の情報の取得が必須

:::note info
Channel ID: チャンネル登録時に発行されるID
Chennel secret: チャンネル登録時に発行される秘密鍵
Callback URL: 認証後の遷移先 URL 登録(複数可)
:::

### ユーザーに認証と認可を要求する
LINEプラットフォームとユーザーの

元記事を表示

TensorFlow Lite MicroをRustで再実装したBerryLite Runtimeの紹介

この記事は[Rust Advent Calendar 2023](https://qiita.com/advent-calendar/2023/rust) シリーズ3の22日目の記事です.

[TensorFlow Lite for Microcontrollers](https://www.tensorflow.org/lite/microcontrollers?hl=ja) インタープリターをRustで再実装しました.
(ずっと25日に登録したと勘違いしていて,大急ぎで書いています.)
BerryLiteのリポジトリは以下です.

https://github.com/kadu-v/berrylite

また,BerryLiteを使用したiOSデモアプリのリポジトリは以下です.

https://github.com/kadu-v/BerryLiteDemo

この記事では,まずBerryLiteの概要と使用方法について説明します.
最後に, BerryLiteを組み込んだiOSでもアプリを実装したので,紹介します.

## BerryLiteを開発した動機
[TensorFl

元記事を表示

【SwiftUI】輝度が低い色ほど透明度を上げる

# はじめに
`luminanceToAlpha`という機能を発見して、使ったことがなかったので調べてみました。
簡単にいうと、Viewの色が明るければ明るいほど、Viewが透明になるよって機能です。

iOS13から使えるようですが、あまり登場シーンがないので存在を知りませんでした。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-12-23 at 22.42.10.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/096d38b4-ad6a-2a0f-28da-7e51c617126e.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var selectedColor = Color.black

var body: some View {
VStack {

元記事を表示

【SwiftUI】複数の物体をアニメーションさせる時に連動して動かない問題を解決する(iOS17))

# はじめに
iOS17で`geometryGroup`という機能が追加されていました。
ドキュメントを見ても意味不明だったのですが、使ってみたら納得したので記事にしておきます。

# やりたいこと
![Simulator Screen Recording – iPhone 15 – 2023-12-22 at 20.04.04.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/8281aacf-920c-038c-68e0-653b81d52ed7.gif)

# しかし、こうなってしまう
![Simulator Screen Recording – iPhone 15 – 2023-12-22 at 20.03.30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/95c312f1-ff0e-1876-e60a-5f01702efa52.gif)

# 問題のある実装
“`swift
im

元記事を表示

俺でもわかるSwift Concurrency

この記事はCA Tech Lounge Advent Calendar 2023の22日目の記事です。

# はじめに
こんにちは!大学三年生のFJ2123と申します。
大学で物流や情報について学ぶ傍ら、CA Tech Loungeには今年の5月から、iOSエンジニアとして参加しており、日々メンバーの方々と交流しながら開発に励んでいます。
せっかくラウンジのアドカレの枠をいただけたので、今回はiOSエンジニアとしてかつ、他職種の方にもイメージだけでも掴んでいただけるように、~~そこはかとなく~~Swift Concurrencyについてまとめていきたいと思います。

:::note warn

記事内に間違いがあった際はお知らせいただければ幸いです。
:::

# そもそもConcurrencyって何?

ConcurrencyはSwift5.5(2021年6月頃) から登場した言語機能です。
具体的には以下の2つを従来と比べて、簡潔&安全に記述することができます。

1. 非同期処理
2. 並行処理

## 非同期処理

Swiftでは非同期処理をクロージャーのコールバックで実装して

元記事を表示

iOSでスクショ、画面録画防止するためのベストプラクティス

この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory) 22日目の記事です。
昨日は @yuu__uuki さんの[SwiftUIでのタップ処理の実装と応用](https://qiita.com/yuu__uuki/items/833dbe566ebc855c2aed)でした。

https://qiita.com/advent-calendar/2023/andfactory

https://qiita.com/yuu__uuki/items/833dbe566ebc855c2aed

## はじめに
著作権的に慎重に扱うべきコンテンツをモバイルアプリでサービス提供する際に、ユーザーのスクリーンショット操作をどう扱うかという問題は避けて通れないと思います。

たとえば動画サービスの大手Netflixさんのアプリでは、動画再生中にスクショを撮ると下のように作品部分が黒塗りされて作品画像が保存されないような仕組みになっています。

![IMG_2805.

元記事を表示

[UE5]リモートビルドを活用したIOS向けアプリ開発(実機にデプロイまで)

# はじめに
こちらは[Unreal Engine (UE) Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ue) の記事になります。
「UnrealEngine5でIOSアプリを作ってみたい」という方の参考になれば幸いです。また、間違っている点を発見された場合はご指摘いただけると嬉しいです。
>参考文献:[Unreal Engine 4でiOSアプリを開発する4つの方法](https://soramame-games.com/setup-ios#comment-47)

# 動作環境
Unreal Engine 5.1.0
iOS 17.1.2
Visual Studio 2022
MacOS 13.2.1
Xcode 14.2

# 開発環境
UE5でiOS向けのアプリ開発環境は大まかに分けると以下の4つに分類できます。

1.WindowsでBlueprintのみのプロジェクト
2.WindowsでBlueprint&C++のプロジェクト
3.MacでBlueprintのみのプロジェクト
4.Macで

元記事を表示

プログラミング教材を作ろう!Playground Book概論

この記事は、[フラー株式会社のカレンダー | Advent Calendar 2023 – Qiita](https://qiita.com/advent-calendar/2023/fuller-inc) の 22 日目の記事です。

21 日目は [@devKyousuke](https://zenn.dev/ansuke) さんで [TShockを用いてAWSでTerrariaのサーバーをたてよう](https://zenn.dev/ansuke/articles/8056022806016f) でした。

# はじめに
> 学習指導要領の改訂に伴い、プログラミング教育は2020年度から小学校で必修化され、翌年には中学校でも必修化されました。
そして、AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。

> プログラミング教育にフォーカスが当たり始めた今、我々も若きエンジニアを育てるために何かできることはないでしょうか?
> Swift Playground Bookなら、若い世代にプログラミングの楽しさを知ってもらうための教

元記事を表示

実装時の「違和感」と向き合ってみた

# はじめに

この記事は iOS Advent Calendar 2023 21日目の投稿になります。

今回は、普段開発している中で、ふと感じた **「違和感」** に関して自分なりにどのように向き合ったかを書かせていただきました。お時間ある時にでも読んでいただければ幸いです。

## 本題

例えば以下の要件がある画面を実装するとします。

– カレンダーを表示する
– 日付を選択し保存をできる画面
– ナビゲーションタイトルは「日付を選択」
– ナビゲーションタイトルはインライン表示
– ナビゲーション左には「キャンセル」ボタン
– ナビゲーション右には「保存」ボタン
– モーダル遷移で表示され、画面遷移しない、1つの画面でタスクを完結できること

上記の要件を満たすための画面を作る際、私は当初以下のような実装をしました。

“` swift
import SwiftUI

struct SampleDatePickerView: View {

@Environment (\.dismiss) private var dismiss
@Binding

元記事を表示

ビブルカードっぽいアプリを作りました。

[「クソアプリ Advent Calendar 2023」](https://qiita.com/advent-calendar/2023/kuso-app)の22日目の記事です。

昨日の記事は[Korangeさん](https://zenn.dev/korange)の
[インターネット上のすべてのサイトの文末に「知らんけど」を追加してデマ情報から身を守ろう](https://zenn.dev/korange/articles/5eb1e338f4cdc6)です。

# **1. 作ったもの**

ビブルカードっぽいアプリを作りました。

(開発者とワンピースとは一切関係がありません。)
(このアプリはしょーもないですが、ビブルカードにはロマンがあります。)

【SwiftUI】Pickerの特定の項目をユーザーが選択できないようにしたい(iOS17)

# はじめに
iOS17から`selectionDisabled`というモディファイアが追加されていました。
これはユーザーが選択できなくさせるようにするための機能っぽいです。

例えば、課金でしか使えない機能を選択できなくするみたいなことです。

あれ、`disabled`でもできなかったっけって思ったのですが、Pickerだと機能してませんでした。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-12-21 at 18.05.20.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0a599128-e831-bb9d-4933-35e91e41a734.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var selected: Int = 0

var body: some View {

元記事を表示

結局Unityのモバイルアプリはどう計測したらいいんですか?(途中で力尽きたポエム)

# はじめに
Unityでモバイルアプリの性能を測ることになりまして、調査しながら計測をやってみたら色々罠を踏みました。
その結果をまとめました。誰かナレッジ作って。ないですか。じゃあ一通りまとめます。
技術情報はありますが、普遍的な内容にまとめられなかったのでポエム扱いです。

# ことのあらまし
– とあるUnity製のモバイルアプリがあります。
– 結構重い。
– じゃあ、アプローチとしてグラフィックを軽くしてみましょうか。
– UnityのProfilerで計測しましょうねー。
– せっかくだから実機でチェックしよう!
– Macも持ってるからiOSとAndroid両方チェックできるな!
– USAGEでGPUがどれくらい変化したか取ったらいいっしょ!

# 結果
– うわー!ほしい情報が取れない…
– **PROFILERのUSAGEで出てほしいのに!**
– 結局目論見通りに軽くなったのかわからない!
– **相手に説明できない!!**

# どうすればよかったか?
– まずはPCのUnityエディタ上で測ろう
– 何がボトルネックになるか、

元記事を表示

iOS 端末での Bluetooth 接続(Background)について

# はじめに
はじめまして。
リンクラフト株式会社で開発業務をしている akaishi といいます。
アプリ開発をしたり、社内のツールを作ったり色々と雑多にエンジニアをやっております。

この記事は [LINCRAFT Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lincraft) の21日目の記事となります。

どうでもいい情報ですが、自分はリンクラフトのバイオハザード部の部長も務めております。
部員は自分1人だけですが!
皆さんもバイオやりましょう!!

# iOS 端末での Bluetooth 接続(Background)について🤔?
iOS での Bluetooth(BLE) の調査をする機会があったので備忘録も兼ねて記事にします。
本当は社内の Wiki にまとめようと思ってたのですが、色々あって書けていなかったので Advent Calendar で書いちゃえば一石二鳥なのでは!?と思い立った次第です。

### 調査する前の自分
以前(2016年ごろ)にも Swift で Bluetooth

元記事を表示

SwiftUIでのタップ処理の実装と応用

# はじめに
この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory) 21日目の記事です。
昨日は @twumo さんの[【JetpackCompose】TabRowのインジケーターをカスタマイズする](https://qiita.com/twumo/items/26aa023ab71ffc09e2b2)でした。

最近個人的に実務でSwiftUIに触れる機会が増えてきたので基本的なタップ周りの処理をまとめておこうと思います。

### 基本的なタップ処理
#### タップジェスチャ(onTapGesture)
最も基本的なタップジェスチャで、ビューがタップされたときのアクションを定義します。

“`swift
import SwiftUI

struct TapGestureView: View {
var body: some View {
Text(“タップしてください”)
.onTapGestur

元記事を表示

iOSのデフォルトメールアプリを作ってみた

この記事は、株式会社 [ACCESS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/access) の21日目の記事です。

こんにちは、メールアプリ [CosmoSia](https://cosmosia.net) の開発をしている @takuyakaneko です。
この記事では、iOS版CosmoSiaがデフォルトのEメールクライアントに対応するまでに行ったことを紹介します。

# iOSにおけるデフォルトアプリ

iPhoneを利用しているけどブラウザはChromeを利用したい、なんてことありますよね?
このようなユーザーの要望に応えるために、iOS14よりユーザーがデフォルトのWebブラウザやEメールクライアントを選択することができるようになりました。
Androidでは9から同様の機能を提供しており、iOSも追従してきた形ですね。

# デフォルトのEメールクライアントになるとできること

メールアプリもiOS上では他のアプリと扱いに変わりはなく、インストールするだけで普通にメールの送受信を行うこと

元記事を表示

FSCalendarでGoogleCalendar風のUIを作成する

## はじめに
この記事はSwiftのカレンダーライブラリである[FSCalendar](https://github.com/WenchaoD/FSCalendar.git)を使ってGoogleCalendarのようなUIを実現する方法について解説しています。

## 環境
* Xcode15.0.1
* Swift5.9

## 完成図
![Simulator Screenshot – iPhone 15 Plus – 2023-12-20 at 20.46.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741705/793dbf88-e361-a731-86d5-07b1f940a632.png)

Google Calendarを意識しました。

![Screenshot 2023-12-20 at 15.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741705/0eb24ffa-9d8

元記事を表示

【iOS】リリースしたアプリに高評価なレビューが来た時だけ通知する

# はじめに
アプリを開発してApp Storeにリリースした後、ユーザーからのレビューってめっちゃ気になりますよね。

良い評価をもらえた時はもちろん嬉しいです。
しかし、悪い評価をもらう事もあります。
悪い評価のレビューは暴言みたいなのも含まれていることがあります。

そんな悪い評価は見たくないですよね。

でも、良い評価をされた際は真っ先に確認したい。

そんな時にAppStoCeconnect設定です。

# 準備
– AppStoCeconnectのアプリをインストールしている
– 自分のアカウントにログインできている

# やりかた
設定したいアプリのページに行きます

1番下にスクロールすると「Notification」という項目があるので選択します。

  • OTHERカテゴリの最新記事