2020年の目標:上半期を振り返る

7月1日にする予定だったのですが、7月31日に…、8月17日に…、8月18日に…ボロボロ。

目標原文:黒色
ここまでの評価:→紫色
対策:→青色

⭐⭐⭐ 既に2020年の目標を達成している。
⭐⭐ このままいけば2020年の目標を達成できそう。
⭐ このままだと2020年の目標は到達できないが、進展はある。
💀 進展していない、もしくは後退している。

💼平日に1時間やる
🌞休日に2.5時間やる

目標の前に

2020年は、定時で帰る(大前提)

2019年は、仕事時間が長すぎました。長時間労働が必ずしも悪いとはいえないですし(結果を出すのがなにより重要)、別にダラダラ働いていたわけではないですが、2020年はいったん短時間労働制約を自分に課して(基本定時に帰る)で、どう効率よく仕事すればいいかを考えるきっかけにしたいと思います。これで仕事の結果がダメになったら、それは自分の責任。
→💀2019年よりも悪化しています…。仕事が前もって進んでいる時期しか日課ができていない状況。総量が読めない新規仕事が多く、また在宅業務になってプライベートと仕事が混ざり、ずるずる仕事をやって効率がよくないのが原因な気がする。
定時で強制的に仕事を打ち切る(強制的に打ち切るようにしないと、日中に良い意味でプレッシャーがかからない)。また、プライベートと混ざらないように、仕事時間外は、会社のパソコンを閉じる

2020年の目標

競プロ(短時間マッチ系)💼💼🌞🌞

🏆AtCoder 黄色
→💀1684⇒1607
🏅AtCoder Problems 250000 pts (ABCのC以上の問題で)
→💀100100⇒135300

2019年はレートを大きく下げてしまいました。最後に目標を達成して、単純に練習量の不足なだけという結論に達したので、2020年はがんばりたいです。3ヵ月おきで目標を区切り達成を目指す予定。
(参考)2019年下半期の結果
→コンテスト参加とその復習のみで、全く練習できていない。そもそも平日1時間*5+休日2.5時間*2=週10時間と換算すると、300時間ぐらい出遅れているので無理ですよね…
→もうさすがにハイペースでやらないと、どうにもならない状況。最優先で週30時間ぐらいのペースで。

競プロ(マラソンマッチ系)🌞

🏆マラソンマッチ(Hash Code・日本橋ハーフマラソンなど)で1回はオンサイトの決勝に行く
→⭐⭐⭐Hash Codeで世界大会の決勝にでる
🏅マラソンマッチに10回参加
→⭐⭐7回

ただし、もし2020年中に、AtCoderマラソンマッチにレーティングのようなものがついたら、目標自体を追加変更するかもしれません。
→マラソンマッチ系については、一部の結果は素晴らしかったのですが(Hash Code 33位、Introduction to Heuristics Contest 1位)、Hash Codeは自分自身は不調で、実力アップのための対策や、復習も滞っている状況です。

→目標は達成できそうなので、復習をメインにしていこうと思います。また、後述の共同研究にマラソンマッチ系のネタを含める予定です。

将棋 💼

🏆将棋ウォーズ二段
→💀1級
🏅勉強記録を1年間つけ続ける
→⭐つけ続けていたけど、ここ2ヵ月はマメにつけていない…

2019年は、将棋ウォーズ1級に陥落してしまいました。さすがに悲しすぎるので、勉強法にすでにテコ入れをしました。これでうまくいったらいいなぁ。
→3回ぐらい初段に復帰しそうだったのですが、失敗。例会では勝っているので、実力は上がっている気がするのですが、将棋ウォーズのレベルが上がっている気もします…(まわりを見てもほとんど0.5段ぐらい落ちてる)。
実際の勉強時間だけみると、将棋ウォーズだけでも949局、対局の復習や勉強も含めると、すでに400時間程度はやってます。ただ、一番の問題は、将棋ウォーズの対局とその復習に偏りすぎで、忙しくなると、詰将棋・次の1手などの日課をサボってしまうこと。かけた時間の割りには効果がでていない気がします。

→将棋ウォーズ二段は厳しいですが、対局は抑えて、日々の勉強週間を立て直すことだけに集中したいと思います。

共同研究(追加) 💼🌞

以前からアイディアがあるのですが、次の記事で具体的な内容について書きますので(今週中の予定)、ぜひご協力いただければ幸いです。なお内容については変更があります。
f:id:shindannin:20200818095955p:plain
f:id:shindannin:20200818100100p:plain

以下の目標は、他の目標が全然できていないので、今年の目標からカットすることにしました。大反省中。ただ、ゲーム技術系は重要なので、「共同研究」ネタの1つに含めようと思います。


カットした目標

ゲームをする🌞
🏅ゲームを250時間以上する
→⭐⭐⭐307時間

多くはないですが、これぐらいで。
→将棋ウォーズを入れてしまいましたが(237時間プレイした)、その他はリングフィット・壺おじ・自社のゲームぐらいしかやっていない気が。これはダメ…
→本当は他のゲームで250時間以上する予定だったのですが、目標変更するのもあれなので、今年の目標からカット!

ゲーム技術系 💼
🏆Unityの試験(エキスパート ゲームプレイプログラマ)に受かる
→💀何もしていない
🏅ゲーム開発の議論ネタになるような記事を2か月に1回書く。
→💀何もしていない

2019年は、過去のゲーム開発で得た経験・知識を徐々に忘れてきているというのを実感しました。ボケを防ぐためにも、ゲーム開発のネタの記事を今年から書いていこうと思います。記事の質は微妙になると思いますが、議論の土台になるように書いていきたいです。
また、2019年は仕事内容が変わってUnityを使うようになりました。「ゲームエンジンを使用したことがある人だったら、商用のUnityも使えるだろう」と思っていたのですが、まぁ使えてはいますが…

  • Unity経験が多い人ほど、Unityで良いゲームを作れる(あたりまえ)
  • 他のエンジンをできるだけ多く詳しく知っておくことが、将来、自前でフルスクラッチでゲームエンジンを作るときにも役立つ。

という気持ちになったので、Unityの試験を受けてみようかなと思います。
https://certification.unity.com/ja/products/expert-gameplay-programmer
→他の目標が全然できていないので、今年の目標からカット!


言語 💼

🏅中国語の勉強して、簡単な日常会話ができるよう
→💀何もしていない

まだ個人的な理由で、広東語かマンダリンのどっちを勉強するかなど、細かいことを決めていませんが、決まり次第更新します。それにより成果目標を追加予定です。
→他の目標が全然できていないので、今年の目標からカット!

海外のゲーム会社であった制度

