3D mode!

Entries in 2011/04

半径3メートル以内の世界でもっともっとひっついてたくて「1/2」をつくりました

実は「第2回 開発コンテスト24」に参加していました。タイトルにもある「1/2」というものをつくりました。

エンジニア向け「第2回 開発コンテスト24」開催 | クックパッド株式会社

課題(普段の生活で)半径3m以内にいる人が困っていることを解決する

エンジニア向け「第2回 開発コンテスト24」開催 | クックパッド株式会社

とは言え、今回、発案から実装までをメインで行ったのは @kei_s さんで、自分はちょっこし手伝った程度なので、作品の紹介は @kei_s さんに任せて、自分は、自分目線でどのような時間を過ごしたのかを、記録しようと思います。

他のメンバーの視点から

金曜日の夜

2011年4月22日(金)、21時。開発コンテスト24がスタートしていました。そのとき自分は代々木にいて「一時帰国中の @mootoh さんと、美味しいお米を食べる会」的なものに参加していました。「うぅ、お米が美味しくて泣ける」とか言ってもぐもぐしているときに @hmsk ちゃんに話しかけられて(ただし、mention ではない。若者の mention 離れ)、開発コンテストがすでに始まっていると気が付きました。

@mootoh さんと、それから、一緒にいた @kana1 ちゃんと「おお、コンテストがはじまっていた!」「入賞すると何かもらえるのかしらね」「今なら iPad2 がもらえるんじゃないのー」「そうそう、iPad2 が欲しくてさー」「ぺちゃくちゃ」「ぺちゃくちゃ」なんてお話しているうちに、金曜日の夜は更けていったのです。お米が本当に美味しかったです。

土曜日を迎えて

はい!

気が付けば、コンテスト終了まで残り12時間ほどになっていました。金曜日の夜の眠る前と、寝ている間と、土曜日に起きてからも、ずっとネタを探していました。「半径3メートルかあ」ってところを出発点に考えつつ、日頃、脳内にストックしてあるアイディアから、今回のコンテストのテーマに合いそうなものはないだろうか、と考えてみたり。

  • いま、半径3メートル以内にいる人って、このマンションの住民さんぐらいだな
  • お隣のお部屋の(この記述は自粛されました)
  • 上の階にいる(この記述は自粛されました)

うわあ… (提出できるような)作品のアイディアがぜんぜん浮かばない!これはもう、あきらめて、普段通りのプログラミングでもするか。と考え始めた頃に、@kei_s さんが何やら開発を進めていると知ります。

「わたくしめにも、貢献させてください…!」「動作確認でもなんでもしますから!」

ここ最近の、自分の身の回りにあった、上手くいったプロジェクトの進め方は、いつもこんな感じでした。誰かが先行して、触って体験できるまでのものを、創る。それに共感した他の人は「こういう貢献をしたいです」を提示し、発案者からコミット権を頂戴する。あとは、ひたすら貢献あるのみ、です。

「1/2」のバックエンドの仕組みと、Chrome Extension の大枠は、すでに @kei_s さんが完成させていたので、自分は Web サイトの用意や、マークアップや UI の細かい部分で貢献させてもらいました。

こういった、生きているプロジェクトに関わるのはとても良い機会なので、無駄にしないように、自分の作業にも、どんなに小さくてもいいからなるべく何かしら新しい挑戦を含めるようにしています。今回は、Google Web Fonts の API を試してみました。日常の中でストックする「これ試してみたいなー」をちゃんと活かしてあげる心がけ。

1/2 - Real-time Tab Sync

Node と express と jade は初めて触ったのですが、ほとんど Ruby と Sinatra と Haml だなーと思って作業していたら、案の定「基本的にはその認識でよくて、だけど、細かいところでハマる」という想像通りの展開になりました。楽しかったです。Node 版 Sass とか Scss にも興味があったけれど、そこまで手が届きませんでした。次の機会には試そう。

開発作業に区切りをつけて、応募の内容を真剣に考え始めたのが、20:30くらいのこと。自分たちとしては、相当しっくりくる文章を書くことができて「この文章が一般公開されることもなくお蔵入りするのかと思うと、虚しくて笑えるねえ」なんて思っていました。

