概要 そろそろSwiftUI & Combine のキャッチアップとMVVM 構成のアーキテクチャについて考察しないといけないなーと思ったのでGW中にノリで色々いじってみた。 下記のような簡易ログイン画面を用意して、SwiftUI & Combine と MVVM + クリーンアーキテクチャ…
DDD には仕様パターンというものが存在する。 仕様パターンは、 バリデーションなどの評価処理 リポジトリと組み合わせたフィルタリング機能 この2つに使われる事が多い。
先月発売された「ドメイン駆動設計入門」を読んでいる。 www.shoeisha.co.jp ドメイン駆動設計においては、ドメインオブジェクトを利用するのはアプリケーションサービスに留めるべきで、それより外の世界にドメインオブジェクトを流出させるべきではない、…
Robert C. Martin のCleanArchitecture にはSOLID原則について記載があるが、どの原則もアーキテクチャの観点から論じられている。 「単一責任の原則(SRP)」をコンポーネント向けに言い換えたものが「閉鎖性共通の原則(CCP)」にあたり 「インターフェー…
CleanArchitecture 第13章「コンポーネントの凝集性」を簡単にまとめる。 コンポーネントとは CleanArchitecture に簡潔に記載されているので、そのまま引用する。 コンポーネントとは、デプロイの単位のことである。システムの一部としてデプロイできる、最…
先日、iOSアプリのクラッシュログで以下が発見された Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 0]'
コレクションオブジェクトを実装する際、Kotlin だとby キーワードを使って実装をシンプルにすることができます。
iOS でRxSwift を使っている場合、ユニットテストはexpectation を使って非同期部分をテストする方法があります。 以下は簡単なサンプルです。
現在、仕事場のAndroid のコードでは2種類の購読解除方法を使っている 1つめは、bindToLifeCycle、bindUntilEvent を使う方法 single .compose(bindToLifeCycle()) ... もう一つは、Autodispose を使う方法 https://github.com/uber/AutoDispose single .as(…
小ネタです。 ユニットテストを書いているとき、テスト対象のprivate なインスタンス変数を書き換えたいと思うことがあります。 標準のリフレクションだと結構面倒くさいことになります。 詳しくは、https://stackoverflow.com/questions/31589405/using-ref…
この記事では、iOSアプリで実際にクリーンアーキテクチャを取り入れてみた例を紹介します。 クリーンアーキテクチャが何か、というところについてはここでは割愛します。 定義・前提等の全体感は省略させていだき、iOSアプリに取り入れる上で必要なクリーン…
はじめに この記事の内容は 「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」 の第4章3節の要点をまとめたものです。 www.sbcr.jp ※ 基本的に引用は避けています。
今回はAlamofire の実践編ということで、もう少し踏み込んだAlamofire の使い方を書いていこうと思います。 前回記事 : 【Swift】Alamofire を使って色んなリクエストを投げてみる - yujiro's blog Alamofire を実際に使う際、エンドポイントの管理にはURLRe…
iOSでHTTPリクエストをする際によく使われるAlamofire の使い方を紹介します。 Alamofire は HTTPリクエストをするのにrequest, download, upload メソッドが用意されています。 今回はこれらの基本的な使い方について紹介しようと思います。
はじめに この記事の内容は 「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」 の第4章4節の要点をまとめたものです。 ※ 基本的に引用は避けています。 www.sbcr.jp
はじめに かなり前に書いたものです。(2017年12月) 個人esa からの転記。 目標 EC2 を複数作って、ELBに登録し、アクセスを分散させてみる。
3月からiOS 開発してます。 現場では、iOS のソースコードは全面Swift化の方向で進んでいるのですが、まだObjective-C のソースコードが多く残っている状態でして、まぁそういう現場は多いのではないかと思います。 僕としても本腰いれて勉強するつもりはな…
MySQL などRDBのインデックスには B tree が採用されている。(厳密に言うと B+tree インデックスである。参考 : B TreeとB+ Treeの違い) 最適なインデックスを生成するには、このツリーの仕組みについて把握している必要がある。 これまで、表面的な知識・…
Effective Ruby 第5章、項目34 「Proc の引数の個数の違いに対応できるようにすることを検討しよう」を読んで、Proc の知識が深まったのでアウトプットしてみます。
インストールから、よく使われるプラグインを入れて、使い方をざっくりとご紹介したいと思います。
今までchefを使っていたのだけれど、知り合いから手軽でオススメ & python製 と聞きつけて試してみたらすごく気に入った。 王道なrails開発環境用のplaybook(chefでいうcookbook)を紹介してみようと思う。 macにansibleを入れて、ubuntu16.04 の仮想マシン…
職場の方から教えてもらい、何やら早いらしいので変えてみました。 下記の記事に紹介されていますが、NeoBundle とくらべて30% 以上速くなったそうな。
事の発端 ローカルでは動く feature spec が circle ci 上で動かなかった。 circle ci 上で確認したエラーは以下。 Capybara::Poltergeist::StatusFailError Request to 'http://admin.lvh.me:3000/admin_users/sign_in' failed to reach server, check DNS …
なんか同じ言語でもプロジェクトによってインデント数切り替えたいとかでてきたので実装してみました。 外部ファイルは .vimrc.local にして、ここに let ruby_tabnum = 2 という風に記述しておいてそれを読み込んで設定するといった形にすることにしました…
はじめに 私がWeb開発する上で欠かせないclipper をご紹介したいと思います。 GitHub - wincent/clipper: Clipboard access for local and remote tmux sessions 結構これ教えると喜ばれる事が多かったので需要があるのかなと思いました。 これを使うと、ゲ…
s3fs が遅くて、それより高性能っぽいのがこの goofys。 S3 をLinux にマウントする【s3fs編】 - yujiro's blog 性能とかについては https://blog.arena.ne.jp/vps/1093 がわかりやすいです。 早速使ってみたいと思います。 go が必要になりますが、goenv か…
これできるって知った時はびっくりしました。 色々幅が広がりそうですよね。 手順をご紹介します。
手順メモです。
MongoDB はDBですが、以下の特徴があります。 NoSQL スキーマレス トランザクション不可能 詳細については以下がわかりやすいです。 https://utage.headwaters.co.jp/blog/?p=5051 こちらをmongoid というORMを入れて、Rails からいじってみようという試みで…
導入 ※ Rails 5.0.6 に導入しています。 Gemfile に gem "rspec-rails", "~> 3.1.0" を追加。