BambooHero

iOSアプリ開発と株式投資をメインに色々書きます

iDeCo加入中に会社が企業型確定拠出年金制度を開始。移行すべき?

現在iDeCoに加入しているのですが、所属している会社が企業型確定拠出年金制度を開始するとのことで、何がどう違うのか、移行すべきかどうかわからなかったので軽く調べてみました。 細かいところまで見ると色々違いはあるようですが、iDeCoと比較した場合の…

isMovingToParentとisMovingFromParent

UIViewControllerのisMovingToParentとisMovingFromParentがどのようなときにtrue or falseになるかがわからなかったので調べてみました。 それぞれの定義 検証してみた まとめ 検証コード それぞれの定義 isMovingToParent A Boolean value indicating whet…

The Composable Architecture(TCA)でアクションシート(Action Sheet)を実装する方法

The Composable Architecture(TCA)のサンプルからアクションシート(Action Sheet)の実装方法について学びます。 今回扱うサンプルはこちらです。 01-GettingStarted-AlertsAndActionSheets 「Action sheet」ボタンをタップするとアクションシートが表示…

The Composable Architecture(TCA)で複数画面で状態を共有する方法

複数画面間での状態の共有をどのように実装するかは、iOSアプリ開発において一つの大きな議論のテーマではないでしょうか? TCAは複数画面間での状態の共有という課題に対してどのようなソリューションを提供するのか、サンプルから学んでいきましょう。 01-…

The Composable Architecture(TCA)でアラート(Alert)を実装する方法

The Composable Architecture(TCA)のサンプルからアラート(Alert)の実装方法について学びます。 今回扱うサンプルはこちらです。 01-GettingStarted-AlertsAndActionSheets 「Alert」ボタンをタップするとアラートが表示され、アラートの中の「Increment…

【UIKit版】The Composable Architecture(TCA)で画面遷移を実装する方法

前回TCAで画面遷移を実装する方法について学びましたが、UIKit版の同様のサンプルも提供されているので、今回はこちらを説明したいと思います。 SwiftUI版との違いに注目して説明するので、是非以下の記事と照らし合わせて見てください。 bamboo-hero.com 対…

【UIKit版】The Composable Architecture(TCA)のカウンターサンプルを理解する

TCAはSwiftUIとの親和性が高いですが、UIKitでも実装が可能です。 TCAではUIKitによる実装サンプルも提供されているので、今回はUIKit版のカウンターサンプルを使ってUIKitでTCAを実装する方法について学びます。 UIKitCaseStudies/CounterViewController Sw…

The Composable Architecture(TCA)で画面遷移を実装する方法

The Composable Architecture(TCA)のサンプルから画面遷移の実装方法について学びます。 今回扱うサンプルは以下の3つです。 01-GettingStarted-OptionalState 03-Navigation-NavigateAndLoad 03-Navigation-LoadThenNavigate Stateがnilとnon-nilのときで…

The Composable Architecture(TCA)におけるBindingの扱い方

The Composable Architecture(TCA)のサンプルからBindingの扱い方について学びます。 今回はCaseStudiesの01-GettingStarted-Bindings-Basicsと01-GettingStarted-Bindings-Formsを例に説明します。 単方向データフローの原則を守る Bindingを使った実装方…

【SwiftUI】画像(Image)のレイアウト方法まとめ

SwiftUIで画像をレイアウトする方法についてまとめました。 画像のレイアウトは4つのメソッドの組み合わせで決まる 各レイアウト方法の比較 参考 画像のレイアウトは4つのメソッドの組み合わせで決まる SwiftUIで画像をレイアウトする際は、以下の4つのメソ…

NotificationCenterでオブザーバのインスタンスが破棄されたらオブザーバも破棄されるよね?の確認

当たり前の話なんですが、PRレビューをしてたときにふと、「あれ、これってremoveObserverしなくて良いんだっけ?」となったので、動作を確認しました。 動作確認用コードの説明 動作確認結果 おわりに 動作確認用コードの説明 以下のように2つの画面があり…

The Composable Architecture(TCA)のサンプルからComposableなArchitectureを学ぶ

前回はTCAの一番単純なサンプルである01-GettingStarted-Counterについて説明しました。 bamboo-hero.com 今回は01-GettingStarted-Composition-TwoCountersについて説明してみます。 小さいモジュールを組み合わせてアプリを構成する Stateのスコープを絞る…

【SwiftUI】Listの使い方と一意性についての注意

SwiftUIでデータをリスト表示するときに使用するListの使い方と、Listを使うときに注意すべきデータの一意性についてまとめました。 Listの使い方 データの一意性を担保する まとめ Listの使い方 人物名をリスト表示する例を取り上げます。 実装はこんな感じ…

The Composable Architecture(TCA)のカウンターサンプルを理解する

先日TCAで簡単なサンプルアプリを作ってみたのですが、まだまだTCAの理解が曖昧なところが多々あるため、もう一度サンプルコードを一から丁寧に読んでいます。 bamboo-hero.com 理解できたところは順次アウトプットしていこうと思います。 まずは、一番単純…

The Composable Architecture(TCA)で簡単なサンプルを作れるようになるまでに辿ったステップ

2日ほどかけてTCA(The Composable Architecture)を使った簡単なサンプルアプリを作りました。 ログインしてホーム画面に遷移するだけの超簡単なサンプルですが、TCAのサンプルコードをずっと眺めているよりも実際にアプリを実装してみたほうが理解もずっと…