今まで、バンクーバー→バルセロナ→シンガポール→香港で働いてきました。それでいろいろな職場を見てきたので、海外のゲーム会社であった制度について、列挙してみました。

  • 日本の会社でも、既に同様の制度をやっていて、珍しくない場合も多くあると思います。
  • 複数の会社のケースを混ぜて書いています。
  • ゲーム開発技術に関することは、ほとんど書いていません。
  • ご指摘がありましたら、修正したり詳細を追加しますので、お気軽にどうぞ(内容が後で変わる可能性があります)

人事(採用)

面接

  • 普通の面接
    • 人事の方との電話面接が2回、オンサイトでプログラマ―との面接が2回
  • 手厚い面接(シンガポールに住んでいて、香港の会社を受けたケース)
    • Google Hangoutでのオンライン4回の面接(プログラマ―・プログラマ―・人事・大ボスと)、それを通過したら、現地香港でのオンサイト面接が6回*1時間(いろいろな職種の方と)
    • オンサイト面接の日程は4-5日間。
      • 月曜日)香港案内
      • 火曜日)会社説明・社員とお食事
      • 水曜日)面接6回
      • 木曜日)面接結果報告・給与交渉
    • オンサイト面接には、家族やパートナーも参加することを推奨している。なぜなら、海外への転職は、本人が会社にマッチしても、家族が現地の環境にマッチしないケースが多々あるので。それを避けるため、1日目は、香港ガイド兼不動産の方と、家族帯同で、香港ミニツアーを行い、香港の生活環境や不動産等の説明を受ける。
    • 面接する側は、面接6つが終わった後に全面接官がミーティングルームに集まり、全員賛成したときのみ採用決定。1人でも反対の人がいたら議論する。
  • オンサイト面接は、現地までの旅費・ホテル代は会社持ち。
  • 内容は、ホワイトボードコーディングがよくあるけど、日本のゲーム業界と大差ないと思う。
  • 作品提出については、中途採用だったので、自己制作の作品を提出する必要はなかった。 ゲーム業界の中途採用だと、開発物を見ることができるので。ただ、面接途中で課題を出されたケースは1度あった(2次元フィールドに長方形を詰め込むビンパッキング問題)
  • 後日、面接を受けた人にアンケートを送って、面接する側への感想をフィードバックしてもらう(本人へ直接ではなく、人事部に直接送られる)。これは面接を改善していくために、本当に大事。
  • 日本は解雇がとてもしづらいので、むしろ日本の方が面接回数や内容を充実させたほうがよいと思う。

ビザ

  • ビザ取得難度は、国に依存するし、時期によってルールが違うので、最新情報を必ず確認を!
  • ビザがあることや国籍(ビザの取得に関わる)を採用条件にすることも多々あるので、最初に伝える。
  • 自分のケースでは、ビザ取得に関しては、基本会社がサポートしてくれた。
    • 日本→バンクーバーへ転職
      • 採用が決まった時点で、手持ちの観光ビザ(3ヵ月滞在可能)の期限が近づいていたので、一旦日本へ帰国。会社がビザの専門家にお願いして、ワークビザを取ってくれることに。ビザ待ちの期間は日本で待機。
      • 平均3ヵ月で取れるのだが、その専門家が手紙が届いていたのに気づかずに遅れてしまい、再申請になり、結局7ヵ月ぐらいかかった。その間はかなり不安だった。海外は日本よりも事務で失敗確率がだいぶ高いので、まめなチェックが大切。
      • ちなみに、日本→バンクーバーへ転職だと、ワーホリビザやCOOPビザというのを予め持っておいて、転職するという方法もなくはない。
      • 参考 カナダで就職する際にしたこと - じじいのプログラミング
    • バンクーバー→シンガポールへ異動
      • EP(Employment Pass)。 1ヵ月ぐらいで取れる
      • 会社を辞めたわけではないので、申請を受け取るまで働いて、ただ引っ越しすればいいので、気が楽。
    • シンガポール→香港へ転職
      • 書類自体がかなり簡単。3週間ぐらいで取れる。

リファラル採用

  • 紹介・推薦による採用。そのほうが、優秀な人材である確率が高く、採用率も圧倒的に高い。
  • 紹介する側の成功報酬は、会社によってまちまち。いままで働いたところだと、好きなゲーム機1つ・iPad・現金5万円・現金40万円ぐらいと会社・支社ごとに大きく違った。緊急で採用したい場合には、より多くの報酬を出すこともある。

リファレンスチェック(照会)

  • 採用時に、前の会社での働きぶりなどをチェックする。以下の2種類のケースがある。
    • 会社側が、過去に一緒に働いたことがある人を探して、極秘調査する
    • 面接を受ける人が元同僚を指定して、その元同僚と受ける会社が直接やりとりする
  • ちなみに、自分が最初バンクーバーで面接を受けたときも、日本の前社の上司に照会がきていたことを後で聞いて驚いた。ゲーム業界は世界的に見ても狭いです。普段の仕事はちゃんとしましょう。

カンファレンス時の招待者限定パーティー

  • GDC(Game Developers Conference)の際は、各国の技術者の採用チャンス。採用ブースを設けるだけではなく、夜には、社員とコネのある他社の技術者を招待し、会社主催の招待者限定パーティーが開催される。

人事(評価)

相互評価制度

  • 同僚の数人を選んで評価してもらう、もしくは上司が選んだ同僚に評価してもらう。
  • ゲーム会社だと、他の職種の人と協力して行うので、他の職種の人に評価してもらっても構わない。
  • 上司を評価する。日本だと、上司への評価はしない、もしくは簡素な場合が多いかも。上司の評価は、後述のサーベイでも、細かく調査される。

OKR(Objectives and Key Results)

  • 日本でもGoogleがやっているということで、話題になっている制度。
  • OKRとは
  • しかし、OKRの運用は実は難しく、実際に以下のような問題があった。
  • OKRのO(目標)はシンプルなので、設定に時間がかからないと言われることもあるが、ちゃんと企業の目標にそったものにしたりするなど相談しながら設定するし、考えることは多い。定期的にキャッチアップする必要もある。簡単ではない。
  • 人事考課の評価とOKRは目的は違うが、やっていることは似ている場合がある。例えば、通常の人事考課の評価でも、個人の目標をたて(特に企業のバリューにそったもの)、それで報酬を決めたりすることはよくある。
    • そのために、2重負担になる。
    • その違いをはっきり理解してもらう必要がある。
    • 特に、人事考課の評価がちゃんとしていない会社でOKRを導入すると、OKRの目標は達成しているのに人事考課の評価とは関係ないとなり、成果主義ではなくやりがい搾取のような印象を社員に持たれてしまう危険がある。
  • 自分の意見としては、OKRを導入していいケースは以下の2通りのケース
    • 人事考課の評価制度が社員の納得いくものになっている
    • 人事考課の評価制度を気にしないほど、待遇が十分良い

人事(解雇)

