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

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

【Swift×AWS】iOSアプリにAPI Gatewayを導入してCognitoから指定のユーザーデータを消去する

## 前提
ユーザーの退会機能を作るべく、今までAmplifyを使用していたアプリにAPI Gatewayを追加したサーバレスアプリです。
Amplifyからユーザーの削除APIがあればよかったのですが見つからずで、Lambdaから実現することに。(もしAmplifyからのやり方を知っている人がいたら教えてください笑)
元々はLambdaが使えれば良く、どうやらLambdaを直叩きする方法もあるっぽいんですが、API Gatewayを触ったことがなかったのでそちらを使って実装してみることにしました。
また、今回初めてAPI Gatewayを触るので、とりあえずリクエストだけ実装してレスポンスはデフォルトです。
実装が甘いところ等もあると思いますがご容赦ください。

## 構成
構成はこんな感じ。これをAlamofireを使って叩いていきます。

![Untitled Diagram.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653537/f13f392c-f203-42da-4

元記事を表示

画像をコラージュする

#画像を組み合わせて一枚の画像を作る方法です

スクリーンショット 2022-01-31 11 38 13

#複数の画像から新しい画像を作りたい
複数の画像を組み合わせて一枚の画像にするとなると、はて、どうすればいいのか、、、と改めて思いました。

#Contextに描画すればいい

“`swift
UIGraphicsBeginImageContextWithOptions(CGSize(width: outputWidth, height: outputHeight), false, 0.0)

imageA.draw(in: drawRectA)
imageB.draw(in: drawRectB)
imageC.draw(in: drawRectC)

let assembledImage = UIGraphics

元記事を表示

iOS版SafariでGreasemonkey(クライアントサイドスクリプト実行)っぽいことをする

# はじめに

iOSのショートカットでJavaScriptが実行できるのを知ってますか?
ググってみたんですがショートカットがいまいち周知されてないのもあって
あまり知られていない機能のような気がします。

ショートカットって何?という方
→https://time-space.kddi.com/mobile/20191120/2783

JavaScriptが実行できるということは・・・
なんでも!
やれるということ!

つまりかつて人気だったGreasemonkey(ユーザスクリプトによる拡張機能)が
工夫次第でっぽいものが再現可能です。

Greasemonkeyって何?という方
https://ja.wikipedia.org/wiki/Greasemonkey

今回は簡単にCSSを自由に変更する例をご紹介します。
QiitaトップページのQiitaロゴを消してみましょう!

# 環境
– iPhone SE2
– iOS 15.1
– Safari

# ショートカットの作成
まずはアプリのショートカットを起動します。

![IMG-3406.PNG](https://q

元記事を表示

CocoaPodsの公式ページを読みながら初期設定をまとめる

タイトルの通りios開発時には使い方やエラーは調べてることがほとんどで、
そもそもCocoaPodsとはというものは調べたことが無かったため
公式ページを調べてまとめてみようという記事です。

基本的には下記の公式ページを翻訳などしてみていこうと思います。
https://cocoapods.org/

##そもそもCocoaPodsとは
– とりあえずの認識
Xcodeのプロジェクトでライブラリの追加、バージョン管理ができるもの
– 公式ページを翻訳
![about.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636051/b4da4b4f-b174-3ed8-f73a-5ee612abe16b.png)

機械翻訳するとやっぱりニュアンスが怪しいが大体は認識通りそう
というかもしかして他に説明が見当たらない?

とりあえず次に初期設定を見てみる

##Podsを使うための初期設定
– macのターミナルからCocosPodsをインストールす

元記事を表示

[SwiftUI]初めてのCloud Firestore[SPM]

## 記事の内容
[Firebase Authenticationで認証機能を実装する方法](https://qiita.com/yuujioka/items/d3b310e0a3fa2ddfab5a)に引き続き、Firestoreについてもまとめてみました。
ベースはSPMでの導入後を想定した記事になっています。内容としては以下の通りです。

・Cloud Firestoreとは
・データの追加
・データの取得
・データの更新
・データの削除

この記事を読む前にFirebaseへの登録やFirebase Authenticationを利用して認証機能を実装する方法はざっと知っておく必要があります。
認証機能については[Firebase Authenticationで認証機能を実装する方法](https://qiita.com/yuujioka/items/d3b310e0a3fa2ddfab5a)にSPMで実装する方法を記載しましたので参考にしていただけると幸いです。

## 環境
・ macOS: Monterey
・ Xcode: 13.1
・ SDK Version: iOS

元記事を表示

【Flutter】そのおじさん、オーバーフローしてませんか?

# プロローグ

Flutterの勉強を始めて1ヶ月。
Aさんの元についに初めての案件が!

**「おじさんが痩せたり太ったりするモバイルアプリ作成」**

仕様を見ると、
**「スクロールなしの1画面に文字とボタンとおじさんの画像を表示するだけ」**
らしい。

簡単そうだったので、Aさんは早速作業開始!
意気揚々に作り始めて30分。

Aさん 「できました!」
と自信満々にクライアントに見せる。 g

早速 **iPhone13** で確認作業が始まる。

クライアント 「うん、いい感じ!SafeAreaの対応もばっちりだし!!」

…でも、 **iPhoneSE 第一世代で確認すると、あららら?**

【iOS×Firebase】自動ログイン機能の実装方法

#はじめに
一度ログインしたらログイン状態を保持しておいてくれるスマホアプリは一般的ですが、
都度トークンの確認などをしているのかなと思い、面倒臭そうだなと思っていました。

しかし、Firebaseではこんなに簡単に記述できるのだと思い、めっちゃ便利だと個人的に感動したので備忘録として記述します。

#前提条件
FirebaseAuthを使ったログイン機能は実装している前提として記述しています。

#自動ログイン

自動ログインのコードを下記します。
アプリ起動時のSceneDelegateでユーザーのログイン状態を確認しています。

“`swift:SceneDelegate.swift
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
autoLogtin()
}

