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

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

動画サービスをFirestore+CloudFunctionsで勝手に設計してみる ~ NobodySurf編

こんにちは。[もぐめっと](https://mogmet.com)です。
![スクリーンショット 2021-07-15 8.38.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/d5d9712d-36d5-57f1-c90f-ea530f64fa4b.png)
最近本当に自分の写真のネタがなさすぎるので昔の写真を引っ張り出したりしてます。普通に滑ってるように見えますが、実は浮いてます。目の錯覚ショットですね。

今回は、昨日apple storeをみたらTodayで紹介されていた[NobodySurf](https://nobodysurf.com/)という超イケてるサーフィン動画をたくさん見れる超イケてるアプリが掲載されていたので、こちらのアプリをもしfirestoreでシステム構築したらどんな構成になるのか?という題材で勝手に設計してみたので僕が考えた設計を紹介します。

## アプリ概要

アプリについて紹介します。
トップからは主にカテゴリ別の動画が見れ、動画詳細で動画をチェック

元記事を表示

JavaScriptの基礎の基礎

# はじめに
JavaScriptの学習から長く離れていたため、復習として投稿します。

# デベロッパーツール
JavaScriptをテキストエディタでファイルを用意して基本文法を試すのはけっこう手間です。
コードを実行したらすぐに結果が表示されるツールがあると便利です。
デベロッパーツールによって、それが実現でき、以下のようなことができます。

– 表示しているサイトのHTMLの要素の確認・編集
– 表示しているサイトのCSSの確認・編集
– JavaScriptの実行

HTMLやCSSの確認・編集はElements(エレメンツ)パネルで操作することができますが、
JavaScriptの実行はConsole(コンソール)パネルにて行うことができます。

# デベロッパーツールの使い方
デベロッパーツールはブラウザに用意されています。
まずは新しいブラウザの画面を立ち上げます。
新しいブラウザの画面を立ち上げたら、次に以下のように操作をします。

– ブラウザ上で二本指クリックする
– 「検証」を選択する

もしくは`⌘ + option + C`のショートカットキーを用いて

元記事を表示

[Swift] iOSでSpotifyAPIを叩くときのポイント・備忘録(OAuth2.0)

## はじめに
iOS開発でAPI通信の学習をしています。
せっかくなので皆がよく知るAPIを使いたいと思い、SpotifyAPIを利用することにしました。

OAuth2.0認証を利用し、自身のSpotifyデータと連携する必要があるのですが、
その過程で苦戦した所や、他でも活用できそうな所を備忘録的に残しておこうと思います。

また、これからAPIの学習をする方の参考になれば幸いです。

### 環境

私が実行した時の環境

– Xcode 12.5.1
– iOS Deployment Target 13.0
– Alamofire5.4.3 (Swift Package Manager)

アーキテクチャはMVCを想定
※エラーハンドリング等の記述はだいぶ省略していたりするので、あまり参考にしないほうがいいです

### 用意しておくもの

– Spotifyのユーザー登録

## SpotifyDevelopersに登録

– [SpotifyDevelopers](https://developer.spotify.com/)

メニューからDashBoardを選択し

元記事を表示

【個人開発】FirebaseとSwiftUIを使った健康・メンタル管理アプリをリリースしました!

#はじめに
この度、App Storeで個人開発の健康管理アプリ「TOKIWA」を公開しました。
公開に至るまで、Qiitaの記事には何度もお世話になったので、同じように開発に取り組む方のために私も技術や苦労した点についての情報を共有したいと思います。

私の開発環境はMacBook Air (M1, 2020)、Xcode12.5です。

#どんなアプリケーションなのか
![Azusa 3_master のコピー-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/2f1d02a6-ef6a-4a2b-0234-5db688a44975.jpeg)

[ダウンロードはこちらから](https://apps.apple.com/jp/app/tokiwa-%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E8%A6%8B%E5%AE%88%E3%82%8A%E3%82%A2%E3%83%97%E3%83%AA/id1568964732?itsct=apps_box_l

元記事を表示

【Swift】UIColorからRGBAの値を取得する

#はじめに
今回はUIColorからRGBAの値を取得する方法を紹介します。

#パターン1
cgColorでUIColorでCGColorのプロパティを扱えるようにし、componentsで取得する方法です。

“`swift
extension UIColor {

var redValue: CGFloat {
return self.cgColor.components![0]
}

var greenValue: CGFloat {
return self.cgColor.components![1]
}

var blueValue: CGFloat {
return self.cgColor.components![2]
}

var alphaValue: CGFloat {
return self.cgColor.components![3]
}
}
“`

“`swift
myView.backgroundColor = UI

元記事を表示

【Swift】コードで透明度を設定する

#はじめに
個人開発をしていてハマったのでまとめておきます。

#alpha
[alpha](https://developer.apple.com/documentation/uikit/uiview/1622417-alpha)についてです。
・0.0から1.0のCGFloat型
・0.0: 完全に透明 (transparent)
・1.0: 完全に不透明 (opaque)
・viewを透過する
・subView全てに影響

#opacity
[opacity](https://developer.apple.com/documentation/quartzcore/calayer/1410933-opacity)についてです。
・0.0から1.0のFloat型
・0.0: 完全に透明 (transparent)
・1.0: 完全に不透明 (opaque)
・色を透過する

#View自体の透過度を変更する(Viewのalpha)
View自体の透過度を変更するには、以下のように、alpha値を設定します。

“`swift
myView.alpha = 0.4
“`

しかし

元記事を表示

Flutter勉強用サンプル集

##作成済み(改良の余地しかない)

####テストアプリ
  電卓
  [simple_calc](https://github.com/gthmkt94/simple_calc)

##作成中
  なし

元記事を表示

Azure Pipelines で iOS ビルドの設定について

## 概要

iOSアプリのビルドをAzurePipelinesでCI/CD対応した際にP12およびプロビジョニングプロファイルの設定が必要になります。

そのため、P12およびプロビジョニングプロファイルの準備とAzurePipelinesに設定する方法をまとめます。

「Azure Pipelinesとは何か」などの初歩的な話は、過去にまとめた「[App Center と Azure Pipelines について](https://qiita.com/gremito/items/265d15d6fcf53db3db2d)」があるので割愛します。

また、公式ドキュメントに大筋があるので先にこちらを確認しておくと把握しやすいと思います。

– [Azure DevOps/Azure Pipelines/エコシステムと統合/Xcode アプリのビルド、テスト、デプロイ](https://docs.microsoft.com/ja-jp/azure/devops/pipelines/ecosystems/xcode?view=azure-devops)
– [Azure DevOps/A

元記事を表示

iPhoneで確認するとCSSが崩れている際の対処法

WEBアプリケーションの開発において、スマートフォンやタブレットでの使用を想定したレスポンシブデザイン化はマストです。
しかし、実際にコーディングしてみるとPCでは問題ないのに、スマートフォンで確認してみるとスタイルが崩れているケースがあります。

この記事では、実際に私が遭遇したケースをもとに、CSSで指定したスタイルがiPhone上で反映されていない際の対処法について紹介します。

#ボタンのスタイルが崩れている
以下のようなコードで、新規登録画面における入力内容の送信ボタンを設置しました。

HTML

“`

“`
CSS

“`
.form input[type=”submit”] {
cursor: pointer;
color: white;
background-color: #fa6d1b;
font-weight: 300;
width: 140p

元記事を表示

UITableViewにタグを並べて表示するようなセルを持たせる(画面回転対応版)

# 概要
UITableViewでUIを組んでいて、例えば検索キーワードなどをタグのUIにして並べるようなときに使えるテクニックを説明します。
タグUIの実装は、`isScrollEnabledをfalseにしたUICollectionView` で実装しています。
これはあくまで一例なので、もっといい方法があればぜひコメントいただければと思います。

# 気をつける点
ただUICollectionViewのUIをTableViewに持たせるだけなのであれば比較的簡単かと思われますが、iOSは画面回転などでCollectionViewの行数が変わり、当然CollectionViewのサイズ自体が変わります。
iPadに関してはSplit Viewでの表示やSlide Overでの表示でもCollectionViewサイズが変わります。
それらのUIの各種変更にも対応する形で実装していきます。

# 完成図
全体がUITableViewで、UITableViewの中にUICollectionView持ちのセルが含まれています。

|縦|横|
|—|—|
|![Simulator

元記事を表示

サーバーにアップロードされたファイルのサイズが0バイトになる

## 事象

ブラウザのFormからサーバーにアップロードされたファイルを確認すると、時々0バイトのファイルが存在する。
必ず0バイトになるわけではなく、正しくアップロードされることの方が多い。
ログを確認しても何らかのエラーが発生している様子はない。
ディスク容量は十分にある。
事象発生時のファイル名や拡張子、時間帯、元のファイルのサイズに共通点はない。

## 原因

iOSのバグ(14.6にて確認)。
ブラウザでファイルを選択した後、他のアプリを起動してブラウザをバックグラウンドにする、あるいはスマホをスリープさせるなどして、それからブラウザを再度表示してアップロードすると、iOSの機嫌次第で発生する(SafariでもChromeでも再現)。
おそらく、ブラウザがメモリから一時的に追い出されて復帰したときに起こるのであろう。

## 対策

サーバー側でファイルサイズ0バイトのチェックを行う。

Apple製品は作り込みが甘くてこういう厄介な問題を起こしがちなのが嫌なんだよなー。

元記事を表示

UnityAdsを利用したアプリをiOS14.5で申請した時にはまった話(AppTrackingTransparency対応)

## はじめに
UnityAdsなどの広告を表示する場合、ユーザのトラッキングに使用されるデータとしてIDや使用状況データを送信することになります。
iOS14から、初めてアプリを起動する場合に、広告にIDFA(広告用の識別ID)をアプリが提供することをユーザに示して許可を貰うことが必要となりました。

単純にこのダイアログを出力し、そのように対応するというだけの話ですが、それの申請が通るまでいろいろな問題が発生し、そのたびに頭を痛めしました。
そして無事申請が通りましたので、その過程を紹介します。

## AppTrackingTransparency対応

やりたいことは単純で、このダイアログを出力し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65274/cd681d65-0051-f889-8777-5f7f139a9f9d.png)
結果によりそのようにすることです。
但し当たり前ですが広告を出す前に出力し、そのように振る舞う必要があります。

#### 開発環境
Unit

元記事を表示

#SwiftUIを使って学習がてらタイマーアプリを作ってみよう FIN

#SwiftUIを使って学習がてらタイマーアプリを作ってみよう Finish

###前置き 
前回投稿した[Part8](https://qiita.com/scream_episode/items/fb928f114de7a857b480)の続きです。
今回のゴールとしては
1.前回実装したPageViewContorllerに対応したインジゲータの実装
です。

今回の投稿で「SwiftUIを使って学習がてらタイマーアプリを作ってみよう」シリーズはひとまず完結とします。
(もしかしたら追加でなんかしたら続きを書く可能性は無きにしも非ず)
###開発環境
Mac (OS Big Sur version:11.3.1)
Xcode (version:12.5)
Swift (version: 5.4)
対象IOS(version:14.5以上)

## 今回の作業
### UIを決める
普通のページインジゲータ(PageContorl)は[チュートリアル](https://developer.apple.com/tutorials/swiftui/interfacing-with-

元記事を表示

クロージャ(無名関数)について

#・クロージャ(無名関数)とは
Swift実践入門(p.136)によれば、クロージャとは、再利用可能なひとまとまりの処理を指す。また、関数はクロージャの一種であるため、共通の仕様が数多くある。しかし、クロージャにはクロージャ式という定義方法によって名前が不要であったり、型推論によって型の記述が省略可能であったりと関数よりも手軽に定義することができる。

#・主な使用用途
主な使用用途としては、非同期通信がある。APIにリクエストを飛ばし、帰ってきたレスポンスを処理する際に利用することが多い。

#・定義方法

“`swift
{ (引数名1: 型, 引数名: 型…) -> 戻り値の型 in
クロージャの実行時に実行される文
必要に応じてreturn文で戻り値を返却する
}
“`

#・実行方法

“`swift
let some = { (num : Int) -> Int in
return num * 10
}

some(10) // 100
“`

#・引数の型としてのクロージャ
クロージャ:名前のない関数を変数や定数に代入する。
関数:変

元記事を表示

UserDefaultsの場所

# 概要

以下のように`UserDefaults.standard`に値を設定したとします。この値がちゃんとファイルに保存されているのを確認する方法です。

“`
if UserDefaults.standard.string( forKey: “theString” ) == nil {
UserDefaults.standard.set( “0123456789”, forKey: “theString” )
}
print( UserDefaults.standard.string( forKey: “theString” )! )
“`

# 検証環境

* Xcode 12.5.1

# Simulator の場合

以下にあります。

“`
~/Library/Developer/CoreSimulator/Devices//data/Containers/Data/Application//Library/Preferences/.plist
“`

元記事を表示

UITableViewCellがdeinitされるタイミング

## 検証

以下のようなコードでUITableViewCellのカスタムセルを作成し、
UITableViewのインスタンスメソッドである
・[register(_:forCellReuseIdentifier:)](https://developer.apple.com/documentation/uikit/uitableview/1614937-register)
・[dequeueReusableCell(withIdentifier:)](https://developer.apple.com/documentation/uikit/uitableview/1614891-dequeuereusablecell/)
の2つを使用してカスタムセルを表示させ、インスタンスが解放されるタイミングを検証してみた。

“`SampleTableViewCell.swift
final class SampleTableViewCell: UITableViewCell {

@IBOutlet private weak var titleLabel: UILab

元記事を表示

iOSクラッシュログ(.ipsファイル)のシンボル化チュートリアル

# 環境
– Xcode 12.5.1
– iOS 14.6
– iPhone 8

# 事前準備
– ipsファイルを取得するための実機を用意
– エラー発生用testアプリを作成
– 今回は画面にUIButtonを配置し、押すと`fatalError()`を実行するようにした

“`swift:ViewController.swift
import UIKit

class ViewController: UIViewController {
@IBAction func didTapErrorButton(_ sender: UIButton) {
fatalError(“an error occurs”)
}
}
“`

– testアプリをアーカイブ、AdHoc配信のipaを作成し、実機にインストール
– 今回は[Apple Configurator 2](https://apps.apple.com/jp/app/apple-configurator-2/id1037126344?mt=12)を使用し、インストールした

# 手

元記事を表示

AdHocアプリのクラッシュログ解析

# 概要
この記事では、AdHoc配布されたアプリ上で発生したクラッシュログを解析する方法について記載しています。

# AdHoc配布
AdHoc環境でのアプリ配布は、以下の様な方法があります。

1. [TestFlight](https://help.apple.com/app-store-connect/?lang=ja-jp#/devdc42b26b8)
2. [Firebaseテスト配布](https://firebase.google.com/docs/app-distribution/ios/distribute-console?hl=ja)
3. [DeployGate](https://deploygate.com/)

いずれの方法で配布した場合でも、以降で記載するクラッシュログ解析方法は適用可能です。

# クラッシュログを取得
この項目では、AdHoc環境で配布されたアプリのクラッシュファイルを実機端末から取得する方法を解説しています。

## ipsファイルの取得
アプリのクラッシュログは、`.ips`という拡張子ファイルに暗号化された情報が記載されているた

元記事を表示

クラッシュログ解析

# 概要
この記事では、iPhoneやiPadの実機端末からクラッシュログファイル(`xxx.ips`)を取得し、それをdSYMファイルで復号した中身の見方について記載しています。
なお、実機端末からクラッシュログを取得する方法については[AdHocアプリのクラッシュログ解析](https://qiita.com/yamataku29/items/7d529ee49c28cddbd89e)を確認してください。

# クラッシュログの見方
## 基本情報
– `Exception Type`: クラッシュの種別を示す文字列が表示される
– `Exception Codes`: クラッシュの種別に応じたコードが表示される
– `Exception Note`: クラッシュ種別に関する補足説明の文字列が表示される
– `Termination Reason`: クラッシュの原因が表示される
– `Termination Description`: クラッシュ原因の詳細情報が表示される

## バックトレース
– クラッシュスレッド: `Thread 0 Crashed:`といった様に`Cra

元記事を表示

SwiftUIを使って学習がてらタイマーアプリを作ってみよう8

#SwiftUIを使って学習がてらタイマーアプリを作ってみよう Part8

###前置き 
前回投稿した[Part7](https://qiita.com/scream_episode/items/abb2168fe66b90836443)の続きです。
今回のゴールとしては
1.UIKitのPageViewControllerを利用して設定画面を時間設定と音楽設定で分けて
表示する
です。

次回は[ページインジゲータをちょっとカスタムして実装です](https://qiita.com/scream_episode/items/7950d45a17f8f53b4094)

###開発環境
Mac (OS Big Sur version:11.3.1)
Xcode (version:12.5)
Swift (version: 5.4)
対象IOS(version:14.5以上)

## 今回の作業
### UIPageViewController(UIKit)をSwiftUIでも使えるように実装
基本はAppleが公開している[チュートリアル](https://developer.a

元記事を表示

OTHERカテゴリの最新記事