解雇

  • 国によって大分違う。カナダ・シンガポール・アメリカは簡単。数週間~1ヵ月前の通告で解雇できる。
  • フランスは、解雇に関しては厳しいが、それでもお金をたくさん払えば解雇できる。そして、たくさん払ってでも解雇するほうを選ぶことが多い。
  • 解雇を通告された場合は、午前中のうちに荷物を片づけて出ていく(ロックアウト)
  • 下位x%(3%ぐらい)を定期的に解雇するケースが多い。ただし、以下のような問題点がある。
    • 上司の評価に大きく依存する。社内政治が強い会社だと、特に悪い方向に行きやすい。
    • 特にx%固定で定期的にやるとなると、無理やり対象者を決めないといけないので、リードやマネージャーの負担が増える。
  • 解雇の前に、PIPという制度もある

PIP(Performance Improvement Plan)

  • 事前に「仕事の結果が十分でない」通告がされて、3ヵ月間の猶予が与えられる。この時点で会社を辞めるか、PIPに参加するかの選択ができる。PIPに参加する場合は、仕事の到達目標が設定され、仕事の結果を頻繁に厳しめにチェックされる。3ヵ月後、結果により、そのまま・降格・解雇のどれかになる。
  • 社内でPIP制度があるということは伏せられている。社内の中堅以下は、この制度の存在すら知らされていない。
  • もちろん誰に対してPIPが適用されたかは、対象者・関係者・経営層以外には知らされていない。
  • 自分の意見としては、PIPは、普通の解雇よりも悪い制度だと思っています。理由は以下の2つ。
    • PIPになっていない人にも負担がかかる。
      • PIPになったは、基本、自分の仕事が最優先になって、チームワークがしづらい。
        • デバッグしなくなり、結局の彼の分のデバッグを引き受けることになった。
      • PIPになった人とアウトプットが比較される場合がある。そうなると、なった人より仕事の成果を出さねばというプレッシャーがかかる。(PIPになった人より結果が出なかったら、次は自分がPIPの標的になりそうなので)
        • 自分のケース。PIPになった人が担当していた物理挙動のプログラミングが出来が悪く、当初自分が引き継ぐことになっていたが、PIPの人が自分よりも良い成果が出せると主張したため、結局3か月間は彼のサポートをしながら、自分自身は成果を出さねばならないという難しい状況になった。
    • 「心理的安全性」の意味でもよくない。

スタジオ閉鎖

  • 基本は解雇。スタジオの閉鎖業務をする人と、ある程度以上優秀で他の支社へ異動が可能な人は会社に残るが、基本は全員解雇。
  • ロックアウト
    • スタジオ閉鎖時には、朝に全員参加ミーティングに呼びだされ、突如スタジオの閉鎖が通告される。
    • 終了後、席に戻ると、パソコンには今まで見たことのない画面が表示されてロックされている。
    • また、スタジオ閉鎖を監視する人が、本社から送り込まれていて、いつの間にか。IDカードを返却し、会社を出ていくまで見張られることになる。
    • ゲームメディアでは直後に話題になり、LinkedInに連絡が殺到する。その日は昼から夜中まで近くのバーで、悲しい&憂さ晴らし系の飲み会になります…
  • アートアセット持ち出し可
    • アーティストについては、転職時にポートフォリオ作成が必要となるので、進行中のプロジェクト以外の過去のデータは持ち出し可能となった。IDカードは返却しているので、後日、会社に呼び出して、持っていく形式。
    • プログラマーは持ち出し禁止。
  • 再就職先の斡旋
    • 後日、他社への転職のための就職フェアが行われた。その日は社内を再び解放し、バンクーバー内の10社以上の人事担当者が集まり、中途就職案内などが行われた。
    • 外部の転職のための各種セミナー(面接対策とかレジュメの書き方の指導)も無料で行われた。
  • スタジオ閉鎖後の業務
    • 閉鎖後も残る人は一度とられてIDカードを返してもらって普通に出勤することになる。自分のケースだと、他支社へのプロジェクトの引継ぎ業務があったが、すでにほとんどの人が解雇されていてるため、作業は難航した。また、異動の予定がある場合は、異動先との面接などを行って、異動先を決める。

人事(その他)

若手が海外スタジオで1年間働いて修行してくると昇格

  • 新卒2・3年ぐらいの人が対象。海外の支社で1年間働いてきて、戻ってくると、junior(レベル1/5)→intermediate(レベル2/5)に自動昇格する。目的は、会社に対しての帰属意識アップと、支社間の技術シェア。世界各国に支社がある大きいゲーム会社だと、支社間の技術差や文化差がかなりあり、こういった交流は確実にプラスに働くと思う。

他の国の支社に異動希望ができ、面接さえ通れば基本通る(Internal transfer)

  • 2年間以上同じ支社にいた場合は、基本、異動希望が通り、好きな国で働くことができる
  • これも交流目的

給与制度の外注

  • 業界他社の給料を分析してどれだけの給料を与えるのが適切かを決める専門の会社があって、給与決めはそこに外注。

技術シェア

全社技術カンファレンス

  • 世界中の支社の開発者を集めて、GDCに似たカンファレンスが行われる。ゲーム開発技術共有が目的。
  • レベルが高い。審査があり、採択率は5-10%ぐらいとかなり厳しい。採択された場合は、もちろん旅費等はただで、発表ができる。各支社からも聴講者が自由に参加はできるが、遠くの支社からは数人のみ。
  • 技術の中には、とても技術が高いレベルだけど社外秘のものがあり、そういうもののシェアの機会として、大変有用。
  • 評判が良かった発表で、他社にシェアして問題ないものは、そのままGDCで発表されるケースが多い。

全社ゲームジャム

  • Game Jam(3日でゲームつくれ)をやる。技術カンファレンスの際に、各国からエンジニアが集まっているので、それに合わせてゲームジャムが行われる。支社間の交流にもなる。
  • ただ3日間フルというのは、人月として小さくなく、一時中止になった。

社内SNS

  • 社内ツイッター風
    • 過疎りがち。
    • 技術を共有したいは、人数が多い環境でシェアしたい、そして、社外評価をアップさせたかったりするので、社内ツイッターでやるなら、本物のツイッターでやる人がほとんど。
  • 社内YouTube風
    • 開発者用のYouTube風動画投稿サイトはおすすめ!(社内の経営層から案内等を載せるYouTube風投稿サイトは、やや過疎ってた。)
    • ちょっとした開発中の動画でも、簡単にアップすることができると、技術シェア効率が大変よい。新規要素を追加したとき、進捗をお知らせしたいとき、ゲームの新しいアイディアも、動画で簡単にシェアできればすぐ伝わる。
    • またゲームのプロトタイプや過去のバージョンとさくっと比較したいときには、過去の動画を見ればよい。いつの間にかグラフィックが劣化してたり、ゲームの挙動がおかしくなってたりしたときに、確認のために使える。
    • 他の支社で同じようなゲームのアイディアをやっていないかをチェックすることもできる。
    • 簡単にアップロードできるようにして、みんなが気軽にどんどんアップロードしていくのが重要。そのために、自社のゲームエンジンには、簡単に録画できる機能をとりいれるべき。
  • 社内個人Wiki, Confluence
    • 過疎りがち
    • 皆に見てもらえるような情報を提供できる人は、とても有効に技術シェアに使えている。

