« 2009年4月 | メイン | 2009年6月 »

2009年5月16日

Sugamo.cssに行ってきた

週末プログラミングをするには良い機会だと思い参加。Web製作会社の人と話をする機会って実はあまり無いので有意義だった。私が普段関わっているようなプログラマーの人たちとは大分ノリが違ったのが意外でもあり面白くもあり。

ネタとして今作っているJavaScriptベースのAIRアプリを持っていった。話を始めたらみんなが続々僕の後ろに集まってきて、説明する心の準備ができていなかったんでちょっとキョドってしまった。もっと丁寧に説明出来れば良かったんだけど。

お互いのノウハウ公開では、クリップボード拡張とか複数台のパソコン環境をdropboxを使ったりして共有するとか、その辺が興味深かった。

個人的に最近エディタマクロを書き散らしてるんだけど、パソコンによって入っている入っていないがばらばらで結構困っているのでなんとかしようとは考えてはいたのです。

あと、多くの人がローカルでの作業で上手くPerlやRuby等のスクリプト言語を活用しているようでした。こういうのって案外平均的なプログラマーはやらないと思うので、特定の局面では下手なプログラマーよりコード書けるんだろうな、とも感じた。

話が弾んでしまって、思ったより自分の作業は進まなかったけど、それもまた好し。

23:32

2009年5月13日

赤坂で呑み

Akamaiの勉強会を主催したyasuyukiさんとgeekpageのあきみちさんと、Akamaiの国谷さんと赤坂で飲んできた。直接お詫びが出来る機会にもなったので良かった。「結果オーライ」というありがたい言葉もいただきました。後は雑談。

「これからはオープンじゃない文化は衰退していくかも。最近の野球の若い選手は平気で変化球の握りを見せるけど、ボウリングの世界ではノウハウを隠したがる。日本のボウリング界は情報化も進まないしどんどん衰退して行っている。」

みたいなことを私が言ったら、

「熱帯魚の世界も結構年配の人がノウハウを隠したがるけど、極秘のノウハウとか言ったって、公開してみたら案外くだらないことだったりする。水槽の水を何センチ深くするとか、水槽内に衝立を設置するとか、そんなことで飼育不可能とか言われていた熱帯魚の飼育が可能になったりする」

とかあきみちさんが返してくれたりとか。でもあきみちさんはそこで熱帯魚の情報サイトを運営するとか、そういう活動を自ら色々やっているから見習わないとなぁとも感じた。

あとは、ボウリングの話をしたら評判が良かった。

「ボウリングがそんなインテリジェントな競技だとは思わなかった!」

とは国谷さんの言。そう、ボウリングはああ見えて結構Akamai(ハワイ語)な競技なんです。

23:47

2009年5月 5日

GWの成果物

プログラムとかではなくて実は料理です。たまに家族4人分の料理を作りたくなる気分になることがあるもんで。

和風肉団子と大根とレンコンの煮物 ひじきの煮物

「和風肉団子と大根とレンコンの煮物」と「ひじきの煮物」。

「和風肉団子と大根とレンコンの煮物」は、家にキャベツと大根とレンコンの切れ端が余ってたからこういうソリューションになった。適当創作(?)料理です。レンコンは一部みじん切りにして肉団子にも入れた。歯ごたえがあって良い感じになった。

「ひじきの煮物」は絹さやが好評でした。うちの親はあまり入れないけど、個人的には必須。色合いもよくなるし。

ひじきは美味いよな~。たくさん食材を入れらるし、何入れても美味しいしのも嬉しい。作り置きしておけるしね。ビバひじき。小さい頃はひじきあまり好きじゃなかったんだけどね。やっぱ色合いとかがちょっと美味しくなさそうな感じがするからかね。

中華料理作るのも好きだけど、やっぱ和食は最高だね。

そういや家庭料理技能検定とかいうのがあるらしく受けようかとか思っている今日この頃。これは通学とか実務経験とかなくても取れるみたい。

そういう資格を持っておくとネタになって面白いかもなぁとか最近思った。ボウリングの審判員資格とか、サイクリングインストラクターとか取っておけば良かったとか若干後悔していたり。

