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

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

【Swift】引数にある謎の`&`について

# はじめに
Swiftのコードを読んでいて、関数の引数に謎の`&`がついていたので調べてみました。

# 例
以下のコードを見てください。

“`swift
func increment(number: inout Int) {
number += 1
}

var number = 0
increment(number: &number)
print(number) // 1
“`

`increment(number: &number)`を見ると、引数に`&`がついています。
これは、`inout`引数というものです。

# inout引数とは
`inout`引数は、関数内で引数の値を変更することができます。
例のコードを実行すると、`increment(number: &number)`で`number`の値を変更していることが確認できます。

# inout引数を持つ関数の作り方
`inout`引数を持つ関数を作るには、引数の型の前に`inout`をつけます。

“`swift
func increment(number: inout Int) {
nu

元記事を表示

【SwiftUI】onChangeの古い値を取る方法

# はじめに
`onChange`で古い値を使いたくなったのでやり方を調べたら可能そうだったので記録しておきます。

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var text = “”
var body: some View {
TextField(“”, text: $text, axis: .horizontal)
.onChange(of: text) { [text] newValue in
print(“古い値:”, text)
print(“新しい値:”, newValue)
}
}
}
“`

# おわり
こんなことできるの知りませんでした

# 参考記事
https://blog.code-candy.com/swiftui_onchange/

元記事を表示

iOSアプリ証明書(Apple Developer)概要

# はじめに

こんにちは。エン・ジャパン株式会社でネイティブアプリエンジニアをしております谷田貝です。

弊社では公開しているiOSアプリが多くあり、その証明書類を扱う方も多くいます。[Apple Developer](https://developer.apple.com/)のiOSアプリ証明書類は複雑で理解するのも大変なため、社内で勉強会を行いました。本記事ではその内容を展開します。お役に立てれば幸いです。

###### 本記事の目的
– iOSアプリ開発にて扱う証明書類の相関関係、発行から使用までの流れを説明
– 各種証明書類の特徴や扱う上での留意事項の説明

###### 想定読者
– これからiOSアプリ開発を始める方、証明書周りを理解したい方
– 協力会社にiOSアプリ証明書類を提供する必要がある方

###### 記載対象
– 証明書類の発行手順詳細については割愛
– iOSアプリ作成、運用において主なもののみ説明

# iOSアプリ証明書 なぜ必要か、何に使うのか
主なものは・・・
– Development / Distribution Certificate

元記事を表示

Xcode15 beta インストール方法

Xcode15Beta版のインストールに少しだけ躓いたので、記載しておきます。

Xcode15のインストールは下記リンクにアクセスします。
https://developer.apple.com/download/all/?q=Xcode

AppleID、パスワードを入力して、以下の画面に遷移します。
Platformのチェックマークを全て外した状態で、Xcode 15 beta 4 and Selected Platformsをクリックすれば、Xcodeのxipファイルがインストールができます。
**なぜか選択できるPlatformにチェックマークが入っていると、xipファイルがインストールされないです。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128814/5e375120-b327-2abb-3024-3aef382b97d5.png)

エンジニアのキャリアについて記事を描いてみたので、ぜひご覧ください。
https://qiita.com/p__kiba/it

元記事を表示

【Swift】MapKitを使用して場所のサジェストを受け取る

