「」に属する記事(最新5件のみ展開表示)

メイン

2007年09月24日

未踏開発合宿日記その2

会議についての会議の結果、羊が足りないという結論に達した。

実際を考えると生の構文木よりも 「マークの付いている『重要な』要素だけのツリー」 が得られた方がありがたいと思うのだけど、 とりあえず生の構文木。

>>> MUL.match("123*45")
'123*45'/6
>>> r = _
>>> r.children
['123*'/4, '45'/2]
>>> r.children[0].children
['123'/3, '*'/1]
Pythonの構文は、トークナイザの部分がインデント・デデントを判断しているみたいなのだけども、 トークナイザをパーサを分けるのは美しくないのでどうするか考え中。

= アンサイクロペディアのPythonの項目が面白い。Python - アンサイクロペディア

パールのようなもの - アンサイクロペディア


= 見た目は唐辛子、ししとうなんだけどー。


= AA-lib。CACA-lib。CUCU-lib。BB


= ずっと黒い画面のターン


= あああ。Matzにっき(2007-09-12)より:

Logix Pythonの文法を自由に再定義できるようにした新言語。またはPythonバイトコードを吐くマクロ処理系。
これはPEGじゃないけど、やりたかったのはまさにこういうことだったんだ。先にやられたorz

Pythonの構文木も、生の構文木を綺麗な抽象構文木にするためには 別途トランスフォーマってのを走らせる必要がある。

僕のPEGでは簡単な数式がこんな複雑な構文木になってしまうので何か間違っているのではないかと悩んだが、

>>> MATH.match("2*(1+3)+5")
'2*(1+3)+5'/9
>>> tree(_)
 '2*(1+3)+5'/9
   '2*(1+3)'/7
     '2'/1
       '2'/1
       ''/0
     '*(1+3)'/6
       '*(1+3)'/6
         '*'/1
           '*'/1
             ''/0
             '*'/1
           ''/0
         '(1+3)'/5
           '(1+3'/4
             '(1+3'/4
               '('/1
                 '('/1
                 ''/0
               '1+3'/3
                 '1'/1
                   '1'/1
                     '1'/1
                     ''/0
                   ''/0
                 '+3'/2
                   '+3'/2
                     '+'/1
                       '+'/1
                         ''/0
                         '+'/1
                       ''/0
                     '3'/1
                       '3'/1
                         '3'/1
                         ''/0
                       ''/0
             ''/0
           ')'/1
   '+5'/2
     '+5'/2
       '+'/1
         '+'/1
           ''/0
           '+'/1
         ''/0
       '5'/1
         '5'/1
           '5'/1
           ''/0
         ''/0
Pythonでも生の構文木はかなりぐちゃぐちゃ
>>> pprint.pprint(parse("2*(1+5)-3"))
['eval_input',
 ['testlist',
  ['test',
   ['or_test',
    ['and_test',
     ['not_test',
      ['comparison',
       ['expr',
        ['xor_expr',
         ['and_expr',
          ['shift_expr',
           ['arith_expr',
            ['term',
             ['factor', ['power', ['atom', ['NUMBER', '2']]]],
             ['STAR', '*'],
             ['factor',
              ['power',
               ['atom',
                ['LPAR', '('],
                ['testlist_gexp',
                 ['test',
                  ['or_test',
                   ['and_test',
                    ['not_test',
                     ['comparison',
                      ['expr',
                       ['xor_expr',
                        ['and_expr',
                         ['shift_expr',
                          ['arith_expr',
                           ['term',
                            ['factor',
                             ['power',
                              ['atom',
                               ['NUMBER', '1']]]]],
                           ['PLUS', '+'],
                           ['term',
                            ['factor',
                             ['power',
                              ['atom',
                               ['NUMBER', '5']]]]]]]]]]]]]]]],
                ['RPAR', ')']]]]],
            ['MINUS', '-'],
            ['term',
             ['factor', ['power', ['atom', ['NUMBER', '3']]]]]]]]]]]]]]]],
 ['NEWLINE', ''],
 ['ENDMARKER', '']]
Pythonの方はトークナイザが走った後の「空白とかインデントとか処理済みのトークン列」を処理していることを考えれば、 PEGの方は(まだ盛り込んだ機能が少ないこともあるけど)比較的シンプル。

トランスフォーマが作る抽象構文木はこんな感じ

