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

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

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

縦横比のちがう2枚の画像をマスク合成するときに、
**場合によっては画像がはみ出してしまう。**
スクリーンショット 2021-12-15 10 07 46
【縦横に思い切りはみ出すfrontImage】

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

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

の組み合わせがあり、はみ出しがないように全てのパターンを記述するのは面倒くさい。
**僕は最初「短い方の辺で合わせればいいんだな」

元記事を表示

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

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

軽く自己紹介をさせて頂きます。
私は元々、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

元記事を表示

参照カウンタになじむ Part. 1

みなさん、こんにちは。freddi です。この記事は Swift Advent Calendar 2021 の Day 15 の記事として、参照カウンタの挙動を理解するために、Auto Reference Counting の挙動や `weak` / `unowned` について解説しました。

## この記事の目標
この記事では、読者の皆さんに以下のようになってほしいと思い執筆しました。

– 参照カウンタがどのように増減しているかをうまく言語化できるようになる
– なぜ `weak` と `unowned` が必要なのかをしっかり説明できるようになる

ただ、ボリューミィになってしまったので以下のことは解説してません。ですがこちらもかなり重要なので、近日中に別記事としてあげます。

– クロージャと `[unowned(or weak) self]` について

事前知識として、以下の知識があればスムーズに記事が読めると思います

– Swift の変数・関数の書き方、呼び出し方
– Swift の `class` の書き方、使い方。`struct` との違い(あれば)

この記事

元記事を表示

テスト観点一覧

# はじめに

こんにちは @nittannittan です。

今回は私がテスト設計時に抜け漏れがないかを確認するときに使っているテスト観点を書き出しておこうと思います。

テストをすり抜けてしまった不具合が見つかるたびにこのテスト観点は、更新していきます。

他にも抜けている観点があればコメントいただけると幸いです。

# 更新履歴

| 日付 | 更新内容 |
|:-:|:-:|
| 2021/12/14 | 初稿 |
| | |

# 入力観点

|項目名|説明|
|:—-|:—-|
|未入力|key,valueの値でkey自体がなかった場合|
|null|key,valueの値でkeyはあるが、valueがnullだった場合|
|空文字|key,valueの値でkeyはあるが、valueが空文字だった場合|
|型違い|key,valueの値でkeyはあるが、valueが想定外の型だった場合|
|0|0を設定した場合に期待通りの動作をするか|
|最小桁数未満| |
|最大桁数オーバー| |
|半角英字| |
|半角数字| |
|半角カナ| |
|全角| |

元記事を表示

【Flutter】アプリ起動時に未処理トランザクションを処理する方法

