Zerobase Dev Blog

コードネームYentry

CoffeeScript/JavaScriptで "write once, run anywhere" 的な話(MeteorとRendr)

やりたいこと: ドメイン駆動設計の4層アーキテクチャ的に言うと「分厚いドメイン層」を作りたい。「やむを得ず複雑になるビュー層」は仕方ない。「アプリケーション層」は極力薄くしたくて、内部DSLみたいにしたい。それはつまりドメイン層が美しいインター…

これまでの経緯 ver. 3 (2013-12-05)

これまでの経緯 ver. 2 (2013-06-26) から約半年、ブログを更新してませんでした。 Haxe+Meteorはやめましてw いまはCoffeeScriptでフレームワーク開発してます。 やろうとしてること自体は一貫してるんですが。 要するに「ウェブMVC」ではなく「PCやスマホ…

これまでの経緯 ver. 2 (2013-06-26)

なにぶん趣味性の高い案件でもあり、「技術選定」と称して新しい言語とIDEを学ぶのが楽しくて仕方ない状況になりつつありますが、あくまでも目的は見失わないよう心がけております(笑) ゼロベース会計システムの開発を決定(2012年12月) 自社のエンジニア…

Haxe + Meteor

TypeScriptとMeteorでアプリケーション開発に着手する直前に、第2回Shimokita.jsで新井さんのHead First Haxeという発表を聴いて、Haxeへの興味が高まっています。 ちなみに、Meteorの採用は決定しました。 TypeScript + Meteor から Haxe + Meteor に切り替…

TypeScriptとMeteorでアプリケーション開発へ

Smalltalkでのウェブ開発を断念してDartを検証中でしたが、DartをやめてTypeScriptにしようと思います。また、Node.jsベースのMeteorというアプリケーション・フレームワークを使うつもりです。(※さらに詳しい『これまでの経緯』) TypeScriptとMeteorの組…

DartのintがJavaScriptのdoubleに変換されるのはどうかと思う

