シャイニーカラーズ2019夏イベ「サマー・ミーツ・ワンダーランド」に関するメモと考察

主にメモ。ネタバレありです。

ある不思議な出来事に関して

  • 事前に公開されていた予告ツイートの背景から神津島である事はほぼ確定。
  • OPでの5つの台詞は「天上の地」にたどり着く事になる5人(霧子・灯織・果穂・あさひ・甜花)
  • 1話─ ─ ─ ─ ─ ─ ─ ─
  • イルミネの3人はあらかじめ2日目に山の方を散策している。灯織「頂上まで行けないのは残念だけど……」。本格的に登るのは大変との事。実際の天上山トレッキングは5時間ほどかかる模様。 https://kozushima.com/recommend/mounttenjocourse
  • 展望台の話は「松山展望台」の事だと思われる。
  • イルミネが島のおばあさんとの初遭遇。「楽しんでおいでねぇ」
  • あさひがおばあさんと遭遇。「おもしろいことを探しているんす」。これに対しても「それじゃあ……楽しんでおいでねぇ」と返すおばあさん。おそらく「ここから」始まっている。
  • 浜辺でボトルメールを拾うあさひ。それに対して妙に間の有るリアクションをとる冬優子。何かしら感じているものが有る?もしくは今回のイベントとは関係のない全く別の伏線なのか。
  • 3話 ─ ─ ─ ─ ─ ─ ─ ─
  • あさひが「わたしはあさひ」「中学生とアイドルをやっています」「あなたは誰ですか。一緒に遊びましょう」という返事を返す。ここでアイドルだという返事をした事から後半でおばあさんが真乃と冬優子に対して話しかけている?
  • 返事のボトルメール「今夜、あなたの前で待ち合わせ」→宿にある大鏡。メールの内容はたった1日で返ってきたのにもかかわらず古びている。偶然なのではと指摘する灯織に対してあさひは更に返事を出す実験を行う。
  • 4話 ─ ─ ─ ─ ─ ─ ─ ─
  • 冒頭台詞の灯織「古い家は夜になると不思議が起こる」
  • 真夜中に聴こえた音は風鈴?
  • 霧子「鏡は……鏡だから……、大丈夫」。物にもさん付けするような扱いをする霧子にとっての「鏡」とはどういう位置づけなのだろうか。何かしら含みを感じる台詞。
  • 鏡の前で「離島発、天上行き ―夏期のみ有効」の切符を拾う。神津島には天上山という山が有るがケーブルカーやロープウェー的な物は存在しない。また、島を離れてしまうような「離島発」という表現。謎の足音。
  • 5話 ─ ─ ─ ─ ─ ─ ─ ─
  • 温泉で合宿があっという間だったけどまだ終わっていない!という流れ出てくる「帰るまでが合宿」はストーリー的にはこちらの方の意味も持っている?
  • 「おや、お嬢ちゃんたちはアイドルなのかい?」で登場するおばあさん。あさひがアイドルである事を手紙で知っているからのリアクション?
  • 楽しめた事を確認しそれならよかった、外の人に喜んでもらえると嬉しいと言うおばあさん。→あさひに対してもそう思っている?
  • 「もう一つ喜ばせてくれませんか」という冬優子。「ふゆ」としての振る舞いから出るファンサなのか。もし冬優子が何かしらに気づいているとしたら「おばあさんが出会ったアイドルの中で冬優子だけがまだ喜ばされていない事に対して喜ばせておいている?」
  • 「あんまり写りが良くない」→実際に写真が消える。
  • 6話 ─ ─ ─ ─ ─ ─ ─ ─
  • 果穂と抜け出すあさひ。最後に受け取った手紙の内容は「迎えに行く」。
  • 朝6時の割には空が異様に暗い。あさひと果穂は出かけるのを灯織、霧子、甜花らに制止されるも、なぜか宿へ戻る方法が分からなくなる。
  • 宿の方向へ戻ってみるも森の中へ。あさひ「さっきも通った気がするっす。なんか進んでいる気がしない」
  • 携帯電話が圏外になる
  • 天上の地へ。海も星もきらきらしているが……。
  • 山なんて登っていないのにこの高さにたどり着いている。
  • 灯織の「戻れなくなったらどうするの」という台詞と直後に聴こえてきた汽笛で帰る事を決意する一同であさひを連れ帰る。抵抗するあさひに対して「そんな事言われても離さないから」という灯織。ここは必ず連れ帰らなければならないという強さを感じる。
  • 風の通り道になっているトンネルを抜ける。霧子「きっと出口が有るんだね」に対して灯織は「え?」と返す。霧子も何かしら感づいている?
  • 切符が風で飛ばされるあさひに対して灯織「引き返しちゃダメ」。たぶん本当に引き返すとまずい奴。
  • トンネルを抜け知っている場所に戻ってこられた一同。雨粒を受けるあさひ。物語の終わりの水は「銀河鉄道の夜」のラストを連想させる?
  • 6話タイトル「銀河の冒険」であったり切符、汽笛であったりもそれを連想させる。
  • エンディング ─ ─ ─ ─ ─ ─ ─ ─
  • 朝の天気が悪かったから暗かった、そういう日は船が汽笛を鳴らす、青い光は夜光虫だろうという説明に加わるおばあさん。しかしいつの間にか山の上に居た説明は行われていない。
  • おばあさん「本当に不思議なことなんてそうそうおこらないもんさ」
  • 最後にあさひに「楽しかったかい?」と確認するおばあさん。一連の出来事はその為だった?
  • 真乃と冬優子とおばあさんで撮った写真がスマホから消えている。
  • 最後に台詞はなくとも楽しかったそぶりを見せるあさひ。

