- CPU負荷率が低いのが高性能の証拠って???
CPU負荷率が低いのが高性能の証拠って???   

2009年8月12日



☆恐怖の震度6弱体験記。   
その日の朝はP波(縦揺れ)で目が覚めた。 続いてすぐにやってきたS波(横揺れ)は最初はそれほど強くなくて、寝ぼけ眼で「震度4位かな〜。」と思っていたが...

本日の余談は震度6弱体験記。 本来は週末に遊びに行ったお城見物の話でもと思って途中まで書いてあったのだけど、 急遽余談を差し替えた。

震度4位の横揺れで布団から起き上がったが、その瞬間からまるで水平回転するような強い横揺れが襲ってきた。 立ち上がって歩くのは難しい状態で、倒壊家具に当たりにくい方向に身を動かすのがやっと。 液晶テレビがまるで歩くようにテレビ台の上を動いていく。

だが、寝ぼけていたせいもあるのだろうけど、本人は意外に冷静。 「ここまで揺れたのなら東海地震かも?」と思いながら、一番危険な本棚に注意を払っていた。 家の家具ではアレがダントツの重量で、倒れればかなり危険だ。

「静岡は地震の本場だから...」と引っ越し時に突っ張り棒を噛ませておいたのは正解で、 倒れるに倒れられない本棚は自身が平行四辺形に変形することで潰れるように傾いていった。 これで突っ張り棒と天井に隙間が空いて、棒が落下。 転倒防止の要が無くなって本棚転倒も時間の問題と思われたが... ここで地震が揺れ収まったのが不幸中の幸いだった。

震度6弱直撃により、屋根瓦が崩れた家。
(プライバシーの観点から家が特定できないように屋根だけの写真ですが...)

結構長い時間揺れたようにも感じたけど、大規模地震としては短い揺れだったと後で知った。 自動車事故なんかでぶつかる瞬間には数秒の出来事が数分のように感じる事があるらしいが、 あれと同じ現象なんだろう。

地震が収まってみると、カラーボックスから散乱した資料やらジャンクやらで部屋の中は大荒れ。 もうメチャクチャな状態だ。もっとも、「確かにメチャクチャかもしれないけど、 結局普段とあまり変わらないのでは?」とか「ある意味ラッキーだ。部屋が荒れたのを地震のせいにできる。」 と思ったりして。(^^;)

テレビで報道を見てみるに、プレート内部の地震であって東海地震で想定されているプレート境界の地震ではなく、 マグニチュードも想定よりずいぶん低い(ただし、震度とマグニチュードは異なる概念なので注意。)ので、 東海地震ではないそうだ。でも、今まで震度4が体感した最高値だった当サイトは、揺れている最中には 「まさか東海地震か?」と思っていた。

しかし、今回の静岡沖地震のマグニチュードは6.5。 マグニチュード8が想定される東海地震が来たらどの程度揺れるのだろうか?  震度とマグニチュードは理論上では比例しないが、 その筋の専門家によると本物の東海地震はこんな程度の揺れとは思わないで欲しいとのこと。 あの震度6弱の揺れが東海地震には全然及ばないとすると、震度6強とか震度7なんて想像するだに身の毛もよだつ話だね。 東海地震は明日起きてもおかしくないそうだから、お盆休みには部屋の追加耐震対策をやっておこう。

ともあれ、あれだけ揺れたにも関わらず人的被害がかなり少なかったのは不幸中の幸いだったと思う。 ニュースでは揺れの周期が木造建築倒壊の固有振動数と合わなかったからだと説明されていたが、 静岡は地震の本場だけに耐震対策や防災訓練が行き届いていたのもかなり効果があったと確信している。 (なぜって、あれだけ揺れたにも関わらずパニックになった地域住民はいなかった。)

当サイトの住居は静岡市から西方にあって、当地の震度は6弱。まさに震源地の直近である。 静岡は地震の本場だからひょっとしたらとは思っていたが、出向直後の狙い澄ましたかのような大地震発生にはかなり驚いた。 私、何か天に恨まれるようなことしましたか?  体験したくてもなかなかできない、ある意味で貴重な体験だったね。

☆どちらも難易度が高い。   
というわけで本題へ。 これからのPC用CPUはどのような方向性へと進化していくのであろうか?

