09

2012/10


先日、Ember.js勉強会に参加するために万葉さんにお邪魔してきました。

JSのフレームワークは他にBackbone.jsしか触れたことが無かったので他の選択肢として参加してみました。

今回はみんなでチュートリアルを読んでもくもくと作業をしてわかんないところが随時質問でした。

ですが、自分の力不足(方向音痴。。。)で場所がわからず1時間遅れるという不甲斐ない形となりましたがみんなに追いつこう

とせっせと作業をこなしたという次第です。

感想

Ember.Handlebars Class便利な件

印象てきだったのが


こんなふうにView側のAPIが用意されていて、この記述でイベント処理を諸々やってくれるのはありがたい。

Backbone.jsだったら通常のHTMLを記述しないといけないし、そもそもテンプレートエンジンてきなものは

用意されていない。

カスタマイズしたいときは普通に

Todos.CreateTodoView = Em.TextField.extend({
  insertNewline: function() {
    var value = this.get('value');

    if (value) {
      Todos.todosController.createTodo(value);
      this.set('value', '');
    }
  }
});

で自分用のViewオブジェクト作ってしまえば良い訳です。

あ、handlebar.jsっていうテンプレートエンジン利用してるのですね、これ。

Modelって言うクラスがない?!

MVCフレームワークなのになぜかModelって言うクラスはなくて

「Ember.Object Class」を継承して作成するっていうのがセオリーらしいです。

Todos.Todo = Em.Object.extend({
  title:  null,
  isDone: false
});

調べてみるとサーバと通信するもの機構はないみたいでやるときは、通信部分を

jQueryとか使って実装しないといけないみたいですね。。。

http://emberjs.com/api/classes……bject.html

Debugging

なにかと大変らしい、ログイングの機能は用意されてはいるがなにかとおうのは大変らしい

まぁ

Backbone.jsとくらべるとテンプレートエンジンが結構便利なのでその分最初の前提となる知識は

必要になってきそうな感じがしました。もちろん通信自体は自前で実装する必要がある?!

逆をいうとBackbone.jsはREST通信なのでその辺は小回りが聞く感じですかね。

参考URL

28

2012/09





最近、Backbone.jsがにわかに業務やプライベートでBackbone.jsを利用 していきたってことで勉強会を行いました。

僕が行うときは、だいたいみんなが野次がとばしたり質問できるようにおかしやフランクにして

お菓子ばらまいたりお菓子を発表者になげたりして話しやすい環境にできて良かったと思います。

スライドはこれ。

http://storyboards.jp/controller/1jjgwa

勉強会を通して思ったのが


■別にそんなにフル活用しなくてよくて、View側のメカニズムを利用するだけでも効果はある

■coffeescript.jsで相乗効果!!

■「_」はunderscore.jsだったんだ….

■STORY BOARDSはモデルでのパラメータチェックを行い、そして統一するためにexecjsでクライアント・サーバから同じプログラムを利用したよん♪

■backbone-rails専念されてるし、勉強になった。


ただ、Backbone.jsが正解ではないはずなので、他にも選択肢はある。それにとってかわるようなものを

どんどん検証していきたいと思う。

24

2012/09

早速叫ばせていただきます。

 

案の定、落ちましたね。。。

 

今回、Appleストアでわいせつや不衛生なものの表現のあるのは落とされるとはわかっていたたもの、

やはりこのままの世界観でやってほしいという作成者からのちっぽけな期待からうんこという表現を

削除する以外はそのままのうんこゲームで申請した次第でありまして。

 

We found that your app contains content that many audiences would find objectionable, which is not in compliance with the App Store Review Guidelines.

Specifically, we noticed the purpose of the game is to clean out feces. Such apps are not appropriate for the App Store.

We encourage you to review your app content and evaluate whether you can modify the content to bring it into compliance with the Guidelines.

ゲームの目的がうんこを掃除すること、そんなの認めないわよ!!!!