DartのコードはJavaScriptに変換できるわけですが、巨大な落とし穴が空いています。 Dartのintは、JSではdoubleに変換されてしまいます。かなり怪しげな問題です。バグの温床になると思います… お金を扱うプログラム(をいまぼくは作ろうとしているわけです…

Smalltalkでのウェブ開発を断念してDartを検証中

これまでの経緯を踏まえて、しばらくSmalltalkウェブ・アプリケーション・フレームワークSeasideとZincを比較してZincを採用する方向で検討していたのですが、Smalltalkを使うのは断念しました。 Smalltalkは全般的にHTML5などのフロントエンド技術への対応…

Smalltalkウェブ・アプリケーション・フレームワークSeasideとZincを比較してZincを採用する方向で

『UIコンポーネント単位のエンド・ツー・エンドの開発パイプライン』に書いた通り、 Seaside の「コンポーネント指向」のアーキテクチャは素晴らしいと思う。 しかし、 Seaside にはいくつかの問題がある: もう一つの大きな特徴である「継続」は不要。いま…

これまでの経緯 ver. 1 (2013-03-06)

黒魔術みたいな複雑なExcelファイルをリプレースしたい! これは、単に物を作るプロジェクトじゃなくて、方法を作るプロジェクトでもある。 やっぱ DDD で TDD っしょ なんか流行に乗って Scala とかいいじゃん! Scala と Play framework を勉強! 永続化と…

UIコンポーネント単位のエンド・ツー・エンドの開発パイプライン

『アーキテクトがリードするUIプロトタイピング(OOSass と JavaScript MVC と DDD)』の続き。ウェブ・アプリケーション・フレームワークの話です。 UIコンポーネント指向 「UIコンポーネント」という単位で、UIからビジネス・ロジックまでエンド・ツー・エ…

アーキテクトがリードするUIプロトタイピング(OOSass と JavaScript MVC と DDD)

一連の模索中: IA DSLとしての抽象化CSSとドメイン駆動設計 OOCSS + Sass (OOSass) について調べた ここで、いったん、まとめておく。 思想 開発とは、すなわちプロトタイピングである。 手法 プロトタイピングをスケール(大規模化)するには、使いやすい…

OOCSS + Sass (OOSass) について調べた

『IA DSLとしての抽象化CSSとドメイン駆動設計』からOOSassへと至る。 OOSass は OOCSS (Object-Oriented Cascading Style Sheets) と Sass のいいとこ取り。 stubbornella/oocss · GitHub Object-oriented CSS An Introduction To Object Oriented CSS (OOC…

IA DSLとしての抽象化CSSとドメイン駆動設計

CSS PreprocessorとIAの親和性【その仕事、蠍は留守です】: コンポーネント定義はIAが行うのが理想。かつ、それをデザイナーやフロントエンドエンジニアに伝達し、実装後にそれが維持されているかを確認するところまでが仕事。 CSS Preprocessor の利点を活…

Smalltalkとソースコード静的解析

Smalltalkは静的型付け言語じゃないから大規模開発においてIDEの恩恵を受けづらいだろうと思ってたんだけど、想像の上をいく独自のパラダイムで、ソースコードの静的解析機能が標準開発環境に備わってたりして、遅延束縛なのに、不思議であります。 Pharoで…

Feather's Rules for Unit Tests

Michael Feathers writes: A test is not a unit test if: It talks to the database It communicates across the network It touches the file system It can't run at the same time as any of your other unit tests You have to do special things to yo…

SmalltalkのBDDフレームワーク(BabyMock、SSpec、Mocketry)

組み合わせは、 SUnit + BabyMock SSpec + Mocketry のいずれか。前者でいきたい。 BabyMock SUnitと使う。 The recommended way of using BabyMock is to subclass BabyMockTestCase and write the test case in SUnit style. BabyMockTestCase extends fro…

ブログ名を「Zerobase Yentry開発ブログ」に変更しました

システム名をYentryにしました。 YenをentryするシステムなのでYentryですw ドメイン yentry.com, yentry.org, yentry.jp を取得しました。 ブログ名も「ゼロベースの管理会計システムを開発するよ」から「Zerobase Yentry開発ブログ」に変更しました。 サ…

継続的デリバリーの導入

継続的デリバリーに、どこから手を付けるか、というところ。 広義の「開発環境」は、「アトラシアン固め」でいくか、「流行もの幕の内」でいくか、決めかねているところ。いまBacklog使ってますけど。 課題管理:JIRA / Pivotal Tracker バージョン管理:Bit…

文芸的テスト駆動開発 Literate Test-Driven Development

『実践テスト駆動開発』みたいな開発ログをとれないかな。DVCSのコミットログに十分説明的なコメントを残し、テストスイートの結果やスクリーンショットを添付する。それらを辿るためのビュアー(SourceTree的なもの?)がある。文芸的 (literate) TDD? git…

Redisによる透明な永続化層

『RedisとMongoDBについて調べた』(2013-02-03)について考え直した。Redisによる透明な永続化層のアーキテクチャは、下記のようにシンプルになる。『データベースを使った永続化への復讐』(2013-02-03)に書いた理想に少しずつ近づいている。 エンティティと…

GLASS (GemStone, Linux, Apache, Seaside, and Smalltalk) によるテスト駆動プロトタイピングへ

Play (Scala) + Redisで作ろうかと思っていたのですが、『データベースを使った永続化への復讐』などという考えに至り、もっぱらJava/Scalaの永続化技術について調べていたものの、これというものが見つかりませんでした。ところがSmalltalkにすごいものがあ…

RedisとMongoDBについて調べた

『Play (Scala) + Redisで作ろうか』という思いつきの実現可能性を検討した。Redisも使えるかもしれないし、MongoDBのほうが使えるかもしれない。それはそもそも永続化の方式に依存する。 Redisの扱えるキー数はメモリ容量の制約を受ける memcachedと“正反対…

分散処理と遅延評価と可読性

ScalaのAkkaでFutureとlazyを駆使すれば「無数の分散オブジェクトから条件に該当するものを絞り込んで関数を適用した結果を収集する処理」(MapReduce的な)を、意味論的に簡潔(=可読性が良い)でありながら効率のよい処理(=不要な計算を省略)として書…

会計システムを抽象度の高いDSLで表現するためにScalaを使う

Play (Scala) + Redisで作ろうかと決めましたので、いろいろと本を買いました。 「会計システムを抽象度の高いDSLで表現する。そのためにScala/Playを使う」というシナリオです。 Scala オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門作者:…

Play (Scala) + Redisで作ろうか

という感じです。 ドメイン指向アーキテクチャのスモールスタートなロードマップ案 - 石橋秀仁(@zerobase04)のメモ: 分散オブジェクト・アーキテクチャ/ドメイン指向アーキテクチャへの追記。 とりあえず「分散並列処理」という要件を後回しにすると: オ…

Play、Scala、DCI、継続的デリバリーなど勉強中

Play 2.0で作ろうかと。みんなの代わりに勉強する係として、馴染みのRailsではなく新たなPlay/Scalaで。 Play 2.0ならEclipseよりIntelliJの方が良いという情報: 2013/01/15 Play 2.0 Javaはじめて&もくもく会 #play_ja - Togetter Play! Framework デバッ…

TDDでUIデザインするタイミング

エンドツーエンドのTDDでは、ユーザーインターフェイスの設計をするタイミングが難しい。 ↓ TDDとUI設計を並行して進める。UI(インターフェイス層)の設計が固まるのにあわせて、アプリケーション層やドメインモデル層もそれにあわせて固まっていく。レイヤ…

jQuery 2.0

jQuery 2.0を使おう。 jQuery 1.9のリリース候補版が公開。使用されなくなったAPIを整理し、jQuery 2.0と互換へ - Publickey jQuery 2.0では、jQuery 1.9とAPIの互換性を保つちつつInternet Explorer 6/7/8のサポートを廃止。より小さく速いライブラリとな…

DCIアーキテクチャ

オブジェクト指向ユーザーインターフェイス(OOUI)とドメイン駆動設計(DDD)みたいなことを考えていたところ、和智さんに DCIアーキテクチャ を教えてもらった。面白い! メンタルモデル中心のソフトウェア・デザイン・パラダイムは、ぼくの考えている「UIデザ…

RailsのIDE RubyMine

RubyMine気になる! Rails開発のイケてるIDE RubyMineを使う(1)紹介編 | TechRacho そんな微妙なRails IDE界隈ですが,半年ほど前にRubyMineというイケてるIDEがあると教えてもらい,使い始めてみました.すると,触れば触るほどかゆいところに手が届くす…