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

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

[備忘] iOSプッシュ通知用の.p12証明書を作る

# はじめに

iOSアプリのプッシュ通知を利用するのにp12証明書を使っているのですが、毎年更新しなきゃないくせに毎回手順を忘れてググっているので、備忘も兼ねてまとめ。

# 手順

## CSR(Certificate Signing Request; 証明書署名要求)の作成

### 1. Keychain Accessを起動
Launchpadから検索します。
image.png

### 2. 認証局に証明書を要求
上部のメニューバーから “認証局に証明書を要求” をクリックします。
image.png[WIP]SwiftUIでTabBarのUIをカスタムする

#
# コード全文
“`swift
import SwiftUI

struct ContentView: View {
@State var selectedIndex = 0

var body: some View {
ZStack(alignment: .bottom) {
TabView(selection: $selectedIndex) {
HomeView()
.tag(TabbarItem.home.rawValue)
FavoriteView()
.tag(TabbarItem.favorite.rawValue)
NewsView()
.tag(TabbarItem.news.rawValue)
ProfileView()

元記事を表示

電話リレーサービスのおしいところを改善した話

# 自己紹介
はじめて、デフエンジニアの会のけんたんです。初めてQiitaの記事を書きます。

# はじめに

聴覚障害者にとって電話は難しいもので、手話通訳者を通して相手に連絡するサービスが電話リレーサービスです。2021年7月に正式にサービス開始して2年たった今、小学校からの緊急電話を5回も受け取ったし、旅行中おすすめのお店を聞いたとき、その場で予約の電話をかけたりと、聴覚障害者が社会に入りやすくなりました。
しかし、デフエンジニアの私からしてユーザービリティが良くなく、使うたびにストレスになっていました。毎年アンケートでこうすれば使いやすくなるよと意見を書いているのですが、未だに改善できていないです。ならば非公式ながら私の方で改善しちゃおうとiPhoneのショートカットというアプリでやるという話です。

## 電話リレーサービスで気になったところ
公的サービスにも関わらず認知度が低く、このサービス知らない健聴者が電話を受けたときいたずら電話、迷惑電話と勘違いして切られてしまう、サービスを信用できないので受け付けないというようなこともあります。今回は技術的なことをあげたいので取り

元記事を表示

SwiftUIでtodoアプリをつくってみた

## はじめに

[アイスタイル Advent Calendar 2023](https://qiita.com/advent-calendar/2023/istyle)の13日目を担当させて頂きます、こたちゃんです:heart_eyes:
私は、iOSのアプリチームで新卒のエンジニア2年目になります👩‍💻
今回はSwiftUI[^1]でTODOアプリを作ってみました😌

[^1]: SwiftUIとは、iPhoneだけでなくiPadやMacOSX、Apple Watchなど、Apple製品のプラットフォームすべてに対応しているUIフレームワークです。

## 作成するアプリ

ファイル名

## 仕様・要件

– ToDoリスト画面
– 入力できるTextFieldがある
– 「追加」というボタンがある

元記事を表示

SwiftFormatとGitフックを用いてコード整形を行ってみる

# Adovent Calendarのご挨拶
Life is Tech Advent Calendar Day13 の記事です!
メンターのはるちろです!よろしくお願いします。

いつもはMinecraftのコースを主にやっていますが、今回は自分の趣味で触っているiosについての記事を紹介をしていきたいと思います。

# 初めに
みなさん、Swiftでプログラミングはされていますでしょうか?
Swiftは便利でiosから、macの開発、ましては、最近話題となったVRゴーグルVisionProにも使われています。
そんな`なうい`言語であるSwiftなのですが、複数人で開発した時にちょっとした改行のブレだったり、if文の表記の揺れなどが起きてしまいます。ですので、この記事を用いて複数人での開発に表記揺れを抑えてみてはいかがでしょうか?
また、今回はSwiftFormatをGitでCommitをした時、走らせるようにしました。その理由としては、XCodeでビルドを走らせないでコミットをしてプルリクを投げられた時に何も気づかずにマージされてしまい、コードを書いていない別の人がSwiftFor

元記事を表示

【SwiftUI】「読み込み中…」の「…」のみアニメーションさせる

こんにちは。[ymurao2](https://twitter.com/ymurao2)です!
「読み込み中…」のような文字列で、末尾の「…」のみアニメーションさせたいときがあると思います。
今回はこちらをご紹介します。

![Simulator Screen Recording – iPhone 15 Pro – 2023-12-12 at 20.50.33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529173/817b85a9-f5c7-1eb1-92c1-fe21dd35af6e.gif)

# 全体像
コードだけ見たい方、お忙しい方のためにまずは全体像です。
“`swift
struct AnimatedTextView: View {
@State private var dotCount = 0
var dots: String {
String(repeating: “.”, count: dotCount)
}

l

元記事を表示

【SwiftUI】ウィジェットのアニメーションを無効にしたい

# はじめに
iOS16から自動でウィジェットにアニメーションが付与されるようになりました。

![画面収録-2023-12-12-20.45.39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/55cbe5a1-6f6c-43d4-748b-7e62baa43c71.gif)

これは便利なこともありますが、用途によってはアニメーションを無くしたい時もあります。
ちょうど無くしたい場面に遭遇したので、やり方を記事にしておきます。

# サンプルの実装
“`swift
struct DemoWidgetEntryView : View {
var entry: Provider.Entry

var body: some View {
Text(entry.date.formatted(.dateTime.hour(.twoDigits(amPM: .omitted)).minute().second()))
}
}
“`

# 実装
“`s

元記事を表示

[Swift]TableViewスクロール時のパフォーマンスを高めて滑らかなUIを実現する

# 投稿の経緯
TableViewスクロール時にセルの高さが低くなったり、高くなったりする不具合に遭遇しました。
AutoLayoutの制約は問題なさそうで、heightForRowAtでも固定値を返していたので改めて調査しました。

調査の中で、TableViewへの理解が高まり、スクロール時のパフォーマンスを高めて滑らかなUIを実現する方法に辿り着いたので記事にします。

# 対処法
結論、`tableView(_:estimatedHeightForRowAt:)`を実装して、推定値を返すと改善できました。

“`.swift
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 100 // 推定値を設定する
}
“`

`heightForRowAt`と`estimatedHeightForRowAt`を組み合わせて使用することで、TableViewのパフォーマンスを高めて滑らかなUIを実現することができ

元記事を表示

Package.swiftを楽に書きたい

# はじめに

この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory) 12日目の記事です。

昨日は [@doihei](https://qiita.com/nsym__m) さんの「[iOSアプリ開発でDanger+SwiftLintをサクッと導入する](https://qiita.com/nsym__m/items/fa24d9eed123dc8f1a95)」でした。

Swift Packageを用いたマルチモジュール構成で開発を進める際に、Package.swiftの記述が手間だと感じたことはありませんか?

Package.swiftを少し編集するたびにXCodeがResolveを開始したり、typoがあるとエラーになるので地味に辛いです。
少しでも楽に書けるように自分なりに試してみた基本方針を実例とともに紹介できればと思います。

# Package.swift

今回は、1画面=1Targetとして全画面の実装を1つのPresentat

元記事を表示

どうして私がiOSエンジニアに。24卒文系凡骨大学生がメガベンチャーエンジニアになれた訳

私は就職活動を兼ねてからの希望である、第一希望のメガベンチャーのiOSエンジニアとして内定をいただき、就職活動を終えました。この就職活動の経験を元に、意識していたことや気づきなどをここに書きます。
私のように文系でもエンジニアとして働きたいという方や、文系理系に限らず将来はエンジニアとして働きたい方に向けて背中を押すことができればいいなと思っています。

# 筆者について
– 中堅大学の文系大学4年生(経済系)
– プログラミングサークルに所属していた。ここではHTML,CSS,Pythonについてざっくり学ぶ。活動内ではiOS開発には未着手(約2年間在籍)
– YouTubeやUdemy、ネットの記事などを参考にiOS開発をしてみる(約1年間)
– 2023年の3月に個人で開発したアプリをリリースし、これをポートフォリオとして就職活動を進める

# そもそもiOSエンジニアになりたいと思った理由
私がiOSエンジニアになりたいと思った理由は、単純にApple製品がカッコよくて大好きだからです。
最初にiOSに触れたのは、中学一年生に購入したiPod touchの5世代。アプリケーショ

元記事を表示

iOSアプリのアーキテクチャについて理解する

# なぜ、アーキテクチャに拘る必要があるのか

アーキテクチャとは、アプリを綺麗に開発・継続的に運用していくための設計。
このアーキテクチャに沿わない形で開発すると以下のような障害が発生してくることになる。

– ファイルの肥大化
– 1000行越えのViewControllerファイルができてしまったり、コードを追うことが困難に
– ロジックの煩雑化
– 新規機能を付け足していくうちに、状態管理がめちゃくちゃに
→機能の追加、改修が困難に。
– テストがしにくい
– 属人化が進み、プロジェクトの引き継ぎがし難い

etc…

# 設計一覧
### MVC
![スクリーンショット 2023-12-09 23.31.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778525/53bc1bb2-56ea-15d7-4f90-83b62cae46b6.png)

#### 処理流れ
1. `View`がユーザーの入力情報を受け付け、`Controller`にアクシ

元記事を表示

Flutter 環境別Crashlyticsの実装方法 Android/iOS

## この記事ではFLuttterの環境別Crashlyticsの設定方法を紹介します。

## 目次
“`
1. 環境別Firebaseプロジェクトの作成
2. main.dartの実装
3. iOSの設定
4. Androidの設定
“`
上記の順で紹介したいと思います。
まずCrashlyticsを使用するために[Firebase](https://firebase.google.com/?hl=ja)プロジェクトを作成します。URLをタップすると以下の画像のように「使ってみる」が表示されるのでタップ(ログイン、アカウントの作成を行なっていない方は作成して下さい。)

![スクリーンショット [0005-12-07](tel:0005-12-07) 11.36.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3637125/65a692a8-30df-76c8-6a7c-51ca21871784.png)

すると、以下の画像のような画面に遷移すると思うので、プロジェクトを追加→プロジ

元記事を表示

【SwiftUI】Widgetで表示しているViewか判定する

# はじめに
メインアプリとウィジェットアプリで共通のViewを使用している時に、メインアプリで表示しているのかウィジェットで表示しているのかをView側で知りたいといった場面がありました。

公式からそのような機能は提供されてなく、どうにか実現できないかと考えた結果今回の方法に辿り着いたので記事にしておきます。

# 実装
“`swift
import SwiftUI