23:12

2009年5月 4日

最近のオタクの女の子

BBQでオタクの女子大生と話が盛り上がった。押井監督が好きとか言ってて、ちゃんとビューティフルドリーマーから知っている生粋のオタク。腐女子じゃなくてオタク。ガンプラ作りが趣味とか言ってたし。

三次元には興味が無いとのことだったんだけど、その割にかなり可愛い子でファッションもちゃんとしてて驚いた。他人の目を気にしないオタクって基本的に見た目が大変な事になるし、きちんとした格好をしてるつもりでも、どこかずれてるもんだけど、そういったのが無かった。恋愛をすると多少は変わるんだけど、恋愛にも興味は無いみたいで不思議。新人類だなぁ。

「男の子から告白されたときに『三次元のクセに生意気なこと言ってんじゃないよ』とか思った」

「友達に騙されて飲み会だと思ってたら合コンに連れてかれて、言い寄られて『好きなタイプは?』とか質問されたのに『モビルスーツを操縦できる人』と答えて追い払ってた」

(カウボーイビバップの話をふったら)
「スパイクは私の二次元彼氏の一人ですよ!」

夜中に自転車で帰ろうとしたのに周りが心配して、それに対して「3倍の速さで帰るから大丈夫です!」とか。私も自転車だったので流石に送って行った。

とかもう面白すぎでした。「高河ゆんはアーシアンが良いよね」ってことで意見の一致を見たので私は超満足です。

23:33

豪華バーベキュー

つきみ野の友人豪邸宅にてBBQ。昼の11時半から始めて夜中の1時半まで飲んでいたという気が狂いっぷり。どんどん脱落者が出る中最後まで生き残った。まだまだ若いもんには負けん。そう、私は年喰ってる部類でした。

黒毛和牛やら特大のホタテやら生きたままのエビやらがあって、やたら高級なBBQだった。酒もさむらいがあって歓喜。何気なく置いてあった肉屋のビーフジャーキーと、たけのこと鶏挽き肉の料理が一番感動した。

ビーフジャーキーはビーフジャーキーでありながら柔らかく、それでいて歯ごたえもあるというもので、ああ、これが本物のビーフジャーキーなんだと思った。

たけのこと挽き肉の料理は醤油と酒と八角で味付けしてあって、酒にスゲー合う。八角最高。自分で作ってみよう。

23:08

2009年5月 3日

連休真ん中

部屋の整理とか。Sofmapに物を売りにも行った。昔PF2012大会で優勝したときの賞品のメガドライブと、2000年に買ったDynabook。両方ずっと部屋に放置したままだったので早く処分すれば良かった。

コンピュータ関係の書籍(主にHTML+CSS関係)を25冊程箱詰めして売る準備も整えた。

バッティングセンターでバントの練習してたら、自打球目に当てて死にそうになった。使い捨てコンタクトが砕け散った。危ないからバントの練習はやめて、せめてバスターくらいにしておこう。

夜、大学ボウリング部の後輩から電話がかかってきて、今度こそホントに結婚するとかで、結婚式のお誘いだった。

彼はイケメンでかつモテるんだけど、本当にダメなヤツで、でも本当に可愛くて憎めないヤツだ。結婚式に読んでくれたのも祝儀目的の部分があるんだろうなぁ(笑)と思いつつ、でも多目に包んでやるかとか思ってしまう、妙な魅力を持ったヤツなんだよ。決して饒舌だったりするわけじゃないんだけど、女の子の方から寄ってくる感じなんだよね。

23:44

2009年5月 2日

プログラマが料理するときに心がける事~初めての料理編

プログラミングと料理が似ているってのは割と一般的に言われていることだと思うんだけど、じゃあ、どこが似ているのかって事はあまり書かれてないように感じたので、プログラマが料理をするときの心がけをまとめてみた。まずは初級編。

レシピ=サンプルコード

