トップ 最新 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2019-03-03

_ リファクタリング: HashからStruct

時期

元のプログラムでJSONなどの外部データから得られたHashをそのまま利用していたら、そのデータが複数のモジュール間を行き来するようになった。

モティベーション

Hashキーのリテラルが複数モジュールで記述されるためスペルミスがあってもわかりにくい。外部データで値としてnilが含まれることを前提している場合、キー名の書き間違いによるnilなのか、値がnilなのかの区別ができないためである。キー名の書き間違いはプログラムエラーとして検出したい。

解決方法:HashからStructへ変える

Structは、属性名をキーとした[]記法もできるため、仮に修正漏れがある、あるいはモジュール修正の時期によってStructへの記述変更したモジュールとHash記法のままのモジュールの混在が可能。

data = JSON.parse(responseText)
if data['result'] == 'OK'
  other_module.received(data)
  ...
end
 
class OtherModule
  def received(data)
    if data['foo'] == 'bar'
      ...
ResponseData = Struct.new(:result, :foo...)
...
data = JSON.parse(responseText).inject(ResponseData.new) {|s, (k, v)| s[k] = v; s}
if data.result == 'OK'
  othermodule.received(data)
  ...
...
  def received(data)
    if data['foo'] == 'bar'   # 後刻、他の修正と共に、data.fooに修正する
...

ボヘミアンスタイルでJSONを利用している場合

# 未知のプロパティは無視する
data = JSON.parse(responseText).inject(ResponseData.new) do |s, (k, v)| 
  if s.respond_to?(k.to_sym)
    s[k] = v
  end
  s
end

代替

リテラルの代わりに定数を利用する

module ResponseKeys
  RESULT = 'result'.freeze
  ...
end
...
if data[ResponseKeys::RESULT] == 'OK'

定数を使う場合のStructに対する
pros: 特にない。
cons: 冗長。

2019/3/6 追記: とみたさんにStructのコンストラクタ呼出し時にkeyword_initを使うと勝手に属性が設定されるからより簡潔と教わった。ありがとうございます。


2019-03-10

_ ヴェルヴェット・ゴールドマインを観た

妻が図書館で借りてきたので一緒に観た。

というか、ボウイをモデルにした映画というようなことしか知らなかったので、いきなりイーノの針の穴に駱駝を通すじゃなくて、駱駝の目に針なのかなが流れて驚いた。

とはいえスターマンがステージの上で死んだりするわけで、ボウイのエピソードをつなげて60年代終わりから70年代はじめにかけてのロンドンを描きたかったんだなという意図はすぐ汲めた。というか、タイトルやクレジットの文字がまさにそれだし。

で、1974年のステージ上の自殺行為(スターとしても、設定の上でも)をした謎を探りに、同時代の空気を吸っていることがもろわかりなイギリス人の記者にヘラルドトリビューンが取材を依頼するのが1984年だ。

ボウイを投影しているのがブライアン・スレイドという名前でブライアンか、とか思いながら観て行くと、全然イーノではないが鳥のイメージをつけているからイーノをビジュアル上はモデルにしたらしきジャック・フェアリーというラボエームのムゼッタのようなことをしている人も出てくるし、ここぞというときのバンドの音楽がベビーオンファイアーだったり、どうも音楽はイーノが大きい。マークボランも20世紀少年とかがベルリンで行われたグラムの死コンサートという設定の箇所で気分よく流れてくる。

オスカーワイルドと共にスターマンが置いて行った緑の宝石が、誰かはわからぬ(たぶんジャックフェアリーなんだろうけど)少年の手に入り、ジャックからブライアン、ブライアンからルー・リードとイギー・ポップの合成物のカーク・ワイルド、そしてカーク・ワイルドから主人公の新聞記者に渡って、最後、ジャック・フェアリーが鎮魂歌っぽい歌を歌いながらおしまい。

