iOS関連のことを調べてみた2022年12月22日

iOS関連のことを調べてみた2022年12月22日

iOSのViewable Impression対応の話

社内で内製化のログシステムを推進している中で、ZOZOTOWNのiOSアプリはLoggerの内製、またはクリック、Viewable Impression(以降、view-impと表記)などイベントの対応してきました。
この記事では、先日に公開されたTechBlog[【ZOZOTOWNホーム画面におけるログ設計と改善サイクルの紹介】](https://techblog.zozo.com/entry/zozotown-home-data-driven)のview-impについてのiOSの実現方法を深堀りして紹介します。
画面の構成や実装により、適切な対応がそれぞれになりますが、今回の対応で気づいたポイトンがきっとどこかで参考になると思います。

# おさらい

## 背景
ホーム画面は主に**バナー**と「タイトル、一覧ページへのリンク、商品コンテンツ」という3つのパーツを持つ**モジュール**で構成されています。
これまで定性的な意思決定に基づいたモジュールの運用を、定量的に運用できるように、次ページ遷移率(以降、CTRと表記)をKPIとしました。

“`math
CTR = コンテン

元記事を表示

UDLとよくあるお問い合わせ

ハッピーホリデー!本日はわたくしアラがAppsFlyerのアドベントカレンダーを書かせていただきます。

###### 自己紹介
AppsFlyer入社3年目のサポートエンジニアです。弊社入社前はウェブアプリやモバイルアプリのエンジニアをしていました。
毎日AppsFlyerをご利用いただいている皆様からの技術的なお問い合わせやシステムの調査依頼等を対応しています。日本語でお問い合わせいただくと高確率で私が出現します。(全ての言語で対応しておりますのでお気軽にご連絡ください!)

本日は多くの皆様にご利用いただいているUDLというAppsFlyer SDKの機能の一部と、よくあるお問い合わせ、その解決方法をご紹介したいと思います。

## そもそもAppsFlyer SDKで何ができるの?
AppsFlyer SDKでは主にインストールデータやアプリ内イベントデータの送信、アトリビューション時のパラメータの取得が行えます。
アトリビューションとはどの広告(リンク)からアプリがインストールされたかを決定する仕組みで、**AppsFlyer SDKではそのリンクのパラメータが取得可能**と

元記事を表示

Flutterアプリをリリースするために僕が考えたブランチ戦略とデプロイ方法と仕組みについてまとめてみた!

# はじめに
この記事は[MIXI DEVELOPERS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mixi) の22日の記事です。

# この記事はなに?
昨年からFlutterでアプリ(iOS/Android)開発をはじめ、今年の頭に初めてアプリをリリースしました!
リリースする際に考えたブランチ戦略、デプロイ方法と仕組みについてまとめてました!

## この記事で紹介すること
– ブランチ戦略について
– デプロイ方法と仕組みについて

上記について紹介します!

# 環境
今回の記事は以下の環境、ツールを使用しています。
– MacOS: monterey 12.6 2
– Flutter: 3.0.2
– Fastlane: 2.190.0
– GitHub
– DeployGate
– Bitrise

# ブランチ戦略について
まずはアプリをリリースするまでのブランチ戦略についてご紹介していきます!

## 具体的なリリース手順
以下の図でリリース作業を進めています。それぞれ解説してい

元記事を表示

iOSアプリのデータ保存場所

## 保存場所
– メモリ
– NSCache:メモリが足りなくなれば自動的にアイテムが消される
– Dictionary や Array
– ファイルシステム
– ディレクトリ:基本的に iCloud へバックアップされる
– UserDefaults:プリミティブ型のユーザ設定を保存する、起動時にメモリに展開される、iCloud へバックアップされる
– データベース:Core Data、Realm、SQLite など
– KeyChain

## ファイルシステムの構造
“`
/
Applications/ (大事)
Developer/
Library/
System/
User/
bin/
dev/
etc/
lib/
mnt/
private/
sbin/
tmp/
usr/
var/ (大事)
“`
## /Applications
“`
/
Applications/
{$a

元記事を表示

iOS上でずんだもんにお話ししていただく

ネット流行語100(2022)にてニコニコ賞を受賞したずんだもんにお話しをお願いしました。
## はじめに
VOICEVOXは読み上げ音声エディタであり、読み上げ音声の一つとして ずんだもん が使えます。
VOICEVOXはWindows, Mac, Linuxに対応したエディタで、現在(2022/12)ではiOS向けのリリースはされていません。が、開発はオープンソースで行われており、音声合成のコア部分もソースコードが開示されています。(\*1)
以下は奮闘の軌跡です。

## iOS向けにBuildしてみる
iOS向けにコアをビルドしてみます。
READMEによれば、onnxruntimeが必要そうなので、こちらもビルドします。公式ドキュメントに従って
~~~
./build.sh –config MinSizeRel –use_xcode –ios –ios_sysroot iphoneos –osx_arch arm64 –apple_depro

元記事を表示

【SwiftUI】外部APIを叩いて取得した結果をListに表示する・改

## はじめに

以前 SwiftUI の勉強会ネタとして connpass の API を利用して,
YUMEMI.swift という勉強会を検索して検索結果をリストに表示して,
詳細画面にマップや勉強会の内容などを表示するサンプルアプリを SwiftUI で作りました。

あれからだいぶ経ったので少し機能追加,リファクタリングを今回やってみようと思います。
だいぶ開発しやすくなったね,と感じることができるかが気になるところです。

## アプリの詳細

詳しくは過去の記事をご覧ください。

https://qiita.com/MilanistaDev/items/64dca8c9d5099a19529e

### API

connpass の API で勉強会検索します。
エンドポイントは下記のままです。
`https://connpass.com/api/v1/event/?keyword=YUMEMI.swift`

### アプリ構成

大きく 3 画面で今回手を入れるのはリスト画面と詳細画面になります。

* **リスト画面**: API を叩いて取得できた勉強会たちをリ

元記事を表示

【SwiftUI】キーボードツールバーを実装する

# はじめに
DeepL翻訳アプリを使用していたらキーボードの上にツールバーが表示されていたので同じように実装してみました。
![IMG_1843.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ed482a32-e094-5276-767c-3889ae3f85f9.png)

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 – 2022-12-21 at 21 30 53](https://user-images.githubusercontent.com/84154073/208905758-a6a78e3b-5c8c-48ce-8a76-2a21ec8d48da.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State var text: String = “”
var body: some View {
TextF

元記事を表示

iPhoneのSMSを取り出す

# バックアップを取る
iTunesなどでiPhoneのバックアップを取る

全バックアップが面倒なら自己責任でサードパーティ製のものを使うと個別バックアップできるかもしれません。

# バックアップしたフォルダからSMSのデータを探す

Windowsであれば`%userprofile%\Apple\MobileSync\Backup`内にバックアップした日時毎のデータがあるので適当にバイナリgrepする。

自分の場合は`chat_id`で検索するとすぐでした。
他にも送信者などでも良いと思います。
(迷惑メールなら送信者が特殊なアドレスなので引っかかりやすいです。)

バイナリgrepは[msys](https://www.msys2.org/)や[cygwin](https://www.cygwin.com/install.html)などでやるのが楽と思います。
例)
“`shell
$ grep chat_id . -nr
Binary file ./3d/3d0d7e5fb2ce288813306e4d4636395e047a3d28 matches
“`

# DB

元記事を表示

[Swift]タイプライター風にUILabelをアニメーションさせる

# 参考動画
![-gdjupqclrgqq32do.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/1a7a2107-61b2-62d4-fb63-f71d0cceb873.gif)

このようにUILabelを1文字ずつ表示するアニメーションをする方法を紹介します。

# コード
“`.swift
final class View: UIView {
@IBOutlet weak var label: UILabel!
private var timer = Timer()
private var currentTextCount = 0
var text: String?

private func setTimer(_ text: String) {
timer = Timer.scheduledTimer(timeInterval: 0.075, target: self, selector: #selector(textA

元記事を表示

はじめてのAppsFlyer – (4) iOS SDK実装後の実機デバイスでの動作確認

いよいよ「はじめてのAppsFlyer(iOS編)」の最後の記事です。これまでの以下の順にSDK実装を進めてきたアプリで、実機デバイスでアプリを動かし、広告接触経由の非オーガニックインストールができることを確認します。

– [(1) アプリを管理画面に追加する](https://qiita.com/maktag/items/5d3399e2137947bef529)
– [(2) iOS SDK実装/iOSシミュレーターでの動作確認](https://qiita.com/maktag/items/9c5929450a7cc0b42e1a)
– [(3) iOS SDKでのATTフレームワークの実装](https://qiita.com/maktag/items/41ad60df7c037b72a7bb)

# 前提

この記事では、Xcodeから手持ちのiPhoneの実機にアプリが転送できることを前提としています。
Apple Developer Programなどに登録するのが一般的だと思いますが、登録しなくても実機テストをやる方法もあるようです。

[[Xcode][iOS] 有

元記事を表示

[Delphi][小ネタ] Windows / macOS / iOS / Android で等幅フォントを取得する

# 等幅フォントを取得する

コードはもちろんのこと情報を表示するときとかに等幅フォントが必要になる事があります。
各プラットフォーム毎にフォント名が異なるのでめんどい!のと毎回調べてるので、メソッドにまとめてみました。

コードは以下の通り。

“`delphi
(*
* Font Utility
*
* PLATFORMS
* Windows / macOS / iOS / Android
*
* LICENSE
* Copyright (c) 2022 HOSOKAWA Jun
* Released under the MIT license
* http://opensource.org/licenses/mit-license.php
*
* HISTROY
* 2022/12/19 Version 1.0.0 First Release
*
* Programmed by HOSOKAWA Jun (twitter: @pik)
*)

unit PK.Utils.Font;

interface

type
TFo

元記事を表示

Sourceryを使って自動でEquatableに準拠させる

この記事はand factory.inc Advent Calendar 2022 21日目の記事です。
昨日は @k_shinn さんの [【Jetpack Compose】WearOSで簡単なアプリを作ってみる](https://qiita.com/k_shinn/items/f36c1a8fc19a91d97aae) でした。

# はじめに
テストを書くときによく構造体の比較をしたいときがあるのですが、毎回Equatableに準拠させるために`==`の実装をするのが面倒だと感じてました。
そこで今回は、[Sourcery](https://github.com/krzysztofzablocki/Sourcery)というツールを使ってEquatableの実装を自動化してみました。

# Sourceryとは
Sourceryとはボイラーテンプレートを自動生成してくれるSwift製のツールです。

# 環境
– MacBook Pro Apple M1 Max
– Xcode14.1(14B47b)
– Swift:5.7.1
– Mint:0.17.4

# セットアップ

元記事を表示

CompositionalLayoutのカルーセルを無限スクロールさせてみる

こんにちは:christmas_tree:
ZOZO #6 Advent Calendar 2022 21日目の記事を担当します:snowflake: (去年も21日)
今年は遅れてスノボーにシーズインした、@koiwai2020です:snowboarder:
よろしくお願いします:bow:

# 今回も

大好きなスノボーシーズンに使えそうな話題が、、、、作れませんでした。
なので調べてみたものの使うことはなかった、CompositionalLayoutで作ったカルーセルの無限スクロールを忘れないように記す場にします。

# 無限スクロールの実装について

無限スクロールは、動画のように1〜5の数字が割り振られたセルが、無限にスクロールされます。

元記事を表示

Swift初心者によるSwift初心者のためのアプリ開発

[アイスタイル Advent Calendar 2022](https://qiita.com/advent-calendar/2022/istyle) 21日目を担当させて頂きます、こたちゃんです:santa_tone1::gift:

## はじめに

私は、3週間ほど前からiOSのアプリチームで研修をしている新卒のエンジニアになります?‍?
普段は主にバックエンドエンジニアしてます!

これまで、Swiftに一度も触れたことがなかったのですが、学んで2週間ほどで、、なんだこれ、、楽しすぎる!!!と恋をしてしまうような体験:heart_eyes:をしてしまったため
**触れたことないいんだけどやってみるか!**
といった人を増やすべく、この記事を書こうと思いました:sunny:

「ボタンを押したらおみくじの結果が表示される」という初心者の方でも作れるようなアプリを
チュートリアルのような形式で作成していこうと思います:muscle_tone1:

## 作成するアプリ

mojikyo45_640-2.gifReact Nativeでゴルフスコアカウンタアプリ作ってみた(後編)

# この記事でわかること
– ReactNativeを使ったアプリの作り方
– Reactとの基本的な違い
– WEB開発者が少し触ってみた感想

# 背景
最近会社の同僚・大和田さんとゴルフにハマってるんですがスコア・打数・パーなどのルールや用語を覚えられず、割と適当に遊んでいます。笑
そんな中大和田さんと何回か打ちっぱなしに行く中で、「ゴルフスコアカウンタアプリ作ってみません?」と提案をいただきました。
会社では普段Laravel・Vueなど、プライベートではReact(Next)などを扱っていてiOSアプリ開発を1mmも経験していないので、
ReactNativeならとっかかりやすそうだし、今年はアドベントカレンダーに投稿するものが思い当たらなかったのでいい機会だと思ったので、
今回「ゴルフスコアカウンターアプリ」をReact Nativeで作っていこうと思います。

# 作るもの
まずは、機能の洗い出しからいきましょう!
前編はこちら→ [大和田さんの記事](https://qiita.com/NaokiOwada/items/9bccd6fa08eaa7d1ecbe)

#

元記事を表示

【iOS】ホームでアプリを長押しした時のメニューにカスタムボタンを追加する

# はじめに
アプリを削除しようとする時に出てくるメニューにボタンが追加できるらしい!
[Home Screen quick actions](https://developer.apple.com/design/human-interface-guidelines/components/system-experiences/home-screen-quick-actions/)という機能だそうです
![IMG_1813.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1d26f467-f510-be85-5fb9-2b52429d85ae.png)

やってみます

# 実装方法
## Info.plistの設定
① プロジェクトを選択します
② ターゲットを選択します
③ 「`Home Screen Shortcut Items`」と入力します
![スクリーンショット 2022-12-20 20.59.28.png](https://qiita-image-store.s3.ap-no

元記事を表示

iOSとMacOSに?機械学習?を用いたテキスト入力に基づく描画を実現(Stable Diffusion + Core ML)

| Example 1 | Example 2 |
|—|—|
| ![スクリーンショット 2022-12-18 22.16.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/6d93e359-6f40-7ab5-6192-de93e129eb5c.png) | ![スクリーンショット 2022-12-18 22.19.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/de1882f6-0006-ff3f-ca55-e78751504892.png) |
| 春、ピンクの花、桜、暖かい、鮮やか、美しい、絵画、緑の草、青く澄んだ空、晴れた日、水墨画 | 山の中のハイテクな塔、ハイテク、サイエンス・フィクション、未来的、古寺、美しい |
| 注:AIは青空キーワードを無視した | 注:AIは古寺のキーワードを無視した |

## Stable Diffusion (AIはどうやって絵を

元記事を表示

[Delphi] Windows / macOS / iOS / Android でアプリのバージョン情報を取得する

# バージョン番号の指定

Delphi はプロジェクトオプションでバージョン番号を指定できます。

:::note info
Android は VersionCode / VersionName を指定できます。
VersionCode は連番で増えていくもので、VersionName は人間が読めるバージョン情報です。
今回は、VersionName を取得します。
:::

画像は各プラットフォーム毎のバージョン番号指定部分を赤枠で示したものです。

左上:Windows
右上:Android
左下:macOS
右下:iOS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/a8ace051-95b2-bcfc-704d-4ab1868479f1.png)

# バージョン番号を取得する

バージョン情報ダイアログにバージョンを表示するときやサポートにログを送って貰うときにログにバージョンを仕込んでおくとか、そういう時にバージョン情報が必要になります。

ということでプロ

元記事を表示

はじめてのライブアクティビティ

この記事は[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo)Vol.1の20日目の記事です。

# はじめに
本記事はiOS 16で追加されたライブアクティビティについての概要と実装についてのまとめです。

# ライブアクティビティとは?
ライブアクティビティはiOS 16で追加されたアプリの最新データをDynamicIslandとロック画面に表示する機能です。
DynamicIslandはiPhone14 Pro、iPhone14 Pro Maxでのみ使用できます。(2022年12月時点)

|iPhone14 Pro、iPhone14 Pro Max|それ以外|
|:—-|:—-|
| ロック画面、
DynamicIsland|ロック画面|

【SwiftUI】GaugeのStyle比較(iOS16+)

# はじめに
https://qiita.com/advent-calendar/2022/retail-ai-x

20日目の記事になります。
19日目は[@syuri_n](https://qiita.com/syuri_n)さんの「[プロジェクトを円滑に進めるために取り組んだこと](https://zenn.dev/syuri/articles/ebba60669f667c)」でした。

iOS16から使えるGaugeというViewが面白そうだったので、
そのGaugeStyleを比較してみました。

# 環境
– macOS Monterey 12.6.2
– Xcode 14.1 (14B47b)
– Swift 5.7.1

# 比較風景

## portrait
![Simulator Screen Recording – iPhone 14 Pro Max – 2022-12-16 at 11.08.54.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417119/86b8c37

元記事を表示

OTHERカテゴリの最新記事