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

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

SwiftUIを簡易的にUserDefaultsを使う方法

# はじめに
SwiftUIでViewModelを使ったUserDefaultsを使う方法はよく見かけるのですが、簡易的にUserDefaultsを使う方法がありましたので紹介します。
あくまでの簡易的な使い方です。

# 今回のサンプルコード
TextFieldに文字入力が終わるとTextに入力した結果が表示されます。
今回は、文字入力が終わったタイミングでUserDefaultsに保持して、アプリ起動時にUserDefaultsから読み出します。

1.png 2.png[Swift]GitHub検索プログラムをprotocol, associatedTypesで改良する

先日、Swiftの基本的な内容を記した本「改訂新版 Swift実践入門(石川洋資・西山勇世、技術評論社、2018)」に従って、GitHubのリポジトリの検索プログラムを実装しました。

GitHub検索用APIには豊富な検索オプションが用意されているのですが、この本ではユーザーとリポジトリの検索のみ記載されていたのでとりあえずそれに従って実装しました。

検索結果を表すために、ジェネリクスを利用したSearchResponse構造体を実装しています。

“`swift:SearchResponse.swift
struct SearchResponse: Decodable {
let totalCount: Int
let items: [Item]//構造体User, 構造体Repositoryを収められる

//中略
}
“`

この構造体は、`SearchRepositories`, `SearchUsers`という、APIへのリクエストを表す構造体にそれぞれassociatedTypesを用いて関連づけら

元記事を表示

SwiftUIでTabBarを作る方法

# はじめに
SwiftUIでTabBarの作る方法を紹介します。
TIPSとして役立ててください。

# 今回の作るTabBar画面
`TabAView`と`TabBView`を作りそれをTabBarで画面を切り替えるSwiftUIを作ります。

TabA.png TabB.png

# 作り方

## TabAViewとTabBViewを作る
File>New>File…でSwiftUI Viewで`TabAview`と`TabBVie

元記事を表示

RxSwiftをざっくりと理解する(1)基礎用語まとめ

##はじめに
[andfactory Advent Calendar 23日目](https://qiita.com/advent-calendar/2019/andfactory)の記事です!
RxSwiftの内容を初学者に向けてざっくりとまとめてみました。
第1回は基礎用語です。

##Observable
それを購読(≒監視)しているオブジェクトに処理されるデータを流すもの。
* Observableはelementを含むnextイベントを流すことができる。
* terminateイベント(error, completed)が流れるまで続く。
* Observableが停止するとイベントは流れなくなる。

##Subscribe
Observableを購読(≒監視)すること。
onNext,onError,onCompleted,onDisposedのタイミングで行いたい処理を登録することができる。
##Disposable
メモリリーク防止のために必要であれば購読を解除してくれるオブジェクト

“`swift

let observable = Observabl

元記事を表示

署名なしでiOSアプリのビルド&単体テスト〜GitHub Actions編〜

## はじめに

GitHub Actionsを使い、iOSアプリのビルドと単体テストを行うCIを構築します。

## 「GitHub Actions」とは?

GitHubが提供しているクラウドのCI/CDサービスです。

2019/11/14に一般公開されました。

## 環境

– Xcode:11.2.1 (11B500)
– Swift:5.1.2

## 注意

今回紹介するCIはもっとブラッシュアップできると思います。
あくまでGitHub ActionsでiOSアプリをCIする参考としてください。
この記事も随時更新していく予定です。

## 設定ファイルの構成

ワークフローはYAMLファイルに記述します。
最初に全体の構成を説明します。