狂言回しとしてアンジェラ・ボウイ(映画の中ではブライアンとカークが寝ているのを見るが、アンジェラが書いているのはミック・ジャガーとボウイだったな)とヘルミオーネ・ファージンゲールを合わせたような女優と、最初のマネージャーと、RCAにはいそうにもない謎の2番目のマネージャー兼レコード屋が出てくる。が、物語はそれほどおもしろいわけではなく、主眼はポップカルチャーな雰囲気の再現なんだろうなぁと思ったし、その点ではうまくできていた。

ベルベット・ゴールドマイン [DVD]

それにしても、この映画の大音量でブライアンの曲を流しながらロック雑誌のブライアンの写真を見ていると大音量にたまりかねた父親、続いて母親がドアを蹴破って入って来るシーンって、恐怖映画だな。


2019-03-11

_ Tick Tock: A Tale for Twoを遊んだ

子供にTick Tock: A Tale for Twoって脱出ゲームがおもしろいらしいからやろうと言われて、はて? と思ったら、同時進行の2つのシナリオを別々にプレイしながら情報交換するということがわかった。

最初、子供はSTEAM版を用意していたが、STEAMとかマシンに入れたくないのでiPad版を買った。が、おれのiPad v2では買えるしインストールできるし起動できるが、スタートすると落ちる。残念だがすっぱりあきらめて、ゲーム用のノートPCにSTEAMを入れるところから開始。

すると、STEAM版は2人用で売っているとのことで、子供がプレイ権を送ってきて無事に始めることができた。

最初、ピアトゥピアで通信するのかと思ったら全然違って、別々のストーリー(ただし舞台は同じ)を同じ、しかし微妙に異なるパラレルワールド空間で探検(といっても各ステージに4ロケーションしかない)して得た情報をお互いに交換して情報を組み合わせたりして先へ進むという完全オフライン仕様だった。

が、これがめっぽうおもしろかった。雰囲気はテスラパンクっぽいが、なんだかよくわからない少女の失踪談で、マーニー入っているかも(最後塔が舞台になるからだが)。

最初はちょろいチュートリアルで、なるほど、こうやってゲームを進めるのかとわからせてから最初のステージへ進む。全部で4ステージ、全部同じ場所だが時間が数年ずつ異なる。

3ステージ目では時間の要素が大きく手詰まりそうになったがクリア、4ステージ目では英語力が必要(とはいえ、文法の基礎を押さえていれば問題ない)。

言語は英、独、丁だから、日本語しかできないと特に4ステージ目はきつそうだ。でも機械翻訳があることはあるけどね、いやもしかして丁なんてあるのは変だから丁人が作ったゲームと考えるほうが自然で、すると近しい独はともかく、英はグーグル翻訳だったりして。それじゃあ解けるわけがないはずだけど、よく解けたもんだなぁとか馬鹿話をしておしまい。

おもしろかった。

総プレイ時間は約220分(終わると表示される)なので1ステージ1時間弱かかったようだ(1~2ステージは比較的簡単に解けたので、3ステージ目で結構時間を取られた)。


2019-03-16

_ 運び屋

クリントイーストウッドの運び屋を観に豊洲。とりあえず都心で駐車場が利用できる(バルト9の駐車場は映画を観ても別料金だが、豊洲のユナイテッドは3時間の券がもらえる)のが良い点。

さすがにとぼけてるのではないかと思ったら、そんなことはなく、良いテンポで90歳の爺さんのロードムービーに近い映画で実に良いものだった。ロードムービーは行って帰らないが、これも往復しまくったあげくに最後は行ったきりだし、ロードムービーといえば車から流れる音楽だが、それもありありでなんかくだらない歌を一緒に歌って、それを盗聴している車の連中もまた一緒に歌うとか。

テーマは回復の物語で、その点は実にうまい。

2005年の絶頂期、ラテン人3人組に出荷を手伝ってもらったりしている(スペイン語で軽口を叩いたりするのだが、これは後で役に立つのだな)、しょぼいインターネット通販(20ドルで全米どこへでも)をインターネットは嫌いだと切り捨ててから12年、農園が破産してインターネットにやられた、と呻く。2005年の絶頂時にすっぽかした娘の結婚式を根に持たれて娘からしかとされる12年でもある。

