iOS関連のことを調べてみた2020年04月16日

iOS関連のことを調べてみた2020年04月16日

AWS Amplify iOS を試してみる

[AWS Amplify Androidを試したい方はこちらを参照ください](https://qiita.com/ksato2032/items/008c4605eb9bebd841aa)

# はじめに
AWS Amplify iOS を[Getting Started](https://aws-amplify.github.io/docs/sdk/ios/start)にしたがって試してみる。
以降の各章はGetting Startedに合わせている。

# Prerequisites

## Amplify CLIのインストールと設定

### node.js のインストール

バージョン 12.14.0
https://nodejs.org/en/

### Amplify CLI のインストール
“`shell
npm install -g @aws-amplify/cli
“`

### Amplify CLI の設定
“`shell
amplify configure
“`

ブラウザにAWSログイン画面が出るため、ログインしておく。
入力を続けると、IAM ユーザ

元記事を表示

【ReactNative】react-native-mapsを導入する

# はじめに
ReactNativeでアプリを作る過程で地図を表示させたくなったので、`react-native-maps`を導入しました。
インストール自体は簡単ですが、`GoogleMap`を使う場合はちょっとだけ手間がかかったので備忘録として。

# 環境

“`
“react-native”: “0.61.5”,
“react-native-maps”: “^0.26.1”,
“`

# 料金
GoogleMapは使用量によって値段が変動します。
だいたいアプリにマップを表示させるとなると、`Dynamic Maps`を使うと思いますが、2020年4月現在は下記のような料金となっています。

参考:[https://cloud.google.com/maps-platform/pricing?hl=ja](https://cloud.google.com/maps-platform/pricing?hl=ja)

スクリーンショット 2020-04-15 22.15.14.pngMacにReact Nativeの環境を構築する手順

`2020-04-15`時点の手順です。

# `Xcode`をインストールする

`App Store`より検索してインストールする。

# `Xcode`のライセンスをAcceptする

“` bash
$ sudo xcodebuild -license accept
“`

# `Android Studio`をインストールする
[Android Studio](https://developer.android.com/studio?hl=ja) からダウンロードしてインストールする。

# `Android SDK`をインストールする

`Android Studio`を起動する。起動時に自動でインストールされる。

# `Node.js`をインストールする

ここでは`nvm`を利用してインストールする。

## `nvm`のインストール

“` bash
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
“`

## ログイン時に`nvm

元記事を表示

共創プラットフォームアプリ「Blabo!」をFlutterでフルリプレースしました

# はじめに
こんにちは、Blabo!でモバイルエンジニアをしている@youmeeeです。
今回は、弊社の共創プラットフォームサービスである「Blabo!」のiOS/AndroidアプリをFlutterにてリプレースしたので技術的な話や、リプレースを通じての所感などを書き記していこうと思います。

Blabo!のFlutterリプレース版は各OSこちらからインストールできます。

iOS版:
https://apps.apple.com/jp/app/1174269704
Android版:
https://play.google.com/store/apps/details?id=bo.bla.app&hl=ja

# Flutterとは

FlutterとはGoogleが提供するクロスプラットフォームSDKです。
2018年にStableリリースが発表され、最近サービスでの導入事例もじわじわと増えてきている印象です。
2019年にはWebサポートも発表され、今最も注目されているクロスプラットフォームSDKと言っても過言ではないと思います。

[Flutter公式ページ](https

元記事を表示

iPadOS 13.4 Pointer InteractionsでAppleロゴのポインタを出す

iPadOS 13.4からマウスやトラックパッドのサポートが強化されました。
ポインタは形をUIBezierPathで自由に変えられるようです。

![File from iOS (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8920/e06bd8cf-c746-098a-4384-6487201de144.gif)

ポインタが白くなりますが、実装の有無によらず背景色によって自動で変化します。

[Pointers (iPadOS) – Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/pointers/) にもある通り、使いすぎてユーザーの注意をそらしたり、意味のない表現にならないように注意しましょう。

## 最小実装
Appleロゴのパスは [Swift stroke animations](https://blog.

元記事を表示

最小実装 iPadOS 13.4 Pointer Interactions

iPadOS 13.4からマウスやトラックパッドのサポートが強化されました。
一部のUIKitは自動で対応してくれますが、その他は自分で実装可能です。
意外と簡単だったので最小実装をしてみようと思います。

![File from iOS.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8920/f38b8d9f-bd23-ba0e-5f16-74b42bf88faa.gif)

## 最小実装
“`swift
import UIKit

class ViewController: UIViewController {

@IBOutlet weak var targetView: UIView!

override func viewDidLoad() {
super.viewDidLoad()
let pointerInteraction = UIPointerInteraction(delegate: self)
targetView

元記事を表示

アプリの画面の種類

#スプラッシュ画面
スプラッシュ画面とはアプリを開いたときに、一番最初に出てくる画面。
`LaunchScreen.storyboard`のファイルで編集する。
例)ツイッター

#メイン画面
スプラッシュ画面を超えた先にある画面 
`Main.storyboard`のファイルで編集する。
例)LINEのメイン

#カスタムビュー
何回も使いわせるもので一回作ればいい。
スクリーンショット 2020-04-15 17.47.35</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Swift</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/mht-masaki-taki/items/5a70b232c167ed4c3f2c'>元記事を表示</a></div>
<h3 id=iOSでスプラッシュ画面を変更しても古いスプラッシュ画面が表示されないようにする方法

iOSでスプラッシュ画面を変更しても、起動時に古いスプラッシュ画面が出続けてしまうことがあります。

アプリを削除してインストールしなおしたりすると治りますが、実装でどうにかする方法もあります。

以下のように、スプラッシュスクリーンを差し替えたときは、iOS13は`/Library/SplashBoard/Snapshots/`以下を、iOS13未満は`/Library/Caches/Snapshots/`を消すことで2回目以降のアプリの起動では古いスプラッシュ画面が表示されるといったことはなくなります。

“`swift

func clearLaunchScreenCache() {
do {
if #available(iOS 13.0, *) {
try FileManager.default.removeItem(atPath: NSHomeDirectory()+”/Library/SplashBoard/Snapshots”)
} else {

元記事を表示

iOSでgitのcommit hashを取得し表示する

iOSアプリを開発していて、アプリの画面内にバージョン情報を表記することがあると思います。
この際、gitのcommit hashを表示したかったので、方法をまとめました。
こんな感じでバージョン情報を表記できます。
`1.0.0_d6d4de6`

Xcodeのバージョンは `Version 11.4 (11E146)` です。

# Info.plistの編集

`Info.plist` に `CommitHash` というkeyを追加します。
valueには `undefine` というStringを入れておきます。
Info.plist

# Build Settingsの編集

Build Settings の `Preprocess Info.plist File` を `YES` に変更します。
![

元記事を表示

MVPでiOSアプリをつくってみた

# はじめに
以前書いた[今更MVCとかでiOSアプリつくってみた(Swift)・改](https://qiita.com/am10/items/1a877dc2939962a40aaf)の続きです。なんか面談のときにちょこちょこアーキテクチャについて聞かれたので今度は MVP について考えてみます。

前記事でも書きましたが、アーキテクチャについてネットで色々検索すると言ってることがそれぞれ微妙に違うのがいっぱい出てきます。アーキテクチャについて学びたいと思うなら [iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture) を読みましょう!

この記事は [iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture) を参考にしていますが、あくまで私個人の意見です。

わりと長くなったのでめんどくさい人はソースだけでもどうぞ:bow:

* [VC3つのみでつくったやつ](https://github.com/adventam10/SwiftArchitecture2/tree

元記事を表示

SwiftでARマーカー (ArUco) を検出する

##はじめに
Swift で OpenCV の ArUco モジュールを使ってARマーカーを検出するコードを書きました。
ArUcoモジュールによるARマーカー検出は、マーカーの向きや傾きによる影響が少なく、非常に認識精度が高いです。検出したマーカーのから得られる情報にしたがって進行方向を決定する動体の実装などに使えそうです。

##SwiftにOpenCVを導入する
こちらの記事を参考にしてください。
[Swiftで OpenCV の ArUco モジュールを使う](https://qiita.com/Motonaga/items/d090826de806a2350ee2)

##プログラム

“`objective_c:OpencvWrapper.h
#import
#import

@interface opencvWrapper : NSObject {
UIImage *_image;
NSDictionary *_markerDict;
}
– (UIImage *)ima

元記事を表示

swiftでEurekaという神ライブラリの使用例

## はじめに
タイトル誤字ってました^^;申し訳ないです(_ _)
###Eurekaとは…
![alt](https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaNavigation.gif)
![alt](https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaRows.gif)

[公式github](https://github.com/xmartlabs/Eureka)参考

####よくある設定画面のUIを簡単に作ることができる神ライブラリです!

##導入

“`ruby:qiita.rb
pod ‘Eureka’
pod ‘ImageRow’
“`
ー> pod install

ImageRow使うなら一緒に入れてね!
するだけ!

##使用例と注意ポイント!

###こんな設定画面を作ってみたよ!
![alt](https://qiita-image-sto

元記事を表示

Xcodeでユニットテストを実行しようとするとFabricエラーが発生する件

Xcodeでユニットテストを実行しようとするとFabricエラー( `FABException` )が発生する現象について、(暫定的ですが)対応方法が分かったのでメモしておきます。

## 前提

Xcodeバージョン

“`
Version 11.4 (11E146)
“`

CocoaPodsライブラリバージョン

“`
Crashlytics (3.14.0)
Fabric (1.10.2)
Firebase/Core (6.21.0)
“`

## エラーの内容

Xcodeでユニットテストを実行しようとしたところ、以下のようなエラーが発生しました。

“`
2020-04-14 21:25:16.896671+0900 my-app.debug[11653:9277327] [GoogleDataTransport][I-GDTCOR001006] There was an error reading extension bytes from disk: Error Domain=NSCocoaErrorDomain Code=260 “The file “ eve

元記事を表示

Swiftで OpenCV の ArUco モジュールを使う

##はじめに
OpenCV の ArUco モジュールを使ってARマーカーを生成するコードを書きました。
通常、iOSアプリへの OpenCV のインストールはPodfile等を利用することで簡単に行うことができますが、ArUcoのような OpenCV_contrib (最新の技術を中心とした拡張モジュール群) に含まれるモジュールは iOS版の OpenCV には含まれておらず、OpenCV および OpenCV_contrib のソースコードをダウンロードして自前でビルドする必要があります。

## OpenCV_contrib を 含めて OpenCV をビルドする

ビルド方法についてはこちらの記事を参考にしました。

1. 以下のリンクからOpenCVとcontribそれぞれのソースコードをダウンロードします。
OpenCV: https://github.com/opencv/opencv/releases
contrib: https://github.com/

元記事を表示

SwiftUI × CoreData データ削除時のクラッシュについて

# 概要

SwiftUI と CoreData の練習のためにToDoアプリを作成していたところ、
データの削除時にクラッシュする事象がありましたのでその解決方法を記載します。

# 環境
macOS : Catalina(10.15.3)
Xcode : Version 11.4
Swift : 5.2

# 原因
Viewの構成としては、
ListView:ToDoの一覧をListで表示する
ListRowView:ToDoの一覧の各ToDoのデータを表示する。DetailViewで更新があった場合、このViewにも反映させる
DetailView:ToDoの詳細を表示する。ToDoの一覧からナビゲーションリンクで画面遷移する。ToDoの更新を行う
となっています。

ListViewでfetchしたCoreDataのオブジェクトをListRowViewとDetailViewに`@EnvironmentObject`で参照渡ししています。
これは、DetailViewでオブジェクトの更新をし、さらに更新内容をListRowViewに反映させるためです。

Listをスワイプして削

元記事を表示

iPadOSシミュレータに忍ぶ罠 ~あのMBPが危ない!~

Xcode11.4 よりiPadOS Simulatorに「Capture Cursor」と「Capture Keyboard」という機能が搭載されました。

これは便利ですねー。

**ただし**、物理ESCキーが付いていない**特定のMBP**をご利用の方はご注意ください。
初期設定のままキャプチャーモードに入ってしまうと、**二度と抜け出すことが出来なくなります**。
私は仕方なく**強制再起動**しました。
(外部キーボードがあればなんとかなったかもしれません)

環境設定から変更できますのでまず初めに変更しましょう。
初期設定はescになっています。

![EU1NURxU0AApHUh.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2117/2d76bed7-7455-90f2-c480-24943e724cec.jpeg)

元記事を表示

ヘルスケアとショートカットappを使ってリモート勤務の運動不足と向き合う

## この記事の要約

– 特に勤務のリモート化による運動不足、かなり深刻だと思うんですよ。
– なので、皆さんご自身の記録を見て欲しいという啓蒙。
– ショートカットで確認の自動化を試みたけどダメだったという話。

## 自覚無き運動不足

皆さん、勤務形態は如何ほどでしょうか。以前、はるか古代より続くSIer社会に組み込まれていた頃のことを思うと、多種多様な職場、業態、業界でリモートや時差出勤などが試みられており、驚きを隠しきれません。まさか日本でもこんなに変わるとは思いませんでした。
一方、先行して首都封鎖、ロックダウンをやっていた海外の都市封鎖された地域のニュースを見ていると、犬の散歩とランニングは許可だとか、ポケモンGOをやっていて逮捕されたとかを目にしました。
実際のところ、私もリモート作業になりはじめましたが、効率性であったり、コミュニケーションの困難さであったり、通勤時間がなくなって可処分時間が増えて幸福度が上がる、どうぶつの森を封印するところから始めるなど、様々な声が聞こえてきます。私も作業環境を職場に移すことで娯楽を切り離して集中出来ていたタイプなので、進捗に困難が

元記事を表示

iPhoneでCプログラミングしてみた

#はじめに
今回、[**モバイル C [ C/C++ コンパイラ ]**][app]というiOSアプリを使いました。
やはり、今更感はありますかね?
インストールから間もなくて、あまり使い慣れていませんが
行ってみましょう…

#実行環境

“`console
端末:iPhone7 (最近バッテリーが貧弱)
アプリ:モバイルC[C/C++コンパイラ] (無料版)
“`
#エディタ画面
縦画面でもできますし、フリック入力のキーボードでも入力できました。
画面のテーマ変更もできました。(これはdark)
![エディタ画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506931/ce8c3dc4-1fa6-f93c-1a88-674c633145ed.png)

#色々実行してみた
実行は`ランボタン`もしくは`コンソールでファイル名を指定`するとできるみたい。
アプリ上での実行結果をコピペしてます。
###①おはよう世界
“`c:ex01.c
#include
int main(

元記事を表示

Swiftでユニットテストを導入する上で押さえておきたいこと

## はじめに

技術書クラウドファンディングのPEAKSから販売されている[iOSテスト全書](https://peaks.cc/books/iOS_testing)の第2章・ユニットテストを読んで、ユニットテストを導入する上で押さえておきたい点を備忘録としてまとめました。

## ユニットテストとは

– ユニットテストとは、構造体やクラス、関数などのシステムにおける最小単位のコンポーネントに対して行うテストのこと
– **自動化**され、**繰り返し実行可能**で、**統一的な仕組みに支えられた**テスト
– 上記を満たすために、テストを資産として残すことが可能で、テストの実行や結果のレポートを行ってくれるテスティングフレームワーク(XCTest、Quick/Nimble)を用いる

## 導入するモチベーション

**1. より早い段階で不具合に気づく**
処理単位で正しいことを検証できたら早いタイミングで不具合に気づくことができ、手戻りを減らせる

**2. コードや設計を継続的に改善できる状態にする**
ユニットテストの整備が安全網として働き、コードや設計を継続的に改善でき

元記事を表示

シミュレータの画面収録メモ

# 画面を収録する

「shift + command + 5」で収録する
https://support.apple.com/ja-jp/HT208721

# Trimする
QuickTimePlayerで開いて、メニューバーの編集 > トリム…(Command + T)

# 必要なら、FFmpegでgifにする

こちらの記事を参考に
https://qiita.com/wMETAw/items/fdb754022aec1da88e6e

元記事を表示

OTHERカテゴリの最新記事