一つはっきりしているのは、「性能は一定レベルでよく、あとはいかに低価格化するか。」という方向性が出てきたこと。 ネットブックでシングルコアのAtomがバカ売れする時代の到来である。 高く売れないので安く作らざるを得ないというCPUベンダーにとっては苦々しい状況だろうけど、 これはPC用途でマルチコアを効果的にするという方向性が成果を出せなかった以上はやむを得ない。 こちらの方向には、価格が下がってもそれに対応してコストを下げることで利益を維持していく という材料・電子部品業界のようなスタイルしか残されていないのだ。 (幸いAtomは低コスト化が非常に良好なので、単価下落にもかかわらず利益は出しているらしい。)

それに対し、本来の本流であったハズであるマルチコア化は大きな壁に直面している。 アプリのマルチスレッド対応が想定外に遅れてしまったため PC用途では思いの外効果が薄かったのだ。

しかし、クライアントからの要求が独立なため強力なスレッド並列性が得られるサーバー用途や、 取り扱いデータ量がPC用途とは比較にならない位膨大であるため強大なデータ並列性が得られるHPC用途 では、マルチコア化は順調に進行している。 サーバー用途やHPC用途では効果的なこの手法が、なぜPC用途では通用しないのだろうか?

当サイトがネット上でその筋のプロの見解や論文を探して読んだところによれば、 それはフローをコントロールするという用途が多いPC用途では並列化の難易度が非常に高いためと言われている。 本来存在する並列度がデータ並列性やスレッド並列性より低い上に、それを抽出する事も難しい。 その上、バグ取りも難易度が非常に高く、動作の検証も定石が定まっていないのだという。 要するにまだまだ試行錯誤を強いられているというわけだ。

また、主にアムダールの法則により、対応がなされた後でも実質的な性能向上が 10〜20%程度に停滞してしまうことも頻繁に発生するのだそうだ。 対応アプリだから問題ないかというと、事はそう単純ではない。 大事なのは対応しているかどうかではなく、対応によりどれほど性能がアップするかであるのだからね。 プログラミングのプロから見ればPC用アプリの並列化対応が難しい事はもはや常識なのである。

PCの進化を考える上でこれは非常に大きな問題点だろう。 前回、当サイトは時間感覚について書いたけど、この件に関しては当サイト自身が時間感覚を読み誤っていたようだ。 マルチコア化が始まった頃、当サイト自身がアプリの並列化進行によってマルチコアはいずれ効果的になると考えており、 マルチコアは役に立たないという主張はそろそろ正しくなくなるだろうと思っていたのである。

しかし、現状がどうかと言えば... 上記の通り、マルチコアでなければ性能が出ないアプリは未だに主流になっていない。 もしそうなっていればマルチコア化がデュアルコア段階でストップしてしまうことは無かったし、 当時あれほどの高性能を誇ったCELLは間違いなく時代の主流になっていたはずである。 いずれも対応アプリがなかなか出てこないという点が最大の問題点であろう。

もっとも、だからといってハードウエアで対応という方法もまた困難なのも事実である。 確かにCPUのシングルスレッド性能を向上する事にも大きな障害が立ちはだかっていて、 当サイトのように「困難であってもシングルスレッド性能を向上すべきである。」という主張が正しいかどうかはわからない。

パターソン教授の言う「3つのウォール」の壁は確かに非常に高い。 アプリのマルチスレッド対応を進めることの困難性と同様に、 シングルスレッド性能を高めることもまた困難であるのだから、 「シングルスレッド性能を高めることはもはや非現実的なのだがら、 困難であろうともアプリのマルチスレッド対応を進めるべきだ。」という主張はあってしかるべきと思う。

☆コア数が増えた場合の理想型は、多くの場合でCPU負荷率を維持したまま性能指標が上がること。   
だが、問題はマルチコアの優位性を無理に主張しようとするあまり、 並列化に失敗した事例が並列化の成功例として紹介されていたりすることだ。1)

たとえば、あるゲームソフトでのマルチコア対応の評価記事のケースで考えてみよう。 デュアルコアでCPU負荷は約80%、クアッドコアでは約50%。 その際にフレームレートは約20%向上した。 評価記事では、CPU負荷率がこんなにも下がったのだからクアッドコア化は非常に効果的、 逆にデュアルコアには動作に全然余裕がないという判断がなされていた。

