読者です 読者をやめる 読者になる 読者になる

六月の開発局

「業界の人」じゃないよ

なにも変わらない

北海道新幹線についての記事を書き

アニメを作り


THE NAME OF THE HEROINE PV1

シン・ゴジラの感想を書いたら評判になり

toyozumikouichi.hatenablog.jp

コミケで同人誌を頒布し

toyozumikouichi.hatenablog.jp

昔作っていて座礁した映画をひとまとめにして新しい映画に仕立て上げて

ビームを放ってビルをぶった斬り

それを米子映画事変に持っていき、とてつもない人たちに見てもらい

toyozumikouichi.hatenablog.jp

セイバーの絵が上手く描けたと思ったら

セイバー by 104 on pixiv

宇宙船に自分の作品が掲載されていることに気づき

(いまのところアフィじゃない)

今日もコミケで同人誌を「知り合いに」頒布して

帰ってきた。

また明日もいつもと変わらず、何か作っているのだろう。

期待されていないのだな、と最後の最後に思い知らされたけど、期待されているように錯覚していたのが年を跨がなくて良かったとも言える。

ところで砲雷撃戦、こ-02と書いてあって、なんか僕の誕生日は1月22日だったみたいだ……

響け!ユーフォニアム2(1期も)感想など

はじめに

響け!ユーフォニアム2が最終回を迎えた。毎週楽しませてもらった。正直なところを言えば、1期よりは数段僕好みではなかった、よくわからなかったな、という印象だ。

ときどき「ユーフォニアム2は1期みたいなスポ根でなくなってしまった」というような話を見ていて、うーんと、それはちょっと違うんじゃないかなあと思う。

じゃあ自分はどう捉えているのだろうということをつらつら書く。

少し注意書きを書いておくと、僕は、テレビで放送された本編しか見ていない。それから、業界の人ではないので、用語を間違って使っていると思う。ただ、脚本という言葉は意図して使っていない。脚本=お話だと思っていないし、脚本家が話についての全権を握っているとも思っていないからだ。

最大の特徴

響け!ユーフォニアムはめずらしい音楽、というより「プレイ」アニメだった。音楽でなく「プレイ」としたのは、スポーツ物も同様だからだ。

この手の音楽物はいくつかあるが、よくある演出手法として「演奏ポエム」「コンクールブラボー」がある。どちらも自分で思いついたので、多分一般的な言葉ではない。

演奏ポエムというのは、演奏シーンになると、登場人物が突然ポエムをモノローグで語りはじめて、その演奏の素晴らしさを力説する手法で、コンクールブラボーというのは、コンクールのシーンで観客が立ち上がってブラボーと叫び、訳知り顔の登場人物が「コンクールなのにこの熱狂…!」と演奏者の技量を演出する手法である。

これら手法の良いところは、実際に演奏の優劣を描かずともキャラクタの技量を描き出すことができるということは明らかだが、映像作品であるならば、ぜひ演奏で示してもらいたいと思うものである。ところが、その実現はどう考えても難しい。だから、音楽アニメもスポーツアニメも、ポエムに頼るか、極端な技倆の差を描くことになる。

しかし、ユーフォニアム1期はその難題をやってのけた。「高校生ならなかなか上手い中世古香織」と「圧倒的に上手い高坂麗奈」の対立だけでなく、「高校生ならなかなか上手い中世古香織がいくつかの問題を修正し、高坂麗奈を追撃する様」まで、演奏によってのみ描いてみせた。もちろん、ヒロイン黄前久美子も、技巧的な部分で演奏から降ろされるという厳しい状況に直面する場面で、田中あすかとの些細な、しかし確実な技術力の差を認識させられた。響け!ユーフォニアムの一つの特徴は、この「音楽と真正面から勝負した」ということにある。

お話の堅さ

しかし、隙のない手堅いお話について見逃してはいけない。演奏が特徴なら、お話の堅さは土台となった。

まず、主人公にとっての課題が示されるが、これはやりたいことが見つからない、という定番である。 で、なんとなく高校生になった久美子は友達と出会い、部活見学に行き、基本的な講義を受け、また行う。部活ものの定番展開である。 それが済むと、今度は滝が現れ、久美子の課題を再度認識させる。そして「上手くなければ生き残れない」の原則を提示する。 続いて首の皮の繋がった吹奏楽部は、サンフェスで上手くなったご褒美としての勝利を満喫する。 さらに、初心者の葉月が合奏したことないのでつまらない、というわかりやすい話から、好きになる、というもう一つのキーワードを提示する。 「自分はどうしたいか」「上手くなければ生き残れない」「何が好きか」これが響け!ユーフォニアムの三大主題である、と前半を使って描ききっている。

それからは、葵が「上手くなければ生き残れない」の原則で脱落し、葉月が「何が好きか」を示し、大吉山で「自分はどうしたいか」が再度取り上げられ、オーディションでは改めて「上手くなければ生き残れない」と「自分はコンクールで吹きたい」が示され、その間に吉川優子が「香織先輩が好きだ」とか麗奈が「滝先生が好きだ」という気持ちを強く出し、滝が非情な決断を下し、さらにそこに救いの手を差し伸べることで、久美子は「自分はユーフォニアムが好きで、演奏したい。だから、上手くなって生き残りたい」と結論を出して、あとはご褒美で終わりだ。

実に手堅いお話で、それが響け!ユーフォニアムの良さだ。お話には様々な要素があるが、その多くが「あ、わかるわかる」とか「これが好きなら、もしくは嫌いなら、そうなるだろうね」というものでできている。感情移入がしやすいし、お話に違和感がないから納得して進んでいける。対立する場面においても対立する両者の気持ちにそれなりの感情移入ができるから、そこに現実感が生まれるわけだ。

また、次はどうなるか、というところに、例えば「麗奈がソロに選ばれる」とか「わたしね、滝先生が好きなの」みたいな「予定内の驚き」はあるのだけれど、突然吉川優子が出刃庖丁を持ち出して麗奈を刺突したりはしない、安定感がある。予定調和の良さがある。

さらに、同時にさりげなく常に「強大な敵に立ち向かう久美子」という構図を入れている。それから、物語の中心メンバでない、準レギュラでもない葉月やみどり以外のキャラクタが吹奏楽部に社会を描き出していたことも忘れてはいけない。

くわえて、滝を中心とした「無言のお話」が、明快にその下支えをしてきたことも重要だ。滝について言うなら、初登場時点で大吉山北中学校の地獄のオルフェを確認している。その後、中世古や吉川の実力を確認し、トランペットパート全体と信頼できる高坂の能力を最大限に活かせる三日月の舞を選曲したことは想像に難くない。オーボエに鎧塚がいたこと、あまりやる気のないホルン隊を「ホルンがかっこいい曲」でおだてて仕事をさせること、ユーフォニアムに名手田中あすかがいたことは、彼の選択を決定したものと思われる。

十分に世界観の性質の中で流れを収める選択をしていて、そこには「下手くそだった北宇治が府大会で金賞をもらって関西大会出場を決めました」という「ストーリィ」、「何をしたいかわからなかった黄前久美子が、何をしたいかわかりました」という「ドラマ」、そして「適当にやって思い出が作れる」から「一生懸命がんばってよい結果を出すと思い出が残せる」に変わる、言うなれば始まりがあって終わりがある「物語」がある。

この三点セットがしっかりあるお話つまり文芸を、高い作画、演技、演奏そのほか諸々の技術が支えた。つまり、映像作品、総合芸術としてやるべきことをやった、それが、響け!ユーフォニアムだったと僕はみている。

1期と2期の大きな違い

で、ユーフォニアム1期と2期の違いは、これらのうち、文芸の変化であることは明らかであるので、どう変化したか、ということを記していこう。

その変化の要点は3つで、1.問題に共感を得られる人の数が減った、これが大きく、小さなものとして2.久美子が強い立場になった、3.問題を冷めた目で見ている人間がいなくなった、だと思っている。

1期と2期の最大の違いは、久美子が出会う問題が、共感を得難いものになったということだ。

葉月が合奏したことないから音楽が楽しくない、という話は、まあ「そりゃ基礎練ばっかなら初心者は飽きるわな」となって、共感できない人は少ないだろう。「去年は下手くそな3年生がソロやってて、今年は下手じゃない自分が3年なんだからソロできると思ってたら1年に持ってかれたくやしい」というのも、多くの人が共感できると思うし、「私の方が上手いんだからソロ吹きたい」もわかると思う。

一方、「大好きな友達にキツイこと言われたから話しかけられると逃げたくなっちゃうんです」、と言われたら「は?」と思う人はそう少なくないのではないか。僕なら、好きな女の子にキツイことを言われたことは何度もあるが、それは「豊住キモい近づくな話しかけんな死ね」みたいな内容だし、そのあと話しかけられても尻尾振って喜んでいた。アホである。でも、高校生の好きってそう言うものでは?と思う。なお「そういう」趣味はない。

ところが、鎧塚はそうではない。それなのに、16にもなって黙って走り出して逃げました、という話を見たら「なに"ぶってる"の?」としか僕は思わない。

「記憶にないオヤジだけど、自分の演奏を聴いて欲しいからいろいろやったけど、おかんがうっさいのでもーいーです」と言われて「お前に何度も頭下げた傘木に詫び入れんかコラァ」とまでは思わなくてもちょっと違和感感じることはあるのではないか。僕でも言わないが、陰口は盛大に叩くだろう。いや、言っただろうな、多分。

