新葛飾橋という、東京都と千葉県の境目にある橋を渡り、千葉県松戸市へ突入する。全長442m。長い橋をわたるというのは少しワクワクしてくる。松戸市のイメージというと、松戸駅のイメージがどうしてもあって、まだまだしばらく都市というか住宅街的な風景が続くだろうと思っていた。だが、現実は、畑畑畑。どこを見ても畑。使わなくなった風呂釜が畑においてあるくらいにノドカな風景が広がっていた。

2014-04-26 08.08.44

ここらへんに「買います」とだけ書かれた看板があった。何を買うんだ。

2014-04-26 08.08.47

「あれ、松戸ってこういう街だっけ。」というふうに思った。面白いのは、手前の東京都との対比だ。向こうには高いビルが建っているのがぐんぐん見える。でも、ここは畑畑。ここは良い風景だ。ぜひまた来てみたい。このあたりは、国道6号線を直接歩くことはできないので、便宜上作ったよ!的な道路やトンネルがたくさん作られている。トンネルはレンガ造りでなかなかオシャレなのだが、落書きがひどい。こんなところで不良的な人に出会って、逃げることになったら、どうしよう。とドキドキする妄想をしながら3つくらいあるトンネルをくぐっていった。幸い、そういう人には遭遇しなかった。まだ、明け四つ くらいなので、そういう人はなかなか出会わないのだろう。よかったよかった。先に進むと、千葉大学の園芸部があった。こんなところにキャンバスが。さぞかし来るのは面倒だろう。

Continue reading

元々は、Facebook の notes に記していたけど、こちらにお引っ越ししてみる。

突然だが、歩くのが好きだ。自転車で走るのもなかなか爽快だが、じっくり世界を観察しながら移動するには徒歩が最適である。僕は平井に住んでいるので、平井、亀戸なんかをよく歩いたりする。ふと、もっと遠くを歩いてみたいと思ったりする。その気持は久住昌之さんが著した「野武士、西へ」を読んで、より強くなった。この本は、「東海道を歩いて東京から大阪までテキトーに徒歩で行ってみる。」というもの。手法としては、一気に連続で行くのではなく、ある一定地点まで行ったら、泊まるなり、家に帰るなりして、また別の日に、そこからまた歩き始めて目的地まで向かうというもの。

遠くに一気に行くのではなく、少しづつゆっくり向かう。いいじゃないか。いいじゃないか。僕もこの方法を採用しよう。とはいえ、同じように東海道をゆくのも何か芸がない。じゃあ、こっから北に向かおう。例えば仙台だ。思い切り歩いて、仙台で美味いもの食いたい。こういう下卑た理由でいい。「野武士、北へ」いいじゃないか。これを思いついたのは、つい1週間前のことである。「テキトーで今すぐできる思いつき」は、すぐさま実現しないと、妄想で終了してしまう。時間も資金もあるのだから、さっさとやろう。

Continue reading

業務的な何かやら、ハッカソンなどで使ったので感想

http://sailsjs.org/

名前の通り、Ruby on Rails っぽさがあるフレームワークで、
APIづくりなどで力をいかんなく発揮しそう。

良い所

テストについては、mocha と supertest 、あと barrels を組み合わせて行っています。

supertest は、テスト用にHTTPリクエストのために使って、barrels  は、データベースの初期データなどを用意するために使ってます。以下のような感じでテストが書けてます。

(ココらへんとか参考にしてます。 https://groups.google.com/forum/#!topic/sailsjs/yD6l9ii7R1g)

test/global.test.js

var Sails = require('sails')
  , barrels = require('barrels');

before(function (done) {
  Sails.lift({
    log: {
      level: 'error',

    },
    adapters: {
      // データベースはメモリを使う(テスト終了後に消える)
      default: 'sails-memory'
    },
    // port は 9999 を利用
    port: 9999
  }, function (err, sails) {
    if (err) return done(err);

    this.app = sails;
    // これで test/fixtures の下にある json を元にテストデータが作られる
    // https://github.com/bredikhin/barrels 参照
    this.fixtures = barrels.objects;
    barrels.populate(function (err) {
      done(err);
    });
  });
});

after(function (done) {
  sails.lower(done);
});

test/FooController.test.js

describe('Foo API', function () {
  describe('#find()', function () {
    it('should return ok', function (done) {
      request(app.express.app)
        .get('/foo')
        .set('Accept', 'application/json')
        .expect('Content-Type', /json/)
        .expect(200)
        .end(function (err, res) {
          assert.equal(err, null);
          assert.equal(res.body.result, 'ok');

          done();
        });
    });
});

うーん。ってところ。

  • 0.9時点の話だが、express.js との連携がべったりしてしまっているため、例えばこの処理を取り除きたいというのができなかったりする。0.10だとその辺の処理がざっと変わるらしい。期待したい。
  • ドキュメントに書いていない隠し仕様的なものが、よくあったりするので、結局 sails.js のソースコードを探求することになる。セッションを無効化する場合は、Session 設定の adapter を null にすればよいのだが、この点はドキュメントに一切記されていない。http://sailsjs.org/#!documentation/config.session コントリビュートやらブログなどを書いて、そのへんの知識をまとめていきたい。
  • 公式ドキュメントにテストの書き方的なのが記されてない。
  • 込み入ったことをやろうとすると、Express.js のドキュメントを読みまくる必要があったりする。

今のところ、0.10.0-rc7 が最新の状態なので、0.10 がリリースされたら、もう一度見てみたいかなと思ってます。