その他

  • 寝起きは白湯を飲む夏葉。
  • 全員分の弁当を作る恋鐘(とおそらく千雪も作っている)。
  • 寮への前泊組は大崎姉妹と摩美々の3人? かと思ったけど前泊組の中で起きるのが遅かったのがこの3人なだけで寮組と別行動組以外はみんな前泊? 283プロの寮が思っていたより大きいのは確か。
  • 咲耶が楽しそうなのが良いですね。
  • 冬優子の家は事務所(聖蹟桜ヶ丘の近辺地域)に寄るよりも港(竹芝・熱海・久里浜・下田)に直接向かった方が近い。 https://www.tokaikisen.co.jp/island/kozushima/
  • 283プロの車も寮同様に思っていたよりでかい。乗車人数が多い。
  • 今回は弁当を忘れていないという恋鐘の発言→ファン感謝祭編のアンティーカシナリオを踏まえた発言?
  • 甜花の「今日は荷造り完璧」→クエストロメリアの際は化粧水を忘れていた。
  • 1話 ─ ─ ─ ─ ─ ─ ─ ─
  • 飛び込みのある桟橋。これも神津島にある「赤崎遊歩道」。 全長500メートルの木製遊歩道 https://kozushima.com/sightseeing/akasakiwalkingpath
  • FW04ドラマCDの時よりは平和な「きゃー」を言う夏葉と、これはきゃーと言って楽しむものだという凛世の「きゃー」。
  • その後も夏を満喫する放クラ。
  • 2話 ─ ─ ─ ─ ─ ─ ─ ─
  • 愛依、真乃、結華、千雪、智代子の5人の部屋での消灯後の風景。智代子の言うように平和で「夏の合宿」感あふれる情景。これから何をして楽しんでいくかで盛り上がる4人と寝てしまう愛依。結構アクティブな事に前向きな真乃はここでも枕投げを所望していく。
  • 3話 ─ ─ ─ ─ ─ ─ ─ ─
    冒頭台詞の中で甘奈の声で言う「こんな日は、こどもの頃のことを教えて?」とは何の事なのか。摩美々と2人でそういう話をしたのだろうか?
  • 果穂と話す時は いつもの「っす」ではない口調の違うあさひ。保護者感の有る灯織。
  • 珍しい組み合わせ感の強い2人。甘奈に対して会話した感想を求める摩美々。たのしいやり取り。
  • みんなに飛び込みを強く期待されるプロデューサー。答えていく。
  • 4話 ─ ─ ─ ─ ─ ─ ─ ─
  • 甜花と霧子が同じゲームを楽しんでいる(or甜花の楽しむゲームに一緒について行っている?)霧子。意外な組み合わせ。
  • 5話 ─ ─ ─ ─ ─ ─ ─ ─
  • 水着着用の温泉を実質貸し切りで。
  • 樹里と結華のお互い慣れてきたやりとり。結華曰はく樹里は「放クラ名ツッコミ役」。
  • あさひが周りに迷惑をかけていないか心配する冬優子。プロデュースシナリオやストレイライトのストーリーイベント「Straylight.run()」では結果的にもう一つの顔を見せる冬優子だがユニット外では「ふゆ」を維持している。
  • 真乃がかわいい。
  • 「はづき」呼びになっている千雪。関係性が変わってきた? もっとも千雪は結構テンションが上がってくるとはっちゃけるタイプなのでそういうテンションだったのかもしれない。
  • 冬優子はどういう気持ちで「アイドルだってこと忘れちゃいそう」と言ったんだろうか。

  • 6話 ─ ─ ─ ─ ─ ─ ─ ─
  • 注意するところではしっかり注意する甜花。
  • エンディング ─ ─ ─ ─ ─ ─ ─ ─
  • 2人離れてそれぞれの場を過ごした甜花と甘奈。「また来たいね」。
  • 飛び込みを気に入ってしまったプロデューサー。
  • サポートSR凛世 ─ ─ ─ ─ ─ ─ ─ ─
  • 樹里「今回は5人で来れて良かった」→以前(3名様極楽旅行記)は3人で温泉に行っている。

