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

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

DockerでFlutterの環境構築メモ

## 開発環境
Docker Engine 20.10.11
macOS Monterey 12.0.1

## Dockerfile と docker-compose.yml と envファイルの作成

### Dockerfile
“`Dockerfile
# build時に使用するARGを定義している部分
ARG ubuntu_version
ARG timezone
ARG web_server_port
ARG app_code_path_container

# https://hub.docker.com/_/ubuntu/
FROM ubuntu:${ubuntu_version}

ENV DEBIAN_FRONTEND=noninteractive
ENV LC_ALL=ja_JP.UTF-8
ENV LC_CTYPE=ja_JP.UTF-8
ENV LANGUAGE=ja_JP:jp
ENV TZ $timezone
ENV WEB_SERVER_PORT $web_server_port
ENV APP_CODE_PATH_CONTAINER $app_cod

元記事を表示

【Flutter】画面を縦向き・横向きに固定したまま表示させる方法!iPadで画面の向きを固定できない時の対処方法

こんにちは。
個人でアプリ開発をしているYuKiOです。

21年12月に12作目となるアプリとして「緊急警告メーカー」をリリースしました。

横画面に固定して使用するアプリだったのですが、iPadでは横向きに固定できない表示不具合が・・・。

別にiPad版はリリース予定はないので問題なしと考えていたのですが、AppStoreの審査に提出したところ、iPhone版だけであっても、iPadに互換インストール可能なため正常に動作する必要があるとのことで、無視できませんでした笑

今回は、Flutterで画面を縦向き・横向きに固定したままにする方法と、iPadのみ発生する画面の向きを固定できないという不具合の解消方法を紹介します。

元記事を表示

【Swift5】アラートを表示

# はじめに
ボタンを押した時の表示されるアラートについて、基本的なことをまとめた技術メモです。
ご指摘等ございましたら、コメント、編集リクエストなどで教えていただけると幸いです。

# 開発環境
– iOS15
– Swift5
– Xcode 13

# アラートを表示(Alert/ActionSheet)
## Alert
ダイアログ風のアラートが表示される
![Simulator Screen Shot – iPhone 11 – 2021-12-28 at 15.44.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707293/6b2c4a8f-c59e-cb0f-c208-e689f2dce652.png)

サンプルコード

“`swift
let alert: UIAlertController = UIAlertController(title: “Alert表示”, message: “hoge”, preferredStyle: .alert)

元記事を表示

iOSシミュレータで動画撮影+GIF変換してファイル圧縮もするバッチ(.command)

GitHubのプルリクに動画を添付できる機能がベータから正式版になったが、10MB以上だとアップロードできないので、(シミュレータで撮影した)動画をGIF変換してアップロードできる容量まで圧縮するバッチを用意しました。

**参考**

* [GitHubが動画のアップロード機能に正式対応。バグの再現手順や機能のデモなどの説明が動画で容易に - Publickey](https://www.publickey1.jp/blog/21/github_7.html)
* [iOS シミュレータで動画を収録して gif に自動で変換するスクリプトを書いた – Qiita](https://qiita.com/daichidaiji/items/db82f7aacd59b945fe86)


# 前準備

**ffmpegをインストール**

* ターミナルで以下のコマンドを入力して ffmpeg をインストールする
* `brew install ffmpeg`

**バッチファイルを作成**

* テキストエディタなどで [simctl_recordVideo_gif.com

元記事を表示

VideoToolBoxでH.264にswiftでエンコード、デコードする

# はじめに
* [VideoToolBox](https://developer.apple.com/documentation/videotoolbox) を利用して、MTLTexture などの画像形式を H.264 にエンコード、デコードする方法です
* H.264 に変換することで、データのサイズを小さくする事ができます
* 例えば、882×468 の動画の場合、毎フレームごとのサイズが 1.7MB の所を 〜10KB に圧縮できました
* 最終的に、3つの Byte 配列と、1つの Int に変換させることができました
* この形↓とサイズであれば十分にインターネットなどを経由してやりとりさせることができそうです

“`swift
struct EncodedFrameEntity {
let sps: [UInt8]
let pps: [UInt8]
let body: [Int8]
let microSec: Int
}
“`

* ソースコードはこちら↓

https://github.com/fuziki/VideoCre

元記事を表示

ついにめちゃくちゃリアルな架空の顔生成をiOSでできるようになった 【StyleGANをCoreMLでかんたんにつかう】

#リアルな画像を生成する機械学習モデルをiOSでつかう

「この人物は存在しない」というWebページをご存知ですか?
このページにアクセスすると、高画質の人物写真が表示されます。

https://thispersondoesnotexist.com/

リロードすると別の人物が表示されます。これらの人物は、存在しません。
StyleGANという機械学習技術によって生成された画像です。

この記事では、StyleGANをiOSでつかって、かんたんに架空の人物画像を生成する方法を示します。

#超強力画像生成、しかしiOSで使えるのか。。。
StyleGANは人物の顔だけでなく、絵画やアニメの画像も生成できます。
もしもiOSで扱えたら、楽しいアプリができそうです。

しかし、StyleGANは2010年代後半に発表された技術ですが、これま

元記事を表示

[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/flu

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事