それがたまたま行く先がなく向かった娘の家(すぐに追い出される)で、孫娘の婚約パーティでラテン人から仕事を紹介される。紹介先へ向かうと機関銃をかまえた男たちがいる。かくして第二の人生が始まる。

最初の旅でエンジンのかかりが悪い壊れかけた車(フォード)を新車(わからん)に変える。あとになって考えてみれば、旅はすべて回復なのだから、新車は新しい仕事、新しい人生の象徴なのだろう。つまり、人生の最初の回復なのだ。

次の旅で農園を回復する。

その次の旅で火事になった退役軍人会のレストラン、つまり居場所を回復する(25000ドルだ)。爺さんは朝鮮戦争の帰還兵なのだが、イーストウッドの映画では朝鮮戦争帰りというのはいつも意味がある。ベトナムが負け戦でグレナダは勝利したがしょぼすぎ、アフガニスタン以降はさすがに年齢設定上範囲外かまたは何か含みがあるのだろうが、戦争といえば朝鮮戦争になる。対共産主義という点ではベトナムと変わらないはずだが、負けたうえに時代的な問題意識がつきまとうベトナムと違って朝鮮戦争は比較的自由のための戦い(この映画でもこのセリフが出てきていた)というイデオロギーが未だに成立しているのかも知れない。

5度目の旅で孫娘の美容学校の学費を払って卒業させる。でもまだ妻の愛は取り戻せないが、家族の回復の第1歩となる。

最後の旅で金(つまり仕事)ではなく妻を選び、家族を回復する。

確か5度目の旅の途中に出てくる白い砂漠が印象的だ。

途中、パンクして立ち往生している黒人の家族を手伝うことになる。明らかに悪気はない言い方で、ニグロと一緒にパンク修理だ、と軽口を叩くと場の空気が変わる(このあたりの映画的な手法はさすがにうまい)。夫のほうが今はそうい言い方はしないんだ、と冷静に言う。そうかわかったと答える。

これは良いシーンだと思った。映画の中の設定として、この爺さんのこの時点のありかたが良く出ている。直した方が良いと言われたことには素直にしたがう。この爺さんが基本他人に親切(それが家族に向けられない心の持ちようだということが妻の不満でもあり本人が最後に自覚する問題なのだということも明らかになってくる)なのは、バイク集団でエンジンのかかりが悪いやつに、リレーがいかれたのが原因だと教えるところとか、細かくシーンがある。どうでもよいがダイクスがレズビアンを指す言葉だというのはなんとなく知っていたが、本人たちが名乗るものとは知らなかった(し、ちょっと考えていたのとはニュアンスが違う。それにしても今はじめて辞書をひいたが本義が土手というのは日本語の隠語との共通性もあるところが意味深だな)。

別のストーリーがある。メキシコの麻薬王だ。

映画としては結果オーライになり続ける運び屋の自分勝手な旅程が問題となる。麻薬王は、結果が良いということで、気にしない。仕事の属人性を認める運用をしているのだ。当然冷酷無比な殺し屋でもあるわけだが、確かに古いタイプのギャングで意外なほど身内と思えば親身となり人情もある。

それに対してそういう甘い経営ではいかんと考える一派によりクーデターが起きる。爺さんの仕事にもタイムスケジュールに合わせた正確性が求められる。が、実はそれは警察に捕まる道でもある。わりとこういう考え方は70年代っぽくて(ルパン三世にもそういうテーマの回があった)好きではないが、定性的には正しいような気がする。

他にもシカゴ警察に転籍してきたエリート捜査官のストーリーがある。麻薬王に拾われて頭角を表してきた子分のストーリー、爺さんにSMS(テキストと喋っていたからSMSだが、字幕ではメールになっていたが、どちらでも良い)の数字の打ち方を教えるためについ本拠地のほうの住所を教えて殺されてしまうサルというギャングのストーリー、イリノイ州の豚サンドの店の声に出されないラテン人差別、強面のおっかないスキンヘッドのギャングが妻とのいきさつを知ると麻薬王に懸命に取り成す(姿は見せない)など細かいエピソードがあり、退屈する隙間が全然なくおもしろかった。

_ 学習する爺さん

