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

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

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

元記事を表示

[WIP] 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を一つおくだけ

元記事を表示

FlutterでAppleID登録から始めてiOSアプリをリリースした時に解決したつまづきポイントメモ。

# 検証日時

2019年11月28日~2019年12月12日(リリース日)

#全体的な流れリリースまでの流れと、本記事の概要

公式チュートリアルです。
https://flutter.dev/docs/deployment/ios

英文がよくわからないという場合は、Chromeで日本語翻訳にかければほぼほぼ内容わかります。Appleのコンソールが英語なので、対応している単語がわからないときは翻訳を切って見比べると解決します。

このチュートリアルを進める時にエラーが出た部分にフォーカスして、その解決法などを共有します。

↓Android版のレポートもありますのでお役に立てば!↓
https://qiita.com/k_mawa82/items/2a519b2f4cb135d2921b

# ローカル動作確認した時のFlutter周り環境情報とパッケージの各バージョン

“`
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel st

元記事を表示

[iOS] FirstUnlockまでのアプリリソース制限

FirstUnlockとは、iOSデバイスを起動後、ユーザーが初めてロックスクリーンをアンロックすることです。
そのFirstUnlockが行われるまでに、何らかの操作によって、アプリが起動することがあります。

そのとき、アプリのリソースアクセスが、制限されています。

ここでは自分のメモ程度に、その制限事項を簡単にまとめておきます。

## FirstUnlockになる条件

* OS再起動
* ユーザーによる再起動
* iOSのバージョンアップによる再起動

## アプリがバックグラウンド起動する条件

* iAP(USB/BT)接続によるAppLaunch

## Storage

以下のストレージのRead/Write権限ありません。アクセスしようとすると`nil`が変えるかパーミッションエラーになります。

* Keychain
* UserDefaults
* Application container内のFiles/Directories

## UIDevice

* `identifierForVendor`が`nil`になる

元記事を表示

TableViewの中にCollectionViewをいれよう!

#はじめに
みなさんはNetflixをご存知ですか?
映画アプリではよく、縦スクロールすると様々な分類の映画が、横スクロールすると、ある分類に属した映画一覧を見ることができます!
今回はそのような画像の種類ごとの縦&横スクロールの実装を、tableViewの中にcollectionViewをいれて、それぞれのカスタムセルを使って作っていきたいと思います!

#完成予想図
完成イメージはこんな感じで、縦スクロールで分類分け、横スクロールで同じ分野内のものが表示されるようになっています!
※今回は、横スクロールしても同じ画像が表示されるようにしています。
スクリーンショット 2019-12-12 9.48.37.png

#storyboard編
Main.storyboardでViewControllerにtabl

元記事を表示

Flutter の DatePicker に関するTips

## はじめに

[ユアマイスター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yourmystar) の12日目の記事です。

ユアマイスターでは、 [あなたのマイスター](https://yourmystar.jp/) でハウスクリーニングや修理などのサービスを提供するプロや職人が利用する店舗向けアプリ「マイスターアプリ」 ([Android版](https://apps.apple.com/jp/app/id1478724946?l=ja), [iOS版](https://apps.apple.com/jp/app/id1478724946?l=ja)) があります。
このアプリでは、Flutterを採用しており、2019年10月にリリースされました。(その他の技術スタックは [こちら](https://yourmystar-engineer.hatenablog.jp/entry/2019/11/25/090000))

今回は、DatePickerを使ったTipsを紹介したいと思います。

## 基

元記事を表示

RxSwift のクラスの整理

RxSwift は便利だがいっぱいクラスがあって圧倒されてしまう。 (たぶん RxJava/RxRelay など他の言語でも共通の話だと思います)

* PublishSubject
* BehaviorSubject
* ReplaySubject
* AsyncSubject
* PublishRelay
* BehaviorRelay
* ReplayRelay
* AsyncRelay

これらは すべて Observable の特殊系である。そして、[`Publish`|`Behavior`|`Replay`|`Async`]と[`Subject`|`Relay`]の組み合わせである。

Disclaimer: 独自解釈です。誤解を生みそうな表現等ありましたらコメントいただけるとありがたいです。

## Observable

前置き。

Observable は以下のような特徴をもつ。

1. 値が emit されるたびに onNext が呼ばれる
2. 自身の onNext, onCompleted, onError を自分で呼び出すことはできない
3. 終了時、エラー時

元記事を表示

個人開発したアプリが大コケしてるので失敗要因を分析してみた

本記事は [個人開発 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/private-development) 12日目の記事です。

#はじめに

こんにちは!個人開発するSIerのaiiroと申します。
プログラミングを初めて1年ちょっとではありますが、3つアプリをリリースしまして
案の定、失敗してるなぁ・・・と感じているので、2019年の締めくくりとして失敗要因を分析したいと思います!

自分のアプリ開発のセンスが無さすぎる、、、という恥を晒す形にはなりますが
これから個人開発しようとしている人にとって、参考になれば嬉しいです!

#作ったアプリと失敗要因
##(1)漫画レコメンドアプリ「ComiReco」
###概要
 プログラミング学習を始めるにあたって、まずは作りたいものを作ろうと思い、それなら漫画に関係するサービスにしたいなぁという思いからアイデアを検討しました。
 その中で「みんなでレコメンドしあえる漫画SNS」があると面白いのでは?という発想からこのアプリを作り始めました。
 紹介のお礼という形

元記事を表示

OTHERカテゴリの最新記事