“`yaml:run-unit-tests.yml
name: RunUnitTests

on: [push]

jobs:
build:
runs-on: macOS-latest

元記事を表示

古いXcodeで新しいOSの端末を動作させる

新しいiOSがリリースされたとき、それに対応したバージョンにXcodeをアップデートすることができない場合があります。
このような場合でもXcodeのバージョンをそのままに新しいiOSの端末でアプリをデバッグ実行できるようにする方法があります。

1. 新しいXcodeのdmgをダウンロードし、インストール
2. 新しいXcodeを起動すると、インストールのダイアログが表示されることがあるので、そのままインストール
3. 新しいXcodeを右クリックし、パッケージの内容を表示をクリック
4. 下記パスに新しいOSのフォルダがありますので、それをコピー
– `Contents/⁨Developer/⁨Platforms/⁨iPhoneOS.platform⁩/⁨DeviceSupport/XX.X`
5. 使用するXcodeへ上記と同じ階層へペースト

以上の操作により、利用できるようになりますが、うまく行かないこともありますので、参考程度にお願いします。

元記事を表示

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

#はじめに
先にタイトルのオチを書いてしまいましょう!

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

OSもこれまでの保守会社も違うiOSとAndroidアプリを一つの会社がまとめて受け持つことになり、過去の実装方針や思想の違いを感じながら保守を行い、いつ行われるかわからない次のリニューアルに向けで準備をすすめる話です。

弊社では現在デイリーアクティブユーザー120万人超えのモバイルアプリの保守をしています。
2011年から8年間iOSの保守のみを受け持って来たのですが、その実績から今年の5月末にAndroidもやってほしいと言われ、是非にということで、そのお話をお受けしました。
私自身がiOSよりもAndroid寄りのエンジニアなので、いつかAndroidの保守もやれればと思っていたことが、ついに現実になったのです!!

###ところが、そんなに甘い話ではなかった
Androidは今まで保守していた会社が複数あり、内部の構造はかなり煩雑
クラスの命名規則が意味不明、変数はキャメルケースとスネークケースが入り

元記事を表示

iOS 13でMapKitに新しく追加されたPOI(Point of Interest)フィルタリングを触ってみる

## はじめに
WWDC19で発表された内容が濃すぎて,
調べて使ってみたいけど扱えていない内容がまだまだたくさんです?

今回はそのひとつで iOS 13 から新しく MapKit に追加され
**Point of Interest(POI)** フィルタリングを触ってみました。

このセッションの短い時間ではありましたが紹介されています。(10分あたりから)
**What’s New in MapKit and MapKit JS**
[https://developer.apple.com/videos/play/wwdc2019/236/](https://developer.apple.com/videos/play/wwdc2019/236/)

## MapKit における POI とは

MapKit における **POI** とは Map に表示されている,
レストランとか学校など様々な場所表示です。それぞれアイコンもあります。
言われてみればあーあれかってなりますよね。
スクリーンショット 2019-12-23 18.22</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>MapKit</div>
<div class='tag-cloud-link'>Swift</div>
<div class='tag-cloud-link'>SwiftUI</div>
<div class='tag-cloud-link'>iOS13</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/MilanistaDev/items/bf8cd5cf01b9ba965148'>元記事を表示</a></div>
<h3 id=React Nativeを始めて4ヶ月の人間が1週間でどこまでアプリを作れるか?

React Native Advent Calendar 2019 [21日目](https://qiita.com/advent-calendar/2019/react-native)の記事です。

## はじめに
初めまして。
ecbo株式会社でエンジニアをしている江原([@yakiniku](https://twitter.com/yakiniku040220))と申します。
今年の8月にecbo株式会社に転職してきて初めてアプリの開発に携わったので、何かしらアウトプットしたいと思い、今回React Native Advent Calendar参加させていただきました。(土日体調崩して公開遅れました。:bow_tone1:)

内容はReact Nativeを始めて4ヶ月の人間が1週間でどこまでアプリが作れるかという内容です。(担当する曜日の1週間前に決めました。そのため内容は薄いのと、他の方の記事と比べて役になるような内容はほとんどないのでご了承ください。)

## 1週間で作った成果物
僕自身幼稚園から料理趣味でやっていて、日頃料理のメモをよく取るので個人で使いやすいようなメ

元記事を表示

画像処理で自炊書籍画像を読みやすく加工する 初級編

この記事は KLab Engineer Advent Calendar 2019 24日目の記事です。
AdventCalendarどころか、Qiitaへの、もっと言えばネットに向けた技術エントリの投稿自体が初めてになります suzuna-honda といいます。よろしくお願いします。

## はじめに

私は書籍をスキャンして電子書籍として読む、いわゆる「本の自炊」を趣味としています。
不眠症のケがあり、眠くなるまでの暇潰しとして、自炊した本を読書するのが日課になっています。枕の横にはiPadが欠かせません。

どの程度、深く、この「本の自炊」と向き合っているかといいますと、

– 書籍のスキャン
– 1冊ごとにパッケージング、管理の為のタグ付け
– スキャンした画像の画質調整、端末(iPad/iPhone)への最適化
– 端末(iPad/iPhone)へのデータ転送、閲覧

までの一連のワークフロー、**ほぼ全てのツール/ビューワを自作**して揃えています。

ハードウェア系、要はスキャナーやiPad/iPhoneに関しては流石に自作しようがなく、仕方なく市販品をそのまま使っていま

元記事を表示

忘備録-iOSの通信できるアプリ

趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。

– [本気ではじめるiPhoneアプリ作り Xcode 10.x対応 (Informatics&IDEA)](https://www.amazon.co.jp/%E6%9C%AC%E6%B0%97%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E3%82%8A-Xcode-10-x%E5%AF%BE%E5%BF%9C-Informatics-IDEA/dp/4815600031/)

##メイン実行ループとスレッドの基本

##イベント処理の概要図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542614/ecf8074

元記事を表示

忘備録-iOSのフレームワークとアニメーション

趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。

– [本気ではじめるiPhoneアプリ作り Xcode 10.x対応 (Informatics&IDEA)](https://www.amazon.co.jp/%E6%9C%AC%E6%B0%97%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E3%82%8A-Xcode-10-x%E5%AF%BE%E5%BF%9C-Informatics-IDEA/dp/4815600031/)

##フレームワーク
フレームワーク : 目的別にまとめた機能の集まり。
UIKitもフレームワーク。

iOSが用意しているフレームワークは大きく4つのレイヤーに分かれている。

Cocoa Touch : iOSアプリを作成するための主要

元記事を表示

SwiftUIで非同期で画像を表示する方法

# はじめに

この記事は、`ObservableObject`を使って非同期に画像をダウンロードする方法を紹介します。
List表示時などに使うと便利だと思います。
TIPSとして活用してもらえたらと思います。

# 作り方

## Step1.準備
画像を用意します。今回は、いらすとやの画像を活用させていただきます。

> スマートフォンを使うペンギンのイラスト
> https://www.irasutoya.com/2019/07/blog-post_4.html

画像のURLは`https://1.bp.blogspot.com/-_CVATibRMZQ/XQjt4fzUmjI/AAAAAAABTNY/nprVPKTfsHcihF4py1KrLfIqioNc_c41gCLcBGAs/s400/animal_chara_smartphone_penguin.png`でした。

