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

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

CocoapodsにPrivateのフレームワークを作ってみる

# はじめに
株式会社ピー・アール・オーのアドベントカレンダー3日目です。

今までiOSプロジェクトを開発時、共通で使えるユーティリティクラスを既存のプロジェクトからコピーして、新しいプロジェクト側に流用する形でした。しかし、ユーティリティクラスに修正や機能追加が入った場合、全てのプロジェクトにファイル更新を行う必要があり、効率は良くないです。

そこで、共通のユーティリティークラスをフレームワーク化し、Cocoapods経由で全てのプロジェクト内にインストールすれば今後楽になると思いました。フレームワークのソースコードは公開できない場合もあるため、CocoapodsにPrivateのフレームワークを作成する方法を調べて、作ってみました。

# 事前準備
– Cocoapodsのインストール

“`
sudo gem install cocoapods
“`

# プライベートのSpecリポジトリを作成する
さて、一番最初に用意する必要があるのはSpecリポジトリです。今回はGitHub上にリポジトリを用意します。
※リポジトリ自体はpublicにする必要がないです。ただし、チー

元記事を表示

【キュンです】指ハートを機械学習してエフェクトを出す

Macで機械学習でHand Pose Classification(手のポーズ分類)ができます。
今回はデモとして、CreateMLでポーズ認識モデルを作成して、「指ハート」と「ピースサイン」を認識するスマホアプリを作ってみます。

**【キュンです】**