この記事は、[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory)の **14日目** の記事です。
昨日は、@arusu0629さんの「[個人開発アプリに XcodeCloud を導入してみた](https://qiita.com/arusu0629/items/fdd05f36c94662023cec)」でした。

# はじめに

FlutterでiOSの課金処理(消耗型)を実装する際、アプリ起動時に未処理のトランザクションを取得する方法と注意点を紹介します。

※in_app_purchaseプラグインは、最近Ver.2.0.0がリリースされましたが、本記事ではVer.1.0.9をもとにした内容となっております。

# ドキュメントの確認

Androidの場合は、未処理のトランザクションを取得する為の `queryPastPurchases` というメソッドが `InAppPurchaseAndroidPlatformAddition ` クラスにあるよう

元記事を表示

【Swift】NavigationBarを透明にしたけどCollectionViewCellが下がってしまう件について

#やりたいこと
NavigationBarを透過してCollectionViewを配置したけどCellだけStatusBarとNavigationBar分下にずれてしまうから画面トップから表示させたい。

#原因
NavigationControllerを継承している場合のSafeAreaはNavigationBarの下からになるからです。

#解決策
CollectionViewのinsetをStatusBarとNavigationBarの高さ分上にずらすことで実現できます。

“`swift
// ステータスバーの高さを取得する。
let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
// ナビゲーションバーの高さを取得する。
let navBarHeight = navigationController?.navigationBar.frame.size.height ?? 0
// バーの高さ分上にずらす。
collectionView.contentInset.top = -(navBar

元記事を表示

【Dart & Flutter】pub.dev に公開したライブラリが [UNIDENTIFIED] になる時の対応

# 1. pub.dev に公開したライブラリが [UNIDENTIFIED] になる時の対応

– [1. pub.dev に公開したライブラリが [UNIDENTIFIED] になる時の対応](#1-pubdev-に公開したライブラリが-unidentified-になる時の対応)
– [1.1. 概要](#11-概要)
– [1.2. 詳細](#12-詳細)
– [1.2.1. 原因](#121-原因)
– [1.2.2. 対応](#122-対応)
– [1.3. 結論](#13-結論)
– [1.4. 備考](#14-備考)
– [1.5. 筆者について](#15-筆者について)

## 1.1. 概要

私が開発保守している [Duolingo4D](https://pub.dev/packages/duolingo4d) という `Duolingo API` をラッピングしたライブラリがあるのですが、先日新機能の実装とテストを終えて `dart pub publish` を実行してア

元記事を表示

iOS版MSリモートデスクトップでAzureAD参加PCに接続する方法

インターネット上にもMicrosoft公式にも無い方法を見つけたので記載します。

#ハマりポイント
1.ユーザーアカウント名:メールアドレス は駄目。

2.PC版でのAzureAD参加PCに接続方法の「azuread¥メールアドレス」も駄目。

3.原因はiOSの文字の「¥」と「@」がMicrosoft側で認識できないこと

#結論(接続方法)
1.azureadアカウントでログインしているPCで、コマンドプロンプトでwhoami

2.1の結果(例:hogead\123456)をユーザーアカウント名に指定する
 ※「¥(円マーク)」ではなく「\(バックスラッシュ)」

元記事を表示

【Swift】APIでサッカー選手検索してみた

## はじめに

初めまして、株式会社やどかり超絶怒涛のOkaです。
入社してちょうど半年が経ちました。
希望していたスマホアプリ開発に携われて、
コードの理解に苦しみながらも日々楽しんで仕事しています。

## 今回のGOAL

みなさん、ご存知の通り12/13は全世界注目のマドリードダービーでしたね!
~~もちろん、僕が愛するAtletico de Madridの圧勝です!
ということで、Atleticoの勝利を祝して~~サッカー関係のAPIを使ってみました!(0-2で敗北…)
GOALは、”選手検索でAPI叩いて選手の詳細情報と画像を表示させる”です。
(成果物は一番下なのでskipしてもOkです!)
![IMG_6270.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318159/cc31cbeb-2848-af41-3d4b-bf58feff9610.jpeg)
かっちょええ〜

## 前提
Xcode: 13.0
Podライブラリ: SwiftyJSON, AlamofireImage

元記事を表示

SceneKitの衝突判定(Swift)

![Xcode-13.0](https://img.shields.io/badge/Xcode-13.0-brightgreen) ![Swift-5.5](https://img.shields.io/badge/Swift-5.5-brightgreen) ![iOS-15.0](https://img.shields.io/badge/iOS-15.0-brightgreen)

## はじめに
SceneKit で物体を衝突させようと思うといろいろ設定しないといけません:dizzy_face:

“`swift
let floorNode: SCNNode = {
let floor = SCNFloor()
floor.firstMaterial?.diffuse.contents = UIColor.blue
let floorNode = SCNNode(geometry: floor)
return floorNode
}()
scnView.scene?.rootNode.addChildNode(floorNode)

let b

元記事を表示

[iOS] 無料でCI/CDのパイプラインを構築したい

# Github Actions のセルフホストランナーで無料CI/CDをやりたい。

## セルフホストランナーとは
セルフホストランナーを使用して、githubActionsが用意した仮想環境でなく、自前で用意した環境(EC2などのWebサーバーなど)で実行できる機能。
自分のMacBookでも実行できるのでjob実行の際に、料金がかからないのが利点。
何十回と実行しても、使用時間は0分で収まっており、料金は発生していない。
なので、自社開発や個人開発、github actionsの学習には重宝されると思う。

![スクリーンショット 2021-12-13 15.09.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322570/a8321e78-30ed-6691-c5f0-d45ce5b0bba7.png)

## github上でのセルフホストランナーに必要な設定

![スクリーンショット 2021-12-06 21.32.58.png](https://qiita-image-sto

元記事を表示

実は、デザイン好きエンジニアはココを見てます…!

# はじめに
日頃 iOS アプリエンジニアとして活動している私は、個人アプリ開発でデザインも自身で行うなど、趣味レベルでデザイン領域を嗜むことがよくあります。今回は、そんな私が **デザインデータを見る時に注視しているポイント** をご紹介します。

– あ、、そこ適当にしがちだ…
– へぇ!そんな視点で見てるんだ!
– お!!私は問題なさそうだ!

こんな気付きを得てもらえたらと思い、執筆しました。
最後まで読んでいただけますと幸いです。

# 前提
iOS アプリのデザインデータであることを前提とします

# Font
文字ラベルに指定されている **フォントの種類** は必ず確認を行います。フォントの種類でそのデザイナーが Apple 製品の **フォント事情にどれだけ詳しいかがわかる** くらい重要だと私は考えています。
例えば、Apple 公式サイトの日本語フォントには「SF Pro JP」という Apple オリジナルの非公開フォントが使われています。これにできるだけ近いフォントを採用するという **こだわり** は、個人的には好きですね。他にも、**Android と

元記事を表示

Swift Package Managerで公開しているライブラリのPackage.swiftを最適化する

# はじめに
[MultipartFormDataParser](https://github.com/417-72KI/MultipartFormDataParser)というテスト用のライブラリを公開しています。
このライブラリのテストでいくつか別のpackageを使用しているのですが、これが理由でちょっとした課題を発見しました。
この記事では、その課題と解決策をご紹介します。

# 概要
MultipartFormDataParserとAlamofireのみを使ったサンプルプロジェクトを作成してみました。
以下のようなPackage.swiftを作成しています。

“`swift:Package.swift
import PackageDescription

let package = Package(
name: “Dependencies”,
products: [
.library(
name: “Dependencies”,
targets: [“Dependencies”]),
]

元記事を表示

iOS開発から見るcluster

この記事は [クラスター Advent Calendar 2021](https://qiita.com/advent-calendar/2021/cluster) 14日目の記事です。
昨日は、[yoshioka_ko57](https://zenn.dev/yoshioka_ko57) さんの、「[デザインデータの読み解き](https://zenn.dev/yoshioka_ko57/articles/understand_design_data)」 でした。普段やり取りさせてもらっているデザインデータですが、データの節々から様々な工夫や配慮を感じながら日々作業させてもらっています。圧倒的感謝:pray:

こんにちは。クラスター株式会社でソフトウェアエンジニアをしている橋本です。今年も残すところ半月ほどとなりましたが、みなさまいかがお過ごしでしょうか。私は、この残り半月という事実を到底受け入れられそうにありません…:innocent:

さて、[モバイル版clusterのアプリ](https://apps.apple.com/app/id1490075175?mt=8&l=

元記事を表示

Pigeonで安全なFlutter画面-ネイティブ画面のコミュニケーションを実装する

この記事は[Makuake Advent Calendar 2021](https://adventar.org/calendars/6822)の6日目の記事です。

# 概要

Flutter-Native間の通信は受け渡しできるデータ型がStringやprimitive型に限られたり、ネイティブメソッドを呼び出す際にメソッド名を文字列で取り扱う場面があるなど保守性に多少不安を感じてしまうところがある。

Pigeonを使うと、事前に定義したschemeをもとにFlutter/Java/Objective-Cのコードを自動生成しFlutter-ネイティブ間の通信をより安全に実装することができる。

例えば既存アプリにFlutterを部分的に導入したいがどうしてもFlutter-ネイティブのやりとりが発生してしまうケースにおいて、Pigeonを活用することでその障壁を下げられるかもしれない。

今回はFlutter化したログイン画面でのログイン成功時にネイティブ側にコールバックするケースを想定して実装してみる。

“`
[ネイティブ画面] -> [ログイン画面(Flutter)]

元記事を表示

個人開発アプリに Xcode Cloud を導入してみた

この記事は [and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 13日目の記事です。
昨日は、@y-okuderaさんの[『FlutterでアクティブなBottomNavigationBarItemがタップされたらトップまでスクロールさせてみる』](https://qiita.com/y-okudera/items/fcb9ed97a8e351e86e6a)でした。

# はじめに
今回は WWDC2021 で発表された [Xcode Cloud](https://developer.apple.com/jp/xcode-cloud/) を個人開発しているアプリ [『クラロワガイド』](https://apps.apple.com/us/app/id1542346138) に導入した際の記事になります。
基本的な部分は [『Xcode Cloud でプロジェクトをビルドしてみる』](https://qiita.com/koogawa/items/74a6c62

元記事を表示

[iOS]カスタムUIView研究

こちら https://qiita.com/maebaru/items/90f915f82e3d6425cbdc のやり方だが、カスタムビューを他のstoryboardから生成するとエラーになる。

init coder -> loadNib -> CustomView.xibを見に行く -> CustomView.xib上のViewがCustomViewクラスに設定されている -> init coder…という無限ループになってしまう。

CustomView.xibで、カスタムクラスとして設定するのをやめると上手く行くようだった。
https://tellusium.hatenablog.com/entry/2018/09/30/183523

files ownerとはxibをロードするクラスで、ibOutletなどを設定するクラスのことを意味する。通常ViewControllerはこれに当たる。UIViewでも、xib上のibOutletを受け取りたい時は、そのクラスをfiles ownerに設定すべきと考えられる。
https://stackoverflow.com/qu

元記事を表示

OTHERカテゴリの最新記事