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

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

[Rails]Webアプリケーションしか作った事ない僕が、ネイティブアプリケーションを作りたい

#はじめに
初学者の私が、2ヶ月でRailsを学びWebアプリケーションを作れるようになりました。
IOSでリリースをするに至って
まずどのような知識が必要かをまとめる記事になっています。

##React Native

React Nativeは、iPhoneとAndroidどちらでも動かすことができる開発用フレームワークです。
JavaScriptで開発することができるため、JavaやSwiftが書けないエンジニアでも、React Nativeを使えばアプリ開発ができます。
React Nativeの開発言語は、JavaScriptです。そのため、JavaScriptのコードを書ければAndroidとiOSの両方で開発が可能になるフレームワーク

“`
Reactに慣れている人にとっては学習コストの低いReact Native
ネイティブエンジニアには、逆に学習コストが高くなると考えられます。
“`
##Flutter

FlutterはGoogleが作ったモバイルアプリ用のフレームワーク。
「Dart」という言語を使って開発をしていきます。

“`
モバイルアプリ開発

元記事を表示

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

## はじめに
いやあ〜クリスマスですね、思い出に残っているプレゼントはありますか?
僕は小学生の時にサンタさんにもらったガリューンです。(わかる人いますかねっ笑)
![garyuun.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318159/6d09dc96-7b5c-c05b-3a31-1b32f569ec60.jpeg)
電脳冒険記ウェブダイバーってアニメのキャラなんです、もう内容は一つも覚えてないですが。。。
このおもちゃ、テレビに繋いでゲームができるんですよ!
あの当時、おもちゃがテレビと連動するなんて画期的すぎて、Oka少年は夢中でした。
やっぱりプレゼントっていいですね、クリスマスに限らずいつでもプレゼント募集してますので、皆さんお待ちしております!

はい、では前回に引き続き、API-FOOTBALLを使っていこうと思います。

## 今日のGOAL
完全に自己満で色んな選手のプレーデータを見たいので、
今日は、前回作成した選手検索画面から詳細画面に遷移して色々表示していこうと思いま

元記事を表示

機械学習でかんたんアバター作成 Photo2CartoonをiOSでつかう

#アバター作成モデルがiOSでつかえる

写真にアバター風の漫画エフェクトをかけてくれる機械学習モデル。

#機械学習モデルを扱うのは難しそう?
とはいえ、機械学習モデルをつかうのはたくさん手順が必要なんじゃないの?

#変換済みのCoreML Modelをつかえばかんたん
変換済みのものがこちらにございます。これをつかえばすぐにiOSでアバター変換ができます。

#かんたん手順
[**CoreML-Models**](https://github.com/john-rocky/CoreML-

元記事を表示

Swift Playgrounds「自分だけの物語を選択する」を解説する

# この投稿はなに?
iPadとMac向けアプリの「Swift Playgrounds4」に用意されている「自分だけの物語を選択する」Appプロジェクトを学ぶための解説です。

新しくなったSwift Playgrounds4については、[以前の投稿](https://qiita.com/imchino/items/01d46c27c6a400aad1de)で解説しています。
# 「自分だけの物語を選択する」Appプロジェクトの概要
このAppプロジェクトは、Storyという名前のアプリを作成します。読者となるユーザーは、要所で表示される選択肢を選びながら物語を進めていきます。
下の画像はStoryアプリを起動した直後の画面ですが、物語のテキストの下に選択肢が3つあることを確認できます。

プロジェクトの実行ボタンをクリックし

元記事を表示

Flutterでのバックグラウンド処理のスケジューリング実装が難しいというお話

## 初めに
iPhone純正アラームのような規定時刻&曜日に通知を送って音を鳴らす目覚ましアラームアプリを、Flutterにて個人開発しています。
しかし、作り始めてみたところ思った以上に実装難易度が高く、調べた中で得た知見を共有します。バックグラウンドって何度も書くのアレなので以降**BG**とします。

また、いやいやこれでいけるんじゃないですか?みたいなコメントは大歓迎です。

## TL;DR (忙しい人用)
– 現状アプリkill状態でのBG処理のスケジューリング実装は**MethodChannel**を用いてOS毎にコードを書く必要がありそう…?(調査中)
– 調査段階の中途半端な状態で投稿すいません。
– アラームアプリ等、BG処理のスケジューリングは**茨の道**。
– 規定時刻&曜日のローカル通知は[flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications)の[zonedSchedule](https://pub.dev/packages/flut

元記事を表示

【Swift】Screen(画面)・StatusBar・NavigationBar・TabBarのサイズ取得を集約

#はじめに
画面の縦横の幅やそれぞれのバーの高さを取得することが割と多く感じたのでまとめました。

#コード

“`swift
import UIKit

