53ningen.com

@gomi_ningen's Website

ReSwiftのサンプルコードの仕組みをRxSwiftで実現する

ReSwiftのサンプルコード程度であれば、RxSwiftの機能を使って自前で実装ができてしまうのでは、と考えたので実際にやってみました。不必要に依存ライブラリを増やしたくないという気持ちがモチベーションとなっています。まずは ReSwift のサンプルコード的なものを確認するところから始めます。

ちなみにこの記事は ReSwift を使い始めて数時間の人間が書いているので、間違っている可能性が大いにあります。嘘を嘘と見抜きながら読んでいただけると幸いです(そして、コメント欄で刺してください)。

ReSwift とは?

Redux の Swift 実装らしいです。そもそも Redux がよくわからないのですが、そんなものわかってなくても動くコードはかけそうでした。ということで、とりあえずコードを書いて読んでから、小難しい記事を読んで理解してく方針にして、Redux および ReSwift の解説は他の記事に譲ります。 ...

Read More

MVC再考 (1)

どの文献を参照しても共通していること

  • ユーザーインターフェースを持つアプリケーションを Model/View/Controller の 3 つにの部分に分離する

解釈が難しい点

  • モデル・ビュー・コントローラの責務と関係
    • 特にコントローラの責務
    • コントローラとビューの関係性
  • 各プラットフォームにおいて、上記の責務をどう実装に落とし込むのか
    • ほんとうにビューとコントローラは分離できるのか?
    • そもそもビューとコントローラを分離する利点は?

分離とは?

Model-View-Controller に分離するパターンを見ていくが、クラスに分割するだけが分離に相当するわけではない

  • サブルーチン・メソッド
  • クラス
  • パッケージ
  • モジュール

MSDN の MVC 記事まとめ

MSDNの記事がわかりやすかったのでまとめた

背景

  • コンピュータシステムの多くは データ を取って...
Read More

単一責任の原則(SRP)

**Single Responsibility Principle(単一責任の原則)**は、Tom DeMarco の "Structured Analysis and Systems Specification" と、Meilir Page-Jones の "The Practical Guide to Structured Systems Design" で説明されている。この原則は次のようなものだ。

クラスを変更する理由は複数存在してはいけない

なぜこうする必要があるのか?

役割が単一なクラスの仕様要求が変化した場合、その変更部分は浮き彫りになり、どのように変化したのかわかりやすい。これは、ほとんどの人が納得するはなしではないだろうか。

しかし、役割が複数あると、その 1 つ 1 つが変更理由になってしまう。複数の変更理由によってクラスが変更されると、変更部分がぼやけてしまう。また、ある理由により変更した部分が、他の役割に影響してしまい、連鎖的に変更が必要になるなどといったケースが生じうる。これは もろい設計 にあてはまる。もろい設計がソフトウェア開発に...

Read More

アジャイル設計の本を読んでいる

 SOLID原則良いなぁ(←適当)...と思いつつ、それが書かれているアジャイルソフトウェア開発の奥義を読んでいなかったので、最近ちらちらと読み始めた。開発プロセスのあたりにはあんまり興味がわかないので、さらさらと軽い感じに読み飛ばしている。開発プロセス関連のはなしはなるほどなぁとは思うし、全員が内容を理解した上でやっていくと意味はありそうなんだけど、現実的にそんなことは起こり得ないと思っていて、学習コストが必要になる開発プロセスに意味はあるのか...とか偉そうなことを思っている。まあそんなことはどうでもよくて、第2部からのアジャイル設計の部分は本当に参考になるなぁ...と思いながら読んでる。

注意:この文章はポエムです

アジャイル設計とは?

 本によると、アジャイルはソフトウェアを少しずつ開発する手法だそうだ。基本的にラビットハウスでは完成させたソフトウェア(完成とは...という話になるが)を納品するようなお仕事ではなく、ソフトウェアを少しずつ拡張していくスタイルなので、まさに合致している。

腐敗するソフトウ...

Read More

モデルビューコントローラー

<style> <!-- .alert-info { text-align: center; border: 1px solid; padding: 15px; border-radius: 4px; color: #31708f; background-color: #d9edf7; border-color: #bce8f1; margin-bottom: 60px; } --> </style> <div class="alert alert-info text-center"> 注: <a href="http://amzn.to/1mpcTTA">PoEAA</a>, 14-1: Model-View-Controller をまとただけの記事です </div>

UIの相互作用を3つの明確な役割に分割するパターンを「モデルビューコントローラ」とよぶ。

<img src="http://53ningen.com/wp-content...

Read More

Web Presentationのアーキテクチャ

<style> <!-- .alert-info { text-align: center; border: 1px solid; padding: 15px; border-radius: 4px; color: #31708f; background-color: #d9edf7; border-color: #bce8f1; margin-bottom: 60px; } --> </style> <div class="alert alert-info text-center"> 注: <a href="http://amzn.to/1mpcTTA">PoEAA</a>, Chapter 4: Web Presentation をまとただけの記事です </div>

 ウェブブラウザベースのユーザーインターフェースには、特別なクライアントソフトウェアをインストールしなくてよい、UIに対して共通のアプローチをすることができる、世界中からの...

Read More

レイヤ化アーキテクチャ

<style> <!-- .alert-info { text-align: center; border: 1px solid; padding: 15px; border-radius: 4px; color: #31708f; background-color: #d9edf7; border-color: #bce8f1; margin-bottom: 60px; } --> </style> <div class="alert alert-info text-center"> 注: <a href="http://amzn.to/1mpcTTA">Patterns of Enterprise Application Architecture</a>, Chapter 1 Layering をまとただけの記事です </div>

 レイヤ化は、複雑なソフトウェアのシステムを分割するために使用される技法です。コンピュータの構造やネットワ...

Read More

Copyright © 53ningen.com