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

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

Flutterでマイナンバーカードを読んでみた

## この記事について
この記事は [SUPER STUDIO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/superstudio) の20日目の記事になります。

## マイナンバーを読んでみたい
会社のアドカレなのに、弊社のプロダクトと関係ないものを作って投稿するのもどうかと思うのですが、マイナンバーカードからマイナンバーを読んでみたいのです。

そう、ほら、あれだ、たとえばいつか転売対策とかでマイナンバーによるユーザー認証が必要になっちゃったりしなかったり、ECカートだってそういう需要があるかもしれないじゃないですか。なんとかしてマイナンバーカードからマイナンバーを読んでみたいのです。

…だって、**男女のマイナンバーを足して素数になるカップルをマッチングするマッチングアプリ**を作ってみたいと思ってしまったからです。

## マイナンバーカードの仕様について
マイナンバーカードのようなICチップを積んでいるICカードは、演算機能を持ったコンピューターのようなもので、単純な読み取りでもきちんとしたプロ

元記事を表示

2023年、書き初め ならぬ アプリ書き出し初め のノリでアプリ作ってみた

## はじめに
こんにちは、@mediaboxesです。
久しぶりにReactNativeのAdvent Calendarに投稿します。

ReactNativeはTypeScriptでiOSとAndroidの両方のアプリを作れるという、エコな開発でサクッとアプリを作って両OSのアプリを作るれるので、新規事業の開発で重宝しています。
最近はマネージメント層として開発から離れていたので、学びのために休日開発をやってみたので総括として投稿します。

## 作ってみた
### なぜ作ったか
業務でReactNativeで開発が多いのですが、長期運用するとバージョンアップで大変苦労してきました。
+ 素のReactNativeをバージョンアップするとネイティブプロジェクトが無限パズル
+ ExpoのManaged workflowでネイティブプロジェクトを考えなくて楽だが、やりたいことが出来ないことがよくある
+ ExpoのBare workflowで結局ネイティブプロジェクトを管理しなければいけない

しかし、Expo SDK 42で発表されたexpo-dev-clientを使うことで、Ma

元記事を表示

Compose Multiplatformで作ったQiitaリーダーにさらに機能を追加した

この記事はNTTテクノクロス [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ntt-tx) シリーズ2の20日目です。

こんにちは、NTTテクノクロスの戸部@etctaroと申します。

普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。

今年はすでに[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)を書いています。
この記事はその続きとなります。

Compose Multiplatformでちょっと気になるあれこれも色々とやりましたので、
ぜひこちらもお楽しみください。

# はじめに
[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)のダイジェスト

– Compose Multiplatformの環境が整ってきたよ。
– いつものQiitaリーダ

元記事を表示

SwiftUI でデジタル時計のUIを実装してみる

SwiftUIの勉強がてらデジタルウォッチのUIを実装してみることにした。
チープな白黒液晶が懐かしくなり80〜90年代を席巻したカ⚪︎オ データバ⚪︎クなど所謂チープカシ⚪︎と呼ばれる腕時計のUIを参考に幾つかそのコンポーネントを再現することにした。

最終的にはそれをwatchOS上で動かせるようにしたいと思ったが、物理ボタンでの操作を想定したUIのはずなのでむずかしそう。
一種のアート作品として生暖かく見守っていただきたい。

# 📋 概要
どのようなアウトプットにすべきか考えたところ、懐かしいデジタルウォッチのUIコンポーネントを提供するレトロフューチャーなOSSにすることにした。需要はないだろうけど

現状のリポジトリは以下(まだPackage化は半端な状態)
https://github.com/JikeLab/DigitalClockKit

幾つか example として実装してみた画面はこの通り。
|||
|-|-|
|[SwiftUI]Buttonのタップと長押しで遷移先を変えたい

# はじめに
`Button`のタップと長押しの両方を共存させて処理を変えたいと思って試しに実装してみました。
開発時用の設定画面に遷移させたい、みたいなシーンで使えるかも?

# コード全文

サンプルコード