だが、これは残念ながら成功例とは言えないのである。

この場合の理想型がどのようなケースかを考えてみれば事情は簡単にわかる。 この場合の理想型とは、CPU負荷率は高いままで維持され、その分フレームレートが2倍高くなる事である。 同じコアのデュアルとクアッドの場合ならば、CPU性能は2倍なのだからフレームレートが2倍になるのが最善のケース。 CPU負荷率が下がる余裕があるならば、負荷率は高いままでその分フレームレートが上がるのが正しい進化の方向性である。

もしCPU自身に罪がないケースがあるとすれば、それはCPU以外の部分がボトルネックになっているために コア数を増やしても性能が上がらないケースである。 たとえば、ゲームならばGPU性能がボトルネックになるケースは比較的多い。 だが、その場合はCPUのコア数を増やすという選択自体が判断ミスと言える訳で、 マルチコアが役に立たないという意味では同じである。 (このような場合はCPUのコア数を増やすのではなくGPUのコア数を増やすのが正解。つまり2枚挿し。) GPUではなくHDDでも同様で、この場合はコア数を増やしてCPU負荷率が下がるより、SSDへの換装が正解である。

つまり、CPU負荷率が低いというのはCPUパワーが余ったから余裕が出来たという訳では無く、 CPUのうちのいくつかのコアが働きたくても働けないという事情を示しているに過ぎない場合が多い。 働けない事情がソフトウエア自身の並列化不足であっても、 CPU以外の部分がボトルネックになっている場合でも、役に立たないという意味では同じである。 このケースは、理論ピーク性能が2倍になっても総合性能が20%しか向上しなかったというケースであり、 残念ながら成功例とは言えない。

他には性能指標ではなく処理時間が短くなるのが指標というケースも多い。

処理時間が短くなるのが最善というのは、エンコードを例に考えるのがよくわかる。 たとえばエンコードでも、マルチコアを使った場合でCPU負荷率が50%で処理時間が1時間のアプリより、 CPU負荷率が100%で処理時間が30分のアプリが優秀なのは誰が見ても明白だろう。 CPUパワーに余裕があってCPU負荷率が下がるというのは多くの場合でおかしな話で、 本当に処理能力に余裕があるならばCPU負荷率100%のままで処理自体がより早く終わるのが正解なのだ。 (処理が終わればその後はCPU負荷率は0%になるわけだから、時間平均としての負荷率はちゃんと下がっている。)

CPU負荷率は「負荷」という重さを表す指標が低い数値であるので一見すると低い方が高性能を表しているように思える。 また、負荷率100%という状況がバグによるハングアップの事例としてよく起こるので、悪い出来事のように思えてしまう。 が、事はそう簡単ではない。 これで問題がわかりにくいならば、さらにわかりやすい例を考えてみよう。 さらにわかりやすく例えるとしたら、スパコンのLINPACK性能で同様な事を考えて見るのがわかりやすいと思う。

たとえば、デュアルコアのCPUを使用した1PFLOPSのスパコンがあったとする。 LINPACK性能を計ってみたら0.8PFLOPSであった。つまり効率は80%である。 これでは性能が足らないとして、全CPUをクアッドコアに置き換えたと考えてみよう。

その際にLINPACK性能は20%向上して0.96PFLOPSになったとする。理論ピーク性能は2倍になった訳だから、 効率は48%(つまり約50%)。

で、皆様に是非問いたいのだけど、これを典型的な成功例として 「CPU負荷率がこんなにも下がったのだからすばらしい。」などと言えるでしょうかね?  逆に、LINPACK性能での効率が100%のマシンが仮に存在したとしたら、 先ほどのゲームの例を当てはめれば「動作に余裕がまったく無い、失敗作のスパコン。」ということになってしまうけれど、 皆様はそれを正しい主張だと思いますか?  当サイトの目でなくても、誰が見ても典型的な判断ミスだと思うのですけど。

この際のベストなケースとは効率80%を維持したままLINPACK性能が2倍になることである。 決してCPU負荷率が下がることではない。 (効率が100%になればもっと良いが、同じコアの場合ではアルゴリズムに手を入れない限り効率は下がることはあっても上がることは無いから。)