動画解説:**[Youtube](ttps://www.youtube.com/watch?v=HDAf4kdKgaA)**
[](https://www.youtube.com/watch?v=HDAf4kdKgaA)

元記事を表示

未経験から月収100万円のフリーランスエンジニアになった経緯とコツ

未経験からフリーランスとして稼げるようになったポイントは3つあると思っています。

**[1、時間をつくる](#1時間をつくる)**
**[2、全体像をつかむ](#2全体像をつかむ)**
**[3、発信する](#3発信する)**

です。それぞれ解説していきます。

>【著者近影】

>[](https://www.youtube.com/watch?v=FVf-iKM-eBY)
僕がニートからエンジニアになった経緯は、
**[Youtubeチャンネル「エンジニアと人生」](

元記事を表示

iOSアプリをApp Storeに公開するまでの流れ

# はじめに
こんにちは、HCB Advent Calendar 2021の3日目を担当する、kudokaiです。
今年は個人開発のアプリをApp Storeにリリースしたこともあり、ストアに申請を出す手順を備忘録的にまとめようと思います。
リリースしてから4ヶ月ほど経つので思い出す作業も兼ねて書きます。
ここではApple Developerへの登録手順の説明は省きます。
※記事内に添付しているスクリーンショットは2021/12/2時点のものです。

# 申請までの大まかな流れ
1. Certificate作成
1. App IDs登録
1. Provisioning Profile作成
1. アプリをApp Store Connectに登録
1. Xcodeを用いてアプリをアップロード
1. App Store Connectでアプリの情報を編集
1. スクリーンショット
1. アプリアイコン
1. プロモーション用テキスト
1. 概要
1. キーワード
1. サポートURL
1. ビルド情報
1. 申請

やること多いんですよね…

# Certificate作

元記事を表示

Swift Concurrency で遅延実行

Swift Concurrency な環境で `DispatchQueue` を書きたくないので

## コード
### Before

“`swift
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
print(“遅延処理”)
}
“`

### After

“`swift
Task {
try await Task.sleep(nanoseconds: 1_000_000_000)
print(“遅延処理”)
}
“`

## 参考

https://developer.apple.com/documentation/swift/task/3862701-sleep

元記事を表示

FirebaseCrashlyticsのiOSで「dSYMが不足している」というエラーが発生した場合のトラブルシューティング

# 概要
FirebaseCrashlyticsと連携していて、管理コンソール上で「dSYMが不足している」という文言が表記された場合のトラブルシューティングです。

↓参考画像
![without_dsym.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/e741f8a3-c207-5925-e0d9-8cc418ac35c6.png)

# 結論
XCodeで`/ios/Runner.xcworkspace`を開き、`debug information format` を `DWARF` から `DWARF with dSYM File` に変更します。
![スクリーンショット 2021-12-02 15.18.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264889/a266f08d-a880-f6a1-6587-e5226a6c31bd.png)

# 参考
### dSYMが必要な理由
Fi

元記事を表示

IDE上でiOSのアプリ起動ができなくなった場合のtips

この場合、IDEの実行ボタンではなくコンソールで`flutter run`すると起動できます。
※こんなエラーが出ます

“`
Launching lib/main.dart on iPhone 11 Pro Max in debug mode…
Warning: CocoaPods is installed but broken. Skipping pod install.
You appear to have CocoaPods installed but it is not working.
This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
This can usually be fixed by re-installing CocoaPods. For more info, see https://github.com/flutter/flutter/issues/

元記事を表示

UIKitでたまに遭遇するけど忘れがちなTipsメモ

UIKitで、たまに遭遇するけど忘れがちな部分をメモっておきます。

# ViewやCell等でControlイベントが取れない場合のチェックリスト

– イベントを取りたいViewの `isInteractionEnabled` がtrueになってるか?
– イベントを取りたいViewの `alpha` が0になっていないか?
– `backgroundColor = .clear`にして、UIView.alphaは0より大きく設定する
– イベントを取りたいViewの上に、透明系のViewが被さってて、それがイベントを奪っていないか?
– storyboardでUIViewを作成すると、デフォルトで `isInteractionEnabled = true` になっているので、注意!
– storyboardでなくても、コードで追加したUIViewも同様なので、注意!
– イベントを透過させたいUIViewは、`isInteractionEnabled`を`false`にする
– そもそも`override func hitTest()`は取れてるか?
– `p

元記事を表示

【Swift】ファイル操作で保存されたファイルやパスを色んな形式で確認してみる

# はじめに
※この記事は[LIFULL Advent Calendar 2021](https://qiita.com/advent-calendar/2021/lifull)の2日目の記事となります。

個人でiOSアプリ開発をしているときに、アプリ内でファイル操作をしたいときがあって、ほしい値を見たい時にどれを参照するのかがごっちゃになるのでまとめました。

# 前提
今回はDocumentディレクトリに日付のディレクトリを作成し、その中に動画ファイルがあるという状態で考えました。
※↓の階層はDocumentから始まっていますが、実際にはもっと階層は上にもあります。

“`plaintext
Document/
├── 20211124/
│ ├── hogehoge.mov
│ └── fugafuga.mov
└── 20211126/
├── hogehoge.mov
└── hugahuga.mov
“`

# 準備
## ディレクトリ作成
今回はDocumentsディレクトリに作成します。

“`swift
guard let docu

元記事を表示

チュートリアル「AWS Amplifyを使用してシンプルなiOSアプリケーションを構築する」をやる際に隣で開いておくとヒントになるかもしれないページ

# 目的
このページでは、AWSから提供されている以下のチュートリアルを試行錯誤の末にクリアした時の情報を共有致します。
公式ページの情報が一部古く、今だと書いてある通りにはできない箇所もあったので、その辺りでどなたかの助けになればいいなと思って書きます。

https://aws.amazon.com/jp/getting-started/hands-on/build-ios-app-amplify/

# 前提
– AWSのアカウントは既に持っていること
– Mac端末を持っていること
– Xcodeがインストール済みであること
– AnacondaもしくはDocker等で仮想環境を作成できること

# 私の環境
– MacBook Pro (macOS Big Sur ver. 11.5.2)
– Xcode ver. 12.4 (12D4e)
– Anaconda Navigator 2.0.3

# 1/7 今回開発に使う仮想環境を作成する。
必須ではないと思いますが、クリーンな環境で開発した方が無駄なつまづきを防げます。
ライブラリやパッケージの依存関係ではできるだけ悩みた

元記事を表示

iOSアプリのクラッシュを減らしアプリを安定運用(したい)[Carefully Unwrapping]

## はじめに

本記事は [with Advent Calendar 2021](https://qiita.com/advent-calendar/2021/with) 2日目の記事です。

こんにちは。[with](https://with.is/welcome)でアプリ開発をしている @zrn-ns です。
withアドベントカレンダーの2日目を担当させていただきます。

## 注意

この記事で取り上げた内容はまだ検証中です。
最後の方に課題も記載していますので、もし採用する際は十分にご検討いただくようお願いします。

## Optional型のアンラップ、どうしてますか?

早速ですが、Optional型をアンラップするとき、どのような方針をとっていますか?
もちろん場合によって様々だと思いますが、たまにどうアンラップするか悩むことってないですか。

たとえば下記のような、ほぼ確実にアンラップに成功する気がするけど、どういうパターンでアンラップに失敗するのか分からない…っていうパターンです。

“`swift
// stringにどんな値を入れればnilになる…?

元記事を表示

動画からスライドを自動生成するアプリを作りました

この記事は [クソアプリアドベントカレンダー2](https://qiita.com/advent-calendar/2021/kuso-app) の2日目の記事です。今まで傍から見ているだけでしたがついに初参加できて嬉しいです。

## 課題: 動画よりもスライドでサクサク見たい

WWDCセッションの内容をチェックしては発信する、ということを毎年やっている [^wwdc] のですが、なぜか昨年(2020)あたりからセッションの**スライドPDFが公開されなく**なりました。

セッションの動画は例年通り公開されているのですが、

https://developer.apple.com/videos/

**動画よりもスライドのほうがシーク効率が圧倒的に良い**ので、やっぱりスライドが欲しい。[^want]

[^wwdc]: [OSS](https://github.com/shu223/iOS-10-Sampler)を作ったり、[本](https://shu223.booth.pm/items/1461791)を書いたり、[noteマガジン](https://note.com/s

元記事を表示

Flutterの開発環境構築方法(Mac)

## はじめに

本記事は [エムティーアイ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/mti) の1日目の記事です。

Flutterの開発環境を構築する方法を紹介します。

ちなみに業務ではFlutterを一切触っていません。
昨日行われた [FlutterKaigi](https://flutterkaigi.jp/#/) のハンズオンで初めてFlutterを触り、その準備時に行ったことを残します。

## 環境

– OS:macOS Big Sur 11.6
– ハード:MacBook Air (M1, 2020)
– Flutter:2.5.1

## 開発環境の構築

公式ドキュメントに沿ってFlutterの開発環境を構築します。

https://docs.flutter.dev/get-started/install/macos

### Flutter SDKのダウンロード

以下のページから、使いたいバージョンのFlutter SDKをダウンロードします。

https://docs.

元記事を表示

Factory Method パターンについてまとめてみた【Swiftでデザインパターン攻略 #1】

## はじめに
本記事では、GoFの23種類のデザインパターンの1つでもある、FactoryMethodパターンについて書いてみました。

## FactoryMethodパターンとは

#### 概要
「インスタンスの生成をサブクラスに実行させ、柔軟にインスタンス生成を行うためのパターン」のことです。
インスタンスを生成する側は、インスタンスについて直接意識しなくても、利用することができます。(Protocolを介しているため)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580445/dff358a2-4986-d6c0-8d8d-6f06eb8dbbfd.png)
[Wikipediaより](https://ja.wikipedia.org/wiki/Factory_Method_パターン)

このパターンの進化前(?)のパターンで、**Factoryパターン(SimpleFactory)**というのがあります。
Factoryパターンは、1つのファクトリの中で、オブジェクトの

元記事を表示

[Swift]async/awaitを使ってGitHubAPIを叩く(UIKit版)

## 概要
Swift5.5から新しく登場した`async/await`による非同期処理の学習で`GitHub API`を叩いてリポジトリを検索する機能を実装したので記事にします。

## 開発環境
Swift 5.5
Xcode 13.1

## サンプルプロジェクト
GitHubにPushしました。気になる方はご覧ください。
https://github.com/ken-sasaki-222/AsyncAwaitTrainingInUIKit
![QR_280408.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/db75944b-f035-278d-b380-c0b299264fcb.png)

## レスポンスをもとにModelを作成
“`
{
“total_count”: 223653,
“incomplete_results”: false,
“items”: [
{
“id”: 44838949,
“node

元記事を表示

アプリ内バナーの実装・運用をできるだけ楽にする(Swift × microCMS)

# はじめに

アプリの規模が大きくなってくると、販促やお知らせ、チュートリアル導線などのためにアプリ内にバナーを表示したいケースが出てきます。

*(↑こういう画像バナーのイメージです)*

バナー表示に必要なのは「画像」「タップ時の遷移先URL」とシンプルですが、それなりの頻度でバナーを更新することを考えると運用ができるだけ楽になるようにホスティングしたい気持ちになってきます。

私がこれまで作っていた個人アプリでは、

* JSONファイルを適当なサーバーに置く
* Firebaseなどを利用してそれ専用のAPIを作る

などとしていましたが、更新が大変だったり、APIの管理が面倒だったりとモヤる点も多く、もっと良いソリューションがあるのではないかと感じていました。

この記事ではmicroCMSというサービスを利用して、バ

元記事を表示

Swift5 全予約語 (106語) の解説

ドキュメントから漏れている予約語もあるため、下記情報を統合してカウントしています。
* [The Swift Programming Language (Swift 5) Lexical Structure](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/doc/uid/TP40014097-CH30-ID413)
* [The Swift Programming Language (Swift 5) Summary of the Grammar](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/zzSummaryOfTheGrammar.html#//apple_ref/doc/uid/TP40014097-

元記事を表示

【iOS】アプリ内でシステムログを取得したい

この記事は[NTTコムウェア Advent Calendar 2021](https://qiita.com/advent-calendar/2021/nttcomware) 1日目の記事です。

初日からかなりニッチな内容ですが、iOSでシステムログを取得する方法について考えます。

# ベータテストあるある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318187/2efdcafe-4a23-33c1-0ac3-cc4992fbdcb6.png)

そんなこと言われても解析のしようがない
せめてログをください…

という光景を社内で見たことはないでしょうか。

実際アプリをリリースする前にシステムログを取得してもらうのは容易ではないため、
ログをもらうのを諦めているケースは多いと思います。

# 今までのログ取得方法

iOSでシステムログを確認する方法としては

– Macにつないで、XCode経由で取得
– Macにつないで、Console.app経由で取得
– 端末の電

元記事を表示

UIViewControllerの一部だけをSwiftUIで構築した話

# 前書き

[ACCESS Advent Calender](https://qiita.com/advent-calendar/2021/access) 今年の1日目は@tonionagauzziです。

1月に娘が生まれて、コロナ禍での育児1年生でしたが、会社や周囲の手厚いサポートによって無事に過ごせました。この場を借りて、1年間お世話になった皆さんにお礼を申し上げます。

そしてようやく念願叶い、両家に顔見せに行った帰りの飛行機で、明後日投稿日じゃん!って気づいてスマホで記事書いてます。便利な時代になりましたね!

# やったこと

UIKitで書かれた歴史の長いiOSアプリがあります。最近、その Deployment Target が13.0に上がったので、**UIViewControllerの一部だけ**にSwiftUIを導入しました。

また、SwiftUIで、URLは青下線表示で押したらSafariが開くようにしました。

![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

SceneKitでサイコロを振る(Swift)

![Xcode-13.0](https://img.shields.io/badge/Xcode-13.0-brightgreen) ![Swift-5.5](https://img.shields.io/badge/Swift-5.5-brightgreen) ![iOS-15.0](https://img.shields.io/badge/iOS-15.0-brightgreen)

## はじめに
iOS アプリをつくっているとだれしも一度はサイコロを振りたい!と思ったことがあるはずです:sunglasses:今回は `SceneKit` を使ってサイコロを振ってみます。

完成形はこんな感じです。

元記事を表示

OTHERカテゴリの最新記事