>>> compiler.parse("2*(1+5)-3", "eval")
Expression(Sub((Mul((Const(2), Add((Const(1), Const(5))))), Const(3))))
これは美しい。しかしこの美しい構文木に変換するためには 下のような超泥臭い作業が必要。
def for_stmt(self, nodelist):
    # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]

    assignNode = self.com_assign(nodelist[1], OP_ASSIGN)
    listNode = self.com_node(nodelist[3])
    bodyNode = self.com_node(nodelist[5])

    if len(nodelist) > 8:
        elseNode = self.com_node(nodelist[8])
    else:
        elseNode = None

    return For(assignNode, listNode, bodyNode, elseNode,
               lineno=nodelist[0][2]) 
文法定義と抽象構文木化で似たような内容を書くのはばかげていると思うのだけども、どうすれば可読性を損ねたりせずに文法定義だけでこういうきれいなツリーを作れるだろうか。

とりあえず1+3だけで下のような木になってしまうのは、PEGのSequenceを二項関係だけで定義しているから。 僕のsimple_pegは本当にシンプルに作ってあるけど、Matcherを追加することで拡張できるようにしてあるから「任意のn個のSequence」を表現するMatcherを作ればいいと思う。

'1+3'/3
 '1'/1
   '1'/1
     '1'/1
     ''/0
   ''/0
 '+3'/2
   '+3'/2
     '+'/1
       '+'/1
         ''/0
         '+'/1
       ''/0
     '3'/1
       '3'/1
         '3'/1
         ''/0
       ''/0

すごく続きをしたいところではあるけども、 頑張って147行の英文メールを投げたおかげで(?) 日本語の化けないJython2.2.1rc1が出たので、 本当に化けないのかを確認するのが先。

2007年09月22日

未踏OB開発合宿1日目日記

[2007-09-22 15:44]

アマゾンは本をきちんと整理して棚に直していない。 場所はコンピュータが知っている。 選ぶべきものを入力すると最短経路を答えてくれる。

棚を整理していないので、増やすときには適当に棚を追加して適当に本を入れればよい。 整理をしないからスケールする。

BtoBtoCのtoは右結合性。(BtoB)toCではなBto(BtoC)。

ブックマークレットでメニューをインサートして選ばせるくらいならば、 ライトユーザーにも使わせられる?

複数人で開発する際は、 「メソッドをアルファベット順に並べる」というルールにすれば、 並べる順を迷わなくなる。

SQLiteは本体のコードよりもテストのコードの方が多い。

キン肉マンは最初の方巨大化したりビームを打ったりする。

ドカベンは最初は柔道をしていた。

YouTubeやニコニコ動画のブームのおかげで、CDNが儲かった。アカマイとか。 ゴールドラッシュの時に儲かったのは金を掘りに行った人ではなくツルハシを売ったブラナン。

メールアドレスにtmpと入っている。これはむごい。

「ここ禁煙って書いてあるけど、半田付けはOKかな?」

アドエスではDirectXで書いたアプリがネイティブで動く。

アドエス用のGPSがあるがいいアプリがない。

トラックが通ると振動する会場。

電通大を通った人が6人。

カシオペアはアルマジロとつながる。

さしえショーって赤塚さんだったのか。 どんな文章も“紙芝居”にする「さしえショー」 - ITmedia News

フリープログラマーの赤塚大典さんが制作した。文章を句読点や改行部で分割し、形態素解析してキーワードとなる単語を抽出。「Yahoo!検索」の画像検索のAPIを活用し、その言葉に関連した画像を検索して表示する。

Pythonコードリーディングが大ブーム。

SNYDER's ハラペーニョ

未踏チャット (at Lingr)

Ustream.tv - mitou kaihatu gasshuku

ごはん。


= ご飯後一眠り→21時は起床

アクセルをかけるためにちょっとヘッドホンを使いますよ。


= ノウハウ入出

出:

コマンドプロンプトをUTF8にするには: プロパティでフォントをラスタフォントからMSゴシックに変えてからchcp 65001

入:

コマンドプロンプトでF7で履歴メニューがでる

画面バッファの高さを大きくしておけば、 流れ去ったログが消え去りにくくなる。


= ぴかちふ謹製のモバイルモニタがすごくいい。 使わないときにはインテリアにもなる。 でも売ると壊れたときのサポートの労力が出るので売りたくないって。


= 今作っているパーサジェネレータは テストをたくさん書く方針でやっている。 例外が投げられることをdoctestでどうやって表現するにはどうするんだろう。

ドキュメントにちゃんと書いてあった。 必ずFailっていう例外を投げるmatcherを書いた。

class MatcherAlwaysFail(Matcher):
    """
    >>> MatcherAlwaysFail().match("foo")
    Traceback (most recent call last):
        ...
    Fail
    """

= 初めてPythonのstaticmethodを使った。 古いユーザなのでこういう本質的でない機能ってあんまり知らない。


= 高速再生中のロイツマ