☆少数の例外で大多数を語るレトリック。   
CPU負荷率が低くなるというケースは多くの場合でマルチコア性能が生かせていないというケースである。 それをあたかも性能向上の指標のごとく扱うのは、少数の例外で大多数を語るレトリックである事が多い。

余裕があるから負荷率が下がるという状況はかなり限定的な状況でしかあり得ない。 多くの場合では、余裕がある場合は負荷率が下がるのではなく、処理時間が短くなるからである。 (理想状態ではCPU負荷率は一気に100%まで高まって、すぐに処理が終わってサーッと0%まで落ちていく。 中途半端なパーセンテージでモタモタ稼働する状態は決して理想状態ではない。)

簡単に言えば、マルチコアが効果的に動いていないほどCPU負荷率は下がるのだ。なぜならば、 もしCPU負荷率を下げること自体が目的ならばアプリのマルチスレッド対応を進める必要性すらない。

現状のPCでマルチスレッド非対応アプリを動かしている時、 コア数をシングル、デュアル、クアッド、オクタと増やしたケースを考えてみよう。 アプリがマルチコア非対応なのだから性能指標はまるで向上しない。 しかし、CPU負荷率はシングルで100%、デュアルで50%、クアッドで25%、オクタで12.5%と、コア数に比例して下がるのだ。 100コアのシステムを仮に自作したとして、CPU負荷率が1%に下がったからすばらしいと思えますか?  これをマルチコアが効果的に動いていない状態に適用して類推すれば、事態がはっきりする。 コードの最適化不足により動かそうと思えば動けるコアが動けないで余っている状況を 「負荷が低い理想的な状況。」と考える事自体がナンセンスだと思うのですが...

ではここで、逆にCPU負荷率が下がるのが性能向上の正しい指標となるケースを考えてみよう。

たとえばBle-rayの再生でコマ落ちする事無く一定のフレームレートを維持しつつ (この場合はゲームと違ってフレームレートが規格値以上に上がることに意味は無いから。)、 同時並行で行う処理も単位時間あたりの処理量に上限値があり、なおかつ 処理を速く終わらせることに意味が無いというケース (デコード処理が速く終わったからと言って再生が早送り状態になっても意味が無いから。)が考えられる。 他には、サーバーなどでは急激な負荷増大によるハングアップに備えて一定の処理能力を残しておく措置などがあるという。

だが、すべての負荷が単位時間あたりに一定の処理量を求めてそれ以上の高速化に意味が無いケースや、 負荷増大に備えて処理能力に余力を残すケースはPC用途ではかなり例外的事例なのは誰が見ても明らか。 サーバーと違ってPC用途では負荷変動に備えて処理能力に余裕を残す必要性はあまり重要ではないし、 そうではないアプリが一つでも動いていればCPU負荷率が100%になってそのアプリがより速く処理を終わらせる(あるいは性能指標が向上する) のが理想的な状態であるからだ。つまり、ほとんどのケースでは動作に余裕があってCPU負荷率が下がっている状態なのではなく 上げたくても上げられない状態と考えるのが妥当なのである。

と言うわけで、CPU負荷率が下がるという状況は多くの場合でマルチコアの非効率性を示すものであり、 CPUの動作に余裕があるという状況を示すものではない。 繰り返しになるが、正しくはCPU負荷率が高止まりし、その分性能指標が上がるか、 あるいは処理時間が短くなるのが正しい進化の方向性なのだ。

☆マルチコアは死んだも同然か?   
先ほどのゲームの例のような無理な主張はコア数が増えるほど高性能という考え方を無理に正当化しようとするから生じる。 つまり、もはやPC用CPU開発の実態は単純なマルチコア化の進行から外れ始めたと見るのが妥当だと思う。

実際、コア数はオクタコア化へとは向かわず3コアや6コアという2のべき乗ではない中途半端なコア数のCPUが出始めた。 マルチコア需要の伸びが想定通りには進まなかった証拠である。 また、GPU混載が最近のトレンドになっているのはコア数以外の進化の方向性の一つ。

CPUベンダーは、最初の段階ではマルチコアによる性能向上が事実でなくても、 ソフトのマルチコア対応が進むからそれまで待っていればいずれ真実になると考えていたのだろう。 (当サイト自身も当初はそう思っていたわけだしね。) しかし、現実には想定以上にマルチスレッド対応が難しく、 現状ですらクアッドコア化しても一般的なアプリがバリバリに高速化する訳ではない。 コア数を増やせば何の問題もなく性能が向上するという意見はマルチメディア系アプリなどの対応アプリに限られ、 それ以外のPC用途ではもはや破綻の危機に直面していると思う。

