- 1. Swift Package Manager 活用時に「remote repository could not be accessed」が出た時に確認すること
- 2. iOS15でのIDFA許可要求の仕様変更とその対応方法
- 3. userDefaultsに保存した値をTableViewで表示する(swift)
- 4. カプセル化をわかりやすく
- 5. iOS で物体の向きをリアルタイムに計算①【2D FFTでパワースペクトル画像生成】
- 6. [iOS]Firebase Analyticsのみを使う場合App Tracking Transparency によってユーザーに許諾を得る必要があるか?
- 7. SwiftUIのPreviewをつかってUIカタログを出力する
- 8. 【Flutter】簡単なToDoアプリの作成手順
- 9. 選択した文字を翻訳する機能をiPhoneに付けてみた(Pythonista3, DeepL API)
- 10. Frameworkとは
- 11. Web APIのリクエスト仕様を型で表現したい。Alamofire編 2021秋
- 12. [QUIC]iOS15でNetwork.frameworkにNWProtocolQUICが来たのでquic-goと双方向ストリーム
- 13. 【iOS】Metal Best Practicesの解説(11)コマンドバッファ
- 14. 画素値の配列からCGImageを作る
- 15. 【Swift】ScrollView + AutoLayout (SnapKit) での実装メモ
- 16. [Swift]四角く線が進んでいくアニメーション
- 17. Flutter環境構築のつまずきポイント(初心者向け)
- 18. 【RxSwift】RxSwift Traitsを知る
- 19. SwiftUIでハーフモーダルを表示するライブラリ ResizableSheet
- 20. iPhone買い替え時にやること
Swift Package Manager 活用時に「remote repository could not be accessed」が出た時に確認すること
## 概要
Swift Package Manager を導入しようとしたらエラーが出て進めませんでした、、
ググってもあまりドキュメントが出てきませんでしたので、解決策を共有します。## 再現環境
Xcode12.5.1
zsh## Swift Package Manager とは?
Xcode11 からiOS向けアプリでも活用可能になった、依存関係を解決しつつライブラいの導入ができるApple製のパッケージ管理ツールです。
この辺の資料が分かりやすいです。
https://qiita.com/hironytic/items/09a4c16857b409c17d2c## エラー内容
今回起きたエラーはXcodeの「File > Swift Packages > Add Package Dependency」から `https://` 指定でプライベートなライブラリをURL検索した際に発生しました。内容は下記の通りです
“`
The remote repository could not be accessed.
Make sure a valid reposito
iOS15でのIDFA許可要求の仕様変更とその対応方法
##このページの概要
IDFA取得許可リクエストを行ってダイアログを表示する処理について、
iOS15以降では、アプリの状態が Active の場合にリクエストしないと
ダイアログが表示されなくなりました。特に注意が必要なのは、位置情報やプッシュ通知などの許可要求と連続でリクエストしたり、
他のリクエストのcompletionHandler内で実行している場合です。問題が発生するパターンと、その対応方法について記載しています。
##iOS15で新たに加わった制限の内容
公式ドキュメント
https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization
に以下の記載があります。
“`text:
Calls to the API only prompt when the application state is: UIApplicationStateActive. Calls to the AP
userDefaultsに保存した値をTableViewで表示する(swift)
#概要
userDefaultsに保存した値をTableViewで表示する機能を独学で実装してみました。
storyBoadとラベル配置の説明は省略します。![2021-09-27 16.52のイメージ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1261100/d8a5d61f-466d-db1d-14f1-a20c587443ac.jpeg)
#①userDefaultsに保存するための空配列を作成する
“`swift:sample
var saveArray :[String] = []
“`#②textFieldの入力値やpickerで選択した値を配列に追加する
“`swift:sample
var textFieldValue :String = “”
textFieldString = textField.text!
saveArray.append(“\(textFieldValue)”)
“`#③userDefaultsに保存
“`swift:sample
カプセル化をわかりやすく
##前提として
本記事は私自身の備忘録として執筆しています。
少々わかりにくい部分や表現がありますことをご了承ください。##イメージ
まず「カプセル化のイメージ」について
・何かに包まれている
・外から守られている
・カプセル化を崩すとあまりよろしくない 等こちらが私が最初に聞いた時のイメージです。
結論から言うと、これらは概ね正解と言えるでしょう。##どこから守るのか
カプセル化についてはオブジェクのデータやメソッドについて使われることが多いようです。一言で言うと「オブジェクト内にあるデータ」を外部からの不正アクセスから守ると言うことになります。
すごく簡単に言い換えるとこうです。
「そのオブジェクトやメソッドに対する外からのデータアクセスを拒否する」
と言うことです。##なぜ守るのか(カプセル化の必要性)
目的は大きく分けて2つです。
・外部から不正なアクセスから守る
・外部から意図しない変更をさせないこれらより、カプセル化を実装しないとコードの保守や可読性が落ちてしまい、予期せぬエラーやコンパイルが通らないことも起こり得ます。
また、後でコードに微修正
iOS で物体の向きをリアルタイムに計算①【2D FFTでパワースペクトル画像生成】
物体の向きを周波数領域で判定してみます。
<完成イメージ>
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/72c6767f-b912-daca-f1f0-05a71328ccd0.gif) ![demo4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/73fc6b1c-c1fd-3887-ed7c-9355b40df78d.gif)これだけでは画像の中での物体位置を考慮した判定はできませんが、物体が強いエッジをもっている場合であれば判定できそうです。
この記事では上記のようにパワースペクトルを表示するまでを記載します。
向きを求める方法は次の記事に記載予定です。
(周波数領域での周波数成分が物体のエッジと直行するので、角度別扇状の成分の総和の比較で判定できると考えてます)。サンプルコードはGithubに置いています。
https://github.com/tamai999
[iOS]Firebase Analyticsのみを使う場合App Tracking Transparency によってユーザーに許諾を得る必要があるか?
– [Ad Support Frameworkを導入](https://firebase.google.com/support/guides/analytics-adsupport?hl=ja)している場合
– IDFA(広告識別子)を収集しているので、ATTによる許諾が必要。
– Ad Support Frameworkを導入していない場合
– iOS11をサポートしている場合
– [iOS11だと明示していないのに内部的にAd Support Frameworkを使用しておりIDFAを収集してしまうらしい](https://github.com/firebase/firebase-ios-sdk/issues/1686)。そのため、info.plistの`FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED`をtrueとするか、podfileで`pod ‘Firebase/Analytics’`の代わりに`pod ‘Firebase/AnalyticsWithoutAdIdSupport’`を用いるなどしてIDFA収集を阻
SwiftUIのPreviewをつかってUIカタログを出力する
SwiftUIのPreviews機能を利用するとシミュレータを起動することなくViewの動作を確認できます。
> Generate dynamic, interactive previews of your custom views.
[Previews in Xcode | Apple Developer Documentation](https://developer.apple.com/documentation/swiftui/previews-in-xcode)
プレビューを利用して開発する中で、プレビューのスナップショットが一覧で見られると便利だと思ったので、それを行うライブラリを作ってみました。
※ SwiftUIのプレビュー機能を利用しているViewが対象となります。プレビューされていないViewのスナップショットは作成されません。
## つくったもの
[yyokii/UIPreviewCatalog](https://github.com/yyokii/UIPreviewCatalog) というものを作りました。
`createCatalog(previ
【Flutter】簡単なToDoアプリの作成手順
皆さんこんにちは!現役大学生のKamichan_R(@Kamichan_R)です。
今回は、世界中で多く利用されているクロスプラットフォーム開発のフレームワークであるFlutterでアプリ開発をしました。Flutterでアプリ開発をするためにDart,SQLiteを勉強しました。そして、学習のアウトプットとしてToDoアプリを制作しました。
この記事では、今回制作したToDoアプリの説明・開発手順と学習の振り返りを紹介します。#アプリ制作の説明と経緯
ここでは、ToDoアプリの概要と使用した技術と学習の目的を説明します。
##アプリの概要
今回開発したアプリは基本的なToDoアプリの機能が実装されています。タスクの追加・読取・編集・削除(CRUD)の機能があります。タスク作成時は、タスク名・優先度・期限・メモを入力します。複数のタスクがある場合は期日が早い順に並べるという機能があります。【Todoアプリ完成】
1ヶ月前位から 選択した文字を翻訳する機能をiPhoneに付けてみた(Pythonista3, DeepL API)
## 概要
Pythonista3とDeepLの無料APIを使い、
iOS上で選択した文字列を翻訳するアプリを作ってみました。文字列を選択し、「共有…」からアプリを起動することで翻訳することができます。
![34C05510-850C-461E-B2B9-E485CD82DCD0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614475/c258666e-ce7a-26f2-f604-80573d4f2f70.jpeg)
![F84C82AA-C4AB-4347-893A-4901E21FAB58.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614475/109f33c6-7e6f-5ea2-b632-9611c3706340.jpeg)## 実行環境
– iOS 12.5.4 (iPad mini3)
– Pythonista 3.3
– Python 3.6## 事前準備
– App StoFrameworkとは
iOSDC2021の[Daiki Matsudate](https://twitter.com/d_date)さんの発表を聞いて今までなんとなく理解していたFrameworkのことがXCFrameworkとSPMとの関連を含めかなり理解が進んだのでその復習がてら知識の整理をしようと思います。この発表ではMulti ModulesやMulti Projectsについても非常に素晴らしい内容が含まれていますがここではFrameworkのみにフォーカスしてまとめようと思います。
## Frameworkとは
* Build TargetとLinkする実行可能なバイナリ
* FrameworkはBuild Targetに設定することができる
* Linkの仕方には2種類ある### Static Link
* **ビルド時**にObject Code(.oファイル)をひとつのFrameworkにまとめアプリとLinkしひとつのバイナリにまとめる
* よって起動時間は**短く**なる
* このLink方法のFrameworkを**Static Framework**という### Dyna
Web APIのリクエスト仕様を型で表現したい。Alamofire編 2021秋
# はじめに
Web APIをアプリから利用する場合、そのAPIリクエストの仕様をSwiftで型として扱いたい場合があります。それでAPI仕様書と照らし合わせてミスがないか、齟齬がないかを確認したりトラブル時のきりわけをしたかったりするわけです(私は)。そういう場合の型の定義について[Alamofire](https://github.com/Alamofire/Alamofire)を利用してどうやるかを書いておきます。他に良いやり方があるかもしれないのでそういう場合はコメントをもらえれば助かります。
具体的には何らかのWebAPIリクエストをつぎのようにできるのが良いんじゃないかという話です。
“`swift
// MARK: – リクエスト型の定義側
struct 何らかのWebAPIリクエスト: WebAPIRequest { // protocol WebAPIRequest: URLRequestConvertible { … }
typealias Response = User // struct User: Decodable { … }
[QUIC]iOS15でNetwork.frameworkにNWProtocolQUICが来たのでquic-goと双方向ストリーム
# iOS15でNetwork.frameworkにNWProtocolQUICが来たのでquic-goと双方向ストリームしてみた
* iOS15 から iOS が QUIC が諸々使えるようになりました???????
* WWDC2021 での発表はこちらhttps://developer.apple.com/videos/play/wwdc2021/10094
* この中で紹介されているのですが、URLSession が http3 をサポートするので、http リクエストは複雑な事をしなくても QUIC が使えそうです
* また、Network.framework に NWProtocolQUIC が新しく入っており、ほかの TCP や UDP のソケットと同じインタフェースで QUIC のストリームを扱えるようになったようですhttps://developer.apple.com/documentation/network/nwprotocolquic
* そこで、今回は **NWProtocolQUIC を使って、quic-go で建てたサーバと双方向ストリーム
【iOS】Metal Best Practicesの解説(11)コマンドバッファ
[Metal Best Practices](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPracticesGuide/index.html#//apple_ref/doc/uid/TP40016642-CH27-SW1)は、iOS/MacOS/tvOSのAPIであるMetalを用いた設計のベストプラクティスガイドです。
本稿では、何回かに分けてこのガイドを読み解き、コード上での実験を交えて解説していきます。
読んでそのまま理解できそうなところは飛ばしますので、原文を読みながら原文のガイドとしてご利用下さい。
また、iOSの記事なので他のOS(MacOS, tvOS)についての記載は割愛します。他の記事の一覧は、初回記事よりご覧下さい。
https://qiita.com/TokyoYoshida/items/521619d6d8dd8d8ef9e4
### [Command Buffers (コマンドバッファ)](https://developer
画素値の配列からCGImageを作る
画素値の配列からCGImageを作成する方法として、[CGImageクラスのイニシャライザを使う方法](https://developer.apple.com/documentation/coregraphics/cgimage/1455149-init) がありますが、ここではAccelerateフレームワークを利用した方法を紹介します。
Accelerateフレームワークを利用することで、次の効果が期待できます。– CPUのベクトル演算機能の活用で高速・省エネな変換
– 画像の上下・左右反転やサイズ変更等の加工を高速・簡単に実現ここでは10×4の画素値配列をCGImageに変換/加工してみます。
**※iOS13以降を前提としてます。**## 配列からCGImageへの変換
### グレースケールの場合
“`swift
let width = 10
let height = 4// グレースケール画素値
var grayScalePixels: [UInt8] = [
0, 25, 50, 75,100,125,150,175,200,225,
【Swift】ScrollView + AutoLayout (SnapKit) での実装メモ
# はじめに
よくあるような縦方向・横方向の ScrollView の実装方法のメモ。
以下のような画面を実装します。
よければ参考にしてください。![Simulator Screen Recording – iPhone SE (2nd generation) – 2021-09-26 at 01.08.56.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1203765/e3bc7452-c9e8-ae1a-acf8-6c30e25a86d5.gif)
【注意】
※ Viewはコードベースで作成しています。
※ レイアウトには [SnapKit](https://github.com/SnapKit/SnapKit) を使用しています。# 環境
– Swift5
– Xcode13.0# 実装手順
順番に実装手順を記載していきます。
ここでは、色々省略して、最低限のコードのみ記載しています。
細かいことは、記事の最後に全体のコードを載せておりますので、そちらをご参照ください。①
[Swift]四角く線が進んでいくアニメーション
#はじめに
こんな感じのやつを作ります。#サンプル
![AnyConv.com__四角形のタイマー.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691930/2e21dac1-3db5-6798-ee41-2262dec5b260.gif)#コード
とりあえずこれをそのままぺッと貼り付けて、シュミレータで確認してみてください!
上のアニメーションと同じものができるはずです。“`
class ViewController: UIViewController {override func viewDidLoad() {
super.viewDidLoad()// グレーの線を作る
let backLayer = CAShapeLayer()
backLayer.path = CGPath(rect: CGRect(x: 100, y: 300, width: 200, height: 200), transfo
Flutter環境構築のつまずきポイント(初心者向け)
#目次
– [はじめに](#はじめに)
– [環境](#環境)
– [PATHが通らない](#pathが通らない)
– [Android StudioでOpen iOS Simulatorが出来ない](#android-studioでopen-ios-simulatorが出来ない)
– [さいごに](#さいごに)
– [参考](#参考)#はじめに
Flutterの勉強を始めたいと思い、まずは環境構築をしてみました。基本的には手順通り進みましたが、Flutter初心者の私が引っ掛かったいくつかのポイントをまとめました。Flutter環境構築が上手くいかない方は是非参考にしてみてください。#環境
– macOS Catalina 10.15.7#PATHが通らない
flutterをダウンロードして所定の場所に配置して、.zshrcファイルにPATHを追加して保存しましたが、not foundエラーとなってしまいました。[解決策] source .zshrcを実行してzshrcファイルの変更を反映させると解決しました。つい忘れがちですが、忘れない様にしたいですね。
[【zsh
【RxSwift】RxSwift Traitsを知る
#はじめに
今回は、Single, Completable, Maybeについてまとめます。いわゆる、RxSwift Traitsと呼ばれるものですね。#Single
Singleは値またはエラーのいずれか一方を返す(流す)ことが保証されているObservableのようなものです。
使う場面の例としては、
・APIから値を要求し、取得する
・DBから値を取得する
・画像が読み込まれたときに、操作する
などなど“`swift
func readAll() -> Single<[Record]> {
return Single.create { observer in
if isSuccess {
observer(.success(records))
} else {
observer(.failure(error))
}
}
return .just(dataStore.readAll())
}
“`さらに、純粋なObservableは`.asSing
SwiftUIでハーフモーダルを表示するライブラリ ResizableSheet
最近、ハーフモーダル(セミモーダル)を使っているアプリが増えてきましたね。
僕も個人開発しているアプリでハーフモーダルを使いたい時がよくあるのですが、SwiftUIで手軽に実装する方法がなかったので、 [ResizableSheet](https://github.com/mtj0928/ResizableSheet) というライブラリを作りました。
この記事では、ハーフモーダルの実装とその煩雑さ、そして開発したライブラリであるResizableSheetの紹介をします。(最初の方はハーフモーダルの話をするので、ResizableSheetについて早く知りたい人は [後半](https://qiita.com/matsuji/items/1c4ff827d73b330c2c55#resizablesheet)から読んでください。笑)
# ハーフモーダルとは
iOS標準のマップアプリなどで使われている下から出てくるシートです。
iPhone買い替え時にやることiPhoneを買い替えるたびにやる作業なのでまとめておきます。
**前提**
iCloud の有料プランを使っています
(クイックスタートを使い新旧 iPhone で直接データ移行をすれば iCloud の有料プランに入っていなくても大丈夫だと思いますが念のため)—
# データ移行前にやっておくこと## iCloud の設定調整
**iCloud の「iPhoneを探す」を OFF にする**
設定/Apple ID/iCloud/ から「iPhoneを探す」を OFF にする**iCloud の共有設定が ON になっていることを確認**
全てのアプリ(「iPhoneを探す」以外)がONになっていることを確認する
(こう見るとiCloud対応しているアプリは案外少ないな)## 不要なアプリの削除
データ移行が早く終わるように不要なアプリやデータは削除しておく
(個人的には、写真アプリのデータ容量が多いので「iCoud写真」共有をオフにして、データ移行の容量を減らしたいが、ここではそのままONにしている)## 設定の見直し
設定/一般/iPhoneストレー