Jatsu tsappari dikkali dallan
ヤッツッ ツァッパリ ディッカリ ダッラン
Tittali tillan titstan dullaa
ティッタリ ティッラン ティチタン ドゥラー
Dipidapi dalla ruppati rupiran
ディピダピ ダッラー ルッパティ ルピラン
Kurikan kukka ja kirikan kuu..
クリカン クッカヤ キリカンクー

Ratsatsaa ja ribirabi dil\
ラッツァッツァー ヤ リビダビ ディル
la Beritstan dillan dillan doo..
ラ ラベリツタン ディラン ディラン ドゥー
A ba-ribbattaa baribarii\
アバリッバッター バリッバリー
ba Dibi dibidibi disten dillan doo ←歌詞間違い?
バ ディビディビディスタン ディッランドー

Ja barilla stillan deijaboo
ヤバリッ ラッ スティラン デイヤーボー
A daba daba daba daba dybjabuu,
ア ダバダバダバダバ デイビャブー
Baristal dillan suillan duubadag
バリスタゥ ディラン スイラン ドゥバダグ
Dagadaga duu duu deijadoo
ダガダガ ドゥードウー デイヤドー

= 行きの電車の中であったメソッドをどこに追加していくかという話、 確かに複数人で開発している場合に、ソートしてからコミットするというのは 「複数人で開発している場合」にはいい戦略かとは思う。

一人でプロトタイプをがりがり作っている場合は、 小さいユーティリティ的なものを上に、 大きい「呼び出しもと」が下に来るように書いているという話。 僕はこれだったのだけども、この方法の問題点は、 脳の揮発メモリがこのプロジェクトの情報でいっぱいの時はうまく行くけども、 100行を超えて書いてしまうと後で読んだときに複雑に絡み合っていて解きほぐすのに苦労する点だ。

今回テストをきちんと書きながら進んでわかったのだけど、 テストを書くと挙動が明示されるから、Aを書いた後でBを追加したときに、 Aの挙動を変える必要が出たらテストも修正しないと行けなくなるんだ。 というわけでなるべくBを変更してもAを変更しないでいい設計にしようというバイアスがかかる。 これはルースカップリングだ。 Coupling And Cohesion

例えば、「A / B」という表記で 解析表現文法 - Wikipedia のOrderedChoiseを表現できるようにしようと思うと、 AやBの基底クラスの__div__に書きたくなるわけだけど、 そういう機能追加を上に上がって書き足すのを避ける。 もちろんこうやって設計してできあがった上でパフォーマンス上の問題が出れば、 「PEGのOrderedChoiseは切り離せなくしても問題ない」 と言ってべったり貼り付けて高速化するかも知れないけど、 あくまで最初はルースカップリングにする。

というわけで基底クラスに注入してみた。

class OrederedChoice(Matcher):
    """
    >>> m1 = ExactMatcher("foo")
    >>> m2 = ExactMatcher("bar")
    >>> (m1 / m2).match("barbaz").group
    'bar'

    """
    def __init__(self, m1, m2):
        self.m1 = m1
        self.m2 = m2

    def match(self, s):
        try:
            r = self.m1.match(s)
            return r
        except Fail:
            r = self.m2.match(s)
            return r

    @staticmethod
    def build(m1, m2):
        return OrederedChoice(m1, m2)

Matcher.__div__ = OrederedChoice.build

= __add__なんかの情報ってドキュメントのどこに書いてあるんだろう。

あった。 7 数値型をエミュレーションする

深いところにおいてあるなぁ。


= rimoの初音ミクチャンネルをBGMにするといいらしい(何が)


= Lingrより。

# 2:33am 26x26にしお
# 今日はPEG完成させて寝たい
# 明日Pythonのパーサを作って使い物になることを検証する
# 自分自身をパースできたら万歳

# 2:53am 26x26にしお
# あうー
# NotPredicateの実装ができて、テストを書いたら今日は終わりのつもりなのだけど
# いいテストが思いつかない 

= 前回作ったときはいきなり正規表現を使うMatcherを使ったのでgdgd。 短く書くための短い名前なんかもがんがん作ったのでdmdm。 今回はあえて短い名前や正規表現を禁止してPEGパーサを作った。

明日は実際にこれを使ってPythonのパーサを書いてみて、 労力とかパフォーマンスとかを調べる。 労力が高いのは目に見えている( ExactMatcher("a")はないよねー )。 でも言語内DSLで変なトリックを使うのはダメだと思う。