ここに至ってCPUベンダーもついにそれを認め始めたようである。 今後のCPU開発ではコア数は性能要素の一つになり、コア数で性能を区分する事は無くなるそうだ。 コア数を性能指標とした名付け方はいずれ無くなるとの 報道があるが、 CPUベンダーも嫌々ながら認めざるを得ない状況となりつつあるようだ。 ××デュオ、××クアッドとか、○○×2、○○×4というようなネーミングは今後は無くなっていくわけだね。

では、今後はどのような方向性になるのか?

当サイトの過去の主張ではGPU混載となるわけだが、これは正しい予想だったのもののCPU自身の進化を示すものではない。 さらにワンチップ化(SoC化)も予想していたが、 現状ですらCPUにメモリコントローラが統合され、後はサウスブリッジ、GPU、DRAMだけである。 DRAMは半導体の製造工程がCPUとは全然違うから統合出来ないとすれば、あと2ステップでSoC化は行き詰まる。 いろいろなものを混載していけばいずれDRAM以外はワンチップ化される訳だが、 ここに至ればSoCという概念ではこれ以上進化できなくなってしまうのだ。

Atomのようにその後は同一機能の製品をより安く作る競争になるという考え方が出来ないわけではないが、 CPUマニアとしてはそれではおもしろくない。 (もちろんCPUベンダーとしてもおもしろくない状況だろう。) また、現状のシングルスレッド性能向上はAVXに代表されるようにSIMD関連の浮動小数点演算に代表されるが、 これは効く用途と効かない用途がはっきり分かれるため、用途によっては意味が薄い。

とすると、結局のところマルチコアが生き残る可能性はせいぜい3つ位しかないと考えている。

一つは、その頃にはさすがにアプリのマルチスレッド対応が進んで、 今度こそマルチコアが有効になるという可能性。 つまり、CPUのシングルスレッド性能向上はもはや困難なのだから、 難易度が高くてもアプリの並列化対応をやり遂げなければならないという考え方である。

PCマニアには何タイプかあって、当サイトは典型的にハードウエア系のマニア。だから 問題点はシングルスレッド性能向上の復帰でと希望的観測で思っているわけだけど、 シングルスレッド性能向上の壁がいかに高いかはプロ間でも常識化している。 だから、こちらもかなり道は険しいだろうがアプリの対応で頑張るという方向性は確かにあり得る方向性だ。 それがうまくいけば一度は失敗すると当サイトが予想したマルチコアの時代が、 そのときに今度こそ本物になるというわけだ。

もう一つは、シングルスレッド性能を維持するためのコアとマルチコアを生かすためのコアを分離して 並列化未対応というマルチコアのリスクを最小限に管理すること。 マルチコアのリスクアセスメントである。

要するにマルチコアが必ず生きる用途をCPUと統合してその分野をマルチコアに任せること。 マルチコアはアプリの非対応、つまり使われないことが最大のデメリットなのだから、 PC用途では必ず使われる機能であるGPUの代打を任せるのはあり得ると思う。

可能性が高いのはGPGPU的な超微細コアなマルチコアとOS用の複雑なシングルコアを組み合わせた ヘテロジニアス・マルチコアだろうと考えている。 AMDで言えばFusion、intelで言えば複雑なコアと組み合わせたLarrabeeである。

この方式がCPUベンダーにとって都合の良いところは、シンプルコア側は数が多く単純なコアほど都合がよいので 一見すると単純なマルチコア化が破綻していないように見えることである。 単純なマルチコアがダメだからこちらの方向性に進路変更するわけだが、 見かけ上はコア数がさらに急速に増えるのでマルチコア化が成功した果ての超マルチコア化であると主張することも可能だからである。

最後の一つはマルチコアをシングルスレッド性能向上に生かすという可能性。 シングルスレッド性能向上がPC用途での性能向上の本流であるが、 3つのウォールが壁となって実現不可能であるとすればマルチコアをシングルスレッド性能向上に生かす他に道はない。 つまり、シングルスレッド性能向上にも使えるマルチコアである。 (厳密には3者は対立する概念ではないので、同時並列で進行する可能性もある。)

