スプレッドシートから映画はしごスケジュール提案ページを作るぞ!
作りました。
正確な仕様はJR川崎駅周辺の三劇場における毎週水曜日の上映スケジュールからはしご可能な映画を提案、もしくは選択した二本の映画ではしご可能な上映回の組み合わせを提案するページになりました。諸々の制限は労力の問題です。
さもチャット風に表示していますがタイトルの通りスプレッドシートから入力したデータであり、全通りの組み合わせから該当のセルを呼び出しているだけです。会話どころかここでは計算すらしていない。ごっこ遊びの実用に支障はないでしょう。
以下に製作手順をざっくり記しておきます。何らかの備忘録。あるいはいつか似た物を作りたくなった誰かの役に立つこともあるでしょう。
0.動機
mktbnは劇場で映画を見ることが好きなのですが、生来ケチな引きこもりなのでどうせ行くならと同じ日に二本、三本まとめて見ることがあります。所謂はしごですね。
毎回ではないので普通に一本だけ見るときもありますし、そもそも見たい映画が何本もなかったり、何ならはしごのつもりで行っても一本目で満足して帰ったりもします。逆に一本目が全然だったのでもう一本見たり、二本目の途中で疲れて寝たり、上映途中でなんだか虚しくなって帰ったり……など、お金と時間に自由を与える手法はみなさんも色々お持ちでしょう。映画のはしごは誰の心にも存在する普通の選択肢です。
さてこのはしごは当然一つの劇場で可能な行為ですが、映画館が近在する地域であれば選択肢がぐっと広がります。東京都で言えば十件の映画館が密集する新宿、同率で渋谷、六件の池袋も良いですね。上映作品が重複する大手のシネコンだけでも上映時間は柔軟になりますし、独立系やミニシアター寄りの劇場が一つ加われば作品の幅が大きく変わります。
にしても新宿は密集しすぎじゃないですか? 人も車も多すぎるしドブくさいし、映画館がなきゃ近づきたくない退廃シティ第一位。マジでみんな何がしたくて集まってるんだ。
ところで実際に別劇場間でのはしごを考えることは結構な面倒な作業です。何しろ各劇場の上映スケジュールは当然各劇場のページにあるため、比較検討にはページを並べて矯めつ眇めつ眺めるしかありません。そりゃそうですよね。劇場からすれば他所に客が流れること自体にメリットはなく、むしろ売店のためには自店でほどほどに長居させる方が良いでしょう。分かります。レンジでチンしたホットドッグに文句をつけても始まりません。
とはいえ我々ははしごがしたい。それに面倒とは書きましたが「あれとこれが見たいな……こっちの時間とあっちの時間で……昼は富士そばかカレーハウスピヨ(川崎地下街のとにかく早いカレー屋)で……」と考えて実践することに楽しさがあることも事実。ただ手間は手間です。
ああ、こんなとき見たい映画を選んだら良い感じのはしごを教えてくれるツールが、どこかにあればなあ……。
1.材料はこちら
ChatGPT
ご存知相談役兼インターネットの先生。誤情報も自信ありげに伝えてくるので注意は必要ですが、ネット周りの情報かつすぐ検証できるものなら大いにあてになります。無責任な趣味には十分。抽象的な質問が通るのも助かる。少なくとも広告とカスのまとめサイトしか出ないGoogle検索より全然有用です。
Googleスプレッドシート
後述するGlideがスプレッドシートから直接流し込める仕様であったため、作業の大部分はこちらで進行。
Glide
typeguard社のノーコートアプリ開発ツールです。直感的な操作でそれっぽくできる簡単さと無料で公開まで行ける気軽さがメリット。他社の広告が出ないのも良い。いや全編英語&マニュアル見当たらずでいくらなんでも直感的すぎる。あと広告を入れられないので一銭も儲からない。動かしながら把握しましょう。
各劇場サイト
上映スケジュールをコピーしてスプレッドシートに回しています。API云々ではなくテキストのコピーのみ。もちろん参照したほうが確実かつ効率的ですし、水曜だけとか片手落ちをせずに毎日で出せるのですが、個別の利用規約が気になるので控えめにやります。これも怒られたらやめます。映画の紹介文ならともかくスケジュールは公示情報なので、自動でいただいても大丈夫なように思えますが……。更新作業の時間で普通にはしごを考えれば良いのではないでしょうか。
2.作ってみよう
場所は川崎
今回の対象地域はJR川崎駅周辺としました。近在する劇場は「TOHOシネマズ 川崎」「109シネマズ 川崎」「チネチッタ」の三つ。試作なので控えめな数からという発想であり、実際にmktbnがはしごする頻度が高いことも採用の理由です。
大手シネコンが二つと独立系の雄が一つ、スケジュールと作品数の両面がほどよくカバーされた実践的な地域ですね。居心地もまあ……日の出ているうちは新宿より全然マシ。安全地帯と言っても過言ではない。入りやすい飲食店も多いし、道すがら路上飲酒や常に定員オーバーの喫煙所も見られて落ち着きます。
Googleスプレッドシート
スプレッドシートの完成形は……こう! 動きゃええんや動きゃ。上映スケジュールを統合し、条件ごとにはしご表を組みました。
Glide
データを取り込んだGlideの作業画面はこんなです。未だによく分からない部分が多い。一人でやってるのに作業者の名前がKatoだったりIchikawaだったりしています。怖いですね。
大まかな理解としては上部タブのDataとLayout(Actionは本当に分からないのでもう放置)、Layout左のNAVIGATIONとCOMPONENTS、右のGeneralとOptionsと分けて考えれば事足りるでしょう。事足りました。
Data
読み込んだデータを置いておけるところ。無料プランなので値のみの表ですが、有料だと入力に応じて関数も動作するっぽい? 自信がない。現状でも直接の書き換えが可能でデータの更新に支障はありません。ユーザーによる編集も可能(範囲の制限やON/OFFもできる)なので、後述するOption内のVISIBILITY、FILTER DATAと合わせれば動的に表示することができます。
Layout
実際に表示されるページの編集画面。
NAVIGATION
実際の画面に表示されるタブ。ページ単位で読み込むデータを指定できる。
COMPONENTS
データの表示形式やオブジェクトをテンプレートから選ぶ。色々あるような、自由がないような。ほぼ開いてみないと分からない。
General、Options
個々のNAVIGATIONとCOMPONENTSの動作を指定する。Generalは表示の細部とどのデータを読むかの設定。Optionsは主に動作面の機能で「画面上で条件が揃ったときに特定のデータを表示する」などが設定できる。
例として「あれとそれを見る」のLayoutを見てみましょう。
このページに存在するCOMPONENTSはChoiceが二つとCommentsが四つ。まずChoiceでシート2(=全上映時間の組み合わせ)を読み取り、選択したタイトルをDataのユーザー編集セルに再入力するよう設定。二つ目のChoiceも別のセルで同じ動作を行います。
CommentsにはOptionsからVISIBILITYつまり画面での表示条件を作り「Choiceによるユーザー入力があった場合のみ画面に現れる」ように設定。さらにFILTER DATEで「二つのユーザー入力と合致するタイトルの組み合わせのみ表示する」と設定すれば完成です。お疲れ様でした。
3.他雑感
作業時間はなんやかんや試しながらで一週間ぐらい。ChatGPT先生のお陰で関数はバシバシ入りました。インターネット上に蓄積されてきた知見に感謝するべきですね。ありがとう先輩たち。本当にさようならGoogle検索。
デザインはともかく機能と仕組みは固まったので、同じ形で新宿とか渋谷もできるでしょう。ほとんど行ったことないけど京都・大阪にも有望な地域があると聞きます。やろうと思えば、その気になれば……作ったところで僕が毎週のように利用するのかという問題が大きいですね。以上です。
この記事が気に入ったらサポートをしてみませんか?