iOS関連のことを調べてみた2021年12月01日

iOS関連のことを調べてみた2021年12月01日
目次

アプリ内バナーの実装・運用をできるだけ楽にする(Swift × microCMS)

# はじめに

アプリの規模が大きくなってくると、販促やお知らせ、チュートリアル導線などのためにアプリ内にバナーを表示したいケースが出てきます。

*(↑こういう画像バナーのイメージです)*

バナー表示に必要なのは「画像」「タップ時の遷移先URL」とシンプルですが、それなりの頻度でバナーを更新することを考えると運用ができるだけ楽になるようにホスティングしたい気持ちになってきます。

私がこれまで作っていた個人アプリでは、

* JSONファイルを適当なサーバーに置く
* Firebaseなどを利用してそれ専用のAPIを作る

などとしていましたが、更新が大変だったり、APIの管理が面倒だったりとモヤる点も多く、もっと良いソリューションがあるのではないかと感じていました。

この記事ではmicroCMSというサービスを利用して、バ

元記事を表示

Swift5 全予約語 (106語) の解説

ドキュメントから漏れている予約語もあるため、下記情報を統合してカウントしています。
* [The Swift Programming Language (Swift 5) Lexical Structure](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/doc/uid/TP40014097-CH30-ID413)
* [The Swift Programming Language (Swift 5) Summary of the Grammar](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/zzSummaryOfTheGrammar.html#//apple_ref/doc/uid/TP40014097-

元記事を表示

【iOS】アプリ内でシステムログを取得したい

この記事は[NTTコムウェア Advent Calendar 2021](https://qiita.com/advent-calendar/2021/nttcomware) 1日目の記事です。

初日からかなりニッチな内容ですが、iOSでシステムログを取得する方法について考えます。

# ベータテストあるある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318187/2efdcafe-4a23-33c1-0ac3-cc4992fbdcb6.png)

そんなこと言われても解析のしようがない
せめてログをください…

という光景を社内で見たことはないでしょうか。

実際アプリをリリースする前にシステムログを取得してもらうのは容易ではないため、
ログをもらうのを諦めているケースは多いと思います。

# 今までのログ取得方法

iOSでシステムログを確認する方法としては

– Macにつないで、XCode経由で取得
– Macにつないで、Console.app経由で取得
– 端末の電

元記事を表示

UIViewControllerの一部だけをSwiftUIで構築した話

# 前書き

[ACCESS Advent Calender](https://qiita.com/advent-calendar/2021/access) 今年の1日目は@tonionagauzziです。

1月に娘が生まれて、コロナ禍での育児1年生でしたが、会社や周囲の手厚いサポートによって無事に過ごせました。この場を借りて、1年間お世話になった皆さんにお礼を申し上げます。

そしてようやく念願叶い、両家に顔見せに行った帰りの飛行機で、明後日投稿日じゃん!って気づいてスマホで記事書いてます。便利な時代になりましたね!

# やったこと

UIKitで書かれた歴史の長いiOSアプリがあります。最近、その Deployment Target が13.0に上がったので、**UIViewControllerの一部だけ**にSwiftUIを導入しました。

また、SwiftUIで、URLは青下線表示で押したらSafariが開くようにしました。

![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

SceneKitでサイコロを振る(Swift)

![Xcode-13.0](https://img.shields.io/badge/Xcode-13.0-brightgreen) ![Swift-5.5](https://img.shields.io/badge/Swift-5.5-brightgreen) ![iOS-15.0](https://img.shields.io/badge/iOS-15.0-brightgreen)

## はじめに
iOS アプリをつくっているとだれしも一度はサイコロを振りたい!と思ったことがあるはずです:sunglasses:今回は `SceneKit` を使ってサイコロを振ってみます。

完成形はこんな感じです。

元記事を表示

iOSのアップデートをブロックするには

#iOSのOTAアップデートをブロックする方法

##①サーバーの通信をブロックする
以下のドメインをルーターなどのブラックリストに登録して通信出来ないようにしてください。
[Appleのサイト](https://support.apple.com/ja-jp/HT210060)に記載されているドメインです。

“`
appldnld.apple.com
gg.apple.com
mesu.apple.com
updates-http.cdn-apple.com
updates.cdn-apple.com
xp.apple.com
“`

###•メリット
①通信をブロックする事で強制的に解決することができる。

###•デメリット
①Appleの一部のサービス(iCloud等)で不具合が起こる可能性がある。

>##② TVOSのプロファイルを使用する(現在は不可)
>これが一番簡単で確実な方法です。
以下のサイトからプロファイルをダウンロードしてください。

>[Download Beta Profiles](https://betaprofiles.com/tvos/)

元記事を表示

iOSで位置情報やモーションを使うのときの権限要求あれこれ

仕事でiOSアプリを作っていて、妙なところでハマってしまったので備忘録までに。

* 位置情報やモーション フィットネスを使うための事前設定
* 任意のタイミングで許諾を求める処理
* アプリを開いたときの権限不足チェック

# 位置情報やモーション フィットネスを使うための事前設定
アプリを作成したら、info.plistに位置情報とモーションの項目を追加します
![スクリーンショット 2021-11-30 7.25.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/9abfc324-4fdc-ce2d-7b56-bbf99f643411.png)

Targets > Signing&Capabilitiesの左上の「+Capability」からBackgroundModesを選択すると項目が追加されます
![スクリーンショット 2021-11-30 7.25.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

Xcode13から出るConditional downcast from ‘String?’ to ‘String’ does nothingについて

![Xcode-13.0](https://img.shields.io/badge/Xcode-13.0-brightgreen) ![Swift-5.5](https://img.shields.io/badge/Swift-5.5-brightgreen) ![iOS-15.0](https://img.shields.io/badge/iOS-15.0-brightgreen)

## はじめに
Xcode13 で以下のような不思議な警告が出るようになってたので共有しときます(原因わかる方いたらぜひ教えて下さい:bow:)。

`Conditional downcast from ‘String?’ to ‘String’ does nothing`

hoge

## 現象
やっていることは `hoge?.first

元記事を表示

【Xcode】ファイルを作成する時のSwift FileとCocoa Touch Classの違い

初投稿です。
基本備忘録ですが、同じ疑問を持った方の為になれば幸いです。

今回はXcodeでファイルを作成する時に選択する「Swift File」と「Cocoa Touch Class」の違いをまとめてみました。

結論から申しますと、ファイル作成時にテンプレートがあるかないかだけの違いみたいです。
まず「Swift File」から見ていきましょう。

## Swift File
「Swift File」を作成すると下記のような記述がされたファイルが作成されます。
 ※コメント部分は省略しています。

“`swift
import Foundation
“`

上記のようにこの一行だけ記述されたファイルが作成されます。

## 「Cocoa Touch Class」

次に「Cocoa Touch Class」はどうでしょう。
「Cocoa Touch Class」を作成する場合は作成時にSub class(継承するクラス)を指定する必要があります。
ここではUITableViewControllerを指定しています。
 ※ここでもコメント部分は省略しています。

“`Swif

元記事を表示

【Swift】タイトルのフォントと文字サイズと文字色を同時指定する方法

SwiftでNavigationBarのタイトルのフォントと文字サイズと文字色を同時指定する方法。

同時指定する方法を解説している記事がなかったのでメモとして残しておきます。

## 実装コード

“`swift
self.title = “タイトル”
self.navigationController?.navigationBar.titleTextAttributes = [
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 40),
.foregroundColor: UIColor.white
]
“`
## 参考
https://developer.apple.com/documentation/uikit/uinavigationbar/1624953-titletextattributes

元記事を表示

iPhoneで写真を撮ったら自動的にDropboxに保存されるようにする2 #ヘルスケア #医療

以前こちらの記事でIFTTTを使って、iPhoneの背面カメラで撮った写真が自動的にDropboxで指定したフォルダに保存される仕組みを紹介しました。

https://qiita.com/naokiuc/items/e9850fcb0a93ec1f982e

その後、@tishiyamaさんの[この記事](https://qiita.com/tishiyama/items/62b8e5530414c1853e99)を読みiOSショートカットアプリを使えば簡単に同じ仕組みを実装できることを知り、実装して現場で試したので新たに記事にしようと思います。

今回はじめてiOSショートカットアプを知りましたが、こちらの記事によくまとまっています。

https://time-space.kddi.com/mobile/20210628/3134

#背景
私は訪問診療に携わる医師です。
訪問診療では通院困難な方の家に訪問して診療を行います。
クラウド型のカルテを使用していて、診察の際はプリントアウトしたカルテを持って行き現地で診察しながらカルテを書いて、診察終了後にカルテの写真を撮ってクリニ

元記事を表示

required 修飾子とは

# 用途

– サブクラスに、イニシャライザのオーバーライドを強制するとき
– プロトコルのイニシャライザをオーバーライドするとき

また、

required 修飾子は、イニシャライザ init() でのみ使用可能。

インスタンスメソッドでは使用不可。

# サブクラスに、イニシャライザのオーバーライドを強制する時

## 例:

“`swift
class Animal {
let name: String

//
// A(サブクラスにイニシャライザのオーバーライドを強制するときは、required 修飾子を付ける)
//
required init() {
self.name = “unknown”
}
}

class Cat: Animal {
//
// A をオーバーライド(override 修飾子ではなく、required 修飾子を使うことに注意)
//
required init() {
super.init()
}
}
“`

##

元記事を表示

【Swift】async/awaitはどのようにして動いているのかLLVMのレベルで調べてみる

Swift 5.5によって導入されたConcurrencyのうちの、async/awaitがどのように動いているのか調べてみました。

### きっかけ

私はもともとasync/awaitなどはJavascriptで使っていたので、Swiftに導入されると聞いたときも「ようやく便利になるね」ぐらいにしか思っていなかったのですが、iOSDC2021のこの発表を見たときにたまげました。

特に驚いたのが、`await`式がサスペンションポイント(Suspension point)となり、実行が一時保留されるが、その間もスレッドは別の処理に使用されることや、再開されたときは別のスレッドに回ることもあり得るし、同じスレッドの場合もありうる、という話でした。

しかも、並列する複数のタスク間でのコンテキストスイッチは発生せず、呼び出しのコストのみで実現できるので、並列処理を軽量に実行できるそうです。

「なんでこんなことが実現できるの!?」というのが今回興味を持ったきっかけでした。

私はもともと、Mug

元記事を表示

【Swift】Nearby Interactionを用いたiPhone間の距離と方向を取得するアプリ

# はじめに
「iPhoneとiPhone間」と「AppleWatchとiPhone間」の距離と方向をリアルタイムで取得するアプリを作成しましたので、実装方法を説明したいと思います。
下記のgifは、iPhoneを固定しApple Watchを対角線3mの星形をなぞった際の取得データを、別途可視化したものです。
ソースコードは、こちらの[iPhoneとiPhone間アプリ](https://github.com/MIZUNO-CORPORATION/NearbyInteractionByMultipeerConnectivity)と[AppleWatchとiPhone間アプリ](https://github.com/MIZUNO-CORPORATION/NearbyInteractionByCoreBluetooth)の2種類になります。
使用するフレームワークは[Nearby Interaction](https://developer.apple.com/documentation/nearbyinteraction)で、室内でデバイス間30m程度を数cmの精度で50Hzでデータを

元記事を表示

Yahooハッカソンから本開発し、iOSアプリをリリースするまでの軌跡と、エンジニア人生について考えたこと。

**@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。

> – [秘密計算エンジニアを始めて1年が経った。](https://qiita.com/kenmaro/items/416657efca2ff296169b)
– [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)

## 概要と注意
今回は、秘密計算の話ではなく、個人的に友達と取り組んだプロダクト開発について
ポエム的に書いていきたいと思います。

**注意**
**書いているうちにこの記事は完全にポエム化しました。**
**特に技術のことに関しては書かないのでご注意ください。**

## 参加したヤフーハッカソンについて

今年参加したイベントはいくつかありましたが、
その中で二つほど記事として公開しました。

– [秘密計算コンペIDASH2021の出場レポート速報!!Team EAGLYS(Kenmaro

元記事を表示

iOS 15でSwiftUIビューを定期的にリロードします

iOS 15のSwiftUI 3では、新しいビュー構造`TimeLineView`があります。このビュータイプを使って、(あなたが定義した)一定期間ごとにビューをリロードすることができます。

例えば、アニメーションのロード画面を作ることができます。

![ezgif-2-554a1eb56133.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/f2be0d9e-a512-e20b-67ea-4f33d580f6a5.gif)

## Thoughts

SwiftUIビューはデータの変更時にだけリロードされるのがベストだと思います。

TimelineViewは、既定のリロード時間が設定されたビューを表示するように設計されているのではないかと思います(例えば、WidgetKitは所定のスケジュールに従ってリロードされます)

## 実装

“`swift
public init(_ schedule: Schedule, @ViewBuilder content: @escaping (

元記事を表示

事業フェーズごとにiOS/Androidアプリ開発で気をつけるべき観点

色々な事業フェーズに携わる中で、事業フェーズ別のアプリ開発に関する観点に対して思う所があったので個人的な見解をまとめます。

# 前段
事業状況は0→1、1→10、10→100などの局面によって変化していくものです。
その事業の局面ごとに最適なアプリの設計や重視すべき観点というのは変化していくのではないかと私は思います。
もちろん、アプリの特性と組織状況によっても最適なアプリの設計は変わるものですが、そこはサブ要因として今回は踏み込まずに思うところを記載していこうと思います。

# 0→1フェーズ
0→1フェーズは仮説検証を繰り返し行い、ビジネスが成立するコアサイクルを見つけ出すフェーズです。
この局面ではアプリに必要とされる機能やUXもどんどん変化するため、そもそもネイティブアプリとして作るべきかどうかも含めて検討すべきフェーズです。
可能であれば、NoCodeによるアプリ開発で簡素な仮説検証を繰り返して一定の方向性を見つけてからアプリ開発を開始すべきでしょう。
この段階で実際にアプリを開発する場合、仕様変更が頻発するとともに0→1に興味を持つ少数のエンジニアでどんどん開発を進めてい

元記事を表示

iOSアプリのユニバーサルリンクの設定方法

# はじめに
調べると古い情報が出てきがちなのでまとめました
iOS14,iOS15時代のものです

# 目次
1. [ユニバーサルリンクにしたいURLを決める](#ユニバーサルリンクにしたいurlを決める)
1. [apple-app-site-associationを作成する](#apple-app-site-associationを作成する)
1. [apple-app-site-associationを置く](#apple-app-site-associationを置く)
1. [アプリ側の設定](#アプリ側の設定)
1. [確認](#確認)

# ユニバーサルリンクにしたいURLを決める

↓これにします
`https://sampleApp/app`

# apple-app-site-associationを作成する
apple-app-site-associationを**自分**で作成します
自分で作らないと大変なことになります

“`
{
“applinks”: {
“apps”: [],
“details”: [

元記事を表示

無料でプロトタイプのiOS動画再生アプリを作る話(2021)

## 概要

iOSアプリ(iPhone等)の開発についていろいろ調べたところ、仲間内の配布であれ、プロトタイプであれ、Appleさん(AppStore)経由でないとまず無理な状況となり、導入障壁となっていると感じております。

開発テストができる`TestFlight`を使っても、テスト向け配布にはAppleさんの審査が必要だったり、iOSアプリ開発に慣れていなければ開発者プログラムの加入や審査手続き等で時間とお金を持っていかれます。また、サイドローディング等も耳にしますが、真っ当なソフトハウスであれば、ちゃんとお金を払って開発する事になります。

そんな状況の中、iOSで手軽にプロトタイプを配布する事は難しいのか、HelloWorldから一歩踏み込んで模索してみました。

:::note warn
私自身アプリ開発の専門家ではないので、間違いはご指摘いただければ幸いです。
また、私がWEB系開発者である事もあり、基本的にJavaScript(NodeJS)ベースの説明は省略されていますので前提知識がないと難しいかもしれません。
:::

## 開発・配布手法の比較

ざっと探してみ

元記事を表示

【SwiftUI】toolbar Modifierの表示位置(iOS)

SwiftUIのtoolbarの表示位置です。
全12種で細かい事を言う並びに優先順があるので全部違います。

#サンプルコード
“`swift
NavigationView{
Text(“Hello, World!”)
.toolbar{
ToolbarItem(placement: .navigationBarLeading){
Text(“leading”)
}
}
}
}
“`

NavigationView内のViewに.toolbar Modifierをつけます。
中にはToolbarItemを使って配置します。
引数placementにToolbarItemPlacementで位置の指定を行います。

#対応表

| ToolbarItemPlacement(左から順) | 表示位置| 備考 |
|:–|:-:|:-:|
| .navigationBarLeading | 左上(leading) | |
| .cancellatio

元記事を表示

OTHERカテゴリの最新記事