yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

「(吹) ハリー・ポッター20周年記念:リターン・トゥ・ホグワーツ」をようやく見て思うこと

映像へのリンク(有料)

www.hulu.jp

はじめに

Harry_Potter_Book_and_Wand

Harry Potter Book and Wand - Category:Harry Potter (franchise) - Wikimedia Commons

ようやくこれを見た。やっぱり僕らの世代にとってのHarryPotterってのは非常に大きな存在で、確実に自分の人生に大きな影響を与えている、素晴らしい作品だと思う。 今なお魅了される人々が増えていっているのもそういうことじゃなかろうか。

自分とHarryPotterとの出会い

自分が初めてHarryPotterを知ったのは小学生の高学年の時、当時毎日のように一緒に行き帰り通学していた女の子(付き合ってません)に学校の図書室で勧められた時たった。

当時自分はだいぶ本の虫な小学生ではあったものの、シャーロック・ホームズやアルセーヌ・ルパン、西遊記封神演義などを主に読んでいて、あんまりピンとこなくてその時は読まなかったように思う。

その後HarryPotterの映画予告なんかもテレビで流れていたものの、強く印象に残るほどではなかった。

中学校に入って、夏休みの読書課題で本を選ぶときにHarryPotterを思い出して、まずは賢者の石を借りて帰った。

それをベッドで読み始めた晩は人生で初めて徹夜した日で、一気に読破した。その後、学校と市立図書館の貸出枠をめいいっぱい使ってシリーズ全部借りて、夏休みの課題そっちのけで読み耽ることになった。

特に、HarryPotterと不死鳥の騎士団を読んだ時は、ちょうどそれはそれはすごい雷雨の日で、落雷で停電する中、LEDランタンの明かりで雷に震えながら読みふけっていたのをよく覚えている。

しばらくして先に述べた別の中学校に進んだ女の子の家に遊びに行ったときに、炎のゴブレットのDVDを譲り受けた。これで映画版にもハマり、レンタルで全巻視聴することになった。

あんまりHarryPotterにハマっているのをみた私の叔母が、HarryPotter全巻をゆずってくれたので、そこから学校の宿題をそっちのけで読みふけっては親に怒られるのを繰り返した。当然にして学校の成績は下がった。

なお同じ頃、英語版の賢者の石の本を買って読み始めたが、文法的にはわかるものの知らない単語が多くて、心が折れるなどした。英和辞書で単語を引いて、緑のボールペンで書き込んだので書き込みだらけになっている。

成長する登場人物たちと俳優たち

HarryPotterシリーズをおそらく多くの人は映画で知っているのだと思う。翻訳版の原作は特に第5作品目の「不死鳥の騎士団」以降、それこそ鈍器か?ってくらい分厚いし、尻込みしてしまう人も多いだろうから。

HarryPotterシリーズは原作と映画がリアルタイムで同期しながら公開されていった。作品の中で登場人物たちが成長していくにつれて、それを見ている私達も成長していった。

と同時に重要なことは公開された映画に出演する俳優たちも成長していったということ。彼女たちも悩みあふれるティーンエイジャーという時のなかでこの作品を演じていたのだから。

この「リターン・トゥ・ホグワーツ」でもそのことに対する言及がたくさんあった。特に「僕らが経験したことは僕らにしか分からない特別なことだって、デヴィッド監督は君らは宇宙飛行士だって。こんな環境で育った子どもは僕らしかいないから。だから3人の絆は永遠だ。(1:20:25付近)」とルパート・グリント(ロン・ウィーズリー役)が語っていたことはそれを象徴していると言っていい。

ルーナ・ラブグッド

自分がHarryPotterの登場人物でもっとも影響を受けたのはおそらく、ルーナ・ラブグッドだと思う。自分ははじめそのキャラクターを映画の予告映像でみて、そして原作(翻訳)をよんで、そのあと映画をみて知った。彼女の不思議なことを信じる力、想像力は自分に大きな勇気を与えてくれたと思う。

自分自身、周囲とはだいぶ違う子どもだったので、それがきっかけでいじめられたこともあったし、普通じゃないことに対する葛藤みたいなものもあった。

主人公のハリーも、「普通」であることを強く求めるダーズリー家でだいぶ苦しんでたが、やっぱりルーナの存在は本作品でも飛び抜けていて、彼女のような生き方もあるんだというのは、あとになってみれば、大きな救いになっていたのだと思う。