合宿という形では有りましたが、練習風景+楽しみ部分というよくある合宿的な感じではなく、283プロの夏の情景とそこで出会った不思議を描くストーリーでした。

不思議な部分は児童文学的な話でしたね。ひと夏の不思議、にしては危険な結末に転がる可能性も有りましたがその辺も児童文学的な感じです。

日常部分についてはこの物語で新しく何か成長を見せるというよりは、これまでの歩んできた各ユニットが集まるとどういう風景・情景になるのかというのを見せるストーリーでした。しっかりしてきた甜花であったりいろいろな人とうまく行っている灯織も印象的でした。ストレイライト加入後の初の複数ユニットイベでも有りましたが、やはりメンバーが増えると構図の変化も有り、あたらしいやりとりもありで良いですね。もっとエピローグが欲しかったなーという印象は有り、あと1話欲しい感じですが、そこは不思議な部分のパートとしてはエピローグをやりすぎない方がいいだろうしバランス的な物なのかなと思います。

冬優子の言動であったり霧子にとっての鏡であったり、まだ謎が残っている点も有あったり? 「こどもの頃のことを教えて」の会話の内容も気になりますが、みなさんはどう思いました?


「選定した技術が1年で死んだ話」の1年後

1年半前に以下のような記事を書きました。その記事が前提となり、その続きになります。

対応の方向性

2018年末ごろから Symfony 4.2 への移行を始めました。Symfony 4 についての日本語情報はかなり少なかったので、数少ない日本語情報に感謝をささげながら、基本は Symfony 公式のドキュメントを Google翻訳にかけて読みながら対応しました。

※ 得られた知見を本ブログ内別記事にまとめています。

Silex 1.x → Symfony 4.2 への移植の実際

現状の2代目システムの実装としては Silex 1.x での実装となり、依存性注入の仕組みは Pimple というアレイアクセスベースのシンプルなサービスロケータ、クラス構成の主要な部分としては、コントローラ、サービス、リポジトリのインタフェース、リポジトリ、DoctrineDBALで読みだしたレコードを保持したりバリデーションが実装されていたりするレコードオブジェクトという構成になっていました。

コントローラとビュー