struct ScreenBarSizes {

// 画面の縦幅を取得する。
static func screenHeight() -> Int {

return Int(UIScreen.main.bounds.size.height)
}

// 画面の横幅を取得する。
static func screenWidth() -> Int {

return Int(UIScreen.main.bounds.size.width)
}

// ステータスバーの縦幅を取得する。
static func statusBarHeight() -> CGFloat {

return UIApplication.shared.statusBarFrame

元記事を表示

Swiftで指パッチンカメラを作ってみた

# はじめに

:christmas_tree:
この記事は、[SLP KBIT AdventCalendar2021](https://adventar.org/calendars/6706) 25日目の記事です。
気づいたらもう最終日になってました。[2日目](https://qiita.com/Gomatamago_/items/8585dfdd38a93e41cecf)と[7日目](https://qiita.com/Gomatamago_/items/c11e63d19877268ee261)も担当しているのでよかったらご覧ください。

ということで、

元記事を表示

既存の動画にフィルターを適用する方法

#撮影済みの動画にフィルターをかける方法

既に存在している動画にフィルターをかけられれば、
面白い編集ができる。
#フィルターはリアルタイムでしかかけられないのか?

既存の動画を処理したい。
しかし、動画の処理を書くのは大変そう。

#[**SemanticImage**](https://github.com/john-rocky/SemanticImage)で秒で解決

[**SemanticImage**](https://github.com/john-rocky/SemanticImage)というライブラリなら、
かんたんに既存の動画にフィルターを適用できる。

#使用方法

###1、SemanticImageをインポートする
SwiftPackageManagerで[**SemanticImage**](https:/

元記事を表示

[iOS] AR Quick Look API を使って AR アプリを作る

iOS / iPadOS の AR Quick Look API を使うことで、とても少ない行数の Swift コードで iOS / iPadOS 用の AR アプリを作ることができます.
この記事では、AR 表示のための 3D データの準備、アニメーションや対話性を持つ AR シーンの制作、AR Quick Look API を使った AR アプリ開発までの一連の流れを説明します.

1. 3D データ準備: 実物の写真から Computer Vision 処理(Photogrammetry)で 3D データを生成します.
1. AR シーン制作: 仮想オブジェクトを配置したり、アニメーションや対話性を持つ AR シーンを GUI で直感的に制作します.
1. AR アプリ作成: AR Quick Look API を使う Swift code により AR アプリを作ります.

# AR Quick Look の基本

開発の一連の流れの説明の前に、AR Quick Look (ARQL) について復習します.
ARQL は WWDC18 において発表された iOS 12 以降に提

元記事を表示

【iOSアプリ】VIPERアーキテクチャのプロダクトで配属されて3週間の新卒社員のOJTをした話

この記事は[レコチョク Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の最終日の記事となります。

# はじめに

はじめまして。レコチョクの河野です。19年4月に新卒入社し、現在はiOSアプリエンジニアとして、Eggs・新規プロダクトのiOSアプリの開発・運用などを担当しています。また、21年度は新卒エンジニア研修全体の主担当としてカリキュラム策定から新卒メンバーへのフォローなど研修期間を通じて様々な業務を担当しました。音楽の専門領域はアイドルまわりで、個人的今年の1曲は[日向坂46 「どうする?どうする?どうする?」](https://recochoku.jp/album/A2002179393/album?ds=1011563170)です。よろしくお願いします。

レコチョクでは例年、エンジニアとして新卒入社したメンバーが新卒研修を終えた後に各部署に配属されてからOJT期間を経て、段階的に実務的な開発・運用業務に参画する仕組みがあります。そして、今年度iOSチームでは21年入社の[o

元記事を表示

自前でDIコンテナを作ってみる試みとRxSwiftを利用した構成への適用を試してみる

## 1. はじめに

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

Swift/Kotlin愛好会Advent Calendarでは、[「Androidアプリでバックグラウンド再生機能を実現するためのヒントとiOSアプリとの見比べた際の特徴を簡単にまとめてみた」](https://qiita.com/fumiyasac@github/items/2f698d6c330530338826)というタイトルにて、iOS/Androidアプリでのバックグラウンド再生機能を実現する上で、ポイントになり得る点を双方の比較をしながら解説した記事を書きましたので、こちらもご覧頂けますと嬉しく思います。

今回はUIまわりのトピックではなく、実務や個人開発を通じて、OSSライブラリのDI(Dependency Injection)を実現するためのライブラリを参考にしながら、自前で実装する&リプレイスするが機会がありましたので、自分なりの事例に関して簡単ではありますが

元記事を表示

Playgroundsを用いるApp開発において,パッケージを追加する

#概要
Playgrounds及びiOS, iPadOSのアップデートに伴い,Mac上のXcodeを用いずともAppの開発を行うことが可能となった。Playgroundsにおいて,外部ライブラリを使用したいと思った。XcodeであればcocoaPodsを使用するが,Playgroundsでは使えなさそうだった。そこで,Playgroundsにおいて,外部ライブラリ(パッケージ)を追加する方法を記載する。

#前提
今回は,アプリ内でグラフを描画したかったので,ChartsというSwiftのライブラリを導入しようと思った。基本ライブラリであれば,

“`swift:import.swift
import SwiftUI
import Accelerate
“`

のようにすれば簡単に導入できる。
ところが,外部ライブラリであるChartsはこのままimport文を記述しても”No such module ‘Charts'”と,怒られる。

#方法
①Playgroundsのアプリ内で,ファイルを追加するボタンをタップする。
②最下部に「Swiftパッケージ」とあるので,これをタップす

元記事を表示

Realm objectの取り回し方法について考える

(なぜか限定公開でPublicにしてなかったので今頃公開。基本的な考え方は今でも通じるはず)

# なぜ考える必要があるのか

– 保存されたRealm object(Managed Realm object)は[スレッドを直接またげなかったり](https://realm.io/docs/swift/latest/#models)、[変更にはtransactionが必要](https://realm.io/docs/swift/latest/#writes)だったりと気をつけることが多いです。
– そのため、運用ルール以外の方法で安全にRealm objectを取り回す方法を考える必要があります。

# [VO](https://qiita.com/sagaraya/items/96708cd451021fb040b7#vo-value-object)を何にするか

Realm object([DAO](https://qiita.com/sagaraya/items/96708cd451021fb040b7#dao-data-access-object))を[VO](https:/

元記事を表示

SwiftUIでFormatStyleを使って色々なデータをTextで表示

# 概要

SwiftUIで文字を表示する`Text`では文字列を表示できますが、色々なデータも変換を通して表示できます。
以前からFormatterを使った表示がサポートされていましたが、iOS 15から、`FormatStyle`というものが加わり、Formatterを作らずとも色々なデータをそのままTextで表示できるようになりました。

# 表示方法

## 日付 (Date)
inputに`Date`、formatに`Date.FormatStyle`を指定します。

“`swift
struct SwiftUIView: View {
let date: Date = Date()
var body: some View {
Text(date, format: Date.FormatStyle.dateTime)
.font(.largeTitle)
}
}
“`

![スクリーンショット 2021-12-24 13.22.19.png](https://qiita-image-store.s3.ap-n

元記事を表示

Combine を使ったアニメーションを Scheduler で自由自在に操る方法

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

[前回の記事](https://qiita.com/kalupas226/items/153fdaf783379e7d865a)では、SwiftUI の基本的なアニメーションの実装方法について紹介しました。
本記事では、SwiftUI のアニメーションについて非同期なコードが絡む時にどのような工夫をしなければならないかということについて紹介します。特に、非同期なコードとして Combine を利用した時の話をしていきます。

前提知識として、combine-schedulers というライブラリの仕組みを知っていると記事が理解しやすくなると思うため、combine-schedulers についてキャッチアップするための記事等をぶら下げます。

– com

元記事を表示

【ゆく年くる年】2021年末からiOSアプリをリリースするためApple Developer Programにジョインしましょう

# どういうことか

iOSのアプリをリリースするためにはApple Developer Programに登録する必要がある。
で、このプログラムを始めるためには年額12,980円(1,180円の税込み)というまあまあな課金をする必要がある。

## よくわからなかったこと(読み飛ばしてもいい)

下記のページを見たら「アプリを使って登録しましょう」といったことが書いてあるが、いざアプリをDLして開いてみたら「**このApple IDでは、Apple Developer Appからの登録をご利用できません**」などと書いてある。なんなのだ??
結論から言うと下記のページは参考にしなくてもいい(もしかするとこれが当てはまるユーザもいるのかもしれない。Apple IDの登録時期とかで)。

https://developer.apple.com/jp/support/enrollment/

https://developer.apple.com/jp/support/app-account/

## 実際に登録する

まず個人情報の登録。

https://developer.apple

元記事を表示

最新の超解像モデルReal ESRGANをiOSでつかう

#最新の超解像機械学習モデルがiOSでつかえる
320*320


超解像


1280*1280

小さなサイズの画像を鮮明に、大きなサイズにしてくれる超解像モデル。
2021年発表のReal ESRGANもiOSで使える。

#機械学習モデルを扱うのは難しそう?

とはいえ、最新の機械学習モデルをつかうのはたくさん手順が必要なんじゃないの?

#変換済みのCoreML Modelをつかえばかんたん

Real ESRGANも変換済みのものがあります。これをつかえばすぐにiOSで超解像ができます。

#かんたん手順

[**CoreML

元記事を表示

Universal Linksを用いたiOSのDeep Link対応

iOS 13以降の Universal Links について紹介します。

# Universal Linksとは

iOS 9からサポートされて、Apple が正式に提供したディープリンク技術です。
簡単にいうと、通常の HTTP リンクで設定すると、その URL を踏んだ時に、端末のデフォルトブラウザで Web サイトを開く代わりに、アプリを起動してページへ遷移することができます。
URL スキームと似ている機能ですが、主に下記の違いがあると思います。

* Custom URL スキームが不要です。 `hoge://` みたいなスキームではなく、 通常の HTTP リンクのスキーム `https://` でアプリが起動できるので、 Web サイトとアプリ両方同じURLで遷移できます。
* Web サーバーにアプリの起動条件を記載する apple-app-site-association を配置する必要がある。URL のパスやパラメータなど設定することで、アプリに遷移させたいリンクのみ指定可能です。
* 直接にブラウザにURLを入力した場合、アプリが起動しません。同一ドメイン内で

元記事を表示

スマホでストレージの空き容量が無くなった時に、アプリデータがどうなるか試してみた

##はじめに
面倒なのであまりやらないんですが、ストレージの空き容量が無くなった時にアプリが動いてて、どうなるのかなーって思いますよね。
まあOSが不安定になったり、動かなくなったりするので、アプリ側はあまり心配もしてないんですが、自前アプリで動作確認してみました。

スマホはフラッシュメモリーなので、長く使ってると、ライトエラーも起きますしねえ。
##結果
###android 11エミュレータで試しました。
– プリファレンスへ出力
– 消えたりしなかった。書き込もうとした分は書き込めてなかった。
– ファイルへ出力
– ファイル内容は丸っと消えた。途中まで書き込めたりもするだろうね、きっと。試してないけど。対策すればいいんだけど面倒だね。
– sqliteへ出力
– DBファイルは無事。書き込めないので例外が発生して、落ちた。

###iPhone XRで試しました。
androidと違い、空き容量200MBぐらいでダメになりました。設定のiPhoneストレージで確認したので、使用セクターの使ってない部分の合計が200MB近いとかなのかな

– NS

元記事を表示

XcodeのiOSシミュレータ、古めのやつが劇遅な件

##はじめに
自社アプリを開発していて、ちょっと古いiOSシミュレータが劇遅だった。
最新iOSシミュレータだと問題なかった。xcode11/12/13でそうだった。
##原因は
Objective-CアプリでAVAudioPlayerを使っていると、理由はわかりませんが、劇遅になるようです。自社アプリだけかもしれませんが。
Swiftアプリは作ってないので、どうなのか不明です。

対策として、シミュレータ向けビルドではAVAudioPlayerを使わないようにしました。まあ主要機能じゃ無いので、開発中はなくても困らない。

“`obj-c
//古めのiOSシミュレータだと劇遅になるので、SE無し
#if TARGET_OS_SIMULATOR
return;
#endif
“`

##終わりに
まあそれだけ。最新iOSシミュレータのみ問題無いのは謎。
困ってないので、それ以上は追ってないよ。

今までで一番手抜き:yum:

元記事を表示

OTHERカテゴリの最新記事