iOSエンジニアのつぶやき

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

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

Carthage Command リスト(v0.34.0)

ライブラリ依存管理ツールである Carthage のコマンド一覧をまとめていこうと思います。リストは v.0.34.0 のものなので、最新バージョンの方は公式の Repo を確認してみてください。 github.com コマンド一覧 コマンド 内容 archive Framework の zip を生…

Carthage Error: fatal: unable to open "": No such file or directory 解消法

ライブラリを Check out と使用とコマンドを実行すると、下記のような Error が、、 $ carthage bootstrap A shell task (/usr/bin/env git clone --quiet "") failed with exit code 128: fatal: unable to open "": No such file or directory fatal: inde…

iOS アプリのライフサイクルを理解しよう

今回は iOS アプリがどのようなライフサイクルで動いているのかを簡単にまとめて行きたいと思います。なんとなくボヤッとした感じでライフサイクルを認識していた人はぜひ目を通してみてください アプリの状態 状態 内容 Not running アプリは開始されていま…

Xcode Error: Unable to install "" 解消法

Xcode12 に対応するためにちょこちょことマイナーアップデートをしていた時に発生したエラーについて共有します。この Error は調べたところ色々なケースで発生しているので一概には言えませんが、Carthage のアップデート周りで発生した場合はこの解決方法…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day12【Start an external Activity編】

学ぶこと Bundle クラスを使用して、ある Fragment から別の Fragmen に引数を渡す方法 タイプセーフのために Safe Args Gradle プラグインを使用する方法 Share menu item をアプリに追加する方法 implicit intent とは何か、それを作成する方法 すること N…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day11【Define navigation paths編】

学ぶこと navigation graphs の使用方法 アプリで navigation path を定義する方法 Up button とは何か、および button を追加する方法 オプションメニューの作成方法 navigation drawer を作成する方法 すること navigation library と Navigation Editor …

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day10【Create a fragment編】

学ぶこと Fragment を静的にアプリに追加する方法 すること Activity 内に Fragment を作成します アプリの概要 このレッスンを構成する3つのコードラボでは、AndroidTrivia というアプリで作業します。完成したアプリは、ユーザが Android コーディングに…

Firebase + BigQuery + Redash で分析基盤を作ろう

Firebase + BigQuery + Redash で分析基盤を作ろう 今回は、Firebsae Analytics で取得しているデータを Big Query + Redash を使って可視化できるようにする方法を簡単にまとめていきます。 手順 Firebase と BigQuery 連携 BigQuery と Redash 連携 Fireba…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day9【Codelabs 2-3編】

学ぶこと アプリで ConstraintLayout を使用して View を配置する方法 TextView の背景色を変更する方法 ベースライン制約を使用して View を text の位置に合わせる方法 View のグループから horizontal チェーンと vertical チェーンを作成する方法 するこ…

iOSDC2020 の1日目振り返り

今日も前夜の記事に続きiOSDC2020のセッションを聞けた範囲でおもしろかったもののまとめをしておこうと思います。 ※ よかったら毎日ブログ書いてるので、暇な時に見てください yamato8010.hatenablog.com 4年間運用されて表示速度が低下した詳細画面を改善…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day8【Codelabs 2-4編】

学ぶこと Data Binding ライブラリを使用して、findViewById() への非効率な呼び出しを排除する方法 XML からアプリデータに直接アクセスする方法 すること findViewById() の代わりにデータバインディングを使用し、レイアウト XML から直接データにアクセ…

iOSDC2020の HomeKit のセッションが面白かった

iOSDC2020 の HomeKit に関するセッションが面白かったので、セッションで聞いた内容含め簡単にまとめておこうかと思います。暇があったら何か作ってみたい HomeKit とは? iOS、iPadOS、macOS、watchOS などの Apple製品からデバイスを管理・コントロールで…

ReactorKit における Clean Architecture の立ち位置を考える

ReactorKit はリアクティブかつ一方向のデータフローをサポートするための Framework です。ReactorKit について詳しく知りたい場合は以前の記事を参照してください。 yamato8010.hatenablog.com yamato8010.hatenablog.com ReactorKit はユーザアクションか…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day7【Codelabs 2-2編】

前回に続き、今回は Codelabs2-2 をやっていきたいと思います‍ 学ぶこと EditText view を使用してユーザ入力を取得する方法 EditText view のテキストを使用して、TextView にテキストを設定する方法 View および ViewGroup の操作方法 View の可視性を変更…

RxSwift(RxCocoa) における Subject・Relay を理解する

今回は RxSwift(RxCocoa) でたびたび使用する Subject・Relay の違いや Observable との違いについて簡単にまとめようと思います。また、Trait などはまた別の記事で触れようかと思います。 Subject・Relay とは? これらのクラスはイベントの検知もできます…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day6【Codelabs 2-1編】

