iOS関連のことを調べてみた2021年12月17日

iOS関連のことを調べてみた2021年12月17日
目次

2021年12月 iOS Human Interface Guidlineの翻訳版 vol.1

## 読み方
日本人はまず日本語で読むのが早いでしょ…英語で頑張って読まないで。という思いのもと、日本語訳をDeepL先生に訳してもらったものを掲載していきます。日本語がおかしいと思ったところは英語で読めるように英語も記載しておきます。基本的に日本語だけ読めばOK

後ほど図もこちらに差し込みます(いいねしておいてもらえば後で見返せるように。少々お待ちを。)

2021年12月現在のiOSのHuman Interface Guidlineの翻訳になります。

## iOSデザインテーマ

アプリデザイナーには、App Storeのランキングで上位に食い込むような、優れた製品を提供するチャンスがあります。そのためには、品質と機能に対する高い期待に応えなければなりません。

iOSは、3つの主要なテーマによって他のプラットフォームと差別化されています。

わかりやすさ。システム全体を通して、テキストはどのサイズでも読みやすく、アイコンは正確かつ明瞭に、装飾は控えめかつ適切に、そして機能性を重視したシャープなデザインが動機となっています。ネガティブスペース、カラー、フォント、グラフィック

元記事を表示

最低限困らない SwiftUI を指定した Xcode プロジェクトを XcodeGen で生成する

この記事は、[ゆめみ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/yumemi) の17日目の記事です。

# はじめに
XcodeGen に入門しようと SwiftUI を指定した Xcode プロジェクトを題材にしたら、ビルドするためにちょっとした設定が必要でした。
この記事ではその原因と対応策を紹介します。

# 環境
– macOS 12.0.1
– Xcode 13.1
– XcodeGen 2.25.0