まずはコントローラの移植になりますが、基本的にはこの部分が実コードでは一番重いものになりました。Silexのルーティングから Symfony のアノテーションを使った物に置き換えていく作業は主に以下の内容になりました。

  • SilexのクロージャベースのルーティングをSymfonyのアノテーションベースのルーティングに書き換える作業を進めます。どちらか一方でしか出来ない機能という物がなく、淡々と対応すれば完了しました。ただし物量が多い。
  • Requestオブジェクトなど要素要素の機能はもともとSymfonyコンポーネントを使っていたSilexなのもあり、そのまま使い続ける事が出来る。
  • リダイレクトなどは関数名が変わってくるので調整する。
  • ビューはTwigがそのまま使えるのでセッションに関する扱いだけ調整すればそのまま動作する。
  • Pimpleを使っていたDIは全てコンストラクタインジェクションに変更。あとはSymfonyが勝手にサービスを注入してくれる。

ルーティングは書き換えになりますがコントローラ内のアクション処理としては9割そのままコピペで動いた印象です。残りの1割を書き換えていきました。

サービス

ここでいうサービスは所謂ビジネスロジックです。サービスクラスは一部Pimpleのサービスロケータを引き回している部分が有ったので全てコンストラクタインジェクションか、コントローラから呼ばれる際のメソッドインジェクションに変更しました。ログ出力に関しても同様に Psr\Log\LoggerInterface を注入するように変更。それ以外はSilex独自の機能への依存がほとんどなく、ほぼそのまま動作しました。

リポジトリとレコードオブジェクト

リポジトリの実装はDoctrineDBALの存在にがっつり依存していましたが、これはSymfonyでも同様に利用できるので問題になりませんでした。ほとんどの処理がそのまま動作しました。

テスト

PHPUnitで実装されたテストは全体の2~3割程度に調整が必要になりました。この背景として元々使っていた phpunit/dbunit の開発終了が有ります。
https://github.com/sebastianbergmann/dbunit

データベース周りのテストを行う際にレコードの取得結果を比較したり、YAMLファイルで定義したデータをDBに流し込んだりリセットしたりなどの機能を提供しているライブラリなのですが、これが開発終了し新しいPHPUnitに対応していかなくなる事態になりました。

色々方法は考えたのですが、phpunit/dbunit の提供する機能のうち、実際に利用してたものだけについて互換実装を作り込んで使う事にしました。YAMLファイルを読み込んでDBに書き込む機能、欠けた部分のある連想配列を欠けていない部分のみで比較する機能などを関数のインタフェースに互換性を持たせながら実装して、これは1ファイル1クラスのシンプルな互換機能になりました。もちろん PHPUnit 8系で問題なく動作する物になっています。

結果

期間としては大体3か月程度でSymfony 4.2 への移植が完了しました。これは想定よりもだいぶ短い期間でした。併せて PHP 7.1 から 7.2 への移行を行ったり様々な追加機能を載せたりしていますが、現状問題なく運用し続けています。上手く行った要因としては以下が有ったのかと思います。

  • Silex 自体の開発が終了したと言っても Symfony は健在なので、置き換えが必要なクラス、機能が最小限で済んだ。結果論ではあるがSilex採用時の「Symfonyコンポーネントを使ったフレームワークにしよう」という選択に助けられた。
  • もともとサービスクラス、リポジトリ、レコードオブジェクトがほぼSilexに依存しておらず、依存関係も依存性注入を使った作りになっていたので移植コストが低かった。再設計時の設計が(ベストかどうかはともかく)悪くなかった。
  • 初代システム(1ページ1PHPファイル)とは違って2代目システムはテストコードが有ったので、動作確認のコストが抑えられた。テストが書かれていなかった部分やテストは書かれているもののカバーしきれていなかった動作、その他もろもろでバグは出たものの、それでもテストが無い状態よりははるかに楽になった実感が有る。

結論

  • フレームワークの機能を便利に使いつつも 、それに依存しすぎない疎結合な設計になっているとフレームワークが開発終了に見舞われてもコードの大部分をそのまま動かす事が出来る。それまで「疎結合大事って言ってもライブラリ、ユーティリティ的なクラス以外はあんまり再利用したりしなくない? テストが書きやすくなるのは間違いないけど」と思う部分も有ったが、テストが書きやすいだけではないフレームワークに対する疎結合の重要性を体感した。
  • さすがにフレームワークが変わるレベルだと動かなくなるテストコードも少なくないので「元と同じテストが全部通ればOK」とはならないものの、とはいえ有るのと無いのでは全く違う。テストコード大事。