class NotPredicate(Matcher):
    """
    >>> a = ExactMatcher("a")
    >>> b = ExactMatcher("b")
    >>> c = ExactMatcher("c")
    >>> m1 = a + Optional(Ref("m1")) + b
    >>> Ref.m1 = m1
    >>> m1.match("aabbbb")
    'aabb'/4
    >>> m2 = b + Optional(Ref("m2")) + c
    >>> Ref.m2 = m2
    >>> m3 = AndPredicate(m1 + NotPredicate(b))
    >>> m3.match("aabbcc")
    ''/0
    >>> m = AndPredicate(m1 + NotPredicate(b)) +\
            OneOrMore(a) + m2 + NotPredicate(c)

    >>> m.match("aabbcc")
    'aabbcc'/6
    >>> m.match("aaabbcc")
    Traceback (most recent call last):
        ...
    Fail
    >>> m.match("aabbbcc")
    Traceback (most recent call last):
        ...
    Fail
    >>> m.match("aabbccc")
    'aabbcc'/6
    """
    def __init__(self, m):
        self.m = m

    def match(self, s):
        try:
            r = self.m.match(s)
            raise Fail
        except Fail:
            return Result(
                group = "",
                end = 0,
                rest = s
            )

= 眠気ないなー。 378行。

350行に縮めた。文字列を消費しないマッチ結果オブジェクトを Resultクラスのstaticmethodで生成するようにした。 UnaryOperatorクラスをmixinするようにした。

class AndPredicate(Matcher, UnaryOperator):
    """
    (テスト13行)
    """
    def match(self, s):
        r = self.m.match(s)
        return Result.empty(s)
テストの方が長い、わーい。

= フタエノキッワッミッアッアッー

フ タ エ ノ キ ワ ミエ ノ キ ワ ミ アッアッアー


= クリカンクッカヤキリカンクー


=

寝る前の間食は控えるべきである!
だがしかし!

 「駄菓子菓子!」

=

□ 正規表現Matcher
□ PEGパーサ

= Ctrl+Alt+TABで開発合宿の隣の人の画面がいつでも見られるように。


= 29時。ぴかちふが玄関で酔いつぶれている。 未踏ユースOBから除名せざるを得ない。

2007年09月21日

ノウハウの5レイヤー

以前西尾泰和のブログ: ノウハウの4レイヤーというエントリーで下のように書いたが、それは間違いでした。お詫びして訂正します。

スキル(ノウハウ)には最低でも4つのレイヤーがあると思う。
1:バッドノウハウ。
2:バッドノウハウを作るスキル。
3:バッドノウハウを取り除くスキル。
4:バッドノウハウを作らせないスキル。

正しいのはこちら

スキルには最低でも5つのレイヤーがあると思う。
4:知識がなくても直感的に使えるようなシステムを作れるスキル。
3:ノウハウを知らなくても使えるようにするラッパを作れるスキル。
2:問題を解決する方法を作り出し、ノウハウとして共有できるスキル。
1:ノウハウを習得し、適切なタイミングで使えるスキル。
0:ノウハウを見つけてブックマークするスキル。

参考文献。

日記を書く[・ _ゝ・]はやみずさん - 覚えてはいけないちょっと計算を早くするための小技

はてなブックマーク - 覚えておきたいちょっと計算を速くするための小技10 | P O P * P O P

はてなブックマーク - 君らは中学校で何を学んだんだ? - val it : α → α = fun

404 Blog Not Found:君らはWebで何を学びたいんだい?

学而不思則罔、思而不学則殆 --- 論語

2007年09月20日

タンブラー転載日記

この前のTwitter転載日記で、Twitterの内容をそのまま転載しても面白くないと理解した。 最低限時刻とかがないと「早朝まで起きていて徹夜明けテンションで会社に行く道すがらのひとりごと」ってのが伝わらないからただの変な人だ。(いや、そうでなくても変な人だ)

結局のところひとりごとツールはひとりごとなんだな。

タンブラーの方は「面白い情報引用ツール」として使っているので転載できるかな。

Loituma Girl)とはロイツマの歌うフィンランド民謡『イエヴァン・ポルッカ』に日本のアニメ『BLEACH』のキャラクターである井上織姫が長ネギを回す4フレームのシーンを組み合わせたフラッシュアニメーションである。(略)オランダではSMS2.tvという企業が著作権保持者に連絡をとらずに携帯電話の動画として売ろうとしたことがあった。そのときには"Meisje met de Prei"(「ニラを持っている少女」)と宣伝された。ロシアではそのソングクリップを売っている。

ロイツマ・ガール - Wikipedia

初音ミクがネギを回しているのはこれが元ネタか。しかし、ワールドワイドな時代だなぁ。 