なんでも映像化

  • 動画を取ったり作成したりする専門の職種がある。全社的には、映画監督までいる。
  • 海外のゲーム開発で、ゲームのメイキング動画や技術紹介動画をYouTubeにアップされてる。これは宣伝目的でもあるが、実は常日頃からそういう動画を、社内・チームにシェアをするために作っている。雰囲気としては、こんなかんじ "Inside game studio"で検索すれば、いろいろでてくる https://www.youtube.com/results?search_query=inside+game+studio
  • 動画の種類としては、以下のようなものがある。
    • 成果達成アピール系
      • 1ヵ月前はゲームがこんなかんじだったけど、今はこれだけ良くなったよというのをアピール
    • メイキング系
      • 他のチームが何をしているか知らせる
    • 啓発・お知らせ系
      • 例えば、「データをサブミットする前には、メモリチェッカーを起動しましょう!」といった地味なものでも、チームに宣伝・拡散するために、映像専門化と協力して、動画のストーリーを決めて、演技をして、1分ぐらいの動画を作った。こういう動画を月例ミーティングでシェアする。
    • ネタ系
      • ゲーム開発中に発生した笑えるバグまとめ動画。プロジェクト終了時にみんなで見て笑う。

外部技術者講演

  • 他社のゲーム開発者を呼んだりする。日本からも、スクエニのプロデューサーを呼んだり、バンナムの方がビデオ出演してもらったりしていた。海外のゲーム開発者は日本のゲーム開発をちゃんとチェックしています!

ゲームデザイン研修

  • 全世界の支社から、ゲームプレイプログラマ―・レベルデザイナー・ゲームデザイナー合計で20人ぐらい集めて、2週間ゲームデザインを研修を行う。
  • ゲームデザインの研修では、自社のノウハウをためた専用の分厚いゲームデザインのテキストで勉強する。もちろん、日本のゲームの事例もたくさん出てくる。結構マイナーなゲームも使われている。
  • 紙でゲームのプロトタイプ実習もする。プログラミングは行わない。
  • ポイントは2つ
    • まず、海外だと職種の専門化が進みすぎて、ゲームプレイプログラマ―がゲームデザインを全く知らなくてもいいという誤解があるかもしれないが、そんなことはない。これらの3つの職業全てにゲームデザインスキルは必要だという認識。
    • ゲームデザインに答えはないのですが、こういうテキストや研修で「用語の統一」ができるのがポイント。例えば、「ゲーム性」と言っても、どういう意味かは人によって異なってしまう。そうなると、議論を発展させることもできない。用語の統一で、議論を発展させることができるし、他の支社との共有がしやすくなる。(社外も含めて統一できればベストなんですが、少なくとも社内では統一したいですね!)

中途研修

  • 全世界の支社から、全職種を合計で20人ぐらい集めて、2週間研修を行う。内容は普通で、会社の方針や社内の制度などの講義を受けたりする。ただし、毎日1時間、自社の5vs5ゲームで対戦する時間があったのが変わっていた。

テクニカルライター

  • おすすめ。社内のWikiやConfluenceのような情報サイトを、常に分かりやすいように、構造が変だったら整理してくれたり、テクニカルタームを統一させたりしてくれる人。プロジェクトには属していない。

社内技術規約

  • インターネットのRFC(Request for Comments)のようなもので、社内で統一したい技術規約(例:データフォーマット・命名規則・コーディング規約など何でも)を決める仕組み。誰でもドラフトを出すことができて、誰でもで賛成・反対意見を出すことができる。
  • 一度規約化してしまえば、
    • なぜ、そうなったのかを、後でも読むことができる。
    • 宗教論争になりそうなことでも、時間をかけずに済む。コメントで「RFC x番に従った」と書けば説得可能で楽。
  • 会社のプロジェクトが安定している時期にはよく機能していたが、ただ、いろいろなプロジェクトが増えてくると、規約を設定したくても時間がなかったり、規約を守れないケースが増えてくるのが問題

プロジェクト

年次サーベイ

  • 社内の満足度調査をとても細かくやる。1年に1回、匿名で数百問のアンケートに答える。5段階で選ぶ方式が基本だけど、自由記述欄もある。
  • サーベイ目的なので、質問内容は、基本毎年おなじ。
  • 個人攻撃はできないようになっている。個人に関する不満等は答えないでくださいと、最初に書かれてある。
  • それに対して、上層部はちゃんとどういうアクションを取るか、取ったかの説明責任がある。

常時サーベイ

  • 匿名で、毎週10問、とても簡単なアンケートに答える形式。
  • 複数の会社で、OfficeVibe https://officevibe.com/ というツールを使っていた。
    • OfficeVibeでは、チームのどの部分が良いか悪いかをが、他社平均と比較できるので(OfficeVibeは他社のデータも持っているので)、客観的な指標が得られて、有用だと思う。

プロジェクトマネージャー

  • 管理の専門職がある。日本のゲーム業界だと、各部門のリードもしくは企画職が管理兼任になることが多いが、その負担は減る。
  • だいたい7~10人のチームに、1人ぐらいの割合。
  • 開発進行の管理を行う。スクラムマスター等の取得していることも多い。また、コミュニケーション能力や折衝能力が一番大事。
  • 日本のように、管理職だからえらい・給料が高いということは全くなく(むしろ下手にでることが多い立場)、管理職ジュニア→管理職中堅→管理職シニアと昇格していく。
  • QAテスターから、プロジェクトマネージャーへの転向がわりと多い。
  • ゲーム業界以外の他の業種のプロジェクトマネージャーからの転職も可能。ただし、もちろんゲーム開発の管理なので、ゲームには詳しい必要があるし、ゲーム開発への素早い理解・適応力が求められる。
  • プロデューサーにステップアップしていくことが可能。

