- 1. [iOS] アプリ上で UserDefaults の内容を確認・編集できる OSS を作った話
- 2. 【Swift】 String型を数値型に変換すると、Optionalになってしまう理由
- 3. [iOS]CircleCIで No Space Left on deviceエラーに遭遇した場合の対処法
- 4. 専門学生がFlutterを独学で初めて3ヶ月でリリースした話
- 5. [iOS]リアルタイム音声認識(Speech to Text)を実装してみる
- 6. 【Swift】Alamofire6でresponseJSONが使えなくなるらしい
- 7. 第4回iPhoneアプリ開発入門〜Appleのチュートリアルの進め方〜
- 8. CoreMotionを使ってiPhoneから気圧を取得してみた
- 9. 正方形の画像からアイコン画像を生成する
- 10. 【SwiftUI】リワード広告の表示
- 11. 【SwiftUI】Lottieでアニメーションを表示する
- 12. [Xcode] The value for key CFBundleShortVersionString [hoge] in the Info.plist file…に対する処方箋
- 13. Godot用 iOS版 Firebase Cloud Messagingのプラグインを作った
- 14. ID を持つエンティティにはIdentifiableを積極的に採用
- 15. 【Flutter】XcodeでCould not inspect the application package.というエラーと2日戦った話
- 16. SwiftUIでAPI(クロージャとasync/await)を利用するViewModelクラスをテストする
- 17. 第3回iPhoneアプリ開発入門
- 18. 第2回iPhoneアプリ開発入門
- 19. 第1回iPhoneアプリ開発入門
- 20. 【Swift】オリジナルのSFSymbolを作成する
[iOS] アプリ上で UserDefaults の内容を確認・編集できる OSS を作った話
## Tl;Dr
任意の iOS アプリに組み込んで利用可能なデバッグツール的な OSS です。
https://github.com/YusukeHosonuma/UserDefaultsBrowser
以下ツイートの動画を見ていただくのが分かりやすいかと思います。
UserDefaults-Browser を OSS として公開しました ?https://t.co/IdMbH8pDZp
SwiftUI-Simulator からパッケージとして独立し、 #UIKit ベースのアプリでも利用可能になりました。
画像形式のサポートに加え、多数の改善も行われています。
どうぞお気軽にご利用くださいませ?#iOSDev #Swift https://t.co/ZDdTLjXJev pic.twitter.com/LbkepRwkRn
— トビ (@tobi462) May 8, 2022
## 現時点の機能
[Property List でサポートされている型](https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/PropertyList.html)に加え、`URL`や`Image`、JSONシリアライズされた`Data`型にも対応しています。
App Groups にも対応しています。
### 閲覧・検索
|閲覧|検索|App Groups|
|–|–|–|
|
【Swift】 String型を数値型に変換すると、Optionalになってしまう理由
# 目次
[はじめに](#はじめに)
[String型](#string型)
[数値型](#数値型)
[Optional型](#optional型)
[インスタンス・インスタンス化](#インスタンスインスタンス化)
[イニシャライザ](#イニシャライザ)
[結論](#結論)# はじめに
以下のコードのように、String型を数値型に変換した際、値にOptionalが付いてしまう理由について解説したいと思います。はじめに必要な知識について簡単に説明した後、結論のほうを述べさせていただきます。
“`swift
let text = “123”
let num = Int(text)
print(num) // Optional(123)
“`# String型
“alphabet” や “アイウエオ” のような文字列を表す型をString型と言い、”abc”のように「”」(ダブルクオート)で文字列を囲むと、String型の値を生成します。
“`swift
let a = “ここに文字列を入れる” // String型
“`# 数値型
Swiftにおいて数値型は、整数型と
[iOS]CircleCIで No Space Left on deviceエラーに遭遇した場合の対処法
# はじめに
CircleCI導入検証を進めていたところ、表題のエラーに遭遇しました。
docker利用時の対処法に関する記事はいくつかあったものの、iOSの情報を見つけるのにちょっと手間取ったので書いておきます
# エラー内容
“`bash
/usr/local/share/chruby/chruby.sh: line 50: cannot create temp file for here document: No space left on devic
“`# 解消した方法
– エラー発生原因は文字通り、容量が不足していることのようなので、不要なファイル群を削除し容量を確保します
– 外部記事を参考にしつつ、下記commandを定義しました
– ※ 適宜必要なディレクトリは削除対象から外す“`bash
remove-unnecessary: # 不要なファイル群を削除
steps:
– run: sudo rm -rf /Library/Developer/CoreSimulator/Profiles/Runtimes/
専門学生がFlutterを独学で初めて3ヶ月でリリースした話
# はじめに
先日AppStoreとGooglePlayStoreに入館アプリをリリースしました。
学校の友人とアプリを作ることになったため, その練習としてこちらのアプリを作りました。
自分の通っている専門学校が点呼での出席確認を行なっていたことから
作ってみようとなったのがきっかけです。## 完成像
![出席GIF_AdobeCreativeCloudExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631114/c1089680-22d3-6f97-d788-9468072c67d4.gif)団体ごとに自作のQRコードをスキャンするだけで入館が完了するアプリです。
[AppleStore シュッ席- 入館管理アプリ](https://apps.apple.com/jp/app/id1620188388)
## GitHub
[secretused/student_attendance_app](https://github.com/secretused/student_at
[iOS]リアルタイム音声認識(Speech to Text)を実装してみる
# Speechフレームワーク
[Speech](https://developer.apple.com/documentation/speech)
[Apple公式のサンプルコード](https://developer.apple.com/documentation/speech/recognizing_speech_in_live_audio)
音声をマイクから認識して文字列に変換するという機能を提供してくれています。
標準のキーボードのマイクボタンを押した時と同じ機能をアプリ上から利用できます。# 処理の流れ
1. 音声認識機能利用の権限の確認、取得
1. リクエスト作成、設定
1. タスク作成
1. マイクインプット作成、設定
1. 録音開始
1. テキスト変換結果の取得# カスタムクラス実装
以下のクラスを実装していきます。
#### SpeechRecognizerクラス
– Speechフレームワークを利用するクラス#### ListenViewModelクラス
– SpeechRecognizerクラスを保持#### ListenViewクラス
– L
【Swift】Alamofire6でresponseJSONが使えなくなるらしい
# 警告文が突然出現
“`
‘responseJSON(queue:dataPreprocessor:emptyResponseCodes:emptyRequestMethods:options:completionHandler:)’ is deprecated: responseJSON deprecated and will be removed in Alamofire 6. Use responseDecodable instead.
“`
responseJSONは非推奨です。
Alamofire 6で削除される予定です。
代わりにresponseDecodableを使ってください。だそうです。
気づいた時に修正しておくのが一番ということで修正したので共有します。
# 結論
“`diff_swift
– AF.request(“”, method: .get).responseJSON
+ AF.request(“”, method: .get).responseData
“`警告文にはresponseDecodableと記載してあったがresponse
第4回iPhoneアプリ開発入門〜Appleのチュートリアルの進め方〜
# はじめに
この記事では、プログラミング初心者向けにAppleのチュートリアルの進め方を解説します。# 翻訳
まず、下記のURLをクリックしてAppleのチュートリアルにアクセスしてください。https://developer.apple.com/tutorials/app-dev-training/
Appleのチュートリアルは全て英語で書かれています。そのため、英語が苦手な方はブラウザの翻訳機能を使うことをおすすめします。翻訳機能は、SafariよりもChromeの方が精度が高いため、Chromeを使うことをおすすめします。
Chromeをお使いの方は、ページ上で右クリックし、日本語に翻訳をクリックします。
![スクリーンショット 2022-05-08 23.24.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/9ef4c4f8-7d0b-c0bf-3e79-f944fad1d3ea.png)# はじめよう
そうしたら、「はじめましょう」をクリックして、チュート
CoreMotionを使ってiPhoneから気圧を取得してみた
## 投稿の経緯
業務でiPhone標準搭載の気圧計を使った機能の開発をするかもしれなくなったので、事前に技術検証としてCoreMotionを触ったので記事にします。## 環境
Mac Monterey 12.3.1
Swift 5.6
Xcode 13.3.1## サンプルアプリ
![QR_017541.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/06a226ce-ade6-ea92-a198-c5e902cbf18b.png)
コードはGitHubにPushしています。気になる方はご覧ください。
https://github.com/ken-sasaki2/CleanArchitectureTraining## 実装
“`ContentView.swift
import SwiftUIstruct ContentView: View {
private let altimator = Altimator()var body: some V
正方形の画像からアイコン画像を生成する
## 要件検討
– iOSのアイコンなので単純な角丸形状ではなく、複数のRを用いて直線部分と滑らかに接続された角丸形状にする。
– 背景と同化する場合があるのでドロップシャドウを軽くかける。## 実装方法
単純なRを用いた角丸ではないので`icon.layer.cornerRadius`は使用できない。
また、表示するサイズごとにRの値を計算するのも面倒。
よって、以下の手順で実装1. アイコン形状のマスクを用意
2. マスクを使ってアイコン画像(UIImage)を切り抜き
3. UIImageViewのimageに切り抜いたUIImageを指定し、シャドウを設定する## マスクの生成
Appleのwebで使用されていたアイコン表示のマスクイメージを拝借しベクタデータを生成。単純にPDF画像を参照しても良いので
【SwiftUI】リワード広告の表示
# はじめに
多くのドキュメントはUIKitで書かれていてSwiftUIで書かれていることはほとんどありません。
ドキュメントを見て毎回書き直すのは苦痛です。楽しくありません。
今回のお題である[AdMobのリワード広告ドキュメント](https://developers.google.com/admob/ios/rewarded?hl=ja)もUIKitで書かれています。
今後、同じ事をするであろう方のために書き直したものを公開しておきます。# 実装準備
実装の前に[スタートガイド](https://developers.google.com/admob/ios/quick-start?hl=ja)に記載してある事を行います①: Mobile Ads SDK のインポート
②: Info.plist の更新
③: Mobile Ads SDK の初期化こちらはUIKitでもSwiftUIでも同じなので割愛します
これが終われば準備は完了です。# 実装
“`Reward.swift
import GoogleMobileAdsclass Reward: NSObj
【SwiftUI】Lottieでアニメーションを表示する
# Lottieとは
![](https://github.com/airbnb/lottie-ios/raw/master/_Gifs/Examples1.gif)https://github.com/airbnb/lottie-ios
簡単にアニメーションを表示できるライブラリです
[こちら](https://lottiefiles.com/featured)で公開されているアニメーションがすぐ使えるようになります。
そしてとても軽いので使いやすいです。# インストール
– CocoaPods
– Carthage
– Swift Package Manager上記3つがサポートされています。
今回はSwift Package Managerでインストールしていきます。
①: [lottie-ios](https://github.com/airbnb/lottie-ios)のURLをコピー
![スクリーンショット 2022-05-07 15.06.30.png](https://qiita-image-store.s3.ap-northeast-1.amazon
[Xcode] The value for key CFBundleShortVersionString [hoge] in the Info.plist file…に対する処方箋
## 初めに
iOSアプリをAppStoreに新しいバージョンをリリースする際にこんなエラーに当たったので解決方法を載せておきます。今回のエラーはアプリをアーカイブし、その後Validate Appをした際に発生しました。
![スクリーンショット 2022-05-07 14.43.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552896/f68d4653-ec6b-9bb6-1d00-677813e4a9e4.png)
## 原因
今リリースしている(アーカイブした)バージョンよりも低いまたは同じ数値を設定しているために発生していると思われます。
例えば、バージョン1.1.0で公開しているものをバージョン1.0.1などでアーカイブしようとした場合です。## 解決方法
メニューバーより>Product>Archiveから今回リリースしたいアプリを選択し、バージョンを確認しましょう。
今回審査に提出したいバージョンが1.0と前回提出したバージョンより低い数値にになっています。
(()な
Godot用 iOS版 Firebase Cloud Messagingのプラグインを作った
## 概要
以前、似た内容で[Godot用iOS版 Firebase Analyticsのプラグイン](https://qiita.com/yokochi@github/items/7df54cbf331408d1255d)を作りました
今回はプッシュ通知を送りたかったのでFirebaseのCloud Messagingのほうのプラグインになります。作成したプラグインはこちらです
https://github.com/funseek/godot-ios-firebase-messageプラグインの作成方法は上記のプラグインと流れはまったく同じです。
## PlayFabでもプッシュ通知を送りたい
現在作成しているゲームではバックエンドに[PlayFab](https://azure.microsoft.com/ja-jp/services/playfab/)を利用しています。
全員にプッシュ通知をする場合はFCM、何かのトリガーで個別にプッシュ通知を送りたい場合はPlayFab側で送信という想定です。ですので、PlayFab側にもプッシュ通知で必要なトークンを登録してあげ
ID を持つエンティティにはIdentifiableを積極的に採用
## before
“`
struct User: Decodable {
let id: Int
}struct UserDataSource {
// 引数はIntであればなんでも受け入れるように見えてしまう。
func loadUser(for id: Int) -> User {
// 本来はDBなどから取得したものを返すなど
}
}
let user = UserDataSource().loadUser(for: 1)
“`## after
“`
struct User: Decodable , Identifiable {
let id: Int
}struct UserDataSource {
func loadUser(for id: User.ID) -> User {
// DBなどから取得したものを返すなど
}
}
【Flutter】XcodeでCould not inspect the application package.というエラーと2日戦った話
掲題のエラーと戦い続け、とても単純な原因で休日を2日潰しました。
私及び読者が同じ轍を踏まないように戒めとして残しておきます。
※エラー原因が特殊だった可能性もあるので、あくまでも一例としてご理解ください。## 結論 (原因)
**pubspec.yml**のassetファイルのパス指定ミスが原因。
例
before: **lib/asset/aaa/image**
after : **asset/aaa/image**## 事象概要
– 半年ぶりに自分のアプリをアップデートしようと思い、各種プラグイン/Flutter/Gradle/Pod諸々全て最新に更新
– XcodeにてiOSの実機ビルドは成功するがインストール時に以下発生“`
DetailsUnable to install “Runner”
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402653103
User Info: {
DVTErrorCreationDateKey = “2022-05-05 04:09:24 +0000
SwiftUIでAPI(クロージャとasync/await)を利用するViewModelクラスをテストする
## アプリ
SwiftUIにて、任意のユーザー名のGitHubリポジトリを取得し、スターの数が50以上のものをリスト表示します## SwiftUIのターゲット構成
GitHubリポジトリを取得するAPIメソッドをクロージャとasync/awaitの2つ用意しました
また、APIを利用するViewModelクラス(GitHubRepositoryManager)をXCTestによる単体テストします| クラス | 説明 |
|:-|:-|
| GitHubRepository | GitHubリポジトリのEntityクラス |
| GithubAPIClient | APIクライアント |
| GitHubRepositoryManager | リポジトリ一覧を取得するViewModelクラス |
| GitHubRepositoriesView | リポジトリ一覧を表示するViewクラス |## GitHubリポジトリのEntityクラス
“`swift:GitHubRepository.swift
struct GitHubRepository: Co
第3回iPhoneアプリ開発入門
# はじめに
今回は、カウンターアプリを装飾していきます。まず、前回のプロジェクトを開いてください。# Modifier
まず、ボタンを装飾します。次のように書き換えます。![スクリーンショット 2022-05-05 12.30.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/ccdff0db-36c1-c1fb-f0f2-3f3af50a7e8c.png)
Buttonに「.buttonStyle(.borderedProminent)」とつけることで、Buttonの見た目を整えることができました。このような、Viewの見た目を整えるものをModifierといいます。ちなみに、Textについている「.padding()」は余白をつけるModifierです。
# 背景色を変える
次に、背景色を変更します。
![スクリーンショット 2022-05-05 12.47.54.png](https://qiita-image-store.s3.ap-northeast-1.ama
第2回iPhoneアプリ開発入門
# はじめに
今回は、前回作ったカウンターアプリを改良しながらプログラミングについて学びます。# 前回作ったプロジェクトを開く
まず、前回作ったプロジェクトを開きます。Xcodeを起動すると表示されるこの画面の右側から、最近使ったプロジェクトを開けます。この画面が表示されない場合は、Xcodeを選択した状態で、「コマンド+シフト+1」キーを押します。
![スクリーンショット 2022-05-03 19.13.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/31d2e475-0bba-7285-4f1a-320267dfde2a.png)# if文
前回は、ボタンを押すと押した回数だけ数字が増えました。では、今度は数字に上限を設けましょう。ソースコードの17行目あたりを下のように書き換えます。
![スクリーンショット 2022-05-03 19.57.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
第1回iPhoneアプリ開発入門
# はじめに
この記事では簡単なカウンターアプリを作成して、プログラミング初心者向けにiPhoneアプリの作り方を解説します。
![スクリーンショット 2022-05-01 20.13.57.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/17c8ef26-816a-cf94-9014-2579f6b0c038.jpeg)# 必要なもの
– Mac# Xcodeのダウンロード
まず、MacにXcodeというアプリをダウンロードします。このアプリを使ってアプリ開発を進めていきます。https://apps.apple.com/jp/app/xcode/id497799835?mt=12
上記のリンクをクリックして、App Storeでダウンロードしてください。これには時間がかかります。
![スクリーンショット 2022-04-22 18.54.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
【Swift】オリジナルのSFSymbolを作成する
# 素材
![スクリーンショット 2022-05-05 0.18.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5a400211-3a69-4471-0893-ffc7179d0f0e.png)
今回はTwitterの公式から提供されている「[Twitter logo](https://about.twitter.com/en/who-we-are/brand-toolkit)」をSFSymbol化していこうと思います。# 手順1
![スクリーンショット 2022-05-05 0.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7d12d4bc-eba0-e8a7-e763-dc20a0af5b55.png)初めに「circle」を選択します。
![スクリーンショット 2022-05-05 0.19.02.png](https://qiita-image-stor