ちなみに映画予告なんかでも出てくるルーナがスキップしながら廊下を歩いているシーンが好きになりすぎて学校で真似したら、周囲からますます浮きました、それはそう。

親からお前の挙動は芝居がかっていると言われるのだが、絶対にルーナのせいだと思う。

社会人になった今から思うHarryPotter

冷静にHarryPotterのストーリーを眺めていると色々とツッコミどころはある。アルバス・ダンブルドアよお前それでも教育者かよとか、魔法省の立ち位置を私達が今暮らしている現代国家観のなかの政府と同じに見ることはできないなとか、純血主義ってえらくメンデルの法則から生まれた優生思想に影響されている「マグル」らしい思想じゃねとか・・・。

そういうツッコミをしつつ、原作を直接読むことこそ減れども、二次創作という形でHarryPotterをいまなお接種し続けている。それは学生時代の宝物を取り出して磨くような、そんな作業なのかもしれない。

余談: フクロウの「傍受」という訳

ハリー・ポッターシリーズ - Wikipedia#日本語の誤用

原文:he said the owls might be intercepted.

「あの人は、ふくろうが途中で傍受されるかもしれないといってた」と訳されている。"intercept" には途中で捕らえる・(電波を)傍受するという意味があるが、この場合可能なのはふくろうを捕獲して連絡内容を調べることである。そもそも、傍受は電波に用いる語なので日本語として間違っている

週刊文春のこの指摘は未だに納得行ってない。傍受という言葉は電波に限らず、通信に対して用いる語ではないか。例えば「犯罪捜査のための通信傍受に関する法律」では次のように有線通信に対しても用いている。

第二条 この法律において「通信」とは、電話その他の電気通信であって、その伝送路の全部若しくは一部が有線(有線以外の方式で電波その他の電磁波を送り、又は受けるための電気的設備に附属する有線を除く。)であるもの又はその伝送路に交換設備があるものをいう。

2 この法律において「傍受」とは、現に行われている他人間の通信について、その内容を知るため、当該通信の当事者のいずれの同意も得ないで、これを受けることをいう。

また無線通信とはなにも電波によるものに限定されない。例えばジョークRFCとしておなじみRFC1149(鳥類キャリアによるIP)では伝書鳩の上にIPを実装する例を示している。

HarryPotterの作品で描かれるフクロウによるやりとりの描かれ方では、現実世界の伝書鳩よりも遥かに信頼性が高く、「通信」足り得る。

故に「傍受」という訳が適当ではないという批判は当たらない。

DeepL翻訳: Using Profile Information to Assist Classic Code Optimizations

Using Profile Information to Assist Classic Code Optimizations

http://impact.crhc.illinois.edu/shared/journal/spe.profile-classic.91.pdf

note: 興味のあるところだけ翻訳ツールに投げ込んでいる

SUMMARY

本論文では、古典的なコードの最適化を支援するためにプロファイル情報を自動的に生成する最適化コンパイラの設計と実装について説明する。 このコンパイラには、従来の最適化コンパイラにはあまり見られない、実行プロファイラとプロファイルベースのコードオプティマイザという2つの新しいコンポーネントが含まれています。 実行プロファイラでは、入力プログラムにプローブを挿入し、複数の入力に対して入力プログラムを実行し、プロファイル情報を蓄積し、この情報をオプティマイザに供給する。 プロファイルベースのコードオプティマイザは、プロファイル情報を利用して、従来の全体最適化手法では見えなかった新たな最適化の機会を明らかにします。 実験の結果、プロファイルベースコードオプティマイザは、高品質のグローバルコードオプティマイザによってすでに最適化されている量産Cプログラムの性能を大幅に向上させることがわかりました。

CODE OPTIMIZATION ALGORITHMS

Optimizing frequently executed paths

このセクションで紹介するプロファイルベースのコード最適化はすべて、最も頻繁に実行されるパスの最適化という単一のコンセプトを追求しています。このコンセプトについて、例を挙げて説明する。図2は、ループを表す重み付きオウグラフである。 をプログラムする。基本ブロック{A B C D E F}のカウントは、それぞれ{100,90,0,0,90,100}である。 {A → B , A → C , B → D , B → E , C → F , D → F , E → F , F → A} のarc_countは次の通りである。 {90,10,0,90,10,0,90,99}, respectively. 明らかに、この例で最も頻繁に実行されるパスは、基本ブロックシーケンス<A B E F>である。 従来、非ループベースの古典的コード最適化の定式化は保守的であり、いかなる基本ブロックの実行時間を増加させる可能性のある変換も実行しない。ループベースの古典的コード最適化の定式化は、ループ本体全体を全体として考慮し、非常に偏った「if」文のためにループ本体内のいくつかの基本ブロックがほとんど実行されないケースは考慮しない。このセクションの残りの部分では、より積極的な判断を行い、より多くの最適化の機会を探る、いくつかのプロファイルベースのコード最適化について説明します。

