iOS関連のことを調べてみた

iOS関連のことを調べてみた
目次

チーム開発を上手くすすめるために

## 概要

この記事では、チーム開発を上手くすすめるために必要なことを筆者の体験をベースに重要だと考える要素についてまとめています。

## 前提

筆者は iOS 開発者として働いていますが、仕事とは別で個人的にアプリ開発したり、チーム開発をしたりしています。その中で、仕事でない時のチーム開発を上手くすすめるために必要なことをまとめています。筆者はハッカソンへの出場や趣味での iOS アプリ開発で何回かチーム開発をしてきましたが、その中で上手くいかなかったことの原因を思い返すと、モチベーションの低下などほとんどが似たような要素に起因していると考えていますのでその対処法についてこの記事でまとめていきたいと思います。

## メンバー集め

まずは、チーム開発をするためにはメンバーが必要です。メンバーを集める際には、以下のような観点を考えると良いと思います。

1, メンバーの技術力・スキル
仲良しで集まって自由に開発するのも楽しくて良い部分も多くあるかと思います。ただ、リリースを目的にしたり、比較的難易度の高いものを開発目的にする場合は、自分にないスキルを持ったメンバーを集めた

元記事を表示

【SwiftUI】折れ線グラフを2つ表示する

# はじめに
SwiftUIのChartsで折れ線グラフを2つ表示させようとした時に苦戦したので記録しておきます。

# サンプルアプリ
![simulator_screenshot_DB3BA4F1-34EA-42AD-AAA1-773BD7E486DC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/25b897a7-8c8c-4672-ddc9-ad68fcad73e6.png)

# トラップ
以下のように`LineMark`に`foregroundStyle`をつけることで色を変えることができます。
“`swift
Chart {
ForEach(temperatures, id: \.day) { temperature in
LineMark(
x: .value(“day”, temperature.day),
y: .value(“max”, temperature.max)
)

元記事を表示

[Swift] APIを使用して郵便番号から住所を自動入力する(Storyboard版)

## はじめに
会員制のアプリケーションを開発する際、ユーザーに住所の入力を求めたい場合がありますよね。
ただ住所を都道府県から手入力しようとすると、文字数が非常に長いため、ユーザーにとっては手間となってしまいます。(ユーザーの離脱につながるリスクもある)
そこで多くのアプリケーションに導入されているのが、郵便番号からの住所自動入力です。
この技術をSwiftではどのように導入しているのか気になったため調査・実装してみました。
色々方法はあるようですが、今回はAPIを使用した方法で実装しています。

※本記事はStoryboardで実装しています。SwiftUI版は別途記事を作成します。

## 使用するAPI
以下のAPIを使用します。

https://zipaddress.net/

https://zipaddress.net/ こちらのURLの末尾に`?zipcode={郵便番号}`を追加すると、郵便番号に応じた住所を返してくれます。
例) https://api.zipaddress.net/?zipcode=1000001

## Storyboadに配置するパーツ

元記事を表示

iPhoneで人物を異なる背景に貼り付ける

# 動画合成/画像合成でさまざまなイメージを作れる

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/d7eef89a-c460-f39e-5393-07746238d30b.jpeg)
![matte.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/430608a9-522e-1f47-3ecd-8710fceb3129.jpeg)
![スクリーンショット 2024-01-11 6.24.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9d3472b2-0696-ee0a-9326-fb2d84d5ed23.png)

iPhoneやiPadのアプリで高速に実行できるので、

**・旅行イメージの提案
・広告画像の作成
・商品使用イメージ
・動画のクロマキー合成**

などに使える。

元記事を表示

App Store アイコンとリンク生成のための便利ツール:Apple Media Servicesの活用

アプリ開発者やウェブサイト運営者にとって、自社のアプリを効果的に宣伝することは極めて重要です。その一環として、App Storeのアイコンやリンクをウェブサイト上で上手く表示することが求められます。そこで役立つのが「Apple Media Services」の提供する特別なツールです。このツールは、公式のApp Storeのアイコンを作成し、アプリへの直接リンクを簡単に生成することを可能にします。

https://tools.applemediaservices.com/ja-jp/app-store

利用方法は非常にシンプルです。上記のウェブサイトにアクセスし、自分のアプリに関連する情報を入力するだけ。すると、様々なサイズや形式でApp Storeのアイコンが生成され、HTMLやURL形式のリンクも提供されます。これらのリソースを利用することで、ウェブサイト上でのアプリの見栄えを向上させ、より多くのダウンロードへと繋げることができるでしょう。

また、このツールは無料で利用可能であり、Appleの公式リソースを使用するため、信頼性も高いです。アプリのプロモーションにおいて、このよ

元記事を表示

【SwiftUI】iPhoneのロック画面で使用できるライトボタンを再現してみた

# はじめに
iPhone標準の動作を再現してみると勉強になるので、ロック画面で使用できるライトボタンを再現してみました。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-01-10 at 22.14.23.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/32dfa2b9-4793-e0e9-a002-739a7594a2e0.gif)

# 実装
“`swift
import SwiftUI
import AVFoundation

