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

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

AutoLayoutのPreviewで気軽に端末差分を確認

## はじめに

UI実装ナレッジの共有です。

## Preview機能とは

StoryboardやXibファイルを実装中の複数端末レイアウトを一度に確認できる機能です。
ビルドの必要はなく、すぐに反映されます。

機能的には割と昔から提供されていたようですが、

Xcode11になってからアシスタントエディタ(名前知らなかったけど右上のタブ)の仕様が変わったので導線が変わりました。

## 使ってみる
**1.Storyboardファイルを選択肢右上のAdjustEditorOptions(三みたいな)をタップ。**

![20200726191916.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701264/43f74978-b23b-032e-f678-1bb3c09e85e2.png)

**2. 出てきたpreviewの左下の+ボタンを押下して確認したいデバイスを選択する。**

![20200726191921.png](https://qiita-image-store.

元記事を表示

iOS開発リンクまとめ

#iOS

###★学習コンテンツ★

日本語で勉強したいならこちら
https://www.udemy.com/share/101KI4AEMedFZaQnUJ/

英語に抵抗なければこちらが一番おすすめです
Google翻訳使えば字幕もリアルタイムで日本語表示されます
ボリュームが多いので補足的に使うのがいいと思います。
https://www.udemy.com/share/101WsaAEMedFZaQnUJ/

Storyboard xib

twitterのiOS勉強タグ
merpay_techtalk

###★Objective-C★

基本
http://wisdom.sakura.ne.jp/programming/objc/index.html
https://iphone-tora.sakura.ne.jp/kihon_objective-c.html
https://marycore.jp/prog/objective-c/basic-syntax/#O

元記事を表示

AutoLayout で表のようなレイアウトをする

## やりたいこと

こういう↓ View を組みたいとき
![capture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12653/4337311a-cfec-c298-53b7-4f4a1a3d5101.png)

– table タグを使ってできるレイアウトのようなもの
– 左のラベルは右寄せ。それぞれの幅は一番幅が長いものに合わせる
– 右のラベルは複数行入る。縦方向のレイアウトはこちらで決まる

## 実現方法

この要件だと UIStackView だけだと実現できかったので、AutoLayout でゴリッとやったらできた
(Cartography と Then を使っているけど雰囲気は伝わるはず……)

“`swift
let content: [(heading: String, body: String)] = [
(“いち: “, “改行\nする\nテキスト”),
(“に: “, “普通のテキスト”),
(“さぁん: “, “長いテキスト長いテキスト長い

元記事を表示

Swift未経験でIOSアプリをリリースするまでにしたこと

# はじめに
この記事は、タイトル通りSwiftを知らない状態からIOSアプリをリリースするまでの過程を記載しています。
これから学ぶ人に少しでも役に立てたら幸いです。
文章力がないので、分かりにくかったらご指摘いただけると嬉しいです。

**著者の前提**
webエンジニア(Java)として2年半勤務。

# IOSアプリの全体像を学ぶ
プログラミング言語「Swift」を全く知らない状態だったので以下の教材で学びました。Javaと書き方が違うだけで概念は似ていたため、SwiftではJavaと違って、こう実装するのかと置き換えで学びました。

**個人的に超おすすめ**
Udemyの講座: [iOS 13 & Swift 5 – The Complete iOS App Development Bootcamp](https://www.udemy.com/course/ios-13-app-development-bootcamp)
上記の講座さえ学べばIOSアプリは何ができるのか、どのように実装するのかといった全体像を把握できます。
また、GitやXcodeの使い方、デザイン、マ

元記事を表示

【入門】iOS アプリ開発 #7【敵キャラクタの移動】

# はじめに

今回はパックマンに登場する敵キャラクタを作成する。以下が完成イメージ。
作成した GameGhost.swift ファイルは、コードが 1000行程度になり全ては説明できないため、[GitHub](https://github.com/Kikutada/0005_EnemyTest) に公開しているものを参照してほしい。

※YouTube動画
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/wqbIVGE-dBI/0.jpg)](http://www.youtube.com/watch?v=wqbIVGE-dBI)

テスト動作として、下記の仕様書にある「ノーイートタイム」を過ぎると、ゴースト(モンスター)が巣から出てきて攻撃中となるようにしている。そうでない時は休息中となる。またバッテン表示はデバッグ用としてゴーストの目標位置を示している。

# 仕様書

仕様書にはゴーストの出現タイミングや、それぞれ異なる4匹の性格仕様が記述されている。

![Image2.png](https://qiita-image-st

元記事を表示

Xcode12でUITableViewCell内のタップが反応しない・挙動がおかしい

#環境
– Xcode 12 Beta 6
– iOS 14 Beta 6

※ この記事で言及している問題は、Beta版ではなく正式版になると解決される可能性があります。あくまでBeta 6時点での解決方法としてお読みください。

#発生した問題
Xcode12でビルドしたアプリをいじっていると、UITableViewを使っている画面でタップが効かなかったり挙動が変わったりしている画面を発見しました。具体的には、cell内のUISwitchが押せなかったり、cellにaddSubviewしたUICollectionViewのcellをタップしてもdidSelectItemAtが呼ばれなかったりしました。Xcode 11でビルドしていたら押せたのに。。。

#原因
調べていくと、Cellの子ViewであるContentViewにタップを奪われてUISwitchやCollectionViewをタップできていなかったことがわかりました。storyboardやxibを使ってcellのcontentViewに乗せている場合は起こらなかったのですが、発見した箇所はすべてコード上でcellに直接

元記事を表示

【Swift、SwiftUI】実装ノウハウのリンク集(随時更新)

#1. 内容
 アプリ開発のために調べた情報の中で、今後も参照する機会が多いと思うものをストックするものです。技術的な知見を惜しげもなく公開してくださる皆様のおかげでアプリを作れています。ありがとうございます:pray:

#2. リンク集
## 公式
(1) [API Design Guidelines](https://swift.org/documentation/api-design-guidelines/)
(2) [SwiftUI Tutorials](https://developer.apple.com/tutorials/swiftui/)
(3) Apple公式
  (a) [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/)
  (b) [App Store Reviewガイドライン](https://developer.apple.com/jp/app-store/review/guideli

元記事を表示

SwiftUI独学してiosアプリをリリースした話

# まとめると

WebエンジニアがSwiftUIを独学してアプリを作ってリリースしましたという話です。
これからアプリ作ってみたいと思ってる人の参考になればと思って筆をとりました。

# 経緯と自らについて
今年(2020年)の8月の頭くらいに、アプリ作ってみようと思って重い腰を上げたWebエンジニアです。
普段は、レイルズとかジャバスクリプトとかで開発してます。(レイルズって書くとテイルズみたいですね)

# SwiftとSwiftUIの勉強方法
Xcodeて何??みたいな顔して、まずは、手始めにノリに乗ってるswiftUIとかいうものに手を出してみた。
するとどうでしょう、swiftて何?みたいになって、初めたのは下記。

・Swift Playgrounds
https://www.apple.com/jp/swift/playgrounds/
その中でも下記を全部やってみました。
・コードを学ぼう1
・コードを学ぼう2
・Bluの冒険(ほとんど真面目にといてない。さらっとふれた。)

感想としては、楽しい〜〜。
パズルでプログラミング学べるの最高か!?て思いました。
このパズ

元記事を表示

ちょこっと StackView のパフォーマンスを気にしてあげる

今回は StackView で限定された数のリストを繰り返し更新して表示する際に、ちょこっとパフォーマンスが良くなる方法を紹介したいと思います。

UITableViewCell に StackView を持っている時の実装を行っていきます。

“`swift
@IBOutlet private weak var stackView: UIStackView!

private let displayLimit = 3

override func awakeFromNib() {
super.awakeFromNib()
for _ in 1…displayLimit { stackView.addArrangedSubview(CustomeView()) }
}
“`

これで、初期化時に StackView に `CustomeView()` が3つ追加されるようになります。
次に Cell を更新するためのメソッドを書いていきます。

“`swift
@IBOutlet private weak

元記事を表示

Firebase A/B Testing はじめました

## Firebase A/B Testingとは

Remote Config または Cloud Messaging を使ってA/B テストを簡単に実行,分析するサービスです。

分析後に、アプリのアップデートなしに変更を反映することも可能です。

流れとしては

テストで評価するグループを作成して、

成功測定のための目標値を設定し、

テストをモニタリングして最良のグループ(施策)を見つける。

です。

## A/Bテストとは
### 主にマーケティングで行われる、施策判断のためのテスト。
– 施策の良し悪しを判断するために、2つ以上(基本は2つ)の施策同士を比較検討することです。
– 測定したい基準を元に、コントロールグループとテストをさせたいグループに分けて後者にチャレンジをさせて結果を比較します。
– 新しいものを2つ同時にチャレンジさせて比較するものではないようです。
## メリット

– コンソールで設定して実行するだけなので、簡単に操作してテストを開始することができる。
– それぞれのパターンを設定すれば、出し分けする値を元にアプリの外観や動作を変更し

元記事を表示

5層アーキテクチャモデルにおけるドメイン分析

前回の「ドメイン駆動設計のミッション層を設計する手法を紹介」の記事で紹介した
5層アーキテクチャモデルにおける**ドメイン分析**を行う方法について紹介する。
**ドメイン分析**には**REAモデル**を使用する。
今回の記事では、従来の**REAモデル**に加えて**ミッション層**の分析、**ドメイン層**との繋がりを追加し、**5層アーキテクチャモデル**におけるドメイン分析の手法を確立したいと思う。

前回の記事について以下のURLを参照
https://qiita.com/aLtrh3IpQEnXKN7/items/98e0c2d2ee0776e0e039

#ドメイン分析とは
**ドメイン分析**とは、企業の活動領域(ドメイン)を分析する手法のことである。
従来の詳細設計は画面をベースとしてロジックを作成していたが、ドメイン分析は企業の活動領域(ドメイン)から設計を行う手法である。
**ドメイン分析**によって可視化された結果はドメインモデルに変換され、ドメイン層へソースとして記述される。
**ドメイン分析**によって出力されるモデルは特定の原則などは存在せず、企業活動の

元記事を表示

SwiftUIでいのちを輝かせる

SwiftUIで大阪万博のいのちの輝き君を作成してみました。

※ 色はシステムカラーを使用しているため、本来の色とは異なります。

# 1. 赤い背景を作成
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
GeometryReader { geometry in
ZStack {
inochiRed.frame(width: geometry.size.width,
height: geometry.size.width,
alignment: .center)
}
}
}

