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

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

FlutterのGoogle Fontsプラグインgoogle_fontsを解析

# はじめに

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

今年もすぐに枠が埋まってしまっていたのでFlutter Advent Calendarに参加する予定はなかったのですが、11日分に引き続き12日枠が投稿されずに空いていたのでちょうどFlutter Interactでgoogle_fontsプラグインが公開されたので急遽この記事を書くことにしました。

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

# google_fontsとは?

先日ブルックリンで開催されたFlutter Interact 2019で発表されたプラグインで、あのGoogle Fontsを簡単に利用できるようになります。今までのようにフォントをアセットとして組み込む必要がなくなるのでより軽量でデザイン性に優れたUIデザインを組むことが出

元記事を表示

iOSのUIKitで覗き穴のようなビューを実現する

iOS の UIView で下のスクリーンショットのような覗き穴のようなビューを作る方法です。画像の Cropper ビューなんかを作るときにも必要になりますね。

この完成形のスクリーンショットのビュー構造は

– スクリーンいっぱいの `UIImageView`
– その上に同じサイズの `HoleView` (今回作るビュー)

というようになっています。

### コード

タッチした場所を中心に覗き穴ができるようなコードの例です。
覗き穴の部分の実装は UIView の `drawRect(_:CGRect)` メソッドをオーバライドしている部分で、やっていることは次のとおりです。簡単ですね。

– まずビューの全体を塗りつぶす(=穴の外側となる)
– ブレンドモード `.clear` を指定して穴の部分を塗りつぶす

元記事を表示

【iOS】Xcodeのビルドの仕組みを知り、ビルド時間を短縮する方法を探る

「Xcodeのビルドに時間がかかる!」
「なんか急に遅くなった?」
私はこう感じることがよくあります。

かつては
早く終わらないかなと思いつつ
他の作業をしながらただただ待っていました。

その後
色々と調べて改善する方法を少しは知ることができましたが
そもそもXcodeのビルドの仕組みを知らず
根本的に何が問題になっているのかがわかっていませんでした。

そこで
今回は

Xcodeがビルドの仕組みや
ビルド時間を短縮するための方法などを
いくつか見ていきたいと思います。

# Xcodeのビルドの流れ

Xcodeは下記の図のようにビルドを行います。

![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/219965/7d5f1714-a670-7512-5b80-8c8e4a572875.png)

それぞれ何をしているのかを簡単に見ていきます。

## PreProcessor

– Compilerへプログラムを送り込めるように変換
– マクロをそれぞれの定

元記事を表示

【Swift】6つのプロジェクトを経験して、一年前のプログラミングを始めた頃のコードを見返してみた

## はじめに

こんにちは、学生でiOSアプリエンジニアをやっている者です。

AdventCalendarは何を書こうかなーーっと思っている矢先、
コードを書いて丁度はや**一年**。

つまり**プログラミングを始めて、一年**ということなんですね。自分にとって。

そこで、いっっっちばん最初に作ったアプリのソースコードを見返すことにしました!良い機会だし。とても初心者の頃ですね。

この一年くらいで6つのプロジェクトに関わってきましたが、まだまだ至らない部分も多く感じると同時に成長した部分もあるなと感じます。

とりあえず、反面教師的な感じでみてください、、、。

見ていきますね〜。

## 概要
読んだ書籍を管理する「書籍管理アプリ」となります。
APIの部分では、ユーザー情報の管理と書籍情報の管理ができるようになって

元記事を表示

toio コア キューブの状態を SwiftUI で表示してみた

## はじめに

