- 0.0.1. ARKitでデバイスの位置を取得する
- 0.0.2. ARCoachingOverlayViewが表示されないときの対処法
- 0.0.3. SAP BTP SDK for iOS を利用した iOS アプリを開発
- 0.0.4. in3Dでリアルアバターを作成し、clusterにアップロードすーる
- 0.0.5. ObservableObjectをProtocolで差し替える
- 0.0.6. ARKitのフレームを解析するときの注意点
- 0.0.7. SwiftUI Tutorial の応用
- 0.0.8. 【iOS】Storyboardを使わずUIを作成するために必要なXCodeの初期設定
- 0.0.9. 【Flutter】IOSのモーダルアラートを日本語にLocalizeする方法
- 0.0.10. Flutterで動画編集ができるパッケージ、Tapiocaを作った話
- 0.0.11. iOSショートカットを使ってシフト管理アプリ「シフトボード」の予定をGoogleカレンダーに自動で同期させる
- 1. 概要
- 1.0.1. 画面の向きを固定する方法
- 1.0.2. iOSのLaunchScreen(スプラッシュ)が更新されない
- 1.0.3. building could produce unreliable results. This usually can be resolved by moving the target’s Headers build phase before Compile Sources. が Expoで出たときは
- 1.0.4. 音ゲー中の通知を自動で防ぐ簡単な方法
- 1.0.5. ライブラリを分解して組み合わせて、車輪の再発明をするーードキュメントスキャナ
- 1.0.6. Flutterでダークモード時に画像を切り替える【Dart】
- 1.0.7. エラーが出て、 CocoaPods をインストールできない。「You don’t have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.」
- 1.0.8. [Swift]Delegateについて 初級編
- 1.0.9. URLProtocolでURLSessionの通信をハンドリングする
ARKitでデバイスの位置を取得する
# デバイスの位置って重要
ARはユーザーとARコンテンツのインタラクションなので、ユーザーの視点の位置=デバイスの位置は大事です。# ARKitでデバイスの位置を取得できます
### デバイス位置取得
“`swift
func session(_ session: ARSession, didUpdate frame: ARFrame) {
let transform = frame.camera.transform.columns.3
let devicePosition = simd_float3(x: transform.x, y: transform.y, z: transform.z)
print(devicePosition)
}
“`>SIMD3
(0.0, 0.0, 0.0)
SIMD3(9.0870006e-10, 4.1317643e-09, -3.1889111e-09)
SIMD3(-2.9535964e-05, -4.5597553e-06, -9.115785e-06)
SIM
ARCoachingOverlayViewが表示されないときの対処法
# ちゃんと設定しているのに表示されない!
ARKitがWorldTrackingを確立するには、デバイスを動かして、ARKitに視点を与える必要があります。
トラッキングが確立するまで、ユーザに補助メッセージを表示するARCoachingOverlayView。
うまく表示されないケースがありましたので、対処法を書いておきます。
基本的な表示法は以下の記事で大丈夫です。
https:
SAP BTP SDK for iOS を利用した iOS アプリを開発
### 内容
SAP BTP SDK for iOS を利用して SAP のシステムと連携した iOS アプリを開発### SAP BTP SDK for iOS とは
– SAP が提供する iOS 向けの SDK
– この SDK は Swift で書かれている
– OData を利用して SAP のデータベースに接続可能
– この SDK を利用すると SAP ID を利用したログインを簡単に実装可能
– デザインは Apple と SAP のガイドラインに準拠
– タイムライン・グラフ等を利用可能https://developers.sap.com/topics/sap-btp-sdk-for-ios.html
### この SDK を利用するために必要なもの
1. XCode をインストールした Mac PC
1. SAP ID
1. SAP BTP SDK Assistant for iOS (Mac PC向けアプリ 以下: Assistant と表記)
1. iPad 向けアプリ SAP Fiori Mentor (コード集)https://develop
in3Dでリアルアバターを作成し、clusterにアップロードすーる
# はじめに
in3Dを使ってリアルアバターを作成し、clusterにアップロードしていくー# 開発環境
– iPhone 12 Pro
– in3D
– Windows 10 PC
– Unity 2019.4.22f1
– UniVRM 0.96.2
– cluster
– 3脚([DaiGoセット](https://youtu.be/9KuE6BS6Frk))|Ulanzi MT-24|Ulanzi VL49|koolehaoda|JOBY|こんな感じ|
|:–|:–|:–|:–|:–|
|ObservableObjectをProtocolで差し替える
# 概要
SwiftUIでのアプリ開発では、多くの場合はObservableObjectプロトコルを組み合わせるかと思います。
ObservableObjectプロトコル対応させたclassを作成し、ObservedObjectに設定して使います。以下はTopContentViewModelをObservableObjectとして作成しています。
“`swift
struct ContentView: View {
@ObservedObject var viewModel: TopContentViewModelvar body: some View {
Button {
viewModel.update()
} label: {
Text(viewModel.name)
}
}
}@MainActor
class TopContentViewModel: ObservableObject {
@Published var name: Str
ARKitのフレームを解析するときの注意点
ARKitのCapturedFrameをVisionなどで解析してARインタラクションを作る場合があるが、
この際**ARKitSessionDelegateで取得できるフレームとディスプレイに表示されているフレームの領域が違うことがある。(キャプチャされた一部分を表示していることがある)**例えば、iPhone11ではディスプレイが 414×896 だが、キャプチャしたフレームサイズは 1440×1920 である。
ディスプレイ内にフレーム縦幅は全て収まっているが、横は中心部しか収まっていない。

ディスプレイに表示されている領域でフレームをクロップするコード。
“`swift
func session(_ session: ARSession, didUpdate frame: AR
SwiftUI Tutorial の応用
## 内容
– SwiftUI Tutorial の応用## 開発環境
### ハードウエア
|項目||
|—|—|
|PC| MacBook Air(M1,2020) メモリ:16GB ストレージ:1TB |
|実機 | iPhoneSE(2nd Generation 128GB iOS 15.3.1) |
|PCと実機を接続する|[USB-C Digital AV Multiportアダプタ](https://www.apple.com/jp/shop/product/MUF82ZA/A/usb-c-digital-av-multiport%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF)|### ソフトウエア
|項目||
|—|—|
|言語|Swift 5.5.2|
|IDE|Xcode Ver 13.2.1|
|その他|Visual Studio Code Ver 1.64.2|### バージョン管理
[GitHub – 実際にコードを確認できます](https://github.com/tanakadaichi1989/Ha
【iOS】Storyboardを使わずUIを作成するために必要なXCodeの初期設定
# 目的
Storyboardを使わずにUIを作成する場合、必要となるXCodeの初期設定について説明# 流れ
①: プロジェクトを作成し、実行できることを確認(Storyboardあり)
②: Main.storyboard を削除
③: SceneDelegate.swift のコードを全てコメントアウト
④: MainInterface の設定を変更
⑤: info.plist の Storyboard Name を削除
⑥: ViewController のプログラム変更
⑦: 実行結果# ①: プロジェクトを作成し、実行できることを確認(Storyboardあり)
新規でプロジェクトを作成し、「▶︎」ボタンを押して実行可能なことを確認する# ②: Main.storyboard を削除
Main.storyboard上で右クリック → 「Delete」 → 「Move To Trash」# ③: SceneDelegate.swift のコードを全てコメントアウト
SceneDelegate.swift のコードを全て選択して、「Command + /
【Flutter】IOSのモーダルアラートを日本語にLocalizeする方法
# はじめに
Flutterで開発したIOSアプリを審査に提出した際、
モーダルアラートが日本語になっていないとのことでリジェクトされました。当方、IOSアプリの経験がなく結構ハマったため
同じようにハマられている方向けに解決策を記載します。# リジェクト内容の詳細
要約すると
> 日本語設定なのにフォトライブラリのモーダルアラートが英語になっています。フォトライブラリのモーダルアラートとはこのことです。
赤枠の部分を日本語にしなければいけないみたいですね。
原文
> Guideline 4.0 – Design
> We noticed an issue in your app that contributes to a lower-quality user exp
Flutterで動画編集ができるパッケージ、Tapiocaを作った話
Flutterで動画編集ができるパッケージ、Tapiocaを開発しているのですが、開発している中で知見がかなり多くあったので共有させていただきます!
Tapiocaでは↑上のような動画編集が↓下のようなコードでシンプルに書けます。
“`dart
import ‘package:tapioca/tapioca.dart’;
import ‘package:path_provider/path_provider.dart’;final tapiocaBalls = [
TapiocaBall.filter(Filters.pink),
TapiocaBall.imageOverlay(imageBitmap, 300, 5),
TapiocaBall.textOverlay(“Hello w
iOSショートカットを使ってシフト管理アプリ「シフトボード」の予定をGoogleカレンダーに自動で同期させる
概要
※この記事は、シフトなどの予定はシフトボードで管理していて、日常的な予定はGoogleカレンダーで管理している人向けの記事です。
シフトボードとは、リクルートが提供するシフト管理に特化したアプリで、iOS版、Android版がありそれぞれで使うことができます。
Android版に関しては使ったことがないのでここでは触れません。
シフトボードは、Googleカレンダーと連携出来ないですが、iOS標準カレンダーとは連携ができます。
なので、GoogleカレンダーのiCloudのシフトボードにチェックを入れて表示すれば、自分のiPhoneからのみシフトボードの予定をGoogleカレンダーから確認できます。
しかし、これだとPC版Googleカレンダーやカレンダーを共有している他の人からはシフトボードの予定が確認できないので若干不便です。
今回作成したiOSショートカットを使うことで、PC版Googleカレンダーやカレンダーを共有している他の人からでもシフトボードの予定を確認できるようになります。
そうするこ
画面の向きを固定する方法
# 開発環境
Swift version 5.5.2
Xcode Version 13.2.1
Interface SwiftUI# 問題
SwiftUIを使用しアプリを開発しているが、
画面を横向きに固定できず回転してしまう。# 結論
xcodeprojで修正する
Xcode13だと効かないことがあるようですが、以下の手順全てを試したところ横向きのみに固定できました。
# 手順
1, Navigator areaのプロジェクト名をクリックし、.xcodeprojを開く。
2, TARGETS>`General`の`Device Orientation`で固定したい項目にチェックを入れる。|項目|内容|
|-|-|
|.portrait|通常|
|.portraitUpsideDown|逆さ|
|.landscapeLeft|左向き|
|.landscapeRight|右向き|上記だけだと解決できなかったため以下の手順も試しました。
3, 手順2の`General`ではなく`Info`を開く。
4, `Supported interfa
iOSのLaunchScreen(スプラッシュ)が更新されない
スプラッシュ画像を変更しようとしたところ、Xcodeの`LaunchScreen.storyboard`上は更新が反映しているが、Runしたりipa配布すると古いスプラッシュ画像のままという現象に遭遇してドハマリしたので解決方法を共有します。
10年以上iOSアプリ開発してるけど、今まではハマった記憶がない。。### 解決方法
* xcassetsの外に、元の画像名と異なる名前で画像を作成する
* LaunchScreen.storyboardからは↑で作成した画像を参照する### 原因
iOSのSpringBoardのキャッシュのせいみたいです。
デバイスを再起動すれば反映されるけど、開発者はそれでよくてもエンドユーザーには頼めないよね。ということで上記の方法をとりました。### 参考
http://arsenkin.com/launch_screen_image_cache.html
building could produce unreliable results. This usually can be resolved by moving the target’s Headers build phase before Compile Sources. が Expoで出たときは
Expoで開発しているとたまにこんなエラーが出ることがあります。
主に `expo build:ios` を実行したときです。
“`
Cycle inside “YOUR_APPS”; building could produce unreliable results. This usually can be resolved by moving the target’s Headers build phase before Compile Sources.
“`裏ではNativeBuildが走っているのですが、この記事の通り、何らかのビルドサイクルが狂ったときに起きるようです。
https://qiita.com/keisukeYamagishi/items/60aa5cf9d00ac6cf3b86
今回私が遭遇したパターンだと、ビルド中、もしくはiOS Simulatorで実行中に(ローカルサーバーが動いている状態)マシンを再起動したときです。
## 解決方法
上記の記事ではXCodeを使った開発の場合です。我々のようにExpoで開発しているプロジェクトの場
音ゲー中の通知を自動で防ぐ簡単な方法
# はじめに
音ゲーや何かしらのアプリで楽しんでいる時に通知が来たらイラッとしたり邪魔だったりしますよね。
そんなストレスを簡単に解消できる設定をご紹介します。:::note warn
この記事はiOS限定です。
:::# ショートカットApp
iOSにはApple純正のショートカットというAppがあります。
[ショートカット on AppStore](https://apps.apple.com/jp/app/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88/id1462947752)
これを使えばワンタップで煩雑な一連の作業を自動で実行してくれたり、ある条件になると勝手にショートカットを実行してくれたり
ライブラリを分解して組み合わせて、車輪の再発明をするーードキュメントスキャナ
# 置かれた書類を検知して真っ直ぐにする機能を作ります
# 置かれた書類を自動検知して真っ直ぐにしたい
置かれた書類をカメラで撮影すると、斜めになることがあります。
それを自動で真っ直ぐに直してくれる機能があればいいですよね。で、iOSではVisionKitというフレームワークですでに実現できます。
![]()
.brightness == Brightness.dark
? ‘assets/images/image_dark.png’
: ‘assets/images/image_light.png’,
),
“``(bool変数) ? (trueのときの処理) : (falseのときの処理)`の構文を利用して、
ダークモード(Theme.of(context).brightness == Brightness.dark)のときは、image_dark.png、
ライトモード(Theme.of(context).brightness == Brightness.light)のときはimage_light.png
を表示させます。[Twitte
エラーが出て、 CocoaPods をインストールできない。「You don’t have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.」
## 1. やりたいことを確認する。
#### CocoaPods をインストールしたい。
> CocoaPodsとは、定番のCocoaの依存管理マネージャーです。アプリ開発で煩雑となりがちな外部ライブラリの管理を、簡単な記述とコマンドだけ支援するものです。
>https://dev.classmethod.jp/articles/cocoapods/
こちらの記事を参考に、 CocoaPods をインストールしようとしているところ。
## 2. 課題(エラーの状況、不明点、エラーログ)を確認する。
#### ⚠️ cocoapods をインストールできない。
“`bash
$ sudo gem install cocoapods
Password:
Fetching rexml-3.2.5.gem
Fetching colored2-3.1.2.gem
Fetching claide-1.1.0.gem
Fetching atomos-0.1.3.gem
Fetching ruby-macho-2.5.1.gem
Fetching nanaimo-0.3.0.ge
[Swift]Delegateについて 初級編
# この記事を書いた理由
Swiftを勉強し始めて、ずっと分かんなかったよ。
難しい。難しいよDelegateの理解。というわけで、もしかしたら他にも同じ方いらっしゃるのではないかと思いDelegateについて備忘録的に私の理解を記載したいと思います。
Delegateは色々なされ方がありますが、まずは初級として概念的に理解していただければと思います。
まだ勉強中なので間違えていましたらご指摘いただけますと幸いです。# 目次
[1.Delegateとは?](#Delegateとは?)
[2.どんな時にDelegateは必要なの?](#どんな時にDelegateは必要なの?)
[3.メンドクサイから処理の一部を、他にやってもらう](#メンドクサイから処理の一部を、他にやってもらう)
[4.エラーが出てしまう理由](#エラーが出てしまう理由)
[5.protocolを使用する](#protocolを使用する)
[6.まとめ](#まとめ)# Delegateとは?
結論から言うと、Delegateとは **「あるクラスから他のクラスに処理を任せる」** というデザインパターンのこ
URLProtocolでURLSessionの通信をハンドリングする
# 概要
例えば、通信などが起きたときに、そのログを残しておいたり、通信量を調べたい時があると思います。
そんな通信のハンドリングを行うために、URLProtocolを利用します。## 通信をURLProtocol継承クラスに処理させる
通信をハンドリングするには、ハンドリングするためのURLProtocol継承クラスを用意します。ここではMyURLProtocolという名前にしました。
URLProtocol継承クラスの実装に関しては後ほど説明します。URLProtocol継承クラスを用意したら、各種通信がURLProtocol継承クラスを通して行われるようにします。
### URLSession.sharedの場合
もしURLSession.sharedしか使われていないのであれば、`URLProtocol.registerClass` を使うことで全てのURLSession.sharedの通信がURLProtocol継承クラスを通してハンドリングされます。“`swift
URLProtocol.registerClass(MyURLProtocol.self)