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

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

【Flutter】UXの向上に向けて知っておいたら得すること

# 初めに
同期処理でプログラムが実行されるFlutterでは、非同期処理やUIのフレーム管理が非常に難しいし、UXを向上させるポイントにもなってきます。
そこで、今回はFuture.microtaskとWidgetsBinding.instance.addPostFrameCallbackの違いについて説明していきます。
これらのメソッドを適切に使用することで、より効率的で応答性の高いアプリケーションを構築できます。
本記事では、これらのメソッドの詳細な解説と、その使用例について説明します。

# Future.microtask

1. Future.microtaskとは?
Future.microtaskは、すぐに実行するべきタスクをスケジュールするためのメソッドです。Dartのイベントループ内で最も高い優先度を持つため、できるだけ早く実行されます。これは、非同期処理の中で短時間で完了するタスクを実行するのに適しています。

2. 基本的な使い方
Future.microtaskは、以下のように使用されます。

“`dart
Future.microtask(() {
/

元記事を表示

[Swift] ハミング距離の計算アプリ

# はじめに
こんにちは!
Swiftの学習を兼ねて、以前執筆した内容を、Swiftで実現してみようと思います。

今回は、[ハミング距離による類似画像の検出](https://qiita.com/yam_dev/items/e5f69b0c7b670aa498cb)にチャレンジです。

最初にお伝えしておくと、あまり実用性はありません!
こういうことができるんだ、という程度で見ていただけると幸いです!

# 要件
–  画像を2枚アップロードできる
–  比較ボタンをタップすると、画像のハミング距離と類似度を表示する

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

User Interfaceは`SwiftUI`を選択しました。

### 今回のディレクトリ構成
ContentViewのみ修正してます。

SwiftとSwiftUIでイラっとするデジタル時計を作る

# はじめに
こんにちは!
最近、改めてSwiftはできた方がいいな、と思い、少しずつ学習中です。

今回は、デジタル時計を作ります。
せっかくなので、色々な効果を適用して、イラっとする動きにしてみました。

# 要件
– デジタル時計を表示する
– 1秒おきに様々な効果を適用する

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

User Interfaceは`SwiftUI`を選択しました。

### 今回のディレクトリ構成
ContentViewのみ修正してます。

# 実装
“`swift:ContentView.swift
im

元記事を表示

【iOS】AndroidエンジニアがSwiftUIを触ってみた感想

普段Androidアプリを開発している私は、興味本位でiOS開発をしてみたくなり、Apple Developerのサイトに公開されているSwiftUIのチュートリアルを見ながら学習しました。

https://developer.apple.com/tutorials/swiftui/creating-and-combining-views

今回はSwiftUIを触ってみた軽い感想を書きます。

**結構楽しいですね。**

## 大まかな感想
Androidの**Jetpack Composeと記述の仕方が似ている**なというのが、第1印象でした。

どちらも宣言型のUIでしたね。

少ない行数である程度の機能を実装できるのは、かなり便利です。

## 良きかなポイント👍
ここでは私が特に良かったと感じたところについてお伝えします。

私の良きかなポイントはこちらです。
– マップの実装が簡単
– Swiftを使用しているため、言語の学習コストが低かった

### マップの実装が簡単
1. ビューファイルを用意した後に`Mapkit`をimport
2. 表示場所を設定するメソッ

元記事を表示

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愛好家と知識を共有し、彼らからのインサイトを得ます。
– **創造的

OTHERカテゴリの最新記事