私たちは、頻繁に実行されるパスを表現するために、スーパーブロックと呼ばれるシンプルなデータ構造を使用することを提案します。スーパーブロックは、基本ブロックの線形シーケンスであり、シーケンス内の最初のブロックからしか到達できない。プログラム制御は、どの基本ブロックからでもスーパーブロックを離れることができます。 実行がスーパーブロックに達したとき、そのスーパーブロック内のすべての基本ブロックが実行される可能性が非常に高い。 スーパーブロックの基本ブロックは、コード上では連続である必要はありません。しかし、この実装では、オプティマイザが考える限り、スーパーブロックのすべてのブロックが常に連続するようにコードを再構築しています。

Forming super-blocks

スーパーブロックの形成は、トレース選択とテールデュプリケーションという2段階の手順で行われます。 トレース選択では、順番に実行される傾向がある基本ブロックを特定し、トレースにグループ化する。 トレースの定義は、プログラム制御が最初の基本ブロックから入ることに制限されないことを除いて、スーパーブロックの定義と同じである。 トレース選択は,トレーススケジューリングで初めて用いられた [7] [8] . いくつかのトレース選択アルゴリズムの実験的研究が[9]に報告されている. トレース選択アルゴリズムの概要を図 3 に示す. best_predecessor_of(node)関数は,ソース基本ブロックがまだマークされていない場合,nodeのソース基本ブロックの中で最も可能性が高いものを返す. トレースの成長は、現在のノードの最も可能性の高いソース基本ブロックがマークされたときに停止される。 best_predecessor_of(node)関数は、対称的に定義される。

図2はトレース選択の結果である。 点線の枠がトレースを表している。 トレースは{A, B, E, F }, {C }, {D }の3つである。 トレース選択後、プログラム制御が最上位の基本ブロックにしか入らないようにするため、トレースの末尾部分を複製してスーパーブロックに変換する。 テール部の複製アルゴリズムは図4に示す。 図2の例で考えると、{A, B, E, F }トレースに入る制御経路は基本ブロックFで2つあることがわかる。 そこで、基本ブロックFから始まる{A、B、E、F}トレースの最後尾部分を複製する。 複製された各基本ブロックは、新しいスーパーブロックを形成し、関数の末尾にアプライされる。 その結果が図5である。 ジャンプ命令を排除するために、末尾の複製後にさらにコード変換が行われる。 例えば、図5のFスーパーブロックを複製し、それぞれの複製をCとDのスーパーブロックと組み合わせて、2つの大きなスーパーブロックを形成することができます。 重複を抑制するために、実行回数が閾値以下(例えば、1回の実行で100回)の基本ブロックは、トレース選択プロセスから除外している。 また、コンパイル時間の増加を抑制するために、プロファイルベースのコード最適化からも除外する。

Formulation of code optimizations

name scope
constant propagation super-block
copy propagation super-block
constant combining super-block
common sub expression elimination super-block
redundant store elimination super-block
redundant load elimination super-block
dead code removal super-block
loop invariant code removal super-block loop
loop induction variable elimination super-block loop
global variable migration super-block loop

Table 2 Super-block code optimizations.

