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

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

AVFoundationをがっつり使ってすっかりAV芸人になった回

畑田です。
ある開発においてがっつりAVFoundation芸人にならねばならなかったのでAppleのAVFoundationのドキュメントを読んで分かったことをまとめてみます。
# captureについて
AVFoundationのcaptureというサブシステムはビデオ、写真、音声を撮影、録音するためのものであり、以下のときに使用されうる。
– アプリに自前のカメラ機能を実装するとき
– 動画や写真を撮影する際にフォーカスや露光、安定性などについて、ユーザーにより直接的に操作させたいとき
– 撮影した写真やdepth maps(なにこれ訳せやん)の保存形式を指定したり、ビデオのメタデータをカスタムしたりしたいとき
– 撮影、あるいは録音デバイスから直接ストリーミングさせたいとき

**もし、ユーザーにネイティブのカメラアプリを使用させたい場合は`UIImagePickerController`を用いれば良い点に注意すること。**
captureの主要なパーツはsession, inputs, outputsであり、sessionは**一つ以上のinputと一つ以上のo

元記事を表示

独自クラスの配列を指定した要素でグルーピングしてTableViewに表示する

#筆者環境

|MacOS|Xcode|Swift|iOS|
|:–:|:–:|:–:|:–:|
|Catalina(10.15.7)|12.4|5.3.2|14.4|

#表示に使うデータを用意

`SampleData`というグルーピングに使う`groupID`と表示用の`title`を持っただけの簡易的なクラスを作成する。

“`swift:SampleData.swift
import Foundation

class SampleData {

let groupID: Int
let title: String

init(groupID: Int, title: String) {
self.groupID = groupID
self.title = title
}

}
“`

#表示に使うテーブルを用意
1. `TableView`を配置していい感じにレイアウトの制約をつける
2. `TableView`上に`PrototypeCell`を配置してインスペクタで`I

元記事を表示

Flutter 住所 or 郵便番号から緯度経度を取得する

### Flutterで住所or名称or郵便番号から緯度経度を取得する

検索しても、なかなか出てこなかったのでメモ代わり

https://pub.dev/packages/geocoding

Null Safety 対応バージョン
`geocoding: ^2.0.0`

Null Safety非対応バージョン
`geocoding: ^1.0.5`

“` dart
final searchWord = ‘東京タワー’;
List locations = await locationFromAddress(searchWord);
print(locations.first.latitude); // 35.6585805
print(locations.first.longitude); // 139.7454329

final zipCode = ‘105-0011’;
locations = await locationFromAddress(zipCode);
print(locations.first.latitude); // 35.6

元記事を表示

Xcodeで実機テストができなくなりました。”Command PhaseScriptExecution failed with a nonzero exit code”というエラー

先日挫折しかけたSwiftでのエラーの解決方法が判明したので、メモとして残しておきます。

“`
Command PhaseScriptExecution failed with a nonzero exit code
“`
まずこんなエラーが出てビルドできなくなりました。

