- 1. API通信とAPI通信による非同期処理時のクロージャの利用してそれらの挙動を確認する
- 2. Xcode Cloud を iOS アプリ(個人開発)に導入した際の所感
- 3. 【Swift】SwiftLintをSwiftPMで管理する
- 4. Android/iOSアプリの提出に必要なアプリ以外の準備
- 5. iOS ロック画面のWidget できること、できないこと
- 6. 【Swift】SwiftFormatをSwiftPMで管理する
- 7. XcodeのCloud-managed certificatesをCLIから使って証明書管理から開放されよう
- 8. 初めてのiOSアプリ開発を振り返る
- 9. iOSで簡単に容量不足をエミュレートする方法
- 10. 【SwiftUI】Macアプリの環境設定を作成する
- 11. $0 ← これについてものすごく簡単にアウトプットする
- 12. 開発用のiOS端末の追加、証明書の更新方法
- 13. iOSのVision Frameworkで画像から文字列を取得、文字列の位置を画像上に矩形表示する
- 14. [Swift] 出力はOptionalになってるのにCannot force unwrap value of non-optional type ” で怒られる時
- 15. 【SwiftUI】NavigationBarの背景色を半透明にする方法
- 16. 【SwiftUI】Listに検索機能を付ける
- 17. Nebo 4 – アイデアを形に
- 18. 【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)
- 19. SwiftUIでカウントダウンする
- 20. 【Xcode】XcodeでGitHub Copilotを使ってみた
API通信とAPI通信による非同期処理時のクロージャの利用してそれらの挙動を確認する
## はじめに
①URLSessionのdataTask(with: complitionHandler)を使ったAPI通信と②API通信による非同期処理時のクロージャの利用してそれらの挙動を確認する。また、使用するAPIは郵便番号検索APIである。7桁の郵便番号を入力すると住所の情報が返ってくる。## 対象者
この記事は下記のような人を対象にしている。– プログラミング初学者
## 詳細
– API通信とAPI通信による非同期処理時のクロージャの利用に関してそれらの挙動を確認する
– 要は、API通信をしてそれをクロージャで受け取った非同期処理をする
– 今回、API通信を行うにあたってURLSessionのdataTask(with: complitionHandler)を使う
“`swift:Swift
//print関数で[番号]を出力している箇所があるが、
//非同期処理で行なっているので必ずしも順番で処理が走るわけではないことに注意// URLSession.shared.dataTaskを使ってサーバーと通信するメソッド
// closure: @esca
Xcode Cloud を iOS アプリ(個人開発)に導入した際の所感
## 記事の内容
### この記事で書くこと
* 個人開発の iOS アプリに **Xcode Cloud** を導入した際の所感### この記事で書かないこと
* Xcode Cloud とは
* Xcode Cloud の設定方法※ Xcode Cloud の設定方法は、下記の動画等を参考にした。
## 前提
下記 リポジトリの `main` ブランチに変更があれば、Xcode Cloud を利用して自動的にビルドし、**App Store Connect** に UP するように設定している。https://github.com/tanakadaichi1989/Thermometer-Hygrometer
## 所感
### 便利なところ
* 手動で ビルド番号の設定 > クリーン > ビルド > アーカイブ > App Store Connect に UP する手間がなくなるのは凄く便利### 注意すること
* Swift Package Manager を利用してラ
【Swift】SwiftLintをSwiftPMで管理する
# はじめに
昨日はSwiftFormatをSwiftPMで管理するについて書きました。https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb
今日はSwiftLintをSwiftPMで管理できるようにしてみたいと思います。
「swiftpm-sample」というプロジェクトを作成しました。
ここにSwiftLintをいれてみます。
![スクリーンショット 2023-01-13 21.33.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a3503e16-383e-0bd1-d42b-d009bca7058d.png)# やりかた
### 各種ファイルを設定
swiftpm-sampleに移動します。
“`:ターミナル
cd /Users/miyamototaishin/Desktop/swiftpm-sample
“`
![スクリーンショット 2023-01-13 21.40.17.png](https://qii
Android/iOSアプリの提出に必要なアプリ以外の準備
* Android/iOS 共通
プライバシーポリシーのサイト
以下で簡単に作成できるので、つくってGoogle Sitesかなにかで公開し、提出時にリンク先に設定する
https://app-privacy-policy-generator.firebaseapp.com/* Android固有 (PlayStoreへの提出)
(1)スクリーンショット
JPEG、あるいは24 ビットのPNGであること
最小サイズ:320px ~ 最大サイズ:3840px
スクリーンショットの最大サイズは、最小サイズの2倍以上にできないという制約がある
(2)フィーチャーグラフィック
JPEG、またはアルファチャンネルなしの24ビットPNG形式
サイズは1024×500px
最大ファイルサイズ 1024 KB* iOS固有 (App Connectへの提出)
(1)スクリーンショット … シミュレータを以下それぞれ起動してスクショ
iPhone 6.5インチ … iPhone 13 Pro Max ※必須
iPhone 5.5インチ … iPhone 8 Plus ※必須
iPad
iOS ロック画面のWidget できること、できないこと
iOS16からロック画面にWidgetを表示できるようになりました。
この記事ではロック画面のWidgetでできること、できないことをまとめています。
以下のバージョンに対応しています。| | バージョン |
|:———–|:————:|
|Xcode|14.2|
|iOS|16.2|
|macOS|Ventura 13.1|# ロック画面のWidgetの種類
WidgetFamilyというenumに新しく追加された、
– `accessoryCircular`
– `accessoryRectangular`
– `accessoryInline`のいずれかのcaseを指定することでロック画面にWidgetを表示できます。
## 手順
1. ホーム画面のWidgetを作成する手順と同様にWidget ExtensionからWidgetを作成
1. 下記のようにWidgetとEntryViewを修正
1. ビルドして表示“`swift:LockedScreenWidget.swift
struct LockedScreenWidgetE
【Swift】SwiftFormatをSwiftPMで管理する
# はじめに
私は今までMintでSwiftFormatをインストールしていました。https://qiita.com/SNQ-2001/items/4ad7600e1bc9d90c839a
SwiftFormatのREADMEを見てたらSwiftPMでも管理できるっぽいのでやってみました。
https://github.com/nicklockwood/SwiftFormat#xcode-build-phase
「spm-swiftformat」というプロジェクトを作成しました。
ここにSwiftFormatをいれてみます。
![スクリーンショット 2023-01-12 20.30.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7853a630-94ab-b9dd-cb26-fccde6e26feb.png)# やりかた
### 各種ファイルを設定
spm-swiftformatに移動します。
“`:ターミナル
cd /Users/miyamototaishin/
XcodeのCloud-managed certificatesをCLIから使って証明書管理から開放されよう
こんにちは、あらさんです。ポケモンSV最高です。
今回は面倒なXcodeの配布のための証明書をXcode13から提供されているCloud-managed certificatesを利用して自分たちの管理から脱却する内容です。## 現在の痛み
色々な証明書のFastlane Matchを利用したGithubでのホスティングによる手動管理、プロジェクトにあふれるsigningStyleのManualをなんとかしてAutomaticに書き換えたい。
Fastlane Matchを利用することでCIでの証明書管理は飛躍的に快適になった、しかし管理するコストは変わらず更新作業などは発生する。Bitkeyでは様々なプロダクトを扱うためできる限り管理作業を自動化することにメリットがある。この現状を打破したい、というモチベーションが原点となる。
## Fastlane Matchを利用して管理している現状
現状はgitにcertificate周りの使うものをまとめてFastlane matchを利用して管理している。
これについての詳しい内容はこちら。https://help.appl
初めてのiOSアプリ開発を振り返る
# はじめに
本格的にSwiftの学習を開始してから、オリジナルアプリ開発を行い、App Storeに公開するところまで実施することができました。
一区切りついたため、今回やってきたことの振り返りを行いました。# 背景
現在の私の業務は、通信ネットワークやサービスサーバーの保守・運用です。
所謂ネットワークエンジニアであり、プログラミングを行う業務はやっていないためアプリ開発自体は未経験です。
前々から今の業務とは、別の方向で新しいスキルを身につけたいと考えておりました。
アプリ開発は興味のあった分野であり、iPhoneやiPadは普段から使用していることから、iOSアプリ開発に挑戦してみようと思ったのがきっかけです。# 目標
アプリ開発に挑戦するに当たって下記の目標を立てました。
・オリジナルアプリを開発して公開する
・副業案件を獲得するどうせやるなら、やったことを結果という形にしたいと思ったからです。
# アプリ紹介
SSHを使用してリモートアクセスを行うシンプルなSSHクライアントアプリです。
[App Store](https://apps.apple.
iOSで簡単に容量不足をエミュレートする方法
# 概要
iOS開発をしている際に容量不足になった場合の動作を確認したい場合の方法です。
エミュレーターで少ない容量でマウントするだけです。# やり方
## エミュレーターを用意する
XCodeを起動し、メニューの「Window」 -> 「Devices And Simulators」 を選択
左下の「+」を選択して、エミュレーターを作ります。`Identifier` はあとでパスで使います。
## Macにイメージを作り、マウントする
以下のように `/tmp/iosDummy.dmg` にイメージを作ります。
`-size`で、iOSで利用する容量を指定します。この例では1GBの容量を作ってます。OSとアプリが入る大きさの容量は指定しておきましょう。“`zsh
$ hdiutil create -size
【SwiftUI】Macアプリの環境設定を作成する
# はじめに
`MenuBarExtra`でメニューバーアプリを開発していて環境設定を作成しようと思ったところで詰まったので記事にしておきます。
全てはKyomeさんのおかげです。https://github.com/feedback-assistant/reports/issues/327
こんな感じでみんな困ってるっぽいです。
# サンプルアプリ
![画面収録_2023-01-11_21_23_20_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/91776154-b677-f9b0-50c0-d92067f8c336.gif)# 実装
“`swift:AppDelegate
import AppKitclass AppDelegate: NSObject, NSApplicationDelegate, ObservableObject {
private var settingsWindow: NSWindow? {
$0 ← これについてものすごく簡単にアウトプットする
## はじめに
$0についてものすごく簡単にまとめるため、さらに探求したい方は各々ググり散らかしてください。## 対象者
この記事は下記のような人を対象にしている。– プログラミング初学者
– 引数を引数の意味が分かる・聞いたことがある人## 詳細
– $0とは引数を表現するものである。
– $以降の数字によって引数を指定することができる
- $数字をqiitaで連ねると文字が勝手に変換されてしまうためソースコード上で例をあげます
– $0を使った場合、クロージャーなどの引数は省略可能である“`swift:Swift
//元となる省略表現なしのクロージャー定義、
let sampleClosure: (String) -> Void = { sampleParameter in
//わざわざ新たな変数に引数を格納するのはおかしいが、今回は見逃してください…
let testSample = sampleParameter
print(testSample)
}
//出力
sampleClosure(“samp
開発用のiOS端末の追加、証明書の更新方法
## はじめに
以前、開発用のiOS端末を登録する際、
主に証明書の更新周りでつまずくことがあったため備忘録的なものとしてそのときの対応のまとめ。## 環境
* Xcode14
* 追加対象のProfilesは作成済みの状態## 端末の追加方法
Appleのデベロッパーサイト内、[Certificates, Identifiers & Profilesのページ](https://developer.apple.com/account/resources/certificates/list)へ移動。
左側のメニューより「Devices」を選択し、開いた画面の上部にある「Devices」の横の「+」から端末を追加する。
![ss01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2938978/1e15e02a-a492-c3e6-4609-b327d3bd9936.png)
「Register a Device」の各項目を埋める。
* Platform
* プルダウンで選択式なので追加する
iOSのVision Frameworkで画像から文字列を取得、文字列の位置を画像上に矩形表示する
# 環境
– iOS16
– Xcode14.1
– シミュレーターにて動作を確認# やりたいこと
– UIImageViewの画像の文字認識を行う
– 取得した文字列を下部のUILabelに表示
– UIImageView上に赤い矩形で認識した文字列の位置を表示# Vision Framework
iOSで画像認識を行うことができるフレームワーク。今回は文字列の認識機能を利用した。
下記のチュートリアルの通りに進めることで文字列認識が行えた。[https://developer.apple.com/documentation/vision/recognizing_text_in_images](https://developer.apple.com/documentation/vision/recognizi
[Swift] 出力はOptionalになってるのにCannot force unwrap value of non-optional type ” で怒られる時
# 出力させるとOptionalになってるのに!を入れるとエラーが起こる。
SwiftのOptionalには以下の素晴らしい記事を読もう
https://qiita.com/maiki055/items/b24378a3707bd35a31a8つまりは、nilを扱う場合に使うやつ。でもそのままStringとかに入れるとOptionalも出てきてしまう。
基本的には、unwrapするときは対象の変数の後ろに”!”を入れてやればいいが以下の場合ではそうはいかなかった。
**該当箇所**
“`swift
label2.text = String(describing: result?.data[indexPath.row])
“`**正解の方法**
“`swift
label2.text = String(describing: (result?.data[indexPath.row])!)
“`“!”をつけるだけでなく()で囲ってやる必要があった。
【SwiftUI】NavigationBarの背景色を半透明にする方法
# はじめに
iOS標準メモアプリのNavigationBarって実は半透明なんですよ
今回はそれを再現します。# 環境
– Xcode14.2
– iOS16.2# UIBarAppearanceを使う方法
“`swift
import SwiftUIstruct ContentView: View {
@State private var text = “”init() {
UINavigationBar.appearance().standardAppearance = {
let appearance = UINavigationBarAppearance() // 1
appearance.configureWithTransparentBackground() // 2
appearance.backgroundColor = .systemBackground.withAlphaComponent(0.9) // 3
r
【SwiftUI】Listに検索機能を付ける
# はじめに
Listの検索機能作成します。# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-01-10 at 19.50.34.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3c780f3e-e53f-c2c9-809c-93d89c99a11d.gif)# データ
Appleのサービスリストです。
同じような名前でわかりにくいです。
“`swift
let appleServices = [
“App Store”,
“Apple Account Card”,
“Apple Arcade”,
“Apple Books”,
“Apple Business Essentials”,
“Apple Business Manager”,
“Apple Card”,
“Apple Cash”,
“Apple Fitness+”,
“
Nebo 4 – アイデアを形に
3ヶ月前、メモをパーソナライズする新たな仕様とともに、高性能なカラー機能を備えたダークモードを実装した際、ページの名称もそれぞれ変更されました。通常のページは ドキュメントページへ、フリーフォームページはメモへと変更されました。そしてこれが予期せぬことに、進行中だった新しい技術の開発における手がかりになりました。
## Nebo Noteの進化
![nebo4-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2784576/46dea2b8-1c73-410d-3e62-efddf5b45973.jpeg)
最初に拡張可能で自由自在なキャンバスであるNebo Noteを公開したのは、どこまでも自由なメモ体験を提供し、ユーザーの創造性を妨げる全てのものを無くすことが目的でした。しかし、手書き認識機能がバックグラウンドで作動している間は、Nebo ドキュメントの多くのユーザーの方にご愛用いただいているインタラクティブなインク機能を使用することができないという難点がありました。当サービスの開発者がより大きな
【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)
## 概要
2023年1月1日に、はじめて個人アプリをリリースしたので
開発からリリースまで苦労だらけだったので
同じようなところに苦戦するような人がいたり、参考になれば嬉しいです。
今回は全体感の話なので細かいところは別記事で追記していこうと思います。## なぜ個人アプリを作ろうと思ったのか
コロナで1週間何もせず寝込んでいた時に
よく使っていたアプリ自体の更新が止まっていて不便な思いをしたので
自分で新しいアプリを作ろうと思ったのがキッカケ## どういうアプリを作りたかったのか
FF14のまとめ記事と動画などを検索せずに見れるアプリ
最新情報が探しづらいし情報が古かったりするから最新情報だけ欲しいアプリを目指す。
![アプリレビュー説明資料.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215997/7cf71fe5-538b-1523-4a20-bf5b55a9ea05.png)## バックエンド AWS開発編 (試しながら1〜2週間)
バックエンドは
SwiftUIでカウントダウンする
# はじめに
SwiftUIでカウントダウンするTextを実装してみました。# 環境
|Name|Version|
|:–:|:–:|
|Xcode|14.1|
|Minimum Deployments|14.0|# ドキュメント
Textのイニシャライザで、特定のスタイルを使用してローカライズされた日付と時刻を表示するインスタンスを作成することができます。
https://developer.apple.com/documentation/swiftui/text/init(_:style:)
# 実装方針
以下の実装をします。
1. カウントダウンの**基準となる時刻**を定義します。
1. **基準となる時刻**に引数で指定する`day`, `hour`, `minute`, `second`を加算して、カウントダウンが終了するDateを計算します。
1. カウントダウンするテキストを実装します。
1. カウントダウンが終了したことを検知して、アラートを表示します。## 基準となる時刻を定義する
基準は「現在時刻」としたいですが、`Date()`を基準とす
【Xcode】XcodeでGitHub Copilotを使ってみた
# はじめに
https://qiita.com/SNQ-2001/items/796dc5e794ac3f57a945おとといの記事でGitHub Copilotを使用できるようにしました。
私はiOS開発者なので、できればVSCodeではなくXcodeでGitHub Copilotで使用したいです。
ちょっと調べてみたらXcodeでも使用できるっぽいので試してみました。
(一応使えてますが、VSCodeほど快適ではないです)https://github.com/intitni/CopilotForXcode
# やりかた
### CopliotforXcodeのインストール
「Releases」を選択します。
![スクリーンショット 2023-01-09 19.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/27ee2818-2464-c88f-6042-bf50d0ff6e59.png)「Copliot.for.Xcode.app.zip」を選択してダウンロ