2017-01-08: 傷物語Ⅲを観た
やったこと
傷物語Ⅲを観た
傷物語観るぞー
— さっき作った (@make_now_just) 2017年1月8日
宣言通り観ました。
良かったです。すげー良かったです。信じて見続けてきてよかったというか、こんなにすごいアニメを作る人がいるのかって本当に衝撃だった。
まず背景が良かった。3Dで背景作るのってこんなにしっくりくるものなのかと。旗がいっぱい揺れてるのとか、校舎の溝みたいなところをぐわーってカメラが動いていくところとかは3Dじゃないと現実的じゃないよなぁ、と。
あと当然だけど作画も良かった。悪いわけないんだよなぁ。キスショットが阿良々木君を壁に擦り付けてるところとか、BGMも相俟ってものすごい迫力だった。吉成兄弟とか梅津とかがEDには載っていた。はへー。
それと個人的に気になったのは、例えば阿良々木君とキスショットが会話するシーンで、まず上から遠目に二人を映すカットで阿良々木君がキスショットになぜか直線的じゃなく少し横に逸れながら近付いて、その次のカットがキスショットを手前にして阿良々木君が左側になるレイアウトで続くところがあるのだけど、このときの阿良々木君の位置といいポーズといいが絶妙で、そこはかとなくオサレなシーンになってる。ここだけじゃないのだけど、こういうほぼ無意味なところで意識的にオサレな構図を持ってくるのはすごくシャフトらしいと思う。
ストーリーに関しては言うまでもなく、もちろん面白かった。というか傷物語読んだことがあるはずなのに完全に内容忘れてたんですよね。さすがに終盤にさしかかるとどういう結末になるか思い出したのだけど、途中までまったく思い出せなくてハラハラしていた。
にしても羽川さんのサービスシーンエロすぎである。阿良々木君許さん。
String#indexをラビン-カープ法で実装した
実装したら速いけど、なんかこれでいいのかすごく不安になる。というのも、現状のはChar::Readerを使っていて検索時に無効なUTF-8があると例外を投げるようになっているのだけど、自分がラビン-カープで書き直したのはそれが含まれてないから。
ちなみに、ラビン-カープ法というのは、文字列を本当に比較する前にハッシュを使って一致をチェックすることで比較回数を減らして高速化を図るアルゴリズム。ハッシュ関数を、
P = 適当な素数
hash = 1 * s[0] + c * s[1] + c**2 * s[2] ...
のように定義することで、一度ハッシュを計算すれば次のハッシュはO(1)で計算できるようにして、ハッシュ計算のコストを下げている。なんか昔自力で思い付いたことがあるような気がする。文字列の比較ではなかったけど。