プロジェクト監査(Audit)

  • 目的は、ゲーム開発が遅延しているプロジェクトがある場合、プロジェクトの問題点を探ること。年1回程度行われる。
  • 監査用の社内チームがある。あくまで第三者的な立場。
  • 監査メンバーは、プロジェクト監査チームの方2名、他のゲームでの経験豊富なプロデューサー1名(利害関係はない人)で構成される。
  • プロジェクトに問題がある場合、本社側から監査の提案されるが、この監査を受けるか受けないかの最終決定は、プロジェクト側で決めることができる。
  • 監査メンバーは海外からやってきて、1週間かけて、社内のキーメンバーと一部ランダムで選んだ人達に聞き取り調査を行う。そして、プロジェクトの良い点・悪い点を洗い出す
  • 監査の内容は、以下のような、わりとクリティカルな指摘される
    • 「プロデューサー兼ディレクターが、ディレクターの役割を果たせていない」
    • 「リーダー層と現場の開発メンバーに大きな壁がある」
    • 「本社チームとディレクターが意志統一できていない」
    • 「本社のゲーム開発には関係ないメンバーが、他のプロジェクトにはないほど、ゲームに口出していて、意思決定の責任がハッキリしない」
  • 監査の精度は高い。こういう監査を通して「実はみんなそう考えていたのか…」といった問題意識がみんな同じだったりして、気づくことができる。
  • 海外の会社だと普段は上司の批判はすごくしづらいので、リードレベルで問題があるときに問題が解決しづらい。これをきっかけに変えることが出来る。監査の結果に対してプロジェクトがどういうアクションをとるかは決めなければならない。これをきっかけにリーダーから外されたり、実質解雇になることもある。
  • 監査の方の話によると、実はゲーム開発が遅延するプロジェクトの問題点は割と似ていて、そのノウハウは貯めることができるとのこと。
  • 全体としてはおすすめだけど、とくに監査の独立性を保たないと、逆に社内政治を助長するような、諸刃の剣になる可能性がある。

同一ゲームの多ライン開発

  • シリーズもののゲームだと、2作目の開発中に、すでに3作目もそれなりにできていて、さらに4作目の開発も始まっているといったことがある。
    • 例えば開発初期は、ゲームの企画がボトルネックになりがちだけど、多ラインだと3作目を企画ができたら、4作目の企画を前もって準備みたいにできるので、ボトルネックになりにくい。
    • 欠点としては、ゲームの内容に変更があったとき、そろえないといけないこと。またゲームエンジンなどの変更箇所のマージもとても大変になる。

β版で打ち上げ

  • ゲームの完成時の打ち上げもあるが、β版の時点(ゲームの要素は全部実装済み)でも、それなりに大きい打ち上げパーティーを行う。自分のケースだと、昼間から、ビーチでビーチバレー・バーベキュー・ココナッツ飲んだりして、あとは夜まで飲み!ぐらいの打ち上げ
  • ゲーム業界だと、できるだけ品質をあげたいという気持ちで、最後まで新規要素を入れようとしたりするが、そのせいでゲームの仕上げが雑になったり、大失敗につながるケースも。β版で打ち上げをすることで、「もう開発は終わり、新規要素入れたいなら、β版の前に全力でがんばれ!」という習慣を身に着けることができるので、個人的には賛成。

プログラマ―レンタル移籍

  • これは特殊ケース。プログラマーが足りなくなり、すぐ近くのゲーム会社(ルイージマンションを作っている会社)からプログラマ―数名を数ヵ月借りた。

プロジェクトクローザー

  • 経験の少ないチームのプロジェクトだと、致命的なバグが締め切りまでに修正できなかったり、新規要素をギリギリで追加したりということがあり、プロジェクトが期日に終わらず、発売日が遅れることが多々ある。そこで、本社の第三者機関の、プロジェクトクローザーを呼ぶことができる。
  • 彼らの役割は、プロジェクトを期日に終わらせること。バグ数のグラフをみて期日通り終わるかチェックしたり、終わらない場合は、切り落とすゲーム要素を決めたり、ギリギリで新要素をねじ込もうとする変更を監視したりする。変更の監視はプログラマ―じゃないと出来ないので、プロジェクトクローザーになる人は、過去にリードプログラマーなどをやっていた人が多い。ズルは不可能。

マイクロソフトスペシャリスト

  • 超おすすめ。「マイクロソフトスペシャリスト」という職種があり、マイクロソフト製品でハマったり変なことがあったときに直してくれる専門の方。リモートで世界各国の支社で起こっているマイクロソフト製品の不具合・ハマりを直してくれる。誰でも、OutlookやWordで半日ぐらいハマったという経験はあるでしょう。例えば数千人~一万人の社員がいる大きい会社であれば、1日に数人ぐらいはマイクロソフト製品でハマっていると思うので、その時間が節約となると、かなりコストパフォーマンスが高い。大きい会社なら社内に1人はほしい。

福利厚生・文化

有給休暇の残りがマイナス(使い過ぎ)

  • フランスの会社の話。特にフランス人が、手持ちの有給休暇残り日数を気にせずに使うので、残り日数がマイナスになる。有給休暇がマイナスになってる人が退社することになった場合は、休日出勤でマイナス分を補うことになるので、退社直前に休日出勤が増える謎の現象が起こる。そんなかんじで、有給は100%ほぼ消化される。日本でも、これぐらいの勢いで有給休暇を使えば、100%消化を狙えると思います。

無限有給(Unlimited paid leave)

  • 有給休暇が何日でも使える。が、プロジェクトの忙しさにもよる。Unlimitedとなると、実は人々は意外と休まず、まじめな人を雇ってるせいからか、明らかに取得日数が少なくなるので、微妙。

サバティカル(無給休暇)

  • 無給休暇。5年働くと無給休暇を3ヵ月取れる仕組み、日本だとサバティカルは、自己研鑽のための無給休暇みたくなってるけど、特に何のために時間を使っても良い。(日本の休職との違いはわかってない)

入社時交渉(異動時交渉)

  • 多くの人は交渉する。
  • 給与そのものの交渉はなかなか難しいので、他の条件で交渉するのがコツ。以下は自分の例ではないですが、こういうケースがあった。
    • 異動時交渉、フランスからシンガポールの異動なので、有給休暇をフランスと同じ分取らせろ!
    • (極端な例)入社時交渉でペット輸送代を確約させて、ちゃっかり、ペットの馬をイギリス→カナダへを輸送。

退職時交渉

  • 大規模をリストラが行われたことをリークしない約束にサインしたら、退職金が給料1ヵ月分

食べ物

  • 社食(ビュッフェ・無料)・ おやつ・飲みものも常備で無料・タピオカデー(無料)などなど
  • 社内バー(ビールを樽買いしていて無料)があったときも。
  • 残業時の夕食は、無料
  • 月1ミーティングや締め切り直後等では、だいたい軽食もでる。
  • 全員が休日出勤になるケースは、かなり特殊ケースと認識とされているので、そういう日は、ケータリングでかなりおいしい食事がでる。

保険

  • 手厚い。いままでの全職場で、医療費・歯医者等は、全額またはほぼ全額カバーされている。現職場だと、日本に行ったついでに、人間ドックを受けてきたといったケースでも全額カバー。
  • 家族に対する保険や、海外での事故等などの保険がカバーされているケースもある。

育児休暇

  • 支社のある国のルールに従うことが多い。数ヵ月のケースが多い(実は、日本の育児休暇は、世界的に見ても長いほうです)
  • 育児から復職しないケースは、見たことがない。こういったサポートについては、どこの会社も万全。