struct IsWidgetEnvironmentKey: EnvironmentKey {
static var defaultValue: Bool {
Bundle.main.bundlePath.hasSuffix(“appex”)
}
}

extension EnvironmentValues {
var isWidget: Bool {
get { self[IsWidgetEnvironmentKey.self] }
set { self[IsWidgetEnvironmentKey.self] = newValue }

元記事を表示

【SwiftUI】力技でTo Be Continued作った

この記事は[DeNA 24 新卒 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/dena-24-newgrad)の11日目の記事です。

# はじめに
画像など使わず完全にSwiftUIのみでTo Be Continuedを再現します。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-12-11 at 18.55.40.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a56b0cfd-b9b6-9f8b-b5c2-fb81994db2d5.gif)

# 使用するフォント
それっぽいGoogleFontにあったのでそちらを使用します

https://fonts.goo

元記事を表示

Null合体演算子がSafariでエラーだった

### Safariでエラー
ViteでビルドしたWebアプリが検証機でエラーになった。
検証機は古めのiPad。動作が非常にもっさりしているが、倹約を良しとするこの企業で検証用デバイスの刷新など最も優先順位が低い。結果、なかなか新しくならない。

### エラーの原因は古いSafariが「Null合体演算子」に対応していないことだった。
古いiPadやiPhoneはiOS12までしか上がらないものがあるらしい。
検証機がまさしくそれだった。

### ほとんどのiOSでは問題とならない。

![スクリーンショット 2023-12-11 16.27.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587300/6da636a0-af93-82f3-b6d0-d83983aaf944.png)
上記の通り、Safariが14以降であれば対応している。
14未満のシェアは1%を切っているので、要件によっては対応する必要がないかもしれない。

### Null合体演算子

Null合体演算子は、左辺が

元記事を表示

カレンダー開発の怖い話: 週番号 #TimeTreeアドカレ

これは株式会社TimeTree Advent Calendar 2023の11日目の記事です。

https://qiita.com/advent-calendar/2023/timetree

TimeTreeのiOSエンジニア、@gonseeです。

TimeTreeはカレンダーシェアアプリなので、日々カレンダーにまつわる開発を行っています。カレンダーは我々の生活にあまりにも溶け込んだ存在なので、それをアプリで実装することはそれほど難しくないんじゃないか、と思うかもしれません。しかし実際に開発してみるとすごく複雑で、知っておかないと思わぬバグを仕込んでしまうことになります。そんな、エンジニア視点で「怖い」話をお届けしていきます。

前回は[「タイムゾーン」と「サマータイム」](https://qiita.com/gonsee/items/f26798f841efc338d899)をテーマにお届けしました。今回のテーマは「**週番号**」です。

同じ内容をTimeTreeラヂオでも話しているのでよかったら聞いてみてください。こちらの記事ではコードを交えてより技術的な話をしたいと思い

元記事を表示

【iOS】Kotlin MultiplatformでApp Clip対応アプリを2か月で作ったので振り返る

この記事は[レコチョク Advent Calendar 2023](https://qiita.com/advent-calendar/2023/recochoku)の11日目の記事となります。

## はじめに

こんにちは、永田です。
株式会社レコチョクでiOSアプリ開発をしています。

今年の私的音楽トピックは

– 周年ライブ開催により、もう15年も凛として時雨を追っていることに気付く
– NewJeans・LE SSERAFIMを皮切りにK-POPにハマる
– [USB DAC](https://www.fiio.jp/products/btr7/)デビューで逆に有線イヤホンに回帰する

の3本でした。

さて、レコチョクでは「新しい音楽体験の創出」に向けた取り組みを多数行っています。

その一環として、[P!TNE](https://pitne.jp)というアプリを開発しました。
対応商品に内蔵されたNFCタグをスキャンすることでアプリが起動し、商品に紐づく音源を再生できるアプリです。

![P!TNEの紹介画像](https://qiita-image-sto

元記事を表示

TCAでGithubリポジトリ検索アプリを作ってみよう②

# はじめに
[TCAでGithubリポジトリ検索アプリを作ってみよう①](https://qiita.com/takehilo/items/814319d4666fef402a41)の続きです。

https://qiita.com/takehilo/items/814319d4666fef402a41

前回はプロジェクト構成やAPIクライアントの設計の話まででTCAについては特に触れてませんでしたが、今回はいよいよTCAで作った画面の実装の解説をします。

ちなみに、この記事は [NewsPicks アドベントカレンダー 2023](https://qiita.com/advent-calendar/2023/newspicks) の11日目の記事です。
NewsPicksの他の技術記事も面白いので是非読んでみてください!

https://qiita.com/advent-calendar/2023/newspicks

# リポジトリリストの表示
最初に、リポジトリリストの表示機能について見ていきます。

リポジトリリスト表示機能は、リスト表示に関するロジック

元記事を表示

【SwiftUI】Viewをズームインしたり、ズームアウトしたりする(iOS17)

# はじめに
今回のサンプルは`@GestureState`という機能を使います。
初めて見たよって方は`@GestureState`の記事から見てください

https://qiita.com/SNQ-2001/items/df8c61ff82ffc7bdad33

# サンプルアプリ

# 実装
公式ドキュメントのコードです。
“`swift
import SwiftUI

struct ContentView: View {
@GestureState private var magnifyBy = 1.0

var magnification: some Gesture {
MagnifyGesture()
.updating($magnifyBy) {

元記事を表示

スライドパズルをつくろう(Swift)

![Xcode-15](https://img.shields.io/badge/Xcode-15-brightgreen) ![iOS-17](https://img.shields.io/badge/iOS-17-brightgreen)

## はじめに
こんな感じの任意の画像をつかった 3 × 3 のスライドパズルをつくります!

![puzzle](https://github.com/adventam10/testautolayoutapp/assets/34936885/17ec1ff3-4731-4433-9eef-c4c45f07229e)

今回は簡単そうなので UIKit でやります。

## ソース全体
説明とかいらない人はこちらをどうぞ。

ソース

“`swift
import UIKit

enum Direction {
case up, down, right, left
}

extension UIImage {

func trimming(rect: CGRe

元記事を表示

OTHERカテゴリの最新記事