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

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

Apple Watch で名言表示アプリを作る

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

 こんにちは!ユアマイスターでエンジニアインターンをしている土佐鰹です。
 年末にPRIDE、K1などで盛り上がっていた時代から10年飛んで、RIZINが年末の格闘技放送を定例化してきて嬉しい限りでございます。

 弊社には格闘技のように、長く愛されるサービスを作りたいエンジニアがたくさんいます。その中の1人に、息を吐くように名言を生み出す方がおられます。(以降、Fさん)
 そんなFさんが吐き出す名言を忘れたくないと、過去に弊社では全精力をかけて名言を返してくれるSlackBotを作成しました。
スクリーンショット 2019-12-21 0.42.53.pngアプリテスト自動化への旅【AppiumとJestで簡単に試してみよう!】

皆さんはアプリのテスト自動化をしたことがありますか?
おそらく手元で**手動テスト**をし、Excelか何かにまとめられたテスト仕様書にチェックを入れている人もいるのではないでしょうか。

しかし、自動化しようとしても、**どこまで自動化ができるのだろうか。。。**だとか、**こんな表現をテストで実装は出来ないよね?**だとか、**時間かかりそうだし、今はそういうフェーズじゃない。**だとか…そう思っている人は結構いるのではないかと私は思っています。

そんな人たちに、意外とアプリのテスト自動化はイケるぞ!ってのを伝えるために、本記事にて、**Appium**と**Jest**を組み合わせた自動テストを紹介します。

皆さんの手元で簡単にセットアップできるので、是非お試しください!

なお、今回紹介する内容のソースコードは以下のリポジトリから参照できますので、是非ご利用ください!
https://github.com/minakawa-daiki/AppiumJestSample

# 目標
今回の記事では、以下が出来ることをゴールにしていきたいと思います。

– ページがしっかり

元記事を表示

UICollectionViewでCell以外のタップを検知する

# はじめに
`UICollectionView`を使っている際に、Cell以外の部分をタップした際に処理を動かしたい事があったので、その際に使用した方法を記載します。

# 環境
Xcode11
Swift4.2

# Cellのタップを検知する
`UICollectionView`でCellのタップを検知する際は、`UICollectionViewDelegate`プロトコルを使用する方法が一般的だと思います。

“` ViewController.swift
extension ViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(“Cellがタップされた!”)
}
}
“`

# Cell以外のCollectionView内のタップを検知する
`UICollectionViewDelegate`プロトコルを使用する

元記事を表示

【Swift】TableViewとCollectionViewでよく見るUIを再現してみる

##はじめに
CA Tech Dojo/Challenge/JOB Advent Calendar 2019の20日目は@misakiagataが書かせていただきます。
次の日、21日目は@yawn_yawn_yawn_さんです!
私は、2019年8月にCATechDojo(Kotlin編)に参加させていただき、非常に多くの学びを得ることができました!
今回はCAのアドベントカレンダーということで、AbemaTVのUIにもあるような、コンテンツをカテゴリごとに横スクロールできるやつを作ってみようかと思います。(あ、iOSです)

##完成形
こんな感じでTableViewの中にCollectionViewをのせて、縦スクロール×横スクロールできるよく見るUIです。
![ガッキーGIF.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271820/a68a7c43-6bc3-7978-8da0-d28a287959c6.gif)

##ざっくり概要説明
全体の階層は以下のようになっています。

– Vi

元記事を表示

iOS12のSafariでは属性セレクタのエスケープが解釈できない?

## 問題

iOS13のSafariでは動くのにiOS12のSafariで動かない、まさかのシンタックスエラー

1.jpg

## 原因

横着してライブラリが生成する情報から属性セレクタを使って無理やり指定していた

“`javascript
‘input[name=export_diploma_supplements_form\\[export_type\\]]:first-child’
“`

## 解決方法

横着せずIDなりクラスなりを定義してそれを用いて指定する

“`javascript
‘input.js-diploma-supplement-export-type:first-child’
“`

## 感想

13にできない端末が生まれたから検証パターンが増えて地味に辛い

## 参

元記事を表示

【Swift】型に!つけると何が起こるんや……?>?

Optional型は完全に理解したつもりでしたが、Implicitly Unwrapped Optional(暗黙的アンラップ)についてよくわかってなかったので、備忘で書きます。

フォースアンラップはよく使います。

“`swift
let hoge: String?
hoge = “!!!”
print(hoge!) //!!!
“`