バキュームカーとかそのままにしたし、上がお穴だったから外国の人でもわかるんですね。。。

もしくは日本の方がいてこれいくない!!!っていったのかもしれないけど。







再度出直してきます。。

もっとオブラートに包みますよ!!!













うんこ。。。。

19

2012/09

札幌Ruby会議2012

今回初めてではありますが、札幌Ruby会議2012という
Rubyのカンファレンスに参加してきました。

1日目

相澤 歩 “Heroku”

Herokuはあんまり日本サポートしないのかね。

そもそもあんまり使っておりませぬが!!

url

井原 正博 “クックパッドのつくりかた”

概要にもありますが、技術的な話というよりかは開発を裏側で支えるための組織作りについて 話されていました。これ、自分、だいぶ意識たかくなりましたね。崇志!

印象に残ったのが

やりたいことをやりましょう!!!!!!!

の言葉です。ただこれだけ言われたとしても何の説得力もありませんが井原さんの話を総じて聞い ていたらすごい納得しました。

あ、web進化論読んでなかったからよんでみる。

井原 正博 “クックパッドのつくりかた”

3日目

柴田博志 “Ruby の世界の継続的デリバリ”

弊社の技術基盤整備エンジニアの柴田さん発表でした。

継続的○○!

  • 意識が低くても大丈夫な仕組み
  • 確実なフィードバックと改善を行える仕組み
  • サイクルタイムの短縮と継続した価値の提供

北海道メモ

  • 八雲町のケンタッキーがうまい
  • 新得町のそばがうまい
  • 小樽の鶏がうまい

自分たちにとってリリースとはなんなんだろう
みんなで話し合ってみよう

url

http://www.hsbt.org/diary/20120916.html

村田賢太 “分散 RSpec”

肥大化?したプログラムのテストは時間かかりまくり!! いろいろ改善してテストの時間を短縮してみた的なお話。

スペックファイルが7500以上ものテストって全然想像できないんですけど このぐらいの規模になってくるとテストもちゃんと負荷分散してかないと 速いサイクル開発ができなくなってくるのですな。ただただ関心しておりました。

url

白土 慧 “Spree で約3ヶ月でイチからEコマースサービスを作るまで”

ECサイトをSpreeで開発を行いました!以前はPHPでは作成されていて、発表者が Rails+Spreeで再構築したようです。そのときの苦労話や心構え。まだちゃんと ソース読まないと本来のSpreeの力が発揮できない(ヒントがソースやソースのコメントあったり するらしいです)!巨人がどうできているかを理解する!!

spreeメモ

  • https://github.com/spree/spree
  • railsのengineで利用されている
  • 実際コード読まないとわからない・・・
  • 1.1.0 -> 1.2.0で仕組みがらっとかわった

テスト

  • spreeのモデルでモックを作るのはすごい大変->インテグレーションテストを行っている
  • 開発、spreeの仕様・構造で足引っ張られる?
  • どんどん鳴らし、そしてspreeから話していってる
  • ある部分からモデルを作成してからそれにひもづくものを
  • テーブル構造・設計を学んでいくのは大切でその仕様に耐えうるビジネスなのか、それを利用すべきものなのかしっかり考えてから導入するべき

角谷 信太郎 “DCI and the application builds our mental models”

DCI (Data, Context and Interaction)

  • オブジェクト指向アプリケーションに対する「パラダイム」のひとつ

url

ちょっと勉強不足のせいかあまり、理解できませんでした。。。肥大かしたモデルに対して解決する一つのアプローチ!! それがData, Context, Interaction。

まとめ

ちょっと視野を広げてみたらこんなにもみなさんが違う状況、立場、ステージでコードを書いているんだと身にしみました。 Aboutに以下のようなことが記述されていたように自分もいろいろ思うところがあり、大変考えさせる3日間です!

とはいえ、自分がまだまだ勉強不足なところも露呈したのでもっと勉強していこう。