シングルスレッド性能向上にも使えるマルチコアという概念は当サイトでもいくつか考えていて、 その一つがAtomネタで書いたコアの共用化である。 (そのまたベースになる考え方はここで書いた通り。) この考え方の良いところは、マルチコアが生きる用途での性能向上はそのままに、 効率は下がるとはいえシングルスレッド性能を高められるという柔軟性にある。

この概念であるが、ある読者の方からBulldozerのアーキテクチャにかなり似ているとのご指摘を頂いた。 Bulldozerについては AMDのAVXサポートとBulldozerのクラスタ型マイクロアーキテクチャ という記事のクラスタ型アーキテクチャという概念に 関する部分が一番わかりやすいと思われるので、興味のある方はご一読いただきたい。

Bulldozerについてはまだまだ情報不足で、当サイトの考え方と一致するアーキテクチャなのか、 似て非なるアーキテクチャなのかは現段階ではわからない。 しかし、少なくとも単純なマルチコア化ではダメだとAMDが考えている事には間違いない。 PC雑誌の言うとおりこれからはクアッドコア、オクタコアの時代だとするならば、 AMDのアーキテクチャは間違った方向性を進んでいる事になるからだ。

一方intelの新アーキテクチャについては情報がほとんど無いが、 当サイトはAMD同様におそらくシングルスレッド性能にも配慮した設計になると予想している。 もしひたすら単純にマルチコア化を進行させる事を狙ったアーキテクチャだったならば当サイトの読みが外れたという事になるが、 おそらくそれはあり得ないと予想する。

マルチコアを生かすにはアプリの対応が不可欠であり、 逆に言えば、アプリのマルチスレッド対応が進まない限り現状の単純なマルチコア化はPC用途では必ず失敗する2) というのが当サイトの主張だった。 幸か不幸か、この主張は的中しつつあるとの感触を得ている。 しかしいろいろと考えてみるに、マルチコアが原理的にダメなアーキテクチャであるという結論には達しなかった。

シングルスレッド性能向上がきわめて難しいというのはプロ間では共通認識になっている。 つまり、良いか悪いかを問うまでもなく、いずれマルチコアを活用せざるを得なくなる。

その際には、フレキシブルで柔軟性の高いマルチコア化ならば、それによりシングルスレッド性能向上を狙うことにより 生き残れると考えている。こうなったときにはコア数とは定数ではなく稼働状況に依存するフレキシブルな変数となり、 動作状態によってシングルコアであったりデュアルコアであったりクアッドコアであったりするわけだ。 (と言うわけで、シングルスレッド性能を高められるマルチコアという考え方については 近い将来是非ネタにしたいと考えている。)

当サイトは現状の単純なマルチコア化には否定的な立場だけど、 では「マルチコアは消えゆくのか?」と聞かれれば当サイトの見解はノー。 現状はマルチコアの「終わりの始まり。」ではないと思う。 コア数増大のペースは当初の想定よりもかなりスローペース化するだろうが、 シングルスレッド性能を犠牲にする単純なマルチコア化が間違った方向性なのであって、 シングルスレッド性能を犠牲にしないように留意されたマルチコア、 さらにはマルチコアを使ってシングルスレッド性能を向上させるという方向性ならばまだまだ可能性があると思っている。

最近のPC用ハイエンドCPUはサーバー用CPUをPC用に転用するという方針で、 機能や性能に微妙な乖離が多く真の意味でPCニーズに合ったCPUではなかった。 PC用途で速いCPUの復活には是非是非期待したいところだね。



1)
その記事に直接リンクを貼ることはしないが、 似たような件はいかようにでもWebで見つかるので具体的に指摘する必要性は無いだろう。 要するに「結論先にありき。」の記事を書くから無理が生じるのである。

2)
「酷評だけならサルでもできる。」を信条としてきた当サイトにとって、 マルチコアに対する批判はやりたくてやっている訳ではない。 酷評は優越感と表裏一体の面があるから、麻薬と同じでこれにすがるのは自らをサルレベルと証明するに等しいからだ。

その意味で、最近のトレンド転換はようやく当サイトの期待する方向性への大きな希望となりそうだ。 技術的に興味深いCPUでコラムを書く時代が再び訪れてほしいものだと願っている。