「うぜえ、家からすでに出て行っており、たまに帰ってくる姉貴だけど、本格的に引っ越したら電車の中で泣くほど寂しいです」と言われても「大変だねぇ(棒」となる人はいそうだし、僕はそうだ。

同様に「好きな先生の元奥様が死んでるから墓を見に行きたいです」と言われて「わかるよその気持ち!!」となる人は珍しいのではないか。

「いやいや、久美子が麻美子のことを想っていることは丁寧に描いてあったじゃないか」という人はいると思う。が、それが「感想」だ。正しい、間違いではない。伝わる、伝わらないの問題なのだ。そこについて作り手は、諦めるしかない。シン・ゴジラのときもいたし「あのシーンの痛みがわからない奴は人でなし」みたいに言う奴もいた。はっきり言って、どうかしていると思う。

少数派から多数派への変化と社会描写の消失

話を元に戻そう。次に、久美子は1期において、概ね少数派であった。初登場シーンでは、みんなが大きく喜んでいるところで、一人だけ麗奈を上から目線で見ていて「よかったね」なんて声をかけている。

滝が着任すると、久美子は「手を挙げなかったずるい子」であり、ここでも少数である。この後久美子は「真面目に練習する派」「麗奈の味方」「2人しかいないユーフォニアムでダメ出しを食らった方の1人」と、少数派の道を歩き続ける。

ところが2期における久美子は大衆の尖兵、最も危険な領域に単身切り込み解決を要求される、特殊部隊隊員か007の立場となる。巨大な力を背景に、異端児を更正させる立場が主になるのだ。みぞれに対しても、あすかについても、麗奈についてもだ。

そして、些細に見えるが大きな違いとして、久美子が取り組む問題について冷めている人間をはじめとした周囲の描写が弱い。1期の場合、例えばあすかは、誰がソロかに「心の底からどうでもいい」立場だった。そしてそれについて晴香は「1人でやるしかねーぞ」と自分の立場を持っていた。さらにあまり焦点を合わせてもらえないキャラクタ達が、滝の悩みや立場を描き出すことを支えてくれていた。

これらは「本人達にとっては大問題だけど、まわりにとっては」というある意味社会の恐ろしさを描くために必要であり、それがあるからこそ、久美子の「周りが、ではなくて、自分がどうしたいか」という主題を強く描けていた。

ところが、2期は描くべき内容がわかりづらいものになったが故に、その説明のための描写を強化する必要があり、部活の社会を描写することができなくなり、結果として「巨大な組織を背景にした強者の久美子」を支えてしまった。まさに物言わぬ大衆として、1期で久美子が立ち向かった麗奈の敵を、今度は背景にすることを、支えてしまったのだ。

特殊なお話の良さと高坂麗奈

じゃあ、その違いは「ダメだったのか」というとそうではない。究極的には良し悪しの話ではない。好き嫌いの話だ。

響け!ユーフォニアム2のお話は、一期よりも一般的なものではないだと思う。つまり、特殊だ。だから、その特殊さに合えば、一期よりも良いと評価する人も出て来て当然だ。その逆もあり得る。

僕の場合、鎧塚みぞれの気持ちは理解できない。田中あすかや黄前麻美子に対する黄前久美子の気持ちもわからない。だから、感情移入できないし、現実感を感じられない。したがって、お話を楽しめない。特に、最終話なんか「なんでここまであすかに久美子は執着するの?」と思ったし、そうなので「この役員決めのシーンも、秀一のシーンも、追い出し会のシーンもいらなくない?というか2期の秀一はなんのために出て来たの?」と思ってしまい「果てた」という印象が強く残ってしまった。特殊化が悪く出た一例だ。

けれども、それまでの話に比べて軽いという評も見かけたが、僕は、高坂麗奈の気持ちがよくわかる。だから、彼女のお話には共感できたし、一期の彼女の気持ちもわかったが、二期の彼女の気持ちはもっとよくわかるので、彼女がもっと好きになった。一期の彼女は「好きなタイプのアニメキャラ」だったが、二期の彼女は「可愛い女の子」になった。

好きな人にかつて伴侶がいた、ということは、今の自分にとっては実は大した問題ではない。それなのに、そのことを知らなかったことがまるで決定的な問題であるように誤認してしまい、その誤認を誤認だと理解しているはずなのに動揺してしまう。「ヤバいぐらい動揺して」というあの台詞を、「え、今の麗奈に関係ないでしょ」と思う人の気持ちはよくわかる。「奥さんもう、いないんだよ」。その通りだ。

けれども、僕はその動揺がわかる。だから、麗奈の話が一番おもしろかった。繰り返すが、わかるから偉い、わからないから間違っているという問題ではない。そういうものなのだ。

墓石を見に言ったところで何かが変わるわけではない。けれども、自分の向き合わなければいけないつらい現実を少しでも惨めに受け止めないために、あの行動を選ぶその気持ちを想像できるし、静まり返ったホールでプライマコードのように神経が発火し、情動に突き動かされて思いの丈を叫び伝えてしまう、その恐怖を知っている。そして一度初めてしまった戦いの決着を知りたいと、泥沼に足を踏み入れていってしまう衝動もわかっている。だから僕は麗奈が特別に好きだ。

他の観客を置いてきぼりにしていたとしても、それは僕にとって、つまり鎧塚みぞれや田中あすかや黄前麻美子にまつわる黄前久美子のお話に共感した人たちにとっても素晴らしいもので、一期の手堅い文芸との間に、客観的な優劣をつけられるものではない。

優劣をつけられるものではないけれど

一般的な1作目と特殊な2作目、という組み合わせは珍しいものではなく、例えば、機動警察パトレイバー the Movie平成ガメラ三部作、魔法少女まどかマギカのテレビシリーズと叛逆の物語などが該当する。そして、一般的だからといって必ずしも一般的な作品の多数決の評価が、概ね高いとは言えないことが、平成ガメラ三部作からは言えるだろう。また、一般的なお話を再演しつつ、お話の部分は手早く簡単に済ませ、観客が期待している部分を徹底的に描いて評価を獲得した劇場版ガールズ&パンツァーのような作品もある。

では、個人的な想いを置いて、響け!ユーフォニアム2の文芸は欠くところがなかったのか、と訊かれれば、残念ながら「いや、あの四つのストーリィを維持しつつ一般的なドラマを入れる手はあるよ」と僕は言うだろう。心からそう思っているからだ。

とくに、何度か目にした「一つ一つの話がぶつ切り」という評判はやりようがある、と思っている。元々一期がスポ根ものだった、と言う人が、一体何を指してスポ根ものと言っているかわかる気もするので、そこについても、こうすりゃそうなったんじゃない、みたいなのは、わかる。

じゃあそれをどうやったらいいのか、と言う話なのだけれど、まあ実はあんまり書きたくない。それに、「プロの仕事(パターソンジェスチャ)」に「素人(同じく)」があまり大きな口を叩くべきとも思わない。それに、多分作った人たちは、僕が気づかない、何かやりたいことがあってだからそうしたのだと本当に思っている。それが伝わっていないのは、前述の通り諦めるしかない。でも、だからといって、それを無視して外野が「こうすべきだった」と素面で、真面目に、強くいうのも野暮だ。

したがって「生中二杯後」のニュアンスがわからない人や、そういうつもりで読んでいない人はこの先を読むべきではない。本来なら呑みながら話す内容だが、元々友達が少ない上にユーフォニアムを見ている奴はもっと少ないので話し相手がいないのだ。

例えばの話

一期も一つ一つの話はしっかり区切られている。入学と入部、方針決定、滝による指導、サンフェス、葉月の話、葵脱落、あがた祭、オーディション、再オーディション、久美子の話、となっている。それが「ぶつ切りになっている」という印象を受けないのは、「受け入れやすい自然な話の流れ」があるからで、それは誰もが知っているといえる4月から始まる部活の一般的な日程である。部活の日程に乗っているから、話が全体で流れているように感じるのだ。

ところが2期になるとあとは大会を突破していくだけなので練習するだけである。オーディションも終わっている。日程に起伏がない。もう前の手は使えないのだ。ではどうやって大きな話の流れを作るのか。

一つの手は、マルチスレッド作戦、いわゆる群像劇である。それぞれはぶつ切りの話を同時並行させ、切り替えていくことで「小さなぶつ切りの話たくさん」を「大きな一つのお話」に誤認させる方法である。ところが、響け!ユーフォニアムの場合、基本的に黄前久美子の視点で描かなくてはいけないのでこの手法が使えない。

だから、ちょっと変えて、前の問題が解決する前に次の問題を起こして、問題を同時進行させてやればよい。こうすることで「どの問題を先に解決するか」という久美子の悩みが現れて、久美子が強くなりすぎた印象を抑えることができる。

具体的にはどうするかというと、田中を早い段階で部活から退場させればいいのだ。そうなると、音量の問題が早期に出現して中川を昇格させなくてはいけなくなる。

すると、オーディションで落とされた他のメンバが不満を持つことを描写できる。さらに、傘木の復帰をあすかが握る違和感を引き起こすことができる。ここであすかが傘木の復帰を否定することで、自らの復帰を狙っている伏線を張れる。

田中が模試で好成績を納めて、復帰という体勢になると、技術が低下していることを確認され、今度は元の技量がある田中をとるか、今調子を伸ばして来た中川をとるか、という話にできて、久美子の葛藤を引き起こせる。さらに滝としては完全に初期のプランが狂っているし、中川の下克上はオーディション脱落組にさらに不穏な動きを起こさせることができるだろう。あすか派の中世古も自分対あすかの対立に、当然小笠原も思い悩むはずだ。

ここで麗奈を滝の側につかせて、久美子の優柔不断さを責めさせることによって、さらなるドラマを作り出すこともできる。この混乱によりコンクールが楽しいものでなくなるし、久美子自身があすかか中川のどちらかを見捨てなければならなくなるので、傘木の話に説得力が出る。自分がやりたいことを後になって蒸し返すということで中川と麻美子が連立し、あすか自身やあすかへの久美子の思いも温存でき、麗奈の話も影響なく進め、かつ、1期のスポ根と称された性質も実現できるのではないかと思う。

でも、そうはしなかったのが、作り手の選択で、それが尊重されるべきだとも思うのだ。

最後に

僕は、良い作品とは、終わった後いろいろ話せる作品だと思っている。だから、響け!ユーフォニアム2はこんなに書けたので、いい作品だったと思っている。3ヶ月間楽しませてもらった。これからも、作品を見て感じたことを、Twitterにも、ここにも、書いていくつもりだ。もちろん、自分もそういう作品を作っていきたいと思っている。

作画工程のためのCommon Lispによる低脳画像処理

まえがき

アニメを作っている。ものすごくたくさんの絵を描かなければいけないので、いろいろと問題が起きるし、手間も減らしたい。絵の描けない素人が嘘をつくためにアニメを作る でも一部紹介したが、今回は最近の成果を紹介する。

FILMASSEMBLERのページに載せるには、まだ熟れていないので、こちらに書く。

課題3つ

課題その1: 中割の作業見積もりをより正確にしたい

アニメと言われて大抵の人が想像する描き送りのアニメは、ちょっとずつ違った絵をたくさん描かなくてはいけない。もちろん量が多ければ作画時間は伸びるから、締切にも関わってくる。どれぐらいの量でどれぐらいの時間になるかわかると、「これは間に合いそうにないから欠番にしよう」とか「これはちょっと動きを減らしてやれば何時間で終わりそうだ」とかわかって便利だ。

しかし、いろいろ難しいので、とりあえず中割の作業時間の見積もりに挑戦することにした。中割り、といきなり言われても困ると思うので、例を示す。ここに二枚の絵がある。 

f:id:TOYOZUMIKouichi:20161226065528p:plain

f:id:TOYOZUMIKouichi:20161226065602p:plain

片方は目を開けていて、片方は目を閉じている。この二枚を切り替えるだけのアニメートは瞼が一瞬で動いて気色悪いので、間に目が半開きの絵を挿したい。この絵が中割だ。プロがどう呼んでいるかはよく知らない。僕はそう呼んでいる。

f:id:TOYOZUMIKouichi:20161226065613p:plain

この場合は二枚の原画に対して(正確にはこれはすべて動画だが今のところ無視する)、一枚の中割が入っている。だからこの作業時間を1と見積もることにしたとする。

さて、別のカットからも原画を例示する。なお、ものすごく線が荒れているが、それは気にしなくて良い。説明すると長いし、本題ではない。簡単に言うと下手くそだからだ。

f:id:TOYOZUMIKouichi:20161226065548p:plain

f:id:TOYOZUMIKouichi:20161226065545p:plain

この2枚の間にも中割りを1枚入れたい。こんな絵が入る予定だ。

f:id:TOYOZUMIKouichi:20161226065543p:plain

入れる絵は1枚だから作業量は1で、総合の作業時間見積もりは2である。んなバカな話があるか。どう考えたって後者のほうが大変にきまっている。こんなんで正確な作業時間の見積もりなんかできっこないのである。これが改善したい課題その1。

課題その2: 線をより滑らかにしたい

前掲の。絵の描けない素人が嘘をつくためにアニメを作る では彩色工程の効率向上のために、線を2値化するためにMayakaを使ったプログラムによる処理を行った。

が、やはりこの手法、線がはっきりしすぎて気に入らない。まったく絵の印象が変わってしまうのだ。例えば次に示す線で領域を分けたときのことを考える。

f:id:TOYOZUMIKouichi:20161226065534p:plain

線を2値化して色を塗るとこうなる。

f:id:TOYOZUMIKouichi:20161226065536p:plain

 2値化しなければこうだ。 

f:id:TOYOZUMIKouichi:20161226065539p:plain

明らかに後者のほうが元の線の質を保てている。同時に僕の線の品質の悪さも見事に再現しているが、絶対後者の方がいい。

課題その3:塗色効率を向上させたい

前も書いたが、流し込みペイントツールによる塗色はコツがいろいろあり、線を2値化しなければとても面倒で、2値化しても面倒なのだ。次に示すように、順番に気を使って、レイヤの表示非表示を切り替えて正しい順序で行わなければならない。

f:id:TOYOZUMIKouichi:20161226065522g:plain

自動領域分割による3つの課題の改善

まず、課題1を考えたい。2つの例における中割の難易度の違いは、補間すべき2枚の画像の変化が違う、と言える。しかし、変化が非常に大きくても、例えば単純な平面の回転運動であれば、前後どちらかの画像を回転させて作画参考にすればよいわけだし、拡縮処理でも同様である。したがって「中割りの難易度が高い変化の違い」をコンピュータにわからせやすい形に落とし込めれば、より見積もりの精度が高まると言える。

課題2は単純な画像処理の問題だが、課題3が課題2の実行を阻んでいるため、課題3を解決するためにはどうしたらよいかを考える。しかしそれが簡単にはわからないから手作業で塗っていたわけだ。では手作業で塗っているときにどんなことをしているか考える。

まず僕は、1.先行して塗色すべき対象領域を判断する。続いて、そこに2.どのチャネルの塗り分け線を有効化して塗色すべきか判断する。次に、3.塗色に用する色を選択する。最後に、4.どこからバケツツールを発動すべきかを判断する。

この時機械が苦手な「判断」は3回入っている。この判断をなきものにすることで、自動化への道が拓ける。それは課題3を解決に近づけ、ひいては課題2を実現させる。

1.と2.の判断は「どの順番で塗るか」が結果を変えてしまうから起きていることだ。であるならば、「プログラムを書いて順番を固定する」か「順番に関係なく結果を確定する手順を用意する」ことで解決する。3.を機械に判断させようとすると地獄を見るのであきらめる。4.も3.と密接に関わっているので無視する。要は「領域で分けられた部分が求める品質の境界処理で別の色で塗色される」という状態を自動化してやり、「別の色」が何であるかさえ人間が渡すようにすれば、課題2および3は改善されるわけだ。

これにより副産物として「誰かに作業を任せやすくなる」という利点が発生する。塗り間違えはしかたないが、どこにどの色を塗るかさえ正しければいいので、作業が楽になるのだ。ミスもわかりやすいものになる。機械でやる利点の一つは人間の判断領域を局限できる、ということだ。将来役に立つだろう。

課題2と3の解決には「領域で分けられた部分」を機械が認識する必要があるが、これにより課題1も解決に少し向かうのではないかと考えられる。2つの中割の例の変化の違いは「画像中の部分領域の数と面積比の変化の大きさ」と言えるからだ。単純な平面の回転や拡縮処理であれば、領域の数や面積比は大きく変化しない。

一応書いておくと、こんなことプロ用のソフトやどうかするとクリスタでもできるのかもしれないが、自分で書いておくと、あとで便利そうなのでやってみているだけだ。そもそもいらないのかもしれない。まあ、よい。

念の為に書いておくが、目標は解決ではない。改善だ。少しでも楽にしたい。もちろん、解決すればそれに越したことはない。

塗り分けを自動化する

さて、塗り分けを自動化しなければならない。実に面倒である。何か有名なアルゴリズムがあるのかもしれないが、調べるのも面倒だし、どうせわけのわからない数式を並べ立てていて読めない可能性が高い。「微分して」と書いてあったので心して読んだら、単純な四則演算の組み合わせで済んだ、みたいなことが何度もあった。バイキュービック補間をなぜ出力画像基準で説明しないのかとキレた記憶もある。今まで散々苦労してきたので、付き合っている余裕はない。

適当にでっち上げることにしよう。まあ、低脳画像処理なので、バカバカしいほど単純なアルゴリズムを積み重ねていく富豪プログラミングを行いつつ、それで失う時間を単純な最適化で補うことを組み合わせて問題の解決にあたるとしよう。

いきなり巨大な画像を入力に使うと、デバッグに破綻をきたすので、簡単な小さい画像を用意する。

f:id:TOYOZUMIKouichi:20161226065531p:plain

背景は透明で、周囲に最低1ピクセルの空きを用意して、目を描いた。

これの領域を分割するために、まず線の色を表した符号を定義しておく。

(defconstant +l-line+ 0)
(defconstant +r-line+ 1)
(defconstant +g-line+ 2)
(defconstant +b-line+ 3)

これがどう作用するかは、見ていけばわかる。

続いて、愚直な処理を行う関数region-map-from-imageとそれらが利用する型とユーティリティを書こう。構造体にしても良かったのだが、それはまたあとで。

(deftype region-map () "画素がどの領域に所属するかを定めた領域マップ" '(simple-array fixnum (* *)))

(defunsafe make-region-map region-map ((fixnum width height))
  (make-array (list width height) :element-type 'fixnum :initial-element -1))

(defunsafe region-map-from-pixels (region-map fixnum list) ((pixels pixels) (fixnum width height))
  "PIXELSから領域マップを生成し、領域マップ、必要な色数、を多値として返す。 "
  (typed-let (;; 領域マップ
              ((region-map region-map) (make-region-map width height))
              ;; 現在の領域番号
              ((fixnum current-region-number) (1+ +b-line+))
              ;; 線を超えているか判定
              ((boolean over-the-line) nil))
    ;; 色の塗り分けを記録
    (loop for y fixnum from 0 below height
          ;; 列更新によって線を超えていると判断=新領域である(画像右端の領域が左端に続いているとは判断しない)
          do (setq over-the-line t)
          do (loop for x fixnum from 0 below width
                   do (typed-multiple-value-bind ((component-t r g b a)) (pixels-components pixels (offset x y width))
                        ;; 画素成分値束縛
                        (when (and (> a -@) (> @ (min r g b)))
                          ;; 線を超えた時はそれをフラグで保持する
                          (setq over-the-line t))
                        (typed-let1 component-t brightness (rgb->brightness r g b)
                          ;; 線は線を領域マップに登録
                          ;; 線以外の領域は現在の領域番号を領域マップに登録
                          (cond ((and (> r (* @ 0.75)) (> a -@) (> r g) (> r b)) ;; 赤の塗り分け線
                                 (setf (aref region-map x y) +r-line+))
                                ((and (> g (* @ 0.75)) (> a -@) (> g b) (> g r)) ;; 緑の塗り分け線
                                 (setf (aref region-map x y) +g-line+))
                                ((and (> b (* @ 0.75)) (> a -@) (> b g) (> b r)) ;; 青の塗り分け線
                                 (setf (aref region-map x y) +b-line+))
                                ((and (> a -@)
                                      (> @ brightness)) ;; 主線
                                 (setf (aref region-map x y) +l-line+))
                                (t (when over-the-line
                                   ;; 境界線を超えたあとなら領域番号を更新せよ
                                   (setq over-the-line nil)
                                   (setq current-region-number (1+ current-region-number)))
                                 (setf (aref region-map x y) current-region-number)))
                          ))))
    (values region-map current-region-number)))

出力はないので、多値である返り値の一つ目、領域マップと呼ぶことにしようregion-mapダンプする関数dump-region-mapを書く。

(defunsafe dump-region-map boolean ((region-map region-map) ((fixnum width height)))
  (loop for y fixnum from 0 below height
        do (format t "~%")
        do (loop for x fixnum from 0 below width
                 do (format t "~2,D~T" (aref region-map x y))))
  t)

これで結果を次に示すコードで見てみる。

(let1 image (load-image “/path/to/image”)
  (bind-width-and-height image (width height)
    (typed-let1 pixels src-pixels (image-pixels image)
      ;; 画像から領域マップを作成する。
      (typed-multiple-value-bind ((region-map region-map) (fixnum number-of-colors))
          (region-map-from-pixels src-pixels width height)
        (declare (ignore number-of-colors))
        (dump-region-map region-map width height)))))

出力を以下に示す。

 5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
 6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6 
 7  7  7  7  0  0  0  0  0  8  8  8  8  8  8  8 
 9  9  9  0  0  0  0  0  0  0  0  0 10 10 10 10 
11 11  0  0  0  0 12  1  1  0  0  0  0 13 13 13 
14  0  0  0  0  0 15  1  1  0  0  0  0  0 16 16 
17  0  0  0  0 18  1  1  1  0  0  0  0  0 19 19 
20  0  0  0  0  1  1  1 21  0  0  0  0  0  0 22 
23 23 23  0  0  1  1  1 24  0  0  0  0  0  0 25 
26 26 26  0  0  1  1 27 27  0  0 28 28  0  0 29 
30 30 30  0  0  0 31 31  0  0  0 32 32  0  0 33 
34 34 34  0  0  0  0  0  0  0  0 35 35 35 35 35 
36 36 36 36  0  0  0  0  0  0 37 37 37 37 37 37 
38 38 38 38  0  0  0  0  0 39 39 39 39 39 39 39 
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 

すこし見づらいので、色付けした結果を示す。

5555555555555555
6666666666666666
7777000008888888
99900000000010101010
1111000012110000131313
14000001511000001616
17000018111000001919
2000001112100000022
232323001112400000025
262626001127270028280029
303030000313100032320033
343434000000003535353535
36363636000000373737373737
383838380000039393939393939
40404040404040404040404040404040
41414141414141414141414141414141

線の部分はきれいに領域が分けられているものの、見事に2値化されている。しかし、この時点では問題ない。線でない部分が、横方向には領域が正しくわけられているが、縦方向にはそうでないことがわかる。

縦方向に領域分割を適正化するために、そこで次に領域色マップと呼ぶ(今名前を考えた)ものをつくる。

(deftype region-color-map () "領域番号と色番号の対応を示す配列" '(simple-array fixnum (*)))
(defunsafe region-color-map-from-region-map list ((region-map region-map) (fixnum number-of-regions))
  "領域マップと領域の数から、各領域に該当する色番号の配列を返します"
  (typed-let (((fixnum width) (array-dimension region-map 0))
              ((fixnum height) (array-dimension region-map 1))
              ((fixnum region-color-map-length) (1+ number-of-regions)))
    (typed-let1 (simple-array fixnum (*)) region-color-map (make-array (list region-color-map-length) :element-type 'fixnum)
      ;; 領域色マップをまずは変化した色数分だけ
      (loop for index fixnum from 0 to number-of-regions do
        (setf (aref region-color-map index) index))
      ;; 隣接する色の参照先を統合
      (loop for y from (- height 2) downto 0 do
        (loop for x from (1- width) downto 0 do
          (typed-let (((fixnum bc) (aref region-map x (1+ y)))
                      ((fixnum cc) (aref region-map x y)))
            (typed-let (((fixnum cc0) (aref region-color-map cc))
                        ((fixnum bc0) (aref region-color-map bc)))
              (when (and (< +b-line+ cc)
                         (< +b-line+ bc)
                         (not (= cc0 bc0)))
                (setq number-of-regions (1+ number-of-regions))
                ;; この画素たちはどちらも線じゃないのに、領域色マップの参照番号は全然違うので一緒になるべき
                (loop for index fixnum from 0 below region-color-map-length
                      do (when (or (= (aref region-color-map index) cc0)
                                   (= (aref region-color-map index) bc0))
                           ;; 参照番号がどちらかに該当する色は全部新色である
                           (setf (aref region-color-map index) number-of-regions)))
                )))))
      region-color-map)))

region-color-map-from-region-mapの返り値をダンプした結果を次に示す。

#(0 1 2 3 4 74 74 74 74 74 74 74 67 74 74 67 74 74 18 74 74 60 74 74 60 74 74
60 74 74 74 60 74 74 74 74 74 74 74 74 74 74) 

これは領域マップのある位置において塗色すべき色番号を返す配列である。これを先ほどの結果に適用して可視化すれば何を意味しているかがわかるはずだ。領域マップを単純に結合していかなかったのは、単に面倒だからだ。

74747474747474747474747474747474
74747474747474747474747474747474
747474740000074747474747474
74747400000000074747474
7474000067110000747474
74000006711000007474
74000018111000007474
7400001116000000074
747474001116000000074
747474001160600074740074
747474000606000074740074
747474000000007474747474
74747474000000747474747474
747474740000074747474747474
74747474747474747474747474747474
74747474747474747474747474747474

これで領域を任意の色で塗り分けられることが明らかになった。この時点で課題1は改善可能と言える。

同じ領域色番号を用いている画素の数を数え上げてやれば画像ごとの領域の数や広さを割り出すことができる。副産物として、線の総延長も「だいたい」わかる。絶対的なものを割り出すのは難しかろうが、画像間で比較の用途に供するなら十分だ。より正確にと思うのなら、領域外縁部を輪郭追跡して行けばよかろう。

仮の色をつくる

色の指定が問題だが、後回しにする。ここでは領域色番号と色相を対応させるテーブルを生成して、当座を凌ぐことにする。

(defunsafe temp-color-list-from-region-color-map list ((region-color-map region-color-map))
  "領域色マップから仮の色相リストを作成して返します。"
  (declare ((simple-array fixnum (*)) region-color-map))
  (typed-let1 list colors '()
    ;; 重複する領域色番号を除去したリストを作成
    (loop for index fixnum from 0 below (array-dimension region-color-map 0)
          for color fixnum = (aref region-color-map index)
          do (unless (position color colors)
               (setq colors (cons color colors))
               ))
    ;; 隣り合う色同士が色相を8度ずつずらすように調整
    (loop for i fixnum from 0 below (length colors)
          for c in colors
          collect (cons c (* 8.0 (mod i 36)))
          )))

なお、色相とあるが、犯罪係数とは関係ない。この色相を用いて、彩度と輝度を最大値で塗色してやれば、とりあえずよかろうという判断だ。

当然45色しかないので、同じ色が偶然隣り合ってしまう可能性は非常に高いが、もしかすると4色で済むかもしれんとかいう話に展開しかねないし、まあ、なんとなく塗り分けられていることがわかればいいので、このまま行こう。結果を次に記す。

((60 . 0.0) (18 . 8.0) (67 . 16.0) (74 . 24.0) (4 . 32.0) (3 . 40.0) (2 . 48.0)
 (1 . 56.0) (0 . 64.0))

使用されていない領域色番号がいくつかあるが、これは塗り分け線のための予約番号である。

領域周辺を処理する

例の説明

さて、いよいよ本丸である。とりあえず簡単な例を元に話を進めよう。

ある入力画像における、座標Yを考える。例では、入力画像から幅11で部分を切り出した。ちょうど中心に一本の縦線がペンで入れられていたので、X方向の画素の並びは下に示すものとなった。なお、白色は透明色である。

x012345678910
入力画像

これをどう塗色していくかを考えていくわけだ。

領域は次に示す状態に分割された。

x012345678910
領域番号555 1 1 1 1 1 666

領域番号5には青を、同じく6には赤を塗色することとしよう。本来なら領域色マップと領域マップは別のものだが、便宜上一緒になってもらうことにした。

x012345678910
領域番号555 1 1 1 1 1 666

こういう、2列目と3列目が極端に色変化するのが2値化した状態なので、本来のペンのタッチを活かせばこうはならないはずである。

基本的な塗色

まずx=2までは愚直に青を塗っていけば良い。x=2まで処理を終えた状態を下に示す。

ポインタ
x012345678910
領域 555 1 1 1 1 1 666
入力画像
出力画像
previous-color
min-alpha

塗色プロセスにおいては、2つの状態管理変数が必要になる。まずprevious-colorだが、これにはx-1において塗色した色が基本的に格納される。現状青くなっているのはそのためだ。min-alphaについては後ほど説明する。

ペン領域への侵入

時間を進めて、x=3の処理を終えた状態を次に示す。

ポインタ
x012345678910
領域 555 1 1 1 1 1 666
入力画像
出力画像
previous-color
min-alpha

何を行ったか説明する。まず、ポインタの向き先がペン領域であることを判断した。つづいて、入力画素を取得し、その不透明度が最大値でなく半透明であることを判定した。これにより、この座標でのprevious-colorの更新は行わないことになった。続いて、previous-colorの画素に、入力画素を合成し、出力画像に書き込んだ。最後にmin-alphaを入力画素の不透明度で上書きした。

これをx=5まで終えた状態を次に示す。

ポインタ
x012345678910
領域 555 1 1 1 1 1 666
入力画像
出力画像
previous-color
min-alpha

ペン領域からの離脱

x=7まで処理を終えた状態を次に示す。

ポインタ
x012345678910
領域 555 1 1 1 1 1 666
入力画像
出力画像
previous-color
min-alpha

どうしてこうなったか説明する。min-blackと入力画素の不透明度を比較して、previous-colorの画素を入力画素に合成するか判断しているのである。こうしないと、向かった先の領域が違う色だったときに面倒なことになる。

順方向処理の完了

1列の処理を終えた状態を次に示す。

ポインタ
x012345678910
領域 555 1 1 1 1 1 666
入力画像
出力画像
previous-color
min-alpha

入力画素の不透明度が0になったので、previous-colorの記録が再開し、min-alphaがリセットされていったのでこのようになる。

逆方向の処理他

さらに、x=10からx=0まで処理を行い、この際は「出力画素と入力画素が一致した場合=愚直に線を出力している場合」のみ処理を適用するという条件を設けることで、望みの出力結果が得られる。

くわえて万全を期すため、Y軸方向への走査も逆転して行う。なお、容易に考えられる例外として「複数の線が不透明度0にならないほどの近距離で隣接している場合」が挙げられるがそんな高密度作画は過剰品質であるのでリテイクである。したがって問題ない。

以下にコードを示す。この関数を画像全体を走査しつつ呼べば良い。

(defunsafe paint-pixel (component-t component-t) ((fixnum x y width)
                                                  (pixels src-pixels dst-pixels)
                                                  (region-map region-map)
                                                  (region-color-map region-color-map)
                                                  (list colors)
                                                  (fixnum previous-color-number alpha-color-number)
                                                  (component-t min-alpha))
  (typed-let1 fixnum color-number (aref region-color-map (aref region-map x y))
    (when (= color-number alpha-color-number)
      ;; 外周色は彩色しない
      (set-pixels-components dst-pixels (offset x y width) -@ -@ -@ -@)
      (return-from paint-pixel (values color-number -@)))
    (typed-let1 fixnum offset (offset x y width)
      (typed-multiple-value-bind ((component-t r-src g-src b-src a-src)) (pixels-components src-pixels (offset x y width))
        (typed-multiple-value-bind ((component-t r-dst g-dst b-dst a-dst)) (pixels-components dst-pixels (offset x y width))
          (cond ((= color-number +l-line+)
                 ;; 主線
                 (when (or (= r-dst g-dst b-dst a-dst -@) ;; 完全に未彩色
                           (and (= r-src r-dst) (= g-src g-dst) (= b-src b-dst) (= a-src a-dst))) ;; 元画像からコピィしてきただけ
                   ;; 未彩色の場合のみ次の処理を実行
                   (if (> a-src min-alpha)
                       ;; より不透明度が下がるのであれば色を伸ばしてペンの実際の色と乗算合成する
                       (if (= previous-color-number alpha-color-number)
                           ;; 前の色が外周色であれば、合成を行わない
                           (set-pixels-components dst-pixels offset r-src g-src b-src a-src)
                           ;; 前の色が外周色以外であれば、合成する
                           (typed-multiple-value-bind ((component-t r-tmp b-tmp g-tmp))
                               (hsb->rgb (cdr (assoc previous-color-number colors)) @ @)
                             (typed-multiple-value-bind ((component-t r-rst b-rst g-rst a-rst))
                                 (c-compose-source-over r-tmp g-tmp b-tmp @ r-src g-src b-src a-src)
                               (set-pixels-components dst-pixels offset r-rst g-rst b-rst a-rst))))
                       (set-pixels-components dst-pixels offset r-src g-src b-src a-src)))
                 (values previous-color-number a-src))
                ((or (= color-number +r-line+) (= color-number +g-line+) (= color-number +b-line+))
                 (set-pixels-components dst-pixels offset -@ -@ -@ -@)
                 ;; 塗り分け線
                 (typed-multiple-value-bind ((component-t r-tmp g-tmp b-tmp))
                     (hsb->rgb (cdr (assoc previous-color-number colors)) @ @)
                   (typed-multiple-value-bind ((component-t r-rst g-rst b-rst a-rst))
                       (if (< a-src min-alpha)
                           ;; より不透明度が上がるのであれば色を伸ばしつつペンの不透明度を適用する。1.5は結果が半透明になることを防ぐ措置。
                           (c-compose-source-over r-dst g-dst b-dst a-dst r-tmp g-tmp b-tmp (* a-src 1.5))
                           ;; より不透明度が下がるのであれば色を伸ばしつつペンの不透明度を反転して適用する。
                           (c-compose-source-over r-dst g-dst b-dst a-dst r-tmp g-tmp b-tmp (* (invert-component a-src) 1.5)))
                     (set-pixels-components dst-pixels offset r-rst g-rst b-rst a-rst)))
                 (values previous-color-number a-src))
                (t
                 ;; ベタ塗り
                 (typed-multiple-value-bind ((component-t r0 g0 b0))
                     (hsb->rgb (cdr (assoc color-number colors)) @ @)
                   (set-pixels-components dst-pixels offset r0 g0 b0 @))
                 (values color-number 0.0))))))))

結果と評価

入力画像を次に示す。

f:id:TOYOZUMIKouichi:20161226065557p:plain

出力画像を次に示す。

f:id:TOYOZUMIKouichi:20161226065525p:plain

肌に色がないのは、外周として認識されているからである。もみあげの塗り分けが消失しているのは「偶然隣り合う色が一致してしまっただけ」である。また、エラーが幾つか確認できるが、概ね「豊住が動画線を引けないのが悪い」ので、改善可能である。些細なノイズなら握り潰すとか、やりかたは色々ある。

参考に、線を2値化して塗色した画像を次に示す。なお、塗り分け線の処理は面倒なのでしていない。

f:id:TOYOZUMIKouichi:20161226065552p:plain

こうして比べると、圧倒的に線の品質が向上したことがわかる。太さが元と変わりなく、また斜めの線も滑らかだ。線を繋いだところが不必要に強調されることもない。

色の指定

さて、勝手に割り当てた色で彩色すると、なかなかの結果が得られることがわかった。しかし、実用に供するためには、色を任意に指定できなくてはならない。しかし、これはそれほど難しい話ではないのだ。新たな入力画像を下に示す。耳を描き忘れているが気にしないように。

f:id:TOYOZUMIKouichi:20161226065513p:plain

まず、この画像から領域色マップを画像として出力する。結果を下に示す。

f:id:TOYOZUMIKouichi:20161226065506p:plain

この画像を元に各領域に彩色を行う。2値化されているので、塗り残しは下に示す画像のように、はっきりと認識できるだろう。実際には塗り分け線と領域色が一致しないようにすべきだが、今はテストなので目を瞑ろう。

f:id:TOYOZUMIKouichi:20161226065518p:plain

塗り終えた画像を下に示す。

f:id:TOYOZUMIKouichi:20161226065516p:plain

あとは、前述の塗色工程において塗る色をこの画像の同じ座標から取得してくれば良い。結果を下に示す。

f:id:TOYOZUMIKouichi:20161226065510p:plain

若干のノイズ、瑕疵は認められるものの、かなり良好な結果を得ていることがわかる。少しの細工を施せば、実用に耐える期待が持てる。

今後について

だいぶいい線行っているので運用でカバーしてしまっても良いのだが、まだ髪のハイライトなどやりたいことがあるのでもう少し続ける予定だ。小さな瑕疵も修正できたらしたい。

いくつかの問題は塗色工程が手続き的な状態依存の処理のため、左上から右下、右上から左下、という順序で塗っていることが原因だ。それらは、8倍の時間を消費し(といってもそれほどかからないし、放っておけばいいのだが)、8つの画像を比較暗合成することで解決する。例として2種類の結果を合成した結果を下に示す。

f:id:TOYOZUMIKouichi:20161226065500p:plain

目立つところとしては、こちらから見て右側の瞳内部の塗り漏れが潰れたことがわかるだろう。

Common LispとMayaka(KOMADORI)について

よく誤解されているが、Common Lisp関数型プログラミング言語ではない。このように入力と出力を単純に関係で表すことの難しいタイプのプログラム、つまり手続き的な処理も手軽に書くことができるし、それと関数型プログラミングの簡潔かつ明快な記述を柔軟に同居させることができる。とはいえ、手続き的な処理、前述の通り状態依存の反復などが入ってくると、見てくれの良いプログラムを書くのが難しくなる傾向にあると評価している。今後はこのあたりも直していけるとよい。

(loop for y fixnum from 0 below height
      do (loop for x fixnum from 0 below width
               do (typed-multiple-value-bind ((pixel-t painted-color) (component-t new-min-alpha))
                                             (paint-pixel x y width src-pixels col-pixels dst-pixels
                                                   region-map region-color-map previous-color alpha-color-number min-alpha)
                                             (setq previous-color painted-color)
                                             (setq min-alpha new-min-alpha))
               )
      do (loop for x fixnum from (1- width) downto 0
               do (typed-multiple-value-bind ((pixel-t painted-color) (component-t new-min-alpha))
                                             (paint-pixel x y width src-pixels col-pixels dst-pixels
                                                   region-map region-color-map previous-color alpha-color-number min-alpha)
                                             (setq previous-color painted-color)
                                             (setq min-alpha new-min-alpha))
               ))

お世辞にもきれいなプログラムとはいえないだろう。xyprevious-colorpainted-colorだけを残して部分適用して、という手も考えられるが、どのみちsetqは残る。なに?再帰だ?むずかしい話はやめてほしい。

なかなか面倒なことをしているように見えるが、それは僕のおつむがあんまりよろしくないからである。多分、頭のいい人ならもっと良い方法を思いつくだろう。とはいえ、文法が一つしかないので、僕でも実用的なプログラムを書けるのがCommon Lispのいいところだ。覚えることが少なくて済む。

僕はこういう画像処理の試行錯誤を行うために、Mayaka(KOMADORI)を作った。壁を殴るようにゴリゴリ書いて、結果を確認して、処理を修正するという反復を高速で繰り返せる環境が欲しかったのだ。Mayakaはなかなか速いので(たまにCより速い)、ちょっとバカっぽいプログラムを書いても、試行錯誤の邪魔をしない。ここに書いたこともさらっと書いているだけで、本当に作るのが大変だった。いろいろ迷って(もっとこうしたほうがいいんじゃないかとか)しまったし。

こんな感じで使える(この映像は演技)。

最近放置していた結果、最新のSBCLではとうとうコンパイルが通らなくなってしまったが、修正するつもり(手元では動いているが、SIMD関連を完全にキャンセルしている)。2月頭には作業時間を取りたい。

宣伝など

作っている自主アニメ「THE NAME OF THE HEROINE」の同人誌をコミケで出すのでよかったらお求めください。新刊は技術的な(とはいえコンピュータプログラミングに関する部分に限られていない)内容が中心。既刊の方がお話とかわかります。お話はとてもおもしろいよ。おもしろくなきゃ作らないから。

KINESISを修理した

KINESISが断線して、いい塩梅にケーブルをおいてやらないと、まじめに働かなくなった。

KINESISを知らない人のために説明すると、キーボードである。ものすごく高価で馬鹿馬鹿しい値段である。大統領選の開票速報とにらめっこしながら購入するようなものである。でかいので机の上で非常に邪魔で、まんなかに広いスペースがあるが、実はなんの意味もなくせいぜい好きなキャラのステッカーを貼り付けるぐらいにしか使えない。弦楽器のように中が広くて音が反響するため安っぽい音が響き渡り、おまけに静電容量無接点でもないからキータッチもまあそれなりなのだが、親指で使えるキーがとても多いのがいいところである。加えて本体にリマッパとマクロ機能が内蔵されていて、例えば、M-xなどを1キーに割り当てることができる。

それからおもしろいかたちをしているのでおしゃれだ。僕のは三年以上使っているのでばっちいが、ほんとうは白くてきれいである。

f:id:TOYOZUMIKouichi:20161119221710j:plain

さて、二台持っているKINESISの1台が断線してしまった。家用なので、事態は深刻である。このままだとコミケの原稿に差し支える。

だいぶ長いこと放置していたのである。

大方酷使しているキーボードから紐が出ているあたりが断線しているのだろうとはあたりをつけていたので、適用にちょん切って断線箇所を取っ払ってつなぎ直せばいいだろうと考えた。コンピュータから出ている紐をちょんぎるなんて、と思う人のために説明すると、USBというのは偉そうな名前がついているが、実態はコンピュータ同士が「赤上げて白下げた」みたいな2つの旗の上下をやりとりしているだけで、それはつまり電源のオンオフでしかないので、豆電球がついてるか消えてるかを見てるだけだから、切れてるところを適当によじれば動くようになるのだ。小学校三年生で習う領域だ。

さて、ちょん切ってみると、ずるずると赤と緑の糸が抜けた。なんと、内部の被覆まで本格的に断線していたのである。

どうせまた起きるのだから、紐を交換できるようにしようと思って、千石電商でUSBコネクタを買ってきてつけた。グルーガンでてきとうに。

f:id:TOYOZUMIKouichi:20161119221725j:plain

作業するときは適当なマルス券をしいて、万が一ハンダが落ちたときに回復不可能なことにならないようにするのがコツだ。あと、熱収縮チューブをつかって糸同士がぶつからないようにするといいかんじだと思う。

f:id:TOYOZUMIKouichi:20161119221722j:plain

ペダル用の線がなくなってしまったが、使っていないのでいらない。

f:id:TOYOZUMIKouichi:20161119221719j:plain

これを書けているのでおそらく直ったのだろう。よかったよかった。

結末を回避する技術 -第六次米子映画事変参戦記録-

はじめに

現地レポートはない。ご多分に漏れず僕の個人的な話。殆どは準備の話。

部活の肴化

最初に自主映画を撮影すると決めたのは2008年のThe Escape Velocityだから、もう8年前になる。そのとき集まった最初の4人のとき、僕はまだ監督どころか迷っていたので言ったことがある。「10年後に呑み屋でそういやあの頃は映画とか撮ってたよな、と笑い話にするならやらない」。

僕は学校の部活の大会とか合唱コンクールとかが大嫌いだった。その時は人生のすべてみたいなことを言い、脅し怒鳴り争いを引き起こし泣き喚くくせにどうせ卒業して何年かすればその話を酒の肴にしてしまう。好き好んで映画を撮るなどという馬鹿げた行為に臨むのにそんな茶番には付き合いたくなかった。

結末の回避

そういう現象が起こるのには心当たりがある。それはわかりやすい終わり、つまり、大会とか卒業とかが設定されていて、そこで「スパッと終えた」という威勢と見栄えのいい結末を用意できるので、無茶な辛さを許容できるし、それを武勇伝に変えることもできるからだ。続けていれば地味な辛さは延々と続くし、武勇伝にもならない。見栄えの悪い生き方を強要されることになる。

逆に言えば、僕の望みを達成するためには映画を作り続ける必要があり、大会や卒業を結末にしない策が必要になるわけだ。

初期の対応

今年の8月23日、押井守監督が米子映画事変で行われる3分映画宴の審査員長に就任すると知ったとき、押井監督の発言や作品をかなり参考にし、時にメールマガジンの読者投稿コーナで監督としてどうすべきかを尋ねている身として、当然参戦を検討した。そして決意があったわけだが、当然この争いは結末になり得る可能性があり、また僕をめぐる現状も結末の甘い香りを漂わせていたのでーー勤め人になって数年もすればどんどん脱落は激しくなるものだーー、強固な策が必要となった。もちろん現在進行形のTHE NAME OF THE HEROINEが存在し彼女たちが僕をつなぎとめているのだが、不安は確実に叩き潰す必要がある。

目標の策定

が、やることはさほど難しくない。ここを結末と設定せず、経過点と位置付けるだけである。第一目標を製作による技術開発とその獲得、第二目標を作品の完成、第三目標を映画祭への投入、第四目標を巨匠はもちろん田口監督、赤井監督、湯浅監督をはじめとする大勢に鑑賞していただくこと、第五目標を感想の獲得とした。

第一目標はFILMASSEMBLER、映画をMakeつまり作るのではなくAssemble組み立てる集団の使命である。芸術大学に勝つには自分たちの強み、つまり職人の手技を再現可能な技術に変え工業化することで発展につなげる我が出身大学の強みを生かすしかないのだと決めた名前がすべきことである。記事のネタ集めと言っていい。後日、FILMASSEMBLERのサイトに作品の製作記事などが掲載されるだろう。

第二目標は後述する完成しなかったたくさんの作品のことを思えば当然である。 第三目標は観客を集めるために四苦八苦し人生を切り売りしている我が身を思えば悲願である。 第四目標は力づくで獲得可能な地球上でも珍しい種類の幸運である。

受賞は「おまけ」扱いである。「無冠に終わったからそう言っているのだろう」と思うのなら「押井守の「世界の半分を怒らせる」。第65号」の「おたより(6)」を見れば良い。僕の投稿である。

そして、目標を細分化し、全体の抗堪性を保たないからこそ結末を迎えざる得なくなるのだ。完全勝利しか目指せない組織はやがて破滅を迎える。局所的勝利を積み重ねて生き残ることが重要である。そもそも未知の競争に臨むのに最強兵器を保有しているわけでもない身で勝利を目指そうというのが無謀である。はやぶさ小惑星探査機ではなく工学実験衛星であり、サンプルリターンはおまけに過ぎなかった。

初期の作品計画

これら裏側の問題の他に表側の問題、つまり残り一ヶ月強で作品を作れるかという大問題があった。繰り返すが勤め人になって数年もすれば撮影に臨もうという人間は極めて限られてくる。その時点で稼働が確保できない人材を戦闘単位と計算することは無謀以外の何者でもなく、従って僕は手持ちの映像資産の取り崩しを決断した。

最初の作戦は予告編作戦、A計画である。自主映画にありがちな予告編作戦は3分で技術を誇示するために極めて単純明快かつ効果的であり、簡単な作戦である。ところがこのA計画には致命的な欠陥がある。自主映画でありがち、つまり他の人間がやる可能性が高いのである。大学入学当時、後に所属研究室となる研究室のボスであるその教授に「同じことをやる人間は2人いらないんだ」と言われている以上、この計画は最低最悪の計画で、とりあえず脇に置くことにした。

B計画は宙に浮いている作品、2012年撮影のEnterpriseのダレ場を再編集して3分に収め送り込むことである。この作品はダレ場にこそ真実があるので、それだけで作品を成立させることには何の問題もない。映像は極めて美しく、1080pで4:2:0撮影だが困難な合成処理もなく、おまけに提出形式がDVDなのでソースはオーバスペックだから正直隙のない選択ではある。いくつか事務処理上の不安はあるが、製作も編集のみで基本的に済むので休日を丸一日潰して編集を完了した。

不幸を隠蔽して違いを作り出す

が、この作品にも問題はある。この手の作品もまた誰かが作る可能性がある。基本的に女の子がうろうろしているだけなので、3分映画宴としては被る危険を否定しきれない。ので全面に押し出すには危険が大きかった。とはいえ、後詰めとして大いに価値があるのでとりあえず置いておく。

では何か他の手はないか、と考える。撮影したのにポスプロとその後の諸問題でお蔵になった映画は都合3本あり、計画している作品、試験撮影のみした作品も数本ある。これらの作品にしか協力していただいた人にはなんの結末あるいは通過点を提供できないままであり、これは僕の不徳の致すところである。この沈みを取り返せないだろうか。関わった人間が不幸になるというレッテルが心の中にある。これを打ち消せないだろうか。

死んだ作品達に今一度復活していただき、今後を定めるーー上手くいけば巨匠・押井守監督からお前の作品はここをなんとかしろ、と言っていただけるわけだーーこの計画の特性を鑑み、新たな作戦名を考えた。B計画の次だからC計画というのはいかにもである。とはいえ、復活作戦も子どもっぽい。というわけで宇治作戦と命名された作戦の立案が開始された。

脚本の開発と実装

ざっとプロットを書き、脚本協力のXJINEに送り、査読してもらい意見を反映すること数回、なんとか3分の作品の脚本ができあがった。

今まで自分たちがやってきたことを底に敷くことで資産を活用しやすくした。続いて一本の物語として成り立たせるために順序を入れ替え、おもしろおかしくするために脚色した。三分間で、はじまって、おわり、伏線を敷いて、回収して「なるほどこうなるのか」と見た人が納得の行く作品を作りたかった。得てして短編自主映画は笑いか芸術か意味不明かイイ話になるので「おもしろい辻褄の合う物語、辻褄が合うことでおもしろい物語」を作りたかった。

また、三分にも関わらず物語のある自主映画というのは退屈になる傾向があるので、観る人を飽きさせないために、また持てる技術を見せるためにこれでもかと要素を叩き込んだ。時間を操作して、あっと言う間に終わらせたかったのである。

さらに、今まで僕の作品に関わった皆を不幸にしないために(今さらなんだと思う奴は映像の利用許可をくれないもしくは連絡がとれないので、結局幸せになろうと思う人間しか幸せになれない素敵システムである)今ある素材を組み込めるようにした。

骨が折れたが、当然困難であるということはネタ被りの可能性を無限にゼロに漸近できるということなので、従って文句のない脚本が完成した。

制作

とりあえず、手元にある素材をはめ込んで、ない素材をイラストでごまかしてライカリールを作った。これを腹積もりは決まっていたのだが何人かにB計画と合わせて送り、予想外の視点からのB計画推しが発生しないことを確認した。

あとは期日までにクオリティの高い素材に入れ替えられるだけ入れ替え、必要な許可を獲得し、獲得できなかったときは別素材に入れ替えるなりなんなりして誤魔化しきれば完成である。

この時、友人達の反応は素晴らしかった。長い間連絡を取っていなかった多くの友人が、問い合わせに素早く反応して、映像の使用を快諾してくれた。また佐々井は自ら手伝いを申し出て、素材撮影を頼むとあっという間に仕上げ納品し、表示系をいつも担当してくれる杉田はタケノコでも取りにいくように素材を送り込んできて、名優岡田氏は常軌を逸した物量のナレーションを見事にやり遂げ、夏海ルイはギリギリのタイミングでの素材納品にも関わらず待機してくれあっという間に整音し送り返してくれた。持つべきものは良き友である。まあ、僕のような人間と連絡を取ってくれる人間である以上、人間レベルがZXぐらいなのだけど。

制作進行も問題なく、夏の大失策であった徹夜発生も順調に回避して、締め切り数日前に納品は完了した。

唯一心残りだったのは、いつも大切にしてきた映像の品質をまっさきに捨てることになったことだ。仕方のない話なのだが、映像あっての映画なので「自主映画」という色眼鏡に要求する色の濃さが過去最大級になっていまったことは非常に残念だ。爆撃はドキュメンタリィなので許せる部分もあるが、今回は最悪である。

後詰めの寝台特急

さて、米子に行くことになるわけだが、行くのだからどうせだからおもしろく行きたいものである。場所は米子、つまり出雲市への経路であり、サンライズ出雲の経由地である。選ばない理由がありましょうか。帰りは愚直にやくもに乗っても良いし、三江線というものを体験しても良いし、山口経由で500系を堪能するも良し、智頭急行を満喫するのも悪くなさそうである。というわけで、サンライズ出雲寝台特急券を確保した。ここで欲を出してシングルデラックスを確保しようとすると製作期間が犠牲になるのであっさりソロを選択した。

全国自主怪獣映画選手権

さらに製作が進む中、第七回全国自主怪獣映画選手権米子大会というものが開催されることがわかり、こちらの締め切りは二週間遅れとのことなので、こちらにも作品を送り込むことにした。こうすることで、3分映画宴の予備審査に落ちても米子に行く意味が二重に確保できるという寸法である。

怪獣映画だが、二週間でできることは限られているので予告編作戦である。が、ここでボスの教えを実現するために、また製作期間を短縮するために怪獣や破壊活動にはCGIになっていただくことにした。バルンガが大好きなのでバルンガみたいな空に浮かぶ怪しい獣としたかったが、モデリングが簡単な幾何学的な形状とし、使徒との誹りはこれを甘んじて受けることにした。元ネタは私の手元に全50話のプロットと諸設定、撮影計画と資金回収計画の概要が存在する巨人が宇宙怪獣と戦うシリーズ物に登場する「寄生星座」で、星空に擬態して地球に接近する大怪獣である。

こうして昼飯前の1時間で擬態天穹ファルステラは爆誕した。登場だけでなく恐怖の破壊光線デジェネレイテット・スタアライトによる破壊活動も行いたいのだが、CGIの破壊活動は困難が予測されるので、ビルを量産して合成し、冒頭にワンカット、ケツに合成前のワンカットを掲載して破壊前と破壊後だけ見せる素晴らしいアイディアで凌ぐ後詰めを立案した。

本命はニコ生でやっていて一度だけタイムシフトで見ることに成功した破壊のプロ、発破の米岡という二つ名を持っているらしいステルスワークスの米岡氏のシン・ゴジラメイキングを見た記憶を参考に「ガラス、金属、ワッフル構造のコンクリートの三素材でビルを構築し破壊して物理演算で解決する作戦」である(何しろ一回しか見ていないのでそれしか覚えていない)。

どうせならリッチな計画を立ててできることをやってできなかったことを切り捨てて組み上げれば良い、という考えで、ざっくりビデオコンテをつくりFacebookにアップロードし、出演者を集めるということもしたがこれは失敗した。

あとはまあなんとかなるだろと連日物理演算と格闘し、最後は昔の素材をひっぱり出して手作業でマスクを切り、でっち上げ、引き伸ばし、誤魔化し、凌ぎ、バレないだろうとタカを括り、石渡の名曲の雰囲気で押し切り15秒の映像が完成し、納品した。

なお、この製作途中に3分映画宴の招待作品に選ばれたと連絡が入り、これは旅費が浮いたと小躍りした。なお、この招待作品というのは抽選だそうなのでここで運を使い果たしたことは明白である。

当日

一週間の休息ののち地震が発生したのでなんとあのトワイライトエクスプレスロイヤルウヤの悲劇再びかと思ったが、無事22時に人類決戦の地、現実が勝利した場所を特別急行サンライズ出雲号は出発し、次の日の朝私は米子に到着した。

息をつく間もなく全国自主怪獣映画選手権米子大会が開催され、怪獣映画野郎共の秀作奇作怪作快作を堪能し、手前の作品「シリウスの七日間テレビスポット」は田口清隆監督より「次は90秒にしよう!」と誠にありがたいお言葉をいただいた。上記の通り、ビデオコンテはあるので出演者はいつでも募集している。

一旦ホテルに寝て仮眠をとり(寝台特急に乗ると楽しくて寝られなくなるのが鉄道好きの習性である)、ガイナックスシアターに赴くと3分映画宴である。前半戦のトリ、つまりグランプリ作品とその反応を見て、あ、こりゃもうダメだと観念し、その後の作品を鑑賞した。拙作「失われたフィルムを求めて」は予想通りあっさりスルーされたが第四目標は達成した。授賞式を緊張が解けた仏の心で眺め、交流会では足りないコミュ力をかき集め総動員し、審査員の方々と周囲の楽しい会話を邪魔して強引にコメントを獲得し見事五つの目標を達成した上に、素敵な出会い(残念ながら一部が期待するような男女の出会いは当然なかった)などもあり、見事拾えるものを拾い尽くして帰投することに成功し、明日からまたアニメを作ることができるのである。

結末を回避する技術

予定通り結末は回避された。何か劇的な出来事があって映画を撮り続けることを決意したのかと期待していた向きには申し訳ないが、劇的なことがあるようではその時点でダメなのだ。

劇的はお話としてはおもしろいかもしれない(だから劇的と言うのである)。日常としては落第である。「ああ無冠に終わってしまった」と嘆き悲しみ悟り終えて「勝つことから逃亡」するのを回避するために最も必要なことであり同時にその目的は、安定なのだ。そしてその安定は不断の手抜きへの飽くなき追求によってのみ成立するものであり、丁寧に獲得してきた基礎技術があってこそ、この二ヶ月を生きてこられたと捉えている。

努力しなかったとは言わないが、毎日7時間寝ている。見事にやりおおせたことがわかるだろう。

確かに米子映画事変への参加は突発的で異常な、まさに事変であった。ただ、これへのここまで記してきた対処は猛烈な努力などではなく、状況を観察し、評価し、計画を立て、実行するその循環を回し続けたことにあるのは明らかである。そしてその単純に見えることを成り立たせているのが、余裕なのだ。これを忘れてはいけない。余裕なくして勝利なく、余裕がないから、部活の大会が人生のすべてになってしまうから、結末を回避できないのだ。

結末を回避する技術とは、ここに書いたことを「あ、その程度のことなのね」と捉えられるかどうかから始まると僕は考えている。

景色を狩るもの

金曜日からおやすみとし、日曜日の昼下がりまで夏の旅行に出かけていた。ここ4年間、毎年やっている。今年は開催が危ぶまれたが、なんとか開催できてとても良かった。初の9月開催である。

どこに行くか迷っていたが、結局「まあ青森なら間違いないだろう」ということで、まだ行ったことのない青森に行くことにした。ここで誤解のないように書いておくが、青森に行くのは今年は2回目である。「まだ行ったことのない青森」とは「行ったことのない青森の季節、天候、地域」を指す。例えば「冬の下北半島」は行ったことがないし、「秋の晴れた津軽半島」も行ったことがない。青森についてはまた別の機会に書くつもりだが、輸送手段である友人保有の車輌は彼自身が購入時に「これで青森行きが捗る」という名言を残したことからわかるように、非常に思い入れのある土地である。

f:id:TOYOZUMIKouichi:20160904183101j:plain

青森駅には、スーパー白鳥の残り香や、カシオペアの臨時列車時代の名残りはもちろん、青函連絡船の歴史も残っている。何度も来ているが、好きな駅の一つだ。来年こそいなほ号に乗って見たいと思っている。乗れなかった列車がたくさんある。鉄道だけにかけられる人生ではないからだ。でも、好きだから、できるだけ、そういうつらい気持ちを産む数を減らしていきたい。

旅行に行くときはカメラを担いでいく。一眼レフと、交換レンズを数本、それから、三脚。一般的な旅行のスタイルだ。そして、行き先は「どこかの神社」だ。もちろん神社の写真を撮るけれど、別にそれが目的というわけではない。神社に行く途中で、見つけた景色を撮って行く。大体一日100枚ほどシャッタを切れれば上出来だろう。

f:id:TOYOZUMIKouichi:20160904184142j:plain

この写真は、青森から魔女のあしあとを求めて、岩木山神社に行き、そこでおみくじを引いたら「南が吉」と出たので、青森から南下して山形に行き、羽黒山に行く途中で助手席から撮った。僕はあまり写真が上手くないから、風景はまあ、こんなものだ。

f:id:TOYOZUMIKouichi:20160904184440j:plain

その羽黒山ではこんな写真を撮った。朝の光がとてもきれいで、木陰のなかはとても涼しく、とても良い所だった。芭蕉もここに来たのだな、と思う。JR東日本のCMも思い出す。

f:id:TOYOZUMIKouichi:20160904184545j:plain

公衆電話のコレクションをしている。見かけたら撮る程度だし、まったく詳しくないから特に分別もしていないが、公衆電話の写真を撮るのが好きなのだ。

f:id:TOYOZUMIKouichi:20160904184701j:plain

5月に青森にでかけた時はよく晴れていて、岩木山がよく見えた。

f:id:TOYOZUMIKouichi:20160904182313j:plain

地面を撮った時もある。これは光がきれいだったから撮った。

f:id:TOYOZUMIKouichi:20160904195458j:plain

さて、こんな写真を撮ることが少なくない。この時、この枯れた用水路に架かる橋の上に、僕には「登場人物」が見えている。つまり、旅行は「場所狩り」を兼ねている。この絵をそのまま作品に使うことはないだろうが「こんな枯れた用水路に、こんな橋が架かっている」ということを利用するだろう。ここに選んだ写真はスクロールが少なくて済むから、という理由でキネマスコープサイズにトリミングしたものを選んだ掲載しているが、基本的に景色はスコープサイズで見ているので、スコープサイズの写真は多い。

f:id:TOYOZUMIKouichi:20160904200445j:plain

このプールもきっと校舎の屋上に組み込まれるだろう。

f:id:TOYOZUMIKouichi:20160904200916j:plain

晴れていれば、できるだけ星の見えるところに行きたいと思っている。星空を見ているのは好きだ。いつまでも見ていられる。ただ寝転がり、フリースのブランケットを被って、天体が回る様子を朝まで見ていたこともある。ウルトラの星のあるオリオン座以外の星座はわからないし、星を撮るのもあまり得意ではない。

いつも駐車場などに直に寝転がっていて、結構痛かった。あまりきれいなものではないし。それから、砂浜などだと、寝転がれない。だから、コットを買おうと考えている。そんな風に、いろいろなところに行って、様々な知見も溜まってきた。いつか本にまとめて出したいと考えている。僕が必要としている本だから、多分、需要はあるだろう。

君の名は。:感想(約1万字:未鑑賞者の閲覧は推奨しない)

先日書いたシン・ゴジラの感想の評判が良かったので、もう一つ書いてみるかと思い立ち、「君の名は。」を観てきた。あまり期待していなかったので、劇場鑑賞は見送るつもりだったが、正直な話、これを書くためにauマンデイに見に行った。他人の評価は関係ない。個人的には、他人の評価を気にして映画に触れるか触れないかを決めるほど人生を制限する行為はないと思っているからだ。

粗はたくさんあるし、当然書かないが、新海誠監督の良さが全面に出た作品で、監督の最先端と言って良い作品である。今後どう評価されるかはわからないけれど、新海誠監督の作品を観たいという人はこれを見て、それから気に入りそうな作品を観ていくと良いだろうと思う。

前回のエントリィを読んだ方にはくどくて申し訳ないが、あくまで感想で評論でも解説でも考察でもない。僕がたった一度映画館で見て、メモも取らず、ロクに内容も覚えていない映画について感じたこと考えたこと自分にとって価値あるものを記していくだけだ。というか、序盤のとあるシーンでは「登場人物が恥をかくであろうシーンを見られない」人間なので何度か顔を覆っているので文字通り見ていない。基本的に「僕が」という主語が大量に入るので気に入らない人は読まないほうが良い。

それから、この作品についての感想を書くために、僕は過去の監督の作品と比べてどう良くなったか、という話を書きたい。だから、過去に好きな作品があって、それが傷つけられるのが耐えられない人は読まないほうが良い。

くわえて、このあたりの事情は興味のない人のために一番最後の方に書くが、僕は実にくだらない理由があって心の奥深いところで「映画監督としての」新海誠監督を上から見ている。監督としての実績は当然のこと、大人として、一人の職業人として、人間としては他の大多数の他人に対しての中央値の水準で尊敬の気持ちは持っているし、それは嘘ではないが、純粋な映画監督としては別だ。

黙っていればいいのかもしれないが、読む人が読めばわかってしまうから、それなら僕のそういう態度を読み取って不愉快な気持ちになる人に先手を打って対処すべきと判断した。映画は楽しみ認め合うものであって、喧嘩の材料ではない。

御多分に洩れず電車の中でiPhoneで書き、最後はiMacで少し調整したがほとんど推敲していない。

では、始める。

新海誠監督の武器

ここからしばらく「君の名は。」の話にならないので、そこだけ読みたい人は「最先端」の項まで飛ばされたい。

新海誠監督について、僕は三つの武器を持っている、と評価している。作品の姿勢や、価値基準ではなく、実際に作品を作り出すために使える武器だ。

一つ目の武器は、当然よく言われる通り、背景美術である。アニメにおける背景美術の美は、別に新海監督が先駆者というわけでもないし、その独自性と同等の独自性を持つーー即ちアニメの背景美術という一つの世界の競争ではなく、どの美術さんも独自の価値観でやっていて、それらは作品によって良い選択であるかということにおいてのみ比較されるべき性質のものであると僕は考えているからこういう書き方になるーー方はたくさんいらっしゃるが、素晴らしいものであるということは多くの人が認めるところだろう。監督を「スターダム」に押し上げたほしのこえの時点で「現実よりも美しい」と表現されることがあったが、今回もその美は最も信頼の置ける武器として利用されている。語るべきことは多くあるが、その細かな話は少し後に回す。

二つ目の武器はスポッティングである。これは一般的な用語なのかは知らないが、角の立った特徴的な音に合わせてカットを切り替えて音と映像の連携を図る技法のことである。これまたほしのこえの時点で、クライマックスを飾ったのがこれで、これもまた新海監督が映像制作における決戦兵器として保有するものであり、本作ではその最大出力が披露されている。これも語るべきことが多いが、後に回す。

では、三番目の武器とは何か。工業力である。

工業力の基本

僕たち自主映画野郎、自主アニメ野郎が、新海監督を尊敬し畏怖するのは、作品を完成させる能力を持っているからである。これは当人も「とにかく完成させて出す」ということを何度か語っており、とてつもない能力である。

自主映画というものは往々にして頓挫しやすく、監督が編集作業における一人の孤独に耐え切れず青春の1ページに埋め込んでしまったり、とりあえずつないだだけの意味不明なヴィデオが完成したりすることがほとんどである。自主アニメはこれに輪をかけて破綻の可能性が高く、特に描き送りのアニメとなればこれはもう完成すること自体が奇跡に等しく、お話がついていたらもうこれは異世界から力を借りてきたとしか思えないほどである。

例えばこのわずか5秒強のアニメ、絵の描けない人間だと、3ヶ月かけてこれだけである。こんな下手な絵でよくアニメを作ろうと思ったな、というかまともに動いてるの1カットだけじゃねえか、と罵りたくなる出来である。何処の誰だか知らないが、とんでもない恥知らずである。まぁ、僕なんだが

いやいや比べる相手の能力値が低すぎるだろ、と思う気持ちはわかる。が、悪例に他人の作品を持ち出すような真似をして何が楽しいのかわからないので、これになった。

本題に戻ろう。大変なことなのにも関わらず。しかし、新海監督は完成させている。そしてそれは才能でも根性でもない。監督の純粋な工業力によるものなのだ。

新海監督の最初期の作品である「彼女と彼女の猫」において、監督は、ほぼすべてのカットを短く、動きは単純に、切り替えの店舗とナレーションで見せ、苦手な人物の作画は可能な限りこれを回避する、という手法を採用している。

できないことはやらない、できることしかやらない、欲しがりません勝つまではとか足らぬ足らぬは工夫が足らぬなんて言わない、できないものはできないし、できることはできるのだ。そして、作品が完成した奴が他のいかなる未完成作品の監督よりも偉大なのだ、そういう態度がある(たぶん)。上手い言い方をすれば「等身大の作品を作る」ということをやったのだ。

続く「ほしのこえ」で監督は、駒を進めた。これが大事なことだ。できることを基礎により良いものあるいは新しいもの、もしくは別のものそして作りたいものを作るために新しく技術を獲得し、「できること」に追加していく、これが新海監督の最大の武器である工業力である。

アニメートが苦手なら、単純な回転や、移動、拡大縮小でできる表現や、3DCGIに頼ればいい、ただそれだけの話だ。そしてそれにくわえて、無謀なことをせず、いつも少し先の、ちょっとできることを、ちょっとずつやっていく。それが監督を支え、いつも安定した「新海誠監督作品」を作り続けてきた。ところが、これだけでは工業として成立しない。工業というものは良い技術を持っているだけではダメで、行使すべき時に行使すること、適切な力を適当な時期に適度に投入すること、というのが大切であり、これを任意の目的、即ち作りたい作品に対して実現することが「映画工業」においては重要なのだ。

この難しい問題に新海監督が、常に向き合い続け、修正と調整を重ねた先にあるのが「君の名は。」だと僕は捉えている。

君の名は。」に至るまで

さて、この後の新海誠監督作品をかいつまんで書く。「雲のむこう、約束の場所」では、初めての長編において、前回成功したSF的要素と「懐かしい景色」そして「離れた心のつながり」を置いて、その先に里佳子とヒロキが成し遂げられなかった「物理的な救済」を描いた。

続く「秒速5センチメートル」では、SF的な要素を排して、より純粋な新海監督の利点だけでの勝負を試みた。「ほしのこえ」のSF的なパーツの魅力は脇に追いやられていたことにあって、それをど真ん中に据え付ける必要はなく、それなりの動機づけができればなくても構わないという判断だと考えられる。それから、前作では実質的な三部構成になっていたが、今作では明快に物語を分割した。背景美術には磨きをかけ、そして最後に前回は投入を見送られた伝家の宝刀、スポッティングを投入した。結果は知っての通り大成功である。

繰り返すがこれが新海誠監督の魅力だ。新海監督をまるで芸術家でアート寄りで、作家性が基本の監督のように語る論評を数多く見かけるが、僕の評価は違う。純粋かつ最高度の技術屋で、工業力を持つ監督なのだ。

さて、お次は新海監督、再度長編に挑戦することにした。やったことのないことをやるのなら、他人に学ぶということも大事である。星を追う子どもは、子どものためにアニメを作るとしたら、つまり、「僕ら」が思春期を経験したか、しているからこそ「ほしのこえ」から始まる三作品にある意味共感できたのだとしたら、では思春期に至る前の子ども達は何を求めるのか、ということを考えていった結果、手堅い造りの作品が築かれた。また、同作最大の魅力は、それまで新海監督が映画で行わなかったアニメートの魅力を最大に活かした描写、メタモルフォーゼがあることだ。今まである武器に先人の知恵と新しく開発した要素を組み合わせて作品を作る工業的な姿勢はこの作品でも変わらない。

次の「言の葉の庭」では、背景美術をさらに追い込んだ。密度を限界まで上げたことは知っての通りだ。それから、そもそも恋愛描写を繰り返してきたのだが、ここにも進化が見られる。自然発生的に恋に落ちていたそれまでとは違い、知り合いが恋に変わり恋愛を築き愛だけの破綻へと向かう過程が丁寧に描かれている。そしてそこには、面と向かっての言葉のやり取りがある。

最先端

三度目の挑戦となる長編大作に臨むにあたり、この開発実装試験計測考察の基礎循環を遂行させることに長けた新海監督が過去の作品を精査し、徹底して開発を行ったことは想像に難くない。実際に本作には過去の新海誠監督作品の要素を取り込んでいる。

まず、基本構造は「雲のむこう、約束の場所」である。立場と舞台の説明、少年と少女の交流を描いた第一部と、その交流の破綻から精神世界での再会を描いた第二部、そして復活と救済を描いた第三部となる。

同作にはなかった、主題歌にスポッティングした映像、即ち二番目の武器を第一部に挿入することで補強と自分の利点を前面に押し出す作戦が取られている。このシークエンスは見事で、一度は見るべき出来栄えだ。

特に、これまでの新海誠監督作品では、こういうシークエンスを含めて情景の美しさを描きながら、台詞や歌詞といった言葉でその情景を再表現していた。その結果詩的な表現になることもあったが、どちらかというと言葉の持つ即物性が露出してしまい、僕は、折角の「現実よりも美しい景色を描く技術」が毀損されたように感じたり、その実力を監督自らが信じていないのかと疑いを持つこともあった。

だが、今作のこのシークエンスについては、絵は絵の仕事をして、歌は歌の仕事をし、台詞はどういうわけが共に生きなければならなくなった二人がお互いを尊重し、自らを認めてもらおうとする過程で信頼関係が生まれる、つまり恋に落ちる過程が見事に描かれている。

二人が再会する「聖地」やそこに至る過程は「星を追う子ども」の経験が生かされているし、「言の葉の庭」で極端な水準にあげた結果、作品全体の情報量の不均一が目立ちすぎた背景美術も全体の密度を巧みに調整して修正している。

他にも上げるべき「最先端の新海誠監督作品」としての要素はあるが、それは個別に書いていこう。

また、本作は細田守監督作品の技法を巧みに投入していることも見逃せない。詳細は後述するがクライマックスで疾走するヒロインは「時をかける少女」だし、物語の少年少女たちに対する態度は「バケモノの子」のそれである。

構図

新海監督は背景美術に強い。だから、長く観ていても耐えられる絵作りができたし、それで十分に勝負することができた。一方で僕からすると、なぜか構図は妙なことをしがちで「なぜこんなことをしたの?」と首をかしげる事がままあった。

例えば、「雲のむこう、約束の場所」では、駅のホームが画面のほとんどを占めて、キャラクタの足元だけが見えるカットがある。この構図、難解すぎて僕には意図がさっぱりわからない。

他にも例を挙げるなら、「言の葉の庭」のお弁当を食べるシーンのカットがある。ここでは、手前を草木が占拠しているが、この草木には何もなく、アウトフォーカスで、その隙間から首の切れた二人の姿がちらちらと見える。一体何を見せたいのか、なにをしたいのか、さっぱりわからない。例えば、首から上の見えない二人の体の動きだけを描けば、触れ合いそうで触れ合わない、恋が恋愛に変わるときの揺らぎを描けるし、表情が見えれば、二人がお互いにどんな感情を持っているか、直接的に伝えられるだろう。しかしそれでもかなり難易度の高い構図なのに、それ以上のことをやっているので見ている側としてはついていくことが難しくなる。少なくとも僕には無理だ。

ところが、本作の構図は極めて簡単で、わかりやすいものを積み重ねていく。

新海誠監督作品でもっともわかりやすい構図の一つが「秒速5センチメートル」で重ねられた分断の構図だが、本作でもこれは採用されている。

さらに、デートシーンの終盤の歩道橋における陰と陽の描写は見事なものである。陰と陽は三葉の親父の執務室にはっきり文字で書いてあることも見逃せない(たしか書いてあったはず)。男と女が入れ替わる話であるということも気に留めておくべきだろう。

繰り返されるドアの構図は「青春」が「場面」を積み重ねていったものであるという一つの性質を描くために必要な、切断の描写として作用しているし(これ、俺も昔やったことあるわ……実習で……)、それ以外にも基本的な絵がわかりやすく作ってあるので観客がじっくり入り込むことができる。もちろん、カメラがダイナミックに動き夜空を仰ぐシーンなども素晴らしいものだ。

が、もっとも素晴らしいのは、瀧に乗り移った三葉が初めて教室に入るときの構図である。

三葉の視線は、姿は瀧なのだからバレてお咎めを食らうということがないのに、それでも見知らぬクラスメイトと目を合わせるのが怖くて、顔を見ないでそのちょっと下の物を見るのだ。

足と作画

新海誠監督はそもそも、女性の足首より下の足の描写に拘りのある監督である。女性の足にこだわったアニメは「冴えない彼女の育て方」など枚挙に暇がないが、足首以下にフォーカスした監督は大変珍しい。

もちろん特徴的なのは「言の葉の庭」であるが、それ以前の、例えば「Wind」のOPだと、足のカットが4つもあるのに、足首以下が75%を占めている。「はるのあしおと」のOP(余談だが、製品にしか収録されていないサビの落下カットは素晴らしい出来だ)でもソックスを履くカットが入っている。「ef」は足カットが多いが、太ももやひざ、ふくらはぎも入っていて、それほど極端ではないが、しっかり足首以下も描写されている。注目するとかなり多いことがわかるだろう。「猫の集会」も足首より下が重要な役割を果たしている。

最初に新海誠監督の足首以下の描写にびっくりしたのは「雲のむこう、約束の場所」だ。大変丁寧に描かれるので驚いたが、まさか足首以下を主題にした作品を作るとはその時は思ってもいなかった。まあ、この作品の話はもうみんな知っているのでどうでも良い。

さて「君の名は。」は見る前から参加スタッフについての噂を伝え聞いていたので「これは新海監督、とうとう足首から上に全力を注ぎ込んでくるな」と予感していて、その予感は的中した。

最初の入れ替わり時が、いきなり全力の足である。つま先から太ももまで全力である。前作で足首以下に想いを注ぎ込んだ結果がこれである。

が、そんなことはどうでもよろしい。クライマックスが、足なのだ。

山を駆けずり回る三葉の作画はすさまじい。他の追随を許さない世界最高の足メーション「人狼」を思い出させる動きである。特に蹴り上げた太ももにまとわりつくスカートの動きはとてつもない執念を感じさせる。もし見たのに覚えていないのならもう一度見に行くべきである。

また人体の動きにも注目すべきだ。人間の腕は胴体から肩というジョイントによって接続されており、肘という可動部が、手首という回転部に骨を通じて繋がっており、それを左右交互に前後させることで下肢の運動を補助している、ということがものの見事にわかり、「普通の」女子高生が疾走したときに起きる各ジョイントに引きづられて末端部が追いついてくる様が見事に描かれているのだ。

こういう作画をするとき、素人は「そういう動きを細かく描けばそうなるだろう」と思いがちだ。だがそれは大きな過ちだ。少ない枚数でいかにその動きの特徴をつかんで描くか、そこに優秀なアニメータの能力がある。これは描けばわかる。

あまりにも見事な動きで、帰るときに再現したくなる四肢の動きだ。「パリで一緒に」を見たあとで、階段を降りる際にあの動きを再現したくなったのと同じである。小澤征爾がコンサートの成功は帰り際に観客がメロディを口ずさんでいるかどうかでわかると言ったそうだが(真偽不明)、まさにそれである。

劇場にアニメを観に行くことの価値の一つならが高品質な作画を見に行くことにあるとするのなら、その価値は十分あると言って良い。担当アニメータには賛辞を贈るべきカットだ。本年度の日本アカデミー賞最優秀アニメータ賞ノミネートは当然のこと(念のため書いておくがそんなものはない)、P.A.WORKS井上俊之原画集と同じ仕様か、e-sakugaで原画集はよ。

現実感と臨場感

新海誠監督は「現実感」を極端に大事にする人だ。言い換えれば「現実感」さえ補えていれば構わないために現実をしばしば無視する覚悟を持っている人間である。

僕はまあそれなりの鉄道好きだから、新海監督の鉄道の扱いは非常に不満だ。本作も東海道新幹線の座席配置が入れ替わっており(これも見事な演出としてもいいのかもしれないが)、すごく気に入らない。が、「秒速5センチメートル」で、95年にモータ駆動のボタン式ドアを有する115系を登場させ、宇都宮以南でドアの取扱いを客に任せ、小山雪まつりを開催し、大雪の中運転指令に職場を放棄させて雪合戦をさせた新海監督なので、そういうことは諦めて無視している。

なぜなら、そんなことほとんどの観客にはどうでもいいことで、それは「彗星」と同じような舞台装置に過ぎないことで、「正しい-間違い」の文脈で語られるべき性質のものではないと評価している。僕が個人的に「好き-嫌い」で言ったら嫌いというだけの話だ。

では、そうやって細部を喪失、もっとキツい言い方をすれば、ないがしろにして現実感を得られるのか、という問題は当然浮かび上がってくるだろう。でも、僕は「現実がそうである」ということが「現実感」だと考えていない。もし、現実に則っているならそう言えば良いのであって、現実のように感じるということは現実である必要はないと捉えている。

であるから、本作の現実感がどこにあるかというと、それは「初めて東京の新宿に出てきたときの感じ」や「初めて田舎の子供たちの登下校に旅路の途中で出くわしたときの印象」、「まだ寒くはないけれど適度に涼しい秋風のなか、暗い夜空を明るく感じるほどの星を見上げたときに滲んだ想い」にあると思っている。そしてそれは、新海監督の武器でしっかりと描かれている。

他の作品の話になるが、ほとんどの人が戦車に乗って戦った記憶はないだろう。けれども、観客を凍えさせないために暖かく設定された空調の劇場で4DX上映の劇場版ガールズ&パンツァーで風を受けたとき、自分もゴルフ場で夏風を受けているような、その場に居合わせたような、その場に望んだような雰囲気つまり、臨場感があったはずだ。現実感や臨場感というものはそもそもそういった、嘘の中にある性質のものであって、確かに嘘が多い映画だが、それが現実感を毀損しているとは微塵も思わない。

むしろ「ああ、こうだったよね」「きっと、こうなるよね」という具合がよく出ていて、だからこそ、作品をふんわりと受け止める人たちの心に響いているのだと思っている。

だから、僕は本作もMX4Dで上映してほしいと思っている。そうしたら、きっと「臨場感」も生まれると思うのだ。

子ども騙し

最終盤、物語は穏やかな流れになり、その後と結末が描かれる。

この結末は、「秒速5センチメートル」で救済を願っていた、つまり前々々作からずっとこれを願っていた人たちに対するものだと捉えている。それは「ガメラ3の続きが見たい」みたいなもので、僕の気持ちとは全く相容れないが、そういうのもあっていいだろう。

この流れは、「バケモノの子」と同じだ。「バケモノの子」は少年たちに「図書館に行ったらなんかものすごく素敵な子とお近づきになれるかもしれない」という期待を供給したのだが、本作も「今日電車でチラッと見かけたあの可愛い子ともしかしたら運命的な再会が果たせるかもしれない」とか同等の奇跡を、絶対に口にはしないが、心の奥底に潜めて明日を生きる糧になる期待を供給している。陳腐な言い方をすれば、夢があると言っていいだろう。

僕が「秒速5センチメートル」を見たのは大学生の時だから「まあ、こんなもんだよね。いいじゃん」と思っていたが、中高生に夢を与えられるかと言えばそれは難しいだろうと思う。もちろん、受け手によるだろうが。

届けたい相手がいて、そこに対して適切な手段を行使できている、ということが重要で、繰り返すけれども新海監督の最大の長所はその工業力にあるのだから見事にやってのけたと言えるだろう。

もちろん、辻褄が合わないどころか合わせる気がないし、ご都合主義だから、子ども騙しだと言うこともできる。

そして、確かに辻褄が合っていることに対する物語の楽しさや喜びというものはある。「シュタインズ・ゲート」なんか、辻褄があっているからおもしろいのだ。辻褄を合わせるのは難しい。ちょっとした綻びが全体を破綻させてしまう。物語を書いたことのある人間なら誰もが知っていることだと思う。だからこそ辻褄が合う物語は高く評価される。

一方で、子ども騙しには子ども騙しの難しさがある。「甘城ブリリアントパーク」で可児江西也が言った通り、子どもを騙すのは大変で、そう簡単に騙されてはくれない。誰かに夢を見せたいのなら、まず自分自身がその夢を信じる必要がある。

繰り返すが、新海監督がやってきたことは奇跡でもなんでもなく、不安定で判断の難しいことを、いつも自分の手に負える水準になんとか押し込めて築いてきたということであり、くわえて並走する電車の中にいる大切な人を見つけたときのように、掴むのが難しい機会を掴み取ってきたということだ。だからこそ僕ら自主映画野郎や自主アニメ野郎が尊敬する立場にあるわけだ。

それを普通は夢を叶えたというのであって、自分が叶えたのだから信じていない筈がない。夢を信じている人にしか子ども騙しができないのなら、それを夢を信じられる立場であることで真っ当にやって見せたと言えるだろう。

大衆迎合

以下「君の名は。」の話はほとんどない。

僕はテレビを基本的にアニメを録画するための受信機としてしか捉えていないから、本作の宣伝が大々的に行われていたのもよく知らないが、確かに映画館には宣材が大量にあったから、東宝の人たちは推していたのだろう。

本作は「恋愛描写てんこ盛りで」「泣かせ」「普段声優業をやらない俳優が声優をやり」「絶叫し」「主題歌のついた」作品であり、これがものの見事に大ヒットして、一人の「シン・ゴジラ」ファンとして胸がすくような思いだ。僕は一部の「シン・ゴジラ」ファンが、言葉の足りない主張をして、それが伝播していく様子が実に気に入らなかったからだ。「シン・ゴジラ」を作らせてくれたのは、こういう大衆に寄り添い、大勢の人間に「製作委員会」という形でその興行安全性を担保された作品が多数あって潤沢な予算が確保でき、また失敗時の救済策があったからだと考えているから、思慮の浅い連中の物言いが本当に気に入らなかった。こうやって、ヒットしてくれて大変嬉しく思っている。

今になって「恋愛映画なんだから恋愛描写があるのは当然」などと言っているが、男性も女性も誰も映画に恋愛描写を求めていないと断じるような言動をここ1ヶ月続けてきたことについて誰もが見逃してくれるとは、彼らと同じ「シン・ゴジラ」ファンとして思わない。見事に劇場には多くの若い女性の姿が溢れており、「シン・ゴジラ」とは違う様相を呈しているので、大変嬉しく思っている。

彼らは、やっと「正しいありかた」が認知されたと思っていたのだろう。が、それは違う。それは正しいことでも間違ったことでもなく誰に向けたかという違いだけの話であり、僕ら特撮ファンは「こういうおもしろい怪獣映画で金が儲けられることが証明されてよかった」と純粋に喜ぶべきだと思う。もちろん、そうしている人も多いが、今までの恨みを晴らすかのような言動によって(恨みなんて個人的には全くないが)、また特撮ファンや映画ファンに対する「排外的」という風当たりが強くなるのではないかと少しぐらい危惧すべきだったと思う。

そして、僕としては、どちらのファンも認めてくれるような、素晴らしい怪獣映画を作るために生きていこうと決意を新たにさせてくれるような、価値のある作品だった。

新海誠監督について

以下、本当に「君の名は。」の話はない。自分語り。

冒頭に書いた、僕が新海監督を純粋に監督としては心の奥深いところでは上から見ている、というのは単に出会った時期が悪かっただけである。文字通り中学校2年生の時に出会ったので、焔燃のような態度で向き合い続け、内輪なのでそういう態度を隠すことなく、それが延々と続き、30近くなって今更書き換えるのも無理になったというだけの話だ。

だから今回もプライベートでは「どうでした?」と知り合いから聞かれれば、焔燃のように「いつものような話です!」と答えている。

それから、前述の実習において、僕は新海監督の描く東京が嫌いなので、東京の美しさが出るように努力したのに「新海誠みたい」と講評されたのを逆恨みしているのも多分あると思う。

ね、実にくだらない理由でしょ?

公にするのはどうかと思ったけれど、書いてきた新海誠監督に対する尊敬の念は本物だし、仔細に記した高く評価している点は嘘偽りのないものだし、新作もきっと見るだろうから、十分補って有り余るものだと思うし(補う必要があるかどうかは別として)、そういう「心」を、読んでいる人には理解してもらえるものだと信じている。