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

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

bazelでcarthageで入れたframeworkをimportする

Carthageのframeworkの直下にBUILDを置くと便利そう。

“`python:Carthage/Build/iOS/BUILD

package(default_visibility = [“//visibility:public”])

load(
“@build_bazel_rules_apple//apple:apple.bzl”,
“apple_dynamic_framework_import”,
“apple_static_framework_import”,
)

apple_dynamic_framework_import(
name = “Closures”,
framework_imports = glob([“Closures.framework/**”]),
)

“`

こんな感じ。visibilityをpublicにしないとアプリのBUILDから参照できないので注意
あとはアプリ側のBUILDはこんな感じ

“`BUILD
swift_library(
name = “Sources”,
s

元記事を表示

[Flutter] FlipCardを使ってカード型のWidgetを回転させてみる

## やりたいこと
カード型のWidgetをタップするといい具合にアニメーションつけて裏側を表示するように回転したい。

## 使用したライブラリ
[flip_card](https://pub.dev/packages/flip_card)

### pub get
1. pubspec.yamlに「flip_card: ^0.4.4」を追記して“` flutter pub get “`する
2. dartソースに“`import ‘package:flip_card/flip_card.dart’;“`を追記する

## 実装
“` dart
FlipCard(
front: Card(…), // カード前面に表示するWidget
back: Card(…), // カード背面に表示するWidget
direction: FlipDirection.HORIZONTAL, // カード回転向き(HORIZONTAL:横<デフォルト>, VERTICAL:縦)
flipOnTouch: true, // タッチ可否(true:カード部タップで回転す

元記事を表示

ブラウザが非表示になった時にマイク入力を解放する

# 困っている事
webAudioAPIを利用してマイク入力データを利用している中で

– 別タブに切り替えた時に、タブの録音中マークが消えない(PC)
– ホームボタンを押した時に画面上に赤い帯が残る(iOS)

タブはこういう丸いやつ↓
スクリーンショット 2020-01-03 19.00.22.png

赤い帯はこういうやつ↓
![S__107831356.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175814/8547f4ee-cba3-b464-f12c-5144e5cbb221.jpeg)

# 環境

## PC
– MacBook Pro 2016
– macOS Mojave 10.14.6
– Chrome

元記事を表示

iOSのショートカットで扱う秘密データの管理方法について

# はじめに

iOSのショートカットを作成する上で一度は悩むことは、ショートカット内部で扱う秘密データ(APIで扱うAPIキーやパスワードなどのトークン文字列)をどう管理するかではないでしょうか。

この管理方法について、検討した内容を共有したい思います。

# 前提

* iOSのショートカットを使用するため、iOS12以上が必要です。
* また、iPhoneの1passwordアプリを使用します。

# よくある管理方法の問題

いろんな人が作成したショートカットの中身を見てみると、以下のように秘密データを管理しているケースに遭遇します。

* メモアプリ(あるいは リマインダーアプリ)に秘密データを保存し、ショートカット実行時にメモアプリから検索する。
* ショートカット内部に秘密データをハードコーディングする。
* ショートカット実行時にアラートを表示し、秘密データを入力させる。

メモアプリから検索する方法は、メモアプリがパスワードで保護されていないため、秘密データを他人に見られる恐れがあります。同様に、ハードコーディングする方法についても、ショートカットの内部処理を見れば

元記事を表示

XCodeを使わず、MacApp「Tranceporter」でipaをAppStoreConnectに簡単にアップロード

納品されたiOSアプリケーションのipaファイルをXCode使わずにAppStoreConnectにアップロードすることができるTranceferというMac Appが公開されてたので使ってみます。

# 前提
– Apple Developerアカウントを保有している
– App Store ConnectのマイAppに新規アプリ作成していること

# Mac App「Trancefer」
Mac App StoreでTransporterを入手できるようになりました
https://developer.apple.com/jp/news/?id=10152019a

Appのリンクは[こちら](https://apps.apple.com/jp/app/transporter/id1450874784?mt=12)。期待できそう!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/7227cbff-6434-54f9-a4b1-9d832fd1f4bf.png)

はいはー

元記事を表示

コードによる制約の追加

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

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。5章を読んでの内容になります。

– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)

#コードによる制約の追加
3つの方法がある。
・NSLayoutConstraintのイニシャライ

元記事を表示

Storyboardの設定項目

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

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。4章を読んでの内容になります。

– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)

##起動時のstoryboardを設定

GUIで設定
プロジェクトファイルのMain Inter

元記事を表示

UIViewControllerのレイアウトに関する処理

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

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。3章を読んでの内容になります。

– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)

#UIViewControllerとレイアウトをサポートするクラス
##UIViewにおけるレイア

元記事を表示

Auto Layoutの基本

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

## 参考文献

この記事は以下の書籍の情報を参考にして執筆しました。1,2章を読んでの内容になります。

– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)

#Adaptivityなレイアウトを実現する

画面サイズの多様化により、どのようなウィンドウ

元記事を表示