誰とコードを書いているのか、どうしてコードを書いているのか、どうやってコードを書いているのか。 カンファレンスから帰るときに、参加した人たちが自分にとってのコードを書くという活動について、いろんなことを 感じながら帰ってもらえるような、そんな場所にしたいと考えています。

http://sapporo.rubykaigi.org/2012/ja/about.html

最後に、このような貴重な経験をさせいただきましてありがとうがざいました!また参加します!

10

2012/09

最近自分が以前から運営しているサービスが大夫古くなってきていたのでリニューアルをこころみようと思いまして、

PHPからRuby+Rails+S3へ移行している途中なのですが、開発はテスト駆動で行こうと思いまして思考錯誤しています。

本当だったら社内のようにCIサーバ作成してプッシュと同時にテストが勝手に始まって終わったらIRCで通知してテスト

環境にデプロイしてくれたら良いんですが、まぁそこまで個人でするの贅沢きわまりないとおもって軽くCIできるもの

ないかなと思いまして、そんなか見つけたのが「Travis CI – http://travis-ci.org/ 」というサービスです。

A hosted continuous integration service for the open source community. (翻訳) オープンソースコミュニティのための継続インテグレーションサービス

早速、設定してみました。 とりあえず、ユーザ登録します。 だいたいここをみてやればできるはずです。。

language: ruby
rvm:
  - 1.9.3
  - 1.9.2

gemfile:
  - Gemfile

env:
- DB=mysql

before_script:
 - mysql -e 'create database frustration_test;'

script: 
  - RAILS_ENV=test bundle exec rake --trace db:migrate
  - bundle exec rake db:test:prepare
  - bundle exec rspec spec/

これでなにかプッシュしたら各言語のバージョンをそれぞれ自動的にテストしちゃってくれます。 テストが正常に終了すると緑(この間いろいろうまくいかなくてやっとうまくいきまた。。。)になってお知らせしてくれます。

あと、良かったのはPull Requestを送信したときにtravisbotが介入(この表現はおかしいかもしれない)してきて自動でそのソースが 問題無いかテストしてくれます。今回は失敗してますがこんな具合にはテスト結果を表記してくれます。これなら安心してマージできるって もんですね!!!

Travis-CI_GitHub

□参照URL

http://travis-ci.org/

https://github.com/

03

2012/09

最近いろんな言語であっちこっち開発しているから頭パンクしてきそうな季節ですね。

意味分からないですね。nakajijapanです。

