iOS関連のことを調べてみた2020年01月20日

iOS関連のことを調べてみた2020年01月20日
目次

[Swift] IntやDoubleなどの数字オブジェクトを2倍にする関数でジェネリクスを使ってみた

# 概要

業務でInt型やDouble型を単純に2倍する関数を作りたい時に戸惑いましたのでググってみました。

“`swift

/// これを型ごとに作ると、関数が増えてしまって冗長なので書きたくない
func multipleValue(_ value: Int) -> Int {
return value * 2
}

func multipleValue(_ value: Double) -> Double {
return value * 2
}

func multipleValue(_ value: CGFloat) -> CGFloat {
return value * 2
}

multipleValue(2) // 4
multipleValue(3.14) // 6.28
}
“`

これをクールに一つの関数にまとめたいと思いました。
さてどうすればいいのかを考えるのが今回のテーマです。

## ジェネリクスを使う

すぐに

元記事を表示

React Native体験入学【環境構築】【標準コンポーネントの使い方】【リリースまで】

最近までNext.jsの入門してブログシステム作ってたけど、どうもwebpack周りで詰んでしまったのでもう少し実戦練習できることをやってみようと思ってReact Nativeを始めることに。あまりNext.jsに向いてないブログシステム作るより、ガッツリReact使いまくるアプリ制作でコーディングしまくりたい。

とりあえずReact Nativeの基本情報と、環境構築、ドキュメントやリファレンスの流し読み、そして簡単なアプリを作ってみようと思う。予定は簡単な「ダイス」アプリ。できればリリースするところまで経験しておきたい。

##目次(暫定)

1. **環境構築**
1. React Nativeとは(クロスプラットフォーム開発環境)
1. Reactとは(UI構築のためのJSライブラリ)
1. Expoとは(OSに依存しないビルド環境)
1. 統合開発環境
2. Xcode
3. Android Studio
1. 開発ツールのインストール
2. Homebrew
3. No

元記事を表示

【Swift】UICollectionViewCompositionalLayoutを使って数種類のカスタムレイアウトを実装してみる

# はじめに
WWDC2019で新たに発表された、UICollectionViewのレイアウト手法である**UICollectionViewCompositionalLayout**を使っていくつかカスタムレイアウトを作ってみました。
※ iOS13以降の環境にて、今回作成したサンプルを動かせます

# UICollectionViewCompositionalLayoutとは
詳細については、WWDCのセッションを参考にして頂ければと思いますが、ざっくり言うと、

– iOS13から**UICollectionViewCompositionalLayout**が登場したことで、**UICollectionViewFlowLayout**や**UICollectionViewDelegateFlowLayout**に加えて、UICollectionViewのレイアウトを定義する方法が1つ増えた。
– iOS13から**UICollectionViewDiffableDataSource**が登場したことで、**UICollectionViewDataSource**を準拠して行なってい

元記事を表示

FirebaseのRemoteConfigを使ってキャンペーンのようなモーダルを表示させたい[RemoteConfig応用編]

