所有しているコンテストTシャツの紹介

実家に帰省したら,コンテストTシャツを整理するように言われたので,ついでに写真に撮って整理しておくことにしました。

SuperCon 2011

ログイン - Supercomputing Programing Contest Official Site

f:id:kujira16:20180812110721j:plain

f:id:kujira16:20180812110803j:plain

初めて参加したオンサイトのコンテストだったので思い出深いです。

ACM-ICPC 2013 Asia Aizu Regional

kujira16.hateblo.jp

kujira16.hateblo.jp

kujira16.hateblo.jp

f:id:kujira16:20180812112143j:plain

f:id:kujira16:20180812112206j:plain

f:id:kujira16:20180812112229j:plain

f:id:kujira16:20180812112258j:plain

f:id:kujira16:20180812112330j:plain

初めて国内予選を突破したICPCだったので思い入れがあります。

THE INVISIBLE GAMEとはいったいなんだったのか,今でもよく分かってないです(なにか元ネタがあるのでしょうか…?)

Recruit Programming Contest

kujira16.hateblo.jp

https://weekly.ascii.jp/elem/000/000/203/203739/

CODE FESTIVAL の前身といえるコンテスト。

f:id:kujira16:20180812111026j:plain

青コーダーなのに海外に行かせてもらってありがとうございます!!

ACM-ICPC 2014 Asia Tokyo Regional

kujira16.hateblo.jp

f:id:kujira16:20180812112423j:plain

f:id:kujira16:20180812112437j:plain

f:id:kujira16:20180812112516j:plain

f:id:kujira16:20180812112535j:plain

2回目のICPCアジア地区予選。TopCoderのレーティング的には,このときが一番強かったっぽい…?

CODE FESTIVAL 2014

kujira16.hateblo.jp

f:id:kujira16:20180812111219j:plain

とにかくすごかったです(小学生並みの感想)

立命合宿2015

f:id:kujira16:20180812111425j:plain

f:id:kujira16:20180812111442j:plain

うん…

CODE FESTIVAL 2015

f:id:kujira16:20180812111721j:plain

f:id:kujira16:20180812111737j:plain

f:id:kujira16:20180812111850j:plain

f:id:kujira16:20180812111907j:plain

f:id:kujira16:20180812111328j:plain

Tシャツのほうは企業ロゴも入っていないので普通に着れますね。

JAGのおしごと!

ICPC国内予選お疲れ様でした!アジア地区予選に行く人もそうでない人も、次の舞台での活躍を期待しています。

今年のICPCは私にとって、選手としてもコーチとしても関係の無いICPCで、国内予選の日にはJAGスタッフと一緒に模擬国内予選の打ち上げをしながら観戦者として楽しませていただきました。

ICPCを引退してからもICPCの動向を楽しむことができるのは、JAGを通して現役選手や元選手とのつながりが持てているからだと思います。このことを引退した元選手に話すと「JAGに興味はあるけど、どんな活動をしているのかよく分からないから参加しづらい」という声を聞くことがありました。

そこで、JAGにスタッフ2年目の私がJAGの1年間の活動を紹介します。

注意

ここで上げた全部の活動に関わらなければならない義務があるわけではないので、どの活動に関わるのかは各々のスタッフの裁量に委ねられています(例えば、私は問題の原案作成にはほとんど関わっていません)。

また、ここで紹介しているJAGの活動は、私が関わったことがある範囲のものに過ぎないので、これ以外のものも多数あります(入会・退会の管理、予算の管理、アジア地区予選の運営のサポートなど)。

JAGが開催しているイベント

模擬国内予選

ICPC国内予選の1~2週間前に行われる模擬国内予選とともにJAGの1年が始まります。

模擬国内予選はJAGが開催しているイベントの中で参加者の数が圧倒的に多く、参加者のレベルも幅広いです。

作問というと、難しい問題を作ることに目が行きがちですが、模擬国内予選のように幅広いレベルの参加者を対象としているコンテストでは「おもしろいA問題、B問題」を作ることも大切です。JAGでは初心者向けの教育的良問を作ることに関心がある方の参加を歓迎しています。

