開発のスループットを犠牲にしてレイテンシを向上させる

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~作者: Mike Cohn,マイクコーン,安井力,角谷信太郎出版社/メーカー: 毎日コミュニケーションズ発売日: 2009/01/29メディア: 単行本(ソフトカバー)購入: 74人 クリック: 764回この…

inputでエンターキーを押しても、formのsubmitイベントが発生しないのはどうすれば良いの?

いつも忘れて混乱するので書いておく。細かいルールを解説したページを前見たんだけど見つけられない……formの中にinput[type=submit]なinput要素がないと、テキストフィールドでエンターを押してもsubmitイベントが発生しない。見えないようにしたsubmitボタ…

テキストフィールドの値の変更の監視にはkeyupイベントではなくてinputイベントを使おう

漢字が読めないがいこくじんやようちえんじにもひらがなならよめるね!アクセシブル!という話ではなくて、keyupイベントを使ってテキストフィールドの変更を監視するとiOSでこんなことになります(多分、変換の確定がキーイベントじゃない)。左上の「かん…

ユビレジで水が飲めるようになるまでの話

水が飲めるようになるまでの例え話にだけ食いついてみる。まあタイトルはちょっと嘘で「お菓子を食べられるようになるまで」の話ですけどね。 権限委譲、リーダーシップ、チーム - naoyaのはてなダイアリー ユビレジは、2010年に始めたスタートアップです。…

テストが通らなくて5時間泣いた話をしようか

class MyError < StandardError attr_reader :exception def initialize(exn) @exception = exn end end begin begin 1/0 rescue ZeroDivisionError => exn raise MyError.new(exn) end rescue MyError => exn p "rescue MyError", exn rescue Exception => …

要望を、忘れることで穏便かつ確実にリジェクトする