“`swift
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/◯◯◯/Library/Developer/Xcode/DerivedData/demo2-cuxtcawdfrqcqafwplsfrvhdggep/Build/Intermediates.noindex/demo2.build/Debug-iphoneos/demo2.build/Script-024CAB14D5D4ECD45067AA1C.sh (in target ‘demo2’ from project ‘demo2’)
cd /Users/◯◯◯/Documents/GitHub/demoapp
/bin/sh -c /Users/◯◯◯/Libra

元記事を表示

.gitignore に Pods/ を追記しても反映されない時の対処法

iOS のライブラリ管理で最もよく使われる CocoaPods の Pods ディレクトリを git で管理したくない時、
.gitignore のファイルに `Pods/`と記載する。

しかし Git のキャッシュが原因で反映されないことがある。

“`terminal
$ cd プロジェクトのディレクトリ
$ git rm -r –cached .
$ git add .
$ git commit -m “.gitignoreの反映”
“`

以上でバージョン管理を外せる。

元記事を表示

iOSエンジニア見習いがUIKitのドキュメントを読んでみた。Part1

# はじめに

新卒で入社してから1年半、Xamarin.NativeとReact.jsを触っていました。
その後、部署異動をきっかけにiOS/Swiftのエンジニアに転向しました。
今はベテランのiOSエンジニアの方の元でがっつり勉強をしています。
アーキテクチャの設計やプロトコル、デリゲートといったプログラミングの基本的な部分はそこまでつまづかなかったのですが、UIKitの仕様がわかっていないせいでつまずくことが多いと最近気づきました。
そこで、重い腰を上げてUIKitのドキュメントを読むことにしました。
自分と同じ入門者の目線で感想などを載せていくので、今後同じ境遇の方にとって参考になればと思います。

# UIKit Framework

まずAppleのドキュメントなんですが、読む気にならないのはなぜなのでしょうか。。
ドキュメントを見てぱっと理解できたことがないということと、あとは玄人しか受け付けなさそうなデザインがそうさせているような気がしますね。。代わってVue.jsなんかは初心者が親近感を持って読みたくなるようなデザインをしているなあと思います。

余談はおいておいて

元記事を表示

Flutterで普通のスワイプで画面をpopする

Flutterで`Navigator.push(context)`して遷移した先の画面で元の画面に戻るときには`Navigator.pop(context)`をアイコンに設置したりエッジスワイプしたりしますよね。
通常のスワイプでも戻したかったのでやり方を見つけるのに少々苦労しましたがなんとかできました。

“`
GestureDetector(
onHorizontalDragUpdate: (details) {
if (details.delta.dx > 18) {
Navigator.pop(context);
}
},
child: ・・・・・・,
);
“`

このように`GestureDetector.onHorizontalDragUpdate`を設定して横方向のスワイプをトリガーに`navigator.pop(context)`を実行するようにしました。
`details.delta.dx`はスワイプの速度で、正の向きが左→右です。しきい値として設定した`18`を超えると`navigator.pop(context)`を実

元記事を表示

iOS14でLaunchScreen.storyboardに設定した画像が表示されない

## 環境

ReactNative 0.63.4
react-native-splash-screen 3.2.0
iOS14~

## 問題

スプラッシュスクリーンが今まで問題なく表示されていたが、iOSのみアプリ立ち上げ時に黒い画面しか表示されないようになってしまった。

各種フレームワークで同様の問題が発生しているのでiOS14の問題のようです。

[App running on ios14 shows white screen instead of splash screen #504](https://github.com/crazycodeboy/react-native-splash-screen/issues/504)
[Ios14 splash screen doesn’t show up #513](https://github.com/crazycodeboy/react-native-splash-screen/issues/513)
[[Bug] iOS 14 Launch Screen is not working #9764](https://gith

元記事を表示

【Mobile】静的セキュリティ解析ツール「MobSF」Mobile-Security-Framework-MobSFの使い方

## MobSF(Mobile-Security-Framework-MobSF)とは
[MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)は、Android/iOSのペンテスト、マルウェア解析、セキュリティ評価を自動化したオールインワンのフレームワークです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/dc8ddabc-4096-c5f7-1931-c2bc8dcd0a58.png)

静的解析と動的解析を行うことができます。MobSFは、モバイルアプリのバイナリ(APK、XAPK、IPA、APPX)とzip形式のソースコードをサポートしています。

## MobSFの導入方法
### STEP1 Dockerをインストール
[Mac に Docker Desktop をインストール](https://docs.docker.jp/docker-for-mac/install.html)

元記事を表示

UIStoryBoardのIBOutletがnilを返すときの対処法

clean build folder!

元記事を表示

画面遷移について網羅的に整理した (Swift5)

畑田です。
開発ペース早すぎるので画面遷移についてまとめて時間を潰しています。
全てコードで書いています。

## 環境
– Swift version 5.2.4
– Xcode version 11.6

## UINavigationControllerで管理する
まず前提として、コードだけで実装する際の画面遷移は`UINavigationController`で管理することによって実現されます。
`SceneDelegate`クラスの`scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)`メソッドの中で初めに表示されるview controllerを設定します。
このときに、初めのview controllerを`UINavigationController`のインスタンスとしてしまい、その`rootViewController`(0番目のview contr

元記事を表示

画面ごとにオリエンテーションを設定する方法

畑田です。
ある開発においてview controllerごとにorientationを細かく設定する機会があったので記録に残します。
全てコードで書いています。

## 環境
Swift version 5.2.4
Xcode version 11.6

## fix application orientation
アプリ全体で画面の向きを固定する場合は、`Info.plist`の`Supported interface orientations`において設定します。
例えば`Supported interface orientations`を`Portrait (bottom home button)`のみにすると、縦画面のみがサポートされますし、`Portrait (bottom home button)`、`Portrait (top home button)`、`Landscape (left home button)`、`Landscape (right home button)`にすると全ての画面の向きがサポートされます。

## fi

元記事を表示

[BigQuery]アプリバージョンごとのユーザー比率を取得してSlackへ通知する

Android や iOS でアプリでは何度もバージョンアップしてリリースすることが多いです。

ですのでユーザーが最新のバージョンのアプリを使っているかなど、アプリバージョンごとのユーザー比率が気になることがあるかと思います。

最近、アプリバージョンごとのユーザー比率を BigQuery から取得して Slack に通知する仕組みを実装したので、その方法についてご紹介いたします。

実際に実行してみると、以下のような感じで Slack へ通知が行われるようになります。

“`
アプリバージョンごとのユーザー比率 (2021年03月15日)