まずはレシピを見て料理を作ることが多いでしょう。それはサンプルコードを書き写すようなものです。料理は非常に寛容なので多少のtypoはものともせず、手順を大雑把に追えば食べられるものが出来上がります。食べられるものを組み合わせて作っているのですから当たり前です。失敗は恐れる必要は全くありません。

ただ、リカバリの効かない失敗として、以下のものがあるので気をつけましょう。

  • 調味料(特に塩)を入れすぎる/入れ間違える※1
  • 焦がす

それ以外の失敗は何とかリカバリが効きます。レシピを誤読して失敗するという可能性もありますが、あまりにも頻繁に発生するようでしたら国語力を磨いた方が良いかもしれません。

と言うことで「レシピどおりに作りましょう」で話は終わってしまいそうなのですが、それだけだと単にレシピどおりの料理が出来るだけ、その後の進歩がありません。以降はプロジェクト管理的な側面も含めて、料理をする上での心がけを書いていきます。

フェーズの切り分けをしっかり行う~ウォーターフォールでおk

どうせ一人で全部やるんだから、ウォーターフォール型開発で充分です。フェーズとしては以下のようになります。

  1. 最初の片付け
  2. 食材・道具を揃える
  3. 下ごしらえ
  4. 調理・味付け
  5. 盛り付け
  6. 食べる
  7. 後片付け

順序が明確になっていると調理がスムーズに進みます。また、フェーズが分かれていることによって、前フェーズでしか使わないものをさっさと片付けられるというメリットもあります。

料理をする上で大事なのは「片付けながら料理をする」と言うこと。そう、これはメモリ管理に通じるものがあります※2。これが出来ていれば、料理が上手いと思ってもらえます。

1. まずは片付けから~開発環境の整備と用件定義

最初のフェーズ。料理をするに当たってまずやる事は台所の片付けです。

本気で開発モードに入るときに、チャットソフト等を落とすようなものです。現実として一般的な台所はそれほど広くないので、余計なソフトを動かしておく余裕(=メモリ)もないと言うのもあります。邪魔なものは徹底的に片付けておきましょう。中途半端な洗い残しも片付けておきましょう※3

少し上級レベルの話になりますが、この工程では、状況の把握をするという目的もあります。まだ作るものが決まっていない場合は、手持ちのリソースからどのような料理を作れるかを考えましょう。足りないものがある場合には何を調達するべきかまとめてみましょう。そして調理全体の流れを把握しておきましょう。

友人宅等で料理をすることもあるでしょう。これは他人のパソコンで開発をするようなものです。片付けとは少し違いますが、

  • コンロの数
  • 電子レンジ・炊飯器の有無
  • 鍋の種類と数
  • 調味料の取り揃え
  • ボウル(またはボウルとして使えそうな容器)の数
  • ゴミの分別(生ゴミやスチロール容器等の廃棄場所)

等を事前に確認してから調理に移ったほうが良いでしょう。

2. 食材・道具を揃える~グローバル変数上等

このフェーズでは、食材と道具を全て取り出して台所(主にまな板周辺の手の届く範囲)に配置します。

これはプログラムの最初に全ての変数を宣言して、全てのモジュールを読み込むような非常に泥臭い方法です。つまり全てがグローバル変数です。

最初はそれで構いません。学校給食やパーティー料理のような大規模開発を行うわけでは無いですし、この方法でも家庭料理レベルであれば不都合はそうそう起こりません。把握しきれないほどの変数(=食材)の数にはなりません※4。まずはこの方法から始めましょう。

足りないものがあった場合でもこの時点で気づく事ができますし、全てが手の届く範囲に揃っているので、いったん調理を始めたら、後はスムーズに進むと言うのも大きなメリットです※5

そして、この方法の一番大きなメリットは、「調理開始時が一番調理場(=メモリ)を占有している」というところです。

一見メリットには思えないかも知れません。しかし、調理開始時点で領域が十分に確保されているので、後はメモリを開放する事だけを考えながら調理を進めれば良く、メモリリークが起こる心配も無いと言うのは大きなメリットです。

後は「片付けながら料理」をすれば良いのです。調理開始時は散らかっていても、出来上がっていたときは片付いているというのが理想です。

3. 下ごしらえ~Modelの実装