Jatsu tsappari dikkali dallan Tittali tillan titstan dullaa, Dipidapi dallaa ruppati rupiran Kurikan kukka ja kirikan kuu Rätsätsää ja ribidabi dilla Beritstan dillan dillan doo, A baribbattaa baribariiba Dibi dibidibi disten dillan doo Ja barilla stillan deijadoo A daba daba daba daba daba dybjabuu, Baristal dillan stillan duubadäg Dägädägä duu duu deijadoo
Ievan Polkka - Wikipedia, the free encyclopedia

歌詞あった。

タンブラーも手を加えないとそのままでばブログに使えない、でファイナルアンサー。

曲はこちら pya! 時の流れを忘れさせる時計

2007年09月10日

5人の海賊のコイン分配問題

via Googleの面接試験、一体どのような質問をされるのか? - GIGAZINE

5人の海賊がいて、彼らは1位から5位にまでランク分けされています。1位の海賊は100枚の金貨をどのように分けるかというプランを提案する権利があります。残りの海賊はこのプランに投票する権利があり、賛成が半分に満たない場合には1位の海賊は殺されます。1位の海賊の分け前を最大にしてなおかつ彼が生き残るにはどうすればいいですか?(ヒント:一人の海賊は結局、金貨の98%で終わる)

まず大前提として、 「海賊はなるべく自分が死なないように行動する」 「(死なないならば)なるべくコインが多くなるように行動する」 と仮定しよう。 これを否定したら「死にたい…」とか「ちょっと損だけどBには以前から腹が立っていたので殺す」 なんて選択肢が出て論理パズルではなくなる。 パズルとして成立させるためにこの仮定を置いた方がいいと面接官に一応言っておく。

海賊をそれぞれA,B,C,D,Eとしよう。

1:まず、仮にEだけが生き残った場合、Eが100コインを手にする。

2:仮にDとEだけが生き残っている場合、 Dが1コインでも取ったならば、Eはその分配案に反対して100コイン取る方が得だから、 確実に反対するだろう。 Dは死にたくないので0,100の分配を提案する。 この提案でもEは「Dを殺しても殺さなくても100コインが手に入る」状況なので、 Dを殺す可能性がある。 なのでDは「DとEだけが生き残っている状態」自体を避けたい。

3:仮にCとDとEが生き残っている場合、 上記の考察よりDは「Cを殺して自分がトップになるとEに殺される可能性が出てくる」 「Cを殺してもコインは手に入らない」と考え、無条件に賛成する。 Dの賛成により「半数に満たない」条件は発動しないことが確定するので、 Cはどんな分配にしても殺されることはない。 よってCは100,0,0の分配を提案し、Dの賛成により可決される。

4:仮にBとCとDとEが生き残っている場合、上記の考察より、Cは 「Bを殺せば生きて100コインを手に入れられる」と考えるため無条件に反対する。 なのでBは生き残るためにはDとEに賛成させる必要がある。 Bが死んだ場合DとEはそれぞれ0コインしか受け取れないので、 それより多い分配を提示すれば確実に賛成する。 よってBは98,0,1,1の分配を提案し、DとEの賛成により可決される。

5:仮に全員が生き残っている場合、 B以下の4人は「Aを殺した場合に決定する98,0,1,1の分配」より多く分配されるのならば賛成し、 少なく分配されるのならば反対する。 Aは生き残るために最低2人が確実に賛成するようにしたい。 よってAが死んだ場合に0コインを受け取るCに対して1コイン、 1コインを受け取るDとEのどちらかに2コインを分配すればよい。 よってAの提案する分配は「97,0,1,2,0」もしくは「97,0,1,0,2」である。

「98%」というヒントは、 問題を訳した人が間違えたか、問題を作ったGoogleの人が間違えたか、 もしくは「ヒントと自分が考えた結果が食い違ったときに、 自分の考えを捨ててヒントにあわせた答えをひねり出すのか、 それとも自分の考えの正しさを信じてヒントが間違っていると考えるのか」 を観察するために意図的に入れられたブラフだろう。


追記、sshiさんより「「半数に満たない場合に」だから4のフェイズではDかEどちらかだけに1コインあげれば賛成2票になるんじゃ?/あ、「半数」の母数に自分がはいってないのかな。どっちなんだろ。」とのコメントが。和文問題文では「残りの海賊はこのプランに投票する権利があり」、 英文では「But the others get to vote on his plan」となっているので、自分は含まないという解釈が妥当かと思います。

しかし、仮に「自分も投票できる」という問題だとしたら、D,Eだけの時100,0、CDEの時99,0,1、BCDEの時99,0,1,0、ABCDEの時98,0,1,0,1となってあっさり98%の答えが出ます。

原文のブログは友達が受けた面接の内容をまた聞きで書いているだけのようなので、友達か著者のどちらかが題意を勘違いしたって可能性も考えられますね。