表2は、プロファイル情報を利用するために拡張した古典的なコードの最適化のリストです。 これらの古典的なコード最適化の原型は、[1] [19] に記載されています。 表2のスコープ欄には、これらのコード最適化の拡張スコープを記述しています。 非ループベースのコード最適化は、一度に1つのスーパーブロックに対して動作する。 ループベースのコード最適化は、一度に1つのスーパーブロック・ループに作用する。 スーパーブロックループとは、最後のノデから最初のノデまで、頻繁にバックエッジが取られるスーパーブロックのことです。 オプティマイザはまず、ライブ変数分析を適用して、スーパーブロックの境界を越えてライブしている変数を検出し、次に1つのスーパーブロックを一度に最適化する。 各スーパーブロックに対して、プロファイルベースのコード最適化を1回以上適用し、限界まで、またはそれ以上の機会が検出されなくなった時点で、最適化を終了する。 以下の説明では、各コード最適化は、前提条件関数とアクション関数で構成されています。 前提条件関数は、最適化の機会を検出し、変換によってプログラム全体の性能が向上することを確認するために使用されます。 アクション関数は、実際のコード変換を実行する。 コードの最適化を行うには、オプティマイザが最適化の対象となりそうな命令群を特定します。 次に、前提条件関数が呼び出され、各セットについて最適化の判断が行われます。 前提条件関数からの承認を得て、アクション関数が対象となるセットをより効率的な同等品に変換する。 命令 $op(i)$ が変更する変数の集合を $dest(i)$ とする。 また、$op(i)$がソースオペランドとして必要とする変数の集合を$src(i)$と表記する。 また、$op(i)$の演算コードを $f_i$ とする。 したがって、$op(i)$ は $dest(i) \leftarrow f_i(src(i))$ という演算を指す。

Local optimizations extended to super-blocks

ローカルコードの最適化には、スーパーブロックに簡単に拡張できるものがいくつかあります。 これらのローカル最適化には、定数伝搬、コピー伝搬、定数結合、共通部分式消去、冗長ロード消去、冗長ストア消去などがある [1] [19].

従来、ローカル最適化は基本ブロックにまたがって適用することはできず、グローバルコード最適化は実行可能な各パスを平等に考慮する必要がありました。 しかし、実行頻度の低いパスによって最適化の機会が阻害されるケースはよくある。 そのため、実行頻度の低いパスを体系的に解析から除外しない限り、実行頻度の高いパスに最適化を適用することができない。 尾部重複によるスーパーブロックの形成は、この効果を実現する。 したがって、プロファイルベースのコード最適化は、従来のコード最適化よりも多くの機会を見つけることができます。

ローカルコードの最適化がスーパーブロックに適用されるとより効果的である理由を説明するために、図6に示す共通部分式除去のケースを考えてみましょう。 元のプログラムは図6(a)に示されている。 トレース選択とテール複製を行うと、図6(b)のようになる。 尾部重複のため、opBからopCに到達できないので、opAとopCに共通部分式消去を適用することができる。


www.DeepL.com/Translator(無料版)で翻訳しました。

202210蔵王紀行記: 2日目編

yumetodo.hateblo.jp

もともと計画していた2日目の工程

蔵王温泉(泊)10:20→11:05山形11:30→12:28大石田12:35→13:11銀山温泉16:35→17:02尾花沢待合所17:25→19:15仙台20:00→21:04アクティブリゾーツ宮城蔵王(遠刈田温泉)(泊)

銀山温泉に突撃して仙台に48ライナーで抜けて、遠刈田温泉に泊まるというものだ。

さて、実際はどうなったのだろうか。見ていく。

朝食と宿からの景色

朝食付きで予約したので朝食を食べた。結構量があるので案外食べるのに時間がかかった。

さて、実は親に旅行してることを報告すると紅葉の写真を所望されていた。

宿から紅葉見えたしヨシ!

もっと紅葉を味わおうとする: 樹氷高原駅

宿をチェックアウトしててくてくあるいてバスターミナルに行こうかとしていたら、別の宿泊者の方が蔵王ロープウェイまでの送迎を依頼していたらしく、ちょうど出るところであったので載せてもらった。

たどり着くと残念ながらそこのロープウェイは係員の方がコロナに感染したとかで、閉鎖されていた。

しかし蔵王には他にも2つロープウェイがある。この日やっていたのはここから更に奥に進んだもう一つのロープウェイである。

チケット売り場にはけっこう人が並んでいた。この時点でもうすぐ10時といったところであったから、銀山温泉へ行くための10:20のバスは迫っていた。つまり、銀山温泉か、それとも蔵王の紅葉か。その二者択一を迫られたわけである。

紅葉には勝てなかったよ・・・。

奥にみえる緑の鉄塔がこの日は止まっていた蔵王中央ロープウェイである。

今回乗ったロープウェイは、以前大学のスキーの授業で来たときに何度も乗っているが、秋に乗るのは初めてである。

まずは樹氷高原駅に向かった。

ゲレンデマップ - 山形蔵王温泉スキー場|蔵王索道協会

そこから林を抜けると百万人ゲレンデに出る。

28番リフト降り口

2の渡り方向。椅子に座ると吹き上げてくる風が少し肌寒い。

百万人ゲレンデを見下ろす。スキーを履いてきたときは緩斜面に思えたのに歩くと案外急である。