簡単にできるといいのにね。まぁでもある意味生のデータを生成しているのでわかりやすいっちゃわかりやすい。
抽象化したやつは後で自分でつくっておこっと。

    //NSString *query = @"test=hoge&test2=hogehoge";
    NSURL *url = [[NSURL alloc] initWithString:@"http://test.hoge/hoge/post.php"];

    // GETでは使えない
    CGFloat quality = 100.0;
    NSData *postImage = [[[NSData alloc] initWithData:UIImageJPEGRepresentation(_imageView.image, quality)] autorelease];
    
    // POST用
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: url];
    [request setHTTPMethod:@"POST"];
    
    NSString *boundary = [NSString stringWithString:@"nakajijapan2011"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    NSMutableData *body = [NSMutableData data];

    //	name=image dataの設定
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"image\";filename=\"source.jpg\"\r\n"] 
                      dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg;\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:postImage];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

    [request setHTTPBody:body];
    NSURLResponse *response = nil;
    NSError       *error    = nil;
    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    
    // error
    NSString *errorStr = [error localizedDescription];
    if (0 < [errorStr length]) {
        UIAlertView *alert = [[UIAlertView alloc] 
                              initWithTitle:@"RequestError" 
                              message:errorStr 
                              delegate:nil 
                              cancelButtonTitle:@"OK" 
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
        return;
    }

今回の処理でいうと同期処理なので実際にiPhoneでユーザがスムーズにストレスなく操作することを考慮にいれると
非同期の処理かましたほうがいいんだけど、それはまた後ほど。

■参照URL
https://developer.apple.com/li......rence.html
https://developer.apple.com/li......onDelegate

03

2012/09

iOSシミュレータをアクティブにして「Command + Control + C」

プレビューを起動「Command + n」

メニューで保存でいけた!

毎回忘れる。

02

2012/09

どーもー。肥だめちゃんです。

先日ですが、弊社paperboy&co.ではお産合宿といいモノを生み出す企画がございましてそれに参加しました。 その成果としてタイトルのようなものを作成したという次第です。

中島清掃局 デザイナーはイソジンさん( https://twitter.com/isodine )で、プログラマは肥だめです。

以前にも参加していますがプロダクトを作成していましたが、いろいろと考えた結果世間の波が「携帯」と「ゲーム」だろうということでゲームを作ってみようってことになりました。しかもうんこで・・・!!!ただ、それだけだと普通だなっとおもったので排便記録をできた上でのサブ機能としてゲームがあればいいよねって言うスタンスで考えていました。 あと、音姫とかも。(ここから若干カオス気味に・・・)

こう、なんかトイレできるプラットフォームアプリてきな位置づけにしようとしていましたが自分の力量足らずで排便管理の方まで手が回らず機能を削るというちょっと悔しい結果になりましたが残りの機能は作成することができました!!!

ですがこの数週間後に「タブログ」さんという方が排便管理アプリで「ウンコのアプリ作ってアップルの審査通ったけど、やっぱりウンコダメと言われリジェクトされた件」( http://tagwak.hateblo.jp/entry……かね。

とりあえず、ソフトクリーム・・・・。いや違う。

スイーツだ!と。。。。。。

中島清掃局

大丈夫かな。。。

とりあえず、今申請待ちなので進捗があればまたブログに記載しようかとお思います。

では!

30

2012/08

とあるきっかけからゲームを作りたいというなんの根拠もない衝動にかられまして(いや本当はあるのですが)1から本を買って勉強することになったのですが、そのときに読んだ本を紹介します。

この本はフレームワークのバージョンはちょっと古く今とはことなる部分はありますがバージョンを超えてたいていの基本的なことが学べる代物だと思います。僕が作成したかったのは大雑把にいうとシューティングだったので物理エンジンやタイルマップの章についてはすっとばして読んでいます。 ただ、大変だったのはサンプルプログラムが読んだものを書きうつすと実行できないので出版社のサイト?からダウンロードしてそのコードをコピペせず写経してわからんものは本に立ち返ってよみかえしたりしてました。

次にこちらの方は、以前の本の次に出版した本で一番新しい書籍になります。もちろん英語です。 基本的には同じことが記述されているのですが、xcodeのバージョンアップに伴い多少の実装に変更があったことと ゲーム作成するさいに役立つ周辺ツールが変更されてました。自分はこちらで紹介されていたあたらしいツールを 利用してゲームを作成しています。

TexturePacker – http://www.codeandweb.com/texturepackerです。

あと、もっとちっちゃなところでいうと以前のサンプルゲームがチープじゃなくなっていますw この書籍も全部読んだと言うわけではなくてなにか変更されてるところはないか、新しい知識がないか のチェックというスタンスで読みました。

以上が紹介です。

これを読み終わって、ゲームの実装の終盤に差し迫った時についにメジャーバージョンがあがりまして困惑しましたがなんとかなりました!

27

2012/08

るろうに剣心をみてきた

昔からアニメ・マンガをしていた私。 日本で実写化して成功した作品がないせいかこれもそんなたいした映画じゃないだろと多少ながら 小馬鹿にしていたところはありますが、予告編をみてなんだか多少ならずか期待を抱いてしまい、 だめもとでいってまいりました。

日本のチャンバラ映画では1番と勝手に思っている私でした。