iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

2020-11-01から1ヶ月間の記事一覧

Google AdSense, AdMob, Ad Manager の違い

今回は、ウェブサイトやアプリに広告を出す際に使用する Google Ad Manager・AdSense・AdMob の違いを簡単にまとめていきたいと思います‍♀️ AdSense AdSense はウェブで上でタグを埋め込むことで、広告を自動配信してくれるサービスです。 AdMob AdMob はモ…

UserDefault でカスタムクラスを保存しよう

今回は、Swift の UserDefault で簡単に自分が作成したクラスを保存する方法を紹介したいと思います‍ それではやっていく‍ やることは、簡単で Entity を Codable に準拠させることで、Data型への encode と decode を簡単にします。 struct FieldData: Coda…

Kotlin の型について知ろう

みなさん Kotlin は書いていますか?僕は、最近書き始めました‍ Swift との構文の違いを比較しながら勉強していくのが、結構楽しくてハマっています 今回はそんな Kotlin で使用する型などを簡単にまとめてみたいと思います。 基本の型 まずは、Kotlin Langu…

Swift の Collection Type Set について知ろう

Set とは? Swift の Collection Type の一つで、配列の順序が重要ではなく重複する値が無いような配列を作成したい場合に Array よりも便利に使用することができます。 また、格納する値は Hashable に準拠する必要があり、これにより様々な便利メソッドが…

CollectionView でページスクロールを作ろう

みなさん、最近 CollectionView は使っていますでしょうか?CollectionView っレイアウトの方法がいっぱいあってどれを使うべきか結構迷いますよね〜‍♀️ 今回はそんな CollectionView を使って、ページをめくるようにスクロールすることのできる UI を作って…

Swift で正規表現

みなさん Swift で正規表現使ったことありますか?僕は、iOSアプリ開発はじめたての頃、よく分からずググりまくっていました 今回は、そんな少しとっつきづらい正規表現を改めてまとめることで、再理解しちゃおうぜ!という記事です 正規表現とは? 文字列の…

Xcode11.x(12未満) で iOS14.x の実機インストールができない

あるプロジェクトで、Xcode11.4.1 を使用していて iOS14.1 にバージョンアップした iPhone で実機インストールができないという問題が発生していました。 Failed to start remote service on device. Please check your connection to your device. 以前紹介…

3分で RecyclerView を作成する

みなさん、Android の RecyclerView は使っていますか?僕はやっと最近触りはじめました(最近 Android はじめたので)‍♀️ なので、使ったついでにその実装方法の手順を今日は簡単に紹介したいと思います! それではやっていく 1.アプリレベルの Gradle に Rec…

Android(Kotlin) で Firebase Firestore を使ってデータを取得するまで

今回は、Android(Kotlin) で Firestore を使ってデータを取得するまでの手順を簡単に紹介したいと思います 前提条件 APIレベル16(Jelly Bean) 以降が対象 Gradle 4.1 以降 Jetpack(AndroidX) を使用 新規 Firebase プロジェクト作成済み Android アプリも登…

Androidエミュレータで Firestore と連携できない