20:55頃。無事に応募が完了し、「Your entry is accepted」のメールを受け取り、チームは「お疲れさまでした」と言って解散しました。お腹が空いていました。

結果は「特別賞」

わぁ!本当にビックリしましたー!お蔵入りすると思っていた文章は、公式サイトにばっちり掲載されていて吹きました。


第2回「開発コンテスト24」特別賞

ブラウザとブラウザ 瞳と瞳と 手と手
同じもの同じ感じかたしてるの 愛してる 愛してる 愛してる
あたしまだ懲りてない 大人じゃわかんない
届かないって 言われたって このままジャンプしたい

まとめ

複数人でタブを同期してブラウジングできる「1/2」をつくりました。「おお、なんだこれ!」という、なかなか楽しい体験が待っていますので、興味のある人は、ぜひぜひ試してみてください。Chrome Extension です。自分の日常では「会議室で、誰かがマシンをプロジェクタにつないでいて、みんなであーだこーだと言いながら色んな Web サイトを見てまわっている」状況ってのがあるので、そんなときに使いたいです。「チャットで URL を教えてー」なんて言わなきゃいけないすべての状況を「1/2」で改善できます。

1/2 – Real-time Tab Sync

企画から実装までを担当された @kei_s さんにおかれましては、素晴らしいお仕事でしたね。お疲れさまでした。@darashi さんと一緒に乗っかることができて、とても楽しかったです。全員が自宅にいながらのリモート共同開発も、すっかり慣れてきました。Git のリポジトリと音声チャットがあれば、けっこう戦える。まぁ、気心が知れた仲だから、実現できることかもしれません。よいチームでした。それでも、作業が終わったあとに乾杯できないのは寂しいので、次に全員が揃う機会には、受賞を祝って乾杯しましょうね!

表彰式は5月中に行います。応募作品のLTも予定しておりますので、皆様のご参加お待ちしております。

第2回「開発コンテスト24」受賞作品発表 | クックパッド株式会社

表彰式も楽しみです!あたしも参加していいのかな…!クックパッドさま、素晴らしい企画をありがとうございました!お疲れさまです!川本真琴をひたすらリピートして聴きながら、楽しく作業できたのでした。

Cloud FoundryにRails/Sinatra/Nodeアプリをデプロイしてみた

4月13日にサインアップ申請をしておいた Cloud Foundry から「準備できたよー」のメールが届いたので、さっそく触ってみました。今なら、サインアップから10日くらいで使えるようになるってことでしょうかね。

The industry’s first open platform as a service. Run your Spring, Rails and Node.js applications. Deploy from your IDE or command line.

Welcome to Cloud Foundry

Welcome to Cloud Foundry

今回は Rails アプリ、Sinatra アプリ、Node アプリのデプロイを試してみました。ソースコード一式を GitHub においてあります。

june29/cloudfoundry-samples – GitHub

GitHub Mug

(写真は本文と関係ありません。手に入って嬉しかったので載せました)

準備

コマンドラインのクライアントを gem でインストールしました。

$ gem install vmc
$ vmc -v
vmc 0.3.10

Rails アプリ

普通に Rails アプリをつくって、プロジェクトのディレクトリで vmc push を実行します。

$ vmc push

