- 1. [SwiftUI / Auth0]Auth0 を利用した iOS アプリの開発
- 2. 【SwiftUI】ScrollViewのバウンスを無効にする
- 3. レアカードのホログラムみたいなカスタムのCIFilterを作ってみた
- 4. 【Xcode・Swift エラー解決】Thread 1: signal SIGABRT
- 5. NSError. localizedDescriptionの文字列をカスタマイズする
- 6. 【SwiftUI】Listのセパレーターを両端まで伸ばす
- 7. 【Swift】UIパーツとコントローラーが紐づかない時の対処法
- 8. 新しいmacOS M1マシーンでどのくらいビルド時間が速くなるか調べてみた!
- 9. @State #SwiftUIの修飾子に関して簡単にアウトプットしてみる
- 10. 【Flutter】iOSシミュレータ起動時に以下のエラーが出た時の対処 xcodebuild: error: Unable to find a destination matching the provided destination specifier
- 11. KMM(Kotlin Multiplatform Mobile)は廃止され KMP(Kotlin Multiplatform)に統一されたよ
- 12. 【SwiftUI】特定の条件下でTabを非表示にする
- 13. [Swift]AWSCognitoからログインユーザーの「idToken」「accessToken」「refreshToken」「deviceId」を取得する
- 14. 【SwiftUI】ScrollViewを一番下から始める
- 15. plistについて
- 16. 初心者が久々にCharlesを使おうとしてハマったときの対処法(macOS)
- 17. How to use YYSystem, a voice interactive real-time translation application
- 18. @_dynamicReplacementを動的にロードして挙動を差し替える
- 19. 【Carthage】Xcode14.3以降でcarthage bootstrapが失敗する?
- 20. 【SwiftUI】matchedGeometryEffectを使って拡大機能を作成する
[SwiftUI / Auth0]Auth0 を利用した iOS アプリの開発
## この記事を書いた動機
Auth0 を利用した iOS アプリ(SwiftUI)の開発に関する記事はあるが、画面の表示を担当する `ContentView` に認証に関する処理を実装するものが多かった。メンテナンスしやすいように認証に関する処理を別のクラスに実装したので、その備忘録として書いた。
## この記事で書くこと・書かないこと
### 書くこと
– Auth0 を利用した iOS アプリ(SwiftUI)開発### 書かないこと
– Auth0 のアカウント作成方法
– Auth0 で新しい Application(Native App) の作成方法
– Auth0 でテストで使用するユーザーの具体的な作成方法
– Xcode を利用して新しいプロジェクト(SwiftUI)を作成する方法
– Xcode の `Add Package` を利用してライブラリを導入する方法
– プロジェクトに `.plist` ファイルを追加する方法:::note warn
上記の内容は記載しないため、具体的な方法については他の記事を確認すること
:::## Auth0 とは
【SwiftUI】ScrollViewのバウンスを無効にする
# はじめに
バウンスありとなしではアプリの印象がとても変わります。
SwiftUIのScrollViewはバウンスがありで、変更することができないので`SwiftUI-Introspect`を使用してバウンスを無しにしてみます
|||
|-|-|
|![Simulator Screen Recording – iPhone 14 Pro – 2023-08-03 at 21.06.12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/87a5fce6-1ef3-2cd3-4a48-e7e401b7a980.gif)|![Simulator Screen Recording – iPhone 14 Pro – 2023-08-03 at 21.05.50.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e2a712e8-3fd5-caca-5b1c-80e46c6dee1c.gif)|#
レアカードのホログラムみたいなカスタムのCIFilterを作ってみた
# レアカードのホログラムみたいなカスタムのCIFilterを作ってみた
TCGのレアカードのホログラムみたいなエフェクトをかけるCore ImageのカスタムのFilterをCIColorKernelを使って作成してみました![holo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214313/2fa17830-3feb-cdc3-b7b9-42ef2ea9b2fe.gif)
# 実装
次の3ステップで実装できます
Voronoi図?とかの話は、それぞれのセクションで取り扱います1. GameplayKitを使ってVoronoi図を作成する
1. カラフルなVoronoi図に変換する
1. ベースの画像にカラフルなVoronoi図を重ねる
1. rotation3DEffectの回転角度に合わせて色を変える## GameplayKitを使ってVoronoi図を作成する
### Voronoi図とは> *Voronoi図とはある距離空間上の任意の位置に配置された複数個の母点(英: s
【Xcode・Swift エラー解決】Thread 1: signal SIGABRT
## はじめに
コレクションの実装の際にエラーが発生し、解決までに時間がかかったので解決方法をメモします。## エラーの背景
私の場合は、collectionViewCellのインスタスを生成する際に“「Thread 1: signal SIGABRT」“というエラーが発生しました。![スクリーンショット 2023-08-03 11.12.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/a7df6b2f-8b96-4fc6-794e-3e08b718d63b.png)
## 原因
インスタンス化するViewの**Custom Classにクラス名が設定されていなかった**ので、インスタンス化する際にViewの認識ができず、エラーで落ちていたと考えられます。![スクリーンショット 2023-08-03 11.23.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/c5
NSError. localizedDescriptionの文字列をカスタマイズする
`NSError.localizedDescription`のデフォルトのフォーマットは以下です。
> The operation couldn’t be completed. (\
error \ .)
日本語だとこうなります。
> 操作を完了できませんでした。(\
エラー\ )
“`swift
let error = NSError(
domain: “HogeErrorDomain”,
code: 1000,
userInfo: [“key1”: “value1”, “key2”: “value2”]
)
print(error.localizedDescription)
“`“`
The operation couldn’t be completed. (HogeErrorDomain error 1000.)
“``userInfo`のキーに`NSLocalizedDescriptionKey`が含まれている場合、その値が`localizedDescription`の値に
【SwiftUI】Listのセパレーターを両端まで伸ばす
# はじめに
Listのセパレーターは微妙に左側にスペースがあるんですよね
このスペースを消したいです。
![simulator_screenshot_B16016A9-4155-4875-BD2A-AA13B73A014F.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5a298dd2-affd-11f6-8602-a974db709124.png)しかし、SwiftUIの標準機能ではないので`SwiftUI-Introspect`を使って実装します
https://github.com/siteline/SwiftUI-Introspect
# ライブラリのインストール
全体的な流れはこちらを参考にしてくださいhttps://tech.amefure.com/swift-package-manager
:::note warn
**注意**
`SwiftUIIntrospect`のみチェックをいれます
![スクリーンショット 2023-08-01 16.18.26.pn
【Swift】UIパーツとコントローラーが紐づかない時の対処法
## はじめに
UIパーツとコントローラーの紐付けに少し苦戦したので、メモを残します。## 現象
いつものように、「controlキー」を押してImageViewをドラッグしてコントローラーと紐付けしようとしたところ、何も起きない、、、
えっどうして???## 原因
結論を言うと、“ViewクラスにViewControllerが設定されていない“からです。## 解決方法
Viewの中の「File’s Owner」のクラスを紐付けたいコントローラー名に設定してください。そうすれば、ViewとContorollerは紐づくはずです!viewとコントローラーの名前が一緒なのでややこしいですが、以下は、「BottomPopViewCell.xib」と「BottomPopViewCell.swift」というファイルを紐づけています!
![スクリーンショット 2023-08-02 14.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/8ebd0f2c-dffe-a6d2
新しいmacOS M1マシーンでどのくらいビルド時間が速くなるか調べてみた!
# はじめに
皆さんこんにちは!
CircleCIカスタマーサクセスマネージャーの小島です。
CircleCIカスタマーサクセスチームでは、お客様がCircleCIを最大限、効率良く、お客様の目標に合わせて活用していただけるよう、日々お手伝いをしております。
最近は暑くて暑くて、趣味のスキューバダイビングをするたびに早く人間を辞めて、魚になりたいと思っています。3月にCircleCIがリリースした、macOSのM1マシーンはもう試されましたか?
CircleCIはビルド時間が速くなると言っているけど、消費クレジットが増えるし、、、
と心配されている方も多いようです。
本日は実際に速度の比較を行って、どのくらい速くなるか試してみたいと思います!# 目次
– 利用プロジェクトについて
– Configファイルの設定
– ワークフローの実行結果
– macOSマシーンについてのお知らせ
– おわりに# 利用プロジェクトについて
今回、CircleCIのソリューションエンジニアのTadashiさんのブログ[Tadashiさんのブログ](https://tadashi0713
@State #SwiftUIの修飾子に関して簡単にアウトプットしてみる
## はじめに
今後、何回かに分けて@〜と表現されるSwiftUI特有の修飾子についてアウトプットしていく。
前提として、これら修飾子の付いたキーワードは`プロパティラッパー`などと呼ばれる。
プロパティラッパーとは、ものすごく簡単にいうと、`値の数を増やす・減らす・確認するなどを簡単にできる機能`みたいなニュアンスである。また、その値の変更に伴って、自動的に画面描画(画面の更新)をしてくれる便利な機能も存在する。## @Stateの詳細
– @Stateはプロパティラッパーの一つで、状態を管理するために使われる
– 値が更新されたらViewが自動的にリロード(再描画)される
– structの中で値を変更できる
– @Stateは親Viewとその配下の子Viewでしかアクセスできないため、private修飾子を付与し、外部からアクセスできないようにするのが好ましい。というか、それが暗黙のルール。
## ソースコード
“`swift:Swift
// Textの下にボタンがあり、ボタンを押すと、Textのテキストが変化する。で挙動を確認する。
struct ContentView
【Flutter】iOSシミュレータ起動時に以下のエラーが出た時の対処 xcodebuild: error: Unable to find a destination matching the provided destination specifier
iPhoneのsimulatorを起動した後、
“`bash
flutter run
“`
を叩いてiPhoneシミュレータでFlutterのデバッグビルドを動かそうとした時、以下のエラーに遭遇し、シミュレータでのアプリ起動に失敗しました。
“`
DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
xcodebuild: error: Unable to find a destination matching the provided destination specifier:
“`
エラーの原因は、XCodeプロジェクトでBuild ConfigurationがDebugになっていないことでした。XCodeプロジェクトのRunner.xcworkspaceを開き、XCode画面上部の「Runner」→「Edit Scheme…」→「Run」タブ と進みます。Infoタブの最上部に「Build
KMM(Kotlin Multiplatform Mobile)は廃止され KMP(Kotlin Multiplatform)に統一されたよ
長らくKotlin界隈でたびたび混乱していた **KMM(Kotlin Multiplatform Mobile)** と **KMP(Kotlin Multiplatform)** がついに終止符が打たれましたね
KMM(Kotlin Multiplatform Mobile)廃止です?
? Update on the name of Kotlin Multiplatform
From now on, “Kotlin Multiplatform” (KMP) is the preferred term when referring to the Kotlin technology for sharing code, regardless of the combination of platforms being discussed.
We are deprecating the “Kotli
【SwiftUI】特定の条件下でTabを非表示にする
# はじめに
`SwiftUI-Introspect`を使ってSwiftUIではできないことをサポートしてもらいます。https://github.com/siteline/SwiftUI-Introspect
# ライブラリのインストール
全体的な流れはこちらを参考にしてくださいhttps://tech.amefure.com/swift-package-manager
:::note warn
**注意**
`SwiftUIIntrospect`のみチェックをいれます
![スクリーンショット 2023-08-01 16.18.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/31800ab3-7bad-0ab0-78fc-fb8934daa2a3.png)
:::# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-08-01 at 16.20.46.gif](https://qiita-imag
[Swift]AWSCognitoからログインユーザーの「idToken」「accessToken」「refreshToken」「deviceId」を取得する
# 投稿の経緯
Amplify / Cognitoを利用してログイン機能を開発する機会があり、
公式ドキュメントを参考に・idToken
・accessToken
・refreshToken
・deviceIdをCognitoから取得できたので記事にします。
# 前提
“`
pod ‘Amplify’
pod ‘AmplifyPlugins/AWSCognitoAuthPlugin’
“`CocoapodsでもSPMでもなんでもいいですがSDKは導入している前提で記事を書いています。
# 実装
ライブラリをimportします“`Hoge.swift
import AWSCore
import AWSCognitoIdentityProvider
“``amplifyconfiguration.json`に記載されている値を参照してCognitoのPoolを設定します。
設定したPoolから現在ログインしているユーザー情報を取得することができます。“`Hoge.swift
final class Hoge {private let c
【SwiftUI】ScrollViewを一番下から始める
# はじめに
チャット画面の実装する際にScrollViewを使うことになると思いますが、
開いた時は最新のチャットが表示されてないといけません。最新のチャットは1番下にあるのでScrollViewを1番下からはじめたいです。
その方法を記録しておきます。
# サンプルアプリ
![Something went wrong]()# 実装
ScrollView内の1番下の要素のidに`proxy.scrollTo()`で移動します
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
ScrollView {
ScrollViewReader { proxy in
VStack(spacing: 10) {
ForEach(0..<50) { index in RoundedRectangle(cornerRadius
plistについて
社内の勉強会でINIファイルが出てきてわからなかったときに、Macだとplistみたいなものと教えていただきました。業務でplistを使ったことはありますが、どういうものなのかしっかりと理解できていなかったので、記事を作成することで理解を深めていきたいと思います。
# 目次
1.plistとは?
2.Macの表現形式(XML、バイナリ、JSON)
3.plistの歴史
4.Xcodeでのplistの作成の仕方・読み込み方
5.まとめ
6.おわりに
7.参考にしたサイト## 1. plistとは?
plistはPropertyListの略で、設定を保存するためのファイルのことで、拡張子は「.plist」です。
プロパティリストは「key」「Type」「Value」の3つの項目から成り立っていて、XML形式で保存されています。
データ構造はNSArray型かNSDictionary型を使う必要があります。
ユーザーの設定をするのによく使われており、windowsにおける[レジストリ](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B8%E
初心者が久々にCharlesを使おうとしてハマったときの対処法(macOS)
## ~~3~~ 4行まとめ
* Charles の証明書は発行から1年間しか使えないので、期限切れになっていたら再発行が必要
* 期限切れの証明書が見当たらなければ キーチェーンアクセス > 表示 > 有効期限の切れた証明書を表示 で探す
* 再発行は Charles の Reset Charles Root Certificate から
* iOS のプロファイルの有効化には「VPNとデバイス管理」と「証明書信頼設定」の2つが必要## 問題1:Charles Help > SSL Proxying > Install Charles Root Certificate ができない
症状: キーチェーンアクセス.app は起動するものの Charles の証明書が見つからない
### 確認:キーチェーンアクセス 表示 > 有効期限の切れた証明書を表示 してみよう
「表示」メニューから有効期限切れの証明書の表示/非表示を切り替えられるのですが、私の場合「非表示」になっていたので上述の症状になっていたようです。
「表示」にしてからキーチェーンアクセスの右上の検索フォームから「C
How to use YYSystem, a voice interactive real-time translation application
Let’s introduce the usage of YYSystem, which can assist in web meetings between English and Japanese speakers.
# Introduction
YYSystem is a cross-platform application (Windows, iPhone, Android) capable of transcribing multiple-person meetings and translating into multiple languages. It is well-balanced in terms of voice recognition accuracy, sentence boundary recognition, and translation precision, particularly made easy to handle in conversations using Japanese and English. Although the free v
@_dynamicReplacementを動的にロードして挙動を差し替える
# @_dynamicReplacementを持つframeworkを動的にロードして実装を差し替える
Swiftは@_dynamicReplacementの仕組みを使い、dynamic修飾子が設定されたメンバの実装を差し替えることができます
この仕組みは、**SwiftUIのPreview**などに活用されているようです
そこで、@_dynamicReplacementの基本的な挙動を確認し、@_dynamicReplacementが設定された実装を含むモジュールがロードされたタイミングで実装が差し替わるという特徴を生かし、frameworkを動的に読み込むことで、動的に挙動を差し替えるのを試してみました:::note warn
この記事は@_dynamicReplacementの挙動を確認することを目的としており、frameworkを動的にロードする仕組みをプロダクトに導入することを推奨するものではありません
:::# @
【Carthage】Xcode14.3以降でcarthage bootstrapが失敗する?
こんにちは。withでiOSエンジニアをしている長尾( @zrn-ns )です。
突然ですが、最近Xcodeを14.3以上にアップデートしたらCarthageのビルド(carthage bootstrap)が通らなくなった… って方、結構多いんじゃないでしょうか。
今回はこの問題について、弊社で行った対応についてお話します。
# どんなエラーが出るのか
今回解説する問題については、既にCarthage公式でIssueが起票されています。
しかし現状その対処方法について、公式からのアナウンスはありません。コラボレーターの方も忙しいんでしょうね…。
https://github.com/Carthage/Carthage/issues/3333
具体的な現象としては `carthage bootstrap` を実行すると下記のようなエラーが発生します。(上記Issueから引用です)
“`shell
Build Failed
Task failed with exit code 65:
/usr/bin/xcrun xcodebuild -workspace /
【SwiftUI】matchedGeometryEffectを使って拡大機能を作成する
# はじめに
`@Namespace`と`matchedGeometryEffect`を使って滑らかなアニメーションを実装することができるので拡大機能を実装してみました# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-07-30 at 22.58.30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/fa5da798-f863-780c-ba6d-f349063d0733.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
@State private var selectedEmoji: String?@Namespace private var namespace
private let emojis = [“☺️”, “?”, “?”, “?”, “?”, “?”, “?”, “??”, “?”