bazelのiosチュートリアルの修正点

チュートリアルの左上にあるボタンからmasterに切り替えればよかった

ーーーーー

基本的にはこの手順で良い
https://docs.bazel.build/versions/2.0.0/tutorial/ios-app.html

ただ、依存ライブラリが古いまま(2020/1/3現在)なので若干記法などが異なる。
チュートリアルの中で出てくるWORKSPACEとBUILDを次のように変更すればとりあえずビルドまでは行ける。

“`bazel:WORKSPACE
workspace(name = “tutorial”)

load(“@bazel_tools//tools/build_defs/repo:http.bzl”, “http_archive”)
http_archive(
name = “bazel_skylib”,
urls = [
“https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.2/bazel-skyli

元記事を表示

GoFデザインパターンをSwiftyに書く

# あけましておめでとうございます
年末年始休みで雪国のど田舎に帰省してゆっくりしてますが、~~コタツの中であまりに暇なので~~腰を据えて設計について考えるいい機会だなと思い、このテーマを選びました。

# この記事で伝えたいこと
GoF(ゴフ)デザインパターンとは、the Gang of Fourと呼ばれる4人の開発者によって整理された、オブジェクト指向にもとづいた23個のプログラムのパターンのことです。
この記事では、その23個のパターンの中でもよく使いそうなものについてはサンプルコードをつけて紹介してます。その他のパターンは概要の説明にとどめてます。サンプルではできるだけ身近な例を使っているので、GoFデザインパターンにおける「オブジェクトの役割分担」と「プロトコルや構造体なども使ったSwiftらしい実装」のイメージをサクッとつかむ手助けになればこの記事は成功かなと思ってます。
ちなみに、概要説明で頻繁に出てくる「オブジェクト」という表現はSwiftのクラスや構造体などを指しています。

# 目次
– 振る舞いに関するパターン
– [Chain of Responsibi

元記事を表示

[Swift 5] swiftでラジオボタン実装

タイトルの通りです。

縦に配置したいこともあり(あとは見栄え的な問題で)、UISegmentedControlを用いずにラジオボタンを実装したかったのですが、調べても記事が古かったり、初心者の自分には手をつけがたい手法が多かったので、自分が理解できる手法で実装しました。
また、今回のコードでは、ボタンの数が可変的でも対応できるようにしています。

### バージョン
xcode: 11.2.1
swift: 5.1.2
### 準備
ボタンの画像を用意してAdd Fileからプロジェクトに追加します。
チェックボックスのフリー素材は探せばありますが、枠だけの方がないことが多かったので、自分はMac標準のプレビューで描きました。

スクリーンショット 2020-01-02 3.20.42.png

### 実装

元記事を表示

[iOS]Viewの一辺(片側)に点線を引く

参考までに

“`swift

///利用側
func _() {
hogeView.addOneSideDashBorder(position: .bottom, color: .red, lineDashPattern: [5, 5])
}

