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

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

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

元記事を表示

Flutterで書くiOSアプリハンズオン(QiitaClientを作ってみよう)

## これは何?

Flutterを使ったハンズオン用の記事です。
以前Flutterの勉強をした際に簡単なQiitaClientを作ったので、イベントなどで登壇したときに使えるようにハンズオン形式にまとめてみました。

## 使用するAPI
今回はQiitaAPiを題材とします。([ドキュメント](https://qiita.com/api/v2/docs))

登録不要で使えて、例えば、 https://qiita.com//api/v2/items で、投稿を取得できます。

“`javascript
[{
rendered_body: ”

プロローグ

【Flutter】キーボード外タップで、キーボードを閉じる

## キーボードを閉じるには?

主に以下の2つの方法があります。
今回は、1の方法を紹介いたします。

1. キーボード外の画面タップでキーボードを閉じる
2. キーボード上に閉じるボタンを配置する

## キーボード外の画面タップでキーボードを閉じる

キーボードを閉じる処理は以下のコードです。

“`Dart
FocusScope.of(context).unfocus()
“`

画面タップ時に上記の処理を発火させるには、`GestureDetector`を使用して、以下のように記載いたします。

“`Dart
GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: HomePage(),
),
“`

だいたいこんな感じです

“`Dart
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@ove

元記事を表示

#25 横ScrollViewの使い方1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.4
Swift:5.2
2020/04

##part1
`UIViewController`に`UINavigationBar`を置く.

スクリーンショット 2020-04-11 午後9.06.36.png

##part2
`UINavigationBar`に下の4つの制約を付ける.

スクリーンショット 2020-04-11 午後9.27.13.png今更MVCとかでiOSアプリつくってみた(Swift)・改

# はじめに
以前に書いた[今更MVCとかでiOSアプリつくってみた(Swift)](https://qiita.com/am10/items/6e76ec231ee1251560cc)はなぜ MVC を導入するのかふわっとしてるし分け方もふわっとしててなんか違うなと思っていたのですが何が違うかわからず放置していました。
が、未だに LGTM ついたりしてまずいなと思い MVC について再考するために今回の記事を書きました。(google で「swift mvc」で検索するとわりと上位にくる。やっぱり Qiita の SEO すげぇ)

* アーキテクチャの起源は MVC であり他のアーキテクチャは MVC の課題を解決するために派生していったものであり MVC の理解がアーキテクチャの理解の第一歩と考え今更ですが MVC についての記事を書きました。

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

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

元記事を表示

Xcodeでよく使うショートカットキー

#よく使うショートカットキー
・Shift+Command+O
スクリーンショット 2020-04-07 15.25.06.png
 上の画像のような検索バーが出てファイルを検索できる。

・Command+B
 ビルド

・Command+R
 ビルドして実行
スクリーンショット 2020-04-07 15.40.06.png
上の画像のようなシュミレーターが起動する。

・Shift+Command+L
 swiftの基礎的な書き方

Xcodeの基礎的なことを書いていきます。
#変数と定数
変数は数学で習う、χみたいなもので数字を何回でも入れ替えることができる。
変数では、先頭にvarをつける。
`var 変数名: 型名`
定数は一度決めたら変えられないもの。
例えば円の直径を計算するときのπ=3.14みたいな、変えたらおかしくなってしまうもの。
定数は先頭にletをつける。
`let 変数名: 型名`

#Swiftのデータ型
Swiftのデータ型を書いていきます。
####Int型
正と負のデータを扱うときに使う。
####Double型
小数点を扱うときに使う。
小数点を扱うものにFloat型もあるがこれは扱える範囲が狭いため基本的にはDouble型を使う。
####String型
文字列を扱うときに使う。
####Bool型
論理演算でtrueかfalseを扱うときに使う。

#条件分岐処理
条件分岐をするときは大体if文を使う。
こんな感じ

“`swift
var num = 10

if (num > 5) {
print(“true”)
} else {
print(“false”

元記事を表示

iPhoneのショートカットAppを使って、ヘルスケアに体温を楽々で記録する

みなさんこんばんは、スズキです。コロナ流行ってますね。怖いです。

## 求められる検温

さて、世の中的にはリモートが広まりつつありますが、友人の会社は作業開始時の日報に検温の記録が求められ始めたそうです。いやまぁ確かに学校と保育園は既にそうではあった。
そして、**「検温記録で検索したらルナルナしか出ない、そうじゃないんだ」**という声が飛び込んできました。

検温の記録自体は、iOS標準のヘルスケアアプリに記録することが出来ます。ですが、辿り着くまでのUIUXがちょっと分かりにくいんですよね。ご婦人系のカテゴリの中に入ってしまっていて…。(あんまり言うのも野暮なので各自確認してくれ)。
結論として、**iPhone標準のヘルスケアアプリで体温の記録の蓄積は行なえます。**
ちょっと調べてみたところ、ショートカットAppのAPIがあったので、気不味い画面を開くこと無くスムーズに健康を管理出来るよう、レシピを作ってみたので公開します。

尚、本件は以下のサイトを大いに参考にさせて頂きました。
ありがとうございます。

[何となく風は爽やか](https://kazesawayaka

元記事を表示

【SwiftUI】EmptyStateを作って理解するPreferenceKey

この記事は、SwiftUIで以下のような**「子孫Viewの情報をコンテナViewで読み取るデザインのカスタムViewを作りたい」**というiOSエンジニアへの知見共有を目的としており、調べた情報をなるべく素直に伝えていけるように書いていきます。

“`swift
NavigationView {
Text(“Hello World”)
.navigationTitle(“MyApp”)
}
“`

自分が`EmptyState`をSwiftUIで作ってみたいと思って調べ始めたので、その流れに沿って進めていきます。

# APIデザイン設計
冒頭にも挙げましたが、SwiftUIとのAPI一貫性を保つコンポーネントを作るために以下のNavigationViewようなAPIを目指しました。

## 参考にしたデザイン

“`swift
NavigationView {
Text(“Hello World”)
.navigationTitle(“MyApp”)
}
“`

## ゴール
これまでのUIKit製のライブラリではDelega

元記事を表示

FlutterがiPhoneの実機ではビルドできない人へ

iOS13.3ではビルドできないよ!!!13.4にアップデートしましょう!!

僕の伝えたいことはこれだけです。

謎のエラーにflutterでアプリ開発し始めた瞬間思いっきり出鼻を挫かれましたが、久々に触ってみて、iOSをアップデートしたら直りました。

しっかりstackoverflowか何かでアップデートに伴うバグはチェックしましょう、、、(自戒)

その他注意点

Xcodeの設定を忘れずにしましょう。

  • Signing & CapabilityでTeamを設定すること
  • BundleIDの設定

など。

・BundleIDの設定についてのメモ
アプリのBundleIDとそれが含めるbundleのBundleIDが一致しているよ(?)みたいなエラーが出た時はそれらのBundleIDを異なるものにしたら直りました。(雑すぎてすみません)

リクエストがあればできるかぎり詳しく書いていこうと思います!!

元記事を表示

OTHERカテゴリの最新記事