このフェーズでやる事は、材料を切り、下味をつけるところです。取り出してきた材料を整える段階なので、MVCにおけるModelのフェーズといえば分かりやすいかもしれません。

この際大事なのは、「材料を切る前にどこにストアするかを考えておく」事です。余裕を持ってボウルをいくつか準備しておき、切り終わった食材はさっさと入れてしまいましょう。もちろんボウルの置き場所も事前に考えておきましょう。

空になった容器はさっさと捨て、中途半端に残った食材も冷蔵庫等に閉まってしまいましょう。「後で必要になるかも」とか考えて、いつまでも台所に残しておいてはいけません。後で必要になったらそのときに取り出せば良いのです。データベースへのコネクションをいつまでも張っておく必要が無いのと同様です。

また、まな板はあくまで一時的な作業場(キャッシュ)なので、切った食材をいつまでも放置するようなことをしてはいけません。

慣れてくるとまな板の上で食材を捌きながら鍋に順次放り込んでいくなんて技が出来るようになりますが、そんな芸当が出来るのはプロの領域なので、そんなことをしようと考えてはいけません。Perlで一時変数を使わず、デフォルトの$_を多用するようなものです。

このフェーズが終わったら、包丁・まな板は使わなくなるので、次のフェーズ「調理」に移る前に洗って片付けてしまいましょう※6。まな板を置いていたスペースにボウルを並べることが出来るので、「調理」をスムーズに進めることができます。まな板の上にボウルを並べるような事はしない方が良いでしょう。

4. 調理・味付け~Controllerの実装

料理を火にかけます。レシピの順番どおりに材料を放り込んで、後は待つのみです。味付けは、料理人としては腕の見せ所になりますが、とりあえずはこれもレシピ通りにやっておけば間違いはありません。中級編を書くことがあれば細かく言及しようと思います。

前フェーズがしっかりできていれば、はっきり言って、このフェーズは楽です。3分クッキングがちゃんと10分以内に終わるのも下ごしらえがちゃんとできているからに他なりません。

MVCモデルからすると、Modelが出してきたデータをViewに受け渡すController部分の実装にあたります。Modelがしっかり実装されていればControllerに書くコードが少なくて済むのは衆知のとおりです。

ただし、焦がす事だけは無いように注意をしてください。火をつけている間はかならず火のことを意識下においておくようにしましょう。楽ではありますが一番集中力を切らしてはいけない時間帯とも言えます。

複数品作る際には火にかけるタイミングをなるべく揃えるように努力した方が良いでしょう。あっちこっちで火をつけるのはスパゲッティーコードみたいなもので美しくありません。複数品同時に火をかけ※7、火に留意する時間帯を集中出来れば、焦げのリスクを逓減できますし、何より温かい料理を一斉に並べる事ができます。

さて、いくら楽だからと言って怠けてはいけません。楽だからこそこのフェーズにやっておくべきことがあります。それはもちろん片付けです。

鍋を火にかけている間がチャンスです。火に留意しながら、まずは前段階までに片付けられなかったものを片付け、材料を投入して空になったボウルを洗いましょう。

そうしてスペースが空いたら、盛り付けるための皿を並べておきましょう。

5. 盛り付け~Viewの実装

ここまで来れば、もうプロジェクトは成功です。後は好きなように盛り付ければ良いでしょう※8。せっかくの料理なのでキレイに盛り付けてあげましょう※9

鍋がまだ熱いうちのほうが油汚れが落ちやすいので、空になった鍋はキッチンペーパーで汚れをふき取っておいたりすると後の洗い物が楽になります。

ただ、他の人に食べてもらう場合はなるべく早く次のフェーズに移行する事を考えましょう。ある程度片付けてから食べるフェーズに移りたい気持ちも分かります。でも他の人が待ちわびているので、この段階では片付けよりも食べる事を優先しましょう。

6. 食べる

プロジェクトの成功を皆で祝いましょう。もしくは反省しましょう。この段階で大事なのは「全部食べること」と「みんなで食べること」です。