//MARK: – Autologin
func autoLogtin(){
//アタ

元記事を表示

【iOS×Firebase】リモートプッシュ通知の実装方法

#はじめに
FirebaseのCloudMessagingを使ったiOSでのリモートプッシュ通知の実装方法に関して、証明書の作製などなかなか手こずったので画像多めで(Qiita的にどうなの)記載していきます。
Firebase見習いなので、間違っている箇所などあればご指摘ください。

#必要要件
・Apple Developer Programへの登録(99ドル/年):APN証明書の作製に必要
・Firebaseへのアプリの登録
前提として上記が完了しているものとして記載します。

#そもそもFirebaseからどうやってiPhoneにメッセージを送っているのか?
iPhoneにリモートでメッセージを送るのはAPNs(ApplePushNotificationservice)という仕組みを使っています。
これはAppleのサーバー(APNsサーバー)からリモート通知を送る仕組みです。

外部サーバー(今回はFirebase)からプッシュ通知を送るためには、アプリに紐づけられたAPNs証明書が必要になります。
そのためAPNs証明書を外部サーバーに登録する必要があります。
ここで外部サー

元記事を表示

【SwiftUI】Listを作成する

#環境
Xcode 13.2.1
Swift 5.5.2

#Listとは
SwiftUIでは、これまでのUIKitのUITableViewやUICollectionViewを用いたリスト表示を実装したい場合は、`List`を使うことで再現ができます。
Listも表示が画面からはみ出た範囲をスクロールできるようになっています。
一番シンプルにListを用いた静的リストの実装は以下になります。Listも表示が画面からはみ出た範囲をスクロールできるようになっています。

“`swift
var body: some View {
List {
Text(“First Item”)
Text(“Second Item”)
Text(“Third Item”)
}
}
“`

Chartsでレーダーチャートを出す時にハマったこと

## 概要
Chartsを使ってレーダーチャートを描画するときに、Y軸に表示される目盛りの個数が合わなくて一生悩んだので備忘録として残しておきます。
結論からいうと、Y軸ラベルの個数が固定の時は `yAxis.setLabelCount(:force:)` を使いましょう。

## やりたいこと

– 5種類のデータを表示したい
– 表示したいデータは全て 0 ~ 100 の範囲内
– 目盛りには0 ~ 100 までの値を20ずつ区切った値(0, 20, 40, 60, 80, 100)を出す
– データは後から更新されることがある

## 実装してみる
大部分を端折ってますが、設定周りはこんな感じに。

“`swift
let chartView = RadarChartView()

// 共通設定
chartView.legend.enabled = false // 凡例無効化
chartView.highlightPerTapEnabled = false // タップ無効化
chartView.rotationEnabled = false // 回転無効化
chart

元記事を表示

パーミッションを要求するためアプリの設定画面へ飛ばす【Swift/Kotlin】

# はじめに

Android、iOSに限らず、アプリがBluetoothやカメラを利用する際にはユーザがその権限を許可する必要があります。

許可を求めるポップアップが表示され、そこで「許可する」「許可しない」をユーザが選択します。
「許可する」が選択された場合は特に問題ありませんが、「許可しない」が選択された場合は、もう一度許可を求めたり、設定画面から許可するように促す必要があります。

設定画面から許可を促すために設定画面へ飛ばすコードを以下に記述します。

# iOS

以下のコードでアプリの設定画面へ飛ばすことができます。

“`.swift
if let url = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
“`

以下の画面に飛び、権限の許可ができます。
![名称未設定3.jpg](https://qiita-image-store.s3.ap-northeas

元記事を表示

「The Ultimate Guide to WKWebView」をSwiftUIで実装する – Making a web view fill the screen –

最近入っていたプロジェクトでWebViewに関して本当に色々なタイプの実装をしました。
何年も改修を繰り返して様々な外部システムとの連携が必要だったということもあるでしょう。
色々ありましたが、自分のキャリア的には大きな影響を与えてくれました。(なぜかここで感謝)

とそんな時に
Hacking with Swiftで[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)という何やら良さげなページを発見。

見てみると、結構これやったな。
あ、他にもこんなことできるんだ、という学びになりました。

おさらいがてらそれを振り返りつつ、
**SwiftUIでちゃんとアプリとして動くところまで実装**してみました。

## 前提

私はUIKitの経験は少なく、SwiftUIの経験が長いかつ濃いです。
また自分の好みとしてもUIKitよりSwiftUIです。

このことからも推測できるとおり、**iOS開発に関してまだまだ

元記事を表示

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は、たくさんの画像で学習した機械学習モデルによって画像の特徴

元記事を表示

OTHERカテゴリの最新記事