- 1. ObjCClassで参照できるクラスを一覧に出す
- 2. Flutterで有名なアプリのUIを再現する(Twitter編①)
- 3. IQOSのパックコード入力をできるだけ省力化
- 4. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Composite~
- 5. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Command~
- 6. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Chain Of Responsibility~
- 7. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Bridge~
- 8. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Facade~
- 9. 初の個人アプリを App Store に審査出したら 30 分足らずでリリースされてビビったからその全てをお伝えします
- 10. [Swift5][Firestore]’Failed to get FirebaseApp instance. Please call FirebaseApp.configure() before using Firestore’のエラーを解消
- 11. ReactNativeバージョンアップ作業は新規プロジェクトに移植方式が良い (v0.48.4 -> v0.60.5)
- 12. #19 AdMobを使う場合のアプリの申請1例
- 13. #18 ホーム画面に表示するアプリ名を変更する1例
- 14. テストのためのDI(Dependency Injection)パターンを考える
- 15. [iOS]what3words API を触ってみた
- 16. @_functionBuilderを理解してSwiftUIイリュージョンのタネをあかす
- 17. [はじめてのiOSアプリ]xcodeで地図アプリを作成(その9)
- 18. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Proxy~
- 19. iOS SafariでWebサイトの特定の要素をCSSセレクタで指定して非表示にするアプリ[無料]
- 20. [iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン
ObjCClassで参照できるクラスを一覧に出す
SceneKit などのように ObjCClass を使って利用できる Objective-C や swift 用のクラスってどのようなものがあるのか知りたくて調べました。
“`python:print_classlist.py
# Python3.6
# List the names of all loaded Objective-C classes.import objc_util
count = objc_util.objc_getClassList(None, 0)
print( ‘%d classes found:’ % count )classes = (objc_util.c_void_p * count)()
count = objc_util.objc_getClassList(classes, count)class_names = []
for cls in classes:
class_names.append(objc_util.class_getName(cls))class_names.sort()
for b_name in
Flutterで有名なアプリのUIを再現する(Twitter編①)
# この記事を見るとここまでできます
![Screenshot_1579017962.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/207121/4bdb7c32-3042-a5a5-1924-a8aad38e91ef.png)
今回は初回なので、まだまだ形になっていません。
# 今回の記事のポイント(要点だけ知りたい方はここだけ読んでください)
## 画像を円形にして表示する
Twitterでは、左上に表示されている自身の画像や、投稿に表示される投稿者の画像が円形に加工されて表示されています。
この部分の実装は下記のようにしています。“`Flutter
Container(
margin: EdgeInsets.all(8.0),
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(icon
IQOSのパックコード入力をできるだけ省力化
# IQOSのパックコード入力がめんどくさい
先日まで使用していたiPhone7。カメラの調子が悪かったのでQRコードではなくアルファベットで入力していました。めんどくさい。
iPhone11proに買い替えたことをきっかけに、IQOSのパックコード入力を省力化できないか試してみました。ところで、`iPhone ショートカット LINE`で検索するとLINEで帰るコールするショートカットがたくさん出てきますが世の中の皆さんは、そんなに帰るコールを自動化したいものなんですか。
# さっそくつまずく
`書類 > QR/バーコードをスキャン`
`共有 > クリップボードにコピー`
`App > LINE > メッセージをIQOSに送信`
の順に追加。いざ実行。
標準カメラが起動し、QRコードを読み込んだら。。。LINEが起動。
うん。起動はしました。
手動でIQOSのトークルームを探して開いて、TXTボックスにペーストし送信。
登録できました。違う。そうじゃない。
# メッセージをIQOSに送信
検索してみると皆さん、同様に
`App > LINE > メッセージをIQOS
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Composite~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Compositeパターン概要
– **ディレクトリとファイルのような、ツリー構造を扱うためのパターンです。**
– ディレクトリとファイルのように、「名前」などの同じプロパティや、「削除」などの同じ操作を持つ場合、ディレクトリ(容器)とファイル(中身)を同じように扱うことができます。
– すなわち、検索や削除などを再帰的に行うことができます。
– GoFのデザインパターンでは**構造に関するパターン**に分類されます。# 使い所
– そのものズバリ、ツリー構造を扱う場合には、Compositeパターンを思い浮かべると設
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Command~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Commandパターン概要
– **Command=命令をオブジェクトとして扱うパターン**です。
– Commandオブジェクトは、「パラメータ」と「処理」をカプセル化したモノ。
– GoFのデザインパターンでは**振る舞いに関するパターン**に分類されます。# 使い所
1. 並列処理を行いたいケース
2. Queueing処理(Commandの待ち行列管理)を行いたいケース
3. (DBを使わずに)ある時点の状態へのロールバックを行いたいケース
4. Commandオブジェクトの生成元とは異なる場所でCommandを
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Chain Of Responsibility~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Chain Of Responsibilityパターン概要
– 全体を統率するクラスを作らず、個々のクラスが**責務を「たらい回し」**して、責務を果たせるクラスに行き当たった時点でそのクラスが処理を行います。
– GoFのデザインパターンでは**振る舞いに関するパターン**に分類されます。# 使い所
– iOSエンジニアにとってはおなじみの、UIKitの「Responder Chain」という仕組みがChain Of Responsibilityパターンに則って構築されています。
> Responder Chainと
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Bridge~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Bridgeパターン概要
– **機能を提供する層と、実装を提供する層を分離する**パターンです。
– 各層の橋渡し(Bridge)をiOSエンジニアにはおなじみの委譲(delegate)で行います。
– GoFのデザインパターンでは**構造に関するパターン**に分類されます。# 使い所
– 実装をMockに差し替えることができ、ユニットテストがしやすくなります。
– VIPERなどのアーキテクチャーパターンは、Bridgeパターンによって成立しています(と私は認識しています)。# サンプルコード
Swiftバージ
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Facade~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Facadeパターン概要
– **煩雑なモノの窓口(=Facade、ファサード)を作ることでシンプルに扱えるようにする**パターンです。
– Facadeクラスは複雑な実装は持たず、(大抵は複数の)モジュールに対する問合せ窓口としての機能だけを提供します。
– GoFのデザインパターンでは**構造に関するパターン**に分類されます。# 使い所
アプリ開発の実務で適用できるケースはたくさんあると思いますが、例えば
– UserDefaultsの読み込み・書き込み とか
– KeyChainの読み込み・書き込み とか#
初の個人アプリを App Store に審査出したら 30 分足らずでリリースされてビビったからその全てをお伝えします
明けましておめでとうございます。新しい年ということでアイコンも一新した lovee です。はい、あまりにもビビったのでラノベっぽいタイトルにしてみました。後悔はしていない。
# なぜアプリ作ろうと思ったの?
いやーそれなりに長い間 iOS エンジニアやってきたけど、業務ではそれなりにたくさんのアプリを作ってきたけど、完全に個人でアプリを作ったことがまだ全くないんですよね。というわけで去年「今年中に個人アプリを出す」という目標を立てました。~~結局去年中には出せなかったがとりあえずまだ今年度中ということで開き直ってます~~
# どんなアプリ?
簡単に言うとただ単にユーザが入力した文字列を QR コードに変換するだけのアプリです。それだけです。でも本当の使い方はアプリをいちいち立ち上げて QR コードを作るのではありません。このアプリは iOS ネイティブの共有メニューを対応しているので、別のアプリから共有メニュー呼び出して共有したいものを QR コードに変換するのが本来の使い方というかアイデアです。
言葉では説明しにくいので、こちらの画像をご覧いただければ分かりやすいかもしれま
[Swift5][Firestore]’Failed to get FirebaseApp instance. Please call FirebaseApp.configure() before using Firestore’のエラーを解消
#はじめに
iOSアプリにFirestoreを導入する際に、上記のエラーが出ました。エラー内容を直訳すると「’FirebaseAppのインスタンスを取得できませんでした。 Firestoreを使用する前に,FirebaseApp.configure()をコールしてください。」です。
自分が解消できた方法を共有します。##間違ったコード
“`Swift:AppDelegate.swift
import UIKit
import Firebase@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseAp
ReactNativeバージョンアップ作業は新規プロジェクトに移植方式が良い (v0.48.4 -> v0.60.5)
2年ぶりにiOSアプリのReact Nativeのバージョンアップ作業を行いました。v0.48.4 -> v0.60.5。バージョンをひとつ上げるだけでも苦しめられていたのに、これだけ大幅なバージョンアップは気が遠くなる苦行に違いありません。だけど、[Google アナリティクス開発者サービス SDK が終わってしまう](https://support.google.com/analytics/answer/9167112?hl=ja)ため、他のアクセス解析を導入する必要がありました。
## 新規プロジェクト立ち上げ方式
この困難な道のりを出来るだけ平坦にする良い方法はないか模索してみました。そして、既存プロジェクトのReactNativeバージョンを上げてエラーと格闘するよりも、最新のReactNativeで新規プロジェクトを作成し、そこにソースコードを移植する方が簡単ではないかという結論になりました。実際どうなのかは不明ですが、この新規プロジェクト立ち上げ方式に託してみることに。
“`
react-native init NewProject
cd NewProject
n
#19 AdMobを使う場合のアプリの申請1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
全て`はい`を選択する.
#18 ホーム画面に表示するアプリ名を変更する1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
`Info.pliset`の`Bundle display name`を任意の文字列に変更する.
テストのためのDI(Dependency Injection)パターンを考える
k2moons@BlueEventHorizonです。昨年から気になっていたテストとDIについてやっと書くことができました。お正月休みでは終わらず成人式を含んだ3連休も最終日まで掛かってしまいました。?
# はじめに
DI(Dependency Injection)はよく使われる手法ですが、テストの文脈で語られることが多いようです。
そしてテストの実現容易性のためにDI(Dependency Injection)を用いることの有用性は疑う余地がないでしょう。しかし、実際にDIを用いる場合、どのような視点のDependencyであって、それがどのような理由でInjectionされるとのかという点でいくつかのバリエーションがあり、それについて考察することは有意義ではないでしょうか。
この記事では、特にテストを行うためのDIと言う文脈で、日頃考えていることを書き連ねていきます。少しでもお役に立てれば幸いです。
# 記事内の使用言語
使用する言語は、
– UML
– Swiftです。
最後にPlantUMLを一部のせました。# 依存が密結合なDI
まず密結合、疎結合な
[iOS]what3words API を触ってみた
# what3words とは
[what3words](https://what3words.com/about-us/) とは住所などで表現される位置情報を、3つの単語で表現できるサービスです。
地球上を 3m × 3m のマスに区切り、その1マスを3つの単語で指定することができます。「住所と違って何がいいの?」と思うかもしれませんが、
お花見の場所取りや、大型ショッピングセンターの特定の入り口など、
住所だけでは説明できない位置情報を短い3つの単語だけで指定することができます。「それなら緯度経度の座標でいいやん」って思うかもしれませんが、
誰かに共有する際、緯度経度は不規則な数字であるため
コピー&ペースト以外の方法では共有が難しいというデメリットがあります。what3word を使用すると、3つの単語を共有するだけで位置情報を共有できるので、
座標よりサクッと共有できるといったメリットがあります。「住所とか緯度経度とか長いよね、カーナビの行き先指定とかめんどくさいし。
what3words を使うと3つの単語でサクッと位置情報を指定、共有できちゃうよ」
って感
@_functionBuilderを理解してSwiftUIイリュージョンのタネをあかす
# はじめに
最近ようやく少しずつ`SwiftUI`に触れてみようかなと思い始めました。`SwiftUI`とは、宣言的なUI実装を実現した、
近い将来iOSのUI描画のメインストリームにもなるであろうフレームワークです。まずはこれを見てください。
![いい感じ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484760/8f5a7555-8f09-8ca5-39b0-1fd396412a28.png)
“`Swift:画像のソース
import SwiftUIstruct SwiftUIView: View {
var body: some View {
VStack {
Text(“SwiftUIイリュージョン”)
Text(“このコードだけでいい感じに表示されるのはなぜ?”)
}
}
}
“`シンプルかつ直感的に理解しやすいコードで画像のUIを描画できてしまっています。
その様
[はじめてのiOSアプリ]xcodeで地図アプリを作成(その9)
# はじめに
iOSアプリを作ってみたいけど
何から始めて良いのかわからないとりあえず、
「やってみました」記事を参考に
地図アプリを真似てみようと思うという記事の9回目です。
今回は、いままでやってきたことを git でソースコード管理し、GitHub にて公開までします。
とりあえず、今回のシリーズは、これで終了の予定。## 懺悔(ざんげ)
– 今回のシリーズは、アプリを「作ってみる」ことが主眼だったので git に関することは「あとまわし」だったけど、本当であれば「最初」にすることだと思います
– そのようなこともあり、今回の記事は、あとからgitでソースコード管理し、GitHubと連携することになります
– 一部の方には参考になると思いますが、多くの方には参考になりません# GitHubアカウントの作成
– ブラウザで、ここ↓にアクセス
– [https://github.com/join](https://github.com/join)
– 手順などの詳細は、他の記事を参照してください
– 簡単に作成できるはずです# ソースコード管理対
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン ~Proxy~
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。**関連記事一覧**
[[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン](https://qiita.com/y-some/items/96db5f24ded4a1fab48f)# Proxyパターン概要
> Proxy(プロキシ、代理人)とは、大まかに言えば、別の物のインタフェースとして機能するクラスである。
> その「別の物」とは何でもよく、ネットワーク接続だったり、メモリ上の大きなオブジェクトだったり、複製がコスト高あるいは不可能な何らかのリソースなどである。引用:[Wikipedia](https://ja.wikipedia.org/wiki/Proxy_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3)
さらに細分化した呼称および概要
**1. Virtual
iOS SafariでWebサイトの特定の要素をCSSセレクタで指定して非表示にするアプリ[無料]
iOS Safari で広告など Web サイト上の邪魔な要素を非表示にするアプリ AdFilter の紹介です。なお iOS ではユーザースタイルシート(CSS)は使えないため `display: none` することしかできません。
CSSセレクタチートシート: https://webliker.info/css-selector-cheat-sheet/
# 方法
1. AdFilter をインストール
[AdFilter – 広告ブロック
https://apps.apple.com/jp/app/adfilter-広告ブロック/id1042682195](https://apps.apple.com/jp/app/adfilter-広告ブロック/id1042682195)2. 設定 → Safari → コンテンツブロッカー から AdFilter を有効にする
3. AdFilter を開き、下中央の「カスタム」をタップ
4. 右上の+をタップ
5. タイプ→「要素の非表示」を選択
6. セレクターとターゲットを設定して保存
[iOS/Swift] アプリ開発の実務的アプローチで学ぶデザインパターン# 前書き
GoFのデザインパターンが世に登場した『オブジェクト指向における再利用のためのデザインパターン』は1995年の発行だそうで、もはや古典の域ですね。
Swiftなどのモダンな言語では「もう使わないパターン」とか「もっとシンプルに解決できるパターン」などもあり、具体的な解決方法として崇め奉るモノではないかなと思います。
しかし、GoFのデザインパターンを、「解決方法」ではなくて、開発で良く陥る「状況」と解決に至る「発想」、そしてそれに対する「名前付け」に着目すると、改めて研究してみる価値はあると考えます。
この記事シリーズは、iOS/Swiftエンジニアである執筆者個人が、
**ごく普通のiOSアプリ開発でよくある状況**や
**Swiftのコアライブラリやフレームワークで使われているパターン**に
着目してデザインパターンを学び直してみた記録です。# 記事の一覧
| 生成に関するパターン | 概要 |
|:–|:–|
| [Factory Method](https://qiita.com/y-some/items/308966bdea99ceb27db9)