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

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

SwiftでL-System

## はじめに

[こちら](https://qiita.com/yukiny/items/7b5692b503fc7db921d4)の記事で紹介しました[SwiftyCreatives](https://github.com/yukiny0811/swifty-creatives)というSwift製のクリエイティブコーディングフレームワークを用いてL-Systemを実装していきます。

## L-Systemとは
L-Systemはフラクタル図形を描画するためのアルゴリズムです。プログラムの再帰性を用いて簡単にフラクタルが描画できるようになっています。

## 実装結果
![QuickTime Player – 画面収録 2023-02-10 1.53.14.mov 2023年-02月-10日 2.55.14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567236/99b4c224-2631-e532-d6bd-dc60749c7f86.gif)

## 実装
コードはとてもシンプルです。
実装方

元記事を表示

FlutterでFirebaseStorageに保存している音声ファイルを再生する

## この記事を書こうと思ったきっかけ
Flutterの自己学習でポケモン図鑑を作成してみようと思った際、
鳴き声を再生させる機能が欲しかったため自分なりに実装してみました!

## 前提条件
たくさんの方がFlutterでFirebaseの連携方法をわかりやすく書いてくださっているので
本記事では省略させて頂きます。
別途FirebaseStorageにどのようなフォルダ構造で自分が保存しているかは記載致します。
また音声ファイルを再生するためjust_audioもインポートします。
バージョンは下記になります。

“`
firebase_core: ^2.5.0
cloud_firestore: ^4.3.2
firebase_storage: ^11.0.11
just_audio: ^0.9.31
“`
## 1.FirebaseStorageに音声ファイルを保存
FirebaseのプロジェクトからStorageを選択しプロジェクトを開始します。
その後DLというフォルダを作成しDLフォルダの中に
再生したい音声データをアップロードします。
下記キャプ

元記事を表示

BitriseのmacOSスタックにGoogle Cloud SDKをインストールして使う

普段Bitriseを使ってiOSアプリのCIをしていて、ビルド成果物をGoogle Cloud Storageにアップロードしたりしています。

Google Cloud Storageとやり取りするには`gcloud`や`gsutil`といったコマンド群を含むGoogle Cloud SDKが必要なのですが、残念ながらmacOSスタックにはインストールされていません。

Xcode14.2 macOS Venturaのスタック情報はこちら。
https://github.com/bitrise-io/bitrise.io/blob/master/system_reports/MACOS/M1/osx-xcode-14.2.x-ventura.log

本記事では、macOSスタックにGoogle Cloud SDKをインストール&キャッシュして、次回以降のビルドですぐにコマンドを使えるようにする方法をご紹介します。

# Google Cloud SDKのインストール&キャッシュ
ワークフローにScriptステップを追加し、以下のスクリプトを入れておきます。

“`bash
#!/

元記事を表示

SwiftUIのMap()で地図表示

# Map()で地図を表示する 

![Map.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3127198/01d58db2-e1cc-783a-ea4a-22ec625a1f26.gif)
swiftUIに対応したMapKiyフレームワークを使って地図を表示する方法を解説してみます。MapKitを使って地図を表示するMap()がSwiftUIに追加され、手軽に地図表示ができるようになりました。それではMap()を使ってのやり方を見てみましょう。 

### Map()を使って地図を表示 
“`swift:qiita.rb
import SwiftUI
import MapKit

struct ContentView: View {
// 座標と領域を指定する
@State var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(
latitude: 35.6805

元記事を表示

Flutterとはなんぞや?

###
はじめに

Flutterとはなんぞや?
ということで、なんでしょうか、最近良くネットでFlutterという単語を聞きますがいったいなんのことがわかっていません。
ということで、少し調べてみようということで記事を投稿してみました。

それではいってみよう!

###
自己紹介

経験1年半ほど。
現在開発案件に参画中。
私は、Java Spring 少々。Python経験1年ほど(Selenium)で構成されています。

###
私の今知っている知識

– AndroidやiOSの開発をどちらともできるらしい
– 「Dart」というものが関係しているらしい
– Windowsではビルドできない

全く知りません。ということで、これからグーグル先生を頼りに勉強していこうかと思います。

###
そもそもFlutterとは…?

こういうときは公式を見るのが一番とのことを聞いた気がするので、とりあえず公式を覗いてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

【SwiftUI】macOSアプリで保存機能を作成する

# はじめに
最近、Macアプリを作っているのですが、保存機能を作成しようと思った時にやり方がわからなかったので記録しておきます。

# サンプルアプリ
![画面収録_2023-02-09_23_05_34_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/20d241f6-bc0e-01de-8af9-be52e8e82f44.gif)

# ファイルへのアクセス権を付与
① プロジェクトを選択します
② ターゲットを選択します
③ 「Signing & Capabilities」を選択します
④ 「File Access Type」の「User Selected File」のピッカーを選択します
![スクリーンショット 2023-02-09 23.14.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ab79ed0a-800e-3e88-6a72-755a82

元記事を表示

C言語でGrand Central Dispatch(GCD)を使ってみた

# 本記事について
macOS、iOS、watchOS、tvOSのマルチコアハードウェアにおいて配列でタスクを実行させるための技術、Grand Central Dispatch(GCD)の理解を深めるため、敢えてC言語縛りで使ってみました。
 (嘘です…本当はまだObject-CやSwiftをまだあまり使ったことがないからです…)

# 実行環境
・macOS Ventura 13.0.1
・Apple clang version 14.0.0 (clang-1400.0.29.202) 
・lldb-1400.0.38.17
・MacBook Pro 13インチ M2
 ※Homebrew GCCは使えなかったです…

# サンプルソース
5秒周期でログを10回出力するソースです。
“`
1 #include
2 #include
3 #include
4
5 int main

元記事を表示

Swift CombineをAsyncSequenceとして処理する

# AsyncSequenceについて
Swiftで提供される宣言型 APIとしてCombineが、iOSではiOS 13から提供されるようになりました。
しかしながら、CombineはiOSやmacOSなどに提供されるフレームワークで、Server Side Swiftなどでは使用できませんでした。

AsyncSequenceはSwift Standard Libraryに含まれるAPIで、Combineよりも機能は少ないものの、
– プラットフォームに依存しない
– for awaitを用いて処理が可能

などの特徴があります。

例えばAsyncSequenceに適合するAsyncStreamを作成して、filterをかけて偶数しか出力しないように加工して、for awaitでStateに設定して偶数を表示したりできます。

“`swift
struct CounterView: View {
@State private var count = 0
var body: some View {
Text(count, format: .curr

元記事を表示

[XCode][Swift]XCodeで日本語文字列リテラルを検索する方法

# はじめに
iOSアプリを多言語対応する場合、言語別に`Localizable.strings`を作成して文言を切替可能にする方法が一般的です。
最初から`Localizable.strings`にアプリ上で使う文言を設定していればよいのですが、日本語専用のつもりで直接コード上の文字列リテラルに文言を書き込んで開発を進めていた場合が問題です。
後から多言語対応するにはコード上に散らばった文言を全て見つけ出して`Localizable.strings`に移行する必要があります。
この記事ではXCodeの正規表現検索機能を使って日本語文字列リテラルを検索する方法を紹介します。

# 環境
XCode 14.2

# 方法
以下のサンプルコードで検索にヒットする様子を確認してみましょう。

“`swift
print(NSLocalizedString(“Hello World”, comment: “greetings”)) // 英語なのでヒットしない

print(“ひらがな”) // ヒットする
print(“カタカナ”) // ヒットする
print(“漢字”) // ヒットす

元記事を表示

【Xcode】検索機能をフル活用しよう

# はじめに
最近は忙しくて時間がないのでなるべく作業を効率化したいです。
最高に作業を効率化できるXcode検索コマンドを記事にします。

# 検索方法
### ファイル内検索
`command` + `F`

![スクリーンショット 2023-02-08 20.47.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e7ddb1bb-aaa9-e2bb-608f-a289223dfed4.png)

### プロジェクト内検索
`command` + `shift` + `F`

![スクリーンショット 2023-02-08 20.50.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e7974ef0-79c2-b39b-b2cd-16ee568b2f57.png)

### Open Quickly
`command` + `shift` + `O`

![スクリーンショット

元記事を表示

【Flutter】スプラッシュスクリーンにアニメーションを導入する

## 完成物はこちら
engolf_splash_compress.gif

## Lottieとは

https://lottiefiles.com/

Lottieはオープンソースのアニメーションファイル形式です。
このファイルの特徴は、ファイルサイズの軽量化、高品質、インタラクティブ、実行時に操作が可能な点です。

現在、App Storeのトップ500のアプリケーションは、ユーザーを引き付け、コンバージョンを高めるためにLottieを使用しているそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/e41c091c-b03f-4bf0-9f50-889cb2d502c3.png)

## 構

元記事を表示

AR FoundationのAR Occlusion Managerを使ったときって実機でどこまで動くの?

## 事の始まり
AR FoundationにAR Occlusion Managerってあるなぁ
でもAR CoreとAR Kitでオクルージョンの処理は別ものなのにどうやって共通化しているんだろ?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705249/84616200-b776-3946-38b0-0970b137149c.png)

実機で見たときにどんな動作の違いが出るんだろうか??

検証しました!

## 環境
Unity 2019.4.29f1
AR Foundation 4.1.7

Device:
* Android
* SONY Xperia 1 III (Depth API対応機種)
* Huawei P20 Pro(Depth API非対応機種)
* iOS
* iPhone 13 Pro Max (LiDAR搭載機種)
* iPhone 11 (LiDAR非搭載機種)

## やったこと
ARアプリを作成、AR Occlus

元記事を表示

[iOS]Excluded Architecturesにarm64を指定するとArchiveできなくなる解決法

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。

今回はトラブルシュート記事です。

M1 MacなどのAppleSiliconなmacを使ってiosアプリをemulatorでビルド・起動しているとこんなエラーに遭遇すると思います。

> In /project/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(aligned_new_bca0ac320467a2457b3e306bfed17856.o), building for iOS Simulator, but linking in object file built for iOS, file ‘/project/Pods/FirebaseAnalytics/Framew

元記事を表示

【Xcode】シュミレーターにペーストしたい

# はじめに
iOS開発をしているときに、Macでコピーした内容をシュミレーターにペーストしたい時があると思います。

https://wayohoo.com/article/4088

このようなやり方でできるそうですが、私の環境ではできませんでした。
他にやり方がないか調べていたらstackoverflowにあったので記録しておきます。

最初に言っておきますが、日本語入力はできませんでした笑

# 設定方法
下記のリンクを開きます。

https://www.icloud.com/shortcuts/603da847b5dd48eebe010be1c056639e

「ショートカットを入手」を選択します。
![スクリーンショット 2023-02-07 21.55.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3296f1a2-e310-b664-5ebb-b9116b5ff7d8.png)

「ショートカットを開く」を選択します。
![スクリーンショット 2023-02-07

元記事を表示

【Swift】Lazy Propertiesについて、AIに聞いてみた

## 今回書いたきっかけ
自分のなんとなく使ってるものについて、誰かに聞こうと思ったけど上司がいない!!
ので、AIに教えてもらいました。

## AIに指示出し
わかりやすく、簡潔に指示を出す
主は英語ができないので日本語で指示出しをした。
“`
SwiftのLazy Propertiesについて、コードを用いて説明してください
“`
## AIからの返答
SwiftのLazy Propertiesは、必要になるまで初期化されないプロパティです。
これは、初期化することによって処理に多くの時間がかかるような大きなプロパティの場合に特に便利です。
Lazy Propertiesは、以下のように宣言します:

“`Swift
class MyClass {
lazy var heavyComputation: Int = {
// ここで重い処理を行う
return 42
}()
}
“`

## 結論
View生成時に重くなり画面遷移に支障がある場合に使うのが良さそうですね。
さすがAI。Swift歴4年目の俺よりわかりやすい説明

元記事を表示

【SwiftUI】Previewで@Stateを使用したい

# はじめに
SwiftUIでBindingを使用するとPreviewの時にどうすればいいのか迷いますよね。
私が初学者の時はどうするのかわからずにPreviewを消してました。
同じような問題で困ってる人のために記事にします。

# やりかた
“`diff_swift:ContentView
import SwiftUI

struct ContentView: View {
@Binding var text: String
var body: some View {
Text(text)
}
}

struct ContentView_Previews: PreviewProvider {
+ @State static var text: String = “テスト”
static var previews: some View {
ContentView(text: $text)
}
}
“`

:::note info
**ポイント**
`@State`に`static`を付けます。
:::

元記事を表示

【Swift,iOS】いい感じのアドバイスをくれるアプリを作ってみた

# やりたいこと
* いい感じのアドバイスをくれるAPIを使って、いい感じのアドバイスを画面に表示させたい

1\. Advice Slip JSON API というものを使っていい感じのアドバイスを英語で取得
2\. 取得した英語のアドバイスをDeepLのAPIを使って翻訳
3\. 画面に表示
この流れでやっていきます。

## 完成図

画面をタップするとアドバイスが更新されます。

## やってみる

https://api.adviceslip.com/advice

Swift ファイル情報の備忘録

# **Swiftでファイルサイズを取得**

FileManagerのattributesOfItemを使って、ファイルサイズを取得することができます。
NSDictionaryに型をキャストすることによって、用意された関数を使用することができます。
[Apple attributesOfItem](https://developer.apple.com/documentation/foundation/filemanager/1410452-attributesofitem)

使い方

“`swift
import Foundation
let fileManager = FileManager.default
guard let attribute = try? fileManager.attributesOfItem(atPath: “パス”) as NSDictionary else { return }
print(attribute.fileSize())
“`
# Swiftでファイル作成日を取得
“`swift
print(attribute.fileCrea

元記事を表示

クラッシュリティクスをSlack通知する(10分で設定できるヨ)

# はじめに

毎朝毎朝、手作業でクラッシュリティクスを確認している明田です。
確認してはクラッシュが出ていない。
クラッシュが出ていない
クラッシュが…..

み、見つけた!クラッシュだ!!と本来喜んではいけないのに高ぶる気持ちを抑えられません。
まるで事件現場を発見したどっかの少年探偵団みたいな気持ちです。
![コナン.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1967088/37ca6674-df89-2804-d3db-3f7ce6560b77.jpeg)
そこから犯人(原因)探しをし修正してクラッシュ解決となるのですが、なんといっても
– 手作業での確認作業が面倒
– 発見して課題化したのに誰かが解決済み
– これは連携ミス。
– 確認が属人化してしまっている
– 運用しているサービスが多いと確認数が増える

など確認作業には多くデメリットが存在します。

くそー何か何かいい方法は…
ざわ…何かいい方法はないのか。
ざわ…:bulb:!!
圧倒的閃き・・・!僥倖

元記事を表示

SwiftUIの技術選定まとめ

# Overview

iOS13から SwiftUIとCombineが導入され、Swift5.5から async awaitが導入され、既存のUIKitの実装から大きく変化が求められてきています。

SwiftUIの紹介から数年が経ったことで、大分関連記事や事例紹介が増えてきました。iOS13未満をサポート対象にしていたアプリも徐々に減り、これらのリファクタリングタスクが必要となってきています。

# 技術選定の観点

この記事の大きな焦点は2点です。

– SwiftUIの提唱する “Single Source of Truth” と Combine実装の共存
– Combineの非同期処理と Swiftのasync/awaitによる非同期処理の使い分け

私はこれらの問題をUI アーキテクチャで綺麗に実装することで、それぞれの強みを最大限に生かすことができると考えます。以下の図のようにMVVM アーキテクチャを設計します。
![MVVM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168714/

元記事を表示

OTHERカテゴリの最新記事