var inochiRed: some View {
GeometryReader { geometry in

元記事を表示

公開済のiOSアプリのアプリ名を変えたときにハマったこと

[こんなアプリ](https://apps.apple.com/jp/app/like-a-paper/id1511690088#?platform=ipad)をつくって、公開して、
本業でいっぱいっぱいだったので、アップデートはかけられていなかったのですが、
それでも海外を中心にじわじわダウンロードされていて、うれしかったです。

そんな中、一通の英文メールが来ました。
最初スパムかと思った(英語でメールなんてまず来ない)のですが、よく読んでみるとアプリを誉めてくれている内容でした。
そして後半に入ると、なんか英語についてダメ出しをされています。

元々アプリ名は、

Like a Paper

という名前で、僕的には全く違和感なかったです。
(皆さんはどうですか?)
「a paper」で、「(なんでもないただの)紙」を表せている……と思っていたのですが、メールくれた方は英語ネイティブで、
「アプリ自体は素晴らしいし、気に入ってるけど、アプリ名はちょっと変だよ笑」
みたいなことを言っています。

その後よく調べてみると、”paper”は通常不可算名詞で、「一枚の紙」と言いたければ、”

元記事を表示

iOSアプリアーキテクチャ比較検討(Cocoa MVC,MVVM,MVP,CleanArchtecture)

今回は、アーキテクチャをまとめてみました。備忘録。

# アーキテクチャを取り入れる理由

アーキテクチャはアプリを綺麗に開発・継続的に運用していくための設計方法。

UI(プレゼンテーション)とそれ以外のUIに関連しない処理(ドメイン)にざっくり分けられる。
分けられると何が良いのか。

– 処理が理解しやすい
– 重複コードの排除
– 分業がしやすい
– テスタビリティの向上
など。

これによって、品質や開発スピードの向上につながる。
アーキテクチャによって特徴が異なるため、開発人数や環境、期間などによってどれが最適か検討する必要がある。

# 各アーキテクチャごとの概要

| アーキテクチャ |     概要 | 役割 | メリット | デメリット |
|:———–|:————|:———–|:————|:————|
| Cocoa MVC| Appleが推奨しているアーキテクチャ。
CocoaMVCの大きな特徴は、ViewとModelが完全に独立し

元記事を表示

既存のプロジェクトをMVPにして気づいた点、注意点

 
## はじめに

現場ではCocoaMVCだったのですが、まぁ今後のプロダクトでどのよーなアーキテクチャが良いか
比較して、実際に既存のプロダクトの1画面作り変えてみました。
実装→iOSチームでレビューの過程ででた所感や気づきを共有します。

MVP自体はネットにゴロゴロありますし、
MVP自体についてざっくり知りたい方はアーキテクチャ比較も投稿したのでよければ。

## ざっくり所感

– 各コンポーネントの役割が決まっているので、読みやすい。
– ユーザーの入力部分について(ViewController)とPresenter,Modelと作業分担しやすい。
ただ、作る際にある程度認識合わせ、ルールを考えておかないと実装漏れやコンフリクトのような問題が起きそう。

– ViewControllerの肥大化は抑えられるが、FatPresenterになってしまう恐れがある。
例)Presenterは画面遷移やViewの操作も全て行うのか。
  今回は全部行うようにしたが、「Delegate多すぎ」って意見もあったので。
– viewDidLoadなどのライフサイクルイベントもv

元記事を表示

【初心者向け】Googleが開発したFlutterとは?効率的に学習する方法もご紹介

皆様、こんにちは!フクロウと申します。
今回はGoogleが開発した、フリーでかつオープンソースのフレームワークであるFlutterについて、簡単にご紹介します。
#Flutter(フラッター)とは
使用言語:Dart
開発環境:Linux、Windows、macOS
開発ツール:Android Studio またはVisual Studio Code
Googleが開発したAndroid、iOS、WEBアプリの開発を行うことができるマルチプラットフォームに対応したフレームワークの名称
2018年12月4日に初の正式版「Flutter 1.0」のリリースが発表されたので、比較的新しいフレームワークと言えます。
WindowsとMacの両環境でAndroid/iOSの開発は可能だが、WindowsではAndroidしか実機テストやリリースはできないです。iOSの実機テストやリリースには、別途 Xcodeが必要になります。
### 開発においてのメリット
・WEB開発や、スマホアプリ開発では、複数の言語を学ぶ必要があるが、FlutterではDartを学ぶだけで開発が可能。(Javaやkot

元記事を表示

iOSレビュー時ノウハウ、コメント例

## 投稿理由、内容
自分自身の振り返りを含めて投稿します。
仕様の指摘、OS・言語としてのベストプラクティス、デグレやアップデート時の確認など
いろいろなレビュー時の観点があると多います。
今回の投稿ではiOS/Swiftで開発してのナレッジになります。

あと、SwiftLintとか入れると勉強になりますよね。٩( ‘ω’ )و

## 参考になったもの

今回2人体制での開発、相互レビューだったので教えてもらう部分もたくさんありつつ、以下の記事は観点と目的がまとまってたのでわかりやすかったです。
https://qiita.com/kkoide1332/items/4545bf8c2ffbfb05bb1f

## コメント例
その他実際に意識してた部分、レビュー時にコメントされた中でプロジェクト関係なく必要なものを以下にざっくりまとめました。

また、Swift、Cocoaフレームワーク限定の観点もありますので全部が全部ではないです。(get/setはjavaとか普通に使うし)

– 名前get/setつけない。
– BooLでis使う時には考える。意味がおかしくなるのが多い

元記事を表示

Push通知の証明書作ってみた in 最近

## はじめに
あんまり頻繁に作るものではないですが
業務で得た内容をこちらに残します。

## Push通知証明書って

iOSって証明書多いですよね。
ただ、developperサイトで一括管理できることは楽なのかも。

## p12ファイル作成手順

①デスクトップのLaunchpadをクリック

![20200725023041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701264/79657141-f03a-e554-be60-e9c026393428.png)

②Launchpadのその他をクリック

![20200725023045.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701264/d36faeba-8a7f-d966-882c-b7640d4131d8.png)

③その他をクリック

![20200725023058.png](https://qiita-image-stor

元記事を表示

CocoaPods Warning: ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES の対処法

`pod install` でいつものごとくライブラリをインストールすると下記のような警告がでました。

“`
[!] The `Hoge [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-Hoge/Pods-Hoge.debug.xcconfig’. This can lead to problems with the CocoaPods installation
– Use the `$(inherited)` flag, or
– Remove the build settings from the target.
“`

警告文を見てみると、どうやら Target で指定してある `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` が `Pods-Hoge.debug.xcconfig`(Pods) で設定した値を上書きするので

元記事を表示

Android アプリ開発者がiOSアプリも開発したくなったので、とりあえずFlutterの導入をしてみた

## 概要
* Androidアプリの開発ばかりやっていたが、iOSアプリの開発も今後やっていきたい。
* Flutterを使用すれば、iOSアプリの開発も今後やっていけそうなので、調べていく。

## 想定している対象者
* Androidアプリの開発であれば経験はあり、iOSアプリの開発の開発もFlutterでやってみたいという方。

## Flutterとは
* Flutterとは Google 製のアプリケーションUI構築ツールキット。
* 構築出来るアプリ
* モバイルアプリ制作
* iOS
* Android
* Web
* デスクトップ向けのアプリケーション
* とくにモバイルアプリにおいては、単一のコードから iOS/Android の両方にビルドできる。
* Google によって『The best framework for developing beautiful experiences for any screen』をめざして開発が進められているフレームワーク。
* ※「技術的な垣根を超え一つのコー

元記事を表示

OTHERカテゴリの最新記事