- 1. CollectionViewに複数のジェスチャーを認識させてマップアプリのような動きのUIを作った
- 2. 【Swift5】AVSpeechSynthesizerとSFSpeechRecognizerを併用する際の注意点
- 3. 公式YOLOv3物体検出モデルをiOSで使う手順。
- 4. iOSDC2020に参加して3日間で36のセッションを見ました
- 5. SwiftUIで著名アプリのUIをトレース ~Spotify編~
- 6. 【Swift】ちょっとはMVPという設計パターンに触れてみる
- 7. iOSDC2020のday2に参加したセッションの内容と感想
- 8. Could not find or use auto-linked library ‘swiftObjectiveC’
- 9. ReactNativeでダークモードでもアプリを強制的にライトモードにするお話
- 10. [自分用] ボウリングにお役立ちアプリ(Swift-iOSアプリ)
- 11. Xcode11でXCFrameworkの依存関係でNo such moduleエラーが発生する
- 12. 【iOS】DiffableDataSourceで作ったUICollectionViewに並び替え機能を実装する
- 13. UICollectionViewLayoutを使ったときのUICollectionViewの描画サイクル
- 14. CIImage.cropped(to:)の結果が変なときに見てね。
- 15. iOSDC2020のday1に参加したセッションの内容と感想
- 16. iOSDC2020のday0に参加したセッションの内容と感想
- 17. Unity iOSの内部フォルダの保存、閲覧する方法
- 18. [CoreML]CreateMLを用いたテキスト分類モデルの作成方法
- 19. iOS14でのUIDatePickerの挙動について
- 20. アプリ開発でSwagger定義があるならPrismを使おう
CollectionViewに複数のジェスチャーを認識させてマップアプリのような動きのUIを作った
マップアプリのようなUIで使用したい機能がありまして、今回自前で実装をしてみました。
実装の内容や使用した機能について、今後のためにこの場を借りてまとめることにしました。### 動作イメージ
今回作ったUIの動作イメージです。
デモ用に、地図で選択した位置で撮影した写真を表示するアプリを作成しました。・場所を未選択の状態:全ての写真を表示
・場所を選択した状態:選択した位置で撮影した写真を表示といった感じです。
モーダルのような見た目のViewを作り、その中にコレクションビューを配置して
拡大表示の場合のみスクロールできるようにしています。— 小岩井 (@WfODXAd0jmop1Ev) 【Swift5】AVSpeechSynthesizerとSFSpeechRecognizerを併用する際の注意点
## 概要
iOSでは標準で音声合成と音声認識の機能を利用することが可能です。
– 音声合成: AVSpeechSynthesizer
– 音声認識: SFSpeechRecognizer音声合成と音声認識を併用するケースはそこまで多くないと思いますが、一緒に利用する場合はハマりポイントがあるのでこの記事でメモします。
## 想定するケース
音声認識後に何らかの文字列を音声読み上げする場合を考えます。
イメージしやすいように、音声認識をして取得した結果を読み上げるだけのアプリを想定します。1. 音声認識を行い、話しかけられたテキストを取得する
2. 取得した結果を音声で読み上げる## 音声認識
iOSで標準利用可能なSFSpeechRecognizerを利用して音声認識をします。
※iOS10から利用可能公式Doc
https://developer.apple.com/documentation/speech/sfspeechrecognizer下記のような実装で音声認識が可能です。(最低限イメージが持てるよう、かなり省略したものを載せています。実装する方は公
公式YOLOv3物体検出モデルをiOSで使う手順。
[アップル公式配布モデル](https://developer.apple.com/jp/machine-learning/models/)をダウンロードして、物体検出してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9b5ee8b2-78ca-8acf-3b46-3f80872cee5e.png)以下のような「人間」「自転車」「車」「バイク」。。。という80個の物体を認識して画像内の位置を教えてくれます。
![スクリーンショット 2020-09-24 19.41.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/a399d513-c6ec-53ba-cca4-89a32db00e95.png)#手順
###1、Visionで実行リクエストを作成
YOLOv3.mlmodelをXcodeプロジェクトにドラッグ&ドロップして、“`swift
lazy
iOSDC2020に参加して3日間で36のセッションを見ました
# はじめに
こんにちは、ClassiのiOSアプリエンジニアの@yoko-yanです。
iOSDC2020に参加して、day0からday2までの3日間で、36のセッションを見ましたので、そのセッションを感想ともに、簡単にまとめたいと思います。
Classiは、iOSDC2020のボトルウォータースポンサーとTシャツスポンサーになっています。以下、個人的によかったセッションを、紹介します。
どちらかというと、自分の業務や、興味の範囲で、役に立ったかという視点ですので、ご了承ください。
この他にも、参加した中で素晴らしいセッションもあり、参加してないセッションについても、興味深いものは多いんですが、一旦、上記の視点と参加したものの中ではという観点でお話させていただきます。# 個人的によかったセッション
## [新規機能開発からモジュール分割を始めてみる by Ryo Izumi](https://fortee.jp/iosdc-japan-2020/proposal/93678283-8ae9-468b-9d6f-eece27a372e6)
[新規機能開発からモジュール分割を始め
SwiftUIで著名アプリのUIをトレース ~Spotify編~
iOS14とXcode12がリリースされ、SF Symbols2が使えるようになったので著名なアプリのUIをトレースするのが簡単になったなぁと思いレイアウトの勉強がてらSpotifyの再生画面をトレースしてみました。
## 完成品
![Simulator Screen Shot – iPhone 8 – 2020-09-24 at 18.53.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147358/6aa67765-1327-6fba-5fc3-560d4988205c.png)
厳密には背景がアートワークのグラデーションが薄っすらかかっていますが割愛### もしもSpotifyがライトモードだったら
![Simulator Screen Shot – iPhone 8 – 2020-09-24 at 18.53.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147358/a2e5fbdd-a427
【Swift】ちょっとはMVPという設計パターンに触れてみる
## なぜ書いたか
これまでSwiftを使って色々アプリを作ってきましたが、
正直設計パターンというのをほとんど意識しませんした:joy:
基本的なMVCと言われるもので作ってましたが、そろそろまずいだろということで
ちょっと設計パターンについて勉強してみました。本記事はアウトプット用のメモとなります。
## MVCとMVPの違い
– MVC
– Model
– ドメインのモデルにあたる構造体を定義クラス
– View
– ViewControllerやTableViewCellクラスなど画面描画に関する処理を行うクラス
– Controller
– ViewControllerクラス ユーザーからの操作の検知やその後の画面変更を行うクラス
– MVP
– Model
– 上記同様 構造体を扱うクラス
– View
– ViewCotrollerクラス Uikitをインポートした画面描画に関する処理をまとめたクラス
– Presenter
– Presenterクラス Uikitをインポートしないデータを扱う
iOSDC2020のday2に参加したセッションの内容と感想
# トークセッション
## [「それ、自動化できますよ」: note を支えるワークフロー大全 by laprasDrum](https://fortee.jp/iosdc-japan-2020/proposal/a6fcae29-405e-4923-aa45-8132a2444e60)
[iOS Dev Workflow Automation for note – Speaker Deck](https://speakerdeck.com/laprasdrum/ios-dev-workflow-automation-for-note)
zapierを使ってCIビルドを自動化した話**感想**
結構、よくある話だが、実際に運用しているフローと組み込むまでの流れを聞けたのは参考になった
具体的な手順を紹介してくれたので、業務でも取り入れたい## [XCUITestのつらさを乗り越えて、iOSアプリにUITestを導入する by 佐藤剛士](https://fortee.jp/iosdc-japan-2020/proposal/e6c39712-3efa-4f0c-8d9d-ec
Could not find or use auto-linked library ‘swiftObjectiveC’
1. Right-click on Your App Name in the Project Navigator on the left, and click New File…
2. Create a single empty Swift file
3. Create Bridging Header and do not remove Swift file then. re-run your build.
ReactNativeでダークモードでもアプリを強制的にライトモードにするお話
突然ですがiOS端末がダークモードになっていたとしても、アプリはライトモードのままにして欲しいって場合ありませんか?
僕はありました。
ライトにしたい理由は、“DateTimePickerライブラリ“
こいつがダークモードで確認すると“`白色“`になって見えない問題が発生してしまったため。
![IMG_3406.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668705/b9234af9-658c-1414-8f09-b9b73a46434a.png)それなら端末がダークモードでもアプリ内では強制的にライトモードにすれば解決でしょ(小並感)
って感じで色々調べたらinfo.plistの中に以下の記述を書けばいいってあったので書きました。
“`info.plist
UIUserInterfaceStyle
Light
“`pod install して yarn react-native run
[自分用] ボウリングにお役立ちアプリ(Swift-iOSアプリ)
#Swiftでアプリを作ってみた
Swiftの練習として, Userdefault, webAPI(Qiita), スクレイピングを利用したアプリを作成してみました.
アプリの内容としては, やくに立たないアプリよりも自分の役に立つアプリを作ろうと考えて趣味のボウリングに役立つアプリを作りました.githubのリポジトリはこちらです
https://github.com/yossi1118ubi/Bowling4##機能まとめ
1. webAPIを使って最近のボウリングに関するブログを検索する機能
2. 自分で作成したボウリングに関する参考になる記事をまとめたスプレットシートから内容を検索して引っ張ってくる機能
3. 一般的なメモ機能
4. 行きつけのボウリング上の営業時間を表示する機能//ホームが面の写真
##それぞれの機能紹介
###1. webAPIを使って最近のボウリングに関するブログを検索する機能プロボウラーなの上げている最新のブログを簡単に探すことができるといいなと思い, webAPIを使ってボウリング関連のブログを取得する機能を作りました. 本当は
Xcode11でXCFrameworkの依存関係でNo such moduleエラーが発生する
# 問題
XcodeのWorkspaceに、iOS Application ProjectとiOS Framework Projectがあり、それらが別のXCFrameworkに依存している構成のとき、iOS Applicationをビルドすると `No such module ‘XXX’` のエラーとなりビルドに失敗してしまいます。– MySample Workspace
– MyApp Project
– MyFramework Project
– OtherFramework.xcframwork
![MyApp](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739754/e4e4ba6c-38a7-b247-5f82-708c2cb2acdb.png “MyApp”)
![MyFramework.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739754/362dee80-77a5-dd17-
【iOS】DiffableDataSourceで作ったUICollectionViewに並び替え機能を実装する
**UICollectionViewに並び替え機能を実装したい。**
昔ながらのやり方ならば、UICollectionViewDataSourceを使った方法がありますね。
しかし、これからUICollectionViewを作るなら、**UICollectionViewDiffableDataSource** を使って書きたい。そんなときは、 `UICollectionViewDragDelegate` と `UICollectionViewDropDelegate` を使いましょう。
こんな感じの並び替えUIを、シンプルなコードで実装できます。
## 環境
– Xcode 12.0
– iOS
UICollectionViewLayoutを使ったときのUICollectionViewの描画サイクル
# はじめに
こんにちは、iOSエンジニアの dayossi です。家族が幸せになれるサービスを提供したいと思って、
HaloHaloという家族日記アプリをリリースしています。今回は、いまさらながら
UICollectionViewの描画タイミングの全体像について
整理したいと思います。
( 詳しいコードなどは、ほかの方の記事がわかりやすいので
最後にご紹介しております )# CollectionViewのレイアウトをいじりたいけど…
CollectionViewのレイアウトを
もっといろいろカスタマイズしたいなーと思って
UICollectionViewLayoutで一からレイアウトを組んでみたら、「どのタイミングでレイアウト更新したらいいんだっけ?」
「セルに載せたUILabelとかUIImageViewのデータ更新もしたいけど、
どのタイミングでセルの作成とか更新とかしてるんだ?」と、途中からわからなくなってきたので整理しました。
# UICollectionViewがCellを表示する大まかな流れ
大きな流れとしては
***Collecti
CIImage.cropped(to:)の結果が変なときに見てね。
例えばこの画像を
![nekocyan458A4183_TP_V4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/7681faed-e5fd-a409-2f1b-778dc6b7eafc.jpeg)
↓猫だけのCGRectで切り抜いたはずなのに、
![スクリーンショット 2020-09-24 13.09.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/bf49c708-22db-13c6-eb1c-c586c498f763.png)
↓UIImageViewに表示すると、一部しか表示されなかったり、全然表示されなかったりする
![スクリーンショット 2020-09-24 13.11.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/d8a7a4c0-2880-ffdc-37cb-8d4b87
iOSDC2020のday1に参加したセッションの内容と感想
# トークセッション
## [4年間運用されて表示速度が低下した詳細画面を改善する過程で得た知見 by marty-suzuki](https://fortee.jp/iosdc-japan-2020/proposal/1b41bd44-d2c8-488c-b053-1eab56e7da6c)
[iOSDC Japan 2020 Day 1 Track B 10:50 – Speaker Deck](https://speakerdeck.com/martysuzuki/iosdc-japan-2020-day-1-track-b-10-50)
表示が遅くなった画面を、どのように計測して改善していったかの過程を実際のコードを交えて紹介
遅延初期化時のリコメンドを遅延ロードとか
画面回転のリロードとか**感想**
前職はSNSで表示速度とかを、かなり気にして実装してたので、共感やなるほどと思うことが多く、自分も知ってることも知らないことも分かりやすく解説してたので、個人的には非常に面白かった
## [400種類のアプリを毎日ビルドする自動化の技術 by Kishikawa Kats
iOSDC2020のday0に参加したセッションの内容と感想
# トークセッション
## [SourceKit LSPをブラウザでコードを読むために活用する by Kishikawa Katsumi](https://fortee.jp/iosdc-japan-2020/proposal/5915f415-c824-437f-9cac-312e8454ea91)[SourceKit-LSPをブラウザでコードを読むために活用する – Speaker Deck](https://speakerdeck.com/kishikawakatsumi/sourcekit-lspwoburauzadekodowodu-mutamenihuo-yong-suru)
SourceKit-LSP というSwiftのコードを読むためのツールの紹介
VScodeでの使い方から、ブラウザで使う方法まで
**感想**
Appleがこういうツールを出しているのを始めて知った
ブラウザでコードが読めるというのは、今後役に立ちそう## [今日から分かるAVAudioEngineの全て by meteor](https://fortee.jp/iosdc-japan-202
Unity iOSの内部フォルダの保存、閲覧する方法
#はじめに
UnityでiOSの「フォルダ」アプリに保存したい場合の方法について記述します。実装方法よりXcodeの設定方法がメインとなります。#実装について
Unityの[Application.persistentDataPath](https://docs.unity3d.com/ja/2019.4/ScriptReference/Application-persistentDataPath.html)を使用します。
永続的なデータを保存する場所として用意されているパス先です。一点気をつけたいのが、
iCloudバックアップ領域に保存されるので、容量が大きい場合審査に落ちる場合があります。基本的にはiCloudにはバックアップしないという設定をUnityメソッドで呼び出します。SetNoBackupFlagのパス先はバックアップ対象外となります。
余程大きくなるなら大人しくサーバにあげましょう。あくまで内部フォルダです。“`C#
using UnityEngine;
using System;
using System.IO;public class
[CoreML]CreateMLを用いたテキスト分類モデルの作成方法
## 投稿のポイント
今回Appleが提供している `CreateML`を用いて、`positive or negative を判別するテキスト分類モデル`を作成したのでアウトプットします。`画像分類モデル`に関する情報はある程度発見できたのですが、`テキスト分類モデル`に関する情報はあまり見つかりませんでしたので参考にしていただければと思います。
**備考) この記事のコード記述箇所のファイル名の拡張子に`.playground.swift`とありますが、実際のファイル名は`.playground`です。コードの可読性を高めるため(コードに色を付けたいため)にQiita上だけ`.swift`を付けさせていています。ご了承ください。**
## 目次
① テキストデータの作成
② CreateMLとテキストデータのインポート
③ トレーニングデータとテストデータの準備
④ テキスト分類の作成とトレーニング
⑤ 分類器の精度と評価
⑥ テキスト分類モデルをCoreMLとして保存## ① テキストデータの作成
まずJSONまたはCSV形式でテキストデータを収集します。(今回はJS
iOS14でのUIDatePickerの挙動について
# iOS14でのUIDatePickerの挙動について
こんにちは。
今回は業務でiOS14対応を任されまして、
UIDatePickerについてを改修するにあたりいろいろ調べたので、メモ的に残しておきます。
誰かの役に立てば幸いです。### 環境
macOS Catalina 10.15.6
Xcode Version 12.0
Simulator Version 12.0 iOS14 iPhone 11pro## 何が変わった?
iOS13以下では、DatePickerには UIDatePickerStyleに“`swift
.inline
“`
がありませんでしたが、iOS14で新たに追加されました。“`swift
public enum UIDatePickerStyle : Int {
case automatic = 0
case wheels = 1
case compact = 2@available(iOS 14.0, *)
case inline = 3
}
“`
ざっと見る限り他の追加や変更など
アプリ開発でSwagger定義があるならPrismを使おう
スマホアプリの開発でバックエンドの人がSwagger定義(Open API Specともいう)を使ってくれてたらPrism使ったら良いよ、というお話。
# Prismとは
https://stoplight.io/open-source/prism/– Stoplightという会社が作っている。APIの開発をスムーズに進めていくためのツールを色々提供している。
– Prismはそのツールのうちの1つで、いわゆるモックサーバー。OSSとして提供されている。
– 別のサービスだと本家のSwagger UIもレスポンスをモックすることができるし、API Sproutなんかもある。# インストール&使い方
“`
$ npm install -g @stoplight/prism-cli
$ prism mock swagger.yaml
“`
これだけ。簡単。デフォルトで`127.0.0.1:4010`のポートを使い、読み込んでいたswagger定義ファイルを更新すると自動でリロードもしてくれる。(これがSwagger UIのモックサーバには無い)# レスポンスのカスタマイズ