##最初に
このQiita記事は、RemoteConfig初級編の応用編として書かれているため、[RemoteConfig初級編](https://qiita.com/mototaji/items/3e293f31f9bbf388e216)がまだの方はこちらからお読みください。

##やりたいこと
応用編では、初級編でやったことを用いてLabelと画像の値を変更してモーダルで表示することをします。
完成形の画面はこんな感じだよ!

##RemoteConfigの設定
画像を参考にしながら、FirebaseのRemoteConfigの画面から、任意のパラメータキー(card_key)デフォルト値に以下のjsonを入力します。

“`json:RemoteConfig
{
“title”: “企画のタイトル!!!”,

元記事を表示

FirebaseのRemoteConfigを使ってLabelの値を変更しよう![RemoteConfig初級編]

##開発環境
Xcode: Version 11.3
実機iPhone: iOS 13.1
Firebase: Version 6.14.0
FirebaseRemoteConfig: Version 4.4.6

##やりたいこと
FirebaseのRemoteConfigを使ってLabelの値を変更したい。
初級編では、RemoteConfigを利用してViewControllerのLabelを変更してみようということで以下の画像のように、「Firebase 勉強中!!!」の文字を実際にRemoteConfigを利用して表示させていきます。

**RemoteConfig応用編**
応用編では、RemoteConfigを利用してモーダルの値を変更してモーダルで表示することをやります。
[応用編はこちらをクリック!](h

元記事を表示

クリーンアーキテクチャーをざっと理解できる短いコードを書いた

クリーンアーキテクチャーは沢山インターフェースやクラスが登場し、その関係をざっと把握するのが難しいです。
そこですべての要素が入ったなるべく短いコードを書いてみました。XCodeのPlaygroundなので、そのまま実行できます。[githubのリポジトリはこちらです。](https://github.com/TokyoYoshida/CleanArchitecturePlayground)なお、今回はざっと理解することを優先するため、クリーンアーキテクチャーについての詳しい説明は割愛します。参考記事をご覧ください。

このコードは、Uncle Bobの書いた[Clean Architecture 達人に学ぶソフトウェアの構造と設計](https://booklog.jp/item/1/4048930656)と、次の記事を参考に書いています。

参考記事:
実装クリーンアーキテクチャ: https://qiita.com/nrslib/items/a5f902c4defc83bd46b8
Laravelで実践クリーンアーキテクチャ: https://qiita.com/nrslib/i

元記事を表示

CMSampleBufferのCの関数使わなくてよくなったみたい

これまでCMSampleBufferからImageBufferを取り出す時などは

“`swift
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
“`

という関数を使っていましたが、iOS13.0から

“`swift
@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
public var imageBuffer: CVImageBuffer? { get }
“`

というプロパティが生えて、

“`swift
sampleBuffer.imageBuffer
“`

でアクセス出来るようになりました!
imageBufferの他、timingInfoやformatDescriptionも同様に取れるようになっていました。
便利ですね!

元記事を表示

フライウェイトをSwift5で実装する

※この記事は「全デザインパターンをSwift5で実装する」https://qiita.com/satoru_pripara/items/3aa80dab8e80052796c6 の一部です。

###The Flyweight(フライウェイト)

####0. フライウェイトの意義

同種のオブジェクトを大量に作らなくてはいけない時、それらの中に共通する不変のデータがある場合、これを複数のオブジェクトから参照するような設計にすると良い。

もし、全オブジェクトが同じデータを直接保持するとなると、生成するオブジェクト数が多い場合はかなりのメモリの無駄につながってしまう。

これがフライウェイトというデザインパターンである。

####1. フライウェイトを使わない場合

宇宙船を表すクラス`SpaceShip`のオブジェクトを1000個作る場合を考える。

“`swift:SpaceShip.swift
public class SpaceShip {

//宇宙船の外見(形およびテクスチャ)を表すプロパティ
private let mesh: [Float]

元記事を表示

[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Mediator~

この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。

**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)

# Mediatorパターン概要

– Mediatorとは「仲介者」という意味です。
– **複数のオブジェクト間で直接やり取りをせずにMediatorを介してやり取りします。**
– 各オブジェクトが依存する相手をMediatorだけにすることで、オブジェクト同士が疎結合になり、関連オブジェクトが多い場合には保守性を向上できます。
– GoFのデザインパターンでは**振る舞いに関するパターン**に分類されます。

# 使い所

実務的な例としては、**UIPageViewControllerの配下にある子ViewControll

元記事を表示

iOS, Androidアプリの価格変更(キャンペーン)の仕方

# はじめに
以前アプリをリリース([iOS, Mac, Androidのアプリをリリースしてみた
](https://qiita.com/am10/items/41d94d5175dbf63fc706))したのですが、複数の方から100円も払えるかクソが!!といわれました:sob:

まだ機能が思ってる完成形には達していないし、やっぱだれかがダウンロードしてくれないとおもしろくないししばらくは無料にすることにしました!!

たまにみるキャンペーンみたいなので期間限定無料をやりたいと思い調べていたのですがやり方があんま出てこなかったので備忘録として書きます。

# iOS, Mac版
iOSとMacアプリについてです。やり方はめっちゃ簡単。(だからあんま調べてもでてこないのかも)

1. 下記ページを開きます
App Store Connect -> マイ App -> 対象アプリ -> App Store -> 価格および配信状況
2. 価格表の「価格変更を計画」をクリック
3. 価格、開始日、終了日を選択
ios_price

元記事を表示

GatsbyJSとNetlifyでiOS/AndroidアプリのLPを勢いで作ってみた

## 経緯
2020年1月にiOSアプリをリリースして、もともとAndroidのアプリがあったので
これは今ならLP作れるのでは… :sparkles:
という浅い考えと、何か新しい方法で試してみたいという欲求から今回は
GatsbyJSとNetlifyを使ってLPを作る事にしました。

Twitterでいろいろ教えていただき、自分の中でベストプラクティスを考えたので紹介します。

## 結論

先に結論を

元記事を表示

"The bundle uses a bundle name or display name that is already taken."が出た時の対処法

iosアプリを申請しようとしたらこんなエラーが

```
ERROR ITMS-90129: "The bundle uses a bundle name or display name that is already taken.
```

でググってみるとbundle nameかbundle display nameが既にあるアプリとかぶってますよというわけだ。

なのでinfo.plistのBundle nameを適当な自分の好きなものに変更すればビルドが通るはずです。

## まとめ

審査中につまずいたことがたくさんあったのでいろんなこと書いていきます!

## 参考

元記事を表示

スマホアプリ開発者のための2019年動向まとめ

# はじめに

2019年は新元号「令和」のスタートやラグビーワールドカップなどなんとなくめでたい年でした。年始まで忙しかったので2020年の1月中旬ですが2019年のスマホアプリ業界をこっそりまとめます。

個人的には2019年はAndroidアプリを中心にネイティブアプリ開発保守をしていました。
スマホアプリ開発に携わっていない人もこの記事を見れば2019年のいろいろが分かるかも。
振り返り用に「ふむふむ」「へー」程度に見ていただければ幸いです。

【前年】
[スマホアプリ開発者のための2018年動向まとめ](https://qiita.com/keidroid/items/88ee170f8bc697d4f7e9)
[Unityでスマホアプリ(特にプラグイン)を開発している人のための2017年対応まとめ](https://qiita.com/keidroid/items/5d942afa4ec69f97bd3d)
[Unityでスマホアプリ(特にプラグイン)を開発している人のための2016年対応まとめ](https://qiita.com/keidroid/items/76ff2

元記事を表示

NeumorphismをSwiftUIで簡単に実装できるライブラリ、Neumorphismicを作ってみた

先日[Neumorphism: 令和時代のスキューモーフィズム](https://qiita.com/touyoubuntu/items/bf887093ec7265efe201)を読みました。

これが流行る頃にはSwiftUIも使えるようになってるだろう…ということでSwiftUIでNeumorphismのライブラリを作ってみました。

SwiftPMにしか対応していませんが、Xcode 11からとても使いやすくなりましたし、SwiftUIのOSSなのでこれで十分だと思います。[スターつけてくださると嬉しいです!](https://github.com/mcasashi-aso/Neumorphismic)

# 完成形

Demoの画面です。SwiftUIということで全プラットフォームのDemoを一応作りましたが、iOS以外は図形が表示されるだけの手抜きです。
Demo viewiOS の Dynamic Type でテキストサイズはどのくらい変化するのか?

## はじめに

iOS のアクセシビリティ機能の1つにユーザーインターフェース上のテキストサイズを自動的にスケーリングする Dynamic Type があります。

[Scaling Fonts Automatically - UIKit | Apple Developer](https://developer.apple.com/documentation/uikit/uifont/scaling_fonts_automatically)

Android ではテキストに対して Scale-independent Pixels (sp) という単位でのサイズ指定するのとは異なり、テキストに対して Header, Body のような用途別のスタイルで指定するのが特色です。

そのため、ユーザーのサイズ設定に応じて各スタイルのフォントサイズがどのように変化するのかが想像しにくいため、サンプルアプリを作って見た目と数値で確認できるようにしてみました。

## サンプルアプリ

サンプルアプリのリポジトリはこちらです。

[temoki/UIKit_DynamicType - GitHub

元記事を表示

(swift)画像のデータサイズを縮小する方法(UIImage)

#方法

`UIGraphicsImageRenderer`を使用することで、画像のデータサイズを変更することができます。

以下の`Extension`を使用することで、`resizedメソッド`が使えます。
(参考: https://stackoverflow.com/questions/29137488/how-do-i-resize-the-uiimage-to-reduce-upload-image-size)

```swift:extension
extension UIImage {
//データサイズを変更する
func resized(withPercentage percentage: CGFloat) -> UIImage? {
let canvas = CGSize(width: size.width * percentage, height: size.height * percentage)
return UIGraphicsImageRenderer(size: canvas, format: imageRe

元記事を表示

【swift5】ストップウォッチタイマーの作り方

## キャプチャ

![スクリーンショット 2020-01-16 21.44.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/b7b59bcb-cc2c-4e9a-eab0-29c12704d378.png)

## ソース全部

githubにもアップしております!

https://github.com/sventouz/swift_timer

```swift
import UIKit
class ViewController: UIViewController {
var OurTImer = Timer()
var TimerDisplayed = 0
@IBOutlet weak var label: UILabel!
@IBOutlet weak var start: UIButton!
@IBOutlet weak var pause: UIButton!
@IBOutlet weak var reset: UIButt

元記事を表示

OTHERカテゴリの最新記事