## Android

– 1.2.0 : 57.1% (4)
– 1.1.2 : 14.3% (1)
– 1.1.0 : 14.3% (1)
– 1.0.0 : 14.3% (1)

## iOS

– 1.2.0 : 54.2% (13)
– 1.1.1 : 37.5% (9)
– 1.1.0 : 4.2% (1)
– 1.0.4 : 4.2% (1)
“`

この仕組みを実装するにあたって、以下の

元記事を表示

Swiftのキーパスについて

#キーパスとは
オプショナルチェーンのようにさまざまなインスタンスが互いに参照しあう関係にあった時、あるインスタンスを起点として次々に参照をたどって別のインスタンス参照できることがありますが、そのような経路をインスタンスとして保存したり、関数の引数と指定渡したりすることです。

以下は、ある学生sがクラブに所属している場合、そのクラブに顧問の先生がいればその先生の名前を表示するためのオプショナルチェーンによる記述です。

“`swift
if let name = s.club?.teacher?.name {
print(name)
}
“`

この記述は変数sに対してのみ有効ですが、Student型のインスタンスならばどれに対しても同様な参照を行うことができます。ここで、次のような記述が可能です。

“`swift
let teacherNamePath = \Student.club?.teacher?.name
if let name = s[keyPath: teacherNamePath] {
print(name)
}
“`

この`\Stu

元記事を表示

part1「璃奈ちゃんボード」をiPadだけで自作する

#動画

https://www.nicovideo.jp/watch/sm38393401

#はじめに
最近りなちゃんボードを自作する人が増えていますが、マイコンを使ったり、3Dプリンターを使ったりするのは難しそう……~~高校生の璃奈ちゃんがあんな短期間で工作出来るわけないだろ~~、と思う方も多いでしょう。
私もそう思ったので、より現実的に、iPadやiPhoneだけで「りなちゃんボード」を再現(表示)するプログラムを作りました。
 コンセプトは、
**誰でも,簡単に,どんな時でも使える璃奈ちゃんボード**です。
使用する言語はpython3.xのみです。

#必要なもの
* iOS、iPadOSアプリ「**Pythonista3**」(1200円)
* iPhoneやiPad(原寸大で作るためには9.7インチか、10.2インチ、11インチのiPadが必要)

たったこれだけ!

1200円のアプリは確かに高いですが、このアプリを入れるだけでほとんどのpythonプログラムが実行できるので、初心者の方も玄人の方もおすすめです。今回はPythonista に入っているuiモジュール

元記事を表示