以前、イーストウッドの映画のテーマの変遷について書いたことがあるが、過去の落とし前をつける映画を撮り続けていたのが、ルーキーのあたりから変わったということは気付いていた。

運び屋を観ていて、ある意味、この映画も過去にそうであったほうが良かった人生を回復する物語という点では過去に落とし前をつける映画ではあるのだが、別のテーマがはっきりと見えるように思う。

その意味ではやはりチャーリーシーンと組んだルーキーは重要だったのかも知れない。要するに、若者から学ぶ老人の物語だ。

ペールライダーまでの過去との戦い方は孤高のものだったが、若者と組んでそこから学ぶことで新たな戦い方をするというのがそれ以降の、おそらく老境を自覚してからの映画なのだ(組んでいる脚本家やプロデューサーもそれに協力しているのだろうけど)。

自分は端役に徹しているパーフェクトワールドですら、ケビンコスナーは連れ歩いている子供からいろいろ学んでいたのだった。

アジア人からいろいろ学ぶグラントリノにしてもそうだし、運び屋も黒人家族や、ラテン系のギャングたちからいろいろ学んでいる。おそらく、そうやって学ぶことが、逆にそれらの作品で若者に対しては学ばせていることにもなっている。

そういう老人というのは良いものだし、そういう老人映画の作り手なのだな。


2019-03-17

_ グリーンブックを観る

再び豊洲に行ってグリーンブック。

なんかの広報誌で見て話がおもしろそうだから観に行ったわけで、物語の映画としてはその点については十分におもしろかった。

最後に自分の言葉で妻を称える手紙を書くところとかなかなか印象的ではあったし、なるほどソ連に留学したということなのかとか疑問点が払しょくされたりもして楽しめた。嘘ではなくはったり(映画の中で原語と翻訳語でどう言っていたかは忘れたが、日本語としてはあまり良い訳とは思えなかった。が、字幕の制限がある以上やむを得ないとは思う)男としてのリップだとか、そのはったりがつい手を出してしまって頭を抱えていると傲然と立ってはったりを超えた事実で釈放を勝ち取るシーンとか普通に映画的に気持ちよくもある。

一方、映画としては運び屋に引き続きこれまたロードムービーで、それ自体はテンポも悪くないし、無力感に突き落とされる農園のシーンや指さす方向の庭の中に立っているトイレのシーンや、翡翠のシーンなどなかなか良いし、音楽はおもしろいし、何気なく(その前にはいろいろあるわけだが)立ち寄ったバーのピアノを演奏するシーンなど気に入ったが、いかんせん終盤があまりによくない。

また警察がやって来たと思ったら親切だったというのは良いとして、観ながら、この作品はラストが作りようがないのではないかという疑念が渦巻く。史実を利用するとそういうことはある。現実はフェードインフェードアウトの連続なのでかっちり終わらせるのは至難だ。

想像したのは、独りに返って、兄への手紙を書き始める、というものだが、まあ紋切り型だからそれはないだろうなとも想像はつく。だとすればどう終わらせるんだろう?

一緒に家に入るのか? と思ったが、それは大家族のクリスマスパーティーという絵にはそぐわない。実際、カーネギーホールの上の部屋に戻り、召使いに帰宅をうながす。ここまでは他に選択はないからまあ良いのではなかろうか。

一方、水道工事の連中が口をつけたというだけでコップをゴミ箱に捨てた同じ人間が、ニガーという言葉に反応してたしなめるというのもそりゃそうだろうと思いながら観ているのだが(全体反対、個別賛成が高じて全体に対しても考えが変わるというのは、本当に普遍的だな)どう考えても終わらせようがないままずるずると進むのだろうか?

そうしたら、質屋夫婦で1クッション置いた後に、予想される一番どうでも良い終わらせ方になりつつあり、そうはいっても、他に選択肢もないしそれほどは悪くもないかなしょうがないかもとか思っていたら、なんとイタリアンママは何でも知っているというすさまじくくだらないオチを付けて終わらせたのには呆れた。

でも、そのあとで小鬼の饗宴のオルフェウスのジャケットを見せてくれたから良しとする。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|

ジェズイットを見習え