iOS関連のことを調べてみた2023年01月18日

iOS関連のことを調べてみた2023年01月18日

【Xcode】ファイル作成時に自動生成されるコメントの本名を変更したい

# はじめに
タイトルだけだとわからないかもしれないので画像載せておきます。
これです。
![スクリーンショット 2023-01-17 14.51.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/884f8acd-8387-e7c3-a653-ce89ece207b9.png)

この自動生成されるコメントを変更したのでやり方を記事にしておきます。

# やりかた
Xcode内のUserDataフォルダに移動します。
“`:ターミナル
cd ~/Library/Developer/Xcode/UserData
“`
![スクリーンショット 2023-01-17 14.56.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/149f946b-57c9-c2ec-b03b-ebda9deea5b2.png)

`IDETemplateMacros.plist`を作成します。
“`:

元記事を表示

【iOS】ワンタップで天鳳部屋建て&共有【秒で麻雀】

こんにちは、TSMENです。

# やってみて
いくつかステップがあったものが簡略化できたのでかなり便利になりました。
友人と「ネット麻雀する?」って話題に上がった瞬間、裏でURL発行しに行けるので
やると決まったはいいものの、天鳳なのかMJなのか、雀魂なのか、、、
誰が部屋建てる、、?俺、、?お前、、?
のようなグダグダを解消できました

# 完成図

# 動作結果(LINEに共有した場合)

:::note warn
2023年1月11日時点で動いています。
あまりないとは思いますが、今後天鳳のサイト側の変更などで動かなくなる場合があります。悪しからず。
:::

元記事を表示

【Swift】SwiftGenをSwiftPMで管理する

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

https://qiita.com/SNQ-2001/items/e202893e37898bb0c721

https://qiita.com/SNQ-2001/items/b2ea9cd49238db352f5c

これまでSwiftFormat、SwiftLint、LicensePlistをSwiftPMで管理する方法を記事にしてきました。
今回はSwiftGenをSwiftPMで管理してみます。

「swiftpm-swiftgen」というプロジェクトを作成しました。

![スクリーンショット 2023-01-16 16.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/bf98e948-7874-37af-9698-ce79b66933eb.png)

# やりかた
swiftpm-swiftgenに移動します。
“`:ターミナル
cd /Use

元記事を表示

Swift UI (主にアノテーション・データバインディング関連) ひとまとめ

### AnyView

– AnyView とは
– https://developer.apple.com/documentation/swiftui/anyview
– https://www.swiftbysundell.com/articles/avoiding-anyview-in-swiftui/
– https://qiita.com/noppefoxwolf/items/22a243b28d39b97c8ccb
– https://www.paveway.info/entry/2022/03/02/swiftui_anyview
– どんなViewが来ても大丈夫なように型消去したViewがAnyViewである。ただパフォーマンスは悪くなるので、可能なら@ViewBuilderを利用するなどして使用を避けたほうが良いかもしれない。

### @ViewBuilder

– 以下、引用

> 複数画面で共通のナビゲーションバーやボタンを使う場合、毎回同じViewやmodifierを書くのは

元記事を表示

【Swift】LicensePlistをSwiftPMで管理する

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

https://qiita.com/SNQ-2001/items/e202893e37898bb0c721

SwiftFormatとSwiftLintに続いてLicensePlistをSwiftPMで管理してみました。

「swiftpm-licenseplist」というプロジェクトを作成しました。
![スクリーンショット 2023-01-15 20.34.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5f327ba1-c05e-d547-b48a-b0282696c699.png)

# やりかた
### 各種ファイルを設定
swiftpm-licenseplistに移動します。
“`:ターミナル
cd /Users/miyamototaishin/Desktop/swiftpm-licenseplist
“`
![スクリーンショット 2023-01-

元記事を表示

App Store / Google Play の フィーチャー枠獲得について

# はじめに
App Store / Google Playのアプリストアには、特定のアプリをピックアップして宣伝するフィーチャー枠というものがあります。フィーチャーされればアプリの知名度は飛躍的に向上し、ダウンロード数の増加にも直結します。
広告などによる地道な宣伝も、もちろん重要ですが、アプリのリリース後やアプリを盛り上げるイベントの際はフィーチャー枠を利用して集中的にアピールすることも大切です。

この記事では、アプリの注目度を高めるフィーチャーという制度の基本と、フィーチャーされるためのポイントであるAndroid バックキーについてまとめました。

### 参考になる本
– [スタートアップ・個人で作れる スマホ向けUnity ソーシャルゲーム開発ガイド](https://amzn.to/3QKy2rc)

## App Store / Google Play の フィーチャー枠とは
App Store / Google Playなどのアプリストアには、特定のアプリをピックアップして宣伝するフィーチャー枠というものがあります。フィーチャーされればアプリの知名度は飛躍的に向上し

元記事を表示

【Xcode】SwiftFormatのPlugin使ってみた

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

前回はSwiftPMでビルドした時に実行されるようにしました。
別の方法で導入することでボタンで実行できるみたいなのでやってみました。

https://github.com/nicklockwood/SwiftFormat#trigger-plugin-from-xcode

# やりかた
### SwiftPMで導入
以下のURLをコピーします。
“`
https://github.com/nicklockwood/SwiftFormat
“`
① 「File」を選択します
② 「Add Packages…」を選択します
![スクリーンショット 2023-01-14 21.38.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7c8e5920-da64-79fb-a141-7561df70d520.png)

③ テキストフィールドに先ほどコピーした

元記事を表示

iOS16.2、iPadOS16.2でスマートホームの新標準「Matter」を試してみた

# はじめに

iOS16.1でスマートホームの新標準「Matter」に対応しました。

https://developer.apple.com/apple-home/matter/

# M5StackをMatterデバイスとして動かす

Matterのサンプルコードのビルド環境の構築は前提となる条件(ある程度のリソーススペックが求められる)や準備作業が必要なので、M5StackでMatterのサンプルを動かすだけなら、ESP Web Toolsを使用してブラウザ(ChromeのWeb Serial)経由でインストールするのが楽です。

https://qiita.com/kitazaki/items/548abb35431f215df919

# 構成プロファイルは不要

説明を読むと構成プロファイル(EnableMatter.mobileconfig)をインストールする手順になっていますが、インストールは不要でした。

https://developer.apple.com/forums/thread/708637

https://github.com/project-chip

元記事を表示

[iOS][Android] NFCタグを使ってスマホアプリを起動する

# やりたいこと
NFCタグにスマホを近づけてアプリを起動する
対象は Android/iOS 両方。
実現するには、NFCタグへの情報書き込みとアプリの実装などが必要となります。

# 1. NFCタグへの書き込み
NFCタグへの書き込みは [NFC Tools](https://play.google.com/store/apps/details?id=com.wakdev.wdnfc&hl=ja) を利用しました。
登録したNDEFレコードは以下の2つです。
 1. Data (MIME)
 2. URL/URI

## 1.1 Data(MIME)レコード
Androidアプリを起動するための情報です。
| 項目 | 内容 |
|:-:|:-:|
| content-type | application/{ユニークなURI} |
| データ | 任意のテキスト |

ここではcontent-type は以下とします。
`application/vnd.dev.sunskysoft.myapp`
詳細は以下を参照。
https://developer.android.com/gu

元記事を表示

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 AppKit

class 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

元記事を表示

OTHERカテゴリの最新記事