犬連れ込み可

  • バンクーバーのゲーム業界の会社は、犬連れ込みOKの会社が多い。どの犬もむだに吼えたりもせず、かしこい犬が多いので、最初みたときは驚いた。100人ぐらいのスタジオで、毎日5匹ぐらいは出勤していた。
  • 犬連れ込みができるのは、教育された大人しい犬のみ。吠えたりおもらしをしたりすると、出禁になる。
  • 一番の問題は、犬アレルギーの人にとって大変つらい環境になること。その人は個室で仕事することになったので、良くないと思う。

再入社

  • 辞めた人が再入社するケースは、かなりある。同じ会社を2度辞めて3回入社した人もいる。特に優秀な人限定というわけではなく、普通の人でも可能。

全社ミーティング

  • 全世界の全社員参加型の数百人ぐらいのミーティング。本社以外の人はネットで参加。2週間に1度あって、社長や経営陣が会社の進捗・話題などについて話す。全員Slackでリアルタイムに質問ができて、社長や経営陣が丁寧に答えてくれる。フレンドリーなかんじで、大変オープンで良い。

1on1ミーティング

  • 週1~月1ペースで、1対1で他の社員の方と話すミーティング。
  • 相手は自由に選べる。例えば、キャリアについての相談したいときは、上司と部下になることもあるし、交流目的であれば誰でもよい。
  • 社内やチームの交流を目的に、全く知らない人を1on1ミーティングの対象とすることもある。

圧迫系フィードバックミーティング

  • 年に1回行われていた。
  • ミーティングルームに集まり、直接同僚からのフィードバックが得られる。建設的な意見もあるんだけど、どちらかという問題点を多く指摘するのが目的。集団圧迫面接というかんじ。
  • フィードバックを聞くのが目的なので、基本反論ができない(そうすると、なかなか終わらないので)。
  • フィードバックを受ける側は、カードを2枚配られる。カードを使って反論ができる。つまり、ミーティングのうちに2回しか反論できない。
  • 自分のケースではないが、実際、このミーティング中に、けんかになったり、泣いたりする人がでることがあったそう。
  • また、ミーティングルームに集まるメンバーは決めれるので、予め根回しするケースもあった。
  • というわけで、かなり不満だったので(特に反論ができない点)、これを改善しようと上司に取り上げようとしたら、たまたま初参加の次の日に、全社的に廃止された。結局、否定から入るピリピリした文化が醸成されて、外部のコンサルタントから、Diversity & Inclusionや心理的安全性に反するということで廃止された。
  • やらないほうがいいと思います。

ハラスメント対策

Diversity & Inclusion

  • 海外のゲーム業界で、とても問題になっている。性別、年齢、国籍、人種等によらず安心して働けるようにするということ。
  • 外部講師などを呼んだりして、ここ1年でもう5回研修を受けた。

社内恋愛禁止

  • 上司が部下を2人きりで飲み・食事などに誘うのは禁止。人によって感じ方が違うので、相手にパワーハラスメント・セクシャルハラスメントだと言われた場合に、対応策がないので。
  • 上司・部下の関係ではない場合でも、社内恋愛は推奨せず、表に出すのも推奨しない(上司には言う)
  • ということをサインさせられました…

日本橋ハーフマラソンまとめ

AtCoderの過去問リンク Contest Archive - AtCoder

2020年の目標

目標の前に

2020年は、定時で帰る(大前提)

2019年は、仕事時間が長すぎました。長時間労働が必ずしも悪いとはいえないですし(結果を出すのがなにより重要)、別にダラダラ働いていたわけではないですが、2020年はいったん短時間労働制約を自分に課して(基本定時に帰る)で、どう効率よく仕事すればいいかを考えるきっかけにしたいと思います。これで仕事の結果がダメになったら、それは自分の責任。

コマわり

1コマを250時間/年とすると、ざっくり

  • 平日 250日を1時間 ... 平日の自由時間が4時間(20時~24時)とすると、4コマ💼💼💼💼ある。
  • 休日 100日を2.5時間 ... 休日の自由時間が10時間とすると、4コマ🌞🌞🌞🌞ある。

合計で8コマ💼💼💼💼🌞🌞🌞🌞あるはず。

成果目標と行動目標

  • 成果目標🏆 ... 結果を出しさえすれば良い目標。ただ、自分ががんばっても、まわりの環境により達成できない場合もあるかも
  • 行動目標🏅 ... その行動さえやれば達成できる目標。完全に自分との戦い。

2020年の目標

競プロ(短時間マッチ系)💼🌞

🏆AtCoder 黄色
🏅AtCoder Problems 250000 pts (ABCのC以上の問題で)

2019年はレートを大きく下げてしまいました。最後に目標を達成して、単純に練習量の不足なだけという結論に達したので、2020年はがんばりたいです。3ヵ月おきで目標を区切り達成を目指す予定。
(参考)2019年下半期の結果

競プロ(マラソンマッチ系)🌞

🏆マラソンマッチ(Hash Code・日本橋ハーフマラソンなど)で1回はオンサイトの決勝に行く。
🏅マラソンマッチに10回参加

ただし、もし2020年中に、AtCoderマラソンマッチにレーティングのようなものがついたら、目標自体を追加変更するかもしれません。

将棋 💼🌞

🏆将棋ウォーズ二段
🏅勉強記録を1年間つけ続ける

2019年は、将棋ウォーズ1級に陥落してしまいました。さすがに悲しすぎるので、勉強法にすでにテコ入れをしました。これでうまくいったらいいなぁ。

ゲーム技術系 💼

🏆Unityの試験(エキスパート ゲームプレイプログラマ)に受かる
🏅ゲーム開発の議論ネタになるような記事を2か月に1回書く。

2019年は、過去のゲーム開発で得た経験・知識を徐々に忘れてきているというのを実感しました。ボケを防ぐためにも、ゲーム開発のネタの記事を今年から書いていこうと思います。記事の質は微妙になると思いますが、議論の土台になるように書いていきたいです。
また、2019年は仕事内容が変わってUnityを使うようになりました。「ゲームエンジンを使用したことがある人だったら、商用のUnityも使えるだろう」と思っていたのですが、まぁ使えてはいますが…

  • Unity経験が多い人ほど、Unityで良いゲームを作れる(あたりまえ)
  • 他のエンジンをできるだけ多く詳しく知っておくことが、将来、自前でフルスクラッチでゲームエンジンを作るときにも役立つ。

という気持ちになったので、Unityの試験を受けてみようかなと思います。
certification.unity.com

ゲームをする🌞

🏅ゲームを250時間以上する

多くはないですが、これぐらいで。

言語 💼

🏅中国語の勉強して、簡単な日常会話ができるよう