これはわかりやすい(というかわかってる人に対する記事としてこれを書いています)と思うのですが、
変数の型に、!をつけるとどうなってしまうのでしょうか?

“`swift
let hoge: String!
“`

# Implicitly Unwrapped Optional
?と!という記号は、なんか全部Optional型に関係するものなのですが、
使う方法によってそれぞれ名前がついていて、若干挙動が違ったりします。
正確なところが知りたければ、Swiftの公式ドキュメントを参照するとよいでしょう。

[Implicitly Unwrapped Optionals
](https://docs.swift.org/swift-book/L

元記事を表示

Bitrise Shipを使ってみた(iOS編)

この記事は[Bitrise Advent Calendar 2019](https://qiita.com/advent-calendar/2019/bitrise)の記事です
前回はAnzNetJpさんで[[Bitrise]Utility Workflowsの紹介](https://blog.anzfactory.xyz/articles/20191218/bitrise-utility-workflows/)でした

フラー株式会社でiOSエンジニアとその他諸々をやらせていただいているAtsushiIzuです。
フラー株式会社では、スマホアプリの実利用データを提供する[App Ape](https://ja.appa.pe/)というサービスと、アプリやウェブといったプロダクトをお客様と一緒に共創していく[共創スタジオ](https://www.kyoso-studios.com/)という2つのサービスを展開しています。

私は共創スタジオに所属しており、共創スタジオで使用しているBitriseについて触れていきます :relaxed:

# Bitrise Shipとは?
##

元記事を表示

iOS開発におけるBitrise活用事例

この記事は[フラー Advent Calendar 2019](https://adventar.org/calendars/4155) – Adventarの20日目の記事です
昨日はNobux42さんで[GitHub Actionsを使ってReactアプリのCI環境を構築(Lighthouse CIも)](https://qiita.com/nobux42/items/b6170b599b4fa73256b3)でした

フラー株式会社でiOSエンジニアとその他諸々をやらせていただいているAtsushiIzuです。
フラー株式会社では、スマホアプリの実利用データを提供する[App Ape](https://ja.appa.pe/)というサービスと、アプリやウェブといったプロダクトをお客様と一緒に共創していく[共創スタジオ](https://www.kyoso-studios.com/)という2つのサービスを展開しています。

私は共創スタジオに所属しており、共創スタジオで使用しているBitriseについて触れていきます

# Bitriseとは?
Bitriseはハンガリーにオフィス

元記事を表示

Combine frameworkとReactive Programmingとデバッグ

すごいニッチな小ネタですが、アドベントカレンダー20日目の記事です。

iOSアプリをReactive Programmingで実装する場合、代表的なライブラリが2つあります。
– RxSwift
– ReactiveSwift

自分は何年か前からそれらのライブラリを利用させてもらっています。
便利な一方、抽象度の高さやサードパーティ製であるところから生じる扱いにくさもあります。

特にXcode + LLDBを組み合わせたデバッグと相性が悪いなと感じておりました。
例えば実行時にbreakpointを仕掛けてその時点でのStacktraceを見よう…などといった場合に素直なやり方は使えません。
ReactiveSwiftで例を見てみます。

“`swift
import UIKit
import ReactiveSwift
import Result

class ViewController: UIViewController {
let viewModel = ViewModel()

override func viewDidLoad

元記事を表示

年齢制限指定

|名称|英語表記|
|:–|:–:|
|アニメまたはファンダジーバイオレンス|CARTOON_FANTASY_VIOLENCE|
|リアルな暴力的表現|REALISTIC_VIOLENCE|
|長時間の過激なまたは加虐的でリアルな暴力|PROLONGED_GRAPHIC_SADISTIC_REALISTIC_VIOLENCE|
|冒とく的または下品なユーモア|PROFANITY_CRUDE_HUMOR|
|成人向けまたは成人向けを暗示するテーマ|MATURE_SUGGESTIVE|
|ホラー/恐怖に関するテーマ|HORROR|
|医療/治療情報|MEDICAL_TREATMENT_INFO|
|アルコール、タバコ、ドラッグの使用または言及|ALCOHOL_TOBACCO_DRUGS|
|疑似ギャンブル|GAMBLING|
|性的内容およびヌード|SEXUAL_CONTENT_NUDITY|
|過激な性的表現およびヌード|GRAPHIC_SEXUAL_CONTENT_NUDITY|
|無制限のWebアクセス|UNRESTRICTED_WEB_ACCESS|
|ギャンブルおよびコンテス

元記事を表示

【Swift】break, continue (とfallthrough)の挙動について

## はじめに

基本的な部分ですが,若干ハマりかけたので備忘録も兼ねて一度まとめておこうと思います.

## break

自身が含まれるループ文やswitch文全体の処理をその時点で終了し,そのブロックの閉じ括弧(`}`)の直後に処理の流れを移します.

“`swift
for i in 1…10 {
if i % 2 == 0 {
break
}
print(i)
}
print(“END”)

//以下出力
1
END
“`

## continue

ループ文の中で,continue文が実行された場合,その周回のループをその時点で完了したものとし,そのループ文の次の周回の処理を続けます.

“`swift

for i in 1…10 {
if i % 2 == 0 {
print(“\(i): even”)
continue
}
print(i)
}
print(“END”)

//以下出力
1
2: even
3
4: even
5
6: e

元記事を表示

App Store Connect のカテゴリ値

|日本語|値|
|:–|:–:|
|エンターテイメント|MZGenre.Entertainment|
|ゲーム|MZGenre.Games|
|ショッピング|MZGenre.Apps.Shopping|
|ステッカー|MZGenre.Apps.Stickers|
|スポーツ|MZGenre.Sports|
|ソーシャルネットワーキング|MZGenre.SocialNetworking|
|ナビゲーション|MZGenre.Navigation|
|ニュース|MZGenre.News|
|ビジネス|MZGenre.Business|
|ファイナンス|MZGenre.Finance|
|フード/ドリンク|MZGenre.Apps.Food_Drink|
|ブック|MZGenre.Book|
|ヘルスケア/フィットネス|MZGenre.Healthcare_Fitness|
|ミュージック|MZGenre.Music|
|メディカル|MZGenre.Medical|
|ユーティリティ|MZGenre.Utilities|
|ライフスタイル|MZGenre.Lifestyle|
|教育|MZ

元記事を表示

watchOS 6 の注目点をふまえてSwiftUIでWatch Appを作ってみた!!

## はじめに
昨年の Advent Calendar で **日報ちゃん**という
Apple Watch の App を作りました。
出社,お昼ごはん,退社などの各アクティビティを
Slack の勤怠チャンネルに投稿するというわざわざスマホやPCを使わずに
手首の操作で完結するアプリです。

WWDC19 で watchOS に大もきな変更がありました。
また,SwiftUI も発表されたので SwiftUI で作ってみようと思い取り組んでみました。

7月の iOS 開発合宿で作り始めたのですがしばらく放置されてしまってました。
Qiita Advent Calendar のおかげで **勤怠ちゃん** としてようやく形にできました。

## watchOS 6 のここに注目!
### watchOS 6 から iPhone 側のアプリ実装が不要になった

watchOS 5 までは iPhone 側のアプリ実装が必要でしたが,
Watch App が単体で開発可能になりました。
iPhone 側のコンテンツありきの開発であったため,より自由な尖ったものを開発できます。

Xc

元記事を表示

iOSで使う暗号化処理をユニットテストする方法を考える

iOSアプリでちょっとした暗号化処理が必要な場合があります。たとえば何らかのハッシュ値をサーバーとの認証処理に使うといった例が考えられます。
ちょっとした処理なのでこんな感じで自前で実装することも多いのではないでしょうか?

“`swift
import Foundation
import CommonCrypto

final class MyCrypto {
func sha256(_ string: String) -> String {
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))

let data = string.data(using: .utf8)!
data.withUnsafeBytes { pointer -> Void in
CC_SHA256(pointer.baseAddress, CC_LONG(data.count), &hash)
}
retur

元記事を表示

Xcode11の新規プロジェクト作成につまずいた

# はじめに
Xcode11 で新規にプロジェクトを作成し、iOS13 未満もサポートしようとすると大量のエラーが出てしまいます:dizzy_face:

error

この辺りめんどくさくて最近作ったやつ(下記とか)は大抵 iOS13 以上サポートにしてましたが iOS13 未満もサポートするため調べてみました。

* [iOSのおしゃれな文字入力ライブラリつくってみた(swift)](https://qiita.com/am10/items/5c912c1fe723f816ee9e)
* [Swiftではじめる日本語プログラミング](https://qiita.com/am10/items/34281848c3c848659043)

# 対応
## SwiftUI を使わない
とりあえず新規作成時に User Interf

元記事を表示

クリスマス前にARでジョークアプリをつくってみた話

## 序
この記事は[iOS #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ios-2)の19日目の記事になります。
あんまり今年は書くモチベなかったのですが、ちょうどわいたところに空きがあって飛び入り参加しました。

とうようです。

普段は個人でiOSアプリつくったり、大学院でUIの研究室にいたり、[中高生にITを教えたり](https://life-is-tech.com/leaders/)しています。
ちなみに大学生・大学院生向けにちょうどこの**Life is Tech !**という中高生にITを教える団体のメンター募集がはじまっているので良かったら応募してみてください!笑
楽しい上にいろんなスキルが身につくのでぜひ!

>ーー切り取り線ーー<

さて、本題。

## はじまり

はじまりはこの秋、2019年9月にさかのぼります。

増税前のiPhone 11シリーズの発表。僕は長年iPhone 7 Plusを利用していたのですが、そろそろ欲しいと。
Face ID使ってみたいと。

そんなわけ

元記事を表示

Swiftでクリスマスツリーを描画してみた

##久々の投稿でSwift縛りでどんな記事にしよか…
Swiftでなにかクリスマスっぽい事をしたいと思ったけど
案が何も思いつかない。。。。

**ひらめいた!!**

昔、フラクタル図形の木をObjective-Cで作った事があるから
それをSwiftで作ったらええんや??

そうと決まれば~~真似~~インスパイアできるコードを探すんや!!

全然ええ感じのやつが見つからへん…

ちょっと微妙な木の形のやつならインスパイアできそうやし
こうなったらちょっと妥協するか。。

**どや!**
Simulator Screen Shot - iPhone 8 - 2019-12-16 at 21.27.58.png
(これだとただのフラクタル図やな、、、せや!クリスマスっぽく装飾しよ!)

元記事を表示

iOSエンジニアがWebをペアプロで実装してみた話

# はじめに

[GameWith Advent Calendar 2019](https://qiita.com/advent-calendar/2019/gamewith)の19日目の記事になります。

今回の記事は**iOSエンジニアの自分がWebの新施作をフロントエンジニアとペアプロをしながら実装した時の話**です。
自分は普段GameWithの**価値検証チーム**という少人数のチームで、アプリやWebの大幅な数値改善が見込めそうな施作をメインに企画・進行・実装まで一通り担当しています。

基本的に価値検証フェーズと本実装フェーズで分けて実装しており、価値検証フェーズにて目標数値に達したもののみ本実装フェーズに移行しています。
価値検証フェーズでは片方のみに展開することでUXが下がるといった施作以外は基本的にはスピード重視と施作を撃てる数を増やすためにiOS・Androidのどちらかのみで実装しています。

今回の施作はコンテンツの性質などから両OSで実装するのがベターとの判断になったので、Webで実装したものを両OSのWebViewで表示するといった形式を取っています。

元記事を表示

[サーバーレス]UnityとFirebaseでアプリのアップデートをせずに、動作と外観の変更を行う

この記事は、[鹿児島大学生 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kagoshima)の21日目の記事です。

##概要
以前、クライアントからの要件でサーバーを準備せずにアプリ内の表示を変更したいという要望があったので、その時に行なった対応と、UnityとFirebaseの連携を簡単に解説します。

今回はできるだけシンプルな状態で実装まで行おうと思います。
上手く活用すると、アプリの背景画像の変更を行なったり、広告表示の頻度もデータをみながら即時反映することができます。
またFirebaseとの連携でA/Bテストへの応用も簡単に行うことができます。

##環境
– iMac Catalina 10.15.1
– Unity 2019.3.0f3
– Firebase for Unity 6.8.1

Catalinaだと訳あってUnity2019.2系が上手く動いてくれないのでまだ正式リリースされていない2019.3系で行います。。。
UIが変わったのは個人的には好きです。

##セットアップ
[

元記事を表示

iOS Simulator(iPhone Simulator)をMacにインストールする方法

# この記事は
[![Screenshot from Gyazo](https://gyazo.com/1fdb1a3ea73e0d596d349b4a8c566585/raw)](https://gyazo.com/1fdb1a3ea73e0d596d349b4a8c566585)
MacではXcodeをインストールするとiPhoneやApple WatchのSimulatorを使うことができます。
この記事はその設定方法を書きました。

# 手順
## ① Xcodeのインストール
App Store、またはDevelopperサイトからXcodeをインストールします。
・[App Store](https://apps.apple.com/jp/app/xcode/id497799835)
・[Developerサイト](https://developer.apple.com/download/more/)

## ② Simulatorのインストール
(※結構時間かかります & 1つあたり2.0 ~ 3.5GBぐらいあります)
1. Xcodeを起動する
2. メニュー

元記事を表示

OTHERカテゴリの最新記事