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

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

SwiftとSwiftUIで上長ダッシュアプリを作る

# はじめに
こんにちは!
普段、開発作業を行なっていると、様々な問題が発生しますよね。

進捗がやや遅れ気味とかいまいち理解が追いつかないとか、それならまだ安心。
モチベーションの低下など、メンタル面に影響すると、大変なことになります。

特にメンタル面は早期に解決した方がいいので、少しでも早くアラートを上げるべき。
しかし、どのタイミングでアラートを上げるべきか、そして何を伝えるべきか、分からなかったりします。

そこで、今回は、ボタンを押すだけでアラートをGoogleチャットに送信するシンプルなiOSアプリを作成します。

少しでも解決の一助となれば幸いです。

# 要件
– 名前を設定できる
– Webhook URLを設定できる
– 名前とWebhook URLはローカルストレージに保存され、次回起動時に利用される

# 準備
プロジェクトの作成方法は、[Swift & SwiftUIでタロットカードアプリを作る](https://qiita.com/yam_dev/items/871b47c1065f570ff17a) を参照してください。

User Interfaceは

元記事を表示

【Flutter just_audio Error】(-1202) The certificate for this server is invalidを解決する

## なにこれ
– Flutterでjust_audioというパッケージを使って[Tebi Storage](https://tebi.io/)を使って保存していたmp3ファイルのURLセットして音楽を流そうとしたら`The certificate for this server is invalid.`みたいなエラーが出た
– **`LockCachingAudioSource`を使うと解決!**

## 🥀 出たエラー
– First one
~~~
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: (-1202) The certificate for this server is invalid.
#0 AudioPlayer._load (package:just_audio/just_audio.dart:870:9)

#1 AudioPlayer._setPlatformActive.setPlatform

元記事を表示

Compose Multiplatform を Xcode Cloud で使う際にハマったポイント

Xcode Cloud で Compose Multiplatform を使用した iOS アプリのビルドを行う際にハマったことを共有したいと思います。

:::note info
Xcode Cloud 環境
– Xcode 15.4
– macOS Sonoma 14.5
:::

# Java のインストールが必要 :coffee:
Gradle で Kotlin のコードをビルドするために Java が必要となりますが、mac には Java が入っていないのでインストールする必要があります。

Xcode Cloud で Git リポジトリをクローンした後に実行させたい処理を記載できる `ci_post_clone.sh` を使用して Java をインストールします。

“`zsh:ci_post_clone.sh
#!/bin/zsh

brew install openjdk@17
“`

ここらへんに関しては DroidKaigi2022 のリポジトリを参考にさせてもらいました 🙏

https://github.com/DroidKaigi/conference

元記事を表示

今あるサイトを手軽にアプリ化

## 既存のサイトをアプリのように見せたい、そんな時にPWAは強力
– すでにサイトはあるが、アプリはない。
– アプリを作るまでではないが、あったらあったでうれしい。

## PWAを使えば、ほぼ工数をかけずアプリ化することができる
– 前提条件
– HTTPSが使える。
– 簡単にお試ししたいのであれば、[Netlify](https://app.netlify.com)がおすすめ。
– 手順
1. マニフェストを作成。
– アプリの説明などを記述 。
1. サービスワーカーを作成。
– 既存のサイトをアプリのようにみせるだけであれば、最低限の実装で十分。
– 作りこむことで、オフラインでの使用・プッシュ通知などが行えるようになる。
1. アプリ化させたいページで、マニフェストとサービスワーカーを読み込む。
– サンプル
– https://github.com/skanno/sample_pwa

## アプリとしてインストールするには?
– ブラウザで該当ページを読み込み、「ホーム画面に追加」を行う。

元記事を表示

SwiftUI 画面遷移(NextView)の課題について

画面遷移にnextViewという変数を用意するパターンはよくある。
nextViewが悪さをしたので備忘録として残そうと考えた。

今回の課題は特定的であり、汎用性の高いものではない。

遷移画面が増えてきた時に、毎回navigationDestinationのModifierとViewで使用する変数(`@State`と`@Binding`の2つ以上)を用意するのは、冗長なのではないだろうか。

という考えに思い至り、簡単になるような処理を実装してみた。

**冗長だという考えに至った状態**
“`swift
// View
}
.navigationDestination(isPresented: $showExhibitView) {
ExhibitView(showExhibitView: $showExhibitView)
.navigationTitle(“”)
.navigationBarBackButtonHidden(true)
}
.navigationDestination(isPresented: $showArtDet

元記事を表示

日本初の英語Flutterイベント、FlutterNinjas Tokyo2024に参加してきました!

# はじめに

2024/6/13~2024/6/14にお台場で開催された「**FlutterNinjas Tokyo 2024**」に参加してきました。英語で実施されるFlutterイベントは**日本初**とのことで、かなり豪華なメンバーでした!

Flutterアプリ開発には欠かせない「Riverpod」、「Provider」などのライブラリの作者である「**Remi Rousselet**」さんも登壇されていました。

# セッションの感想
どのセッションも素晴らしかったですが、とても語りきれないので特に印象に残ったセッションについて感想を書きます!

:::note warn
拙い英語力で理解した内容なので間違っていたらすみません!
:::

## Riverpod 3.0, the preview
スピー

元記事を表示

iOSエンジニア求人から見る市場で求められているスキル 2024年

# 対象読者

* iOSエンジニア
* iOSエンジニア転職を考えている人
* 人事

# 求められているスキル

iOSDCスポンサーなどある程度積極的にiOS求人を出している会社から選出
MustやWantに上げられている経験やスキルを箇条書き

## Must

### iOSアプリ開発

– 3年以上のiOS開発・運用経験(Objective CおよびSwiftなどの利用)
– Swift・Objective-Cなどを利用したiOSアプリ開発経験(4年以上)
– Swiftを利用したiOSアプリの開発、運用経験
– iOSアプリエンジニアとして実務経験3年以上
– Swiftを利用したiOS向けネイティブアプリケーションの開発経験
– Swiftを利用したiOSアプリの開発経験
– SwiftによるiOS向けネイティブアプリケーションの設計、開発、および運用経験
– iOS向けネイティブアプリの開発経験
– iOSアプリの開発に携わる3年以上の実務経験
– iOS/iPadOS アプリの開発経験 (Swift)
– SwiftもしくはKotlinを用いたネイティブアプリ開発

元記事を表示

iOSアプリでのQR読み取りの記事メモ

# リンク

https://zenn.dev/jollyjoester/articles/a053d4e25523b6

https://qiita.com/KokumaruGarasu/items/e49030098d92f9eba40e

https://qiita.com/Ryu0118/items/4ee5c67558476c22318d

元記事を表示

学園アイドルマスターのバックグラウンド再生が凄い という話

## TL;DL
– ゲームアプリ「学園アイドルマスター」にはAndroid/iOS端末で楽曲のバックグラウンド再生機能がある
– Unity+CRIWareでバックグラウンド再生を行うのは障害がある
– バックグラウンド再生用にネイティブPluginを実装しないと多分実現できない、凄く手間がかかっている

## この記事の目的
学園アイドルマスターには楽曲のバックグラウンド再生機能があります。
この記事は、バックグラウンド再生の何が凄いのか、実装する上で何が障害になるかを考察する事を目的としています。

## 免責事項
筆者は株式会社バンダイナムコエンターテインメント及び株式会社QualiArtsとは無関係です。
また、筆者はスマートフォン用ゲームアプリ「学園アイドルマスター」の開発に一切関わっていません。
この記事では、「学園アイドルマスター」のゲーム内画面をスクリーンショットで引用しています。

## 学園アイドルマスターとは
https://gakuen.idolmaster-official.jp/

QualiArtsとバンダイナムコエンターテインメントが2024年5月16

元記事を表示

[WWDC24][概要] Platforms State of Union

WWDC24で発表される機能の概要を説明したビデオ「Platforms State of the Union」のまとめ記事になります。皆様のご参考になれば幸いです。

https://developer.apple.com/videos/play/wwdc2024/102/

# Apple Intelligence
– Apple Intelligenceは、Appleのプラットフォームに強力な生成モデルをもたらすパーソナル人工知能システム
– iOS、iPadOS、macOSに統合され、言語と画像の理解と生成、ユーザー操作の支援を行う強力な新機能を提供
– すべてはユーザーのパーソナルコンテキストの認識に基づいており、プライバシーを考慮して一から構築

![Apple Intelligence](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1170961/bf39ce49-7a27-c915-6262-9504b77

元記事を表示

[Swift] Spritekitでキャラクター表示を勉強してみた!

いろいろなアプリ制作ができるようになるため勉強していたところ、2Dゲーム制作などに使えるSpriteKitに興味が出てきたのでさっそく勉強してみました。

## SpriteKitとは?
SpriteKitは、Apple が提供する 図形、粒子、テキスト、画像、およびビデオを2次元で描画するための汎用フレームワークです。Metal を活用して高性能レンダリングを実現し、ゲームやその他のグラフィックを多用するアプリを簡単に作成できるシンプルなプログラミング インターフェイスを提供します。
iOS、macOS、tvOS、およびwatchOSでサポートされており、GameplayKitやSceneKitなどのフレームワークとうまく統合されています。

Swiftで開発をしている自分にとっては、学習コストが低くとりあえずシンプルなゲームを作るには十分な機能を備えているのでゲーム開発の初期学習には十分かと思います。

https://developer.apple.com/documentation/spritekit/

## ・参考
今回、勉強するにあたり下記の方の記事を参考にさせていただき

元記事を表示

CVPixelBufferからCMSampleBufferに変換

### 実現したかった内容
1. Flutterでリアルタイムに取得した画像をUint8形式へ変換
2. 画像ごとにMethodChannelでプラットフォーム(Swift)に送る
3. SwiftでUint8からCMSampleBufferに変換する

というような処理を作成していました。その際、Uint8からCVPixelBufferまでの変換は調べると沢山の例が出てきたのですが、CVPixelBufferをCMSampleBufferに変換する例は少なく、実装するのに苦労していました。
今回は自分で作ってみてひとまず動いた例を紹介します。

### 変換に必要な物

– CVPixelBuffer(用意済み)
– CMSampleTimingInfo
– CMVideoFormatDescription

### CMSampleTimingInfoを用意
画像の時間情報を生成します。単位はナノ秒を使用し、Dateを拡張してタイムスタンプを生成しています。
“`swift
let timeScale = CMTimeScale(NSEC_PER_SEC)
let pts = C

元記事を表示

iPadOS 18でのTabbarの仕様変更は結構骨が折れるやつかもしれない

[WWDC2024](https://developer.apple.com/jp/wwdc24/)が開催中ですね。
その発表の中で気になる点があったので速報と備忘録としてまとめてみます。

# TL; DR
– iPadOS 18ではタブが再設計され、タブ⇔サイドバーの切り替えが可能に
– タブバーは画面上部に移動した
– `SwiftUI.TabView` だけでなく、 `UITabBarController` を使っている場合も影響がある(6/12現在のiPad OS 18 betaの挙動)
– 「タブ」の前提が大きく変わりそうなので、がんばりましょう

# 環境
– Xcode 16 beta(Released in June 10, 2024)
– iPadOS 18 Simulator

# 前提: iPadOS 18 で再設計されたタブバー
– iPadOS 18において、タブバーは画面上部に表示されるようになった[^1]
– iOS 18では、従来通り画面下部のまま

![image.png](https://qiita-image-store.s3.ap-

元記事を表示

Swift & SwiftUIでタロットカードアプリを作る

# はじめに
Swiftの学習を兼ねて、簡単なタロットカードアプリを作ってみました。
今回は画像を使わず、文字だけで作ります。

Xcodeが必要なので、環境はmacOSです。
(私のMacが古いので、今と違うところがあるかもしれません)

# 要件
– 起動したら「カードを引く」ボタンを表示
– ボタンをタップしたらタロットカードをランダムに表示
– 「もう一度引く」ボタンで再度タロットカードをランダムに表示

# 準備
### Xcodeプロジェクトの作成
1. Xcodeを起動し、新しいプロジェクトを作成します

2. “App”テンプレートを選択し、”Next”をクリックします
Flutter案件待ち間の冒険:アプリ模倣チャレンジ – 第1章「時計」アプリ

## さあ、皆さん!最初の冒険の始まりです!

こんにちは、Flutterファンの皆さん!今回は、FlutterでiPhoneのデフォルト「時計」アプリを模倣するチャレンジの第一章をお届けします。どのように実装したか、皆さんと一緒に探求していきたいと思います!

## 進捗とスクリーンショット
まずは、iPhoneのデフォルト「時計」アプリの各機能のスクリーンショットをご覧ください。これらを参考にして、Flutterで再現していきます。

| 世界時計 | ストップウォッチ | タイマー | アラーム |
|:-:|:-:|:-:|:-:|
| Flutter案件待ち間の冒険:アプリ模倣チャレンジの始まり!

## はじめに
こんにちは、Flutterファンの皆さん!アプリ開発の魔法使いを目指して、今、私が取り組んでいるのはちょっと変わったチャレンジです。それは、既存のアプリをFlutterで再現してみるというもの。これは単なる時間つぶしではなく、Flutterの可能性を探求し、その過程を共有するための冒険です。どのようにアプリが構築されているかを探り、それを自分の手で再現してみる。面白そうじゃないですか?

## チャレンジの背景
新しいプロジェクトのオファーを心待ちにしながら、技術の磨きをかけるのに最適な方法として、この「アプリ模倣チャレンジ」を始めました。選んだアプリはiPhoneの定番から、皆さんがお勧めするアプリまで様々。Flutterでどこまで再現できるか試してみます。

## このチャレンジで期待すること
– **新しいトリックの発見**: 既存のアプリから新しいプログラミングの技術やアイディアを学び取ります。
– **コミュニティとの交流**: GitHubにコードをアップすることで、世界中のFlutter愛好家と知識を共有し、彼らからのインサイトを得ます。
– **創造的

PlaygroundにSwiftパッケージを追加したプロジェクトを爆速で作る

## はじめに

こんにちは。
最近、プロジェクトで新しいSwiftパッケージを試したいと思うことが増えてきました。
しかし、Xcodeを普段お使いの方には伝わるかと思うのですが、新しいパッケージを試すためだけの環境をすぐに用意するのは思ったよりも手間がかかりますよね。
とくにXcodeに慣れていない方(私もその一人です)にとっては、とりあえず試したい環境を作りたいだけなのに…と大変に感じると思います。

そこで、色々調べてみたのですが、ArenaというCLIツールを使うと簡単に作成できることがわかりました。
あまり知られていないかもしれないので、今回はこのArenaを使ってPlaygroundにSwiftパッケージを追加したプロジェクトを爆速で作る方法を紹介します!

:::note warn
本記事では以下の環境を想定しています

– macOS Sonoma 14.3
– Xcode 15.2
:::

## Arenaとは


https://github.com/finestructure/Arena

元記事を表示

コードの品質を向上!SwiftLintとSwiftFormatの導入と結果比較

お疲れ様です。Chamujiです。
今回は***SwiftLint***と***SwiftFormat***の2点について調べた内容を書きたいと思います。

そもそも***SwiftLint***と***SwiftFormat***ってなんだ?という方もいらっしゃいます。
それらを書く前にまずはコーディング規約というものについて説明をさせてください。

# 1. コーディング規約とは
– 複数人でプログラミングをする際、***全員で統一したソースコードを書くために定めるルール***です。
– プログラムの作り方はエンジニアごとに異なるため、他のエンジニアが書いたコードを理解するのは難しいです。
– その結果以下のような**問題**が起こります。
– **可読性低下により新規メンバーが理解できないため属人化・学習コストが高くなる**
– **保守性の低下**
– **潜在的なバグの原因**
– **チーム全体の生産性の低下**

これら問題を解決するために、**コーディング規約を設けることが重要**になります。

## 1-1.コーディング良い・悪い例

元記事を表示

Swift Package Managerでライブラリーを導入してみる

普段はAndroidエンジニアをしているのですが、Xcodeを久々に使用し、ライブラリーの導入について調べていたところ`Swift Package Manager`というのを知りました。

Xcodeにライブラリーを導入するために`CocoaPods`を使用していましたが、AndroidStudioと比べて、少しハードルがあると感じてました。
ですが`Swift Package Manager`では簡単にライブラリーを導入が可能になりました。

https://www.swift.org/documentation/package-manager/

# 導入方法
今回は導入方法のみです。

`PROJECT → Packge Dependencies → + `のアイコンをクリック

![スクリーンショット 2024-06-09 19.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/fc7003dc-ec66-8338-6ffa-89a8d342535d.png)

元記事を表示

cocoapods の pod install で `[!] Unable to find a specification for ‘ライブラリ名’` というエラーが出たら

## 落ち着いて

ライブラリ名のスペルミスや TYPO の可能性がないか、確認しましょう(私はこれが一番多い)。

## そうでなければ

そうでないことがハッキリしたら、以下を参照しましょう。

– [pod install で Unable to find a specification エラーがでたら #iOS – Qiita](https://qiita.com/amazedkoumei@github/items/fef8f9b04930927f4069)
– [cocoapodsで \[!\] Unable to find a specification for `ライブラリ名`のとき #iOS – Qiita](https://qiita.com/burakon/items/716174ee003ea48373ed)
– [ios – Unable to find a specification in CocoaPods – Stack Overflow](https://stackoverflow.com/questions/25913733/unable-to-fin

元記事を表示

OTHERカテゴリの最新記事