まだ個人的な理由で、広東語かマンダリンのどっちを勉強するかなど、細かいことを決めていませんが、決まり次第更新します。それにより成果目標を追加予定です。

Google Hash Codeに参戦しましょう。

メリークリスマス!アドベントカレンダー25日目の記事です。
adventar.org

Google Hash Codeとは、

Googleの競技プログラミング大会、Google Code Jamはとても有名ですが、Google Hash Codeという大会もあります。2019年より、世界各国からも参加できることになりました。解答提出チームだけみても6640チームと、おそらく現時点でも世界最大規模のコンテストの1つといえます。しかし、今までの競技プログラミングコンテストとは、いろいろ違うので、その参加の記録をシェアしたいと思います。チーム戦で、マラソンマッチ系のコンテストですが、データ量が膨大で、独特の面白さ・難しさがあります。

Hash Code 2019 ルールなど

・時間
4時間。ただし、問題公表まで15分ぐらいあるため、実働は3時間45分ぐらい。

・参加資格
決勝にいけるのは18歳以上。Google Code Jamと同じです。Googleの人は参加できません。

・メンバー
2~4名です。1名での参加は不可能なので、注意。同地域の仲間を探すサイトもありましたが、twitter等で探したほうが早いと思います。

・開催時刻
日本時間の夜中2:00~でした。

・練習
ジャッジシステム
https://hashcodejudge.withgoogle.com/#/home
ただし、いつでも使えるようではないようです。あと、確か一部の過去問だけだった気がします。

・過去問
https://codingcompetitions.withgoogle.com/hashcode/archive

・決勝大会
決勝に進出できたのは、上位41チームでした。何チーム進出できるかは、予算の都合なのか、少しあいまい。世界大会にでた場合の交通費は大半はでるらしいです。

体験記

チームメンバー

4名で参加しました。全体のバランスが良いチームだったと思います。

たんざくさん(@_tanzaku_)

近年は、特にマラソンマッチ系コンテストの活躍が素晴らしく、今年のTopCoder Open 2019のマラソンマッチ部門で、初の世界大会に進出、世界8位の成績を収めました。

宇宙ツイッタラーXさん(@kenkoooo)

twitterのフォロワー7万人、みなさんご存知のAtCoder Problemsの制作者。過去の所属会社で競プロイベントを必ず開催してきた、日本の競プロ界なら、だれでもご存知なはず。一般開発に強いので頼れますし、AtCoder黄色です。

きゅうりさん(@kyuridenamida)

競プロ界で10年以上にわたり、幅広い世代に人気のある(いじられている?)競技プログラマー。短期コンテストも長期コンテストも両方できるバランスタイプ。簡単な問題の手の早さには、定評があります。

準備

1回だけチーム戦の練習を行いました。また、バラバラですが、全部の問題に目を通しておきました。練習結果は、決勝にいけない成績ではあったのですが、その際に、いろいろ学べました。

  • 4人同時のインターネット通話は不自由が多いので、集まったほうが良い。
  • 全員で協力して1つの良い解法を作るのを狙うよりは、解法をバラして、あたり解法を逃さないことが有効

など。練習は少なくとも1回はやっていくのをお勧めします。
f:id:shindannin:20191225235440p:plain

本番

  • 問題

https://storage.googleapis.com/coding-competitions.appspot.com/HC/2019/hashcode2019_qualification_task.pdf

ざっくりいうと、写真を並べてスライドショーをつくることで、得点を最大化する問題です。写真にはタグがあります。縦写真を2枚組み合わせるか、横写真を1つ使うと、スライドが作れます。スライドを一列に並べたものがスライドショーになりますが、となり合うスライドをA,Bとすると、min{Aのみのタグ, Bのみのタグ, AとBの共通のタグ}だけの得点が入ります。
f:id:shindannin:20191226005743p:plain

  • データは以下のようにバラバラですが、一部のサイズがかなり大きいです。

f:id:shindannin:20191226005408p:plain

  • 深夜にもかかわらず、自分以外の3人は同じ場所に集まって行い、自分だけ通話する形で行いました。
  • Slackとgithubを使用しました。ビジュアライザは各自用意しました。
  • まず問題を全員すぐ理解できるように、情報をシェアして、お互い誤読してないか確認しました。
  • サンプルケースについて、どんなデータが入ってるかは説明されておらず、データファイルをみて分析する必要があります。
  • データサイズが違うということは、得られる得点も全然違います。得点が正規化されるTopCoderマラソンマッチとは全く違うので、入力データがどんなものか、最大で何点とれるかを調べるのは、非常に有効だと思います。

f:id:shindannin:20191225234832p:plain

結果

Hash Code - Google’s Coding Competitions

199位/6640で、決勝に進むことができませんでした。日本のチーム内では3位でした。
日本のチームでは

  • 16位 Gifted Vookies
  • 17位 AtCoder

が、ダブリンでの世界決勝進出の権利を得られましたが、AtCoderチームは辞退されていて、Gifted Vookiesのみ世界大会に参加したようです。

反省点

  • データサイズが大きすぎるので、良い貪欲法を作るのが最重要なのですが、データを絞ったうえで、軽い焼きなまし・軽いビームサーチっぽいのも、差をつけるために有効なのかなと思いました。
  • チーム戦しかも数時間のコンテストだと、他のメンバーが良さげな方針を引いた場合、ハズレ方針っぽいの実装に集中するのはなかなか難しいことが分かりました。しかし、それでも集中すべきでした。ハズレ方針をつぶせただけでも立派な貢献ですし、今回は自分がやってた方針が、外れではなかったので…。
  • たんざくさんのマラソン形式の実装がとても速いのが分かったので、来年はたんざくさん希望の言語にそろえるのもアリかなと思いました。

個人的な技術的には以下
f:id:shindannin:20191226000337p:plain

AtCoderチームのchokudaiさん
f:id:shindannin:20191226001541p:plain

来年に向けて

他のコンテストとは違い、攻略法がまだ定まっていない(例えば計算資源をどう使うか、そのためにどのようなアルゴリズムを使うかなど)ので、楽しいですし、開拓のしがいがあります。ぜひみなさんも参加しましょう!
f:id:shindannin:20191226000938p:plain

生放送「TopCoderでプログラムしてみた」コメントランキング

Competitive Programming (1) Advent Calendar 2018 - Adventar 12日目の記事です。

はじめに

競プロを最初に始めたのが、TopCoderに初参加した、2008年7月18日だそうです。10周年、めでたい!そして、生放送「TopCoderでプログラムしてみた」も、おそらくほぼ10周年。また、放送は、たくさんのコメントによって、支えられています。本当にありがとうございます。

ランキング

ニコニコ生放送時代の、第284回~第2362回だけの集計ですが、コメントをランキングにしてみました。1位のみかんの人さん、4804コメント、どなた?となってしまいました…。たぶん、コメントビューワーとニコ生コメントのフォーマットの変更で、正確にとれていないです…。(krotonさんとskyaozoraさんのコメントが明らかに少ないし、他の方も抜けてそう…)なんで、その辺はご了承ください。
f:id:shindannin:20181212235310p:plain