# はじめに
MKLocalSearchCompleterを使用して場所の検索をローカルで行うことができるっぽいので試してみました。

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 – 2023-07-13 at 19.43.24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6e7e65bb-da54-f161-e1df-afa058c65a68.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@StateObject private var viewState = ViewState()
var body: some View {
NavigationStack {
List(viewState.localSearchCompletions, id: \.self) { localSearchCo

元記事を表示

【Swift】符号を取得する方法

# はじめに
この記事では、Swiftで符号を取得する方法を紹介します。

# Int型の場合
`signum()`メソッドで符号を取得できます。

正の場合は1、負の場合は-1、それ以外の場合は0を返します。

“`swift
let number = -10
let sign = number.signum()
print(sign) // -1
“`

# Double型の場合
`sign`プロパティで符号を取得できます。

正の場合は`FloatingPointSign.plus`、負の場合は`FloatingPointSign.minus`を返します。`FloatingPointSign`型は、浮動小数点数の符号を表す列挙型です。

“`swift
let doubleNumber: Double = -10.0
let doubleSign = doubleNumber.sign
print(doubleSign) // minus
print(type(of: doubleSign)) // FloatingPointSign

// type(of:)関数は、引数

元記事を表示

Flutterパッケージ(simple joystick)を初めて作成&公開してみた。

# どんなものを作成したのか?
– ゲームなどによくあるJoyStickを作成しました。
### こんな感じ
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/351982/e51607cd-4617-ab60-c50a-e4cd970155a4.gif)

# なぜ作成したか
– Flutterをやり始めて少し経ったので一つくらいパッケージを公開したかった。
– 類似するものもあったが、シンプルなものが見つからなかった。
– Animationの勉強がしたかった。

## よかったら使ってください!!
## バグ、issueなどありましたらGithubにどんどん追加してください:clap:

https://pub.dev/packages/simple_joystick
https://github.com/NaokiNishizawa/simple_joystick

元記事を表示

iPhone 14 Pro, iPhone 14 Pro Max でステータスバーとナビゲーションバーの間に白い余白が生じる

iPhone 14 Pro, iPhone 14 Pro Maxでは「dynamic island」と呼ばれる余白領域が新たに生じている。

[USE YOUR LOAF – iPhone 14 Screen Sizes](https://useyourloaf.com/blog/iphone-14-screen-sizes/)

単純にステータスバーの高さのビューを追加しているだけだと余白が出てしまう。そのため、UIWindowの`safeAreaInsets.top`により余白の部分を含んだ高さを取得し、その高さのビューをUIWindowに追加し、そのビューの背景色を変えるなどすれば対応できる。

“`swift:UIApplication+StatusBar.swift
extension UIApplication {
var statusBarView: UIView? {
if #available(iOS 13.0, *) {
let tag = 3848245

let keyWindow = U

元記事を表示

SwiftUIでハンドスピナーを作る方法

# はじめに
この記事では、スワイプするとハンドスピナーの回転が加速するアニメーションを作る方法を紹介します。

# 対象者
SwiftUIの基本的な使い方を知っている人

# やり方

“`swift
struct ContentView: View {
@State private var angle: Double = 0

// 加速度
@State private var acceleration: Double = 0

private let timer = Timer.publish(every: 0.01, on: .main, in: .common).autoconnect()

var body: some View {
Image(systemName: “fanblades.fill”)
.resizable()
.frame(width: 300, height: 300)
.rotationEffect(.degrees(a

元記事を表示

【SwiftUI】Textの文字同士のスペースを操作する

# はじめに
Textの使ったことのない機能を発見したので記事にしておきます

# 実装
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
VStack(spacing: 10) {
Text(“サンプル”)
.kerning(0)

Text(“サンプル”)
.kerning(10)

Text(“サンプル”)
.kerning(20)

Text(“サンプル”)
.kerning(30)
}
}
}
“`

![simulator_screenshot_1CF7BB98-41FC-4C46-9A79-350D0B3DBA24.png](https

元記事を表示

モバイルアプリ開発での二分探索適用例

## 前置き
プログラミングについて勉強していくとアルゴリズムのカテゴリに触れることがあるかと思います。その時に大体のケースでソートや、全探索、二分探索について学ぶ方が多いのではないかと思います。しかしながら、実際にフロント側の開発(筆者はiOSアプリ開発ですが)ではこれらのアルゴリズムを使うケースはあまりないのではないかと思っています(筆者の経験では、、、)。ですが最近開発で二分探索を使う機会がありましたので共有できればとおもいます。
### 二分探索
二分探索(Binary Search)は、ソート済みのリストや配列内で指定した値を効率的に探すアルゴリズムです。大まかな手順は次の通りです。

1. リストの中央にある要素を調べます。
2. その要素が目的の値と一致すれば、探索はそこで終了します。
3. 中央の要素が目的の値より大きければ、その要素より小さい方(左半分)を新たな探索範囲とします。
4. 中央の要素が目的の値より小さければ、その要素より大きい方(右半分)を新たな探索範囲とします。
5. 新たな探索範囲でステップ1から再び探索を行います。これを範囲がなくなるまで(目的の値

元記事を表示

FlutterでTinder風UIを実装してみた

# はじめに
こんにちは!Flutterでアプリ開発を行なっている者です!
プライベートでTinder風のUIを実現すべく試行錯誤したので、メモを兼ねて共有したいと思います。

# 実現したいUIについて
Tinder風、と言われてもピンとこない方もいらっしゃるかと思うので、実現したいUIを紹介します。
簡単にいうと、積み重なったカードを上下左右にスワイプして次のカードを表示するUIとなります。それぞれのスワイプ方向に応じて、何らかのアクション(好き・嫌いなど)を行うことができます。
上記のUIを実現するPackageはそこそこ提供されているが、痒いところに手が届かないものが多い。。。
https://fluttergems.dev/tinder-swipe-cards/

# 完成品
今回実装したものはこちらになります。
画面収録_2023-07-11_19_12_17_AdobeExpress.gif【SwiftUI】インスタのかっこいい背景色を再現する

# はじめに
インスタにかっこいい背景があったのでSwiftUIで再現してみます

![IMG_3400.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/239c42ca-90a6-f8d1-f327-4e3d8bc885cd.png)

# 実装
“`swift
import SwiftUI

struct GradationBackgroundView: View {
@ViewBuilder var content: () -> T

var body: some View {
ZStack {
LinearGradient(gradient: Gradient(colors: [.orange, .purple, .cyan, .blue, .green, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing)

元記事を表示

iOS app を外注するときの設定について

# context
– iOS アプリの開発を外注する
– ソースでの納品ではなく app/binary での納品とする
– 外注先のエンジニアは少数
– Xcode 14以降を想定

# 方法
– Apple ID は当然shareしない
– Apple Distribution certificate/private key とかもshareしない
– Organization には Developer として入ってもらう。
– このときアクセス可能なAppは当該appだけの設定にする
– Access to Certificates, Identifiers & Profiles.はチェックする
– これで Apple Delevelopment certificate は自動で設定される
– これで 必要な provisioning profile は自動で設定される
– この開発者はArchiveビルドしたときの成果物は 外注元Team になっている (sign は Developmentのもの)

# 外部開発者にupload

元記事を表示

【個人開発】一番簡単なアプリアイコンの作り方

# はじめに
アプリアイコンは、アプリの顔とも言える重要な要素です。この記事では、アプリアイコンを簡単に作る方法を紹介します。

# 作り方
私は大抵、Keynoteでアプリアイコンを作ります。画像編集ソフトの多くは多機能ですが、Keynoteは最小限の機能しかなく使うハードルがとても低いです。

## サイズを設定する
iOSアプリのアイコンに必要な最大サイズは、1024×1024です。Keynoteでサイズを設定するには、以下の手順を踏みます。

1. ツールバーの「書類」をクリック
2. 「スライドサイズ」を「カスタムのスライドサイズ…」に変更
3. 幅と高さを1024に設定

![スクリーンショット 2023-07-10 21.33.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366249/23bb41cb-2046-68ff-d239-a25f72254883.png)

![スクリーンショット 2023-07-10 21.33.24.png](https://qiita-ima

元記事を表示

【SwiftUI】TextでDateの範囲を表示する

# はじめに
Textに使ったことのない機能があったので使ってみました

# サンプルアプリ
![IMG_3399.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/fbba20a8-3bff-c7ec-5c14-ed54dbc90a07.png)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: Date())!

let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())!

var body: some View {
Text(yesterday…tomorrow)
}
}
“`

# おわり
知らない機能でした

# 参考記事
https:/

元記事を表示

ARCore Streetscape Geometry APIとGeospatial APIを試してみた

ARCoreのStreetscapeGeometry APとGeosptatialAPIを試した感想について書いていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4019/7c58b426-a154-55e7-7af5-cedffe79ed04.png)

# Geospatial APIとは
GoogleがGoogle I/O 2022で発表したVPS(Visual Positioning Service/System)です。VPSは、カメラ映像とスキャン済みの空間情報を照合して、仮想と現実の空間を位置合わせする技術です。

詳細はこちら
– [ARCore Geospatial APIとPLATEAUを使って建物に3D都市モデルのワイヤーフレームを重ねてみた](https://medium.com/tichise/arcore-geospatial-api%E3%81%A8plateau%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%BB%

元記事を表示

Flutter初心者がMVVM&サブスクリプションのアプリ公開までにやったこと

## はじめに
6月末、Flutter で作ったアプリを公開しました。
習慣化アプリで、MVVM + Repositoryパターンを採用し、定期購入(サブスクリプション)機能を導入しています。

この記事では、Flutter初心者がアプリ公開までに辿った過程を書いていきます。
(なお、筆者はFlutter初心者ではありますが、プログラミング経験者です)
これからFlutterを始める方、始めたばかりの方の参考になれば幸いです。

### 作成したアプリ
– iOS

https://apps.apple.com/jp/app/habit-switch/id6450116586

– Android

https://play.google.com/store/apps/details?id=com.may88seiji.habitswitch

## 全体の流れ まとめ
記事の流れは下記になります。それぞれの詳細を書いていきます。

1. 2023年4月初旬:
Flutter学習開始

2. 2023年5月初旬:
申請 公開を経験するためのアプリをリリース

3. 2023年6月下旬:

元記事を表示

Firebase Analyticsのリアルタイムのデバッグ方法(Xcode向け)

## この記事は何?
Flutter開発をしていた時に、Firebase Analyticsのイベント発火を確認したかったのですが、
リアルタイムでは反映されなくて困ったのでその時の解決策をメモします。

## 解決策
XcodeのProduct > Scheme >
EditScheme -> Run -> Arguments Passed On Launch に“`-FIRDebugEnabled“` を追加します。
自動で有効になっているはずです。

![スクリーンショット 2023-07-10 18.40.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/795935/adb6fe0c-38d7-a5c3-0edd-e08324b6f2e0.png)

Firebase側の確認画面をなかなか見つけられなかったのですが、Firebaseのプロジェクトコンソールの「Debug View」から確認できます
> 開発デバイスでデバッグモードを有効にしたら、Google アナリティクスの上部ナビゲー

元記事を表示

ブロックチェーンアプリをApple審査に出すときのポイント – おかむーが最新ガイドラインをわかりやすく解説

どもー、皆さん。no plan inc.の[おかむー](https://note.com/okamu_/n/nc8b3f80cdb58)です。今回は、ブロックチェーンやNFT(非代替性トークン)を取り扱うアプリをApple審査に出す際の要点をまとめていきたいと思います。

# この記事でわかること
– ブロックチェーンアプリをApple審査に出すときのポイントがわかります

# 2023年6月5日の最終更新版
まず始めに、AppleのApp Store Review Guidelinesを見てみましょう。2023年6月5日の最終更新版では以下のように記載されています。

https://developer.apple.com/jp/app-store/review/guidelines/

### 3.1.1 App内課金
原文
“`
3.1.1 App内課金
Appのコンテンツまたは機能(例:サブスクリプション、ゲーム内通貨、
ゲームレベル、プレミアムコンテンツへのアクセス、フルバージョンの利用)は、
App内課金を使用して解放する必要があります。コンテンツや機能を解放するため、

元記事を表示

OTHERカテゴリの最新記事