SwiftUIでViewを引数として渡せるViewを作る(@ViewBuilder)

以前の記事でナビゲーションバーの色を変更可能にしたNavigationViewの実装方法を紹介しました。 bamboo-hero.com 上記記事では、カスタムModifierを実装し、以下のようにModifierを指定することでナビゲーションバーの色を変更できるようにしました。 Navig…

Codableでプロパティの一部が任意の型になる場合に対応する

とあるAPIのレスポンスをデコードする処理を書いていて、以下のように配列の中の型が複数あるケースに対応する必要がありました。 { "products": [ { "id": 1, "flag": true, "foo": "foofoo", "bar": "barbar" }, { "id": 2, "flag": false, "baz": "bazbaz…

Swift Codableの公式解説をちょっと補足

Codableについての公式の解説記事はこちらですが、JSONの具体例がなかったり読んでるだけだと若干わかりづらいところがあったので、自分なりに補足をつけてみたいと思います。主にCodingKeys周りを見ていきます。 developer.apple.com 具体的なJSONで理解す…

ブログ・SNSのアイコンはプロに作ってもらおう!

先日、ココナラでプロのイラストレーターの方にアイコンを作ってもらいました! ココナラでアイコン作っていただきました!やっとアイコン有りでTwitterができる、嬉しい!!— BambooHero‍ (@bamboohero_jp) May 21, 2021 はてなブログもTwitterもずっとアイ…

SwiftUIでナビゲーションバー(NavigationView)の色を変更する

現状のSwiftUIではナビゲーションバー(NavigationView)の色を変更するModifierが提供されていません。 しかし、ナビゲーションバーの色を変更したいモチベーションは多々あると思います。 本記事では、ViewModifierを使ってナビゲーションバーのスタイルを…

初めて米国株を買ってみた

とあるネット記事をきっかけに個別株投資に興味を持ち、様々なブログや書籍を読んで米国株投資に行き着きました。 現在は「バカでも稼げる米国株高配当投資」と「株式投資の未来」を読みながら米国株の長期投資について勉強中なのですが、これまで私は投資信…

Carthageに移行したらビルド時間が1.08倍速くなった!

あれ...たったの1.08倍? そう思われると思いますが事実ですw 理由としては、RxSwiftなどビルドに時間がかかるライブラリがCarthageに移行できなかったからですが、このあたりの話も含めてCocoaPods管理からCarthage管理に移行した件について共有させていた…

iOS UIテスト(XCUITest)でアプリとテストランナー間でファイル共有しようと試行錯誤したけどできなかった話

iOS UIテストにて、アプリで保存したファイルの内容をテストコード側で検証したいことがありました。 結論からいうと、シミュレーターではできたけど、実機ではできませんでした。 できなかったけど色々試行錯誤したので、記録として残しておこうと思います…

jqでシェルの変数を使う

jqでシェルの変数を使おうとしたら意外と思った通り動かなくて苦労したので、備忘録としてまとめておきます。 フィルタでシェルの変数を使う フィルタをまるごと変数化 フィルタの一部を変数化 変数の値に空白やドットを含む場合 フィルタをまるごと変数化 …

JSONSerializationでJSONデータを扱う

割とよく書くけど(私が)忘れやすいので、SwiftでJSONファイルを扱う方法についてまとめます。 本記事ではJSONSerializationを取り上げます。 JSONデータ ⇔ オブジェクト変換 ファイルからJSONデータを読み込んでオブジェクトとして取り出す オブジェクトを…

2年放置してた個人アプリの開発を再開!iOSプロジェクトのもろもろ(Xcode、ライブラリなど)を最新化する

仕事が忙しいことを理由に個人アプリをずっとアップデートできず、気がついたら2年が経過。。 当時はXcode10で開発していましたが、いまではXcode12に。 最近仕事がちょっと落ち着いてきたので個人アプリの開発を再開しようと思い、まずは開発環境全体を最新…

雑多なメモ書きにCotEditorが便利なのでオススメしたい

今日やること、会議中のメモ、ちょっと調べたことなどをメモするのにCotEditorというMacアプリが超絶便利なのでオススメしたいです。 coteditor.com ちょっとメモするのに最適なアプリが欲しかった テキストエディットはショートカットで新規タブを開けない …

Google AdSenseの審査に一発で合格したので準備したことをまとめます

先日初めて自分のブログ(当ブログです)をGoogle AdSenseの審査に出し、見事一発で合格することができました! 本記事ではGoogle AdSenseの審査に向けて私が準備したことをまとめてご紹介します。 ブログ開設から審査合格までの期間 ブログ環境 審査提出時…

はてなブログをGoogleにインデックスしてもらうためにやったことまとめ

せっかく記事を書いても、誰にも見てもらえないのではモチベーションが続きません。 ブログをはじめてから毎日のようにアクセス解析のページを見てましたが、なかなかアクセスが増えないので、登録だけはしていたGoogle Search Consoleについて本格的に調べ…

iOSシミュレーターのフォルダ構成

iOSアプリでファイルを扱う処理を書くときに、iOSシミュレーターのフォルダ構成について知っておくと便利です。 本記事ではiOSシミュレーターのフォルダ構成について説明します。 iOSシミュレーターのフォルダ構成 iOSアプリのフォルダ構成については公式ド…