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

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

AppsFlyerとそのアトリビューションの仕組み

この記事ではAppsFlyerと、その基本的な機能であるアトリビューションについて解説しています。

## AppsFlyerを一言で言うと・・・

[AppsFlyer](https://www.appsflyer.com/ja)はモバイルアプリのデータを収集・整理し、「アトリビューション」を行うことで、広告の効果を統一的に評価するためのプラットフォームを提供するサービスです。
このようなサービスは、モバイル計測パートナー(MMP; Mobile Measurement Patner)という名前でも知られていて、AppsFlyer以外の類似のサービスとしては adjust, branch, Kochava, singular, tenjin 等が挙げられます。
この中で、グローバルシェアがNo.1のサービスがAppsFlyerになります。

![AF-logo_Horizontal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73759/eeb0ed79-45cd-6ea0-b1d6-000645

元記事を表示

【SwiftUI】明示的アニメーションと暗黙的アニメーションを理解して使い分けよう

この記事はand factory.inc Advent Calendar 2022 7日目の記事です。
昨日は @chitomo12 さんの [ライブラリ管理をCarthageからSwiftPackageManagerに移行する](https://qiita.com/chitomo12/items/78ab3ce66fda8300c5bf) でした。

## はじめに

SwiftUIでアニメーションを使っていると、
アニメーションの表現に二種類あることはすぐにわかりますが、
意識的に使い分けるには少々学習が必要だと思います。

SwiftUIのアニメーションをキャッチアップする過程で大事なことだなと思ったので下記の2つのアニメーション

– “`animation(_:value:)“`(暗黙的アニメーション)
– “`withAnimation(_:_:)“`(明示的アニメーション)

についてサンプルコードを交えながらまとめていこうと思います。

## 暗黙的アニメーション

[animation(_:value:)](https://developer.apple.co

元記事を表示

iOSアプリ開発で始めるLint駆動開発

私がコードレビューをするとき、文字や文体の誤りや不備はあまり重視していません。それらを確認するのは IDE や静的解析ツールの責務として考えているので、人間は API の使い方やアルゴリズムなどを確認すれば良いと考えています(ただ実際は見る場合も多い)。静的解析で解決できる問題は、機械にやらしたい。そのために Lint は整備したい、Linterに指摘して欲しい。本記事は Lint 関連で私がやることを紹介します。

## Xcode

開発を進めていくと、非推奨の関数が発生することがあります。いま入れ替える必要はないけど、いつか入れ替えたい。そのときは、Xcode の機能を利用します。

“`swift
@available(*, deprecated, message: “show() を使ってください”, renamed: “show”)
func showDog() {
print(“name: \(name)”)
}

func show() {
print(“name: \(name)”)
}
“`

![01.png](https://qiit

元記事を表示

Flutter×Firestore×FCM(iOS)で簡易的なトーク通知

# はじめに
こんにちは、とろろです。ととろじゃないです。
Life is Tech!でメンターをしており、普段は iPhoneプログラミングコース と Webサービスコース を担当しています。
最近は学生ベンチャーの企業でエンジニアもしていて、 そこで**通知付きトーク機能** のついたiOSアプリを(超短期間で)作ってほしいと言われたので、爆速で開発するために **Flutter × Firestore × FCM** をフル活用した経験があるのですが、今回の**Advent Calender**ではその技術の用法についてまとめていこうと思います。
なお、本記事の解説の中心はトーク通知機能の実装であり、チャット機能のDB構成はコーディングの方法に依るため今回は簡易的な設計となっております。

# 開発環境(使用ライブラリ) / DB構成
– Flutter
– Firebase(Firestore)
– FCM(Firebase cloud messaging)

Firebase導入やFlutterのセットアップの方法は省略しますので、次のページや記事を参考にしてみてください。

元記事を表示

始めてのiOS

初めてiOS開発環境はmacOS上で導入した。
 
今一歩、iOSでアプリを作る気力が起きなかった。

当時は、iPhoneは使っていたが、Line機材としてだけだった。 

ブラウザでもあまり入力をすることがなかった。

最近、スマフォだけで仕事をしようとした。 

一覧:携帯計画者日記(0)

https://qiita.com/kaizen_nagoya/items/005d38c6f55c85570e74
 
以前より操作方法は慣れてきた。 
仕事で使えるところまで来ていない。 

Siriも少し使った。声がでなくなり、少し利用から遠ざかった。

iOS(iPhone)を何のためにどう使うかが見定まっていない。

初めてiOSのプログラミングをした時は、macOSとの共通部分にしか興味がなかったのが敗因かもしれない。

# 50歳からのプログラミング言語入門。docker(152)

https://qiita.com/kaizen_nagoya/items/5c7cec79cb3b15237076

Objective Cの勉強する時に、IOSとmacOSに共通のアプリ設計を

元記事を表示

【SwiftUI】@AppStorageってまじ便利

# はじめに
iOS14から使用できる@AppStorageがまじで便利なので知らない人には知ってほしい!

# @AppStorageとは?
SwiftUIの@AppStorageは、アプリの設定や状態を永続化するためのプロパティラッパーです。これを使用することで、アプリを終了したり再起動したりしても、その設定や状態を保存したままにすることができます。使用するには、プロパティを@AppStorageプロパティラッパーでラップし、そこに対してアプリ内での設定や状態を保存したい値を代入するだけです。

ChatGPTに書かせてみました笑
たぶんあってますね笑

# 実装
### 基本的な使い方
これだけで値がUserDefaultsに保存されます。
値を変えた時点でUserDefaultsに保存されます。
“`swift
@AppStorage(“fontSize”) var fontSize: Int = 15
“`

### AppGroupで使う
このようにすることでAppExtensionでもUserDefaultsを共有することができます。
“`swift
@AppSto

元記事を表示

モジュール内の特定のクラスのみインポートする方法(Swift)

## はじめに

本記事は [iOS Advent Calendar 2022 その2](https://qiita.com/advent-calendar/2022/ios) の1日目の記事です。

モジュール内の特定のクラスのみインポートする方法を紹介します。

## 環境

– OS:macOS Ventura 13.0.1
– Xcode:14.1 (14B47b)
– Swift:5.7.1

## 結論

`import class {モジュール名}.{クラス名}` でモジュール内の特定のクラスのみインポートできます。

例えば `UIKit` モジュールの `UIImage` クラスのみインポートする場合、以下のように書きます。

“`swift
import class UIKit.UIImage

let image = UIImage(named: “uhooi”)
“`

`UIKit` モジュール内の他のクラスを呼び出そうとすると、ビルドエラーになります。

“`swift
import class UIKit.UIImage

let color: UI

元記事を表示

モバイル開発初心者のモバイルアプリ開発日記

今日からペースはゆっくりになると思うが、RSSリーダーアプリを開発を始めるにあたって、
新米開発者の開発日記として主に手こずった箇所を記事にして投稿していきます。

使用する開発ツール:Xcode 14.0.1

1日目
今日はgitのリポジトリー作成とXcodeでプロジェクトを作成して、連携するところまで実施してみる。

1.プロジェクトの作成
Xcodeを起動し、「Create New Xcode Project」からプロジェクト名と使用する言語などを決定し、サクッと作成することができた。

2.Gitのリポジトリー作成
こちらもネットで調べながらではあったが、簡単にリポジトリーを作成することが出来た。

3.Xcodeとgitの連携
ここで少し手間取ってしまった。
最初にローカルのリポジトリーを作成するところまで良かったが、リモートリポジトリーの設定をする時にgitのユーザー名とパスワードが必要になるのだが、このパスワードがgitのログイン時に使用するパスワードだと勘違いをしており、エラーで何回も弾かれてしまった。
どうやらこのパスワードはgithubの個人アクセストークンを入力

元記事を表示

ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法

Ionic Frameworkを使っていると、 `ion-searchbar` を利用する場面も多いでしょう。多くのリストから絞り込む用途に使われることがほとんどなのですが、実際ユーザとして使っているとひとつの問題があります。それは、closeボタンを押下しても、 `ion-searchbar` にフォーカスされたままの状態になることです。

![49f09cc0f0d654254dcda801df5f32aa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/b32ff1ba-d2cf-be8c-1bac-2e22a7d9ad41.gif)

closeボタンを押下しても、カーソルが残っていることがわかるかと思います。これは外部キーボードを利用している時は問題になりませんが、モバイルデバイスでオンスクリーンキーボードを利用してる時は問題になります。

__closeボタンを押下してもオンスクリーンキーボードは立ち上がったままです。__

もちろんこれにはシナリオが2つあります。

– 入力内

元記事を表示

Elixirの未来トーク2-1「全世界のスマホGPUをクラスタリング」研究開発を進めてわかったこと (Nxバックエンド勉強会#8)

[Nxバックエンド勉強会#8](https://pelemay.connpass.com/event/264838/)でお話しする内容のポジショントークです.

https://pelemay.connpass.com/event/264838/

シリーズ

* [Elixirの未来トーク1-1「ElixirChip:FPGA or HW化されたElixir」研究開発を進めてわかったこと (Nxバックエンド勉強会#8)](https://qiita.com/zacky1972/items/6e1debd04798b01f36be)

関連記事

* [Elixir Chipの鼓動① 君はElixir CPU+リモートGPUの高速分散データ処理&エッジコンピューティングによる未来を見る by piacerex](https://qiita.com/piacerex/items/b99baebf284243fb6d6b)

「全世界のスマホGPUをクラスタリング」というのは,上記の関連記事にあるように @piacerex さんが言い出したことで,私のアイデアではありません.

元々はP

元記事を表示

個人開発Flutterアプリリリースまでの小話(iOS)

# はじめに
前回の記事にてFlutterを使って個人開発したアプリをリリースしたため軽くご紹介をさせていただきました。(https://qiita.com/Oyama-Kohei/items/7c4a6a7be226f0775bb2)
iOSのアプリリリースにはAppleの審査があり、基準がかなり厳しいため自分も苦労をしましたが今回の記事では、そんなiOSアプリリリースの苦労話やツールなどを紹介できればと思います!

# アプリができたら
まずはAppDevelopperProgramに参加しましょう!
これをしないとAppStoreに自分が作成したアプリを登録できない仕組みになっています。
こちらから → https://developer.apple.com/programs/
参加費用は年間で約100ドルです。。。高い。。
ただ自分は一通りリリースまでやってみることで得られた知識/経験は大きいものでした。
iOS開発をやっている方は一回でもいいのでやってみるといいかもしれません。

# AppStoreConnect
多くの方はTestFlightからアプリのテストを行なってい

元記事を表示

未経験からiOSエンジニアになって3ヶ月経ったので、振り返ってみたよ

## 概要
振り返ろうと思った理由は、大きく2つあります。
###### 1つ目は、単純に今まで何をしてきたのか言語化し思考整理をするためです。
自分的に、この3ヶ月は濃密すぎて時間が一瞬にして過ぎ去っていったので、改めてどんな行動をしていたのかを思い出すために振り返りを実施しました。

###### 2つ目は、前職で個人的に振り返りをしていなかったことを後悔したからです。
というのも、前職では全く振り返りをしておらず振り返らないということは、「振り返りをした時点で何がどこまでできて、逆に何ができないのか、また今後の自分の成長目標を適切に設定すべきか」を考えることを放棄していると気付き後悔したからです。

なお、今回は技術共有的なことは書きませんが、興味があればお読みいただきたいと思います。

## 成長したなと感じること
– 携わらせていただいているアプリ開発でそこそこ難易度が高い実装でも助言をもらいながら進めることができること。
– タスクを上手く捌き、無駄な時間を作らないようにできていること。
– アーキテクチャを意識したり、命名規則を意識してコードを書くことの重要性を理解しつつ

元記事を表示

getとsetって便利だねぇ

## 概要
プロジェクト内でAPIでUser型で取ってきた情報を取得してきて、ViewControllerのtableViewに表示するということをしました。ViewControllerに情報を反映させる前にUseCaseとPresenterにて、一時的にUser型の配列をバケツリレーのように参照してViewControllerに反映させました。その際に、getとsetを使ったので、復習を兼ねて調べようと思い記事にしてみました。

## 前提知識
getとsetを説明する前に、ストアドプロパティとコンピューテッドプロパティの違いについて知っておかなければなりません。
###### ストアドプロパティ
まず、ストアドプロパティとは、「変数や定数のように値を代入して保存するプロパティで、定義方法は、変数や定数と同様にvarキーワードやletキーワードを使用する。」と解説されています。
具体的に、コードに落とし込んでみると以下のようなもののことを指します。
“`StoredProperty.swift
/// ストアドプロパティ
var storedProperty = “StoredPr

元記事を表示

【SwiftUI】iOS16からTextFieldが複数行に対応してた

# はじめに
以前はTextFieldでの複数行の入力ができず、TextEditorを使用する必要がありました。
しかし、iOS16からTextFieldの複数行入力がサポートされたようなので使ってみました。

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State var text: String = “”
var body: some View {
TextField(“テキストフィールド”, text: $text, axis: .vertical)
.font(.system(size: 25))
.textFieldStyle(.roundedBorder)
.padding(.all)
}
}
“`
:::note info
**ポイント**
`axis`に`.vertical`を指定することで複数行入力ができるようになります。
:::

# 動画
![Simulator Screen Re

元記事を表示

RealityScan iOSアプリ版について

# はじめに
こちらはIwaken Lab. 主催のアドベントカレンダー5日目の記事になります。

https://iwakenlab.jp/

今回は、2022年の12月にリリースされたRealityScanについて紹介させてもらいます!

# RealityScanとは
Capturing Reality社が開発していた「RealityCapture」をスマホで体験できるようにしたアプリで、写真から3Dオブジェクトを生成する、フォトグラメトリーの技術をスマホで楽しむことができます。

現状(2022/12/04)、AppleStoreでのみアプリのダウンロードが可能です。

https://apps.apple.com/jp/app/realityscan/id1584832280

# RealityScanで作ったもの

詳細

– 撮影

元記事を表示

イニシャライザにBundleを渡せるView一覧(SwiftUI)

## はじめに

本記事は [SwiftUI Advent Calendar 2022](https://qiita.com/advent-calendar/2022/swiftui) の5日目の記事です。
昨日も私で [ForEachで値のほかにインデックスも使う方法(SwiftUI)](https://qiita.com/uhooi/items/180068e9b27e4b85fc9e) でした。

イニシャライザに `Bundle` を渡せるSwiftUIのViewを、一覧で紹介します。

私はSwift Packages内でリソースを管理することが多いので、 `bundle: .module` を渡せるViewの一覧があると便利だと思いました。

## 環境

– OS:macOS Ventura 13.0.1
– Xcode:14.1 (14B47b)
– Swift:5.7.1

## イニシャライザにBundleを渡せるView一覧

`Text` のように、イニシャライザに `Bundle` を渡せるViewを紹介します。
イニシャライザが複数ある場合、代表的なもののみ

元記事を表示

LocalizedStringKeyの簡単な説明(Swift)

## はじめに

本記事は [Swift Advent Calendar 2022](https://qiita.com/advent-calendar/2022/swift) の2日目の記事です。
昨日も私で [iOS 15.0+ではNSLocalizedStringよりString(localized:)を使おう(Swift)](https://qiita.com/uhooi/items/41ead3ad632dc911a4f9) でした。

`LocalizedStringKey` について簡単に説明します。

## 環境

– OS:macOS Ventura 13.0.1
– Xcode:14.1 (14B47b)
– Swift:5.7.1

## 「LocalizedStringKey」とは?

文字列ファイル内のエントリの検索に使うキーのことです。

https://developer.apple.com/documentation/swiftui/localizedstringkey

以下の文字列ファイルがある場合、 `LocalizedStringKey` に `

元記事を表示

Apple Developer Program のサイトで毎年行うデバイス削除の知識整理

# はじめに

Ad HocビルドのiOSアプリをiPhoneやiPadにインストールするには、事前にApple Developer ProgramにiPhoneやiPadのUDIDを登録しておく必要があります。
登録できるデバイスの台数には上限があり、登録済みデバイスを削除できるタイミングは年に一回しかありません。

今回はこの、年に一回のデバイス削除(※)について予備知識を整理します。年に一回しかやらないから、毎回忘れちゃいますしね。
※ 「デバイスリセット」「デバイスリストのリセット」などと呼ばれたりもするようです。

デバイス削除に関するApple公式の説明は下記に少しあります。
https://developer.apple.com/jp/support/account/

# 台数のカウントルール

登録できるデバイスの台数上限は、デバイスの種類毎に100台**ずつ**です。iPhoneとiPadは別枠でカウントされます。

登録済みのデバイスは、あとから無効化することもできますが、**無効化しても台数にカウントされ続けます。**
![図1.png](https://qii

元記事を表示

iOS 15.0+ではNSLocalizedStringよりString(localized:)を使おう(Swift)

## はじめに

本記事は [Swift Advent Calendar 2022](https://qiita.com/advent-calendar/2022/swift) の1日目の記事です。
遅くなりましたが、誰も埋めていなかったので埋めます。

ローカライズの文字列を取得する方法を紹介します。

## 環境

– OS:macOS Ventura 13.0.1
– Xcode:14.1 (14B47b)
– Swift:5.7.1

## 今まで: NSLocalizedStringを使う

ローカライズの文字列を取得するとき、今までは `NSLocalizedString(_:tableName:bundle:value:comment:)` を使っていました。

“`swift
func NSLocalizedString(
_ key: String,
tableName: String? = nil,
bundle: Bundle = Bundle.main,
value: String = “”,
comment: Stri

元記事を表示

「ゆめみ大技林 ’22」ができるまで

今年9月に開催された[技術書典13](https://techbookfest.org/event/tbf13)で、ゆめみの有志メンバーで「[ゆめみ大技林 ’22](https://techbookfest.org/product/9g7iLPz8dzmL2QrrbedbxG)」を出展しました。どのように取り組んだのかを改めて振り返ってみます。

なお、「ゆめみ大技林 ’22」は電子版と紙書籍版を無料で配布しました。電子版は現在も引き続き無料で配布しておりますので、ぜひご覧ください。

# 技術同人誌と技術書典

同人誌のなかでもとくに技術に特化した、技術同人誌と呼ばれるジャンルがあります。このジャンルが確立されたのは、2016年に始まった[技術書典](https://techbookfest.org)からです。技術書典以前にも技術系の同人誌はありましたが、技術同人誌に特化した同人誌即売会である技術書典の開催によってメジャーになりました。

技術書典の「よくある質問」ページの項目「[技術書とはなんですか?](https://techbookfest.zendesk.com/hc/ja/

元記事を表示

OTHERカテゴリの最新記事