kazuhookuさんからこのページを教えてもらいました。 一息ついたときの小ネタ【回答集】: 【回答269】海賊と金貨。 このページの記述によればこの問題はイリノイ大学のスティーブン・ランズバーグという人が考案したものだそうな。で、その情報を元に軽く調べてみたところAmesa KZN Mathematics Journal, 2005, Vol. 9, pp. 38-40(PDF)に下のような記述がありました。(太字は僕の編集)
The following delightful puzzle was invented by Steven Landsberg (University of Illinois, Urbana-Champaign) and posed in the March 2005 Math e-Newsletter: Ten pirates have got their hands on a hoard of 100 gold pieces, and wish to divide the loot between them. They are democratic pirates, in their own way, and divide as follows. The fiercest pirate makes a proposal about the division, and everybody votes - one vote each including the proposer.
はっきりと「提案した海賊も含めて全員で投票を行う」と書いてありますね。 ということで元ネタのブログの記述が間違いだったという結論でいいのではないかと思います。

古い記事タイトル一覧

凡例{ ●: 単一エントリーへのリンク, □: そこから最新記事までを一覧表示, ■: そこから最新記事までをwindow.openで開く}(comming soon)

2007年09月10日
 ■ □ By 西尾泰和 at 2007-09-10 05:01:15
2007年09月09日
 ■ □ By 西尾泰和 at 2007-09-09 12:49:42
2007年09月08日
 ■ □ By 西尾泰和 at 2007-09-08 00:18:59
2007年09月06日
 ■ □ By 西尾泰和 at 2007-09-06 00:37:55
2007年09月01日
 ■ □ By 西尾泰和 at 2007-09-01 18:12:04
 ■ □ By 西尾泰和 at 2007-09-01 17:48:12
2007年05月31日
 ■ □ By 西尾泰和 at 2007-05-31 23:30:02
2007年04月22日
 ■ □ By 西尾泰和 at 2007-04-22 09:19:57
2007年04月19日
 ■ □ By 西尾泰和 at 2007-04-19 22:39:46
 ■ □ By 西尾泰和 at 2007-04-19 10:14:33
2007年04月17日
 ■ □ By 西尾泰和 at 2007-04-17 09:29:54
2007年04月16日
 ■ □ By 西尾泰和 at 2007-04-16 20:13:58
2007年04月12日
 ■ □ By 西尾泰和 at 2007-04-12 19:31:46
2007年04月10日
 ■ □ By nishio at 2007-04-10 08:35:14
2007年04月09日
 ■ □ By nishio at 2007-04-09 07:23:01
2007年04月08日
 ■ □ By 西尾泰和 at 2007-04-08 19:36:08
2007年04月07日
 ■ □ By nishio at 2007-04-07 10:59:54
 ■ □ By 西尾泰和 at 2007-04-07 09:50:33
2007年04月05日
 ■ □ By 西尾泰和 at 2007-04-05 20:11:03
2007年04月04日
 ■ □ By 西尾泰和 at 2007-04-04 19:52:52
2007年04月03日
 ■ □ By 西尾泰和 at 2007-04-03 23:32:27
2007年04月02日
 ■ □ By 西尾泰和 at 2007-04-02 21:32:29
 ■ □ By 西尾泰和 at 2007-04-02 07:19:30
2007年04月01日
 ■ □ By 西尾泰和 at 2007-04-01 21:34:56
 ■ □ By 西尾泰和 at 2007-04-01 00:07:25
2007年03月31日
 ■ □ By 西尾泰和 at 2007-03-31 23:29:12
2007年03月29日
 ■ □ By 西尾泰和 at 2007-03-29 23:06:08
 ■ □ By 西尾泰和 at 2007-03-29 19:24:45
2007年03月27日
 ■ □ By 西尾泰和 at 2007-03-27 23:54:56
2007年03月26日
 ■ □ By 西尾泰和 at 2007-03-26 12:27:52
2007年03月25日
 ■ □ By 西尾泰和 at 2007-03-25 01:22:43
2007年03月22日
 ■ □ By 西尾泰和 at 2007-03-22 14:30:37
 ■ □ By 西尾泰和 at 2007-03-22 13:40:02
2007年03月19日
 ■ □ By 西尾泰和 at 2007-03-19 13:33:18
2007年03月18日
 ■ □ By 西尾泰和 at 2007-03-18 12:07:52
2007年03月17日
 ■ □ By 西尾泰和 at 2007-03-17 16:20:12
 ■ □ By 西尾泰和 at 2007-03-17 13:17:34
2007年03月16日
 ■ □ By 西尾泰和 at 2007-03-16 13:42:20