struct ContentView: View {
@GestureState private var isDetectingLongPress = false
@State private var isOn = false

var longPress: some Gesture {
LongPressGesture()

元記事を表示

[Swift文法] タプル

# はじめに
Swift の復習でまとめた記事になります。

# タプル型
**複数の型を1つの型として扱うもの**です。

## 定義の仕方
`変数名: (型名1, 型名2, … , 型名n)`のような書き方をします。(nは自然数)

“`swift
var tuple: (Int, String)
“`
タプル型の値を**タプル**と呼びます。上記の例だと、`tuple`がタプルです。
値を代入するには、`(型名1, 型名2, … , 型名n)` と同じように代入していきます。

“`swift
let tuple: (Int, String) = (1, “apple”)
print(tuple) // (1, “apple”)
“`

## 要素のアクセス
タプルの要素へのアクセスは主に3つの方法があります。
– インデックスによるアクセス
– 要素名によるアクセス
– 代入によるアクセス

### インデックスによるアクセス
各要素にインデックスでアクセスできます。

“`swift
let tuple: (Int, String) = (1, “apple

元記事を表示

【SwiftUI】カスタムタブを表示するのはoverlayではなくsafeAreaInsetの方がいい

# はじめに
カスタムタブを作成した際にoverlayを使って表示するとコンテンツに被ってしまうという問題に当たりました。
safeAreaInsetを使ったところ解決したので、記事にしておきます。

今回のサンプルアプリでは「ホーム」「通知」「プロフィール」のタブがある想定で進めます。
しかし、ちゃんと実装するのは「ホーム」だけで「通知」「プロフィール」にはTextを配置します。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-01-09 at 23.42.50.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/89a5a91c-ec1c-deb9-4182-802e0bde7ae1.gif)

# カスタムタブの実装
以下のようなシンプルなカスタムタブを作成しました。
![Simulator Screenshot – iPhone 15 – 2024-01-09 at 23.08.20.png](https://qi

元記事を表示

RealityKitのCustomMaterialでアウトラインを描くShader

# RealityKitのCustomMaterialでアウトラインを描くShader

RealityKitの[CustomMaterial](https://developer.apple.com/documentation/realitykit/custommaterial)でアウトラインを描くShaderを作ってみました
オマケでゲーミングアウトラインモードもあります

元記事を表示

iOS、Androidアプリでスクリーンショットを防ぐ

# iOS
そもそもスクリーンショットは端末の機能なのでデベロッパーの都合で禁止すべきではないし、完全に禁止というのはできない。スクリーンショットされたことを検知したりする機能もない。

画面の一部を隠すという機能もデベロッパーに提供されてはいない。

ただ、Appleが用意した`UITextField`の`isSecureTextEntry`をonにすると、そのテキストフィールドの部分だけはスクリーンショットに映らないという公式の機能がある。これをハックすると、画面の一部または全体をスクリーンショットに映らないようにすることもできる模様。

[Youtube – Prevent Screenshot – SwiftUI – Xcode 15](https://www.youtube.com/watch?v=viao1kTWBoY)
[github – yoxisem544/ScreenshotPreventing-iOS](https://github.com/yoxisem544/ScreenshotPreventing-iOS)

筆者自身も、スクリーンショットに映らないようにし

元記事を表示

【SwiftUI】パスワード入力欄で間違えたらテキストフィールドをブルブルさせたい(iOS17)

# はじめに
パスワードの入力欄でよくあるのが、間違ったパスワードを入力すると入力欄がシェイク(ブルブル)して間違っていることを知らせるといったUIです。
これをiOS17から登場した`keyframeAnimator`を使って実装してみたいと思います。

`keyframeAnimator`を使用せず、実装したい場合は以下の記事が参考になると思います。

https://www.objc.io/blog/2019/10/01/swiftui-shake-animation/

# サンプルアプリ
キーボードでreturnを押すと、テキストフィールドがシェイクします。
間違ったものを入力していたという想定です。
![Simulator Screen Recording – iPhone 15 – 2024-01-08 at 21.03.45.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d7808577-7aec-4f51-6f25-5b316ee54d4a.gif)

# 実装
“`

元記事を表示

【Flutter】Admob使用時にアプリ起動が稀に失敗する問題の対応

## 背景
FlutterにてiOSアプリの開発中、Admobの広告を配置した後にリリースモードでテスト、
もしくはTestFlightにて実機テストを実施した。

その結果、以下のように正常に起動しないケースが稀に発生することに気づいた。

![fail.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660544/c5cf5253-6a9f-56cb-679b-4d993b1e4c3a.gif)

## 原因
void main()内でAdmobインスタンスの初期化(MobileAds.instance.initialize())および、
runApp()を実行しているが、Admobインスタンスの初期化が非同期処理であるため、
初期化が完了する前に広告が描画されることが稀に起こっており、それが原因に見える。

そのため、Admobの初期化完了を待ってrunApp()を実行するように修正。

“`Dart
void main() async {
WidgetsFlutterBinding.ensu

元記事を表示

[Swift] DropDelegate で画面外に放したアイテムを検知する

# はじめに

今回は `SwiftUI` の `DropDelegate` に関してです。
特定の挙動に対してあまり情報がなかったので、メモ的な感じで残しておきます。

# 概要

## DropDelegate に関して

`SwiftUI` 上でドラッグ&ドロップを実装する場合、一番簡単なのは `List` の `editMode` を使うことです。

ただし、`List` では

– バージョンでの UI 差分(主に iOS15 未満で発生)
– `List` のセルによるデザイン制約
– 機能自体をカスタムができない

などの理由もあり、より細かい実装をしたい場合には、`DropDelegate` を使う状況もあると思います。

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

`DropDelegate` には、デフォルトで5つのメソッドが用意されています。

– `func validateDrop(info: DropInfo) -> Bool`
– `func performDrop(in

元記事を表示

FlutterのImagePickerで画像のキャッシュが残ってしまう問題

[株式会社Never](https://neverjp.com/)のshoheiです。

株式会社Neverは「NEVER STOP CREATE 作りつづけること」をビジョンに掲げ、理想を実現するためにプロダクトを作り続ける組織です。モバイルアプリケーションの受託開発、技術支援、コンサルティングを行っております。アプリ開発のご依頼や開発面でのお困りの際はお気楽にお問合せください。
https://neverjp.com/contact/

# 概要

Flutterでカメラや写真から画像を扱う際は、[image_picker](https://pub.dev/packages/image_picker)を使うかと思います。image_pickerはとても簡単に使えて便利なパッケージですが、画像のキャッシュが端末内に残ってしまい、ストレージを圧迫することがあったので、その対策をまとめます。

# `image_picker`で選択した画像の保存先

iOSとAndroidではそれぞれ異なります。

|OS |保存先 | 保存先の取得方法|
|—|—|—|
| iOS |

元記事を表示

xcodeからGit連携時に”Failed to load repository owners”エラーが出る

# やりたいこと
以下画像のエラーを解決する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645607/6d4b9d40-bf74-e1d4-791e-f3ff72ed42c8.png)

IOS開発時にXcodeからGithubへリモートリポジトリ作成などをしていた。
その際に発生したエラーの対応をしていく。

# 対応策
以下記事を参考にすると良い。
>https://zenn.dev/umas/articles/09dff47d5be757

元記事を表示

学校配布端末でYoutubeみる方法(2024年1月7日時点)

皆さん、学校から配布されてる端末(Chromebook、iPad等)でYoutubeを見たいと思ったこと、ありますよね?(問答無用)なので、今回は、そんな少年少女(お前が言うか)のために、Youtubeを見る方法を教えていきたいと思います!!
ちなみに、筆者の環境は以下のとおりです。

・ASUS Chromebook Flip C214MA
・ロイロWebフィルター
・ドメイン管理済み(Gmailなどはブロックされる。)

ではでは早速Youtubeに飛んでいきます!

①ブラウザを開く
②https://www.croxyproxy.com/_ja#google_vignette に飛ぶ
(ここの時点でプロキシ回避と言われブロックされてしまった勇者よ、、、南無南無)
③Youtubeのリンクをコピペし、「飛ぶ!」をクリック

そうすると、フランスのIPアドレスに飛ばされ、Youtubeが見れるようになります!
ここでの注意点は以下のとおりです!

・前述した通り、フランスに飛ばされるため、Youtubeの初期候補はフランスの動画
・Googleアカウントにはログインできない(メアド

元記事を表示

stability.aiのREST APIを使って簡単に画像生成アプリを作ってみた

# はじめに

前回「[Stable Diffusion APIを使って簡単に画像生成アプリを作ってみた](https://qiita.com/razuma/items/6af94f8d0edf67a0bffe)」と言う記事を書きましたが、今回は本家のstability.aiのREST APIを使って画像生成アプリをつくりました。

# 利用したサービス
Stable Diffusion本家のStability AI
https://platform.stability.ai/
画像1枚作成ごとにコストがかかる。最初に少しだけ無料でトークンをもらえます、その後は自分で追加していく方式。設定するパラメータによってかかるコストが違います。

# 今回使用したAPI
v1/generationのtext-to-image
https://platform.stability.ai/docs/api-reference#tag/v1generation

設定できる各パラメータについては以下

height: 画像の高さ、設定できる値は使用できるモデルによって決まっている
width: 画像の

元記事を表示

【SwiftUI】オーディオの出力変更を検知する

## 始めに
有線のイヤホンやairpodsなどが端末と接続されオーディオの出力先が変更したとき、これを検知することができますが、少し躓いたので書き留めておきます。

## 本題
“`swift
import SwiftUI
import AVFoundation

class AudioSessionManager: ObservableObject {
@Published var headphonesConnected: Bool = false

init() {
do {
try AVAudioSession.sharedInstance().setActive(true) // この処理がなくて躓いた
print(“AVAudioSession is now active”)
} catch {
print(“Failed to activate AVAudioSession. Error: \(error)”)
}
le

元記事を表示

【SwiftUI】メニュー内のボタンを押した後、メニューを閉じない

# はじめに
iOS16.4から`menuActionDismissBehavior`というメソッドが使用できるようになりました。
これはメニュー内のボタンを押した後、メニューを閉じないようにすることができます。

# 実装
“`diff_swift
import SwiftUI

struct ContentView: View {
@State private var searchText = “”

var body: some View {
Menu {
Button {
print(“heart”)
} label: {
Label(“heart”, systemImage: “heart.fill”)
}

Button {
print(“star”)
} label: {

元記事を表示

【SwiftUI】ボタンの長押ししている間は繰り返し処理を行う(iOS17)

# はじめに
言葉だけだとイメージしづらいと思うので具体例を出すと、キーボードのバックスペースボタンです。
バックスペースボタンを長押ししている間は文字を消し続けてくれます。

あれを自前で実装しようと思うと割と大変そうです。

iOS17から標準機能として提供され始めたので記事にしておきます。

# サンプルアプリ
![画面収録-2024-01-06-23.19.12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/51e92b74-4e90-3a35-ca70-8cd669052b9c.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
Button {
print(“りんご”)
} label: {
Text(“長押しで「りんご」と繰り返し出力する”)
}

元記事を表示

OTHERカテゴリの最新記事