“`swift
import SwiftUI

struct ContentView: View {
@State var isLongPress = false
@State var isTap = false

var body: some View {
NavigationStack {
Button {
} label: {
Text(“押せ!!”)
}
.navigationDestination(isPresented: $isLongPress) {
SecondView()

元記事を表示

【SwiftUI】Chartsをまだ使ったことがなかったので株価アプリのUIっぽいの作って入門してみた3

# はじめに
この記事は前回の記事から続いています。
前回は株価をタップ&ドラッグした時のアクションを追加しました。

https://qiita.com/SNQ-2001/items/3b92fceb72721262a907

https://qiita.com/SNQ-2001/items/73132bf3cdbd4b8bb60b

今回はタップした時の上の株価を表示させる&タップしている株価の位置にsymbolを置くの2つをやってみます。

# 実際の株価アプリ
![RPReplay_Final1702894460.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/123885f4-83b9-6457-2ae0-83656fc83966.gif)

# 作成したサンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2023-12-19 at 13.54.20.gif](https://qiita-image-store.s3.ap

元記事を表示

Swiftのアクセス装飾子について理解する

# アクセス装飾子とは?
Swiftではアクセス装飾子を利用することができます。
装飾子を使用することにより、関数やクラスにアクセス制限を設けることができ、スコープ(使用する範囲)を明確にして定義することができます。
# アクセス装飾子の種類
### open
– 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
– 継承またはオーバーライドができる

:::note info
モジュールとは
importして読み込んで利用するFrameworkを作成するための仕組み。
:::

### public

– 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
– 継承やオーバーライドが不可能

### internal
– 同じモジュール内からのみアクセスできる
### fileprivate

– 同じファイル内からのアクセスのみ許可されている。

### private

– 装飾子を設けたそのクラスまたは構造体の中でのみアクセス可能(extension内でもアクセス可能)
– 一番制約の厳しい装飾子

:::note info
装飾子を何も付けなけ

元記事を表示

XCode15系にアプデしたらアプリがLaunchScreenから先に進まなくなった

# はじめに
この記事はand factory.inc Advent Calendar 2023 19日目の記事です。
昨日は @ichikawa7ss さんの「[なんのためにあるの?逆引きスクラムプラクティス](https://qiita.com/ichikawa7ss/items/50eac1c2b859fdfe8c3a)」でした。

# 起こったこと

– XCode14.2で開発を進めていたアプリをXCode15で起動したところ、LaunchScreenを表示した後に真っ暗な画面(black screen)から先に進まなくなった

# 解消方法

– `UISceneConfiguration.delegateClass` を指定したら解消

## 修正前
“`swift
/// this shows black screen with XCode 15.0~. (worked when XCode 14.2)
func application(
_ application: UIApplication,
configurat

元記事を表示

外に出ない自分を罵倒してくれるアプリを作った

この記事は[Qiita クソアプリ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kuso-app) シリーズ2 19日目の記事です。

## 初めに

フルリモートで働いているエンジニアの皆さんは、ほとんどが家で働いていることが多くて、
外に出ないことがあるのではないでしょうか?

自分も例に漏れずに、ずっとデスクの前にいて、全く歩かない日があります。

![歩数.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393442/9faf8d89-7419-ab4f-2e9a-641e79913216.jpeg)
**圧倒的歩数、!**

これではダメだ、外に出ないと、!
だけど外に出なくても叱ってくれる人もいない、外に出ない日は罵倒されたい、いや、罵倒してほしい
だけど時々褒めて欲しい

ということで、
その日に歩いた歩数をもとに罵倒してくれつつ(時々褒める)明日の運勢を占ってくれるアプリを作りました

[ソースコードはこちら

元記事を表示

UICollectionViewを用いた画面構築の基礎

# 概要
Swiftにおける画面構築の方法として、UICollectionViewを用いた方法があります。UICollectionViewを用いた画面構築では、UICollectionViewLayoutやUICollectionViewCellRegistration、NSDiffableDataSourceなどを駆使して画面のレイアウトや表示するUIViewを登録します。

さて、私は2023年の4月から本格的にUICollectionViewを用いた画面構築を始めたのですが、何度も挫折しそうになりながらも12月まで勉強を続けています。本記事では、私がUICollectionViewによる画面構築を始めてから学んだことをまとめます。また、本記事では記載する内容は基礎の情報のみに留めています。これからUICollectionViewを勉強する方々の助けになればと思います。

# 目次
[1.SectionとItem](#1-SectionとItem)
[2.UICollectionViewLayout](#2-UICollectionViewLayout)
[3.UICollecti

元記事を表示

【Flutter】 arkitを使ってARに3dモデルを表示する方法

この記事は、【 [可茂IT塾 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kamo-it) 】の16日目の記事です。

# はじめに
arkit_pluginライブラリを使ってARにglTF・glb形式の3dオブジェクトを表示する方法を解説します。

# 開発環境
– Flutter 3.14.0
– Dart 3.2.0
– arkit_plugin 1.0.7
– collection 1.18.0
– vector_math 2.1.4

# 実装手順
### 1. ライブラリのインストール
flutterでARを表示するには、**arkit_plugin** ( https://pub.dev/packages/arkit_plugin

元記事を表示

Swift / iOSでQRコードを読み取る

AVFoundationでのやり方

AVCaptureMetadataOutputObjectsDelegateの

>func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection)

という名前のデリゲートメソッドで毎フレームのQRコード検出結果が得られます。

以下はカメラ設定とQRコード検出のコードで、これでとりあえずQRコードの領域描画ができます。

![Dec-18-2023 22-04-59.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9e555ede-0703-ed0a-b455-763618d02a9b.gif)

“`swift

class ViewController: UIViewController, AVCaptureMetadataOutpu

元記事を表示

「iOSエンジニアは5年後にAppleエンジニアに転ずる」論者の考察

# ようこそ考察の沼へ
こんにちは。
山田遍音とかいて、やまだあまねと呼んでください。
ツバメと聞くと、舌打ちをしたりしていませんか?
りんご味のグミを過剰に咀嚼していませんか?
胸に手を当てて自分に聞いてみてください。

# 想定する記事読者
わたしの記事を開いた人は、残念だが、iOSエンジニアとして、食いつなげるかわからないが、iOSを含めApple製品の調査やコーディングをして糊口をしのぎたい人だ。
とどのつまり、わたしだ。

# Appleエンジニア・・・?
Appleエンジニアは、Apple社員かつエンジニア職に就いている人のことではない。
いや、おそらく、Apple社員かつエンジニア職に就いている人はAppleエンジニアと称していいはずだ。
iOSエンジニア・コーディングやアプリのリリースに関わる者は、今後2分する。
前者は従来通り、コーディングやライブラリ生成に関わるものたちだ。プログラマやPMとして、従来通り働く。
後者は、コーディングは得意ではないが、日本人でありながら翻訳が非常に得意で、Appleのドキュメントを迅速に理解し、チームメンバにわかるように連携する仕事に

元記事を表示

【SwiftUI】Chartsをまだ使ったことがなかったので株価アプリのUIっぽいの作って入門してみた2

# はじめに
昨日、株価アプリの見た目を作成しました。
この記事は前回の記事から続いています。

https://qiita.com/SNQ-2001/items/3b92fceb72721262a907

今回は株価をタップ&ドラッグした時のアクションを追加してみます。

# 実際の株価アプリ
![RPReplay_Final1702894460.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/123885f4-83b9-6457-2ae0-83656fc83966.gif)

# 作成したサンプルアプリ
選択するとグラフが青くなり、選択している日付に縦線が表示されます。

![Simulator Screen Recording – iPhone 15 Pro – 2023-12-18 at 15.18.03.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/82486c6e-2d89-30

元記事を表示

【iOS】個人アプリの大改修に立ち向かってみた。

# はじめに
この記事では、過去に開発したiOSアプリの大規模アップデートについての経験を共有します。特に、なぜこのタイミングでアップデートを行うことに決めたのか、開発プロセス、アップデートのリリースとその影響について焦点を当てています。自分の直面した課題とその解決策について詳述し、同様の状況に直面するかもしれない読者の方の参考となれば幸いです。
# 背景
## 改修前のプロダクト情報
### 開発環境
– 初回リリース:2018年
– 最終アップデート:2020年9月
– Minimum iOS Version:11.0
– プロダクトの規模感:小さい

### **改修を決意した理由**
リリース時に使用した広告SDKバージョンのサポート終了により、アップデートが必要となり、大規模な改修を決意しました。

# 改修方針
継続的なアップデートを行うための環境を整えることを目指し、以下の改修方針を決定しました。

### アーキテクチャ
– **MVVM**
– 選定理由
– 継続的なアップデートを行うため、責務分離を行いたい。
– 自分自身がM

元記事を表示

【iOS】react-native-webviewのスクロール速度が微妙だっのを修正した

React Nativeアプリを作っているときにiOSのWebViewのスクロール速度が遅いことに気がついた。
指でフリックしても全然滑らない。
同じサイトをSafariで表示させて比べてみても、スクロール量が全然違う。

### UIWebviewの設定値の問題だった
解決策を検索していてたどり着いた記事がこちら。

https://qiita.com/TechMeetMeet/items/44ccc4cb8ce2504091cd

WebView内のscrollViewのデフォルトの設定値が原因らしく、プロパティの変更で対応できるとのこと。

> 以下のようにするだけでスクロールの滑りがUITableViewのデフォルトと同等になります。
> “`
> self.webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal
> “`

### react-native-webviewで適用するには?
なるほど、ネイティブコードでの修正方法は分かった。ではreact-native-webviewで

元記事を表示

【UiPath】iOSショートカットからジョブを実行してみた

みなさん、こんにちは。:santa:

UiPathのiOSアプリでOrchestratorがあるのは皆さんご存じでしょうか。
![IMG_7224.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654526/1b8fb1c5-ff74-4d31-eda5-bc0859dfaae6.png)

このアプリはiPhoneからOrchestratorの操作ができるアプリです。
スクショを見ると、ダッシュボード、プロセス、ジョブ、トリガー、、、などさまざまな機能にアクセスが可能です。(詳しくは使ってみてね~)
![IMG_7228.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654526/4bc2ab28-88dc-accd-8ff3-43c3c52838aa.png)

今回はiOSアプリOrchestratorから、iOSショートカットにジョブを登録できたので、
iOSショートカット内の「オートメーション」を利用

元記事を表示

iPhoneで動物を検出する

iPhoneやiPadのカメラ、画像から犬と猫を検出できます。
![inu.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/a740a9a5-aef9-01a5-8e68-7f4c92d763a5.jpeg)

“`swift
let request = VNRecognizeAnimalsRequest()
let handler = VNImageRequestHandler(cgImage: cgImage)
do {
try handler.perform([animalRequest])
guard let results = animalRequest.results else { return }
for result in results {
let label = result.labels.first?.identifier // “Dog” or “Cat”
let box = result.boundingBo

元記事を表示

【SwiftUI】Chartsをまだ使ったことがなかったので株価アプリのUIっぽいの作って入門してみた1

# はじめに
iOS16から使えるようになったChartsをまだ使ったことがなかったので、iPhoneに標準で入ってる株価アプリのUIっぽい感じのものを作ってみました。
ほぼ同じのクローンみたいなの作ろうと思ったんですけど、難易度高くて諦めました。

# サンプルアプリ
今回作ったのはこんな感じ
![simulator_screenshot_F5254B35-F7E3-435F-BF3F-E81A558ED637.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5e7ce94e-e0db-4e24-42d2-96833c937c89.png)

本当はタップした日時の株価が表示されたらいい感じだったんですけど、むずくて断念しました。
そのうちやります。

# 準備
今回、日付を扱うので軽くDate拡張を作成しました。
これはメインではないので適当な感じです。
“`swift
extension Date {
init(year: Int, month: Int, day: Int

元記事を表示

【Unity】モバイルアプリ上で GPU 負荷を計測する

この記事は [Unity Advent Calendar 2023](https://qiita.com/advent-calendar/2023/unity) の17日目の記事です。

# はじめに

モバイルプラットフォーム (iOS / Android) では Unity 標準の [GPU Usage Profiler module](https://docs.unity3d.com/2022.3/Documentation/Manual/ProfilerGPU.html) のサポートには次のような制限があり、GPU 負荷計測を行うにはサードパーティー製のプロファイリングツールを使う必要が出てくるかと思います。

|Platform|GraphicsAPI|Status|
|:-:|:-:|:-:|
|**Android**|OpenGL|Supported on devices running NVIDIA or Intel GPUs.|
||Vulkan|Not supported|
|**iOS**|Metal|Not supported. Use XCode’s GPU

元記事を表示

OTHERカテゴリの最新記事