2007年03月14日
 ■ □ By 西尾泰和 at 2007-03-14 23:27:27
2007年03月13日
 ■ □ By 西尾泰和 at 2007-03-13 13:59:31
2007年03月12日
 ■ □ By 西尾泰和 at 2007-03-12 23:41:07
 ■ □ By 西尾泰和 at 2007-03-12 18:37:33
2007年03月11日
 ■ □ By 西尾泰和 at 2007-03-11 22:49:48
2007年03月06日
 ■ □ By 西尾泰和 at 2007-03-06 11:47:26
2007年03月04日
 ■ □ By 西尾泰和 at 2007-03-04 20:01:33
2007年03月01日
 ■ □ By 西尾泰和 at 2007-03-01 19:23:34
2007年02月28日
 ■ □ By 西尾泰和 at 2007-02-28 04:58:36
2007年02月27日
 ■ □ By 西尾泰和 at 2007-02-27 01:50:44
2007年02月24日
 ■ □ By 西尾泰和 at 2007-02-24 19:27:45
 ■ □ By 西尾泰和 at 2007-02-24 14:38:01
2007年02月23日
 ■ □ By 西尾泰和 at 2007-02-23 03:27:03
2007年02月21日
 ■ □ By 西尾泰和 at 2007-02-21 23:49:14
 ■ □ By 西尾泰和 at 2007-02-21 15:19:49
2007年02月19日
 ■ □ By 西尾泰和 at 2007-02-19 20:15:50
2007年02月18日
 ■ □ By 西尾泰和 at 2007-02-18 20:40:54
 ■ □ By 西尾泰和 at 2007-02-18 03:01:10
2007年02月17日
 ■ □ By 西尾泰和 at 2007-02-17 01:46:42
2007年02月15日
 ■ □ By 西尾泰和 at 2007-02-15 22:35:11
 ■ □ By 西尾泰和 at 2007-02-15 00:06:19
2007年02月13日
 ■ □ By 西尾泰和 at 2007-02-13 15:06:33
 ■ □ By 西尾泰和 at 2007-02-13 02:18:00
2007年02月11日
 ■ □ By 西尾泰和 at 2007-02-11 19:00:21
2007年02月10日
 ■ □ By 西尾泰和 at 2007-02-10 21:30:14
2007年02月09日
 ■ □ By 西尾泰和 at 2007-02-09 17:51:05
2007年02月07日
 ■ □ By 西尾泰和 at 2007-02-07 18:19:50
2007年02月06日
 ■ □ By 西尾泰和 at 2007-02-06 01:11:49
2007年02月05日
 ■ □ By 西尾泰和 at 2007-02-05 02:59:57
2007年02月03日
 ■ □ By 西尾泰和 at 2007-02-03 18:59:07
2007年02月02日
 ■ □ By 西尾泰和 at 2007-02-02 02:42:45
2007年02月01日
 ■ □ By 西尾泰和 at 2007-02-01 02:03:47
2007年01月31日
 ■ □ By 西尾泰和 at 2007-01-31 14:34:01
2007年01月29日
 ■ □ By 西尾泰和 at 2007-01-29 19:07:20
 ■ □ By 西尾泰和 at 2007-01-29 13:40:44
2007年01月26日
 ■ □ By 西尾泰和 at 2007-01-26 02:01:57
2007年01月25日
 ■ □ By 西尾泰和 at 2007-01-25 00:41:57
2007年01月24日
 ■ □ By 西尾泰和 at 2007-01-24 01:41:46
2007年01月23日
 ■ □ By 西尾泰和 at 2007-01-23 00:35:37
2007年01月21日
 ■ □ By 西尾泰和 at 2007-01-21 17:27:30
 ■ □ By 西尾泰和 at 2007-01-21 16:14:53
2007年01月19日
 ■ □ By 西尾泰和 at 2007-01-19 13:45:14
2007年01月17日
 ■ □ By 西尾泰和 at 2007-01-17 01:34:49
2007年01月16日
 ■ □ By 西尾泰和 at 2007-01-16 13:33:19
2007年01月15日
 ■ □ By 西尾泰和 at 2007-01-15 18:29:01
 ■ □ By 西尾泰和 at 2007-01-15 10:51:30
2007年01月13日
 ■ □ By 西尾泰和 at 2007-01-13 19:37:21
 ■ □ By 西尾泰和 at 2007-01-13 00:01:45
2007年01月08日
 ■ □ By 西尾泰和 at 2007-01-08 21:51:18
2007年01月07日
 ■ □ By 西尾泰和 at 2007-01-07 00:31:18
2007年01月06日
 ■ □ By 西尾泰和 at 2007-01-06 03:13:35
