53ningen.com

@gomi_ningen's Website

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

乱数生成を純粋化する

乱数の生成についての簡単な例を見てみよう。scala.util.Random が用意されているのでそれを使えば簡単だ。

scala> val rng = new scala.util.Random
rng: scala.util.Random = scala.util.Random@5e28ea8b

scala> rng.nextInt
res0: Int = -1998760920

scala> rng.nextInt
res1: Int = 1591304297

scala> rng.nextInt
res2: Int = -321914793

nextInt メソッドは呼び出しのたびに返ってくる値が異なる。呼び出しのたびに rng の状態が遷移していることが想像出来る。たとえば、ランダム性を利用したメソッドのテストを書こうとした場合、テストを再現可能にする必要があるが scala.util.Random では難しそうである。仮に乱数ジェネレータを直接扱うとしても、ジェネレータの状態を揃えてあげる必要がある。こういった状態に対処するために、...

Read More

にゃんぱす祭り りぴーとなのん♪♪

<p>のんのんびより スペシャルイベント「にゃんぱす祭り りぴーとなのん♪♪」夜の部に参加してきました。当日は16:30ごろに会場の日比谷公会堂入り。物販は列に並ばずに買えた。良い。</p>
686087448649183232
<p>それにしても、にゃんぱす祭りなのになんで思いっきり都心の日比谷で開催しているんだろうか。もしかして日比谷って、田舎なのん?まあそんなことはどうでもいいとして、座席2階だったんだが、公会堂の2階席はつらい。足元のスペースが狭い、椅子が硬い、ステージは見えない、音響は悪い。イベントスペースとしてはちょっと辛みのある会場ですなぁ...。</p> <p>そんなこんなではじまったにゃんぱす祭り。半月ちょいぶりに村川梨衣さんの姿を直接拝見できてよかったです。あいかわらずの元気で真面目なりえしょんをみることができた。あとあやねるはあざとかわいい。</p>
686137969783132160
<p>ナノライプの生ライブ直接観れたの、よかった...。いきなり機材が並び始めたのでもしやと思ったけど、よか...Read More

遅延リストを作る

FP in Scala 第 5 章読書会の予習。Stream の作成については、半年前くらいに記事にまとめた。

リストの操作と無駄な中間リスト

リストへの map や filter 操作の評価は、模式的には以下のような感じで行われる。

List(1,2,3,4).map(_ + 10).fliter(_ % 2 == 0).map(_ * 3)
List(11,12,13,14).fliter(_ % 2 == 0).map(_ * 3)
List(12,14).map(_ * 3)
List(36,42)

中間リストが無駄に生成されているので、map や filter といった高階関数をつかって合成性をおとさずに、つまり while ループに頼らずなんとかしたい。そんなときに非正格性(non-strictness)を使うとよい。ということで「ワンランク上のリストの構築のしかた」を探っていく。

正格関数と非正格関数

「ワンランク上のリスト構築」をする前に正格性について確認を行っ...

Read More

初詣に行ってきた

初詣に行ってきつつ、年末にふと買ってしまったパタヘネ本の 2 章を読んでいた。

算術演算

加算命令、減算命令はそれぞれ add, sub で、必要なオペランドは 3 つ。

// f, g, h, i, j をそれぞれレジスタの $s0, $s1, $s2, $s3, $s4 に割りつけたとする
f = (g + h) - (i + j);

// MIPS
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1

データ転送命令

MIPS では算術演算は必ずレジスタを用いて行われる。レジスタはハードウェアを構成する基本要素であり、高速で処理することができる。ただし、プログラミング言語の変数とは違いレジスタの数は限られている。そのため、MIPS マシンにはメモリとレジスタ間でのデータ転送命令が必要になる。メモリからレジスタへデータを転送する命令はロード lw と呼ばれる。逆にレジスタからメモリへデータを転送する命令はストア sw と呼ばれる。MIPS ではレジスタ長は 32 ビットであり...

Read More

RxSwift2.0.0がリリースされた

<div class="alert alert-info text-center">この記事は <a href="http://qiita.com/advent-calendar/2015/rxswift">「RxSwift Advent Calendar 2015」</a>1日目の記事です。</div>

長らく開発の続いていた RxSwift の 2 系がついにリリースされたようです。

683089909540847616

今回もまあまあ変わっている部分があるようなので、beta4, 2.0.0-rc0, 2.0.0 あたりでの特に気になった変更点をまとめます。2.0.0 もリリースされことですし、そろそろインターフェースも落ち着いてくることを期待しています。

Observable 生成メソッド関連の変更

グローバルに定義されていた justfailWith などが削除され、Observable の static ファクトリメソッドになっています。。また後者については、error(ErrorType) に変更さ...

Read More

逝く年、くる年(2016-17)

<p>去年のやつ → <a href="http://53ningen.com/2015-no-owari/">http://53ningen.com/2015-no-owari/</a></p> <h1>2016年の技術的な話</h1> <ul> <li>今年もSwift系が多かったがもうあんまり技術的興味の伸びしろない</li> <li>AWSまわり触れてよかった</li> <li>protobuf良い</li> <li>言語処理系の勉強はマジで進まなかった</li> <li>読書量もかつてないほど少なかったが、意外にアウトプット量は多め</li> <li>発表も一番多い年になった(負担も大きかったけど)</li> </ul> <p>2016年はなんだかもう、完全におしごとマンだったので、その分自分のやりたい方向とはかなりズレてきた...。軌道を修正するよりも、なんとかがんばって自分のキャパを広げてズレたことやりつつ、やりたいことをしっかりやっていきたいなぁ...。モチベーションを枯らさないようにいきていきたい。</p> <h1>2017年にこうなったらいいな(技術編)</...Read More

Rhodanthe* 元旦コンサートに行ってきた

17:50 ごろ会場到着。

682846519620317185

開演 10 分前だけど、会場の外に大量の人間が...。案の定開演は 15 分くらい押しで始まる。国際フォーラムは座席が広くて会場としてはかなりいいなぁ...と思った。キャパは 5000 人ほどだそうで多分 9 割くらい座席埋まっていた。ホール A 入り口から入場して階段を上ると、なんかの生演奏をやっていた。正月っぽい。

682844263223148544

セットリストとかは以下のような感じ。

682917273586171904

振袖は種ちゃんが一番にあってた。まあ今回のイベント、個人的には田中真奈美さんのトークを見に行ったと言っても過言ではない。今回も本当にいいコメントだった。冒頭の挨拶でもいい感じのネタを仕込んできていたし、最後の挨拶もさすがだった。「去年はきんいろモザイクの"稼働"が多かった」という発言、非常に良い。田中真奈美さん非常によい...。これからも応援したい方です...。本人はいたって真面目に本心で話し...

Read More

Copyright © 53ningen.com