28番リフト降り口を見上げる

地蔵山頂駅へ

ゲレンデマップ - 山形蔵王温泉スキー場|蔵王索道協会

はじめは紅葉終わりがけの景色を駆け抜けていたが

気がつけば色を失っていく。

地蔵山頂駅の景色もすこし白い。

手すりをよく見ると斜めの同じ方向に氷がついている。

木の枝にも・・・。

これらは霜氷と呼ぶらしい。

hp.otenki.com

冬に来ると埋まりがちなお地蔵様もきちんと拝めた。

蔵王のお釜に挑む

さて、ロープウェイ登る前にはただの一ミリもそんなつもりはなかったのですが、掲示されている地図を見ると案外蔵王のお釜が近いことに気が付きます。お釜のほうにいくバスは運行終了と出ていましたから完全に想定外でしたが、コースタイムを計算すると往復2時間半、その後お昼ごはんと考えれば全然行けそうです。検討してみましょう。

まず天気は想定に反してかなり良くなっていました。数日前に見た曇り時々雨とは一体・・・。

装備ですが、風を凌ぐアウターと保温する薄手のセーターと長袖の服。そして手袋。そしてビニール傘。すこし薄い長袖のズボン。ズボンに不安が残りますが昼間に行動するぶんには問題なさそうです。ビニール傘にはこの際壊れてもいいので杖として役目を果たしてもらいましょう。

食料は東京から持ち込んでまだ食べてなかったフランスパン風味の謎のロールパンが2個あります。熊野岳で食べるのにちょうど良さそうです。

というわけで登り始めました。まずは標高差70mを登って地蔵山

足元の霧氷と奥の低い山の紅葉の対比がいいですね。しらんけど。

一旦下って木道を進みます。そこから少し歩きにくい石畳を進みます。

地蔵山山頂をまく道と合流するとそこはワサ小屋跡です。

どんどん進む。

熊野岳付近、そしてお釜

熊野岳避難小屋に到着。熊野岳に直登するルートも地図上はあるはずが、当日の私はその分岐を見つけられなかった。

登ってきた道

避難小屋

お釜は避難小屋からだと影に隠れて中まで見えなかった。。

これも避難小屋の跡地?

とにかく尾根なので風が強いわけで、これを利用して風をしのいで小休憩を取った。

ここから熊野岳山頂へはすぐで、歩きやすい道なので駆け足で進んでいると立て看が・・・。

避難小屋から5分、山頂に到着です。

この神社の小屋で休憩をしました。

中で出会った年配の男性2人組のかたとお話をしていていたら、たくさん水を持ってきたからとお湯を沸かしてもらってスティックコーヒーときゅうりの漬物をごちそうになりました。自分が変わりに渡せるものがなかったのですこし恐縮しつつ、話していると、福島の方から来た方らしく、刈田岳からピストンしようと熊野岳に来たようです。

この蔵王も近年火山活動が活発なので、話は御嶽山噴火の話になり、ここなら噴石が来ても助かるかもしれない、いやだめだろうみたいな話をしていました。

さて、いよいよお釜を見に行こうと、馬の背分岐へ向かって下っていきます。

馬の背分岐に到着です。奥には先程見た避難小屋が見えますね。

そして振り返ってもうすこし崖際に近づくと・・・

お釜です。緑色の水が見えます。きれいですね!

下山

蔵王では風の向きが常に一定なので、霧氷の付き方も指向性があります。したがって、同じ道でも行きと帰りではだいぶ表情を変えるわけです。

山形駅へ、遠刈田温泉

昼食を食べ、お土産とか記念品を買いました。

バスターミナルに戻り山形駅にいきます。

バス待ちをしているときに、年配の女性2人組の方々と話が盛り上がって蔵王のお釜の写真を見せたりしてました。

山形駅に到着です。途中からたくさんの高校生が乗り込んで来ました。まあ路線バスですからね。見た目が高速バス感ありますが路線バスです。

山形駅からは仙山線で仙台を目指します。バスVS鉄道乗り継ぎ対決旅で話題の山寺駅作並駅東北福祉大前駅を通ります。

tabiris.com

仙台駅で遠刈田温泉行きの高速バスに乗ります。遠刈田温泉に行くバスは34番乗り場、ところで48ライナーは21番乗り場ということでちょうど道路挟んで向かいにあるようですね。48ライナーの乗り場には結構人が並んでいました。

www.daiwaresort.jp