また、模擬国内予選ではJAGが開催している他のイベントとは違って、ICPC本番と同様のシステムを用いて練習会を開催しています。どうして本番と同じシステムが利用できているのかというと、予選システムの貸し出しが受けられる制度が用意されているからです。1年に1度しか触れることの無いシステムなので、模擬国内予選が時間どおりに始められなかったりデータセットがダウンロードできなかったりと、しばしば障害に見舞われています… JAGでは障害対応に強いインフラエンジニアの方の参加を切実にお待ちしています。

夏合宿

9月に代々木のオリンピックセンターで地区予選に向けた強化合宿を開催しています。昔は国内予選の成績を参考にした招待制だったそうなのですが、近年は希望すれば誰でも参加できるようになっています。今年は2018年9月15日(土)〜 9月17日(月)で開催する予定なので現役選手の方はぜひ来てください!!

夏合宿での作問が国内予選と大きく異なるのは、英語の問題文を提供していることです。「英語の問題文とか書くの無理でしょ…」と思っていたのですが、実際その通りで、私一人では書けません。英語が得意なスタッフにかなり手助けしてもらっています。

夏合宿はオンサイトのイベントなので、作問以外のタスクが無数にあります。現地スタッフだけ手伝いたいという方も歓迎しています。

  • 事前準備
    • 会場と宿泊施設の予約と利用手続きをする
    • プリンタ、電源タップなどの機材を準備する
    • モバイルWi-Fiをレンタルする
    • 参加者用のお弁当の注文をする
  • 夏合宿中
    • 問題文を印刷してホッチキスで留めて封筒に入れる
    • 風船を膨らませて配る
    • 印刷ジョブが飛んできたら印刷物をチームのところに持っていく
    • お弁当が届いたら参加者に配る
    • 問題の解説をする

模擬地区予選

アジア地区予選と夏合宿の間の期間が空いている場合に行われます。夏合宿と同様、問題文は英語で出題しています。

関東ではオンサイト会場を毎年用意していますが、関西では2015年以降はスタッフ不足によりオンサイト会場を用意できていないです。JAGでは関西で模擬地区予選オンサイトを開催したいという方の参加をお待ちしています。

JAGの作問フロー

問題の原案づくり