作ったものは全部食べましょう。例え失敗したとしても。むしろ失敗した時こそ全部食べるべきです。成功していたら自然と料理はなくなります。多少失敗していても自分の作った料理は美味しいものです。

また、複数人で食べるときはちゃんとみんなで一斉に食べましょう。食べているときにはついつい並行して後片付けをしたくなってしまいますが、食べるときはそんなことを気にせずにみんなで食べた方が美味しく食べられます。そして、他の人に美味しく食べてもらうためにも一緒に食べましょう。他の人もあなたを働かせている間に食べるのは気が引けるでしょうから。

食べてもらった人には感想を聞きましょう。きっと「美味しい」と言ってくれるはずですが、それ以上の感想も引き出せると後々の参考になるはずです。

7. 後片付け

あともうひとふん張りです。鍋や各人が使った食器を洗いましょう。次回自分が料理をしやすいように片付けることが大切です。デスクトップのファイルを片付けてしまうようなものです。

料理はなるべく余らないように作るのがベストですが※10、余った料理は保存容器に入れて冷蔵庫に入れておきましょう。

保存した料理は得てして保存しっぱなしでダメにしてしまう可能性が高いので、どのように再利用するかも考えながら後片付けをすると良いでしょう。

お疲れ様でした。

  • ※1 私も昔上白糖のつもりでケーキにたっぷり塩を入れたことがあります
  • ※2 個人的にはここが料理の醍醐味とも言えると思っています。そういう意味じゃ、私はCは書けませんが、「メモリ管理も出来ないプログラマはダメだ」とか「GCが自動で行われるスクリプト言語はつまらない」とか言う一部のCプログラマの気持ちも分かる気がします。
  • ※3 まだ洗っていない鍋があるので、その代わり別の鍋を調理に使う、なんてのは最悪です。自分の首を絞めているだけです。
  • ※4 それでもやはり「サラダにも入れる予定だった玉葱を全部カレーに突っ込んでしまった」と言ったミスは起こりえるので、グローバル変数には限界があります。ゆくゆくはスコープを意識する事は大事になってきます。
  • ※5 起動には時間がかかりますが、その後の処理は早いプログラムのようなものです。また、材料の欠損は処理の上で大きなボトルネックになります。足りない材料を探しているうちに料理を焦がしてしまったら目も当てられません。
  • ※6 調理の段階で「鍋を火にかけて放置する時間が長い」というような見通しが立つようであれば、その時に洗ってしまうという手もあります。また、ぺティナイフくらいは片付けないで残しておいても良いかもしれません
  • ※7 中華料理の場合は同時と言うより直列的に一斉に処理する感じと言えるかもしれません。
  • ※8 ただ、人間の感覚は曖昧なので見た目は味に少なからず影響するようです。不味い物が劇的に美味くなること(もしくはその逆)は無いだろうとは思うので必要以上に心配する必要はありませんが。ただ、意図的にグロテスクに盛り付ければ、美味いものを不味くする事は可能でしょう。
  • ※9 一人で食べるときなんかは盛り付けせずに鍋から直接食べてしまったりしますが、それもまた良し。
  • ※10 会社に持っていくお弁当用に余るように作るという上級テクもあるようです。

23:07

2009年5月 1日

GWとは夏を乗り切る体力を養うための休暇である

有給絡めて8連休。暇だし、暇なうちに休んどけってことですな。暇だけど5月はなんだかんだで仕事が入りそうで安心しています。こういう不況の時期に不安定なのは受託開発の悲哀。

今は転職したてなんで、責任範囲もまだ狭く、気兼ねなく休めるのが嬉しすぎ。休日出勤したり、サービスの稼動チェックしたり、急に呼び出されたりする事が無いので。

どうせこれから責任範囲はいやおうなしに広がっていくわけだから、今回は思いっきり休みます。転職時に有給消化できなかった心残りをここで発散するってのもある。

とりあえず自転車は500km乗ることに決めてます。あとは休み明けの仕事で使うVB.NETを覚えるのと、Blogの更新かな。料理とプログラムの関係について書きたい。先日の交流会行ってにわかに書きたくなってきた。

17:53