先日ちょっと社内で議論をして、ユビレジの改善に関するアイディアの出し方を整理しました。これまでどうやってたかというと、BasecampのTodoリストにリストアップしていた。これを止めることにしました。基本的には、Discussionという機能を使います(要す…

2012年の最後にSSDにしてみた

まあーMacは遅い。メモリ16GBも積んでるのに遅い。XcodeとRubyMineとRailsとAparture起動すると、16GB使い切る。というか「現在非使用中」とか書いてある領域が6GBくらいあって、遅い。レインボーくるくるが始まると遅い。*1たくさんある「現在非使用中」が…

Objective-Cの残念な子なところ

__blockがうざすぎる。 NSArray* a = [object foo]; NSArray* b = [a bar]; NSArray* c = [b baz];とかあったりして、ここいらがどうも遅い気がするので時間を計測したいとしよう。まずはこんな感じ。 NSDate* start = [NSDate date]; NSArray* a = [object …

Cucumberは偉かった

Cucumberを初めて見た人はこんな違和感を感じるんじゃないかと思います。 なんだこれ。変なDSL入れるより、直接Rubyプログラムを書いちゃう方が楽じゃん。便利じゃん。速いじゃん。 僕もそう思っていました。そう思ったプログラマは、Cucumberを使わずにTest…

PABさんのユビレジへのジョインについて

PABさんがユビレジにジョインしました。バリバリScalaでプログラミングされてる方で、水島を採用したときから恐れてはいたとおり、ユビレジがどんどんScalaに汚染されていきます。ああどうしましょう。(あ、念のため白々しく宣言しておきますが、私は引き続…

みずほ銀行のATMのテンキーがおかしい件

あなたが日常的に見ているテンキーには(たぶん)2種類あることに、気づいているだろうか。 画像は、iOS 6に搭載されている「電話」と「計算機」のスクリーンショットである。テンキーの順序が逆になっている。なんで逆になったのか、なんだかよくわからない…

Silent Wednesday

ジェイソン・フリード:なぜ職場で仕事ができないのか | Talk Video | TED.com 【TED Talks】なぜ職場で仕事ができないのか/ジェイソン・フリード | 書き起こし.com オフィスが仕事をするための理想的な環境でないという問題についての、37signalsの社長Json…

複数のプロジェクトでGemfileを共有する方法

require 'pathname' instance_eval (Pathname(__FILE__)+"another_project/Gemfile").read) などとします。 なんでこんなことやりたいの? Railsのプロジェクトをテストするためのプロジェクトを用意して、そっちでもRailsのモデルを読みたいのです*1。さら…

なんでソフトバンクにいかないといけないのか

例えばSquareはSSNを取って契約者の身元の担保にしているわけだと思うのですが、それがない国だとこうなるのかなーという気もします。ソフトバンクのiPhoneが必要なのは、まあソフトバンクの戦略なのかもしれませんが、その辺りの契約者の情報をきちんと確認…

Paypal Hereを買ってきました

https://www.paypal.jp/here/Webページには書いてないけどソフトバンクのiPhoneが必要という噂の、Paypal Hereを買ってきました。(僕のiPhoneはSoftbankなので、auだとダメなのかとかわかりません。)Paypal Hereの購入に必要そうな手続きとか、Softbankで…

第3回 iphone_dev_jp 東京iPhone/Mac勉強会でFrankの紹介をしました

サンプルプログラムとプレゼンテーションを公開します。https://github.com/soutaro/chefpad各方面に(いらん)配慮をした結果、サンプルプログラムは画像リソースを削除してあります。(どの方面かはプレゼンテーションの中に残してあるスクリーンショット…

Core Dataに久々にはまった

ユビレジを使っているお客さんから商品のダウンロードがえらい遅いという報告を受けました。さあ、いったい何が起きている??遅い原因は、二つありました。 インポートの際に手抜きをして、Find-or-Createをナイーブに実装していた saveがめちゃくちゃ遅い …

SelectorKitというライブラリを公開します

http://soutaro.github.com/SelectorKitiOSアプリのViewを指定するためのselectorです。割とCSSセレクタに似た構文にしています。uiQueryというのがあるのですが、これを書くのがかなりしんどいのでかっとなって作りました。ドキュメントに書いてないのです…

FrankでRubyからiOSアプリを操作してテストする

昨日の話の続きです。 iOSアプリのインテグレーションテストに関する問題 - soutaroにっき こんな感じでテストを書くことができます。 ENV['RAILS_ENV'] = 'development' require File.expand_path('../../server/config/environment', __FILE__) require 'r…

iOSアプリのインテグレーションテストに関する問題

iOSにかぎらず、今日のアプリケーションではサーバとクライアントの両方を開発しなくてはいけないことが、決して特別ではありません。その際にややこしいのが次のような事情です。 開発は同時に行われるので、厳密にプロトコルを予め決めておいて、モックだ…

ユーザビリティテストをやってみました

アジャイルユーザビリティ - soutaroにっき 実際にやってみました。テスタは開発チームの友人をたどって、4人に参加してもらいました。私は見てるだけの人で、弊社のデザイナの子が案内役です。次のようなシナリオを用意して、実際に操作してもらいました。 …

アジャイルユーザビリティ

ソフトウェアの開発において、それが使いやすいのかどうかを判断するのは大切なこと。でも、開発チームのメンバー、プログラマやデザイナが見ていても、本当に迷わずに使えるのかどうか調べることはとても難しい。よろしい、それではユーザーテストだ。アジ…

UnificationAssertionをgithubに公開しました

https://github.com/soutaro/unification_assertionGemにしました。Bundlerがあれば簡単にインストールできるよ!もうちょっと手元で使ってみてから、どっかで宣伝する。 単一化でテストすれば良いじゃない - soutaroにっき

単一化でテストすれば良いじゃない

最近、こんなテストをいくつか書いていて、イラっとしました。 post(:create_note, { :note => { ... } }) assert_equal( { "id" => 13, "created_at" => Time.now, "updated_at" => Time.now, .... }, JSON.parse(@response.body)) このテストにはいくつか…

インターネットちょっと舐めてたわ

http://headlines.yahoo.co.jp/hl?a=20120210-00000022-zdn_b-bus_all こういうことがありました。つまりYahoo!のトップページにユビレジへのリンクを含む記事が掲載されたということです(当初リンクがありましたが、サーバに全くアクセスできなくなって、…

String#succは、辞書順ではない

ぼけっとしてて気づいてなかった。"999"の辞書順で次の文字列は、"999a"や"9990"であって、"1000"ではない。 ["999", "1000"].max => "999" ["999", "999".succ].max => "999" 後者は直感的に変だと思うんだけど。ひとまず、適当に辞書順になりそうな感じの…

@kmizuがjoinしました

ちょっと前の話になるのですが、忙しくて記事にできていなかったので記事にします。@kmizuがユビレジで働くことになりました。1月4日からです。そういうわけで、これからユビレジは全力でScalaに移行します。Good by Rails!!ということにはならないのですけ…

綺麗なプレゼン用スライドを作るときに使う写真を探す、1つのテクニック

写真素材を探すには、Googleの画像検索が便利です。 綺麗なプレゼン用スライドを作る、10のテクニック | Take it easy! - mauekusa 's BLOG - 私は、内輪で使うスライドを作る場合はGoogle画像検索を使うことがありますが、そのスライドを見る人が多い場合、…

公衆無線LANに接続して認証してない状態だと、インターネット接続はどうなってるか?

なんか、その辺が疑われる問題が報告されていたので、気になって近所のマックで試してみました。この場合はマックってマクドナルドのことだよ! iPhoneで試すよ! なんかmobile pointにwi-fiが接続できた時点で、インターネットに繋がってしまいました……orz…

Googleにも知らないことがあることを知った冬の夜

Googleはなんでも知っている。近所に新しくできたスーパーのことも知っていたし、美味しいお弁当やさんのことも知っていたし、苗場のことも知っていた。なんでも知っていると勝手に思い込んでいた。 iOS5ではNested Managed Object Contextという新機能が導…