とりあえず Firestore コンソール上で作成した Collection データを取得しようと下記のようなコードを書いてエミュレータで実行すると、Log になにも表示されないという問題がありました val db = FirebaseFirestore.getInstance() db.collection("countries…

.bash_profile と .bashrc

みなさん bash は使っていますか?macOS Catalina からデフォルトシェルが zsh になってから、zsh を使ってる人が多いと思いますが、僕はいまだに bash ですので‍♀️ 今回はそんな bash の設定を行うために使用される .bash_profile と .bashrc がなんなのか…

Xcode CLI の切り替えを簡単にする

みなさん、Xcode12 への移行は済みましたか?僕はライブラリの更新などにかなり苦しめられましたがなんとか、Xcode12 の住人になることができました‍♀️ また、Xcode の移行によって他のプロジェクトと Xcode のバージョンの差異があり、Xcode CLI を切り替え…

Fastlane match で Provisioning Profile を更新する

今回は新しいデバイスの追加により、fastlane で管理している provisioning profile を更新する必要があったため、その作業メモを残しておきます 作業していくっ‍ とりあえず、オプションの付与などを更新毎に設定するのは面倒なので、Fastfile に、Provisio…

Linux コマンドってどうやって実行されてるの?【Part-2】

Part-1 の続きから進めていきます‍♀️ Linux コマンドのファイルはどこにあるの? では、試しにディレクトリの中に何があるのか確認する時に使用する ls コマンドがどこにあるのか調べてみましょう。 $ which ls /bin/ls どうやら bin というディレクトリの中…

Linux コマンドってどうやって実行されてるの?【Part-1】

みなさん Linux コマンド使いこなせてますか?僕は使いこなせていません。 ので、今回は Linux コマンドで気になって調べたあれやこれやを紹介したいと思います‍♀️ Linux とは? ひとまず普段使っている Linux とはなんぞやというところからググってみました…

iOS14 の PhotoLibrary アクセス API を更新する

今回は iOS14 での PhotoLibrary 周りの更新を簡単にまとめます。主なアップデートは Limited Photos Library と、Photos Library access level の二つです。 Limited Photos Library Limited Photos Library はその名の通り、アプリにアクセスを許可する写…

Swift Standard Library とは?

Swift Standard Library は、モジュールのインポートが何もない状態でも動作する、Swift プログラムを作成するためにの基本的なシンボルの集まりです。また、Swift Standard Library は Swift で記述されていますが、他の Swift コードを構築するためのコア…

Fastlane match で certificates リポジトリのクローンが終わらない

今回は、fastlane match を使用して新しいメンバーに開発証明書を共有する際に、少し詰まったポイントをまとめておこうかと思います 問題点 新しいメンバーに、fastlane match で証明書を取得してもらおうとしていた時、なぜか Cloning remote git repo... …

Apple M1 チップについてちょっと調べてみた

Mac

みなさん Apple の 「One More Thing」は見ましたか?日本時間では 11/11 午前3時に開催されたので、もしかしたら仕事があり、僕のようにまだ見ていない人が多いのではないでしょうか(そのうち見たい)‍ 今回はそんな「One More Thing」で発表された、Apple …

Android Studio でショートカットが効かない時

Android Studio で使えるはずのショートカットが使えないということが起きて10分ほど無駄な時間を過ごしてしまったため、解消法をメモしておきます (Android 初心者です ) 解消法 今回の問題は、同じショートカットキーが複数の機能に割り当てられていたため…

RxSwift で簡易インクリメンタルサーチ

個人で開発中のアプリで RxSwift を使用した簡易インクリメンタルサーチを実装したので、その方法を簡単にまとめたいと思います 作業していくっ‍ 今回行うインクリメンタルサーチの仕様は下記の通りで、入力した ID が使用可能かどうかを調べるためにこの機…

RxSwift で特定の数だけイベントを受け取る

Hot な Observable から流れてくるイベントで、特定の回数だけイベントを受け取りたいということはよくあるかと思います。そんな時は .take() を使って回数を絞ることができます。 下記はストリームに流れてきたイベントを Observable が一度受信したら、購…

Xcode のバージョンを上げる前に、実機の iOS バージョンを上げてしまった時の対処法

iOS アプリ開発をしていると、Xcode が対応していない iOS バージョンに端末の OS を上げてしまうことが多々あるかと思います。そんな時は、下記の手順で Xcode のサポートする iOS バージョンを追加します。 まずは、iOS のサポートファイルをまとめてくれ…

Android Studio で Vector Asset を追加する

res/drawable で右クリックして、メニューから New/Vector Asset を追加します。 ローカルに svg で書き出した画像を保存しておいて、そのファイルがあるパス・Size・Opacity などを設定して Next を選択します。 最後に Asset を追加するパッケージを確認し…

Swift の @autoclosure

今回は、Swift の @autoclosure アノテーションについて書いていこうと思います。 @autoclosure とは? @autoclosure アノテーションをつけてクロージャーを実装すると、呼び出し側で引数として渡した値をクロージャーとして扱うことのできる機能です。@auto…

Swift の Class と Struct で迷った時にみる記事

Swift を書いていると、Class を使うか Struct を使うか迷う時が結構あり、どちらを使うべきか悩んだ時に判断する指標となることを簡単にまとめていきたいと思います。 参照: https://blog.usejournal.com/swift-struct-or-class-how-to-choose-d22d987bac3d…

Swift5.3 つまみ食い【SE-0286編】

SE-0286 - Forward-scan matching for trailing closures SE-0279 "Multiple Trailing Closures" threaded the needle between getting the syntax we wanted for multiple trailing closures without breaking source compatibility. One aspect of that co…

Swift5.3 つまみ食い【SE-0279編】

SE-0269 - Multi-Pattern Catch Clauses Swift は開始以来、末尾のクロージャのラベルを省略できる Trailing closure という構文をサポートしてきました。 // Without trailing closure: UIView.animate(withDuration: 0.3, animations: { self.view.alpha =…

Swift5.3 つまみ食い【SE-0276編】

SE-0276 - Multi-Pattern Catch Clauses Currently, each catch clause in a do-catch statement may only contain a single pattern and where clause. This is inconsistent with the behavior of cases in switch statements, which provide similar func…

Swift5.3 つまみ食い【SE-0269編】

SE-0269 - Increase availability of implicit self in @escaping closures when reference cycles are unlikely to occur Modify the rule that all uses of self in escaping closures must be explicit by allowing for implicit uses of self in situati…