2007年01月02日
 ■ □ By 西尾泰和 at 2007-01-02 23:06:07
2006年12月31日
 ■ □ By 西尾泰和 at 2006-12-31 00:40:44
2006年12月27日
 ■ □ By 西尾泰和 at 2006-12-27 07:52:33
2006年12月23日
 ■ □ By 西尾泰和 at 2006-12-23 13:38:24
2006年12月21日
 ■ □ By 西尾泰和 at 2006-12-21 19:03:26
 ■ □ By 西尾泰和 at 2006-12-21 10:37:06
2006年12月18日
 ■ □ By 西尾泰和 at 2006-12-18 04:32:24
 ■ □ By 西尾泰和 at 2006-12-18 03:50:21
2006年12月17日
 ■ □ By 西尾泰和 at 2006-12-17 16:15:29
2006年12月15日
 ■ □ By 西尾泰和 at 2006-12-15 19:26:57
 ■ □ By 西尾泰和 at 2006-12-15 15:31:33
2006年12月13日
 ■ □ By 西尾泰和 at 2006-12-13 22:59:08
 ■ □ By 西尾泰和 at 2006-12-13 11:03:36
2006年12月12日
 ■ □ By 西尾泰和 at 2006-12-12 03:54:00
 ■ □ By 西尾泰和 at 2006-12-12 03:41:25
 ■ □ By 西尾泰和 at 2006-12-12 03:39:47
 ■ □ By 西尾泰和 at 2006-12-12 03:18:38
2006年12月09日
 ■ □ By 西尾泰和 at 2006-12-09 06:53:13
 ■ □ By 西尾泰和 at 2006-12-09 06:45:39
2006年12月08日
 ■ □ By 西尾泰和 at 2006-12-08 15:24:16
 ■ □ By 西尾泰和 at 2006-12-08 15:21:20
2006年12月06日
 ■ □ By 西尾泰和 at 2006-12-06 18:23:30
2006年12月04日
 ■ □ By 西尾泰和 at 2006-12-04 01:17:47
2006年12月03日
 ■ □ By 西尾泰和 at 2006-12-03 23:36:07
2006年12月01日
 ■ □ By 西尾泰和 at 2006-12-01 04:09:51
2006年11月30日
 ■ □ By 西尾泰和 at 2006-11-30 03:09:31
2006年11月25日
 ■ □ By 西尾泰和 at 2006-11-25 11:16:43
2006年11月23日
 ■ □ By 西尾泰和 at 2006-11-23 01:22:42
2006年11月21日
 ■ □ By 西尾泰和 at 2006-11-21 05:03:17
2006年11月20日
 ■ □ By 西尾泰和 at 2006-11-20 05:02:02
2006年11月18日
 ■ □ By 西尾泰和 at 2006-11-18 17:03:19
 ■ □ By 西尾泰和 at 2006-11-18 01:29:21
2006年11月17日
 ■ □ By 西尾泰和 at 2006-11-17 00:42:58
 ■ □ By 西尾泰和 at 2006-11-17 00:41:26
2006年11月15日
 ■ □ By 西尾泰和 at 2006-11-15 03:26:58
2006年11月14日
 ■ □ By 西尾泰和 at 2006-11-14 12:46:17
2006年11月13日
 ■ □ By 西尾泰和 at 2006-11-13 02:28:27
2006年11月11日
 ■ □ By 西尾泰和 at 2006-11-11 01:41:40
2006年11月09日
 ■ □ By 西尾泰和 at 2006-11-09 12:26:50
2006年11月07日
 ■ □ By 西尾泰和 at 2006-11-07 17:20:10
2006年11月05日
 ■ □ By 西尾泰和 at 2006-11-05 15:32:11
2006年11月04日
 ■ □ By nishio at 2006-11-04 13:48:21
 ■ □ By 西尾泰和 at 2006-11-04 12:02:34
2006年11月03日
 ■ □ By 西尾泰和 at 2006-11-03 14:27:53
2006年11月02日
 ■ □ By 西尾泰和 at 2006-11-02 09:09:23
2006年10月28日
 ■ □ By 西尾泰和 at 2006-10-28 19:30:28
2006年10月27日
 ■ □ By 西尾泰和 at 2006-10-27 14:32:08
2006年10月26日
 ■ □ By 西尾泰和 at 2006-10-26 23:30:38
2006年10月25日
 ■ □ By 西尾泰和 at 2006-10-25 13:34:34
2006年10月24日
 ■ □ By 西尾泰和 at 2006-10-24 13:21:04
2006年10月23日
 ■ □ By 西尾泰和 at 2006-10-23 07:05:09