extension UIView {
/// 一辺に点線を引く
@discardableResult
func addOneSideDashBorder(position: BorderPosition, color: UIColor, lineDashPattern: [NSNumber]?) -> CALayer {
layoutIfNeeded()

let shapeLayer = CAShapeLayer()
shapeLayer.lineDashPattern = lineDashPattern
shapeLayer.strokeColor = color.cgColor
shapeLayer.frame = boun

元記事を表示

【Swift】インスタンスの生成と利用の分離、Composition Rootという考えについて

# はじめに
文章の中で「クラス」という言葉を用いていますが
これはSwiftの`class`だけを指しているのではなく
`struct`や`enum`なども全て含めてクラスと呼称しています。

アプリを開発をしていると

– 必要な機能をクラスに分けて開発する
– さらにモジュールに分けて開発する
– プロジェクトを超えて共通で利用できるモジュールを利用する

など
を行うことがあるかと思います。

そうすると
あるクラスの中で他のクラスを利用することがあるかと思いますが
どこで利用するクラスを生成するかが
問題になることがあります。

例えば
Aクラスの中で利用するBクラスのインスタンスを生成しているとします。

仮にBクラスのインスタンス生成時に
新しくCクラスを引数に渡す必要が出てきた場合
本来Aクラスでは必要のないCクラスのインスタンスの生成も行うことになります。

もしこの新しく追加したCクラスのインスタンス生成方法に変更があった場合
Aクラスには全く必要のないCクラスに依存していることによって
Aクラスが変更しなければならないという事態に陥ってしまいます。

元記事を表示

CustomCellにsegueを設定する

備忘録。

#①CustomCellを作成する
![スクリーンショット 2019-12-31 11.15.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533606/5f412f93-c5c7-44ce-c17e-7b8e8e263401.png)
![スクリーンショット 2019-12-31 11.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533606/02b0c820-ffe3-068f-413e-fd32c919ff2e.png)
![スクリーンショット 2019-12-31 11.15.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533606/7cc91bac-7854-ea78-365c-8fac97515c74.png)
![スクリーンショット 2019-12-31 11.16.40.png](h

元記事を表示

Sandboxユーザーの作成数の上限について

## 背景

iOSの課金環境のテストをする上でSandboxユーザーが必要となりますが、Sandboxユーザーを自動作成したほうが効率が良いケースがあります。
自動作成するにあたりむやみに作り続けるのは良くない+ドキュメントに記載がなかったこともあり、Sandboxユーザーの上限数を調べるために以下の確認をしました。

## サンプルコード
手始めに2500件のSandboxユーザーを作成します。
fastlaneのSpaceshipを使うことでSandboxユーザーの作成が簡単に行えるので、以下のようなコードで確認しました。

“`rb
# Fastfile

default_platform(:ios)
require ‘spaceship’

platform :ios do
lane :create_sandbox_users do
Spaceship::Tunes.login(ENV[“SPACESHIP_USERNAME”], ENV[“SPACESHIP_PASSWORD”])

for i in 1..2500
email

元記事を表示

SourcegraphでiPad上のコードリーディング環境を整える

# はじめに

[Sourcegraph](https://sourcegraph.com/)はブラウザ上でGitリポジトリ上のソースコードを検索・分析できるツールです。
このツールを使うとGitHub上のパブリックリポジトリに対して簡単にコードリーディングを行う環境を準備することができます。

# 前提
* 本記事では、Sourcegraphの使い方は説明しません。
* GitHub上のパブリックリポジトリを対象とします。
* プライベートリポジトリを対象とする場合は、自前のサーバにオープンソースのSourcegraphをインストールする必要があるかもしれません。
* こちらについては詳しくは調べていません。
* iPad環境を想定します。
* iPhoneでも大丈夫だと思いますが、画面が小さいため個人的にコードリーディングには適さない気がします。
* また、Apple Pencilを使うとコードリーディングと相性が良さそうです。
* PC上でコードリーディングする場合は、[Chrome拡張](https://chrome.google

元記事を表示

iOS プッシュ通知に必要な証明書 p12とp8に関する疑問解消 (Firebase Cloud Messaging)

#はじめに
iOSでプッシュ通知の実装するには、色々は選択肢がある。

今回はそのうちの1つ、**Firebase Cloud Messagingを使う場合に必要な証明書に関する疑問を解消したい。**

#疑問って何?
そもそも**「p12とp8に関する疑問解消」**ってどゆこと?って事だが、、
以下の記事を見比べて欲しい。

[プッシュ通知に必要な証明書の作り方2019](https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb)

[iOSにおけるFirebase Cloud Messagingによるプッシュ通知の実装方法](https://qiita.com/rockname/items/4a092e39e571ddd19c5b)

上の記事では、**2つとも「iOS プッシュ通知に必要な証明書」**を取得する方法が紹介されている。

しかし!!!そこには大きな違いがある!!

###上の記事ではp12タイプの証明書、下の記事ではp8タイプの証明書
を取得しているのだ。

#Firebase Cloud Messagingではp8を

元記事を表示

Unity-iOSとマイコンをBLE通信させようとして詰まった話

#環境
Unity2018.4.14f(Personal), ESP-WROOM-32, iOS13.3

#経緯
###目的
 [UnityのBLEアセット](https://assetstore.unity.com/packages/tools/network/bluetooth-le-for-ios-tvos-and-android-26661)を購入したので、せっかくESP32もあるし、同梱しているStartingExampleなるサンプルを試してみたかった。
###問題
 サンプルコードを書き、iOS向けにビルドしてみたが、クラッシュしてしまって起動しない。
 macと繋いでエラーを見ても、Thread x:signal SIGABRTと出てエラー個所が全くわからない。

#解決
 しばらくコードと格闘してみたが、当方iOSの知識が全くないので、観念して公式サポートに問い合わせてみた。
 すると、「Bluetooth always usage descriptionが必要だよ!ggれば簡単に見つかるから試してみて!」と返信があったので、早速試してみた結果、普通に解決した。
#

元記事を表示

Github ActionsでiOSアプリのデプロイを自動化する

元ラーメン屋店長プログラマのObjective-ひろC([@hirothings](https://twitter.com/hirothings))です?
GitHub Actionsで[個人アプリ](https://apps.apple.com/jp/app/id1460380962)のデプロイを自動化したのでその手順を書きます。

目次

1. GitHub Actionsとは?
2. なぜGitHub Actionsをデプロイ環境に選んだか?
2. 実装の流れ

## GitHub Actionsとは?
「GitHub上で動作するサーバレス実行環境」で、GitHub関連のイベントをトリガーにCI/CD様々な処理を実行できます。
[中の人がGitHubの概要について説明しているわかりやすい記事](https://codezine.jp/article/detail/11450)があるので、それを読むのがオススメです。
以下、抜粋。

>
* Actionの実体はDockerコンテナ
* Actionを組み合わせて独自のワークフローを構築できる
* コンテナ実行環境がコンパクトで重い

元記事を表示

OTHERカテゴリの最新記事