前回に続き今回は、Codelabs Kotlin の02.1 をやっていきたいと思います 学ぶこと view と ViewGroup の操作方法 LinearLayout を使用して、Activity の View を配置する方法 ScrollView を使用してスクロール可能なコンテンツを表示する方法 View の開始性…

Unknown class 〇〇 in Interface Builder file. の対処法

今回は、CocoaPods や Carthage などでインストールしたライブラリなどを Storyboard・xib などで使用する場合に時々発生する。[Storyboard] Unknown class 〇〇 in Interface Builder file. の対処法を残しておこうかと思います。 原因・解決法 今回のケー…

UIView の updateConstraints() について知る

今回は View の制約を更新する際などに登場する updateConstraints() について簡単にまとめていきます なんのメソッド? このメソッドはUIView のインスタンスメソッドで、View の制約を更新する際に呼び出します。基本的にはシステム側がレイアウトパフォー…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day5【Codelabs 1-5編】

学ぶこと Kotlin および Android の開発者向け情報とリソースの入手先 アプリのランチャーアイコンを変更する方法 Kotlin をしようして Android アプリ構築をしている時にヘルプを探す方法 やること 全てのレベルの Kotlin Android 開発者が利用できるリソー…

異なる階層の View の座標を取得しよう

今回も初学者向けに階層の異なる特定の View の座標を取得したい時に使用する convert() 関数の使い方を簡単に説明していきたいと思います。 実際に使ってみる‍ 下記のような階層の View を参考に convert() メソッドを使って見て座標を取得してみます。 緑…

Swift で上限・下限を設定した数値を取得しよう

今回は初学者向けに上限・下限値を設けた値の取得が便利にできる max・min 関数を紹介したいと思います。 max max() 関数は指定された引数の中で最も大きい値を返します。つまり、これ以上小さくしたくないという値を引数に含めることで下限を設定して値を取…

Content Hugging Priority と Content Compression Resistance Priority を理解する

今回は AutoLayout 関連で、なんとなく使っていて詳しく理解できていなかった Content Hugging Priority と Content Compression Resistance Priority を調べていきたいと思います。 Content hugging priority とは? この Priority(優先度) は View が本来…

知識ゼロからの Kotlin Android アプリリリースへの軌跡 / Day4【Codelabs 1-3編】

前回のコードラボに続き、今回は01.3のコードラボを学習していきたいと思います。 前回の記事 yamato8010.hatenablog.com 学ぶこと アプリのリソースにファイルを追加する方法 アプリのレイアウトで画像を使用する方法 アプリのコードで View をより効率的に…

Github Actions で Issue をスケジューリングして自動作成しよう

最近はほぼフルリモートで仕事をすることが多く、Github などで日々のタスクを Donelist として管理することが多くなってきました。そんな時に、Donelist の Issue を自動で管理できたら便利ですよね 今回はそんなちょこっと面倒な Issue の管理を Github Ac…

RxSwift における subscribeOn と observeOn の違い

RxSwift などで処理をつなげて書いていると、ここはメインスレッドで、ここはバックグランドスレッドでなどと、処理によってスレッドを切り替えたい場合があるかと思います。そんな時は、Observable のプロパティとして提供されている subscribeOn または、o…

Grand Central Dispatch (GCD) の理解を深める

GCD とは? macOS、iOS、watchOS、tvOS のマルチコアハードウェアでの並列実行タスクをするために提供されている言語機能で、開発者は DispatchQueue を使用してスレッドでの処理を管理することができます。また、GCD の Queue は追加されたタスクの順番ごと…

Xib で View を生成する時に知っておくといいこと

先日、うっかり ViewClass で指定した Xib で作成したカスタムビューのプロパティにアクセスし下記のように Error を出してしまいました。初心者の頃はよく分からずググったものコピペ なりで回避していましたが、そもそも何故これが Error になるのかを今回…

RxSwift で非同期処理を合成しよう

今回は同じ型の非同期処理を RxSwift でまとめる際に使用する concat と merge の使い方と挙動を簡単にまとめとこうと思います。 concat concat() は複数の非同期処理を渡された順番で順次処理を行っていきます。サンプルは次のようになります。 let ob1 = O…

Error: Command PhaseScriptExecution failed with a nonzero exit code の対処方法

Carthage でライブラリをインストールしたり、アップデートしたりした後に、Branch をチャックアウトするとためにこのような Error が発生することがあります。このような場合は、Finder の情報を持つ拡張属性をし、Clean しビルドし直すと正常にビルドが成…

Swift で map, compactMap, flatMap を使いこなそう

今回は初学者向けに、Swift からプログラミング言語を学び始めた人が必ずいだく map・compactMap・flatMap の違いについて簡単に解説をしていきたいと思います。また、これらの関数は積極的に使っていくことで状況に応じた使い分けなどがうまくできるように…