OUPC 2023 開催記

はじめに

2024年1月6日・7日にOUPC 2023というコンテストを開催しました。

オンサイトの詳細はhttps://connpass.com/event/298268/、1日目のコンテストサイトはhttps://atcoder.jp/contests/oupc2023-day1、2日目のコンテストサイトはhttps://onlinejudge.u-aizu.ac.jp/beta/room.html#OUPC2023Day2にあるのでそこを参照してください。

私は前回・前々回のOUPCも運営に参加しましたが、今回は初めてのこと尽くしでした。具体的には以下のことが初めてで、おそらくその多くがOUPC全体でも初めてです。

  • 2 Days 開催
  • 他団体からの問題提供
  • 5時間セット作問
  • AtCoderでの出題
  • オンサイト開催

いままでのOUPCの集大成としていいコンテストにできたと自負していますが、開催に当たってやったことは簡単なことではなかったのでここに体験談を記して今後プログラミングコンテストや他のオンサイトイベントを開催する方の参考になればと思います。

北大との接点について

5月に技育博というIT系学生団体の交流イベントに参加して、そこでHCPCの方との交流がありコンテストの共催を提案させていただきました。 技育博、交通費出るし楽しいのでオススメです。

作問について

スケジュール

OUPCの以前の作問はおおよそ以下のスケジュールで行われていました。

  1. 原案を考えた人がとりあえずチャットツールに書き込む
  2. 問題として成り立っていれば共有の場所に問題文やテストケースを置く
  3. チャットツールで様々議論しながら出せるレベルの問題に仕上げていく(出せるレベルに達せなかったらrejectされる)
  4. テスターに依頼し、指摘事項を修正する

今回も同じような感じで行いました。

7月下旬に部内でwriterを募り、8月上旬に今年の作問環境やスケジュールの説明をするキックオフ会議を行いました。 北大とは11月以降にコンテストを開催すると同意していたので、その時点では以下のようなスケジュールを提案していました。 はじめは去年と同じ3時間/AOJ使用くらいの想定でいたので最終的な構想とかなり異なるんですが、それでも今考えると問題調整期間が短すぎて絶対無理です。 結局1月になったわけですが、できる限り早く準備を始めることは全てのイベント準備で大事なことだと思います。

ということで、とりあえず8月中を目処に原案の募集が行われました。 簡易的な問題文とテストケースのセットまで投げてという要求をしていましたが、結局とりあえずざっくりした問題の案だけでも出してくれという感じになりました。

9月上旬に近況報告の会議を行いました。 なんと31問もの原案が提出されていました。 中には問題に昇格するのが不可能そうな問題もあったので1問ずつみんなで検討し、出題可能そう、かつ出題したい問題として15問が選ばれました。(最終的な大ボス問となるHan Burger 2とSpecial Matrixはこの時点では生まれていませんでした)。 テストケースの作成が難しそうなものや、すでに改題によって原案者が完答できないものが生えていたので、原案者に限らない形で各問題のセット作成担当を割り振りました。 また、部分点を追加したいという話が出ていたのでAtCoderでの開催を検討する話がありました。

AtCoderの使用については、9/30の学生選手権決勝でchokudaiさんに軽く話を通して、10月中旬辺りに正式に受諾をいただきました。

9月・10月はひたすら問題セットの改善に努めました。 vwxyzさんがHan Burgerの考察中にHan Burger 2を、Sum Sumの考察中にSpecial Matrixの元となる問題を思いつき、全17問となりました。

maspyさんとygussanyさんに「11月中を目安に問題を仕上げていく手伝いをしてください」という話を受諾していただいていたので、11月はじめ頃に問題セットを渡しました。 まだ内部でも不完全な部分がわかっている状態だったので予定より完成度の低いものを渡してしまって迷惑はかけましたし、結局12月に入っても改題が行われたりして年始ギリギリまで調整をしていました。危ない。

「D問題以降のすべてに部分点をつける」構想は12月はじめになって作られたものだったので、部分点追加の作業は特に大忙しでした。 黄Diff以上想定が多いセットだったので、緑以下くらいの参加者がオンサイト会場で5時間暇にならないように設置したものでしたが、部分点獲得も難しいものが多くなってしまっていたのでもっと簡単な部分点を追加しても良かったのかなと反省しています。 OIで部分点の多い問題を出題しているsquareさんにも「このセットもっといっぱい部分点をつけれるよ」と言われたので、部分点はもっと時間をかければ洗練できたのかなと思います。

分担

AtCoderの公式コンテストやUTPCは1問を1〜2人くらいで仕上げることが多いかと思いますが、阪大のメンバーでは1人だけで1問仕上げられる能力(橙以上かつ作問経験ありくらい?)を担保できないので、OUPCでは以前から各問題についてwriter内でオープンに話し合っています。 特に去年・一昨年同様vwxyzさんに全問題にコントリビュートしていただいたので問題のレベル(質とともに難易度も…)がグッと上がりました。本当に感謝しています。

テスターは去年は慣れているygussanyさんとE869120さんに加えて内部の学生(WA_TLE, Daylight, littlegirl112, hiiragi589)を呼んでいました。 今年はmaspyさんとygussanyさんにお世話になりました。 内部学生テスターの話や北大との相互テスターの話もありましたが、阪大生や北大writerにはオンサイト会場に来てコンテスタントとして参加してもらうことにしました。

使用ツールの難しさから問題文やテストケースの更新作業はほぼすべてKowerKointが行っていまいしたが、すぐに反映させたいものだと思うので、少ない環境構築でも自動でアップロードできるような体制を次はもっとちゃんと作ろうと思っています。

ツール

チャットツールは去年まではSlackを用いていましたが、無料枠の制限がついたのでDiscordに移動しました。

問題の管理はGitHubで行いました。 別の問題に影響を与える変更による事故を防ぐために今年も問題ごとにブランチを分けて作業してもらいましたが、どちらかというと本当はそれならリポジトリを分けるのが正しいんだろうなという気持ちになっています。