JAGのページ (http://acm-icpc.aitea.net/) を見るとわかるように、JAGでは古き良きPukiWikiを活用しています。作問は最初に原案を考えるところから始まるのですが、スタッフ用のPukiWikiに専用のコーナーがあり、スタッフなら誰でもいつでも原案を投稿することができます。

f:id:kujira16:20180709003948p:plain

↑のスクショは今年の模擬国内予選のA問題「改元」の投稿です。この段階では問題文も制約も簡略な表記がされており、これをそのまま問題文として出題できる状態ではないですが、投稿はアイデア程度のものでOKで、実際に使われることにになったら手分けして詳細を決めていきます。

解法がわからないけど問題として使えそうなアイデアがあるという場合は、未解決問題を議論するSlackチャンネルがあります。問題を書き込むとプロたちが瞬く間に解法を考えてくれるので、解けることがわかって問題として採用されたり、解けないことがわかってお蔵入りしたりします。

問題選定

f:id:kujira16:20180709003442p:plain

コンテストの時期が近づくと、投稿された問題のアイデアをもとに問題を選定します。

JAGの内部Wikiに投稿された問題の一覧はGoogleスプレッドシートに転記されるような仕組みになっています。Wikiに投稿された問題を読んだ人は、問題の想定難易度(AOJ-ICPC 換算)と推薦度をスプレッドシートに書き込むことになっています。

私はこの難易度付けの作業がかなり苦手です… そもそもAOJ-ICPCをあまり熱心に埋めていなかったので、難易度の相場をよく分かっていないというのもあります。JAGではAOJ-ICPC埋めが得意な優秀若人や、問題の難易度を評価してくれる優秀若人を募集しています。

問題文作成

問題が選定されたら、原案をもとに実際の問題文の作成を行います。

近年では、競技プログラミング界の傾向として問題文からストーリー性が削られる傾向にあると感じています。しかしながら、ICPCでは今でもストーリー性がある問題文で出題されているという事実があるので、JAGでもそれに従って、ストーリー性がある問題文を出題するように努力しています。

f:id:kujira16:20180709004053p:plain

JAGスタッフの豊かな想像力により、このような問題文が生成されます。

ICPCの問題文では "ACM" や "ICPC" を頭文字とするような固有名詞がしばしば登場するので、JAGの問題文でも遊び要素として入れるようにしています。去年は "Industrial Convex Pillar City" (ICPC) や "Jumbo Amusement Garden" (JAG) などが生まれました。カッコいい固有名詞を思いついてくれる優秀若人を募集しています。

問題の原案を最初に考えた人が問題文も書く担当もやらなければならないというような義務はなく、手分けしてやっています。問題文の担当者の役割は、これまでに培ってきた競技プログラミングの知識を動員して、実際のICPCで使われそうなスタイルの問題文を書くことです。

私は作問力が低いので、原案づくりにはほとんど貢献できていないということもあり、だいたい問題文の担当をやっていることが多いです。

問題文の作成作業ではGoogleドキュメントを利用して行っています。出題ミスを減らすため、問題文の作成担当者のほかに校正の担当者も設定しており、Googleドキュメントのコメント機能を使ってやりとりしています。

データセット作成

データセットの作成は問題の難易度と関わる重要作業なので、問題文の作成担当者とは別の人が行っています。

作成されたデータセットの検証にはtestlibというC++のライブラリを使っています。これは、空白の有無や改行コードなどを検証を行うコードの記述を手助けしてくれるライブラリで、問題文の作成担当者が検証コードを書くことで、問題文に記載した入力のフォーマットと矛盾する入力が作られていないかチェックしています。

github.com

ジャッジ解の作成

問題文やテストケースが正しく作成されているという確認のために、いろいろな人がジャッジ解を作成することが望ましいです。

ICPCではC++の他にJavaPythonも使用可能なので、JavaPythonのジャッジ解も作成することが望ましいのですが、人手不足で十分に行えていません。また、正答するジャッジ解以外にも、TLE解、MLE解、嘘解法を作ることも必要です。JAGではJavaPythonでジャッジ解を書きたいという方や、嘘解法に精通した方を切実に募集しています。

Rimeと継続的インテグレーション

JAGではデータセットの生成・検証とジャッジ解の検証のためにRimeを使用しています。Rimeは昨年行った改修でPython3に対応することができました。ただ、Windowsでの挙動に怪しいところがあるという問題を抱えており、Windowsで動作するような改修を行ってくれるPythonに精通した人材を募集しています。

github.com

Rimeには、データセットの作成状況やジャッジ解の実行結果をPukiWikiにアップロードするプラグインが含まれており、JAGの内部Wikiで進捗が確認できるような仕組みを導入しています。

f:id:kujira16:20180709223355p:plain

f:id:kujira16:20180709005007p:plain

データセットやジャッジ解のソースコードはGitとGitHubで管理しています。昨年からの試みとして、継続的インテグレーションのサービスを利用して、GitHubにpushされたら自動的にテストを実行してPukiWikiの更新を行う仕組みを導入しています。

解説の作成

問題の解説は、問題の準備が一息ついてから行っている状況です。そのため、十分に時間をかけた分かりやすい解説にはなっていないかもしれません。競技プログラミングでの解説の公開方法に改善したいところがあるという方の参加を切実にお待ちしております。

まとめ

2年目のスタッフとして私から見えたJAGの活動を紹介しました。

JAGでは現役選手を応援したいと思っているすべての人を募集しています。

凪のあすから 聖地巡礼・舞台探訪(三重県熊野市)

2024年1月追記

10周年を記念して再訪しました。

kujira16.hateblo.jp


せっかく日帰りで行ける距離に住んでいるので行ってみました。

舞台設定について

凪のあすから」には陸の世界と海の世界が登場するのですが,陸の世界のモデルは三重県熊野市を中心とした南部の地域です。

アニメの放送が行われてからしばらくは,どちらの地域についても公式には舞台と公言されていなかったのですが,地元の自治体(熊野市)は認知しているという奇妙な状況でした(広報くまの No.129(2016年7月5日発行))。ところが,1年前にこの地域をモデルとしていることが公式に発表されたという経緯があります。

一方で,海の世界のモデルはギリシャサントリーニ島のイアという地域だと考えられています。

こちらは行くのがかなり難しいですが,行ってみたという猛者もいるようです。

blog.goo.ne.jp

blog.livedoor.jp

スケジュール

モデルになったと考えられている地域は アニメ聖地ロケ地追っかけ舞台探訪まとめWiki にまとめられています。携帯電話の電波が入りにくい地域があることが考えられたので,舞台探訪まとめWikiで配布されているフィールドマップを紙に印刷して持っていきました。

アニメ内の構図と概ね一致する箇所は,熊野市駅と大泊駅の中間にある鬼ヶ城波田須駅,新鹿駅,二木島駅,紀伊長島駅の周辺にあります。鉄道と徒歩のみで移動する予定だったのですが,広範囲に点在しており,鉄道の運行本数が多くはなく2時間に1本程度のため,日帰りするために鬼ヶ城波田須町,新鹿町のみ訪問することにしました。最終的に,特急ワイドビュー南紀熊野市駅まで移動 → 昼食 → 鬼ヶ城 → 大泊駅から波田須駅まで紀勢本線で移動 → 徒歩で新鹿駅まで移動 → 紀勢本線紀伊長浜駅まで移動して夕食,という旅程になりました。

この地域のおいしいものを調べるには 熊野市観光協会紀北町観光協会 のWebサイトが便利でした。

松阪駅熊野市駅

近鉄松阪駅まで移動してから,JR東海の特急ワイドビュー南紀に乗り換えて熊野市駅まで移動しました。

松阪駅JR東海近鉄のホームが同じ改札内にあるというおもしろい構造でした。特急料金を払えば松阪駅から熊野市駅までは2時間程度で到着します。指定席を買うときは駅員さんに「海側の窓側」と伝えてみるといいかもしれません。

途中で通った紀伊長島駅周辺の造船所を車内から取った写真です。紀伊長島駅から遠いので訪問はスキップしました。

あとは ↓ の踏切も通ったのですが,撮り逃しました…

尾鷲市を通っているときに撮影した写真です。何ていう場所なのか分からないので誰か教えてください…

新鹿町です。あとで訪問します。

熊野市駅

https://photos.app.goo.gl/YqAIvcTxeaFQsFL52 ← 駅前を360°パノラマ撮影してみました。

このあたりでは比較的人口の多い地域です。特急が停まるということもあって,さすがに有人駅でした。三重県統計書によれば,2015年の一日平均乗車人数は466人とのことです(熊野市駅 - Wikipedia)。「熊野駅」ではなくて「熊野駅」なので切符を買うときには慌てないようにしましょう。

11時13分に到着したので,ここで昼食をとりました。駅前にある「喜楽」というお店です(↑のパノラマ写真から見えます)。さんま寿司が490円でとてもリーズナブル。

鬼ヶ城

世界遺産の海蝕洞です。実際に行ってみるとかなり迫力があって圧倒されます。

パノラマをたくさん撮りました。

  1. https://photos.app.goo.gl/etUGG2DfQzJBxWqi2
  2. https://photos.app.goo.gl/RkGkHSOyvF4WQ4i33
  3. https://photos.app.goo.gl/2AGCq3lcgBlCxzMf1
  4. https://photos.app.goo.gl/8MjOmPoBfOwLnMsF2
  5. https://photos.app.goo.gl/EgJ1Z9ZJyJGOcDVF3
  6. https://photos.app.goo.gl/xEIj9eMaaqnqRocw2
  7. https://photos.app.goo.gl/Ra9Vdoa5L8fNue052

追記

「要階段」のスポットについて情報いただきました。ありがとうございます!!

大泊駅

波田須駅まで一駅なので徒歩で移動できるかと思いきや,かなり距離があったので利用しました。三重県統計書によれば,2015年の一日平均乗車人数は7人です(大泊駅 - Wikipedia)。当然ながら無人駅です。ホームが長く見えますが,停車する列車は2両だけです。

列車はかなり新しい車両のようでした。JR東海の新幹線マネーはすごい…

波田須駅

三重県統計書によれば,2015年の一日平均乗車人数は6人です(波田須駅 - Wikipedia)。聖地が特定された2014年だけ利用者数が跳ね上がっているのが面白いですね。無人駅の乗車人数をどうやって計測しているのかはよく分かりませんが…

駅舎は2016年に新しくなったそうです。以前は巡礼ノートが置いてあったそうですが,今回は見つかりませんでした(天女座に移動したらしい)。

この集落の2017年の人口は166人です(波田須町 - Wikipedia)。

天女座

聖地巡礼に来たファンの溜まり場となっているカフェです。不定期でファンイベントも開催されているようです。Googleで検索したところによると,以前は別の看板だったようなのですが,新しく作り変えてアニメにそっくりな看板にリニューアルしてくれたようです。

http://tennyoza.com/index.html

↓ ぜひ天気の良い日の夕方に入ってみたいお店です。

ameblo.jp

営業していない前提でスケジュールを組んでいたのですが,行ったときには営業していました。ただ,お店に入ってしまうと電車の時間に間に合わなくなってしまう可能性があり,泣く泣くスキップしました… お店の方がTwitterをされているようなので,事前に連絡してみればよかったですね。

新鹿町

人口777人,小学校は29人,中学校は11人という町です(新鹿町 - Wikipedia)。

https://photos.app.goo.gl/jtmcTT7dpSqNpbMr1 ← 海岸のパノラマ写真

ここの海水浴場は「日本一きれいな海水浴場」と主張していて,実際かなり綺麗だったので嘘ではないと思います(新鹿海水浴場 - Wikipedia)。

サヤマートのモデルになったと考えられているお店です。店の外観はよくありがちなものなのに,どうしてそう考えられているかというと,ここ以外に商店が無いからです…

橋脚は海水浴シーズンに中州に移動するための橋を掛けるのに使われているそうです(Twitterで検索すると橋がかかっている画像が見つかります)。

三重県統計書によれば,新鹿駅の2015年の一日平均乗車人数は56人です。基本的には無人駅ですが,花火大会のときだけ駅員が派遣されてくるとのことです(新鹿駅 - Wikipedia)。

紀北町

三重県統計書によれば,2014年の一日平均乗車人数は241人とのことです(紀伊長島駅 - Wikipedia)。自動改札も自動券売機もありませんが,特急は停まるし駅員さんも常駐されています。

この町はマンボウが名物らしく「道の駅 紀伊長島マンボウ」というお店に移動してマンボウフライ定食をいただきました。土日限定営業の屋台でマンボウの串焼きも売られているとのことだったのですが,なぜか行ったときには営業していませんでした。食べた感想ですが,揚げた状態だと普通の白身魚という感じでした。鮮度が落ちやすいとのことなので,定常的に食べられるのは全国でも限られた地域だけです。

自宅まで

松阪駅まで紀勢本線で戻ってから,近鉄特急で帰りました。

まとめ

論文執筆で忙しいとか寒いとか理由を付けて先送りにしていたのですが,ついに目的が達成できたので心残りがなくなってほっとしています。強いて言えば,午後から曇り始めてしまってインスタ映えする写真が取れなかったことが残念でした(これでもかなり天気予報を気にして日程を決めたのですが…)。ファンイベントも予定が合えば行きたいですね。