【MTG:未解決問題】「無限ループ」の未定義性の解消?
2011年6月3日 コラム目次:http://himajin.diarynote.jp/201103131200449531/
コラム:http://himajin.diarynote.jp/?theme_id=12
ルールがかなり厳密に整備されたマジックにおいても、まだまだ未解決な問題があります。その中で特に有名なのが、「無限ループ」についてでしょう。マジックには「無限のルール」というルールがありますが、そこに言及されている「無限ループ」という概念は未定義のまま残っています。
もちろん「無限ループ」というものを厳密に定義することは理論的に可能でしょうが、ただ厳密に定義するだけでは直感的に理解しにくいものになったり実用上定義としてふさわしくないものになってしまうため、単純に厳密な定義を与えればいいわけではない、というのが大きな問題です。
まあそういう直感的に優れている定義はルール・グルたちが頑張って作っていくものでしょうからここでは置いておいて、今回の日記では直感とか関係なくひたすら厳密に「無限ループ」の定義を追及するだけならどの程度の努力で達成できるのか考え、ルール・グルたちの苦労の片鱗を覗いてみましょう。
【準備】
将棋や囲碁の場合はそれは同一の盤面が複数回現れることで「ループ」を定義しますが、マジックでは同様に「ループ」を定義しようとすると失敗します。なぜなら、将棋は駒の種類と数が有限個しかないので盤面の状態が有限パターンしかなかったことに対し、マジックにはライフやカウンターの個数といった非有界な量的概念があるため単純に盤面の状態の個数を数えると無限個になってしまうからです。無限個になると何がいけないかと言いますと、状態が固定されないような「ループ」が存在してしまうことが問題で、例えばある盤面の状態から次の瞬間にはあるパーマネントの上に+1/+1カウンターが1つ乗り、次の瞬間にはさらにもう1つ乗り、これが延々繰り返されるといったように似たような局面が時々刻々と変化しながら永遠に続くという状況が起きるのです。なのでマジックで「ループ」を定義する上では単純に盤面などの同じ状態の反復で定義するだけではいけないわけです。
今回はアルゴリズムのようなものを用いて無限ループというものを記述していこうと思うので、まず初めにマジックにおける「ゲームの状態」をプログラムへの入力として適用できるようにするために、「ゲームの状態」を入力可能な値で翻訳する必要があります。翻訳する、というのは具体的にはマジックにおける「ゲームの状態」をすべて考え、それらは無限個ありますがその無限の大きさが可算的であることを踏まえて、「ゲームの状態」に適当に番号を付けるということをします。
Step 1:ゲーデルの不完全性定理を勉強する
「ゲームの状態」をすべて番号付ける方法のアイデアとして、ゲーデル対応を用います。ゲーデル対応とは、ゲーデルの不完全性定理の証明において自然数論を含む無矛盾な公理系で記述されるすべての命題に番号を付ける方法でして、それと全く同じ方法で「ゲームの状態」に番号を付けることができます。
ゲーデルの不完全性定理に関しては
ゲーデル 不完全性発見への道 (双書―大数学者の数学) [単行本]
著者:北田 均 出版:現代数学社
が名著らしいです。読んだことはないですが著者に熱烈なファンが多いようです。
「ゲームの状態」に番号を付ける方法は具体的には以下のような手順で実現されます。まずパーマネントの持ちうる特性や印刷された情報やオーナーなど、マジックのゲームの状態にかかわる情報はパーマネント1つ1つごとには有限種類しかなく各種類ごとに量的なパラメータが可算パターンしかないため、結局1つのパーマネントには可算的な情報量しかありません。なぜ有限種類×可算パターンが可算的になるかと言いますと、それは有限種類の情報に番号を付けて1,…,nとし、各情報1≦i≦nごとに対応しうるパラメータの可算パターンに番号を付けてxi(xi=1,2,3,…)とおくと、i種類目の情報の量的パラメータがxiのときにそのパーマネントの全情報を記述するパラメータX=(p1^x1)(p2^x2)…(pn^xn)という数値を対応させることにより可算パターンのパラメータXを見るだけでiごとのxiが復元できるからです。ただしpiというのは小さい方から数えてi番目の素数で、この復元可能性は自然数の素因数分解の一意性から従います。素因数分解の一意性については
初等整数論講義 第2版 [単行本]
著者:高木 貞治 出版:共立出版株式会社
をご参照ください。かなりの名著です。文系の研究者の友人に勧められて読んだものですが、さすが文系の方でもすんなり読んでいただけあって非常に明快に書かれています。
以上より各パーマネントのもつ情報をすべてまとめても可算的な情報しかなく、パーマネントのタイムスタンプ順にパーマネントを番号付けてi番目のパーマネントに対応する情報のパラメータをyiとして、盤面のすべての情報を記述するパラメータY=(p1^y1)(p2^y2)…を計算することでやはり盤面の情報をその数値から復元できます。盤面について以外も手札やライブラリーやサイドボードの情報、そして現在のターン数やこのターンに何回優先権のやり取りをしたかなどのすべての可算的情報を素数を用いて同様に組み合わせることで、マジックの「ゲームの状態」に番号を付けることができますね。
次に、番号付けられた「ゲームの状態」をアルゴリズムに代入してループを記述していきたいので、ループを表すことができる論理体系のモデルを与える必要があります。論理体系のモデルを与えることでその論理体系の定義を与えることになりますが、逆にある論理体系の定義を与えることはモデルを与えていることとは別なので注意をしましょう。まずはモデリングとは何かを知る必要があります。モデリングについて知るには具体的にモデルの例を見ていけばいいわけですが、1つモデルを知ったところですぐに何かわかるわけでもないので、複数のモデルを学びましょう。まずはモデルの大切さと便利さを知るために次を見ていきます。
Step 2:相対性理論を勉強する
相対性理論は非ユークリッド幾何学を用いたモデルで行われる力学体系で、ユークリッド幾何を用いるニュートン力学とは全く異なるモデルを持ちます。よく勘違いされますが相対論が正しいということはニュートン力学が間違っているということではなく、どちらの理論もそのモデル内では正しい論理を展開しています。デカルト座標のガリレイ変換不変性によるモデリングの下で展開されるニュートン力学とミンコフスキー計量空間のローレンツ変換不変性によるモデリングの下で展開される特殊相対性理論を比較することにより、モデリングのイメージがつくでしょう。
相対論については
相対性理論入門講義 (現代物理学入門講義シリーズ) [単行本]
著者:風間 洋一 出版:培風館
が名著らしいです。ちらっとしか読んだことはないですが友達が勧めてました。
Step 3:エリスのABC理論を勉強する
エリスのABC理論は精神疾患というものをより具体的に定義しその原因などを細かく記述するために作られたモデルで、単純な図式の中に多くの利便性が隠れています。モデルを与えて初めて定義でき、モデルを与えて初めて議論でき、モデルを与えて初めて解析できるといういい例ですね。
エリスのABC理論については
自分のこころからよむ臨床心理学入門 [単行本]
著者:丹野 義彦 出版:東京大学出版会
が名著です。臨床心理学初心者でもすらすら読めるタッチになっています。
Step 4:論文「Dimensionality and dynamics in the behavior of C. elegans」を読む
「Dimensionality and dynamics in the behavior of C. elegans」はC. elegans(線形動物門双腺綱桿線虫亜綱カンセンチュウ目カンセンチュウ科)の熱刺激に対する反射を画期的なモデリングにより解析した比較的新しい論文です。何の手がかりもなしに反射運動を記述するのは非常に難しいものですが、その各筋肉の長さをプロットすることでC. elegansの体勢というものを数値的に表示させ、熱刺激を線形近似によりその数値に対する1つのオペレーターとして記述するという何とも大胆な発想が特徴的で、これぞモデリング!という感じです。
以上でモデリングの重要性や便利性が分かると思いますが、さらに得たい体系に対するモデリングというものは一意的なではなくあくまで1つの手段であることを意識しないといけません。先に述べたように、論理体系の定義を与えることとモデリングを与えることは違うのです。
Step 5:ユークリッド原論を読む
公理的ユークリッド幾何とデカルト座標による空間幾何の対応は文部科学省のカリキュラムだと中学生の時にやっているはずですが、その対応の意味は中学生の時代には理解できなかったでしょう。ここで改めてユークリッド原論を見直し、公理的ユークリッド幾何もデカルト座標による空間幾何もほぼ同等な「幾何学という論理体系の定義」を与える2つの相異なるモデリングであることを確認しましょう。
Step 6:量子論を勉強する。
量子論もモデリングが多様であることが有名な学問です。ヒルベルト空間論に基づくモデリングや、物理量の演算子による実現を用いたモデリングを比較し、複数の相異なるモデリングが1つの同等な論理体系を与えることを確認しましょう。
量子論については
量子論の基礎―その本質のやさしい理解のために (新物理学ライブラリ) [単行本]
著者:清水 明 出版:サイエンス社
が名著です。割とおちゃらけムードで書かれた本ですが、その分親しみやすくすらっと読めるでしょう。
以上でモデリングを与えることと論理体系の定義を与えることの本質的な違いが垣間見えたことでしょう。
【無限ループのモデリング】
では実際に「無限ループ」をモデリングしましょう。まずは簡単な場合、選択的でないループのモデリングです。
Step 7:チューリング・マシンによるモデリング
前項で「ゲームの状態」に番号を付けることができたので、チューリング・マシンへの入力として「ゲームの状態」を考えることができます。「選択的」でないことは定義可能であり「選択的」でないゲーム進行は状況起因処理や誘発型能力の誘発および双方の優先権のパスに伴う呪文や能力の解決など、これも有限個の種類しかありません。従ってそれぞれに番号付けることが可能で、対応する命令をプログラムすることでチューリング・マシンを構成できます。「選択的でない無限ループ」というものを、このチューリング・マシンが停止しないこととして定義しましょう。ただしチューリング・マシンの停止性の判定はアルゴリズムが存在しませんが、個々のテープに対する停止性は決定可能なのでこれでちゃんと定義できています。
さらに選択的であるループもモデリングしましょう。
Step 8:非決定的離散時間マルコフ過程によるモデリング
「選択的」であるようなゲーム進行はある「ゲームの状態」から次の瞬間には複数の「ゲームの状態」に移行することが可能です。その移行は非決定的であるため特定のアルゴリズムの下で命令として処理することができないため、よりモデルを広くして非決定的離散時間マルコフ過程を用いましょう。つまり各ゲーム進行というものを状態の遷移に対応させることで、「選択的ループ」というものをこの非決定的離散時間マルコフ過程が停止する遷移パターンを持たないこととして定義できるのです。
以上により「無限ループ」というものが定義されました。気をつけなくてはいけないのは各「ゲームの状態」に番号を割り振ったことやチューリング・マシンによるモデリングをしたことはマジックの総合ルール内で記述される概念ではなく明らかにメタ言語の下で記述されたものであるということです。基本的であるがゆえに記述の難しいものを定義するうえではメタ言語の介入を避けることは難しいので仕方ないことでしょう。
気にしなくてはいけないことは、この定義の中で将棋でのループの場合と違って同一局面の反復について一切触れていないということです。しかしながらこれは将棋での定義の一般化になっており、それは有限個のパターン内で無限回パターンの選択をした場合にBolzano-Weierstrass theoremまたは鳩の巣原理により同一局面の反復が自動的に行われるからです。それに目を付けた自然な拡張として今回は「無限ループ」という状態をマジックの「ゲームの状態」たちに形式的に加えたいわゆるcompactificationと呼ばれる手法を使うことでBolzano-Weierstrass theoremが同様に適用できる状況にしただけなのです。
【最後に】
このような論理を展開しても、ほつれがあっては意味がありません。もし第三者に「でもその論理が正しいことはどうやって証明するの?」と言われた場合に困ってしまうのは不都合がありますね。そこで理論を完結させるために便利な方法があります。
Step 9:ゲーデルの不完全性定理を復習する
もし誰かに論理の整合性の証明を問われたら、こう言いましょう。
「自然数論を含むいかなる公理系はそれが無矛盾である限り自己の無矛盾性を証明できない」
これはゲーデルの不完全性定理の主張ですが、簡単に言うと「私の論理に矛盾がない以上、自分の論理の整合性を証明する手段はありません。なぜなら、もし自分の論理の整合性を証明できてしまうなら、ゲーデルの不完全性定理によって自分の論理そのものが整合性の証明も含めどこかしらに矛盾を内包してしまうからです。」ということです。つまり、整合性のある人は自分の整合性に言及できないんですね!
いやあ、「無限ループ」の定義を直感的に優れたものにすることを諦めてただ単に厳密な定義を与えるだけでもこれほど骨が折れるものなんですね。ルール・グルたちの日々の苦労がうかがえます。。
コラム:http://himajin.diarynote.jp/?theme_id=12
ルールがかなり厳密に整備されたマジックにおいても、まだまだ未解決な問題があります。その中で特に有名なのが、「無限ループ」についてでしょう。マジックには「無限のルール」というルールがありますが、そこに言及されている「無限ループ」という概念は未定義のまま残っています。
もちろん「無限ループ」というものを厳密に定義することは理論的に可能でしょうが、ただ厳密に定義するだけでは直感的に理解しにくいものになったり実用上定義としてふさわしくないものになってしまうため、単純に厳密な定義を与えればいいわけではない、というのが大きな問題です。
まあそういう直感的に優れている定義はルール・グルたちが頑張って作っていくものでしょうからここでは置いておいて、今回の日記では直感とか関係なくひたすら厳密に「無限ループ」の定義を追及するだけならどの程度の努力で達成できるのか考え、ルール・グルたちの苦労の片鱗を覗いてみましょう。
【準備】
将棋や囲碁の場合はそれは同一の盤面が複数回現れることで「ループ」を定義しますが、マジックでは同様に「ループ」を定義しようとすると失敗します。なぜなら、将棋は駒の種類と数が有限個しかないので盤面の状態が有限パターンしかなかったことに対し、マジックにはライフやカウンターの個数といった非有界な量的概念があるため単純に盤面の状態の個数を数えると無限個になってしまうからです。無限個になると何がいけないかと言いますと、状態が固定されないような「ループ」が存在してしまうことが問題で、例えばある盤面の状態から次の瞬間にはあるパーマネントの上に+1/+1カウンターが1つ乗り、次の瞬間にはさらにもう1つ乗り、これが延々繰り返されるといったように似たような局面が時々刻々と変化しながら永遠に続くという状況が起きるのです。なのでマジックで「ループ」を定義する上では単純に盤面などの同じ状態の反復で定義するだけではいけないわけです。
今回はアルゴリズムのようなものを用いて無限ループというものを記述していこうと思うので、まず初めにマジックにおける「ゲームの状態」をプログラムへの入力として適用できるようにするために、「ゲームの状態」を入力可能な値で翻訳する必要があります。翻訳する、というのは具体的にはマジックにおける「ゲームの状態」をすべて考え、それらは無限個ありますがその無限の大きさが可算的であることを踏まえて、「ゲームの状態」に適当に番号を付けるということをします。
Step 1:ゲーデルの不完全性定理を勉強する
「ゲームの状態」をすべて番号付ける方法のアイデアとして、ゲーデル対応を用います。ゲーデル対応とは、ゲーデルの不完全性定理の証明において自然数論を含む無矛盾な公理系で記述されるすべての命題に番号を付ける方法でして、それと全く同じ方法で「ゲームの状態」に番号を付けることができます。
ゲーデルの不完全性定理に関しては
ゲーデル 不完全性発見への道 (双書―大数学者の数学) [単行本]
著者:北田 均 出版:現代数学社
が名著らしいです。読んだことはないですが著者に熱烈なファンが多いようです。
「ゲームの状態」に番号を付ける方法は具体的には以下のような手順で実現されます。まずパーマネントの持ちうる特性や印刷された情報やオーナーなど、マジックのゲームの状態にかかわる情報はパーマネント1つ1つごとには有限種類しかなく各種類ごとに量的なパラメータが可算パターンしかないため、結局1つのパーマネントには可算的な情報量しかありません。なぜ有限種類×可算パターンが可算的になるかと言いますと、それは有限種類の情報に番号を付けて1,…,nとし、各情報1≦i≦nごとに対応しうるパラメータの可算パターンに番号を付けてxi(xi=1,2,3,…)とおくと、i種類目の情報の量的パラメータがxiのときにそのパーマネントの全情報を記述するパラメータX=(p1^x1)(p2^x2)…(pn^xn)という数値を対応させることにより可算パターンのパラメータXを見るだけでiごとのxiが復元できるからです。ただしpiというのは小さい方から数えてi番目の素数で、この復元可能性は自然数の素因数分解の一意性から従います。素因数分解の一意性については
初等整数論講義 第2版 [単行本]
著者:高木 貞治 出版:共立出版株式会社
をご参照ください。かなりの名著です。文系の研究者の友人に勧められて読んだものですが、さすが文系の方でもすんなり読んでいただけあって非常に明快に書かれています。
以上より各パーマネントのもつ情報をすべてまとめても可算的な情報しかなく、パーマネントのタイムスタンプ順にパーマネントを番号付けてi番目のパーマネントに対応する情報のパラメータをyiとして、盤面のすべての情報を記述するパラメータY=(p1^y1)(p2^y2)…を計算することでやはり盤面の情報をその数値から復元できます。盤面について以外も手札やライブラリーやサイドボードの情報、そして現在のターン数やこのターンに何回優先権のやり取りをしたかなどのすべての可算的情報を素数を用いて同様に組み合わせることで、マジックの「ゲームの状態」に番号を付けることができますね。
次に、番号付けられた「ゲームの状態」をアルゴリズムに代入してループを記述していきたいので、ループを表すことができる論理体系のモデルを与える必要があります。論理体系のモデルを与えることでその論理体系の定義を与えることになりますが、逆にある論理体系の定義を与えることはモデルを与えていることとは別なので注意をしましょう。まずはモデリングとは何かを知る必要があります。モデリングについて知るには具体的にモデルの例を見ていけばいいわけですが、1つモデルを知ったところですぐに何かわかるわけでもないので、複数のモデルを学びましょう。まずはモデルの大切さと便利さを知るために次を見ていきます。
Step 2:相対性理論を勉強する
相対性理論は非ユークリッド幾何学を用いたモデルで行われる力学体系で、ユークリッド幾何を用いるニュートン力学とは全く異なるモデルを持ちます。よく勘違いされますが相対論が正しいということはニュートン力学が間違っているということではなく、どちらの理論もそのモデル内では正しい論理を展開しています。デカルト座標のガリレイ変換不変性によるモデリングの下で展開されるニュートン力学とミンコフスキー計量空間のローレンツ変換不変性によるモデリングの下で展開される特殊相対性理論を比較することにより、モデリングのイメージがつくでしょう。
相対論については
相対性理論入門講義 (現代物理学入門講義シリーズ) [単行本]
著者:風間 洋一 出版:培風館
が名著らしいです。ちらっとしか読んだことはないですが友達が勧めてました。
Step 3:エリスのABC理論を勉強する
エリスのABC理論は精神疾患というものをより具体的に定義しその原因などを細かく記述するために作られたモデルで、単純な図式の中に多くの利便性が隠れています。モデルを与えて初めて定義でき、モデルを与えて初めて議論でき、モデルを与えて初めて解析できるといういい例ですね。
エリスのABC理論については
自分のこころからよむ臨床心理学入門 [単行本]
著者:丹野 義彦 出版:東京大学出版会
が名著です。臨床心理学初心者でもすらすら読めるタッチになっています。
Step 4:論文「Dimensionality and dynamics in the behavior of C. elegans」を読む
「Dimensionality and dynamics in the behavior of C. elegans」はC. elegans(線形動物門双腺綱桿線虫亜綱カンセンチュウ目カンセンチュウ科)の熱刺激に対する反射を画期的なモデリングにより解析した比較的新しい論文です。何の手がかりもなしに反射運動を記述するのは非常に難しいものですが、その各筋肉の長さをプロットすることでC. elegansの体勢というものを数値的に表示させ、熱刺激を線形近似によりその数値に対する1つのオペレーターとして記述するという何とも大胆な発想が特徴的で、これぞモデリング!という感じです。
以上でモデリングの重要性や便利性が分かると思いますが、さらに得たい体系に対するモデリングというものは一意的なではなくあくまで1つの手段であることを意識しないといけません。先に述べたように、論理体系の定義を与えることとモデリングを与えることは違うのです。
Step 5:ユークリッド原論を読む
公理的ユークリッド幾何とデカルト座標による空間幾何の対応は文部科学省のカリキュラムだと中学生の時にやっているはずですが、その対応の意味は中学生の時代には理解できなかったでしょう。ここで改めてユークリッド原論を見直し、公理的ユークリッド幾何もデカルト座標による空間幾何もほぼ同等な「幾何学という論理体系の定義」を与える2つの相異なるモデリングであることを確認しましょう。
Step 6:量子論を勉強する。
量子論もモデリングが多様であることが有名な学問です。ヒルベルト空間論に基づくモデリングや、物理量の演算子による実現を用いたモデリングを比較し、複数の相異なるモデリングが1つの同等な論理体系を与えることを確認しましょう。
量子論については
量子論の基礎―その本質のやさしい理解のために (新物理学ライブラリ) [単行本]
著者:清水 明 出版:サイエンス社
が名著です。割とおちゃらけムードで書かれた本ですが、その分親しみやすくすらっと読めるでしょう。
以上でモデリングを与えることと論理体系の定義を与えることの本質的な違いが垣間見えたことでしょう。
【無限ループのモデリング】
では実際に「無限ループ」をモデリングしましょう。まずは簡単な場合、選択的でないループのモデリングです。
Step 7:チューリング・マシンによるモデリング
前項で「ゲームの状態」に番号を付けることができたので、チューリング・マシンへの入力として「ゲームの状態」を考えることができます。「選択的」でないことは定義可能であり「選択的」でないゲーム進行は状況起因処理や誘発型能力の誘発および双方の優先権のパスに伴う呪文や能力の解決など、これも有限個の種類しかありません。従ってそれぞれに番号付けることが可能で、対応する命令をプログラムすることでチューリング・マシンを構成できます。「選択的でない無限ループ」というものを、このチューリング・マシンが停止しないこととして定義しましょう。ただしチューリング・マシンの停止性の判定はアルゴリズムが存在しませんが、個々のテープに対する停止性は決定可能なのでこれでちゃんと定義できています。
さらに選択的であるループもモデリングしましょう。
Step 8:非決定的離散時間マルコフ過程によるモデリング
「選択的」であるようなゲーム進行はある「ゲームの状態」から次の瞬間には複数の「ゲームの状態」に移行することが可能です。その移行は非決定的であるため特定のアルゴリズムの下で命令として処理することができないため、よりモデルを広くして非決定的離散時間マルコフ過程を用いましょう。つまり各ゲーム進行というものを状態の遷移に対応させることで、「選択的ループ」というものをこの非決定的離散時間マルコフ過程が停止する遷移パターンを持たないこととして定義できるのです。
以上により「無限ループ」というものが定義されました。気をつけなくてはいけないのは各「ゲームの状態」に番号を割り振ったことやチューリング・マシンによるモデリングをしたことはマジックの総合ルール内で記述される概念ではなく明らかにメタ言語の下で記述されたものであるということです。基本的であるがゆえに記述の難しいものを定義するうえではメタ言語の介入を避けることは難しいので仕方ないことでしょう。
気にしなくてはいけないことは、この定義の中で将棋でのループの場合と違って同一局面の反復について一切触れていないということです。しかしながらこれは将棋での定義の一般化になっており、それは有限個のパターン内で無限回パターンの選択をした場合にBolzano-Weierstrass theoremまたは鳩の巣原理により同一局面の反復が自動的に行われるからです。それに目を付けた自然な拡張として今回は「無限ループ」という状態をマジックの「ゲームの状態」たちに形式的に加えたいわゆるcompactificationと呼ばれる手法を使うことでBolzano-Weierstrass theoremが同様に適用できる状況にしただけなのです。
【最後に】
このような論理を展開しても、ほつれがあっては意味がありません。もし第三者に「でもその論理が正しいことはどうやって証明するの?」と言われた場合に困ってしまうのは不都合がありますね。そこで理論を完結させるために便利な方法があります。
Step 9:ゲーデルの不完全性定理を復習する
もし誰かに論理の整合性の証明を問われたら、こう言いましょう。
「自然数論を含むいかなる公理系はそれが無矛盾である限り自己の無矛盾性を証明できない」
これはゲーデルの不完全性定理の主張ですが、簡単に言うと「私の論理に矛盾がない以上、自分の論理の整合性を証明する手段はありません。なぜなら、もし自分の論理の整合性を証明できてしまうなら、ゲーデルの不完全性定理によって自分の論理そのものが整合性の証明も含めどこかしらに矛盾を内包してしまうからです。」ということです。つまり、整合性のある人は自分の整合性に言及できないんですね!
いやあ、「無限ループ」の定義を直感的に優れたものにすることを諦めてただ単に厳密な定義を与えるだけでもこれほど骨が折れるものなんですね。ルール・グルたちの日々の苦労がうかがえます。。
コメント