Xcode シュミレーター @が打てない時の対処法

#Xcodeのシュミレーターで「@」が打てない!!!
iOSのシュミレーターでキーボードから記号を入力すると、不思議なことに`@`が`[`になったり、なんだか色々とおかしくなってた。。。

別に`/`とか`:`みたいな記号はユーザー入力で使われることは滅多に無いのでいいんですが、、、

**`@`はログイン周りの処理で使うので、`@`が打てないのは困ります!!**

かといって、シュミレーター内のキーボードを毎回使うのも面倒やし:confused:

#解決法
![スクリーンショット 2021-03-15 22.41.41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/b89593a3-3ad5-454f-ad02-7e89c0bfc901.jpeg)

`|/O>Keyboard>Connect Hardware Keyboard`のチェックを外す→もう一度チェックをつける

よくわかりませんが、これだけで正常になりました。。。

元記事を表示

[Swift] Firebase-Authentication(新規登録)を使ってみた

## 概要
Firebaseを使ってみたい!ということで、
サンプルアプリを通して学習していきます。

第一回目は、認証機能を用意してくれているAuthenticationの新規ユーザー登録です。
今回はメールアドレスでの登録を使いました。

※注意
各UIView(部品)はコードで実装しております。
Storyboardを使用しているからは注意してください。

## 完成品

サクッとコードがみたい場合はこちらです。
https://github.com/ksy781/FirebaseAuthentication/blob/main/FirebaseAuthentication/ViewController.swift

## 環境
| ツール | バージョン |
|:-:|:-:|
| Xcode | 12.4 |
| Swift | 5.3.2 |
| Cocoapods | 1.10.1 |
| FirebaseAuth | 7.7.0 |

## 事前

元記事を表示

Firebaseを使用してiOSアプリにプッシュ通知を実装する

#はじめに
Firebaseの`Cloud Messaging`を使用してアプリにプッシュ通知を実装します。

#前提条件
[Apple Developer Program](https://developer.apple.com/jp/programs/how-it-works/)の登録と、[Firebase](https://firebase.google.com/docs/ios/setup?hl=ja)を導入していること前提で書いていきます。

#プッシュ通知の仕組み
iOSの場合、Appleが提供しているプッシュ通知サービス[APNs(Apple Push Notification Service)](https://ja.wikipedia.org/wiki/Apple_Push_Notification_Service)を介して
プッシュ通知を配信しています。

![push_Notification.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/743730/93c1d9e3-e7d2-

元記事を表示

swiftのMapKit(基礎)

#フレームワークのインポート
“`swift
import MapKit
“`

#MKMapViewの生成
“`swift
//mapViewの生成
let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
self.view.addSubview(mapView)
“`
#MKMapViewの中心にピンを生成する

“`swift
let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
self.view.addSubview(mapView)
//緯度と軽度
let location: CLLocationCoordinate2D = CLLocati

元記事を表示

[初リリース]Youtubeの複数曲mix動画をSpotifyプレイリストに変換するアプリ

こんにちは!趣味でエンジニアリングをしているcanalunです。こちらが[自己紹介](https://qiita.com/canalun/items/7fb4fda358d282a7af40)です!

去年の12月頃から初めてのiOSアプリ開発に取り組み、紆余曲折を経てなんとか**Youtube-Spotify連携型プレイリスト作成アプリを完成・リリースさせることができました**!
せっかくなので、作成の経緯や苦労したポイントを自分なりにここに書き残してみようかと思います!

なお、アプリストアへのリンクはこちらです?
[mixed!](https://apps.apple.com/jp/app/mixed/id1554637603)

# どんなアプリなのか??
YouTubeには**複数の曲を1つのクリップにまとめた”mix”と呼ばれるタイプの動画**が多く存在します。hiphopやlofiと呼ばれるジャンルの音楽が好きな方は、きっとよくご存知ですよね?

例えばこのような動画です!
[【ネオシティポップとか】Neo City Pop / Japanese Hip Hop etc.

元記事を表示

OTHERカテゴリの最新記事