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

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

Xcode 11 の Test Plan を、試しながらゆるく解説

この記事では WWDC 2019 の 「[Testing in Xcode](https://developer.apple.com/videos/play/wwdc2019/413/)」 をベースにして、Test Plan
について調べたことや試してみたことを書こうと思います。すぐに Test Plan を試せるプロジェクトは↓こちら。
https://github.com/akatsuki174/TestPlanSample

# Test Plan の存在意義

例えばローカライズ対応をしているアプリで、開発時のデフォルト言語ではテストがパスしても、別の言語で実行した時に UI 崩れが発生するかもしれない。複数の条件(言語、テストの実行順、サニタイザー、引数や環境変数)を跨いで常にテストを実行することは不具合の発見率を高めることができる。

今までの Xcode でもスキームエディタを使うことによって様々な設定をすることが可能だったが、実行は1回しかできない。一方 Test Plan では設定を変えてテストを何回も実行できるところがメリットになる。

# Test Plan

元記事を表示

【iOS】簡単にKeyboardを表示したときにTextFieldが隠れないようにする

この記事は ZOZOテクノロジーズ #1 Advent Calendar 2019 14日目の記事になります。
昨日の記事は @hkame さんによる「[Aurora->CloudSQLへMySQLレプリケーションはできるのか](https://qiita.com/hkame/items/9cff6117bc1763ac7810)」でした。

# はじめに
本記事はKeyboardを表示したときにTextFieldが隠れてしまわないようにするための実装についてです。
TextFieldが隠れないようにする実装のやり方は色々あると思いますが、本記事ではFrame計算などのない簡単な方法を紹介したいと思います。

# 結果
このような動きになります。
日本語キーボードにしてキーボードの高さが変わってもTextFieldの位置が変わっているのがいいですね。

![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308861/785caf6e-31f7-1c01-2b30-0043416338d4.g

元記事を表示

UIColor から CIColor に変換するときの注意

# 前提

UIColor から CIColor にする方法は2種類あります

“`swift
# 変数 color は UIColor のインスタンスとする

# initializer
CIColor(color: color)

# property
color.ciColor
“`

# 注意

`color.ciColor` で取得する時、 `color` が Core Image でイニシャライズされたものでない (= `CIColor` で作成されてない) 場合は例外を返されます。
公式ドキュメントにはかいてありますが、抜け穴だと思います。

> This property throws an exception if the color object was not initialized with a Core Image color.

# 結論

基本的に `CIColor(color:)` の方を使っておけば問題ない。

# 環境

– Swift 5

# 参考

– https://stackoverflow.com/a/42287529
– https

元記事を表示

Flutter Interact 2019のまとめ

# はじめに
この記事は[Flutter #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/flutter-2)の11日目分です。

今年もすぐに枠が埋まってしまっていたのでFlutter Advent Calendarに参加する予定はなかったのですが、ふとカレンダーを覗いていみると11日枠が投稿されずに空いていたのでちょうどFlutter Interactが開催されたので急遽この記事を書くことにしました。

Flutterの最新情報に興味がある方はFlutterウィークリーもよかったらご覧ください
https://qiita.com/tags/flutterweekly

# Flutter Interact 2019とは
https://developers.google.com/events/flutter-interact

> Flutter Interact is a day dedicated to creation and collaboration with the world, inspi

元記事を表示

fastlaneでまず始めに使いたいアクション

# はじめに
本記事は[Volare Advent Calendar 2019](https://qiita.com/advent-calendar/2019/volare)の3記事目として書いています。
私は今年の4月から社会人として、主にiOSアプリの開発を行っていますが、今回はVolare卒業1期生(?)として寄稿させていただきます!

fastlaneの導入方法やリリースの自動化などについては、既にたくさんの記事があるので、
今回はアプリの個人開発を行っている方や、今までfastlaneを知らなかった方でも恩恵を受けられそうな、3つのfastlaneのアクションについて、その挙動や実行方法などをまとめたいと思います。

# fastlaneとは
[fastlane](https://fastlane.tools/)は、iOS及びAndroidアプリのビルドやリリースを自動化してくれる、ビルドツールです。
**無料**で使用することができ、OSSでドキュメントも整備されているため、手軽に導入できます。
**無料**です。

Fastfileにlaneと呼ばれるアクションの組み合わ

元記事を表示

そのアプリ…文字サイズをデカくしてもUI崩れないですか?

## はじめに

[株式会社Tenxia](https://tenxia.jp/)のCEOの岡部([Twitter](https://twitter.com/_masaokb))です。

この記事の内容は[Flutter Meetup Tokyo #13](https://flutter-jp.connpass.com/event/155559/)の自身のLTを記事に起こしたものです。

[![スライド](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530822/6db15fdb-61c6-2b4f-8020-aa5fe4aaaf8e.png)](https://docs.google.com/presentation/d/1hvSX3ZzXPZZr3HeoBNhJiqSff-bPPa-UhhszgmClN2Q/edit?usp=sharing)

## これはなに

Error: EACCES: permission denied, mkdir ‘/usr/local/lib/node_modules/gulp/node_modules/fsevents/.node-gyp’

[appium/appium-ios-device](https://github.com/appium/appium-ios-device)の導入でつまづいた内容のまとめです。

## 環境

MacBookPro15 Mojave – macOS 10.14.6

## 事象

`gulp`が無いと言われたのでインスコへ

“`
$ npm run watch

> appium-ios-device@1.2.1 watch /Users/gremito/git/appium-ios-device
> gulp watch

sh: gulp: command not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! appium-ios-device@1.2.1 watch: `gulp watch`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the appium-i

元記事を表示

CarPlay利用中に画面を見ずにLine送信したい

# これは何?
CarPlay使っていますか?
スマホより不自由で、カーナビよりも「ゆるっと」していますが、なんとか使えています。
地図や音楽は選択肢が増えましたが、メッセージ関係は限定的なのが不満です。

本記事はCarPlay中にLineにメッセージを送信する方法です。
家族に「渋滞で遅れるよ」などと簡単なメッセージを送るために作りました。

IFTTTとiOSのショートカットアプリを連携して実現しています。

### 出来ること
– 音声操作だけで、画面を一切見ずにLine送信ができます。
– 送信先(Lineグループ)は固定です。複数のショートカットとIFTTTレシピを作成すれば、複数の送り先に対応可能となるでしょう。

– 一息で喋れる文章を送信します。息継ぎすると、そこでSiriが勝手に締め切ります。
– Lineの受信に関しては、ノーケアです。安全に停車してLineアプリを使いましょう。

### 不具合または制限
– 送信先は、個人宛でもLineグループが必要です(自分、相手、LINE Notifyの3人)
– CarPlayから利用すると、たまにショートカットのスク

元記事を表示

JSを使った様々なSafariブラウザからのアクセス判定の方法

ITP対応のため、各アドテクノロジーツール提供元企業がJavaScriptを使ってどのようにSafariブラウザからのアクセスを判定しているのか個人的に気になったのでまとめました。参考までにどうぞ。

# SafariブラウザのUser Agent例

|デバイス| OS | User Agent |
|:-:|:-:|:–|
|iPhone|Safari 13 on iOS 13|`Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1`|
|iPad|Safari 12.1 on iOS 12.2|`Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1`|
|mac|Sa

元記事を表示

俺のアプリがこんなにダークなわけがない

タイトルの言い回しがもう古いかもしれませんが、最近の流行りがわからないのです・・・

# こんなアプリを作ったよ

以前、[続:どこまでショボいアプリがAppleの審査に通るのか試してみた](https://qiita.com/megumu-u/items/29c28ed9b2b3830769f7)で作ったアプリをiOSのダークモードに対応してみました。
このアプリは5W1Hで予言を表示するというアプリでした。

このアプリを

 ライトモードなら白背景
 ダークモードなら黒背景

にしてみました。

**でも・・・ただ、それだけじゃつまらないよね・・・**

ということで、**ダークモードの時は「暗い奴」にすることにしました。**

え、意味がわからない?
つまりこういうことです。

スクリーンショット 2019-12-13 0.07.23.pngSwiftのExtensionをより分かりやすく -TargetedExtension-

#はじめに

本記事は[CyberAgent 20新卒 Advent Calendar 2019](https://adventar.org/calendars/3976)の13日目の記事です!
もうすこしでクリスマスですね??

**// TODO: 追記します!**
– 昨日の投稿は, **[Ayumu](https://twitter.com/airagu950)くんの[「Lottieを使ったAndroidのアニメーション実装」](https://qiita.com/airagu950/items/9042f22f7a517b6e165a)**でした!
– そして, 14日目の投稿は**[dragon_taro](https://twitter.com/DragonTaro1031)くんの「」**です!
ぜひこちらもご覧ください!!

本日(アドベントカレンダー13日目)の記事は, **[よだだよ!or ヨーダ](https://twitter.com/yodaaa_tech)**が担当します!
普段から触っている技術はiOSで, 最近は研究や受託開発等でARKitを使うことが

元記事を表示

【iOS】サンプルデータ、どうやってアプリに入れますか

# はじめに

Releaseビルドには要らないけど、開発中には使いたいサンプルデータ。このサンプルデータ、どうやってアプリに入れますか?

まず、想定しているサンプルデータの使い方を以下に挙げます。

1. 主にUIの開発に用いる。UIを作るためにも表示するデータがほしい
1. 多言語対応したデータを用意したい。AppStoreのスクショにも使う
![screenshot1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73490/322258b1-c6d5-d953-ff60-062b090b9298.png)
1. 開発中は全消しして入れ直すことは多々あるので楽な方法で入れたい
1. テスト用のテストデータのようにパターンを網羅したいわけではない

# どうやって入れますか?

### 1. 手打ちする
入力UIがあるアプリなら都度手打ちして入れるのもありだと思います。少量データならこれで事足りることも。ただ、データ量が多くなるとやはり辛いです。

### 2. ハードコードする
サーバが

元記事を表示

デザインのバージョン管理と開発連携をAbstractにまとめてエンジニアともっと仲良くなる

Classiアドベントカレンダー13日目は、デザイナーの@shio312がお送りします。
今年は弊社UXデザイン部も採用している、デザインのバージョン管理と開発連携をAbstractにまとめることになった経緯を、デザインツールの紹介を交えながらお話します。

# はじめに
**エンジニアさん**
「最新のデザインってどれ」
「えっ、実装結構進めてたのに急になんか違うUIになった(怒)」
「えっ、なんでこんなUIなの…わけがわからないよ…」
「しかも前回とはちがうツールでデザインカンプきた…なにこれ…つらい…」

上記のような、残念な気持ちになるような事案に覚えはないでしょうか。ウッ。

私達はデザインシステムの構築やコンポーネント化、バージョン管理といった面で、プロトタイピングを[inVision](https://www.invisionapp.com/)か[XD](https://www.adobe.com/jp/products/xd.html?sdid=19SCDRPN&mv=search&ef_id=EAIaIQobChMIta6UmYGw5gIVi2kqC

元記事を表示

僕のワンダフルライフ 〜ARのAI犬が友達〜

この記事は [NewsPicks Advent Calendar 2019](https://qiita.com/advent-calendar/2019/newspicks) の13日目の記事です。

## はじめに

いらっしゃいませ、NewsPicksでエンジニアをしている[kohei1218](https://github.com/kohei1218)です。

突然ですが僕のワンダフルライフという映画をご存知でしょうか?
最近では続編の[僕のワンダフル・ジャーニー](https://boku-wonderful.jp/)も有名でした。
犬と飼い主の絆の物語なのですが、これがまあ泣ける映画で試写会では**満足度100%**という驚異的な数値を叩き出しました。
劇中では犬の健気な飼い主を愛する気持ちがセリフとなり、伝わってきます。

犬好きな自分はよりこう思うわけです、**犬飼いたい**と。**犬と話したい**と。
しかし、私が住む築20年のアパートはそんなことを許してくれるはずがありません。だったらARで犬を表示して、さらに会話をできるようにしましょう。

## 要件

ARで犬

元記事を表示

AzureSpatialAnchor2.0 と Unity で Hololens、iOS、Android の境界を超えた AR 体験を作る

こちらは AR Advent Calendar 2019 13日目の記事です。

# はじめに
ARKit、ARCore を使ったモバイル端末での AR もさることながら、Hololens、MagicLeap だけでなく、Nreal などメガネ型デバイスも界隈を賑わせているかなと感じています。各デバイスでそれぞれの世界を見ながらも、共通の情報も見るという世界が、すぐ近い未来にきていると思っています。

そこで気が付いたら Azure Spatial Anchor のバージョンが 2.0 に上がっていたので、このサービスとUnityを使い、Hololens、iOS、Android の各端末から、同じ位置に同じオブジェクトを出して表示するという単純なAR体験をやってみようと思います。

# Azure Spatial Anchor 2.0 を使ってみる

* [クイック スタート:Azure Spatial Anchors を使用する iOS アプリを Swift または Objective-C で作成する](https://docs.microsoft.com/ja-jp/azure/s

元記事を表示

iOS ダークモード対応したら心がダークモードになった。

# その日は突然訪れた

>**Important
Supporting Dark Mode is strongly encouraged. Use the UIUserInterfaceStyle key to opt out only temporarily while you work on improvements to your app’s Dark Mode support.
[Choosing a Specific Interface Style for Your iOS App](https://developer.apple.com/documentation/appkit/supporting_dark_mode_in_your_interface/choosing_a_specific_interface_style_for_your_ios_app)より**

**意訳: ごたごた言わずにさっさとダークモードに対応しろ。**
![skull-782385_640.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

CoreAnimationでスクラッチを作ってみる

# はじめに
年末で宝くじとか運試ししたいな、
って事でスクラッチアニメーションを作ってみました。

今回UIBezierPathを用いて削る軌跡を描画して、
CoreAnimationでアニメーションさせる事で実現させることにしました。

# 線を描く
“`swift
func strokeLine() {
let layer = CAShapeLayer()
layer.bounds = self.bounds
layer.position = CGPoint(x: self.bounds.width / 2.0, y: self.bounds.height / 2.0)
self.layer.addSublayer(layer)
layer.strokeColor = UIColor.black.cgColor // 線の色
layer.lineWidth = 10.0 // 線の太さ

// パスの生成
let startPoint = CGPoint(x: self.bou

元記事を表示

Unity製アプリでiOSアプリのガイドライン遵守して! と言われてしまったら

どうしましょう。困りましたね。

普通のiOSアプリであればiOS標準のUIがガイドライン通りに(ある程度は)よしなに振舞ってくれるのですが、
Unityではガイドラインを理解して、各自で実装しなければなりません。

本ドキュメントでは、Unity製アプリでiOSガイドラインを遵守するため何をしなければいけないのかをまとめます。
ゲームというよりはどちらかというとツール系アプリ向けの記事となっています。

なおAndroidに関しては未考慮です。
また本ドキュメントの内容はApp Store審査の合格を保証するものではないのでご了承ください。

# iOS Human Interface Guidelines
ガイドラインはこちら。
https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/

以降はガイドラインの章、重要項目の要約/対応方針、実装方法という構成でリストアップします。

# Visual Design

## Adaptivity and Layout
http

元記事を表示

Error An unknown server-side error occurred while processing the command. Original error: Could not find a driver for automationName ‘XCUITest’ and platformName ‘iOS’. Please check your desired capabilities.

この記事は、[Selenium/Appium Advent Calendar 2019](https://qiita.com/advent-calendar/2019/selenium_and_appium)の9日目の記事です。

## 環境

* MacBookPro – macOS Mojave 10.14.6
* Appium for Mac バージョン 1.15.1

## 経緯

Mac miniなどにJenkinsを入れてアプリのビルド環境を作り、そこにAppiumを入れてCI連携し、ビルド後に簡単なアプリテストをやりたいため、本格的にAppiumを使い始めました。そこで日々知見が溜まっているため、今回はとあるバグについてまとめます。

## 目的

ビルドしたアプリファイルをシミュレータに入れてアプリを実行させる。

## 問題

Appium for Macアプリから以下の設定を行い実行してみると次のエラーが表示されました。
まず成功体験を得るために、空のプロジェクトを作っただけのアプリを入れて開こうとしています。

</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Xcode</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>appium</div>
<div class='tag-cloud-link'>XCUITest</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/gremito/items/b87bf035870b7a34d07b'>元記事を表示</a></div>
<h3 id=Swiftでカウントダウンタイマー作る。

## はじめに
アドベントカレンダー一個一個の質が低いのは許してください。
## 今回作るもの
下のような感じのタイマーです。
ただ単に400秒とか600秒とか10秒といった秒数からカウントを減らしていく記事は結構あったんですが下の画像のように、時間、分、秒まで対応した記事はぱっと見なかったので(多分ある)
記事書くことにしました。
今回ライブラリとか何も使っていないのですがそういうタイマーのライブラリとかあるんですかね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255216/a0b92634-9be9-eabe-7ddf-1bbadb7f3401.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255216/231db78a-2c8b-c963-bbed-bcd055ee7239.png)

## storyboard
**画像にも記載してありますがLabelを一つおくだけ

元記事を表示

OTHERカテゴリの最新記事