テストケース作成・検証ツールとしてはRime(https://rime.readthedocs.io/ja/latest/)を使用しました。 Rimeは去年から使用していましたが、以下のような問題があります。

  • あるSOLUTIONのテスト実行が失敗したケースで止まってしまう
  • 部分点への対応が難しい
    • validatorでテストケースファイル名を受け取れないため部分点ケースのvalidateが難しい(TESTSETを2種類作ればよかったのかも)
    • 得点の設定はできて解法の検証はできるらしいが、しなかった

使い方が洗練できてないのもあると思いますが、Rimeを引き続き使用するのか、Rimeに必要な機能を追加してコントリビュートするのか、代替ツールを自作するのかはまた次回考えることにします(りあんさんにはできればRimeに追加してほしいと言われた)。

また、今年から新たに制約・問題文管理ツールとしてstatements-manager(https://statements-manager.readthedocs.io/ja/stable/)を使用しました。 制約ミスを予防できたので良かったかなと思います。 Pythonでのgenerator作成は想定されていなかったので自分でかなり簡易的なパーサーを載せていました。 これも来年もっとうまくやりたいです。

講評・解説について

問題の質が最優先かつ手一杯だったので、解説はあまり質を求めない形でいきますと言いました。

わりとギリギリ、年が明けてから解説用のスライドを作成しました。 会場の解説で少し手間取ったりしたので流石にもう少し早く準備すべきだった気がします。

講評で出すいつもの棒グラフ(下図)もDay 2の朝に会場に来てから急いで作りました。

北大の解説スライドがきれいだったので、流石にオンサイトで発表するならもう少し質を求めるべきだったかも知れません。

オンサイト会場運営・告知などについて

日程について

9月上旬のwriter会議で、12/16-17を目標に開催する話が出ていましたが、第2回緑以下コンテストが被りそうだったり(https://twitter.com/kusirakusira/status/1707235862373888222)会場予定の中之島センター7Fが12/16は埋まっていたりの理由で1月開催に伸びました。

北大とも相談して1/6-7に決定しました。

正月明けすぐで都合の悪い日もいるかと思いましたが、

  • 帰省ついでに行けて移動コストが軽くなったという人
  • 次の日が祝日なので後泊して大阪観光をする人

がいたので悪くなかったのかなと思います。 一方で卒論・修論に追われている人もいました。

特に次の日が休みなのは好評っぽかったので今後やるとしたらまた3連休や長期休暇の時期を狙いたいと思っています。

会場について

会場選びについては、

  • 100人くらい入れたい
  • 1人1000円以下の参加料で借りれる場所、できれば無料で!

というかなり難しい条件でスタートしました。

安く大きな施設を借りるとなるとやはり大学の施設になりそうだったので、大阪大学中之島センターに目星をつけました。 100人を入れられる7階の会議室は2日で434,000円と本来なら高額ですが、公認団体の課外活動として認められたのでなんと無料になりました。 公認団体にしておいてくださったこたまねぎさんに大感謝です。

次回開催時により大規模にすることやスペースを広くすることを考えるならスポンサーをお願いする必要がありそうです。 企業との交流も大事にしていきたいです(協力いただける企業様お待ちしております)。

5時間/4時間コンテストの会場で懸念だったのが

  • 飲食場所
  • 電源
  • インターネット

の確保でした。

まず飲食については、センターのQ&Aに禁止とあったので厳しかったです。 許可されていればICPCのようなお菓子コーナーの設置ができて楽しかったですが仕方ないですね。 行事の性質上水分補給が不可欠なので許可してくださいと申請して飲料水の持ち込みは許可されました。 ありがとうございます。 昼食を会議室で取ることはできませんでしたが、1日目の解説を11時に終わらせることで2日目の昼食も十分間に合わせられたはずです。

電源についても、人数分のコンセントはないことがわかっていたので電源タップの参加者への持ち込み依頼をしました。 参加者に電源タップを持ち込ませることの前例は第2回緑以下コンテスト開催記 - kusira’s blogから得られたので安心しました。 持参していただいた方ありがとうございました。

インターネットについてもセンターに問い合わせてお借りできたので確保できました。 接続が不調という話を1件だけ受けましたが基本的には不便なかったのではないかなと思います(不便だった話があったら教えていただければ今後の参考にします)。

電源・インターネットについてははじめ検討し忘れていましたがないと崩壊する要素なので必ず確認するようにしましょう。

告知について

今回は告知のXもすべてKowerKointが担当しました。 以前はこの枠はBadlyluckyさんやHerring101君におまかせしていましたが、その頃に比べて無愛想なポストが私です。 以前は「このタイミングでこの文章をツイートする」というのを会議で決めてそれ通りにツイートしていたので準備が良かったですが、今回はかなり突発的にポストしていたためあまりよい内容にできず、反省しています。 ハッシュタグも使えればよかったです。(公式が使っていないにもかからわず積極的にタグ付けでポストしていただいた方ありがとうございます)

AtCoderのコンテストサイトも締切1週間前には出したいという思いがありました。 AtCoderはOUPCの公式Xアカウントよりも明らかに多くの競プロerがいますし、AtCoderでの開催やtester: maspy, ygussanyに安心して参加登録される方もいると思ったのでできるだけ早めに出しました。 TTPCの二番煎じっぽいですがクリックするたびに加速するmarqueeも話題になったので功を奏しました。 自分の作ったネタHTMLでみなさんが遊んでくださるのは嬉しいです。

名札について

他のオンサイトコンテストの様子を見ても名札は交流のために必須で、コンテストのお土産にもなるので作りたいと考えました。

名前とアイコンを載せる必要があるのですが、compass登録のものよりSNSAtCoderで使っている名前・アイコンのほうが交流しやすいという人もいるので困りました。 いちごさんにHUPCでどうしたか聞いたら、「自分で調査した」とのことでしたが、勝手に検索して設定されるのが嬉しくない人や間違えられたくない人、強いこだわりがある人などのために事前にフォームを出しました。 フォームは1/1-1/3ととても短い期間での募集でしたが、半分以上の人から回答をいただきました。ありがとうございました。

さて、集めた情報をひたすらPowerPointに切り貼りしました。名札ホルダーを持参してもらうということもあって一般的な名刺サイズ(91mm x 55mm)に合わせたいと思いました。 理論上名刺サイズはA41枚に10枚配置することができますが、ギリギリなので4枚配置していました。 これをPowerPointで作成する方法は検索してもあまりでてこなくて自分で以下の方法で対応することになりました。

  1. スライドサイズを91mm x 55 mmとして1人分の名札を全面に作る
  2. スライドサイズをA4に変更する(元のオブジェクトはスケールしない)
  3. 同じものを9個コピペしてきれいに配置する

グループ化ができれば配置も「整理」をつかってより簡単に行うことができますが、プレースホルダーを入れていたので手作業選択→マウスドラッグでなんとか頑張りました。 さて、これをダイソーの厚紙などに印刷して自分で切り取る予定だったのですが、1月4日に行けたのが大学生協の購買だけだったためそこで写真のような名刺専用の台紙を買いました。

この台紙は場所が決まっている10枚配置だったため新たに配置し直す少し大変な作業が割り込みましたが、ズレ1mm以内でうまく印刷できました。 印刷業者に頼むより安いので今後のオンサイトイベント用に自分の名刺を作るときにも利用してもいいなと思いました(印刷の質は明らかに業者の方がいいですが…)

これをオンサイト会場に持ち込む…はずだったんですが、なんとDay 1の朝に家に置いてきてしまいました… 行く前にチェックはしていたのですが、修正が合った人の名札がちゃんと合っているか不安に合って最終確認をしていたらそのままかばんの外に… 忘れ物が多いので本当に直したいです。 私の家は会場から片道1時間強で、引き換えしてもギリギリ受付に間に合うので戻っても良かったのですが、こたまねぎさんが機転を利かせて梅田まで戻って厚紙印刷→カットをやってきてくれました。 結局受付には少し間に合わず先に名札無しで部屋に入れることになってしまったし、裁断も急ぎだったので専用台紙よりはズレが目立つことになっていまいました。こたまねぎさん並びに参加者の皆さんには大変ご迷惑をおかけしました。 こたまねぎさんは名札ホルダーを忘れた人のための予備も用意してくれていたり、前日に会場の下見に行ってくれていたり、Day 1夜のバックアップ用に近くに泊まっていたり最終日の忘れ物対応をしてくれたりで、常時めちゃくちゃ助けられました。

Day 2は元の名札を持ってきました。 2日間で別々の名札を配布したので出席数の把握が楽という利点はありました。

当日運営について

部屋の配置はサイトで見たとおりでほとんどレイアウト変更がいらなかったため設営に時間は要しませんでしたが、前述した名札事件の対応ができたので早く来てよかったです。

会場に掲示するスライド(諸注意や無線LAN接続情報が書かれたもの)を 即席で作りました。 自分のPCは別で使うので別にスライド投影用のデバイスが必要でしたが、前日に購入していたLightning-HDMIアダプタが活きて、あまり使わないiPadをスライド投影に活用することができました。

受付や1階での案内役を運営に割り振ってなんとか回しました。 幼女先輩が運営でないに関わらず受付とチーム分けを先導して手伝ってくれて助かりました。

ところでチーム分けに関しては当日のチーム分けを予定しているかどうかを事前にアンケートで取っていました。 事前に決めてくる人が大半だと思っていたので実際は半分くらいの人が会場で組むというイメージを先につかめてよかったです。 Day 1は適当に3人ずつ取って作ったそうですが、不本意にも赤赤灰チームなどが生まれてしまった(それはそれでおもしろかったのかもしれない)ので、Day 2は「完全ランダム」と「レート順に3人ずつ」で別れてそれぞれその方針で組むことになりました。それぞれ同じくらい希望者がいたので今後合っても同じような感じで分けると良さそうだと思っています。

大層な進行は必要なかったので会場の運営は当日の状況を見てその場で回そうと考えていたのですが、流石に少し準備不足だったかも知れません。 しゃべるセリフを考えていなくてかなりコミュ障の進行になっていまいました。 いちごさんのDay 2解説の進行がうまかったのであれくらい準備していくべきだなーと思い知らされました。 参考になりました。

参加者として

運営もやりつつ参加者や北大スタッフとの交流もたくさん行いましたし、Day 2はコンテスタントとして参加しました。 UPCなので大学生が半分以上だった気がしますが、中高生、ベテラン競プロer社会人、社会人になって始めた人など様々な年齢層の人が参加されていて楽しかったです。 JOIやICPCは同世代ばかりなので新しい景色を感じました。

Day 1の夜に双子と同テーブルで食事をしてすごいパワーを感じました。 気合を入れられた感じがします。 主に来年のICPCに向けて実装のスピードを上げたいと思います。

Day 2はレート順チーム分けに参加しました。 希望した中で3番目のレーティングだったので、りあんさん、vwxyzさんと組むことになりました。 赤コーダーと同じチームなのは初めてなのではじめ緊張しましたが、やりたいと言った問題はやらせてくれて、考察やデバッグも一緒にやってくれたので安心しました。 A、C、J、Kをやらせてもらいました。 オンサイトのなかでは(赤赤赤のSayaka_Manipulatorsには流石に勝てないとして)橙橙黄のKenchonKechonKechonに負けて悔しいですが、めちゃくちゃ楽しかったです。 コンテスト終了後にGの楽な解法を聞かされて3人であ〜ってなったり、Hの解説がすごくてびっくりしたりしました。 面白い問題セットを提供いただき本当にありがとうございました。

おわりに

OUPCのオンサイト開催は2年前からやりたかったことなので、ついに形になって嬉しいです。 writerのvwxyzさん, shinchanさん, くれはさん, shogo314さん、testerのmaspyさん, ygussanyさん、オンサイト運営を支えてくださったkotamanegiさん,olpheさん,幼女さん、HCPCのitigoさん,hato_さん,misaizuさん,ococonomyさん,tardigradeさん,Slephyさん,titanさん,tsutajさん,Today03さん,usatyoさん,winterさん、AtCoder,AOJの運営の方々、オンサイト/オンライン参加者の方々、過去のOUPCの築き上げた阪大OBの方々、OUPC準備に理解を示してくれた身の回りの人々、全てに感謝しています。

次回はどういう形になるかまだわかりませんが、2024年度も多分何かは開催するのでまたのご参加をお待ちしております。

ありがとうございました。

ラブライブ!サンシャイン!! 沼津・内浦地区聖地巡礼

はじめに

9月3日〜9月4日にかけて沼津に巡礼してきました! 現地で動けた時間は11:00~翌17:00くらいで、行きたいところはほとんど回り切って満足でした。

るるぶラブライブ!サンシャイン!!や各ブログを見ながら行きたい場所や順番、乗るバスの時間を決めていたら結構土地勘がつかめるようになりました。 アニメを見返すと「あーこれはここだなー」ってなる場所が多くなったのでスクショを撮って「場面→場所」のインデックスを貼りました。 さらにやまかずPさん作成の聖地マップを見ながらアニメの該当箇所を見返して「場所→場面」のインデックスを貼り、場所ごとにスクショと場面の内容が書かれた資料を事前に用意しておきました。 ニジガク聖地を巡礼したときよりも遥かに事前学習をちゃんとやったので場所を見たら何が起こった場所かはっきりとわかるようになりました。

まず、ラブライブ!サンシャイン!!の聖地の多数は沼津地区と内浦地区に分かれて分布しています(下の地図(やまかずPさん作成の聖地マップのスクショ)を見ればアイコンが集中している場所が2箇所あって、そのうち北側の市街部の方を沼津、南側の湾の方を内浦と言っています)。この2つの地区の間を徒歩で移動するのはかなり無理があるため、基本的にはこの間をバス移動しつつ周囲を徒歩で散策する感じになると思います。そしてこのバスも30分or1時間に1本しか来ないため、どのバスで帰るのか先に確認していくことが重要です。

さて、我々の行程は

という感じになりました。実は当初の予定では2日目の朝早くに沼津港を詰め込んでいて余計に密なスケジューリングだったんですが、1日目に乗車バスの早巻きができたので先に沼津港に行っちゃいました。エクストラプランだった西浦・長井崎中学校は達成できませんでしたが十分満足!

ここからは実際に行った場所と感想になります。おおよそ実際の行程順に書いているので地理的な位置関係がまとまっていない箇所もありますがご了承を〜。

1日目

沼津駅南口周辺

沼津についてホームから階段を上がったらまっさきにサンシャイン! 駅併設の商業施設「アントレ」の店々にはサンシャインの寝そべりやフィギュアを並べている店が多くて、地元民にも愛されているんだなということを早速感じました。

バスに乗ってマリンパークやみとしーに行く場合、得トクバスパックを買うと各900円ほど安くなることがわかっているため、アントレ2階の案内所で購入しておきました。翌日分も対応していただけました。 同じ案内所で沼津まちあるきスタンプ帳も買っておきました。 舞台になった場所にもそうでない場所にもたくさんスタンプがおいてあって、これがあると少し楽しくなります。

南口を出てすぐのロータリーの真ん中にあるSLの車輪?のオブジェ。 東京のイベントから帰ってきて学校の人たちに出迎えられてシーン(1期8話)や沼津にやってきたSaint Snowを見送るシーン(2期10話)など、駅を利用する場面では度々使われていて、幻日のヨハネでもヨハネがトカイから帰ってきたところなどで再び登場しています。

駅南口からロータリーを挟んですぐ向かいにある「SUN!SUN!サンシャインCafe」に早速入りました。 店内には「MIRACLE WAVE」の元になるテーマをみんなで書き込んだホワイトボード(2期5話)や鞠莉ちゃんの銅像などの再現オブジェ、等身大パネル、キャストさんたちのサインなどたくさん飾られていて面白かったです。 メニューは幻日のヨハネ仕様になっていて、9月のマンスリーメニューはリコとルビィの誕生日メニューになっていました。テーブルごとにメインのキャラがいそうでしたが見事にルビィちゃんの席を引き当てました。やったね。

2期5話部室の再現ホワイトボード

「ルビィちゃんバースデードリンク」

メンタイエッグクリームパスタ(リコちゃんお誕生日)

ヨハネちゃんドリンク(同行)

ヨハネ魅惑のミステリウムサンド」(同行)

中で「はなまるパン」も販売していて気になっていましたが12時からの販売だったので買えず。

淡島

食べ終えたら沼津駅のバス停からマリンパークへ移動。

例の看板
バス停横の看板は、1期9話で朝から走る果南ちゃんを尾行する1・2年生が覗き込んでいたところです。

島に渡る前にチケットを引き換えてマリンパークの船に乗ります。 マリンパーク行きの船は完全にサンシャイン仕様にラッピングされていてキャストのサインも至るところに書かれていました。7年くらい前にYouTubeで見たものよりはラッピングが色落ちてきていましたが、船なので仕方ない。

対岸から見たカエル館(果南宅)

船から見た淡島ホテル(鞠莉宅)

船着き場の見覚えのある桟橋は「僕らの走ってきた道は」にも使われていました。 写真を取った場所と向きは実際とは逆なので、ミス。

さっそくマリンパークの水族館を見て回りました。水族館自体は小さめですが近海のきれいな魚やアザラシ・アシカ、ウミガメなどを見れて面白かったです。

隙間から顔を出すアシカ。写真がうまくないので可愛さが伝わらない。

アシカショーを見たかったのですが40分後くらいだったので一旦反時計回りに島をぐるっと一周お散歩します。

2期4話でお金を洗ってたところ。私も5円を100倍にしてほしいと願いながら洗いましたが、お財布の中の5円玉は未だ500円玉になりません。

となりには花丸ちゃん善子ちゃんが入ってた例の顔出しパネルもありました。

その奥に鞠莉ちゃんの実家である淡島ホテルがあるんですが、一般客は入れないのでトンネル「Blue Cave」を通って島の反対側に出ます。 このトンネルは2期10話で3年生が集まってそれぞれが将来遠くに行くことを伝えたりしたところですね。

トンネルを抜けた先にある桟橋は、1期8話や2期1話で果南が鞠莉を呼び出した場所なのですが、行ってみると少し印象が違った気がします。 ところで奥に写っているのは富士山ですが、雪のない富士は初めて見たのでびっくりです。

島の反対側はたまに釣り人がいましたがかなり何もなかったです。知らない土地を歩いてるだけでも面白いですが。

ぐるっと回ってきてカエル館。カエルがたくさんいました(それはそう)。カエルの展示箱は植物がいっぱい入っていて擬態しているので見つけるのが大変。見つけたときはちょっと嬉しい。

表にあった果南・店長専用ボンベ。フィンもあったよ。

時間になったのでアシカショーをみて、いよいよ淡島神社登頂を目指す。登山口はカエル館の左側です。

入り口には劇場版のヒット祈願絵馬が。この他マリンパークにも少し前の宣伝パネルを片付けずにおいてあったりして面白い。

これは例の「がんばって」看板。 2年生組、休憩するの早いよ!

これは例の「無理せず休みながら」看板。

あと少し看板は撮り忘れました。

無事登頂! これを走って上がってるのはだいぶん厳しいです。私は本気出せば多分駆け上がれるけど同行に無理させるわけにはいかないので流石に歩いて上がりました。(それでも終盤まで休憩なしに上がって、とてもがんばった)。 アニメだと結構整備された石段に見えるんですが実際には不等間隔で段そのものも斜面になってるかなり登りづらい階段でした。 上にはシャイナーたちの絵馬がいくらかかけられていて、中には神田明神から持ち込まれたものもありました。

さて、登りのときはスルーしましたが、中腹にあるロックテラスという展望台が、花丸ちゃんがダイヤさんを呼び出してルビィちゃんの話を聞いてもらうところです。感動。

この展望台から、浦の星女学院のモデルになった長井崎中学校を見ることができます。 現物の中学校に近づくのは気が引けるところもあったので遠くから見ることで少し満たされました。

沼津港

予定ではここから直接阿蘭陀館に行って夕食を食べる予定だったんですが、まだ17時くらいでお腹が空いていなかったので2日目の予定の早回しで沼津港に行っちゃうことにしました。

ジャンボエンチョー沼津店(2期5話で善子と梨子がペット用品を買っていたところ)が車窓から見えることがマリンパークへの行きでわかっていたので帰りに撮影してみました。撮影タイミングが絶妙で「ジャンボエコインランドリー」という謎の言葉が生まれてしまいました(訪問当時ジャンボエコーだと思ってたので突然のゴママヨキャンセルに笑っていたんですが、実はジャンボエンチョーだった。お恥ずかしい)。

さて、沼津港に行くためにバス停「二本松」で降りて30分ほど歩きます。

沼津港に向かう道はヨハネ逃走ルート(1期5話)の後半戦にあたります。 「沼津バーガー」の前はその一発目。ヨハネ推しでコラボメニューもあるお店で、当初の予定だと2日目の朝に行く予定だったんですが、今回は断念してしまいました。

逃走ルート後半2枚めのカットは沼津バーガーを過ぎて割とすぐなんですが、かなり分かりにくくて1度スルーしてしまいました。写真はびゅうお見学後に戻ってきて撮ったものです。大信水産(アニメ背景では大田水産)の看板の形が変わっていたのでかなり印象が違います。

沼津港大型展望水門「びゅうお」。ヨハネが逃走ルートの終着点で、「僕らの走ってきた道は」にも使われています。

中に入ったら展望室になっています。1期11話で曜が鞠莉にお悩み相談したところですが、ベンチは実際にはありません。嫉妬ファイヤ〜〜。

阿蘭陀館

沼津港からまた20分ほど歩いて阿蘭陀館 下河原店へ。 ここは曜ちゃんの実家ということになっていますが、建物の外観は全く違います。

やはりオムそばを注文。 ケチャップと旗を渡されて自分で作る形式なんですが、まあバランス感覚の悪いことでYの下記初め位置が右過ぎて失敗しました。まあそういうこともある。

曜ちゃん家のハンバーグ(同行)

曜ちゃんグッズの量、やばい。 ここの店内もすごい量のサンシャイングッズが飾られていたんですが、本来は落ち着いた喫茶店という感じで一段上になってる座席はおしゃれな風景画などが飾ってありました。

狩野川沿い・上土

夕食を摂り終えて上土の市街地に戻り、御成橋を渡って狩野川の反対側へ。

こことわかる情報はかなり少ないように思えるのですが、どうやらこのあたりの河川敷近くに未熟DREAMERの舞台が設置されていたようです。 そして奥に見える「あゆみ橋」は、「僕らの走ってきた道は」でモブスクールアイドルが並んで踊ってた場所でもあります。

あゆみ橋を渡って再び元いた岸に戻るとすぐに中央公園。 本編では2期4話で参加していたフリマがあり、幻日のヨハネでは「ヨハネさんいってらっしゃいパーティー」が行われた場所です。

中央公園を出てすぐの「大手前」バス停。 フリマのあとダイヤが「ダイヤちゃん」と呼ばれたいことを果南と鞠莉に告白して大笑いされる場所です。

そしてこのあたりのあげつち商店街は幻日のヨハネでよく出てくる場所で、夏祭りもこのストリート上に出店やステージが並んでいました。

上土の道にある小さなアーチにはユニットごとにキャラクターのアイコンが施されていて、夜に見ると光っていました。街の中にラブライブ!サンシャイン!!が溶け込めてるのすごいよね。

メインの道沿いにあるグランマさん。お菓子の家っぽくてかわいい。「僕らの走ってきた道は」でダイヤさんが踊ってた場所だったり、「GALAXY HidE and SeeK」のドラマCDで登場したり(ドラマCD、意味不明でめっちゃ面白かった記憶なので久々に聞きたいね)。

向かいには果南推しの松浦酒店があったんですが閉店時間を過ぎていたし写真も撮りませんでした。

少し中に入ってつじ写真館さん。「僕らの走ってきた道は」でルビィちゃんが踊っていた場所で、幻日のヨハネでは(おそらく)ツキちゃんの家ということになっています。夜なので閉まっていましたがサンシャインに対してかなり友好的な温かいお店で、訪れたシャイナーの方々はお店の方とよくお話をしているようです。

ここは2期5話で善子がこっそり拾い犬の世話をしていて、梨子に代わりに預かってくれるようお願いしていたところです。写真左端は善子の家と思われるマンション、その向かいが沼津リバーサイドホテル。この間の通路が善子がAqoursに入ってくれないかと声をかけられて逃走をし始めるスタート地点になります。

稲荷神社のすぐ眼の前にある階段の一帯「かのがわ風のテラス」が、1期8話で東京から悔しい思いをして戻ってきた1,2年生に対して、ダイヤさんが果南・鞠莉と昔スクールアイドルをやっていたことを伝える場所です。

1日目はここまでです。ホテルがめちゃくちゃ安くてびっくりしたんですが、普通のきれいで大きなビジネスホテルという感じでした。Aqoursメンバーの誕生日にはスペシャルディナーブッフェイベントもやってるらしいですね。

2日目

7:30頃と少し遅め(※当社比)にチェックアウト。

仲見世通り・沼津駅南口周辺

朝食は予定を変更して仲見世通りのやば珈琲店へ。 ここは劇場版の序盤でみんなでお茶をしていて、曜ちゃんが男(?)の人とお話をしているのを見てしまう場所です。 「ジングルベルがとまらない」のドラマCDにも出てました。

モーニングのスタンダードセット。 トーストの他におにぎりも選べました。

すぐそこのこの交差点、ヨハネ逃走ルート前半のカットです。 この真後ろに、花丸ちゃんが大量の本を買っていたマルサン書店があります。閉店済みなのでぜんぜん気にしてなかったのですが、シャッターは残っていたりたまに店内でイベントをしていたりするらしいので一見しておくべきでした。

もうひとつ北側の交差点は「僕らの走ってきた道は」でAqoursを中心に大量のスクールアイドルが踊ってた場所です。(実際には帰りに後で撮りにきています)

仲見世通りの入り口。1期6話でPVを撮り始めてるカット。右下から飛び出す曜ちゃんは伝統芸能

商店街散策はこのくらいにして、駅前に戻ってきました。地下道のE2入り口は、逃走ヨハネが一般通行人にぶつかってしまったシーンです。一瞬だけどちゃんと謝れて偉い。

これがその次の逃走カットで、

これがそのまた次です。 謎の障害物越しのカット、アニメではたまにあって現物と角度を合わせてみるのが楽しい。

沼津駅北口周辺

沼津駅構内は通り抜けできないようになっていて、北口に移動するには少し西にある高架下をくぐりに行くか入場券を購入する必要があります。 バスの時間が結構きつきつになっちゃってたので入場券を購入しました。

駅構内に立ち入れるので行きに見なかった西側のほうの階段を上がってみたら、そこにもサンシャイン関連の広告物がたくさん。「キミノタメボクノタメ」は最高のED。

北口のバス乗り場周辺は1期3話で2年生組がライブのチラシを配っていたところです。

3人が並んでいた北口の看板。JR東海とのコラボ広告が貼ってありました。

曜ちゃんが配ってたあたり

梨子ちゃんがチラシ配りの練習をしてた壁

映画広告の前の、善子ちゃんにチラシを渡した道

花丸ちゃんルビィちゃんにチラシを渡した自販機の前、結構探したんですがわかりませんでした… あとでアニメを見返すと普通に見てた場所だったことが判明して悔しくなりました。研究不足。

映画広告のある建物「BiVi沼津」を曲がってすぐにある施設が「プラサヴェルデ」。曜ちゃんのお父さんのつながりで練習場所として貸してもらえることになった部屋(2期1話)や、予備予選の出場順の抽選会があった部屋(2期3話)などがここにあります。2期4話でバイト探しの話をしているシーンでは屋上にも上がっていますが、時間がなくて上がれませんでした。

2期5話で善子ちゃんが傘に導かれて犬を拾った場所がプラサヴェルデの横です。

プラサヴェルデ内のキラメッセぬまづ2階会議室前には、Aqoursの2nd Love Love!で使われた蒸気機関車型舞台セットが展示されています。

町中に点在するAqoursマンホールの見本もあったよ

さて、蒸気機関車を見た時点でみとしー行きのバス発車まであと9分!猛ダッシュで戻りました。汗だくになってしまった。限界旅行〜。

三津

さて、伊豆・三津シーパラダイスにつきました。2期4話でバイトをやったり「恋になりたいAQUARIUM」のMVで全面的に使われたりしている重要スポットです。

奥のお土産屋さん付近に1,2年生が集まってダイヤさんの様子がおかしいという話をしているところを、手前の物陰から果南と鞠莉が見ていました。

同場面でルビィちゃんの背景にあったガチャガチャ(順路的にはお土産屋は最後なので実際には後で撮影しています)

アシカが暴れていたプール。水槽目の前のガラスのところには降りられませんでした。「恋アク」では冒頭に水を掛け合ってたところ。

3年生組がペンギンに水をかけていたところ。フラミンゴもいましたが別に寒くないので2本立ち。

思ってる通りに1,2年生と打ち解けられないダイヤが海を見て考えごとをしている感じの場所。

ダイヤさんが「曜ちゃん」と読んでみる場面でちょっと写った剥製

ところで、花丸ちゃんと千歌ちゃんが洗剤を全部入れてあわあわになっていた食堂?は最後まで場所がわかりませんでした…それっぽくなかったけどやはりショープール横の屋台みたいなところだったんだろうか。

うちっちーには会えませんでした。というか会えるタイミングあるのかな。

みとしーを出てすぐの道路に見える富士見トンネルが、1期9話の果南ちゃんランニングコースだったり「君のこころは輝いてるかい?」PV冒頭でバスが走っていた道だったりするんですが、どちらもカットはこの写真とは反対側で行けてません。

そして目の前にあるのが非常によく登場する三津海水浴場です。 1期1話では奥の桟橋から梨子が飛び込もうとし、1期10話では海の家のお手伝いをし、2期6話では「MIRACLE WAVE」のロンダートバク宙の練習をし…

作中でAqoursと書かれたのはここではなく島郷海水浴場になるんですが、ここでも砂浜に「Aqours」を書くのが恒例となっているようなので書きました(同行作)

あとでもう一度来たので私も書きました(手前)。何箇所か書かれてありました

海水浴場の目の前に千歌ちゃんの実家「十千万旅館」のモデル、安田屋旅館さん。 利用客以外には手きびしいそうなので外観だけ。 本当に海が目の前で、これならたしかに海に飛び込もうとする転校生をとっさに発見して止めに行けるなーという感じ。

海のすぐそばにあるセブンイレブンは1期11話で千歌曜がダンスを合わせていたところ。みかん味アイス、くじびきD賞。 例のみかん味アイスは売っていませんでしたが暑いので普通のアイスを食べました。

1年生3人が練習の様子を覗き込んでいた影

つづいて松月さん。 1期6話では店内のイートインスペースでPVづくりの話し合いをしていました。1期12話では店の前のベンチなどで予備予選の結果発表を待っていました。そして劇場版ではまたイートインスペースで理亞ちゃんの今後の活動について話し合っていました。「元気全開DAY!DAY!DAY!」のドラマCDや「未体験HORIZON」MVにも登場。

名物、しいたけもなか(これは帰りの新幹線の中で食べるときの写真)。この他にもサンシャインモチーフのお菓子が販売されていました。

これは松月横の銀行の駐車場(?)から見た向かい側の漁港(ヨハネの魔法陣のろうそくが車の風に消されるカット)

少し奥まで歩きまして、三津公会堂(作中では三津会館)。町内放送でファーストライブの告知をしていたところ。非公認スクールアイドル。

お隣の「やまや」さんの横も果南ちゃんのランニングルートだったんですが正確な場所が分からなかったので撤退。そういえば「恋アク」冒頭の曜ちゃん自転車シーンもここだった。

みとしーから海岸を北側に歩いていく聖地ロードの最も奥が「辻宗商店」(もう少し歩くと淡島ですが)。 2期9話で函館に残った1年生を2,3年生が心配している場面でこの店の前に集まっています。 おばあちゃんがやってるかなり昔ながらの商店ですが、優しく対応していただきました。

ここに冷凍済みのみかん味アイスを売っていたので買っちゃいました。おいしい。

昼食は「とさわや旅館」さんでいただくことを予定したのですが、直前にアイスを食べていたのであまりお腹が空いておらず、このまま食事をスキップしてモデル校のある長井浜に特攻する案が発生しました。 長井浜から沼津までバスで帰るには結構時間がかかるのであまり滞在時間も長く取れずリスクも高いと判断して大人しく昼食を食べて帰ることにしました。えらいね。

名物「まな板定食」。 この日のお刺し身はマグロ、ハマチ、サーモン、タイ、イサキ、アジ(のはず、間違ってたら大変申し訳ございません)。盛り付けの頭から尻尾まで繋がったアジがまだ動いていてとても新鮮でした。

ヨハネ推しの同行は「堕天使カレー」。これも名物。とさわやさんはヨハネ推しのお店で、ここの店内らしき背景のヨハネタペストリーが飾られていました。 辛いソースを好きなだけ入れるシステムを取っていて、全部入れるとある程度辛いけど激辛料理というほどではないという感じだったよう。

おおよそ巡り終えて、海岸で遊んでいたらバスのお時間になったので沼津駅へ。

とはいえ朝のうちに気になるところを見終えていたので思ったより帰りの電車の時刻まで暇を持て余していました。

沼津駅周辺FINAL

とりあえずヌーマーズへ。店舗の広さは特別広いわけではないですがラブライブグッズ多めのレイアウトで嬉しい。

ヌーマーズ近くに駅北に向かう高架下があるので駅北の追加散策をしました。

高架下を抜けて正面にあるのがリコー通り。大きく登場したわけではないですが、1期6話の学校宣伝PVづくりで「沼津のにぎやかなイメージを入れて〜」という詐欺PVイメージに登場したり、「僕らの走ってきた道は」でも一瞬登場したりしています。

幻日のヨハネの新作寝そべりがある情報を見たのでBiVi沼津の大きなゲーセン「THE 3RD PLANET」を訪れてみました。寝そべりは見当たりませんでしたが、スクフェスAC筐体をみて懐かしい気持ちになりました(流石にプレイできませんでした)。

BiVi沼津1階にはラブライブ!サンシャイン!!プレミアムショップがありました。過去のコラボグッズなどが売っていました。 多少の余剰在庫感。 幻日のヨハネのマグネットのガチャガチャを引いてみました。

再び南口に戻って、沼津ラクーンを訪問してみました。屋上がBrightest Memoryのステージになっていたので見たかったのですが、現在BBQテラスになっていてしかも月曜日は定休日で閉鎖されていました。3階のゲームセンターでヨハネ寝そべりを発見しましたが、手前に返しがついていて転がしようもなく素人には取り方が分からなかったので撤退。CHUNITHMをやっていたら帰りの電車の時間になっちゃいました。

さらば沼津。楽しい時間をありがとう。

駅でのっぽパンを買っていきました。お土産も買いました。

振り返り

他のラブライブシリーズ(特にニジガク)もその土地の良いところをめちゃくちゃうまく使っていることを感じられますが、サンシャインの方は地元の方もAqoursを歓迎してくれている雰囲気が強くてとても暖かかったです。非常におすすめ。 計画段階で1泊2日は厳しそうでしたが主な沼津・内浦地区を回るには丁度いいくらいでした。もう1日時間があったら長井浜にも行けてたし、車を借りて2期10話の山道星空ルートに行ってみるのも楽しそうだなと思いました。

初旅行が聖地巡礼でも楽しんでくれた恋人に感謝。 いい思い出になった。

おまけ

次の週たまたま「けいおん!」の舞台「豊郷小学校旧校舎群」を訪れる機会がありました。 けいおん未履修で1本の記事にすることもできないのでここで少しだけご報告。

ウサギとカメの例の階段

講堂

異常量のけいおん!グッズが展示されていました

セキュリティ・キャンプ全国大会2023 参加記

8/7-11にクロスウェーブ府中で行われたセキュリティ・キャンプ2023全国大会に参加してきました。 えんじにゃみならいのキャリアの中でも非常に有意義な5日間となりました。

選考・事前学習含めてのスケジュールは以下のような感じでした。

日程 内容
4月後半 セキュキャンへ興味を持つ
5月上旬 WaniHackaseへ入部
5/13 エントリー
5/14-5/18 応募課題に取り組む
6/5 通過の通知を受ける
6/14-8/6 L2ゼミ内で事前講義を受ける
8/7-8/11 現地でイベントに参加

エントリーまで

去年の冬コミの交通費をICPCで得たことに味をしめ、今年の夏コミはセキュキャンで補えないかと考え始めました(結局夏コミはやめました)。 夏コミに参加するかは考え中でしたが、セキュキャン自体は高校の頃からXで名前を目にしていて興味を持っていたので参加してみたいと考えました。

ゴールデンウィーク中にWaniCTFに参加して感銘を受け、弊学CTFチームのWani Hackaseに加入しました。 Wani Hackaseの中でもセキュキャンに応募しそうな方が何人かいたので特攻することにしました。

興味があったのは

  • A(IoTセキュリティクラス)
  • C(脅威解析クラス)
  • L1(暗号化通信ゼミ)
  • L2(暗号のままで計算しようゼミ)
  • L3(Cコンパイラゼミ)
  • Y1(OS自作ゼミ)
  • Y4(CPU+コンパイラ自作ゼミ)
  • Z2(Rust製Linux向けアンチウィルス実装ゼミ)

などでした。 エントリー当初は専門コースと開発コースの違いすら知らないレベルでしたが

  • 自作OSはみかん本を積んでいるので(それで満足するかはわからないが)自分でやる手立てがある
  • CPUとコンパイラは後期の授業でちょっとしたものを作ると聞いているので(それで満足するかはわからないが)もうすぐやる
  • Rustは興味はあるけどまだそれほど得意ではなくてボロが出そう

という理由で暗号に絞りました。 準同型暗号は他で見たことなくて珍しかったのでL2を第1希望としてエントリーしました。

応募課題

応募課題は準同型暗号について調査するレポート課題と、基礎的なプログラミング能力を見る実装課題の2つに分かれていました。 課題内容はここから閲覧できます。 去年の応募課題と全く同一だったことから来年の応募課題で登用されるリスクを回避することを考え具体的なコードや詳細な解説は開示しないでおきます。

応募時はセキュキャン選考を舐めていたので正直通る気満々だったんですが、どちらにしろ講義内容の準備として、また自分の理解とコーディング能力がどの程度に到達しているかを講師に見てもらう必要があったので全力で取り組みました。

レポート課題は、課題内容に書かれている文献を始めとしてたくさんのWebサイトやインターネット上の解説論文を読んで概要を掴み、比較的信頼度の高そうなソースから引っ張って書きました。 こういうのは自由に調べてほしそうに見えて採点者が調査テーマの何に深い信頼をおいているかが異なるものだと思っていて、また「余計なことを書いて減点されることはありません。」とあったので言葉の定義・技術の詳細・現在の実現可能性・将来の利用先などできるだけ網羅できるように書きました。

プログラミングは流石に黄コーダーにとっては余裕だと思っていましたが、一般暖色コーダーが書くコードは題意の直訳ではない謎のコードになっていがちである(と言われる)ため、なぜそうなったのかを数式を含めてコメントにたくさん書いた上で自分の中で洗練されているであろうコードを書きました。 この課題は後に実装するTFHEの一部になるもので、講義を受ければ自分の実装は最適なものではないことに気づいて驚きましたが、結局会期中にも最適化された実装をすることは叶いませんでした。 応募課題の提出がテキスト方式の統一されたフォームになっていてファイルの添付などはなかったため、GistにPrivateで投稿してURLを共有しました。

結果として予定以上の時間を用意し、大学の課題を先延ばしにしてしまいました(なんとかなりました)。

選考通知

通過のメールが届きました。 宛名の名前が違う人になっていましたが手違いだったようでドキッとしました。

TLの多くの人が落選していてここでやっとセキュキャン選考の厳しさを認識しました。 丁寧にやっといてよかったー。 L2ゼミが2人だけなのも知らなかったです。 超強い人2人と被ったら確定落選なので怖いですね…

自分のXはほとんど競プロ界隈にあるのでセキュキャン通過者の多くを認知できていませんでしたが、ほかの通過者からフォローが飛んできて確認したり検索したりしてたらものすごく強そうな人ばっかりで緊張感が高まってきました。

事前学習 & 共通講義

L2ゼミ講師のNimda先生から事前に毎週講義を行うとの連絡を受け、毎週決まった曜日の夜にDiscordのVCで講義が行われることとなりました。 実装内容が多く講義と実装を会期中に終わらせるのは困難なため事前に講義をして実装を始めておいてほしいとのことでした。 講義スライドは先生のgithub.ioに公開されています。 1:2の講義であるため質問がしやすい環境ではありましたが、内容が結構難しいためその場で完全理解するのが厳しかったです。

日々の競プロ精進を続けながら大学のレポートや期末テストの対策をやっていたら実装に取り掛かる時間がどうしてもなくなってしまい、7月の後半からの実装になって今いました。 多項式やベクトルのCRTPクラスを作っていたらC++の罠にたくさんかかって想像以上に時間がかかってしまい焦りました。 TRGSWのExternal Productで案の定理解不足が生じていましたが、質問をすると親切に対応していただけました。 会期まではExternal Productまでしか実装できませんでしたが、ベースの構造などは作りきったつもりでいたので会期の最初の2日くらいでHomNANDまでやりきってあとはスレッド並列やSIMDによる高速化を頑張るつもりでいました。

L2の事前学習以外にも共通講義K1,K2,K3が行われました。 応募時からのスケジュール管理不足でK1の講義とICPC国内予選がバッティングしてしまい焦りました。

授業の方もセキュキャン事務局の方も機転を利かせて公的な欠席を承認していただいたためICPC国内予選に集中することができ、無事そちらも通過しました。 色々な方に応援されているのを実感しました。

オンラインで行われたK2とK3に参加しました。 講義時間中やその後にもDiscordのチャンネルで多くの人が授業実況をしていて受講生のモチベの高さや自由なコミュニケーションの雰囲気を得て暖かくなりました。

1日目

朝6:30くらいに自宅を出発して会場に向かいました。 最初のバスに乗ってすぐに名刺を忘れたことに気づいて悲しみました。 このときは悲しいだけだったんですが、始まってからこのことの重大さに気が付きました。 セキュキャンは名刺文化なのでないとマジで困ります。

会場に到着しました。 研修施設というともっと無骨な建物をイメージしていましたが、ホテルのようなおしゃれできれいな建物でした。

食事を取りました。セキュキャンの食事は朝はビュッフェ、昼はA、Bの2つの昼食から選ぶ形式、夜は予め席においてあってご飯や味噌汁だけ席につき次第受け取るという形式でした。

ご飯、めっちゃ豪華です。最初だけじゃなくてずっと豪華です。 無償の飯なので学食くらいのシンプルなものを想像していたのですが、晩ごはんも一泊1万円以上のそこそこのホテルのような品数が多くて料理人による工夫が凝らされた美味しいごはんがでてきてびっくりしました。 期待されてるんだなと感じます。

昼食は程々にして共通講義のお部屋に行き、人々と対面します。 正面にCryptoの猛者mitsuさんがいてびっくりです。 L1に応募したら勝てなかったので危なかった。 人々と名刺交換をしていました。 技育博用に作ってあまり使わなかったEightのオンライン名刺があったので自分はそれで対応しましたが、紙を持っていないので手間をかけました。 本当にすみません。 セキュキャンに来ている人は層が幅広いのでもともと繋がっていない人たちばかりでしたが、話してみるとおもしろい! 世界の広さを実感しました。

共通講義K4を受けました。ハッカーの倫理という堅苦しいタイトルでしたがおもしろい検事さんがいい感じに飽きないように講義をしてくれたので面白かったです。

第1回LTがありました。 自宅サーバー勢が多い。 本格的なネットワーク機器やサーバーマシンを皆さん設置しておられますが何に使うんですか?? セキュキャン勢の変態性を感じます。 CTFなどの初心者コミュニティがいくつか紹介されたのでとりあえず入っておきました。

グループワークがありました。 セキュリティに関するコンテンツ作りということで非常にざっくりとしたテーマで話し合いが始まりました。 学校内のグループ活動でで重役を請け負ってしまうような偉い人が全員集まったような感じ。 正直どういうことを決めて取り組めばいいのかよくわかりませんでしたが、とりあえずmitsuさんが進行してくれるので話は白熱しました。 白熱しすぎてテーマが決まりませんでした。

夕食!焼肉でした。 先にも示した通り副菜も色々ついていて豪華でした。 この頃は受講生同士あまり雰囲気が掴めていたいので少し慣れていない感じでしたが食事を楽しみました。 共通講義やグループワークのときに「夕食の後のデザートタイムでたくさん交流して名刺交換してくださいね」と言われていたのに夕食とデザートタイムに当てられた時間は1時間きり!デザートの時間を10分しか充てられず、1人の講師としか話せませんでした。 デザート美味しいのにたくさん余っていたんですが、20時くらいに食べに戻っていた人々がいたらしいです。 私も食べに行けばよかったかな?

夜はLトラックのおへやに行ってひたすら開発です。 CMUXのテストが通らなくて焦っていました。 20時半まで講義、21時までホームルームということでしたがLトラックの人々はみな開発にお熱で21時半くらいまでひたすら開発タイムが続きました。 自室に戻って少し追加実装をして、やっとCMUXのテストが通った(ように見えました)。

自室はビジネスホテルっぽい感じ。 シャワーを浴びて寝るだけなので特に不自由はありませんでした。 私は電車に乗ると疲れるのですが興奮状態にあったのでいますぐ寝たい!という感じにはなりませんでした(23時までに寝ました)。

2日目

いつも通りの6時起床。 ちゃんと休めました。 この5日間日付変更前に毎日寝れたので睡眠習慣はきれいになりました。

この日の朝は社会見学以外で唯一の外出の機会であるコンビニツアーがあったので嬉々として参加しました。 毎日眠くなったらすぐにお昼寝をしている私がお昼寝休憩なしのフルタイムプログラムに耐えられるのか不安だったため、普段は飲まないエナジードリンクを買ってカバンに忍ばせておきました。 あと飲み物が水しかなさそうだったので糖分補給のためにグミを買いました(結果として眠くなることもなかったしお菓子もいろいろ供給されたので不要でした)。 外に出ないと体調がおかしくなるみたいな人は散歩のためにも行くといいのかもしれません。

この日は夕食までひたすらLのおへやにこもりきりで開発です。 CMUXのテストが正常に行われていないところから基本型の定義のミスにたくさん気づき、大変なことになっていました。 焦りが出てきます。 時間はたくさん用意してもらっていたのでラインレベルまで不整合ポイントを突き止め、修正しました。 ポインタ位置のズレでした。 黄色コーダーになっても知らない概念を実装すると未だにこういう小さなミスをしてしまうのはよくないですね… この時点でまだGateBootStrappingTLWEtoTLWEのテストが通っていないのでやばいです。 会期中にSIMDなどまで進めるのが困難そうで悲しくなってきました。

ところで、普段Pythonを使っていながらも今回C++での実装に挑戦していた同じL2の駆け出し理性チャンネルさんもたくさんC++の罠にかかっていそうで辛そうでした。 特に僕もNimda先生も少しマニアックなC++の書き方をしていたので僕のコードを参考にして苦しまれていたのは申し訳ない… Pythonに切り替えて走り出したようです。がんばれー。

夜は協賛企業イベントということで、気になっていた4社にお話を聞きに行きました。 セキュリティ以外の文脈で気になっていた企業も主にセキュリティ事業についての説明を受けて、それはそれでいい仕事だなーと興味を持つことができました。 某社にkurenaifさんの代理人がいて驚きました。 時間が押していたので個人的な会話などをしている暇はありませんでしたが、いつもお世話になっておりますとここで述べておきます。

某社の説明会場にもいたNOCチューターの方にぜひNOCの見学に来てくださいと言われたのでLのみんなでホームルームの時間に見学に行きました。 クソデカネットワーク機器を管理しててかっこよかったです(小並感)。

3日目

午前中はわくわく社会見学。 どこに行ったか言っていいんだっけ。 ダメだったらやばいので伏せておきます。 とてもおもしろいものをみました。 時間が短かったですが楽しかったです。 行き帰りのバスでmitsuさん、かっしーさんとCTFのお話をしたりLufeさんのキャリアや研究について聞いたりしていました。 みんなそれぞれにめちゃくちゃ努力していて自分の知らない技術を身に着けていてすごい。 刺激を受けました。

TFHEの実装はいよいよバグ発見バトルの佳境になってきました。 暗号の実装って平文がきれいなデータでも途中経過のものはぐちゃぐちゃなのでとてもプリントデバッグしにくいんですが呼び出された関数をトレースしたりしてたら、オーバーロードしてる関数が意図しないほうが呼ばれていて泣きました(具体的にはトーラスと整数の掛け算をしてほしいのに真理値との掛け算をする特殊化のほうが呼び出されていました)。 std::enable_ifの条件が逆になっていて涙目。 SFINAEでイキっていましたがSFINAEは闇の技術であることを再認識することができました。 講義時間中にはギリギリ終わりませんでしたが自室に戻って10分くらいの開発でHomNANDが完成しました(と思っていました)!

ところで、Lトラックの教室の中でLinux談義で盛り上がりました。 LinuxディストリビューションやWMの話で盛り上がるのはITイベントの定番になっていますね。 学部ではLinux勢はあまり見られないのにこういうところにいくと開発環境づくりにお熱な人がたくさんいて嬉しいです。 最近Fedoraを触っているのですがちょうど飽きたと思っていたので次はEndeavor OSを触ろうと思いました。 久々のArch系! i3以外のおもしろそうなタイル型WMもいろいろあるので夏休み中時間があるときに触ってみたいですね。

4日目

HomNANDのテストが正常に行われていないことを発見し、落ちました。 1時間位唸っていたらNimda先生にSampleExtractIndexの添字ミスを指摘されました。 お恥ずかしい。 このままでは明らかに遅いので多項式乗算をFFTで高速化します。 4基底や8基底のFFTなどの定数倍高速化をせっかく教わったのにすぐに実装できず、とりあえず応募課題のFFTを貼って終わってしまいました(かなしい)。 FFT実装後の1NANDのタイムはM1 Macシングルスレッドで350ms程度!遅い!!! 10msとかまで縮められるそうなのでまだまだ定数倍高速化が必要なんだなーとなりました(SIMDとか係数分解を加算機に任せるとかでそこまでいけるのかな。プロファイリングを取ろうとしましたがやりきれませんでした…)。 翌日は成果発表だけで終わっちゃうのでやばいです。 駆け出し理性さんは忙しそうなのでスライドを担当しました。 4分の発表でTFHEの講義を収めきれるわけがないので自分の中での超超概要的な図(↓)を作って足りない部分は口頭で補うことにしました。

夕食後は2回目のLTでした。 これも大きな転機でした。 2回目のLTは応募者が非常に多くて予定外の4ルーム並列開催だったのですが、レベルの高いLTが多くて楽しかったです。 皆さん短い時間で自分にしか話せないことを詰め込んでいておもしろいなーという感じでした。

UEFIの仕様書から読んでフルアセンブリでOSを書く人なんて普通いないでしょ。 狂気ゆえに興奮しました。 自作OSなんて直接的に活用できる業種はあまりないと思うのですが、それでも基礎の基礎から理解しようとする姿勢に感動しました。 私も自作OSをやりたいなと思いました。 ちょうどRustで真面目な開発をやりたいと思っていたところなのでみかん本のRust実装に挑戦してみようと思います。

あと、セキュリティ芸人のアスースン・オンラインさんのフリップ芸を生で見ることができました。 会場で見るとよりおもしろいものです。

なんとここで成果発表前最後のグループワークです。1回目と合わせて2時間しかないなんて聞いてない!!!(スケジュール把握不足) 直前になってもテーマだしが白熱してほとんどテーマを決めるだけで終わってしまいました。 他の人達は自分たちのゼミの成果発表の準備で忙しそうだったので僕が勝手に部屋でスライドを作っておくことになりました。 発表は駆け出し理性にお願いしました。

5日目

今日は成果発表のみです。 「巻きで!巻きで!」と言われながらも各ゼミ・グループワークの発表が流れていきました。 どこのゼミもめちゃくちゃおもしろそうなことをやっていて、できることなら来年も他のゼミで参加したいなーと思いました。 まあ全国大会はだめなので来年忙しくなければネクストに応募しようと思います。

特にネクストの人たちは5日間だけなのに色々なテーマをしっかりこなしていて超優秀!って感じがしました。 来年あの場に立ちたい、立ちたい… ジュニアの人も中学生でセキュキャンに興味を持って自主的にアプリ開発ができる、やばいです。 僕はプログラミングやってなかったですからね…

まだまだやり残したものを感じつつも会場にお別れ。 5日分食費が浮いたと決めつけて友人といい飯を食いました。

おわりに

めちゃくちゃ貴重な経験をしました。 講師・チューターの方々、IPAの方々、セキュキャン協議会の方々、協賛企業の方々、お国の偉い方々、ありがとうございました!

Toyota Programming Contest 2023 Spring 決勝 参加記

はじめに

Toyota Programming Contest 2023 Springの決勝に参加させていただきました。 JOI、ICPC意外のオンサイトは初めてでとても楽しかったので記録として残しておきます。

予選A

普段のABCよりARC寄りの重いセットと書かれていて、ARCが苦手な僕は不安でした。

Fで詰まって焦ったんですが、なんとか7完できたので国内51位という結構な成績で予選を通過しました。 普段より面白いセットでした。

予選B

kotamanegiさんやshinchanさんが無事通過するのを見届ける会だったんですが…

ガチカスをやってしまいました。今年はA[BRG]Cに全部出ようと思っていたのに早速折れてしまいました。大変申し訳ございませんでした。

WA_TLE様は優勝したし、kotamanegiさんやshinchanさんも無事通過したのでよかったです。]

↑ちなみに翌日にバチャやったらちゃんと100位以内入ってましたよ。ええ。

決勝まで

とりあえず部内で決勝/決勝イベントに通ってそうな人をSlackに集めました。

規定では北海道・沖縄意外は1泊がデフォルトになっていましたが、イベントは9:00-20:00と長く、関西圏からでは始発・終電に近い電車が必要、またはそれでも不可能という状況になってしまいます。 kotamanegiさんにAtCoderさんに問い合わせをしてもらったところ、困難な場合は前後泊もOKとの回答を頂きました。 結構な金額にはなってしまいましたが僕も2泊分で申請させていただきました。AtCoderさん、トヨタさんには大感謝です。

前日は大した予定もなかったのですが東京に行けることが珍しいので昼頃から観光することにしました。

ICPCのときに遊舎工房に行けなかったという未練があるので秋葉原に行く手も一つでしたが、東京に行くたびに秋葉原に行っているので今回は秋葉原に行かないことにしました。

関西では見れない&&一人で行っても寂しくないを満たす場所を考えた結果、絵画を見に行くことになりました。 国立西洋美術館に行ってみたかったのですが、ちょうど3/17までの間館内整備のため休館とのことだったので国立新美術館に行くことにしました。 「ルーヴル美術館展 愛を描く」という企画展を見ました。興味深いものを見れました。

まだ時間があったので、原宿まで歩いて「原宿レインボー」なる娯楽菓子を食べたり、WA_TLEさんと合流して明治神宮を歩いたりしました。

SCの勉強とかバイトとか他のお出かけとかそんなので最近競プロに全然触れれていなかったので、夜のゆきこに出ました。

bayashikoさん、前日にポジティブになれるような楽しい問題をありがとうございました。

決勝

ホテルに朝食はついていなかったので適当に朝マックを食いました。 張り切ってしまってめっちゃ早くついたのでkotatsugameさんとともに一番乗りの受付を果たしました。 意味ない。

赤橙黄の強い人たちが続々と会場にやってきて感動していたんですが、自分からはあまり話しかけられない(相手が自分を認知しているかがわからなかったため)ので自席で淡々ともすーんバチャをやってました。

ちょくだいさんが壇上で軽く開会宣言をした後、2分ほどの静寂の後コンテストは急に始まりました。 配点が高めだったので素直にA問題から見ました。

A問題

こういうのは縦と横を分けて考えて等差数列の和の積みたいな形になるはず!と思ったんですが意外とうまくいきません。

とりあえず$V$を$a$,$b$,$c$,$d$を使って表してみると、等差数列の和の形にそれが何列あるかを書けたものを2項という感じの式で表されます。つまり$b-a$,$a+b$,$d-c$,$c+d$と定数の積の和になります。 $b-a$,$d-c$を全探索で固定すれば条件を満たす範囲の$(a+b,c+d)$が定数個に定まることがわかったので慎重に式変形して列挙していきます。

少々式変形をバグらせて焦りましたが31分7秒時点でACしました。

B問題

とりあえず、$i$番目のクイズとと$j$番目のクイズが連続している時、$i$番目のクイズを$j$番目のクイズの前に解いたほうが嬉しい条件を求めると、$p_iS_i+p_ip_jS_j>=p_jS_j+p_jp_iS_i$になります。

これが全順序になることは証明していませんが、どうせなるだろうと思ってstd::sortの比較関数としてぶち込みます。

入力例3で変な答えが出てきましたが複数通りの答えがあり得る問題だったし検証するのが結構面倒なので雑に提出しました。WAでした。$p$が百分率なのを忘れてました。適当に100倍しました。ACしました。(49:43)

C問題

これはかなりすんなり解けました。

XORが除数に来て嬉しいことがあるわけないのでここを全探索するだろ。そんで計算量が調和級数になるやつだろって目をつけます。

$A\oplus B$の倍数$A$を全探索して$B=A\oplus(A\oplus B)$が$A\oplus B$の倍数化を判定すればいいだけです。AC(61:09)

D問題

ARCっぽいad-hocな匂いがしなくもないですが、与えられた規則が結構対称的な性質を持っているので頑張れば解けそうな見た目をしています。

とりあえず$P$が等差数列になってるときは同じ等差の数列で初項が$0,1,\dots,N-1$のものが各$N$個あることになります。 そうでないときも初項は$N$種が各$N$個であり、同じ初項を持つ列は全て異なる$a$で生成されていることがわかりました。

辞書順$K$番目を求める時の典型として2文字目…3文字目…と順に、ある文字で始まる列が何個存在するかを数え上げて前から確定していくというのがあります。 しばらくこの方針で考えていましたが2文字目からして何個あるかがわかりにくい感じになっていました。

次なる方針として、$(0,1,…N-1)$を適切な比較関数でソートすることにより、$i$が$j$より前に来ることと$f(i,B(i))<f(j,B(j))$(ただし$B(i)$は先頭文字が期待するものになるように$i$ごとに適切に選んだ$b$)が同値になるようにします。 さて、$f(a,b)$の階差数列は$b$によらないことから$P$の階差数列を$a$に応じてずらしたものと一致することになります。 初項が等しいなら階差数列のLCPまでは等しい数列になることから、その次の数値$c_i$を比較すれば順列の辞書順大小が高速にも止まりそうです。

同じ階差数列の途中からの部分を比較しているので、Suffix Arrayを使うのが計算量的にも良さそうですが、LCPを抜けた部分の$c_i$の大小が文字列のように一定ではないため実装が面倒そうです。 こういうときは信じてロリハにぶたんを気合で投げます!

…なぜか半分くらいのケースでWAになるんですよね。ジャッジの様子的にでかいケースで落ちてそうな。 自前のロリハライブラリを最近改修したところでバグの可能性を考えてei1333ライブラリに変えてみたり、衝突を疑ってハッシュを2重3重に持たせてみたりバタバタしてました。 しかもマジで衝突してたようで1ケース改善したりで、ずっとそっちを疑ってしまっていました。

結論として、ロリハが問題ではなく、$K$の入力をint型で取っていたせいでオーバーフローしていました。馬鹿すぎる!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

11ペナの末ACしました。(171:30)

残り

残り8分しかなかったのでトイレに行きました。 JOIや共通テストなどでもそうでしたが、オンサイトコンでやり切った瞬間急に尿意を催す癖があります。

残りの問題にさっと目を通しましたが無理そうでした。

結果

結果として、4完最弱の84位というなんとも言えない順位になりました。 6位から84位まで全員同じ点数ということなので悔いは残りませんでした。

それにしても上位陣の解答スピードはエグいですね。 僕も早解きは得意になってきてABCではこの頃50位を切ることが多くなりましたが、問題が難しくなるとやっぱり赤コーダー様達の足元にも及びません。

コンテスト後

お昼ご飯は叙々苑の焼肉弁当!これだけでテンション上がります。 さすがの美味さでした。

「rngからの挑戦状」というAtCoderオンサイトで昔は恒例だったらしい謎のクイズ企画を観戦して笑ったり、トヨタの社員さんとちょくだいさんの対談、kenkooooさんによるAtCoder Problemsに関する発表、pepsin_amylaseによるDiff推定の話などを聞きました。 いろいろ興味深かったです。

トークセッションに参加する以外にも気になる競プロerさんに挨拶したりして楽しみました。

イベント終了後は「競プロer大宴会」に参加しました。 トヨタコン参加者は暖色の学生が多かったですが、それ以外にもいろんな世代の競プロer達とお会いできて楽しかったです。

↑「最大の自然数本締め」で音が聞こえてちょくだいさんが「あ、みんな1なのね」って反応したのが面白かったです。(0の人のリアクションは聞こえないので当然1が目立ちますよね)

おわりに

初めての全年齢オンサイト、マジで最高でした! AtCoderさん、トヨタさん、開催ありがとうございました!!

ラブライブ!虹ヶ咲学園スクールアイドル同好会 台場地区聖地巡礼

はじめに

[注意] ニジガクは結構初心者です。アニメは2周しましたが知識に乏しい場合があります。間違ってたらすみません。 また、コミケ1日目のあとで大荷物を持ちながら移動しているため近くにあるスポットも結構飛ばしています。 お台場を訪れたことが殆どない初心者2人組で移動しているため、ルートも最適化されていません。

当初の予定では一旦台場駅のコインロッカーに荷物を預けてからお台場海浜公園駅に移動し、レインボーブリッジ周辺を訪問してから台場駅に向かって歩いていくというルートでした。 しかしコミケ中にコインロッカーなんて開いてるわけがなく、予定を変更して当初の予定とは逆方向に大荷物を持ったまま見ていくことになりました。コミケを甘く見てはいけない。

余談ですが、ニジガクの聖地巡礼ではゆりかもめの一日乗車券を買ったほうが基本的に安い(3回乗れば得)し、予定変更にも対応しやすいのでオススメです。 ゆりかもめのホームページでは駅務室で購入可能となっていますが(2023/1/3現在)、24時間券も一日乗車券も券売機で購入できました。

スポットは虹のあしあともつさんのブログを参考にさせていただきました。本当にありがとうございます。

台場駅周辺

アクアシティお台場周辺

1期13話のスクフェスで雨がやんだときにステージに向かってみんなで走り出す道です。 1期8話のSolitude RainのMV中や1期12話中でも登場します。

2期11話でみんなで横並びにベンチに座っているシーンです。部の昇格についての決断をするところですね。

アクアシティお台場の7Fにあるおみくじです。2期2話で同好会メンバーが嵐珠を尾行しているときに嵐珠が引いていたものです。 正面から見るとこんな感じです。100円玉を入れるとすぐに紙が出てきました。

7Fの外に出ると2期3話で同好会が初詣をしていた神社があります。こんなビルの上だと思ってなかった。

4Fのちょっと薄暗い感じの洞窟みたいなレストラン街にある場所で、2期OPでエマが覗き込んでいるカットになります。 不思議な場所を採用したものだなーという感じです。

同じく2期OPでミアが座っていた場所です。

ダイバーシティ東京 プラザ周辺

ユニコーンガンダム立像です。 目立つ割にはあまり登場しておらず、1期13話OP直後のスクフェス雰囲気カット、そして2期11話で同好会ファーストライブを決めてみんなが海浜公園に集合する直前にしずく、かすみ、せつ菜、栞子がいた場所として使われています。 海浜公園自体はあまりスポットがわかっていなくて撮影できていないので悔しいです。

これはかなりわかりやすいです。せつ菜が最初にライブしたところです。 ユニコーンガンダムのすぐ後ろにあります。

同じ場所ですが、1期11話でライブの候補地をみんなで探し回ってるところでも再登場します。

移動型ステージ「どこでもかすみん」が暴れていたのもここ、フェスティバル広場になります。

1期OPのせつ菜のカットは2箇所あって、1箇所目はここ、ダイバーシティ東京東京テレポート駅側の入口で、もう1箇所はお台場ゲーマーズです。ゲーマーズは行き忘れました…

すぐ外に出ると1期12話ED後、侑がピアノを歩夢に聴かせているシーンでせつ菜のカットとして出てくる箇所です。 同じシーンではしずくのカットが後にかすみにヘアアクセサリーをプレゼントするシーンの伏線になっているのですが、ガッツリ店内っぽいので訪問は遠慮しておきました。

台場駅

海際に移動するので再び駅の方に戻ってきます。

2期OPの果林のカットです。

こっちは嵐珠のカットです。 なにやらおしゃれなガラス板の間から覗き込んでいます。

嵐珠の家です。実際はヒルトン東京お台場という高級ホテルです。

駅から海際に降りた階段ですが、1期13話、スクフェスの盛り上がりようを見て侑が「最高!」と言っていた場所です。

お台場海浜公園駅周辺

台場駅からお台場海浜公園駅周辺まで海岸を歩きながら、「あれもこれも見覚えはあるけどよくわからねぇー」って言いながらたくさんスルーしてしまいました。あとで見返してみたらやっぱり色々重要な場所がありましたね。 仕方ないですがお台場海浜公園駅の周辺でわかりやすかったところを見ていきます。

シーリアお台場五番街

未来ハーモニーのMVでエマがいた場所です。1期9話冒頭でもちょこっとだけ使われています。

すぐ横を見ると同じMVで彼方が寝ていたカットもあります。マンションの遊具なのですが、このあたりはアートが織り込まれたマンションが多かったです。

お台場レインボー公園

1期13話中、エマから彼方へのノートの受け渡し場所です。 写真左に見える公園は2話で練習場所を探し回っているときに歩夢が公園で子供とお人形遊びを初めたりする場所なのですが、実際子供が多かったので撮影は遠慮しました。

1期4話のサイコーハートのステージだった場所ですが、冬に来たせいで緑がなさすぎて雰囲気が全然違いました。それにしてもいい場所を使うなと思いました。

レインボーブリッジ

レインボーブリッジ(お台場海浜公園側)の上り口です。13話の方のサイコーハートのステージになっています。

入ってすぐ、未来ハーモニーのジャケットです。

サウスルートの橋脚「P28」上です。1期4話でランニングして来た愛が先に来ていたエマに追いついて会話をする場面です。「そろそろ行こっか。9時だし、もう行く時間だよ。」という天然ダジャレが飛び出します。愛さんのランニングルート、かなりハード。

真ん中をゆりかもめが走る瞬間を撮影しました。 どこでも似たような風景なので場所はこだわっっていませんが、無敵級*ビリーバーでかすみんが歩いている背景に電車が走ります。 無敵級*ビリーバーのステージ自体は車で実際に走ると一番わかり易いでしょうが、ゆりかもめに乗りながら見てもそれっぽくて面白かったです。

振り返り

大荷物だったのでたくさんスポットを飛ばしてしまいました。コミケ中だったので撮影はほとんどしていませんが、ビッグサイト内も当然ニジガクを感じました。 ニジガクアニメは港区のあらゆる箇所を取り入れているんだなーということがよくわかりました。ものすごい努力。

余談ですが、お台場のシンボルでもあるフジテレビを絶対に移さないカット取りは結構面白くて、特にレインボーブリッジからはガッツリ見えるのですが、頑なに他局を映さない制約で頑張ってるんだなーという話を同行erとしていました。

おまけ

りんかい線では国際展示場駅が虹ヶ咲学園駅に変化するイベントを開催中でした。 僕はスケジュールの都合で行けなかったので同行erに撮りに行ってもらいました。

ICPC 2022 Asia Yokohama Regional 参加記

出場決定

ICPCは入学前から憧れの大会でした。弊部(阪大競技プログラミング部「RAINBOU」)では希望者に向けてレーティング順での自動チーム編成を行っており、今年はkuhaku先輩とPro_ktmr先輩とともにチーム「Girigiri_yellows」を結成して挑みました。チームメイトのおかげもあって6位という高順位で通過し、アジア地区予選も無事オンサイトでの開催が決まりました。私の競プロ人生で最もテンションが上った瞬間はJOI'19の二次予選を全完したときとICPC'22の国内予選で6完したときの2つです。

準備

年末はホテルのダイナミックプライシングが激しいため、コーチのBadlylucky先輩とホテル探しが大好きなkotamanegi先輩に計画を立てていただいて10月上旬には阪大7人全員分のホテルを押さえました。ホテル決めの経緯はプロフェッショナル ICPCコーチの流儀 - BsBsこうしょうに詳しく書かれています。有能なコーチに恵まれてありがたいものです。ちなみに僕はこの時点でコミックマーケット101への参加も決断していたため、同時に28,29,30の3泊分のホテルを新橋に押さえていました。

2ヶ月前になると学割を使って新幹線も押さえました。ここでもkotamanegi先輩にかかりきりになりました。

本番は電子情報を持ち込むことができないため、ライブラリの準備をしました。10月からゆっくり作っていましたが、ゆっくり過ぎて全ては作りきれず、またICPC用というよりはAtCoder用の多機能構成で作ったためこれはあまり尽くせませんでした。足りない分はLuzhiled's Libraryをそのまま持ってきました。使うものをmarkdownに纏めてpandocで生成したPDFを印刷しました。ソースが複数ある場合のフローとかが出てきて脳死で参照することがあるので一応土壇場用に蟻本も持っていきました。

1日目

1日目は大阪から新幹線で移動しました。誰も遅刻しなくてよかったです。

会場につくとTシャツの着用を求められ、開会式が始まりました。オンサイト経験がJOI1回しかないので顔は全然認知できていませんが、この中にたくさんの凄腕競プロerがいるんだなと思うと身が引き締まりました。

リハーサルの問題は簡単(チームメンバーによるとインタラクティブのB問題以外例年と同一?)でしたが、インタラクティブでのflush忘れの挙動や印刷の試験などを行いました。でかいファイルを印刷してしまったらどうなるか気になったので適当な画像ファイルを生成して印刷してみました。文字化けしたテキストを持ってきてくれましたが、5枚だけでした。でかいファイルを印刷してしまっても途中で止まってくれることがわかりました。

1日目は解散後の他校との交流はほとんどなく、阪大メンバーでホテルに入りました。夕食を20時で予約していましたが遅すぎたので早めてもらいました。

夕食は中華街で食べました。美味しかったです。2日目の解散後に個人で横浜観光をしている時間はないとわかっていたのでお土産の買い物だけ軽く行いました。冗談交じり(?)にゲームセンターに行く提案がなされ、行ってみました。他校の競プロerは誰もいませんでした。

22:40頃に就寝しました。

2日目(コンテスト前)

5:50 頃に起床しました。

僕がAを見てる間にPro_ktmr先輩がCLionのアクティベートやテンプレートの打ち込みをやってくれると言ってくれていたので、急いでそのマニュアルを作ってコンビニで印刷しました。 ホテルで朝食を食べ、あさかつに参加して頭をスッキリさせ、集合して会場に向かいました。 割とすぐにコンテストが始まりました。

2日目(コンテスト中)

kuhaku先輩にBを見てもらい、僕はAを見ました。Aは見るからに区間スケジューリング問題でした。Pro_ktmr先輩にCLionのアクティベートとDOM Judgeへのログインを済ませていただき、早速コーディングしました。僕は早解き寄りの競プロerではあったためFAの企業賞を取れるといいなと思っていましたが、イベントをPriorityQueueで管理するやや過剰な実装になってしまい、しかも回答する番号をソート済みのものにしてしまうといったミスで結局2ペナ22分という酷い出だしとなってしまいました。

Aが解けた頃にはkuhaku先輩がBの考察を終わらせていたので交代してBを実装してもらいました。 1ペナを生やして47分時点でACしました。

Cの問題をPro_ktmr先輩に説明してもらいました。フローの雰囲気はあるけど二重に閉めないといけないしよくわからないという感じで飛ばしました。 Dは解けるだろうけど面倒そうだという感じでした。 Eの問題を読みましたが、よくわかりませんでした。DP以外に考えられないけど何これという感じ。

この時点で順位表を見て、Gが簡単そう、DとFもそれほど強くないチームでも通してるのでできそうという感じでした。

Pro_ktmr先輩がGを解けると言ってくれたのでGを実装してもらいました。 kuhaku先輩はFを考えていました。 僕は中途半端にFのkuhaku先輩の断片考察を聞いたりDを見たりしていました。

DはPro_ktmr先輩も解けると言っていましたが、僕がロリハを使ったほうが楽だと無駄な主張をしたのでDを担当させていただきました。 Gの実装も難航していたので一旦印刷をしてバグを見てもらいながらDのロリハ激長実装のためにModintを書いたりいろいろやって頑張って書いていました。バグらせました。 DとGでお互いバグっていたので印刷してバグ探し→見つけたら交代を繰り返していました。 3:10時点でやっとGが通りました。Dでロリハを使ってバグらせている旨をPro_ktmr先輩に説明して、ハッシュを使わずに普通に比較して良い事に気づきました。ACしました。ほんとうにすみませんでした。

Pro_ktmr先輩がEの考察を進め、2Dセグ木があれば解けるという話をしていました。実際には3N本のセグ木で十分で、Pro_ktmr先輩が持っていた「使うところだけノードを作るセグ木」を利用することになりました。タイピングだけはチーム内で速かったので写経はやらせてもらいました。 サンプルも通ったので提出…!REでした。使うところだけとはいえNがでかすぎるのでメモリ確保に失敗しているだろうという話になりました。実際手元で試してもセグフォりました。真面目に必要なクエリを先に計算して座標圧縮してからセグ木を組み立てると通るという目論見が立ちましたが、すでにコンテスト時間が足りませんでした。

ここまでFの考察を進めていたkuhaku先輩がFのそれっぽいbitset高速化DP解を思いつきました。証明はできませんがなんとなくそれっぽいという話になり、実装量も少ないので手詰まりのEに割り込んで書いてみました。サンプルすら通りませんでした。

コンテストが終了しました。遅めの4完で27位。いい成績とは言えませんでした。Eは通りかけだったので悔しかったです。

2日目(コンテスト後)

早速問題講評が始まりました。ジャッジ陣の錚々たる面々による解説に震えました。Eはこちらと同じ方針だったので、やはり詰めが甘かっただけということになり悲しみました。Fは納得の解説でしたが、全然届いていませんでした。なんでみんなこれ解けてるんだよ。個人的に好きだったのはCでしたが、まあ誰も解けてないので無理ですよね。とはいえ想定難易度がEよりも低いHやJもほとんど通されなかったことを考えると順位表を信用すぎるのも良くないなという感じでした。特に幾何、みんな避け過ぎですよね。僕も幾何をやると意気込んでいたのに問題を見すら見ませんでした。ごめんなさい…

我々は負けたとわかっていたのでYes/Noは悲しい時間でしたが、Time Manipulatorsとtonosamaの人外バトルに会場全体が大盛りあがりとなりました。圧倒されました。

解散後は企業ブースに移動しました。これから同人誌即売会に行くというのにKLab様から一足先に技術同人誌をいただきました。ありがとうございます。

競プロerとのコミュニケーションを求めている割にコミュニケーション能力も競プロ力も足りない自分は多くの競プロerとの共通趣味である音楽ゲームでのコミュニケーションを図りました。予想通り物理好き氏がゲームセンターに行くメンバーを募集していたため、早速乗りました。沢山の人が来そうだったので大人数が来ても耐えられそうな場所を探すと、ラウンドワン 横浜駅西口店があったのでそこに移動しました。

とりあえずCHUNITHMに参加したのですが、周りが強すぎました。

虹ポゼ4人がゲーセンに集まってるところなんて見たことないんだけど。

そんなこんなで初心者なりに何人かと遊びました。あまり時間がなかったのでほとんどの人とコミュニケーションが取れませんでしが、楽しかったです。

僕はこのあとコミックマーケットに参戦するので適当に退散して東京に移動しました。

振り返り

久しぶりのオンサイトで、有意義な大会となりました。 最上位には今からどうやっても追いつけないことを実感させられましたが、それでも自分の限界まではまだまだ精進が足りないとも思ったので、来年はより高順位に入れるように努力したいと思いました。あと3回出場し切るつもりでいるので今後とも宜しくお願いします。