日頃の業務や趣味では TypeScript を使うことが多いですが、最近は個人的な興味で、Swift を使った iOS アプリの開発を始めています。
まだ Swift の文法や流儀などよくわかっていない状況ではありますが、いろいろ調べる中で「SwiftUI」が便利そうだと感じ、今回試しに、[toio コア キューブ](https://toio.io/) (以下、キューブ) の位置や向きの表示に使ってみました。

下図は今回作った iOS アプリのスクリーンショットです。
IMG_851D7CD86E95-1.jpeg
画面の上半分で、接続中のキューブをリスト形式で表示しています。
キューブは 2台以上接続することもでき、画面右上の「Add」を押すたびに、リスト項目が増えます。
リスト項目はそれぞ

元記事を表示

おしゃべりAIがひたすらLive配信するアプリを作った話

# この記事の要旨
所謂、「個人開発で作ったものを紹介する記事」です。
個人開発で「おしゃべりAIがひたすらLive配信するアプリ」を開発&リリースしてみたので、その経緯や開発・運用の紹介をしています。
一部分の専門的な技術に特化した記事ではないですが、個人開発をしながら苦労したことや工夫したことなども織り交ぜているつもりですので、個人開発やアプリ運用に興味のある人や「対話システム」領域に興味のある人の参考になれれば幸いです。

※ この記事は個人開発について書いたもので、所属企業の活動とは関係がありません。(アドベントカレンダーで書いておきながらですが・・・)

# 自己紹介
グロービス でアプリエンジニアとスクラムマスターをしています。
本業と並行して、学生時代から続けている個人開発でのアプリ運用を行なっています。
本業の開発と個人開発の「相乗効果」が大きな成長を生むと感じ、このスタイルを続けています。

「個人開発」の魅力については、私が強く影響を受けている先輩エンジニアであり、個人開発仲間である@masaibarさんのQiita記事「[個人開発のすヽめ](https://qi

元記事を表示

遷移とviewヒエラルキーとDark Mode

こんばんは。着色職人Lv.2です。

世の中のiOSエンジニアは以下の2つに分類されます(要出典)。

* お行儀よくアプリを開発してきたので、サクッとDark Mode対応を終わらせることができた人
* 無秩序にviewと色を作成し乱用してきたので、すぐにはDark Mode対応が終わらない残念な人

~~1番目のお行儀のよい人は羨ましい~~
2番目の残念な人はどうすればいいでしょうか?
先に負債を完済してお行儀よい人になってもよいのですが、__Dark Mode対応が終わった箇所から順次解禁__という道がある……かもしれません。

つまりどういうことかというと、
Dark Mode対応が終わっていないviewを全てlight styleに指定し、バージョンアップのタイミングで対応済みviewがあればlight style指定を解除し公開する、ということです。
(全viewへの対応が完了するまでは白黒のまだら模様なアプリを晒すことに……)

というわけで、本記事ではいかにlight styleに強制するかを考えていきます。

# 復習: user interface styleを固定

元記事を表示

RxSwiftでUXを考慮した(Gmailアプリライクな)詳細画面を実装する

この記事は、[Classi Advent Calendar 2019](https://qiita.com/advent-calendar/2019/classi) の15日目の記事です。

こんにちは、ClassiのiOSアプリエンジニアの@yoko-yanです。
Classiは、サーバーサイド、特にRubyエンジニアが多くて、サーバーサイドの記事が多いと思うんですが、アプリも負けずに書いていきたいと思っているので、よろしくお願い致します。
最近は社内でRxSwift勉強会を開催するなど、社内のRxSwiftの啓蒙活動を行っています。

そういったこともあり、せっかくなので、RxSwiftで試行錯誤して作った部分を公開できる範囲で記事にしてClassiのアプリも、しっかり作っているぞ的なイメージを持たせられればと思っています。

# UX(ユーザーエクスペリエンス)を考慮した詳細画面とは
さて、現在開発に携わっているアプリの中では、いろいろな工夫を施しているんですが、その中でも、UXの体験向上として、工夫した箇所があるんですが、一覧画面と詳細画面という構成の中で、詳細の前後のページに

元記事を表示

iOS13.3 @Publishedでの値更新からsinkが呼ばれなくなった?(ミス解決)

#iOS13.3では@Publishedでの値更新でsinkが呼ばれない?

##起きたこと
iOS13.3に更新したところ、SwiftUIのEnvironmentObject上の@Publishedの更新通知が受け取れなくなりちょっとハマりました。結局の所、もともと更新通知を受け取る処理を書き間違えていたことが原因でした。

##修正前
“`swift:
let _ = self.model.$text.receive(on: DispatchQueue.main)
.sink { (value) in
print(“receive”)
self.text = value
}
“`

##修正後
“`swift:
var task:AnyCancellable? = nil

self.task = self.model.$text.receive(on: DispatchQueue.main)
.sink { (value) in
print(“receive”)

元記事を表示

CAShapeLayer による図形のストロークアニメーション

iOS で図形を描画したい場合、`CAShapeLayer` を使うと、様々な図形を描画することができます。
また、Core Animation を使うことで、図形をアニメーションさせることができます。

簡単な実例を Xcode の Playground で試してみます。

# Playground の準備

まず、Xcode で iOS 用の Playground を作成して、View を表示します。

“`swift
import UIKit
import PlaygroundSupport

let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 400, height: 400)
view.backgroundColor = .white
PlaygroundPage.current.liveView = view
“`

View のサイズはなんでも良いですが、とりあえず 400×400 にしておきました。次のように白い View が表示されます。

Playgr</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>CoreAnimation</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/usamik26/items/fa0495de947549387775'>元記事を表示</a></div>
<h3 id=Flutterウィークリー #85

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#85の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-85

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# 読み物&チュートリアル

### Flutterオンラインおよびオフライン接続を実装する方法

How to Implement Online & Offline Connectivity in Flutter

Sagar Shendeによるこのチュートリアルで、ユーザーがオンラインまたはオフラインのときにアプリ内の情報を処理する方法を学びます。

### Flutter Webを使用してサーバーにファイルをアップロードする
https://rodolfohernan20.blogspot.com/2019/12/upload-files

元記事を表示

Flutterウィークリー #84

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#84の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-84

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# 読み物&チュートリアル

### FlutterモジュールをネイティブのAndroidプロジェクトに追加し、Codemagicでテストする方法
https://blog.codemagic.io/flutter-module-android-yaml/

Flutterモジュールを既存のAndroidアプリに統合する方法に関するSouvik Biswaによるチュートリアル。

### Flutterアプリケーションで複数のテーマを管理する
https://blog.dammak.dev/managing-multiple-themes-in-flutt

元記事を表示

Create MLとCore MLを使って、カメラに写った人が嵐のメンバーの誰かをリアルタイムで判定する

この記事は iOS#2 Advent Calendar 2019 15日目の記事です。
初めて Advent Calendar に参加するので若干の緊張があります笑
よろしくお願いします!※Qiita界隈に愛嬌を振りまいていくスタンス

今回は、「Create MLとCore MLを使って、カメラに写った人が嵐のメンバーの誰かをリアルタイムで判定する」という題でやっていきます。Core MLに興味ある方は、私の他にも @cthxn77r さんや @takashico さんが今年のアドベントカレンダーに投稿されていましたので、そちらもどうぞ!※Qiita界隈に”全力で”愛嬌を振りまいていくスタンス

– [Appleの機械学習がヤバい](https://qiita.com/cthxn77r/items/b6727e6731fe71e2c52a)

– [Swift初心者がCoreMLで機械学習に足を踏み入れてみた](https://qiita.com/takashico/items/91c735f74bfdc5309d16)

#やったこと
以下の動画のようなことができるようになります。

元記事を表示

複数クラスへ同時にデリゲート通知を送る方法

デリゲートによる通知を送る際は通常1個のクラスしか通知先に指定できませんが、複数のクラスへ同時に通知を送りたい場合があるかと思います。
同時に通知を送るにはNotificationCenterを使う方法もありますが、この手法は通知元から受け取ったデータを通知先で判別するのが困難です。一方、デリゲートは通知先へ渡すデータを直接引数に指定することができます。
そこでデリゲートによって複数のクラスへ同時に通知を送る方法を考えてみました。

初めての投稿で、まだ言語の知識も浅いので大目に見ていただけると幸いです。
#デリゲートモデルの定義
##DelegateCenter
通知先クラスのリストを持ち、実際に通知を送るクラスです。

“`objc:DelegateCenter.h
#import “DelegateObject.h”

@interface DelegateCenter : NSObject
@property (nonatomic) id delegate;

– (void)doDelegate;

@end
“`
“`objc:DelegateCenter.m
#i

元記事を表示

パラメタライズドテストのメリット解説(Swift)

## はじめに

本記事は [Swift Advent Calendar 2019](https://qiita.com/advent-calendar/2019/swift) の14日目の記事です。
パラメタライズドテストのメリットについて解説します。

## 注意

本記事は [「YUMEMI.swift #5 ~Free Talk~」のLTで使用した資料](https://gist.github.com/uhooi/6715b32d8e936e122816e2d069a0356c) を元にしています。
LT時は [MarkdownをVimで表示した](https://speakerdeck.com/uhooi/parameterized-test-merit) ので、よかったら併せて見てください。

## 用語

本記事で使う用語を説明します。

|用語|意味|
|:–|:–|
|テストメソッド|自動テストのメソッド|
|テストコード|自動テストのコード|
|プロダクトコード|通常のソースコード。テストコードの対義語として使う|

## あるメソッドのテストケースを考える

元記事を表示

Xamarin.Forms でガワネイティブアプリを作るときのテンプレートプロジェクトを作る1

今年は専ら Angular で Webアプリを作ったり、ガワネイティブアプリを作ったりしていますが Xamarin のアドベントカレンダーと聞いてやってきました。

## 概要

最近は、モバイルネイティブアプリよりも Webアプリ(SPA/PWA)、そしてそれを利用したガワネイティブアプリを推している私ですが、ガワネイティブアプリを作る時の「ガワ」には Xamarin(Xamarin.Forms) を採用しています。

なぜガワネイティブなのか?ネイティブではなく、Web(PWA)でもないのか?については、

* [Angular と Firebase で月間PV1億超えの PWA を作った話 – Qiita](https://qiita.com/MasanobuAkiba/items/d2d4be3f8fd2e23c0c1a)

のエントリがよく解説されていますのでご一読を。私のケースは BtoC ではなく BtoB であるため、全面的に一致するわけではありませんが、内容については大いに同意できます。

ガワネイティブアプリは、Webアプリがネイティブの機能を欲するから採用されるわ

元記事を表示

iPhone で交通系IC(Suica、PASMO、ICOCA、…etc.)を読み取ってみよう!

[運転免許証](https://qiita.com/treastrain/items/58e69a1d82dccde48770)、[物販向け電子マネー(楽天Edy、nanaco、WAON)](https://qiita.com/treastrain/items/f5c518486d19ba3573d3)に引き続き、今回は交通系ICである Suica、PASMO、ICOCA などの残高を iPhone で読み取ってみましょう!

# 環境
– 開発
– Xcode Version 11.3 (11C29)
– Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15).
– macOS Catalina 10.15.2(19C57)
– 実機
– iPhone 11 Pro (A2215、MWCC2J/A)
– iOS 13.3 (17C54)

# 実行結果
スクリーンショット 2019-12-15 0.17.57.png【Unity+ARKit3(+PeopleOcclution)】カラスがゴミ袋を回収するクソアプリを作る

この記事は[クソアプリ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kuso-app) の15日目の記事です。

クソアプリクリエイターの皆さんが知見や学びの深い全然クソじゃないアプリを皆さん生み出していく中、
自分のためだけに勉強がてら新しいiPhone使って作りたいものを作りました:innocent:

ARで認識した床面をタップすると、ゴミ袋が出てきてカラスがせっせと回収に行くアプリです。
ゴミ袋を回収すると、ポイントカウントしていきます。
子供には好評でした。

![コンポ 1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100912/7095dc2b-917e-8a85-1079-548de2b0aeb8.gif)

今回制作したものは時短でやろうと思い、Asset Storeの使用が多いのですが、
Asset Store関連のものを覗いたプロジェクトデータをGithubにアップしたので、合わせて見てみてください

元記事を表示

SwiftUI×HealthKitでiOSデータ入門(後編)

# HealthKitデータ取得 & Firebase 編

ここまで SwiftUI のキャチアップをしつつ[前編](https://qiita.com/_kenken82/private/22df88d1b148739837ea)で環境を構築し,[中編](https://qiita.com/_kenken82/private/f9de71e58be5b57f3634)で HealthKit を利用可能にしました.今回は実際に HealthKit で歩数データを取得します.

## HealthKitで歩数データを取得
前回の記事で権限は得られたのでデータの読み出しが可能となっているはずです.次にデータを取得していきます.少しややこしいです.細かいところは順次付け足していくとして,とりいそぎで書き加えたコードだけを載せます.

DataCollection.swift を編集していきます.body より前に以下の変数を定義していきます.

“`Swift
let type = HKObjectType.quantityType(forIdentifier: .stepCount)!

元記事を表示

FirebaseとUnityの連携 入門(Cloud Storage編)

この記事は、[Firebase Advent Calendar 2019](https://qiita.com/advent-calendar/2019/firebase)の15日目の記事です。

## 概要

以前、『[FirebaseとUnityでアプリ開発(ハンズオンみたいなやつ)](https://qiita.com/gremito/items/dfb2080300955c5d5768)』という記事をアップし、そこでFirebaseとUnityの連携方法を簡単に解説しました。

今回は特定のFirebaseのサービスを扱う際、まずは0から作るのではなく、サンプルを活用してFirebaseとUnityの連携をいち早く体験できる方法のご紹介です。

Unityの場合、AssetBundleをサーバに配置し、`UnityWebRequest.Get`などを使ってAssetBundleデータをダウンロードしますよね。
そのため今回は、[Cloud Storage](https://firebase.google.com/docs/storage/unity/start?hl=ja)を

元記事を表示

OTHERカテゴリの最新記事