# 成果物
[gist](https://gist.github.com/macneko-ayu/2621414f90189f76c49bfc404e637d1d) にあげていますが、Qiita では展開されないので貼っておきます。

“`yml
# 任意のProduct Nameに置き換える(Targetも同様)
name: FooProduct

options:
bundleIdPrefix: com.example
deploymentTarget:
iOS: 15.

元記事を表示

個人開発したマッチングアプリのリリース後日談?

この記事は[個人開発Advent Calendarの17日目](https://qiita.com/advent-calendar/2021/personal-project)の記事です。

# 人生初の個人開発アプリ
人生初の個人開発アプリでマッチングアプリを開発しました。
ざっくり作ったアプリを説明しますと、`オンラインゲームをしたいユーザーを結びつけるiOSアプリ`です。

https://apps.apple.com/jp/app/clan-%E3%82%AF%E3%83%A9%E3%83%B3/id1570006169

以前リリース記事を書いたのでよかったらこちらをご覧ください。

https://qiita.com/smizuno2018/items/1ead475e760bc1b9bd9c

# リリース後の結果
個人開発でアプリをリリースするとどれくらいのダウンロード数になるのかを
`App Store Conncect`、`Firebase`のアナリティクスで確認していきましょう。

## App Store Conncect アナリティクス
まず、App Stor

元記事を表示

Swift Type Alias から学ぶ開発指針と雑学

# はじめに
iOS15 対応時に遭遇したとあるライブラリに対する **技術的対応方法** と、そこから学べる **雑学** をご紹介します。
Advent Calendar も後半に突入しましたので、気分転換として読んでいただければと思います。

# iOS15 対応
とあるプロジェクトで [BonMot](https://github.com/Rightpoint/BonMot) という Swift 製ライブラリを利用していました。
BonMot は文字の装飾をサポートするライブラリで Foundation.NSAttributedString を拡張して作られています。

結論、この BonMot 内のオブジェクト名と同様のオブジェクトが Foundation にも iOS15 から定義されることになったのです。それが StringStyle です。このように **Framework 間で名前の衝突** が発生した場合、Foundation が優先されるようで、iOS15 対応時にビルドエラーが発生するようになりました。

“`swift
typealias StringSty

元記事を表示

SwiftUI におけるアニメーションの基本的な実装方法について iOS 15 から deprecated になるものも交えて紹介

# はじめに
こんにちは、[アイカワ](https://twitter.com/kalupas226)と申します。
この記事は [Qiita iOS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ios) の 17 日目の記事になります。

この記事では SwiftUI でアニメーションを実装する際の基本的な実装方法を紹介します。
また、その中で iOS 15 以降では deprecated になってしまっているものについても触れます。

本当はこの記事の中で Combine を利用した時のアニメーションについても触れようと思っていたのですが、記事の内容が長くなりそうだったので、iOS Advent Calendar 2021 のカレンダー2の方で今回の続きの記事を公開する予定です。

# SwiftUI のアニメーションの基本的な実装方法

SwiftUI でアニメーションを実装するとすれば、大きく2つの方法が存在すると思います。
1つは animation View Modifier を利用した暗黙的なアニ

元記事を表示

MethodChannelとPlatformViewを使ってFlutterにネイティブビューを表示しよう

##開発環境
“`
Flutter 2.5.2
Dart 2.14.3
“`

#MethodChannelとは?
Flutterは柔軟なシステムを使用しており、AndroidではKotlinまたはJava、iOSではSwiftまたはObjective-Cで利用できるかどうかにかかわらず、プラットフォーム固有のAPIを呼び出すことができます。

#PlatformViewとは?
PlatformViewを使用すると、ネイティブビューをFlutterアプリに埋め込むことができます。
たとえば、AndroidおよびiOSSDKのネイティブGoogleマップをFlutterアプリ内で直接使用できます。

(ネイティブ側からFlutter側へ受け取るにはEventChannelを使います。今回は割愛します。)

##つまり

元記事を表示

FlutterでシステムのライフサイクルをSwiftで

## はじめに

ここ最近はFlutterをやっていて、業務でSwiftでプログラミングはほとんどやっていないですが、

やっぱり`if-let`とか恋しくなります。(アンラップの処理がDartめんどいというか自作しないといけてない)

そんなこんなですが、ネイティブ側とやりとりすることもあり、Flutterで書いてたSwiftの部分を備忘録的に載せていきます。

## AppDelegateでアプリのライフサイクルを通知

Flutterをやっていると言ってもまだ4ヶ月くらい[(Flutter開発を4ヶ月ほどやっての振り返り)](https://qiita.com/repepe2en/items/d30a545df23a03d32cca)なのでわからないことだらけです。

Flutterでもライフサイクルの概念はあり、全く同じではないのですがモバイル開発をしていればそんなに問題はないのですが、画面のライフサイクルというよりアプリ全体のシステムのライフサイクルで苦戦しました。

アプリ復帰時、アプリをバックグラウンドに移行したときにハンドリングできるライフサイクルメソッドは提供されて

元記事を表示

顕著物検出で、iOSでアニメキャラを華麗に切り抜く

#概要

画像からアニメキャラを細かいところまできれいに切り抜きたい。
顕著なオブジェクト検出を使って、iOSオンデバイスでそれを実現する方法を書きます。



#この記事で伝えたいこと

アニメキャラ

元記事を表示

iBeaconについてとその使い道を考えてみる?

この記事は,フラー株式会社 [Advent Calendar 2021](https://qiita.com/advent-calendar/2021/fuller-inc) の 16 日目の記事です

15日目の記事は @aikosogabe さんによる [Reactで教習所Lifeをちょっと助けてくれるかもしれないアプリをつくってみた](https://qiita.com/aikosogabe/items/4d01d3be294a9611fe2a) でした

この題材を選んだのはiBeaconについて触れる機会があったので調べた内容をまとめておきたいなと思ったのと、そこそこ有名だけど使われている機会に巡り合えないなと思っていたからです
(発信機にコストがかかってしまうので、だいたい同じような機能はGPSでの判定を使っているケースが多いからだと思いますが…)
読んでみて何かいいアイデアが思いついたら、コメントして教えてください

#iBeaconとは
iBeaconについて調べてみると、こんな感じで

– Apple社の商標
– Bluetooth low energy(通称

元記事を表示

iOSの Auto-Renewable Subscription(自動更新サブスクリプション)の値上げ対応は簡単だけど不安になる

# はじめに
本記事は [with Advent Calendar 2021](https://qiita.com/advent-calendar/2021/with) 16日目の記事です。

こんにちは [with](https://with.is/)で iOSエンジニアをしている増田です。

以前、弊社の with iOSアプリにて Auto-Renewable Subscription(自動更新サブスクリプション)の値上げを行いました。
実際対応は簡単ですが、細かい情報が探し辛く想定と違う仕様があったりもして不安になる事が多かったので、いろいろ書いておきます。

所感としては、良い意味でも悪い意味でも:apple:神が全ていい感じにやってくれるので、やらねばならない事が全然無い一方、やれる事も無い。
正しく課金商品の実装が出来ていれば、何も問題は起こりません。

[実際の手順は既にわかりやすい記事を書いてくれている方がいる](https://qiita.com/kirihata/items/d194db14fdb8d9ddb7a6#ios編)ので、本記事では不安になる点や気をつけ

元記事を表示

「Xcode13.2がダメならXcode13.1を使えばいいじゃない?」複数Xcodeを手動で併存する方法

##XcodeをAppStoreからインストールするといろいろ問題が・・・。
「Xcode13.2がダメならXcode13.1を使えばいいじゃない?」

iPhoneアプリ個人開発者のつねたです。こんにちわ。

Xcode13.2が不具合多すぎて苦しんでる人、多いですね。
他にも、「AppStoreでのXcodeバージョンアップが進まない。固まる。」などで苦しんでいる人も多いですね。

AppStoreからXcodeをインストールすると

* インストール実施時・バージョンアップ実施時の進捗がわからない
* 複数バージョン併存できない (=13.2みたいなウ◯コなバージョンになると死ぬ)

のでオススメできません。

ではどうすればいいのか?
について書いていこうと思います。

##概要

Xcodeには2通りのインストール方法があります。

* AppStoreからXcodeをインストール
* developerサイトからXcodeのセキュリティアーカイブファイル(xipファイル)をダウンロードしてインストール

お手軽なのはAppStoreからXcodeをインストールする方法です

元記事を表示

iPhone サポートOSバージョン一覧表

## はじめに
12月投稿の記事ですが、アドカレではないです。
社内の端末の整理をする際に困ったので今後のためにメモ(2021/12 更新)
都度更新予定

## 一覧表

| 端末 | 初期バージョン | 最終サポートバージョン |
|:———–|————:|————-:|
| iPhone | 1.0 | 3.1.3 |
| iPhone 3G | 2.0 | 4.2.1 |
| iPhone 3GS | 3.0 | 6.1.6 |
| iPhone 4 | 4.0 | 7.1.2 |
| iPhone 4S | 5.0 | 9.3.6 |
| iPhone 5 | 6.0 | 10.3.4 |
| iPhone 5c | 7.0 | 10.3.3 |
| iPhone 5s | 7.0 | 12.5.5 |
| iPhone 6 / 6 Plus | 8.0 | 12.5.5 |
| iPhone 6s / 6s Plus | 9.0 | 最新までサポート |
| iPhone SE 第一世

元記事を表示

【Internship Report】独学で頑張ってたらdipで本当にiOSエンジニアになれてしまった件

※ [dip Advent Calendar](https://qiita.com/advent-calendar/2021/dip-dev) 15日目の記事になります??

はじめまして!2021年10月から、[ディップ株式会社](https://www.dip-net.co.jp/)(以下、dip)にて、iOSエンジニアとしてインターンをしております[@Cychow](https://qiita.com/Cychow)です。
dipのインターンに参加してから早2ヶ月が経ちました。
![スクリーンショット 2021-12-14 0.51.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/773915/6a906a2f-1051-9514-db5c-9842390dbdca.png)
本記事ではインターンが始まってから2ヶ月間どのようなことがあったのかについて、技術的な話から普段の生活、働き方の話まで幅広く書いていこうと思います!!!

## 目次
[1. 簡単に自己紹介](#1-簡単に自己紹介)
[

元記事を表示

Androidアプリでバックグラウンド再生機能を実現するためのヒントとiOSアプリとの見比べた際の特徴を簡単にまとめてみた

## 1. はじめに

皆様お疲れ様です。「Swift/Kotlin Advent Calendar」の15日目を担当させて頂きます、fumiyasac(Fumiya Sakai)と申します。何卒よろしくお願い致します。

まずは僕自身の今年のトピックスとしては、昨年5月からお世話になっている現場では、iOSアプリ開発と並行してAndroidアプリ開発にも携わる機会があったり、これまでに執筆をしていた「[iOSアプリ会開発 UI実装であると嬉しいレシピブック Vol.3](https://www.amazon.co.jp/dp/B09HX6MQ1T/)」の商業誌化、そしてiOSDC Japan 2021での[パンフレット原稿執筆](https://github.com/fumiyasac/iosdc2021_pamphlet_manuscript/blob/main/manuscript.md)&登壇など、慌ただしくしながらも楽しく過ごしてきました。

業務の中で動画プレイヤー機能を盛り込んだiOS/Androidアプリ開発に携わっていたこともあり、今年のiOSDC Japan 202

元記事を表示

IOS Test Flightでアプリが立ち上がらない。

開発環境で、問題なく動いていたアプリ。
これを、AppleStoreConnectに上げて
TestFlightで起動させると、起動した瞬間にアプリがクラッシュする現象が発生しました。

TestFlight
アプリがクラッシュしました。
Xcode3.1

いろいろとやったのですが1日目は解決できず、2日目に解決しました。

原因
there is a bug in the compiler that is producing bad armv7 code, causing this crash. It is addressed in the Xcode 11.5 beta. To avoid this bug, please compile with Xcode 11.3 instead of Xcode 11.4, and disable bitcode so the App Store doesn’t recompile your app with the compiler that has this issue. When Xcode 11.5 is released,

元記事を表示

画像をマスク合成するときに、短いコードで縦横比率を計算してはみ出さないようにする

合成画像がはみ出さないようにする簡単な方法を書きます。
スクリーンショット 2021-12-15 10 07 46
【縦横に思い切りはみ出すfrontImage】

縦横比のちがう2枚の画像をマスク合成するときに、
**場合によっては画像がはみ出してしまう。**

###はみ出してしまう原因

はみ出さないように画像をスケール変更しないといけないのだが、
合成するFrontImageとBackgroundImageがあるとき、

FrontImageの横と縦どちらが長いか。
BackgroundImageの横と縦どちらが長いか。
FrontImageの縦とBackgroundImageの縦どちらが長いか。
FrontImageの横とBackgroundImageの横どちらが長いか。

の組み合わせがあり、はみ出しがないように全

元記事を表示

【Swift・iOS】 入門者必見!! 困らないAutoLayoutの”考え方”

初めまして!!@shogunzozoと申します。普段は株式会社ZOZOでiOSアプリの開発を行なっております。

軽く自己紹介をさせて頂きます。
私は元々、WEBのエンジニアからiOSエンジニアへと転向した経緯があります。
そのためiOSエンジニアとしての経歴は決して長いわけではないです。

この様なバックグラウンドを持っているため初学者のつまずきどころが痛いほど分かります。。。

そのため初心に返る目的も兼ねて、皆様が分かりやすく楽しみながら学べる記事を書いて行こうと考えております。
初めての投稿なため、至らない箇所・表現などありましたらご指摘お願い致します。
それでは、宜しくお願い致します!!

## 本記事の内容
自身が初学者時代に知りたかった…という様な内容をベースに書いていきます。
しかしながら、用語説明など他記事で書いてある様な事ではなく**考え方**に特化しております。

## なぜAutoLayout対応が必要なのか
※本記事はStoryboardでレイアウトを組む事を前提としています。

iPhoneが登場して以来今日まで、技術の発展と共に表現できる事が多様化

元記事を表示

iPhone 動画撮影時のレンズ焦点距離と撮影対象までの距離

 カメラのピント情報から物体までの距離を測れるかどうか調べました。
 LiDAR等のARKitの機能はバッテリー消費量が大きいので、それらに頼らないで距離を測ってみたかったというのが動機です。
<完成イメージ>
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/6643bc8c-217b-bbf4-9b7f-1ee9a3f37bc2.gif)

結論は**『1mくらいまでならおおよその距離測定はできそう。ただし、前提条件は多い。』**です。

以下、焦点距離の取得からレンズの公式を使った撮影対象までの距離の測定方法を解説します。

https://github.com/tamai999/CameraIntrinsicParameter

#### 1. 動画撮影時の焦点距離の取得方法

焦点距離はカメラの内部パラメーターから取得します。
内部パラメーターは `AVCaptureVideoDataOutputSampleBufferDelegate` のデリゲートを通して取得した `

元記事を表示

XCTContext.runActivityを使ってユニットテストをわかりやすくする

#XCTContext.runActivityとは

公式のリンクはこちらです。
https://developer.apple.com/documentation/xctest/xctcontext/2923506-runactivity/

`Creates and runs an activity with the provided block of code.`
とのことで直訳すると
`提供されたコードのブロックを使ってアクティビティを作成及び実行します`
みたいな意味です。

簡単にいうと、**これを使うとテストが構造化できて何をしているのか名前もつけることができる**ということです。

runActivity自体はXcode9から追加されたものでそれまではSpec記法が使えるQuickを導入していることも多かったと思います。

#実際に使ってみる

“`UnitTests.swift
XCTContext.runActivity(named: “searchButtonDidPush”) { _ in
XCTContext.run

元記事を表示

MKTileOverlayを用いてMKMapViewにタイルを表示する

# はじめに
※この記事は[LIFULL Advent Calendar 2021](https://qiita.com/advent-calendar/2021/lifull)の15日目の記事となります。
※2日目に投稿したけど、まだ空いていたのでまた投稿しちゃいます。

MapKitでピンを立てたりルートを表示したりすることはあったけど、`MKTileOverlay`を使ってタイルを表示させることはなかったので、大きく二種類の方法があったので今回やってみたという記事です。

# サーバ上にあるタイル情報を用いる場合
## 使用する情報
今回はよく検索にもヒットする**[国土地理院](https://maps.gsi.go.jp/development/ichiran.html)**のデータを利用します。

注意点としては以下があります。
>地理院タイルをウェブサイトやソフトウェア、アプリケーション上でリアルタイムに読み込んで利用する場合、地理院タイルは出典の明示のみで申請不要でご利用いただけます。

アプリ開発で使う場合は出典を明示しておきましょう。

## 実装
StoryBoa

元記事を表示

OTHERカテゴリの最新記事