タグ

ブックマーク / satoshi.blogs.com (11)

  • 無名関数を使った非同期通信のススメ(JavaScript)

    ここ最近はブラウザーの上で動く思いっきりRIAなアプリケーションを書いている私。こと通信の部分になると JavaScript での開発効率が、C++/Java/Objective Cなどと比べて格段に高いことをつくづく感じている毎日なので、今日は、そのあたりを少し解説してみようかと思う。 サーバーのAPIにアクセスするプログラムを書く方法は色々とあるが、「サーバー上の特定のURLにHTTPでアクセスして結果をXMLやHTMLやJSONで受け取る」というケースに限定すれば、基的に3つのパターンに分けられる。 1. 同期通信 result = urlfetch.fetch("http://www.google.com/") if result.status_code == 200: doSomethingWithResult(result.content) その書きやすさのために、実務経験の

  • アップルの30年ロードマップ

    昨日、日経BP主催のAndroidに関するセミナーで講演+パネルディスカッションをしたのだが、パネルディスカッションを一緒にさせていただいた、日通信の福田尚久氏との話(特に、楽屋に戻ってからの非公開の話)が興味深かった。 福田氏は、スティーブ・ジョブズがAppleに戻り、Microsoftからの資金調達、iPodのリリース、アップル直営店の展開、という今のAppleの成功の基盤となる「奇跡の復活」を遂げた時期にジョブズの側近として活躍した人。 彼に言わせると、今のAppleのビジネス戦略は、倒産寸前だった97年当時に作った「30年ロードマップ」に書かれた通りのシナリオを描いているという。 もちろん、具体的な内容は企業秘密でもあるので直接聞き出すことはできなかったが、ここ12年の間にアップルが出して来たもの(iPod, iTunes, iPhone, Apple TV, Safari, O

  • Google App Engine入門:実行効率を犠牲にせずに開発効率だけを上げるテクニック

    一つ前の富豪プログラミングのエントリーともつながる話だが、Google App Engineは「ちゃんとスケーラビリティを考慮してアプリケーションを作るには何に気をつけなければならないか」を勉強するには絶好の環境だ。そこで今回は、その「ケチな大富豪的なプログラミング」の実践編。 Google App Engine上のアプリをいくつか書いているうちに、必要に迫られて自然発生的にできてきたのが、gdispatchという数十行のコードからなる小さなモジュール(ソースコードはgithubに置いてある)。これをGoogle App Engineに標準で付いて来るwebappと組み合わせてフレームワークとして使っている。 gdispatchを設計する上で重視したのは、 (1)Google App Engine上でのアプリの開発を効率化する上で「明らかにこれがあると開発効率が格段に向上する」というもの以

  • Twitterを使ったブクマを格段に簡単にするTiny Quote

    興味深い記事やブログエントリーをネットに見つけた時に、それにひと言コメントを付けて投稿、というのはTwitterで良く見かける行動パターンの一つ。それも他の誰かのためにというよりは自分自身への備忘録という意図の場合もしばしばあるので、ある意味で「ソシアル・ブックマーク」的な使いかたに近づいてきているとも言える。 ただ、そんな時に140文字の中に記事中で気になった文章を引用しつつ自分の意見を述べてかつURLを詰め込む、というのはなかなか難しい。 そこで、先日の Tiny Message のバックエンドをこの問題の解決に使えないかと作ったのが、Tiny Quoteというブックマークレット。それなりに動き始めたのでここで公開する。 TinyQuote (←このリンクはクリックせずにブックマークバーにDrag&DropもしくはCopy&Pasteして登録してください) このブックマークレットをブラ

  • 「リニアにスケールするように作れる」からこそのGoogle App Engine

    Google App Engineを使った最初の作品 Tiny Message (http://tinymsg.appspot.com)をリリースしてまだ20時間経っていないが、設計の過程でいろいろと学べたことがある。 その中でも一番収穫として大きいのは、「Google App Engineを使えば、リニアにスケールするサービスを作ることが可能」だということが実感できたこと。 もちろん、Google App Engine上に作ったからと言ってすべてのアプリがリニアにスケールするわけではなし、どんなアプリでもそう作れるわけではない。Entity Groupの構成を間違えればそこがボトルネックになるし、Queryの二重ループなんかを書いたら、すぐにタイムアウトしてしまう。 リニアなスケーラビリティを持つDatastoreの上で作るとは言え、やはりDatastoreの仕組みをちゃんと理解してデー

    czblue
    czblue 2009/11/17
  • Python Hack : 噛めば噛むほどおいしくなるクロージャの話

    最近 JavaScript を書く機会が増えているが、それに従って自分のコーディングスタイルが少しづつだが変化してきているのが分かる。もともと「コードの読みやすさ」や「実行効率」にとことんこだわるタイプだが、(JavaC++になくて)JavaScriptRubyにあるクロージャや無名関数が私のコーディングスタイルにとてもマッチしているからだと思う。 簡単な例を紹介しよう。Pythonで書かれた config.py というモジュール。config.yamlという設定ファイルを読み込んで Dictionary として返す config.get() という関数。普通に実装すると、以下のような感じになる。 import yaml _config = None def get(): global _config if not _config: data = open('config.yaml')

  • Cloud Computing考:Amazon ec2とGoogle App Engineの違いを私なりにまとめてみた

    Cloud Computing の話が注目されるようになってしばらく経つが、商用での格応用という意味ではまだまだ未熟な市場である。PhotoShareは去年の7月サービス開始時から Amazon の ec2+S3 という組み合わせで運営しており、私から見れば当然の選択だったわけだが、あのタイミングで商用サービスへの採用に踏み切った会社も少なかったのか、何件かインタビューの申し込みが来たりして少し驚いている(参照)。 すぐに陳腐化するハードウェアの資産はできるだけ持ちたくないし、自分でデータセンターにラックを借りるなんてことはコスト的に見合わない。かといって、通常のレンタルサーバーは初期費用がばかにならない(今は少しは改善されているのかも知れないが、去年の段階では「それじゃあハードが自分で買えるじゃん」と言わせるぐらいの初期費用を請求する企業がほとんどであった)。それに加えて、どのくらいの

  • マーケティング:SMARTな目標設定

    University WashingtonでのMBAの授業も既に二年目に入った。4月に二つ目のベンチャービジネスを始めたばかりの私としては、授業で聞いたことをすぐに実践できるのでとても良い勉強になる。「MBAは何年か実務を経験してからこそ受ける価値がある」という話は良く聞くが、自分でビジネスをしながら受けるMBAの授業は格別である。 今回ためしたのは、マーケティングの教授が口をすっぱくして繰り返す "S・M・A・R・T" な目標設定。いかなるマーケティング活動をする場合においても、まずはその目標設定をしっかりすることが大切で、その際に大切なことは、 Specific: 目標は具体的でなければならない Measurable: 目標が達成できたかを計ることができなければならない Atteinable: 目標は(たとえ難しくとも)十分に達成可能でなければならない Relevant: 目標はそのビ

    czblue
    czblue 2008/11/27
  • セコイア・キャピタルのプレゼンに込められたメッセージ

    シリコンバレーのVCの中で頂点に位置すると言っても良いセコイア・キャピタルが、投資先のベンチャー企業のCEOを集めて緊急のプレゼンをしたそうだ(資料は「Sequoia Capital on startups and the economic downturn」にある)。今の金融危機が今後の景気や企業経営にどんな影響をもたらすだろうかの理解を深める意味でも、ベンチャー企業経営に関わっていない人も、目を通しておいて損はない資料だ。 この資料の中で、もっとも明確なメッセージが込められたのは49番目のスライド。 「このタフな環境で生き残りたかったら、これから会社に戻ってすぐに人を減らしてサバイバルに努めろ。それが出来ないベンチャー企業は生き残れないし、セコイアとしても支援できない」というのがセコイアからのメッセージ。 ここで言うところのDeath Spiralとは、資金繰りがうまく行かなくなってか

    czblue
    czblue 2008/10/21
  • 「作っては壊す」過程があってこそ良いものが作れる

    iPhone用の「はてな人気エントリーリーダー」、そろそろ形になってきたのだが、作ってみていろいろと発見した部分もあったので、全面的にクラス構成を見直し、大幅に書き直した。 HTTPで通信をしているコードが二カ所に分かれていたので、それをDataOverHTTP/XMLOverHTTPという二つのクラスにまとめ(XMLOverHTTPはDataOverHTTPのサブクラス)、はてな独自のRSSフィードを読んでいるコードから一般的なRSSフィードを扱うコードをくくりだしてRSSFeed/RSSFeedLoaderという二つのクラスにまとめて、あとで別のアプリケーションで再利用することを可能にした。それに加えて、各種ローダーに非同期通信をさせる主体をController(HotEntryViewController)からModel側(HateneHotEntry)に移すことにより、難解になりが

    czblue
    czblue 2008/03/31
  • Life is beautiful: 優秀なナースがいるとシステムがなかなか改善されないという話

    「Why hospitals don't learn from failures(なぜ病院は失敗から学ばないのか)」という論文を読んでなるほどと思う部分があったので、ここにメモ代わりに書いておく。 この論文の筆者(TuckerとEdmondson)は、医療ミスがなかなか減らない原因を探るために、全米の10の病院を長期間に渡って調査・研究したのだが、その結果判明したのは、「システムの改善」という観点からは、ナースの優秀さと勤勉さが逆効果になっているという皮肉な話。 「優秀なナース」の定義はどこでも同じで、「目の前の患者が必要としているものを、あらゆる障害を乗り越えていち早く提供する」こと。取り替えるべきシーツが不足していれば別の階に走って行って調達してくるし、新米のナースのミスにはいちいち噛み付くこともなくそのミスを取り繕う。そんなナースたちにとっては、その手の「不具合」や「障害」は避けられ

    czblue
    czblue 2007/11/29
  • 1