## Step2.非同期で画像をダウンロードする

ObservableObjectを活用して、データを取得します。
バッググラウンドスレッドで画像を読み込み、`@Published`した変数に格納すると

元記事を表示

iOSエンジニア、AppCode使ってみる

この記事は [CyberAgent 20 新卒 Advent Calendar 2019](https://adventar.org/calendars/3976) の 10 日目です!

AppCodeとはSwift、Objective-C用のIDE(Integrated development environment)です。
iOS、macOS、tvOSのアプリケーションを作る上で利用されるIDEは通常はXcodeですが、今回はJetBrainsのIntelliJ IDEAの一つである、AppCodeを紹介したいと思います。

## 僕がAppCodeを使う理由

#### シンタックスハイライトが安定してる

逆になんでXcodeのシンタックスハイライトが不安定なのか分かりません。
皆さんもXcodeのシンタックスハイライトが利かない問題でイライラする事ありますよね、それが完全に無くなります。
AppCodeはプロジェクト起動時にモジュールとシンボルのロード、モジュールマップの生成、などなどを行うので最初のロードが終わればシンタックスハイライトが崩れることはありませんでした。

元記事を表示

[swift]SearchBarやTextField にてUIMenuControllerを非表示にする

### どんなもの?

スクリーンショット 2019-12-23 17.48.31.png

長押しすると出てくるやつです。
そもそもこのバー自体出したくなかったので対応しました。

### ソース

“`swift
// UIMenuController を非表示にする
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
OperationQueue.main.addOperation({
UIMenuController.shared.setMenuVisible(false, animated: false)
})

元記事を表示

iOS13対応したら、SKProductsRequest周りでつまずいた

これ[iOS13、Xcode11 私はこうしてつまずいた Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ios13_xcode11) の23日目を担当するアガツマです
普段は、ビジネス版マッチングアプリ [yenta](https://yenta.talentbase.io/yenta) のiOS版を開発をしています。

前日の記事
[iOS13のメインスレッドチェック厳格化とNotificationCenterの組合せでつまづいた](https://qiita.com/y-some/items/938adfc9df6fbf3631d7)
と少し被るのですが、1つのケースとして誰かの役に立てたら幸いです!

# つまずいた経緯

iOS13対応の諸々を完了し、アプリの課金プランについて記述している画面を開こうとしたところクラッシュ。。。
xcodeでは、以下のようなエラーメッセージが出力されていました。

“`
Terminating app due to uncaught exception ‘NSInte

元記事を表示

Google検索結果の「もっと見る」をiOSショートカットでページ表示にする

#iOSのショートカットを使ってGoogle検索結果をカスタマイズする
 (記載している内容は2019年12月23日現在/iOS13.3において確認)
 iPhoneのSafariでGoogle検索を行うと、2ページ目以降の検索結果を表示する際にページを切り替えるのではなく、「もっと見る」をクリックするとページ内で読み込んで無限スクロールするようになっている。
 これはFirefox(iOS版)でも同様の動作となるが、Google Chrome(iOS版)では「もっと見る」ではなく「次へ」でページを切り替えるようになっている。

 どちらが良いかは一長一短あるが、

– 検索結果を表示した後にブラバすると高い確率でページ先頭に戻ってしまう
– ブラバすると再読み込みが走り、場合によっては真っ白な画面で固まる
– 『問題が起きたため、このWebページが再読み込みされました。』というメッセージが出る(そして再読み込みは失敗する…)

などの現象が発生することから、SafariでもChromeと同じように「次へ」でページを切り替えるようにしたい。
#やること
– Safariで表示し

元記事を表示

iOSでのATDD開発(基礎編)

以下の続きです。

* [きゅうりのことはじめ](https://qiita.com/gdate/items/9f0c381141927d727222)
* [iOSのATDD開発(準備編)](https://qiita.com/gdate/items/64b15767b04e20efab47)

#システムアーキテクチャ
前記事に記載してますが、再掲。
![_Cucumber Workflow (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457333/20a2c2f6-87bc-0e2e-ed4b-b2c4b32754b9.jpeg)

#プロジェクトの構成

“`
├─ src
├─ test
├─ java
| └─ jp.co.hoge.Project.E2ETest
| ├─ pageobject
| └─ steps
| └─ utils
└─ resources

元記事を表示

StartTag: invalid element name

# 背景
チーム開発において、developブランチからプルしてきた際に、xibファイルの変更による「問題の状況」のエラーをみたことがあると思います。検索してすぐに出てこなかったので、一応、記事にしておきます。

# 問題の状況
gGgRq.png

# 解決方法:規定のxibファイルのコンフリクトを解消すればいい
この状態の問題は、xibファイル内に変更が加えられたために生じます。
僕の知識の問題ですが、普通にはこのconflictを解消するためにファイルを開くことがXCodeの初期設定ではできません。
きっと開く方法があると思うのですが、特に解決方法にこだわりがなければ、別のエディタで開くとファイルの中身が見れるので、すぐに修復可能です。大抵の場合は、HEADを残して変更をコミットすることになりそうです

元記事を表示

[Swift] iOS13とフォントのお話

# はじめに

[Combineを使ってMVVMでNotificationCenterを実装する](https://qiita.com/H_Crane/items/48fbf9ccde2090e7202c)でも書きましたが、ありがたいことにiOS13以上の案件に携わりました。そこでは、新しくiOS13で追加されたフォント周りに関しても触れることができ、大変良い経験となりました。

また、それに付随してフォントの話で登壇する機会をいただきました。
(画像をクリックすると資料に飛べます)

[![thumbnail](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/513fdbc4-9d7f-964c-79da-a1003a8e0be9.png)](https://speakerdeck.com/hcrane/ios13tohuontofalseohua)

内容はスライドをみていただくとわかりますが、iOS13周りで増えたフォントに関しての話をさせていただき、、
具体的なコードの話はあまり触れなかったの

元記事を表示

OTHERカテゴリの最新記事