ひとことコメント

1位 laycrsさん

TopCoderのレッドコーダーより上のクラス、ターゲット経験者。数々の名アドバイスで、わしの競プロ力を引き上げてくれて、本当に感謝じゃ。
f:id:shindannin:20181213013244p:plain

2位 chokudaiさん

誰もが知っているAtCoder社長で、競技者としてもまだまだ一流、というかマラソンマッチはいまだ世界トップクラス。コメントでも本当にお世話になりました。みょんみょん。
f:id:shindannin:20181213013250p:plain

3位 hasiさん

アルゴリズム・マラソンマッチの両方に強い、強豪コーダー。天下一プログラマーコンテストも主催して、現在も、国内の各種オンサイトコンテストに出場するなど、安定して活躍中。

4位 smjsamaさん

しめじたん。きゅうり氏とならび数々のネタツイートで盛り上げたが、レッドコーダーにいたるまでの苦難の道のりにも人々は泣いた。AtCoderに最近復帰したっぽい?

5位 有為さん

いまだに各種コンテストで世界トップの成績を出す、げきつよレッドコーダー。この精進量を長年続けている情熱には頭が下がります。全ての競プロ勢の精進の見本。

6位 nise_nabeさん

各種競プロbot等でも、貢献されているが、競プロにも復帰しましょう。

7位 びびすけさん

一時期に大量のコメントをくださり上位に。現在はアプリ開発を主にされているようです。

8位 hogeover30さん

競プロ界の毒舌エンターテイナーといえばhogeover30さんで、長年楽しませてもらっています。エンジニアではないのがポイント。だけど、ショートコーディング・マラソンマッチに強いので、そういった部分も注目されるべき!

9位 Mi_Sawaさん

初形式のプロコン、 Distributed Code Jamでいきなり世界4位を取るなど、明らかに天才の、レッドコーダー。

10位 krotonさん

おそらく真のコメント量は3位以内に入っていたはず。10年前から今に至るまで、長年競プロ界にいますが、本人自体にはいまだに謎が多い。krotonさんのことはみなさん良く知っている。YukiCoderへの貢献も大きいです。

11位 skyaozoraさん

ICPC銀メダル・TopCoder World Final経験もあり、すごく人当たりがよく競プロ好きなのが伝わってくる上級レッドコーダー。

12位 phylloさん

個人的には、競プロ勢が読みやすい、競プロ以外のトピックのブログがとてもおすすめ。

13位 Respect2Dさん

Respect2Dが主催された立命館大学のICPC合宿は、競プロがそれほど盛んではなかった地域でも合宿が始まる先駆けとなったので、その競プロ界での貢献は本当に大きいと思います。

14位 ぬさん

(どなたでしょうか!ぜひ教えてください!)

15位 yowaさん

マラソンマッチのスタートダッシュに定評があるけど、途中でニコ生・ゲームにいって、そして最後にまた帰ってくるレッドコーダー。おそらくわしと同年齢だと思われます。

おわりに

こう見てみると、コメントされていた方には、息の長い競プロの方が多いですね。これからも、続けていきましょう!一時休止しても、しれっと復活しましょう!

13日目は
bakamingさん→ICPC ボランティアスタッフの仕事内容の話 - kamingのブログ
n_vipさん→「ICPCで使ったエディタについてちょっと書く」
です。お楽しみに!

HACK TO THE FUTURE 2019予選の反省

beta.atcoder.jp
7位/519でした。
今回は、意地でも定番解答にはならない問題をchokudaiさんが作ってくるかなと思ったら、わりと定番だった。見えることを1つ1つ改善していけば、点が増えていきやすいタイプ。
…と思いきや、後半に、いろいろ考察をちゃんとしてれば、加点できる要素があったので、上位から下位まで、実力が出やすい問題だった気もする。
tsukammoさん、chokudaiさん、ありがとうございました!

良かったこと

  • 天才解法を考える誘惑に負けず、簡単なところから行ったのが良かった
  • 決勝に出れないのは分かっていたけど、ちゃんと最後までがんばった。もう衰える一方の年齢なので、老化防止のために、がんばるべきときにがんばるのは重要。

反省すべきこと

  • 残り2時間で伸びなかったのだけど、条件が変わった後の再考察が足りなかった気がする。
    • 焼きなまし法のマスの状態遷移の調整(開始5時間経過あたり)で、"#TD"はいらないということに気づく。ここで、TD#がなくなったことで問題の条件が大きくかわったので、高速化できる要素等がないか改めて考えるべき。今回の場合、TD#がなくなったことにより、命令Sはマスが.LRどれでも直進1歩になったので、マス変更の影響がなくなる。
  • 2Dフィールドで、何かを動かすというのは、マラソンマッチでは定番。それなのに、経路を圧縮するのを思いつかないのは、ダメ。
  • せめて焼きなましの温度調整は、自動化したほうが良かった気がする。30ケースで軽いからと、自動化しなかった。
  • 一部ソースコードが大変に汚い(ムダなif文など)。コード汚いと、基本遅いし、また、いろいろ試すのをためらう原因になるので、ちゃんと書きましょう。

解法

マスを'..LR'の割合で遷移させる焼きなまし法。10万ループぐらい。5度→0度で線形変化。評価関数はスコアのまま。

やったこと

  • 変更マスを通ったロボットだけ、経路を更新する。
  • ロボット経路を保存して、ロボットの途中位置から計算
  • マスは1次元配列で持つ
  • 遷移状態の調整。TD#を使わない。
  • 焼きなまし、変化スコアが悪くなったら計算途中早期打ち切り。
    • わりと重要テクニックで。これで焼きなまし回数が2万→10万ぐらいまで増え、13万到達。

やったけどボツ

  • 中央付近にLR少なめ
  • 中央付近はあまり変えない
  • ロボット0の箇所の評価点を、最初は高めに
  • 初期盤面を、高スコアのときの割合の'L''R'に合わせて配置

やらずにボツ

  • ロボットが4個・5個重なるケースにわずかに加点。そもそも、初期状態でも、ほぼ4,5がなかった。でも、やって損はなかったのでは。
  • 'S'の数の偶奇でロボットを分ける(壁にぶつかると無意味)

気づかなかったこと

  • 移動コマンドの圧縮。
  • 変更マスを通り、回転するロボットだけの経路を更新する。(上記の説明)
  • 初期L盤面。


  • kimiyukiさんの解答によると、「中央にDで縦棒を引いて土管のようなものを作るとLが実質小さくなるので速い」。kimiyukiさん、面白い形状をつくった改善が得意な印象があります。

最重要

復習しないとムダ。復習しないとムダ。復習しないとムダ。