iOS関連のことを調べてみた2021年10月20日

iOS関連のことを調べてみた2021年10月20日

RealityKitのサンプルコード集「RealityKit-Sampler」

RealityKitのサンプル集「RealityKit-Sampler」をオープンソースで公開しました。
RealityKitはAppleの最新のARフレームワークです。

[RealityKit-Sampler](https://github.com/john-rocky/RealityKit-Sampler)
[スクリーンショット 2021-06-22 6 25 04](https://github.com/john-rocky/RealityKit-Sampler)

ソースコードは GitHub に置いてあるので、ご自由にご活用ください。

https://github.com/john-rocky/RealityKit-Sampler

シンプルにRealityKitを操作する公式サンプルがあまりないの

元記事を表示

【iOS15】 Safari拡張をリリースしてみての感想

#はじめに
iOS15からMacと同じようにSafari拡張機能が使えるようになりました。WWDC2021でも取り上げられ、Xcode13にも専用のプロジェクトテンプレートが用意されるなど、結構気合の入っている印象です。とはいっても、まだまだ日本語の情報が少なかったので今回はアプリを作ってみた立場から、開発に役立ちそうなことをまとめていきたいと思います。

#つくったもの

https://apps.apple.com/jp/app/禁欲フィルタ-継続できるアプリ/id1589931500

作ったものはこちらです。性的に過激なサイトや単語をブロックしてくれるアプリになっています。実際の画面は以下の画像のようになっています。この画像では配慮のため英語を対象としていますが、もちろん日本語にも対応しています。

![過激な単語.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/6ad4e2f7-8646-19a9-be7d-ecaf03d8ce03.jpeg)

スマホで画面キャプチャをする際など

元記事を表示

【Swift】入力された郵便番号と都道府県が正しい情報か確認する

iOSアプリなどで住所を入力してもらう際に、郵便番号と都道府県が一致しているか確認する際のコード。

コードはあまり美しくありませんがご了承ください。

CLGeocoderを使って郵便番号から都道府県を出力させ、入力値との相違を確かめるのですが、CLGeocoderから出力される都道府県名はローマ字。

そこでCLGeocoderで出力されるローマ字とユーザーが入力する日本語の都道府県名を一致させるための辞書を作る。

“`swift
let RomeKanjiPrefecture = [“北海道”: “Hokkaido”,”青森県”: “Aomori”,”岩手県”: “Iwate”,”宮城県”: “Miyagi”,
“秋田県”: “Akita”,”山形県”: “Yamagata”,”福島県”: “Fukushima”,”茨城県”: “Ibaraki”,
“栃木県”: “Tochigi”,”群馬県”: “Gunma”,”埼玉県”: “Saitama”,”千葉県”: “Chiba”,
“東京都”: “Tokyo”,”神奈川県”: “Kanagawa”,”新潟県”: “Niigata”

元記事を表示

【Swift】郵便番号が実在するかしないか確認するバリデーション

Swiftで郵便番号が実在するかしないか確認するバリデーション

他のAPIを使う必要がないのでやりやすいです。

“`swift
//郵便番号のバリデーション
CLGeocoder().geocodeAddressString(“0000000”, completionHandler: {(placemarks, error) -> Void in
//存在しない郵便番号
if((error) != nil){
print(“存在しない郵便番号です”)
}
else{
//入力がすべて正しい
print(“成功”)
}
})

“`

CLGeocoderを使ってエラーが出るか出ないかで判別。

入力する郵便番号はハイフン無しで文字列型なので注意が必要。

元記事を表示

シミュレータの動画を撮影したい時のメモ

何度も忘れて調べてしまうのでメモ。

– Simulatorを起動
– `xcrun simctl io booted recordVideo video_test.mov`を実行
– Simulatorを操作
– ctrl + cで終了

元記事を表示

最初のアプリを作る方法

iOSアプリを作ったことがない方が、とりあえず最初のアプリを作る方法です。
画像を表示するシンプルなアプリを作ります。

#1、Macをひらく
iOSアプリを作るには、iMacもしくはMacbookが必要です。
![macbookIMGL4495_TP_V.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/e63b8cd2-0aad-2fd9-5671-c669cf27c8d4.jpeg)

#2、Xcodeをダウンロード
App Storeのアプリを開き、「Xcode」で検索して、Xcodeをダウンロードします。
![スクリーンショット 2021-10-19 1.58.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/01b0767a-7f5d-0805-de88-34546f344e69.png)

![スクリーンショット 2021-10-19 1.57.22.png](https://q

元記事を表示

React Native + Expoで(iOS,Android)開発環境を構築する

弊社のサービス[Hapitas](https://apps.apple.com/jp/app/%E3%83%8F%E3%83%94%E3%82%BF%E3%82%B9-hapitas-w%E3%81%A7%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%8C%E8%B2%AF%E3%81%BE%E3%82%8B/id1475444626)のアプリ版はReact Nativeを用いて開発されています。インターンとして開発に携わっているのですがで正直環境がどのように動いているのか全く理解していなかったので、勉強としてまずは開発環境を構築したので備忘録としてまとめます。30分ほどあれば作れます。

# React Nativetとは
React Native(リアクト・ネイテイヴ)は、Facebookが作成したオープンソースのモバイルアプリケーションフレームワークです。開発者がネイティブプラットフォーム機能とともにReactを使用できるようにすることで、Android、iOSアプリケーションを開発するために使用されています。Web開発で用いられるReac

元記事を表示

Xcode 実機にアプリアイコンが反映されない時

## 環境
– MacOS Big Sur 11.6
– Xcode 13.0
– Swift 5.5

### 状況
Simulator, Xcode 内の Scheme ではアイコン画像は表示されているが実機だけ反映されない。
試せることは全部試した。

### 解決
アイコン画像が反映されていない開発アプリを削除せずに、iPhone 再起動。

元記事を表示

Swift Package Managerでライブラリを自作して使うまでの最初の一歩

## 今回作るもの
![スクリーンショット 2021-10-16 11.07.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517666/c3f8e30c-a338-fb60-5fb2-27199c44c19e.jpeg)
今回はSwift Package Manager(以下SPM)の作成にチャレンジしてみましたので、作成方法から使用方法を体験的に学べるようご紹介したいと思います。

そもそもSPMってなに?と言う方はこちらを一読される事をおすすめします!

https://swift.org/package-manager/

https://zenn.dev/jollyjoester/articles/08b42792553169

https://qiita.com/hironytic/items/09a4c16857b409c17d2c

記事見る時間が無い。
と言う方には”SPMは、Swiftコードの配布を管理するためのツールで、手軽に自作したライブラリを公開したり、使用したりできるA

元記事を表示

【Swift】読みやすいコードを書くためのコーディングルール(基本編)

## 概要
– 弊社のiOSチームではコーディング規則がある程度細かく定められている
– コードの可読性を上げ、コーディング品質を属人化させない目的
– 転職当時「どの順序で宣言するのがいいのかわからない…!」のような悩みが大きかったので、参考としてまとめます

## プロパティ名
– プロパティは Lower Camel Case (最初は小文字、語頭が大文字)とする
– 宣言時には `:` を変数名に続けて入力し、空白1文字ののち型を宣言する

“`swift
var playerId: Int
“`

– アルファベットの省略語は大文字を用いる

“`swift
var webURL: URL?
“`

– ただし、変数名の頭にきた場合には小文字とする

“`swift
var urlString: String?
“`

– **アクセスレベルによって `_` をつけるといったことは行わない**

“`swift
private var someFlag: Bool

var otherFlag: Bool

// NG
private var _s

元記事を表示

Swift URLで、日本語URLに対応する

# 概要

URLが表現された文字列をSwift URLクラスにする場合、

“`swift
let url = URL(string: “https://qiita.com”)
“`

のような書き方をすると思います。
これでURLの処理をしていくことになります。

しかし、日本語が含まれるURL、例えば、
総務省のWikipedia https://ja.wikipedia.org/wiki/総務省
なんかだと、

“`swift
let url = URL(string: “https://ja.wikipedia.org/wiki/総務省”)
print(url) // nil
“`

このように日本語のURLはnilになります。
なので、これを日本語URLに対応するようにします。

## URLComponentsで日本語URL対応する

日本語URL対応のためURLComponentsを使います。

https://developer.apple.com/documentation/foundation/urlcomponents

ドキュメントにも書いてあります

元記事を表示

Core Dataでの書き込み時にnewBackgroundContextに対する命令はperform/performAndWait内でないといけない

# はじめに

Core Dataでの書き込み時に`newBackgroundContext`メソッドで書き込み用コンテキストを利用することがあると思いますが、そのコンテキストに対してperform/performAndWait外から`fetch`や`count`などでリクエストを送ってはいけません。perform/performAndWaitで実行が保護されるキュー内でコンテキストにリクエストを送るべきのようです。

ちなみにこれデバッグオプションでアサート`-com.apple.CoreData.ConcurrencyDebug 1`を有効にするとクラッシュするのもわかります。

Appleのサンプルコードである[Handling Different Data Types in Core Data](https://developer.apple.com/documentation/coredata/handling_different_data_types_in_core_data)を駄目な感じに改変し、挙動を確認してみます。

![スクリーンショット 2021-10-14 18

元記事を表示

Core DataのEntityが持つAttributesの初期値は基本GUIで設定して必要だったらawakeFromInsertで記載する

# はじめに

Core DataのEntityが持つAttributesは初期値をXcodeのGUI(.xcdatamodeld)で設定できます。`NSManagedObject`のメソッド`awakeFromInsert`ではInsert時の値を入れることもできるので同じ値を重複して入れることで紛らわしいと感じるかもしれません。

初期値をどうするかはあらかじめ整理しておくと良いのではないかと思ってこの記事を書いてみました。コメントなりでご意見を
ください。

# 最初に結論

基本はデフォルト値をGUIで設定し、どうしても必要だったら重複する値を`awakeFromInsert`で設定する。

– awakeFromInsertで設定する初期値
– SHOULD
– insert時に計算したい固定値でLight Weight Migrationで追加しない最初からあるAttributes
– 例
– UUID().uuidString
– Date()

# 前提

元記事を表示

M1 MacでiOSアプリをXcodeから走らせる

## M1 MacでiOSアプリをXcodeから走らせる

M1 MacでiPadアプリが動かせるようになって、iOSアプリの新たなプラットフォームとなりました。
基本的にはほとんどiPadと同様の動きのようですが、一部そうではないようです。

#### iPadで問題なく動作するのにM1 Macでは死ぬ

iPadで問題なく動作するのにM1 Macでアプリがクラッシュする事象が発生しました。
私がクラッシュに直面したのは以下のコードです。

“`swift
let appearance = UIToolbarAppearance()
if #available(iOS 15.0, *) {
self.toolbar.scrollEdgeAppearance = appearance // ここで死ぬ
}
“`
どうやらUINavigationControllerのツールバーにsetScrollEdgeAppearance:というセレクタが無いことが原因のようです。
このコードの解決策は

“`swift
let appearance = UIToolbarAppearance

元記事を表示

Swiftの@unknown defaultを理解する

Swift 5で追加されたswitch文で使える`@unknown default`の旨味が最初、全然分からなかったが、実例を通じて使い方と意図を掴んだ気がするので知見として広めたい。

### swiftのswitch文の良さは網羅性を言語レベルで担保できる
swiftのswitch文は全てのcaseを満たすようなコードを書かないとコンパイラーエラーになり、実装漏れを気づかせてくれる優秀な言語機能だと思っています。
なのでなるべくdefault文は使わずに全てのcaseを書いておくようにしていました。

### `@unknown default`の良さがいまいち分からなかった
– ウィジェットのサイズパターン分けで`@unknown default`を使った方が良いとの警告が出てたが、「網羅性担保できなくなるだろうがぁ:triumph:」と思って全部case書いていた
![スクリーンショット 2021-09-28 17.39.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147358/81ac

元記事を表示

【Swift】入力フォームで入力金額から手数料を引いた額を自動算出して表示

Swiftを使って、入力フォームで入力金額から手数料を引いた額を自動算出して表示させる機能を実装。

イメージとしてはメルカリの出品画面のように、売値を入力すると、手数料を引いた売上額が自動で算出&表示される機能。

今回は入力フォームライブラリ「Eureka」を使用。

https://github.com/xmartlabs/Eureka

## Eurekaを導入

Eurekaの導入は以下の記事を参照してください。

https://qiita.com/ShinokiRyosei/items/3090290cb72434852460

https://wagtechblog.com/programing/swift-eureka.html

http://swift.hiros-dot.net/?p=448

導入が終わったらswiftファイルでimportします。

“`swift
import Eureka
“`

## 入力フォームで入力金額から手数料を引いた額を自動算出して表示

次にフォームのコードをviewDidLoad内に入力します。

“`swift

元記事を表示

NURO光で自前ルーターによるVPN構築

備忘録

## まとめ
* NURO光回線で自前ルーターのVPNサーバー機能を利用してVPNネットワークを構築した
* 自前ルーターにVPNサーバー機能がついていればすんなりいく

## NURO光の問題

### NURO光はONUとルーター一体型の機器を強制的に利用させられる
私の場合はHG8045Qだった。
これに自前のASUSのRT-AX92UをつないでDMZ設定し、パケットを横流しにすることで自前ルーターを機能させる。
RT-AX92UにはVPNサーバ機能が備わっているため、VPNサーバをONにするだけですぐに利用が可能。
今回は外出時にiPhoneから接続することを想定しているためIPSecVPNをONにした。

### NURO光の個人向け回線は固定IPサービスがないため、DNSの設定をしたほうが良い
今回はとりあえず別で使っている個人ドメインのサブドメインとしてRoute53にDNSレコードを追加した。
自動更新するところまでやりたいが一旦置いておく。

RT-AX92UにはDDNSサービスを利用する機能が搭載されているが、HG8045Qを挟んだ構成だとうまくいかなかっ

元記事を表示

写真をLEGOアートみたいにしちゃうライブラリを作ってみた

私はLEGOが好きです。最近は大人向けのセットも発売されており、LEGOブームの波が来ている気がします。そんな大人向けのシリーズの一つに**LEGOアート**というものがあります。要はドット絵なんですが、LEGO製だとインテリアとして成り立つものになっています。

さて、Swift愛好家のみなさまはSwiftUIやSwift Package Managerを既に使い倒していると思いますが、私はあまり使いこなせていません。業務でガッツリ使っていないというのが理由の一つですが、シンプルにモチベーションの上がる題材がなく、勉強が億劫になっていました。しかし、先日ふと「写真をレゴアートみたいにしたい」と天啓を得たのでライブラリを作ることにし、ついでにSwiftUIとSwift Package Managerの勉強もすることにしました。

## 成果物

レゴブロックの色をSwiftで扱うためのライブラリ:[LegoColors](https://github.com/Kyome22/LegoColors)と画像をレゴアートに変換するライブラリ:[LegoArtFilter](https://g

元記事を表示

3日でできるSwift爆速学習法

#0から学ぶSwift
iOSプリで利用されるSwiftを0から学習をし始めて、3日で基本的なことを理解できるようになりました。
学習に使用したサイトをまとめたので、これからSwiftを習得したいと思う方はぜひ利用してみて下さい。
他の言語に比べると学習コストは低いし、独学でもできる難易度なのでオススメです。

#STEP1 アプリ作成

最初にしたのは、アプリの作成です。
こちらの記事を参考にTodoアプリを作りました。

https://qiita.com/pe-ta/items/8f474358d1dd789557f3

<ポイント>
Xcodeでプロジェクトを新しく立ち上げるのですが、
SwiftUIを使うかStoryboardを使うか選択する必要があります。
初心者はStoryboardから始める方が簡単みたいなので、そちらから進めましょう。

#STEP2 基本的なXcodeとSwiftの使い方
作ってみて、なんとなくXcodeやSwiftがどんな感じかを掴んだら
こちらでしっかりした知識を学びましょう。
ここまでやれば、ある程度Swiftの基本的な部分は理解できるようにな

元記事を表示

【iOS】Qiita デイリー LGTM 数ランキング【自動更新】

# 他のタグ

[`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268b

元記事を表示

OTHERカテゴリの最新記事