Would you like to deploy from the current directory? [Yn]: Y
Application Name: sample29rails
Application Deployed URL: 'sample29rails.cloudfoundry.com'?
Detected a Rails Application, is this correct? [Yn]: Y
Memory Reservation [Default:256M] (64M, 128M, 256M, 512M or 1G) 64M
Creating Application: OK
Would you like to bind any services to 'sample29rails'? [yN]: N
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (15K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

scaffold だけでつくったアプリをデプロイしてあります。普通にデータベースに書き込めている感じ。

http://sample29rails.cloudfoundry.com/

Sinatra アプリ

app.rb を書いただけ。これだけで vmc push したら動きました。

$ vmc push

Would you like to deploy from the current directory? [Yn]: Y
Application Name: sample29sinatra
Application Deployed URL: 'sample29sinatra.cloudfoundry.com'?
Detected a Sinatra Application, is this correct? [Yn]: Y
Memory Reservation [Default:128M] (64M, 128M, 256M, 512M or 1G) 64M
Creating Application: OK
Would you like to bind any services to 'sample29sinatra'? [yN]: N
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

http://sample29sinatra.cloudfoundry.com/

Node アプリ

ファイル名は app.js にしておく必要があると書いてあったのでそうしてみたら動きました。express を使ってみたので、package.json を書かなきゃいけなくて、npm bundle も実行しておかなきゃいけない。

参考にしたのは Deploying a Node.JS app with NPM dependencies : Cloud Foundry Community です。

$ vmc push

Would you like to deploy from the current directory? [Yn]: Y
Application Name: sample29node
Application Deployed URL: 'sample29node.cloudfoundry.com'?
Detected a Node.js Application, is this correct? [Yn]: Y
Memory Reservation [Default:64M] (64M, 128M, 256M, 512M or 1G) 64M
Creating Application: OK
Would you like to bind any services to 'sample29node'? [yN]: N
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (123K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

http://sample29node.cloudfoundry.com/

おまけ

Heroku の heroku コマンドと同じ感覚で適当にコマンドを打ったら通るので面白かったです。

デプロイしたアプリの一覧を見るときは vmc list でした。

$ vmc list

+-----------------+----+---------+----------------------------------+----------+
| Application     | #  | Health  | URLS                             | Services |
+-----------------+----+---------+----------------------------------+----------+
| sample29sinatra | 1  | RUNNING | sample29sinatra.cloudfoundry.com |          |
| sample29node    | 1  | RUNNING | sample29node.cloudfoundry.com    |          |
| sample29rails   | 1  | RUNNING | sample29rails.cloudfoundry.com   |          |
+-----------------+----+---------+----------------------------------+----------+

デプロイしたアプリを削除するときは vmc delete です。

$ vmc delete #{app_name}

あとあと、vmc push したけど「何のアプリケーションか分からなかったよ」ってときは、以下のようになります。

$ vmc push

Would you like to deploy from the current directory? [Yn]: Y
Application Name: sample29
Application Deployed URL: 'sample29.cloudfoundry.com'?
[WARNING] Can't determine the Application Type.
Select Application Type: (Rails, Spring, Grails, Roo, JavaWeb, Sinatra or Node)

内部では、どのようにアプリケーションを判別しているのでしょうね。ちょっと興味があります。

まとめ

「Heroku さんが息をしていないから…」というわけでもないのですが、Web アプリのホスティング先として Heroku 以外の選択肢があってもいいですよね。Google App Engine も視界にはありつつあんまり手が伸びていなくて、Cloud Foundry は「Rails も Sinatra も最初から動くよ」と謳っていたので勢いで触ってみました。Node アプリが動くという意味では Joyent に並ぶ選択肢にもなるので嬉しいですね。

Heroku の場合は「ああ、git で push すればいいのか」だったのが、Cloud Foundry の vmc コマンドは、独自に覚えることが多くなりそうです。パッと触ってみたところでは「よく分かっていないけれど動かせている」感じで、もうちょっと踏み込んだことをしようと思ったら、色々と調べる必要が出てきそうです。

今後もちょこちょこ触ってみようと思いました!おしまい。


もっとちゃんと説明してあるエントリを見つけたのでリンクしておきます!

VMware発のPaaS、CloudFoundryを試してみた – y-kawazの日記

「ガローア会議01」を開催しました

「アトリエ」という空間に、強い憧れがあって。そこに行けば、いつだって誰かがいて、絵を描いていたり、木を彫っていたり、土をいじっていたりするような、創造の空間。アプリケーションエンジニアにとっての「アトリエ」みたいな場所が、あったらいいなあ。

ガローア会議01

2011年4月16日(土)に「ガローア会議01」というものを開催しました。

15日、@noize_hioki くんは Agile Japan のレポーターを務めるために東京にくる予定がありました。「宿泊先はどうするの」と聞くと「ガローアに泊まります!」と言いました。同じ頃、@RooandQoo ちゃんからは「Ruby でものづくりしたい!」と連絡がありました。

お話をしていて、ふたりの前のめりなテンションに共通する良さを感じたので、この良さを膨らませたいと思って、ガローア会議01に臨みました。開催までの1週間は、ごはんを食べているときや、自転車を走らせているとき、シャワーを浴びているときに、どうやって過ごしたら楽しいだろうかって、考えていました。

ところで、おふたりの感想エントリがよく書けている!自分の言葉で書けるのはいいことですね。

招待講演「わたしとVim」

当日、たまたま @kana1 ちゃんが近くにいるってことが分かったので、挨拶がてらモンスターボールを投げてみたら、見事に捕まえることができました。そのまま連れ去って「いけ!かなちゃん!招待講演だ!」とけしかけて「わたしとVim」という題でお話してもらいました。

とても、よかった。無茶振りにも関わらず応じてくれてどうもありがとう!

勝手なイメージでアレなのですが、@kana1 ちゃんは思い切りソースコード寄りの人だと思っていまして。でも、じっくりとお話を聞いていると、それだけじゃないってことが分かりました。

若いおふたりに「達人プログラマは、なるべく早くに読んだ方がいいよ」と勧めていたり、他にも「リファクタリング・ウェットウェア」に書かれているエピソードを紹介してくれたりと、プログラムを書く技術だけではなく、プログラマとしての心構えのお話や、プロセスのお話にも意識が向いているのでした。

今回のガローア会議01の進め方や時間の過ごし方についても、色んな意見を出してくれて、心強かったです。たまたまだけど、@kana1 ちゃんがいてくれてよかったなあ!

一口に「プログラマ」とか「ソフトウェア・エンジニア」と言ってみても、実に色んな種類の人がいて、それぞれに興味範囲が違っていたりして、面と向かってゆっくりお話してみると、気付きが多くて面白い。@kana1 ちゃん、またお話しましょう。楽しい!

Hackathon

ガローア会議01は、@noize_hioki くんと@RooandQoo ちゃんが手を動かす場にしたかった。おふたりもそれを望んでいたし、自分も同じ気持ちでいました。自分がお話をして終わる場にはしたくなかったので、Hackathon の形式で進めてみることにしました。部分部分では Workshop っぽい形式になったところもあるのですが、目指したのは Hackathon で、もし「ガローア会議02」があるとしたら、もっともっと Hackathon っぽくしていきたい。

おふたりが発していた「前のめり感」を大事にしたかった。

「前のめり感」について、@RooandQoo ちゃんとペアプロしているときに「これだ!」という感覚があったので、ちょぴっと紹介します。

@RooandQoo ちゃんは、Twitter クライアント的なものをつくっていました。使用ライブラリの選定からはじめて、ちょっと面倒な Twitter のアプリケーション登録と OAuth の認証を突破し、home のタイムラインを取得するところまで順調に進みました。コンソールに「Tweet の内容をだばだばと表示する」ところまでできたのです。

AC Stream

これを見て自分は「じゃあ、次は○○を…」と言いかけて飲み込みました。ふうっと落ち着いて、@RooandQoo ちゃんに「次は、どうしよっか」と聞いてみると「誰の Tweet か分かるようにしたいです!」と返ってきて、安心して「そうだね、やってみよう!」と返しました。

AC Stream

何もないところからモチベーションやアイディアやアクションを捻出するのは、少なくとも自分にとってはなかなかむつかしいことで、いかにして「簡単に」行動を起こせる状態を維持するか、を考えるのはとても重要です。死活問題です。

あるところまで動くものができたら、そこから先は迷わず進めるってポイントが必ずあって、今回の @RooandQoo ちゃんの状態は、まさにそれでした。「次はこういうコードを書きたくて仕方ない」状態でしたね。書くなって言われたって書きたい状態なんですよ。こういった状態を上手に維持していければ、日常的にものづくりを続けていける。

意識して手札を増やしましょう。手札に「頭」「右腕」「右脚」「左脚」が揃っていれば「左腕」のカードを見たときにピンとくるはずです。それらが組み合わさった状態を「簡単に」イメージできるはずです。エクゾードフレイム・テクニック。

例では @RooandQoo ちゃんについてお話しましたが、@noize_hioki くんにも、同じような状況があったと感じています。

目指したのは、誰かの発表を聞いてまるっと満たされて帰っていく集まりじゃない。自分で手を動かして、時間も限られているし、あるところまでは行くんだけど、やり残したことはいっぱいあって、満たされなくて、そわそわして、日常に戻ってからも続きの作業をしたくなるような、そんな集まりを目指して、Hackathon の形式を取り入れました。

これから

おふたりは、ずいぶんと楽しんで時間を過ごしていたみたいですね。感想エントリを読んで嬉しくなりました。それと、@kana1 ちゃんも何かを持ち帰っていたみたいで、この日の夜には Ruby で Web アプリケーションをつくりはじめていたのが、とても嬉しかったです。良いものを交換できたんだなあ。交換重要。「わしの (ほとんど説明のない) デモを一度見ただけで、同じものを再現しおった…!」

@noize_hioki くんと @RooandQoo ちゃんからは「定期開催を!」という声も挙がっていたのですが、考えた末、今は定期にはしないことにしました。今回は、初回ということもあって、前のめりなエネルギーがたっぷりあって、それで、密度の濃い時間を過ごすことができたと思います。「じゃあ1ヶ月後に」と決めて集まって、そのときに元気のない時間を過ごしてしまったらとても残念なので、それはお断りです。また前のめりに「ここまで進んだので自慢したいです!」とか「次はこういうことに挑戦したいです!」となったら、そのときはエネルギーを持ち寄りましょう。君たちには、それができるのだから。

そういや、@noize_hioki くんがガローアに忘れ物をしていって…

スリッパを忘れてしまったので、お話のネタを集めて、じゅーんさんの迷惑でなければ是非もう一度お邪魔したいです!!
ガローア会議01に行ってきた – Hioki’s Weblog

ペロッ… これは「わざと忘れ物をして次に遊びに行く口実をつくる」小悪魔テクニック…!とかいう。

まとめ

「アトリエ」という空間に、強い憧れがあって。

そのために「創る人」を増やしたいんですよ。自分のまわりに創る人がどんどん増えれば、そこが中心になってアトリエが醸成されていくんじゃないかな、って。だから、今回みたいな、手を動かすことに焦点を当てる集まりは、今後も試していきたいです。

ガローア会議01、とっても楽しかったー!また楽しいことをしよう!

Togetter – 「ガローア会議01」

大江戸Ruby会議01に参加してきた

大江戸Ruby会議01 – Regional RubyKaigi

2011年4月10日、参加してきました。会場のお隣にあったお寺では、桜が元気に咲いていました。

Sakura

会場はこんな感じで。

参加から1日経った今の状態で整理できていることに絞って、参加エントリを書きます。

コミュニティとはなにか

コミュニティとはなにか、を考えるときは、いつも高橋会長「コミュニティ」とは誰かを思い返すわけですが、今回のまつださんのお話もガツンときた。

Asakusa.rb とは、なんでしょうか。「勉強会」ではありません。勉強を期待して行く場所では、ない。「セミナー」ではありません。講師とお客さんに分かれた場では、ない。「もくもく会」ではありません。もくもくするなら、家でやろう!「ただの飲み会サークル」ではありません。飲むことがあったと、しても。じゃあ、なんでしょうか。「コミュニティ」です、と。まつださんが目指す「コミュニティ」のお話がとても面白かった。

Seattle.rb が例として挙がっていた。Seattle.rb 発のライブラリが、たくさんある。人が集まって、ものがつくられて、価値が生まれる。成果を出す人々の集まりとしての、コミュニティ。そこには「馴れ合い」なんて言葉はとても似合わない。なるほどなあ。かっこいいなあ。

「Asakusa.rb は、意欲のある仲間を探しています」

Ninja Talks から

おなじみのドラの代わりに「ポポポポ〜ン」タイマーが時間終了を告げる、楽しい仲間たちの Ninja Talks がありました。ここではしばたさんゆーけーさんについて書きます。

上手く言えないのだけれど、トークを聞いている間、ずっと「しっくり」きていて。「なんだろう、これ」という感覚を抱きながら、それでも「しっくり」ときていたんですよ。終わったあとに、ああ、そうか、これは生活発表会だったんだな、と気が付いて。おふたりのトークは、普段の生活のことを話してくれていたんだな、と思うと、妙にしっくりきました。「今日の発表のために一生懸命に準備してきました!」って構えた感じじゃなく、いつもこういうことを考えているんですよー、という感じで聞けたのがとてもよかった。いや、準備はしているんでしょうけれど、ね。自分もこういう話し方をしてみたいと思いました。

大江戸 Ruby 会議ではあったけれど、やっぱりこれは Asakusa.rb なんだな、という印象を持ちました。

「着席力」

もうひとつ印象的だったのがやまざきさんの仲間集めのお話。聞けば聞くほどオールスターなメンバーを有する(国家転覆陰謀説)チームを、いかにして作るのか、という問いに対して「たまたま隣にいた」との答え。なるほど、これが着席力か。サッカーでいうと、ゴール前で得点の匂いを嗅ぎつける「ストライカーの嗅覚」に相当するもの。

まず、着席すること。すごい人が隣に着席したときに QBK にしてしまわないこと。ほむ。

RubyKaigi2011 に向けて

いつでも参加しようと思えばふらっと参加できて、たとえあるとき都合がつかなかったとしても、次の回に参加すればよい。そんな場所としての Asakusa.rb のことを考えていました。The RubyKaigi が、1年間のすべてを1ヶ所に集中させて爆発させるものだとしたら、Asakusa.rb は、それを1年中に散りばめたようなものですね。だとして、だとしたら、RubyKaigi では何をするべきかなぁということを、新レポート班の班長(6年目)と副班長(7年目)とお話しながら考えたりしたのでした。

まとめ

ここでは触れられなかった発表や参加者さんたちとの会話も含めて、とても楽しい会議でした!参加できてよかった。また Asakusa.rb の火曜日に着席しにいきます。よろしくお願いします!RubyKaigi2011 に向けて、なかなかピリッとしてきました。よし。

JOMOを試してみた

g1983ers の女子部には、化粧品を持ち寄って交換する風習(?)があって、2010年の忘年会では ANNA SUI LIP ROUGE G をもらったのでした。

ANNA SUI LIP ROUGE G

先日のお花見では「除毛クリーム」をもらったので、さっそく試してみました。

JOMO

あなたの予想に反して、私の素肌が見えているでしょうか?

自分は一般的な成人男性に比べて女性ホルモンの分泌量が多く、もともと毛は薄い方です。いつだったか、多感な年頃のときに、女の子の友達が腕の毛を定期的に剃っているということを知らされ「えっ、なんで剃るの… というか、剃るほど生えるんですか…」と言ったら、何人かに囲まれて盛大に怒られました。自分は腕の毛がほとんど生えてこないので、ましてや女の子の腕に毛が生えるなんて、とても信じられなかったのです。怒られて以来、女の子を相手に毛のお話を持ち出すのは控えるようになりました。

それにしても、除毛クリームはすごいですね。とりあえず左足のスネに塗ってみて、15分ほど放置し、シャワーで洗い流してみました。特に変化は起きず「あれれ…?」と思って指で触れてみると「ぬっ」と毛の塊がスネから剥れていきました。最初は「うわあ」と思ったものの、慣れると楽しくて、うりゃーうりゃーとスネをひとまわりするように、指でなでていきました。左足がキレイになりました。写真では、傷やアザはちょっと隠してあります(恥ずかしかったので)。

そういえば、お誕生日のときに @magurojp がくれた TENGA というオサレなモニュメントはとても気に入っていて、ベランダにずっと飾ってあります。