seri::diary

日常

Overwatchで味方同士のケンカが多い理由について

Overwatch(OW)というゲームは6人対6人で戦うチームFPSであるが,個人のレートはチームの勝敗によってのみ決定される.そのためメンバー一人の責任は重い.6人でチームの勝利を担うため,サッカーや野球といった人数が多めのチームスポーツと比べると一人がミスした時の影響がかなり大きいのは何となく想像がつくのではないだろうか.

実際その通りで,例えば長らく拮抗していた試合において,どちらかのチームが相手を一人killしたタイミングで流れが変わってwaveの勝敗が決するのは珍しくない.一人killされて5対6になると相手6人の攻撃を一人あたり1.2人ずつ負担しなければ耐えられないため必然的に負荷が上がる.前にも書いた通り,OWは他のFPSと比べて死ぬまでの時間が長く,結果的に戦闘時間が長い.そのため人数不利による影響は時間が経てば経つほどきつくなってくる.これが誰もがHS一発でkillできるのであれば,一人ぐらいの人数差はAimスキル次第でひっくり返すことができる.しかしOWの場合,Ultが溜まってない限りは人数差をひっくり返すのは容易ではないので,人数不利になっている時間に比例してチームの状況はより深刻になっていく.

そんなゲーム設計になっているせいか,OWでは不利になるとケンカが起こりやすい.ケンカというか,ただの罵り合いである.「idiot fk healers」「useless dps」「no shield tanks」「noob teammates」みたいな,頭の悪そうな罵詈雑言が飛び交うのがOWの日常である*1.もちろんこんなもんを見てると気が滅入るので,自分はチャットを非表示にしている.

チャットログは試合後からでも参照できるため,暇つぶしに試合の合間にたまに見ているのだが,大抵は負けている試合でケンカが始まる.勝っている試合でもケンカしているのを見たことはあるが,状況が悪くなってきたタイミングで戦犯探しを始めるかのように罵詈雑言が飛び交い始めてケンカに至るケースが圧倒的に多い.つまり,「この試合はひどい有様だが,俺には全く責任がなくお前ら(もしくは特定のだれか)が悪い」と決めつけて誰かを攻撃し始め,攻撃された誰かがまた攻撃し返す,といった応酬によりケンカになっていくのだと考えられる.人間社会の縮図のようである.

ところで,なぜOWではプレイ中に味方とケンカしがちなのか?
以前の自分は,ランクマッチをプレイしている以上は味方の動きを修正してチームを勝たせたいから攻撃的な言葉を使っているのだ,と考えていた.
しかし最近,ランクマッチでシルバー帯のケンカを観察していると,「単に他人を攻撃して負けている自分を正当化,もしくは納得させたい」だけが理由なのではないかと思うようになった.そう考える理由は,彼らは相手に対して具体的な行動を求めずに,ただ「noob」や「useless」といった攻撃的な形容詞を相手にぶつけ続ける為である.その言葉の裏には「勝ちたい」という気持ちはあまり感じられない.
本当に勝ちたいのなら「マクリーはさっきから特攻して死にまくってるがもう少し引いて撃つべきだ」「ラインハルトにもヒールをくれないと前に出られないのでヒールしてくれ」「ゲンジ,相手のバスティオンを狙ってくれ」「ゼニルシオ*2だと回復が足りないからモイラに変えてくれないか」といった,建設的な意見を言うのが効果的であると考えられる.実際そのような意見を言っているのを見ることはある*3

個人的には,自分を棚に上げて見ず知らずの第三者を罵倒し続ける人間がいるという事実すら信じられなかったが,どうもインターネット上ならば何を言ってもいいと思っているタイプの人がFPSの世界にも存在しているらしい.自分が過去にやってきたネトゲでは,ここまで露骨に悪意丸出しでケンカしているのを見たことがなかったので知らなかったのだが,そういう人たちは確実に実在する.
そして彼らは勝ちたくはないのだろう.ケンカが始まると集中力を欠いてボロ負けに負ける.もともとボロ負けしていたのだから結果は変わらないかもしれないのだが,わずかな逆転の可能性すらケンカを始めることによって葬り去ってしまう.これは大変もったいないと思うのだが,あまりに流暢に罵倒する言葉が出てくるあたり,普段からチャットで誰かを罵しるスキルを磨いているのだろう.最低のスキルである.

ところで,自分は全くこのような行為をする気になれない.いやほとんどの人がそうなのだろうが,本当にこういう行為は無駄だとしか思わない.
自分は今タンクでレートが1900前後まで来ている.目標はマスターだからレートがあと1500強必要である.そのためとにかくレートを上げたい.だから味方とケンカしている場合ではない.極端に実力差のある味方や相性の悪い味方を引くことはマッチングの仕組み上避けられない.だからそうなったらもうそういものだと思って諦めて次の試合に意識を向ける.たぶん,マスターやグラマスにいるプレイヤーも同じようなメンタリティをしているのではないだろうか.あの辺のレート帯のプレイヤーの配信を観ていると滅多にチャットでケンカしているのを見ない.たまにモメているが,noobだのuselessだの醜く騒ぎ立てているのは観たことがない*4.だからあれは弱い人プレイヤーのすることだ,とも考えている.

話を戻す.つまり,ランクマでチームメイトに醜い罵声を浴びせてケンカをふっかける人は,勝ち続けてレートを上げたいとは全く思っておらず,今いるレート帯でほどほどに勝ったり負けたりして同じぐらいのレート帯に収まっていればそれで満足なのだろうと考えている.
「彼らにとっての気持ちの良いプレイ」をすることが彼らにとっての最重要課題であり,それを妨げるやつが現れたら,チームが勝ってようが負けてようが,徹底的に攻撃して自分が気持ちよくなろうと試みる.そう考えてみればある程度は理屈が通る話である.というか,もうそう考えるようにしている.ケンカして味方の士気を下げまくっていたらレートが上がる訳がない.寧ろ逆だ.
チームを鼓舞して勝たなければレートは絶対に上がらない.自分のプレイで味方を鼓舞してチームを勝たせ,勝率を上げてレートを上げて,有名ストリーマーやOWリーガーみたいな強い人達と試合がしたい.自分は今そう望んでプレイしている.

併せて読みたい

dpqp.jp

*1:ところで文法がめちゃくちゃな英語でケンカしている時もあるのだが,あれはおそらく英語が第二言語の日本人,台湾人,韓国人などのプレイヤーが片言の英語で会話しているからだろう.シンガポール鯖で流暢に英語を使っているのはマレーシア人,香港人,フィリピン人,シンガポール人等だと思われる.

*2:これで勝てるのOWリーガーだけだと思うのだが,ブロンズシルバー魔境では当たり前のように採用される.

*3:しかしこの手の意見具申も大抵は無視されている.また,反発した相手とケンカになることもある.味方同士でコミュニケーション取らない方がいいんじゃないかとすら思っているので,自分はこの手の意見具申は一切しない.自分ができることを全力でやるに尽きる.

*4:せいぜい試合後に「dps gap」と「感想」を述べるぐらいだ

今更Overwatchを真面目にやっている

2020年に入ってから,2016年発売のOverwatchの「ライバルプレイ」*1でレートを上げることを目標としてプレイしている.その詳細について記載したい.

今更ながらOverwatchをやっている

Overwatchはもともと2016年の発売と同時に購入したのだが,プレイヤーの治安の悪化*2でやる気がなくなって2年間半ぐらい放置していた.

それが2019年9月ぐらいに久々にやってみたら,ロールキューの導入と度重なるアップデートにより完全に別ゲーとなっており,面白くなっていたので再開した. 最初はネカフェに通って週1でプレイしていたのだが,2020年に入ってからPCを組み直していつでもプレイできる最強の環境を手に入れて本格的に取り組んでいる.またアカウントもブロンズ魔境を脱するためにサブアカウントを作ってそっちでプレイしている.*3*4

ランクマでプレイしているロールはタンクがメインで,たまにサポート.ダメージはクイックでたまにやる程度. 2020年9月6日時点のシーズン23における最新レートはタンクが1,473,サポートが1,655.ダメージはやっていない.Overwatchやらない人向けに説明すると,これはド底辺のレート帯である.スプラトゥーンで言えばC帯ぐらいである.

最近ではランクマのプレイ動画も上げるようになった.自分しか観てないけど.

www.youtube.com

なぜOverwatch

Overwatchはもっとも苦手なFPSだから.これに尽きる.

FPS自体は17〜18年前の高校生の頃からやっているからプレイ歴は結構長い*5.途中全くプレイしていない時期もあったけど,大学学部生だった22歳ぐらいまではCouter-Strike1.6やCall Of Duty4を狂ったようにプレイしていた.その頃の自分のスキルで言えば,日本国内でみれば少なくとも平均より上という印象があった.それらのゲームはレーティングが存在しなかったので明確な順位は分からないけど,決してFPSは苦手なジャンルのゲームだとは思っていなかった.

それが,Overwatchだけは全く勝てない.勝てないというか,レートが上がらない.

Overwatchのランクマッチのシステムは他のチーム戦FPSと同様にチームが勝った場合のみレートが上がる.つまり,自分がどれだけkillを取ろうがポイントを取ろうが,チームが負ければ容赦なくレートは低下する.しかもレートは下がる方が多い.つまりある程度勝ち越さなければ絶対にレートは上がらない.勝率50%だとレートは確実に下る.そういう無慈悲なシステムだ.*6

そういうシステムだったため,もともと個人でkillを取ることに命をかけていた自分は全くと言っていいほど活躍できていなかった.Overwatchは他のFPSと比べて基本的にHPが多く,HPが高く硬い「タンク」と味方HPを回復できる「サポート」のロールが存在するため,全体的にkill timeが長い.また死んでもリスポーンできる*7.だから,killを取るのが他のFPSにくらべて難しいし,killを取るだけで局面が有利になる訳ではない.

Overwatchにおいて,局面を有利にするには「いつ」「どこで」「誰の」killを取るかが重要である.例えば「HPが少なく回復できるサポートをkillして相手の回復力を削いで相手を死にやすくする」,とか「相手タンクを倒して防御力を減らして一気に殲滅を狙う」,といった戦略が必要になる.だから,CSやCOD4のように1 killを取ればそれだけでチームが有利になる訳ではない.

この新常識に慣れるまでに相当時間がかかった.同様のレーティングシステムを採用しているスプラトゥーンではS+,スプラトゥーン2ではS+4まで到達したことがある自分でも,容易にレートが上がらないのはここに理由があるように思った.だからこそ面白いと感じる.

目標

Overwatchのランクマッチには上から順に以下のランクが存在する.

今自分がいるのが下から2番目のシルバーである.目標として最終的にマスターに到達したいと考えている.

グランドマスターYoutubeで同ランクのプレイヤーを観ていると毎日プレイしているStreamerやプロがメイン層であり,ただの社畜である自分には維持するのが難しそうだからである.マスターなら社畜の自分でもギリギリ到達できるのではないか,と考えた次第である.

実は2020年の目標としてマスター到達を掲げたのだが全く歯が立っていない.2020年に入ってから資格試験の勉強をしていたとか英語の勉強をしていたとかで時間がなかったのは確かにそうなのだが,それを差し引いても無謀すぎる目標だった.今年はタンク・サポートでゴールド到達を目標としたい.

どうやってプレイを改善しているのか

2020年7月からランクマの試合は全部録画してあとで見返して反省するようにしている.これをやるようになってから勝率も多少安定するようになった気がする.最初は自分の声も一緒に録音してボイスログを残しながらやってたけど,自分の声がキモ過ぎてつらくなったので止めた*8

また,8月からランクマの動画をYoutubeに晒し始めた.これは単に動画の外部ストレージとして使っているという側面もあるが,もし運良く他のプレイヤーの目に止まればアドバイスもらえるかもなーという淡い期待もある.*9

www.youtube.com

字幕機能で自分の反省コメントを残したりもしている.が,Youtubeの字幕機能は使い勝手が悪いのでやっぱり自分で編集で入れないとダメかなと思い始めている.

余談だが以下のOverwatch tipsを紹介する動画の日本語字幕は自分が入れたのだが,UIが重すぎて長時間の作業が相当つらかった思い出がある.

www.youtube.com

タンクはどうすればランクマでチームを勝たせられるか

タンクだけが出来る行動で貢献するのが最も重要だと考えている.これはどのロールにも言えることかも知れないが,特にタンクはその特徴を活かさないと勝つのが難しいと感じる.タンクの瞬間火力はダメージには及ばないし,サポートのように味方を回復して生存率を上げることも出来ない.適当にプレイしているとただの図体がでかくてノロい「いい的」である.そのため,タンクとしての特性を活かした能動的な行動が重要であると考えている(というより最近ようやく気づいてきた).

具体的には以下の役割を引き受けるよう心がけている.

1. 相手からのフォーカスを真っ先に引き受ける

タンクはHPが高いので,軽くフォーカスを受けたぐらいでは即死しない.一方でダメージやサポートはHPが150-250程度なのでタンクに比べるといとも簡単に死ぬ.そのためフォーカスを受けるリスクは高い.

そのため,相手からのフォーカスを真っ先にタンクで受けて,その間に味方ダメージに相手を攻撃させるという戦術が考えられる.タンクとしては,相手からのフォーカスで多少死にそうになっても簡単に引かずにポジションを守り続ける,もしくは前線を押し続けるといった行動が必要になる.場合によっては死んでも構わないと考えている.例えばアヌビスAの防衛は遮蔽物が少ないので相手からの被弾が多い.被弾が多いからといってすぐにポイントまで下がると,大抵はもっと状況が厳しくなる.最初の門付近のチョークで,いかに相手からのフォーカスを受けながら踏ん張るかが重要であると考えている.

以前の自分はこれが出来ていなかった.例えば防衛側でのタンクはすぐに死んではいけないと思い込んでいて,シールドがなくなるとすぐに前線から後退してしまっていた.それでは他のロールと同じ行動であり,タンクとしての優位性を活かせていない.味方サポートから回復をもらえれば即死することは少ないはずである.味方サポートの負担になりすぎない範疇で,被弾を引き受けて味方への被弾を減らす行動が,防衛側では特に重要であると考えている.

2. 身体を張って味方の盾になる

シールド持ちのヒーローの場合は当然だが,例えばロードホッグやザリアでも同様の行動は可能である.ロードホッグなら回復飲みながら,ザリアなら自分にシールドを貼りながら味方の前に出るだけで味方の被弾を肩代わりできる.地味だけど相手に強いヒットスキャンがいて味方が前に出られない時なんかは結構有効である.

また,これをやっているタンクはシルバー帯だと少ない.HPが少なくなると真っ先に前線から逃げ出すラインハルト,味方を一切守らないで裏とりだけを狙うシグマなんてのはしょっちゅう見る.そうなると大体そのタンクがいるチームが負けている.逆に,タンクがギリギリまでチョークで踏ん張る,もしくは,結果的にフォーカスを受けて死んでも味方のチャンスを生み出すタンクが相手にいると苦戦することが多い.

3. 高いHPを活かして瀕死の相手をダメージの代わりに追い打ちしてkillを取る

ザリアをやっている時によくやる.味方ダメージが瀕死だが相手ダメージも瀕死,というときに味方ダメージの代わりに単独で追い撃ちをしてkillを取りに行くようにしている.いわゆる「ハイエナ」というやつ.自分の観測範囲ではシルバー帯ではこれをやるタンクは少ない.ザリアでHPが半分以下のゲンジに返り討ちに遭うようなことは滅多にないのだから,積極的に1 on 1でkillを狙いに行くべきだと考えている.waveに勝って相手が撤退中であっても,killを取って相手のリグループを遅らせる効果があるので,wave後の瀕死の相手の追いkillは積極的に狙うようにしている.

余談:最近自分がよく観ているOverwatch動画について

2020年9月現在,日本でOverwatchでStream以外で活動しているプロチームは存在しないようだが,高頻度で動画をアップし続けているめちゃくちゃ上手い日本人Streamerが複数存在するので紹介したい.

www.youtube.com

www.youtube.com

www.youtube.com

www.youtube.com

www.youtube.com

www.youtube.com

特にろろみやさんの解説動画がすごくためになるので,すべてのOverwatch民は観てほしい.自分のレートは間違いなくこの人の動画に支えられている.特に強ポジ解説動画は全人類が観てほしい.シルバー帯で有利ポジションを知っているプレイヤーは(自分含めて)ほとんどいないので,動画で解説されているポジションを取るだけで無双できる時がある.

www.youtube.com

www.youtube.com

その他,英語だがヒーロー別のtips動画を上げ続けている超有名なStreamerがいる.これもかなり参考にさせてもらっている.

www.youtube.com

初心者はこれ観るだけでレート上がるんじゃなかろうか. www.youtube.com

*1:いわゆる「ランクマッチ」

*2:味方煽り,ロール取り合い,戦犯探し,プレイ放棄,チーターが多発

*3:サブアカウントの所有はBlizzardの利用規約上は問題がない.例えばStreamerは複数のアカウントを持っているのが普通だし,プロも配信では試合用のアカウントではなくサブアカウントを使っているのをよく見る.

*4:余談だが最近旧アカウントでも自力でブロンズを脱出できてしまった

*5:初めて本格的にプレイしたのはMedal Of Honor: Allied Assaultであり,そのあと初代Call Of Dutyに移行した.今度出るCoD:BOCWは光の速さで予約した.

*6:そのせいか他人に対する当たりが強いプレイヤーが多く,勝ってても負けててもすぐ意見の相違でケンカになる.自分はチャットを非表示にして一切コミュニケーションを取らないようにしている.

*7:例えばCS,シージでは1ラウンド中に死んだらリスポーンできない

*8:地声で実況しているStreamerのメンタルにいつも関心する.自分がやるとしたらボイスロイドを使うだろう.

*9:アドバイスください><

英語が公用語の会社で働くことと英語学習について

英語が公用語の会社で働くようになって半年が経った.

一般的なイメージとしては「仕事で英語を使っている以上,中の人はきっと英語がペラペラに違いない」と思うかも知れない.入社前の自分もそうだった.しかし入社半年経った今の自分は全くペラペラではない.週3-4でオンライン英会話を受講してちゃんと予習復習をしていても,いざ英語ミーティングとなれば,全力で集中してようやく同僚の英語が一発で聞き取れるという程度.基本的に何か聞かれたら最低1回は聞き返す.そういう感じだ*1.大抵の英語ネイティブの同僚は優しいので聞き返すとちょっとゆっくり喋ってくれる.いつも申し訳ない気持ちになるが仕方がない.

幸いにしてSlackやConfluence上でのテキストコミュニケーションにはあまり困っていない*2.読み書きだけは大学院で論文の読み書き,およびレポートで必要だったので訓練されていた*3.また,非同期コミュニケーションなので辞書を引く時間が取れるため,分からない単語があっても対応できる.

今時点の英語力は業務に十分かというとあまり十分ではないだろう.自分1人だけが日本人で他全員英語ネイティブもしくはネイティブ並,というミーティングだと完全に孤立する.発言したい時はまずその旨を言って発言トークンを取得してから,脳内で英文を組み立ててゆっくり喋る.「well, what to say...」とか「I think you know this」みたいなフレーズで脳内で英語を生成する時間を稼ぎながらギリギリコミュニケーションが取れる*4

一方で,日常生活では英語を一切使わないので,英語の向上速度には限界があることも同時に感じている.例えば,休日を挟むだけで英語が全く聞き取れなくなる.信じられないかも知れないが,月曜/火曜の英語ミーティングは本当にボロボロである.ついさっき(火曜日の朝)USの同僚とミーティングしていたが全くダメだった.

これがもし英語圏の国に居たら,四六時中英語を使う場面があると思われるためこういう事態は起こりにくいと思われる.これは実際にオンライン英会話の先生に言われたことだが,英語を本当に勉強したかったら英語圏の国に住むのが一番だという.普段日常生活でほとんど英語を使わないで英語をネイティブ並に話せるようになるのは実質的に不可能だそうだ.英語に触れる機会を増やすためには英字新聞を読むとかpodcastを聞くとかそういう方法で補うしかない,と言われた.実際そうなんだろうな.

こういった制約がある中で,どこまで英語力の向上を目指すかという目標を明確に定める必要性を感じるようになった.語学の学習には終わりがない.際限なく覚えることがある.だから完璧を目指すと疲弊してしまう.実際今の自分のように.今自分が抱えているストレスの原因は5割がcovid-19だが残りの1割ぐらいは英語である.幅広いジャンルを含むコンピュータサイエンスの勉強と同じことが言えるのかも知れない.なので今は明確な目標設定をしようとしているが,これがTOEIC/TOEFLのような客観的に数値で能力を計測できる試験で良いのか,あるいは60分の英語ミーティングで一回も聞き返さずに質問を聞き取ることみたいな主観的な目標で良いのかはまだ決めかねている.

*1:なお英語ミーティングを始める前に英語を聞いておくと耳のアイドリングが出来て良いので時間がある時は直前まで英語podcastなどを聞いておくと良い.

*2:たまに英語のネットスラングが理解できないことがあるが

*3:英語で実施されレポートも英語で書く必要がある講義があった

*4:この手の「考えてる時に口にすべきフレーズ」はオンライン英会話で覚えた

業務でコードを書く機会または時間が得られない場合の対処法について

これは何か

  • ソフトウェアエンジニア職(マネージャ職は含まない)として雇用されているにも関わらず,様々な理由で業務としてプログラミングができない状況に陥る期間がまれに*1存在する.
  • 本エントリでは筆者が考えた対処法を記す.

コードが書けない状況

  • 機会がない
    • 関わっているプロジェクトが何らかの要因により停滞しておりコードを書く必要のあるタスクが発生しない.リファクタリングやライブラリのバージョンアップ等をして時間を潰していたが大体やり尽くしてしまった
  • 時間がない
    • 実装しようとしている機能設計に関する議論が紛糾しており,他メンバーからの懸念を払拭するために検証作業を大量にやらなければいけない
    • documentを大量に書かねばならず,コードを書いてる暇がない
    • project management業を任されており,社内外の調整業務に忙殺されている
    • 大量のミーティングへの出席を要求されており,ミーティングそのものと付随する作業で1日が終わる
    • 日々障害対応に追われて1日が終わる
  • コードを書かないで検証する時間が長いプロジェクトに参加している
    • 自分の場合1カ月ぐらいECS上で検証して実現可能性を調査しないといけないプロジェクトに参加したことがあり,この期間はコードは環境構築のための簡単なシェルスクリプトぐらいしか書かなかった.
    • その他にも長期の障害調査,サービスのmigration作業,documentation作業にかかわる場合も該当する.

大雑把な対処法

  • 機会がない
    • 他の同僚のヘルプをしに行く
    • 埋もれているチケットを発掘して勝手にやる
    • CI/CDを改善する*2
    • 重そうなSQLを探して修正するもしくは当該のcolumnにindexを貼る*3
    • typoを探して直す*4
    • コメントの誤字脱字を直す
    • 使われていない定数・関数・クラスを発見して削除する*5
    • 使われていないテーブルを発見して削除する*6
    • 古いsyntaxで書かれている箇所を直す*7
    • コードを読みまくって少しでも気になる所のリファクタリングをする*8
    • プロファイリングしまくってボトルネックを探し出し取り除く*9
    • 「いつか使えると思うっす」とか言ってライブラリを生み出す*10
    • 社内で使っているが自分が気に入らないツールを勝手に置き換える or 書き換える*11
    • Dockerで動いてないものをDocker上で動くようにする
  • 時間がない
    • 誰かとタスクをシェアしてコードを書く余裕を作る
    • 急いで目の前のタスクを終わらせてコードを書く時間を捻出する
    • 自分が不要そうなミーティングは参加を断って出席しない*12
    • 残業してコードを書く時間を捻出する
  • 仕事でコードを書くのを諦める
    • 仕事を急いで終わらせてプライベートでコードを書く時間を最大化する*13
  • その他
    • 直属上司に相談する
    • 直属上司がだめなら上位上司に相談する
    • 他のマネージャに仕事をもらえないか相談する

*1:もしくは頻繁に

*2:経験上特にデプロイ周りは改善の余地が多いことが多い

*3:たくさん見つかると無限にやっていられて楽しいしweb applicationのレイテンシ改善効果が高い

*4:英文法の誤りを直してもよい

*5:たくさん消せると気持ちいい

*6:削除して問題が起きると怖いのでリネームして様子を見るだけでもよい

*7:かつてrspec2系で書かれたspecを全部rspec3系のsynctaxに直したことがある

*8:リスクが低いコードから少しずつやる

*9:以外と変なところで重くなっているぞ

*10:前職で暇だった時に2週間かけてJSONを生成する謎のDSLを書いたが誰にも使われなかった

*11:まずは長年メンテされてない社内ツールのような,皆の関心が低いものを狙う

*12:「あいつはそういう奴だ」で許される空気を作ろう

*13:悲しいけどこれが一番楽な気もする

しばらく34,35歳のおっさんである事実を忘れてみる

これはなにか

2020年5月から2022年3月の間は自分が34,35歳のおっさんであることを忘れさせて欲しい件に関するexcuseである.

なぜ忘れる必要があるのか

時々自分の年齢を思い出すと「同年代の友人たちは子育てに忙しい一方で俺は仕事とAtCoderの精進に忙しい.実は相当問題のある生き方をしているのではないか.」と不安になる.その問に対する問答を脳内でシミュレートすると,10 hop程度の問答を経ていつも同じ結論に帰着する.

「褒められた生き方ではないかもしれないが,やりたいことをやって,その結果社会に役に立つoutputをしてお金を稼げるようになりたい」

「今はそれができているか?できていない.だからそうなりたい.」

この結論に1 hopで到達できない理由は自分の年齢である.
自分は2020年4月で34歳になった.2009年4月で会社員になり,その後11年が経過している.その途中2年間は大学院にいたので会社員経験は9年間である.普通,9年もほぼ同じ職種を経験していればもうベテランである.新しくなにかを勉強する機会は少なくなり,それまでの業務経験と全く関係がない仕事をしようとは思わない年齢であると考えている.

例えば,自分で言えばずっとweb application backendをメインで開発してきたので,backend teamのpeople managementをするもよし,web applicationアーキテクトを極めるもよし,frontendやインフラに手を伸ばすもよし,はたまた開発経験と採用活動経験を生かして人事に転向してSWE採用に取り組むもよし. そうやってT字型にスキルを伸ばすのがコスパの良いキャリアアップの仕方だと思う.自分の周囲でもそのようにキャリアを伸ばしてきた元SWEを知っている.なぜなら人間それまで学んだものを捨てて新しい領域に踏み出すためには高いコストが必要である.また,ある程度経験を経ているがゆえの周囲からの期待もある程度は存在している(と思っている).そのため,この年齢になると新しい領域へのチャレンジのコストはどんどん高くなる.

こういった事実により,年齢に反した行動に対して罪悪感のようなものを感じる傾向が自分にはある.しかし人生は本当に残り短い.あと30年も現役でいられればいい方だと思っている.ほんとは以前このブログに書いたように,死ぬその日までSWEでいたい.しかし人生何があるか分からない.例えば自分がいくら健康でも,40歳ぐらいで親の介護のために仕事を諦めて実家に帰らなければならない可能性もある.

serihiro.hatenablog.com

だからまだチャンスがあるうちにやりたいことをやりたい.いや,やりたいことができるように精進する時間を取りたい.これが今の本音である.32歳の時に仕事を辞めて2年間も大学院に行ってた癖に全く懲りていない.むしろ,大学院で研究したことでやりたいことがより明確に見えたという方が正しい.

なぜ忘れさせてほしいのか

競プロが面白くなってきたので本気でAtCoder青を目指したい

atcoder.jp

実はAtCoderにsignupしたのは約3年前の2017年1月である.何を通じてAtCoderにsignupしたのかは覚えていないが,何故かその時期に突然コンテストに参加し始めた.初参加したコンテストはABC053なのだから結構昔だ.しかし,何回かコンテストに参加した後にパッタリと止めてしまっていた.理由は「仕事の役に立つとは思えない」からだった.当時はRailsでweb applicationを書く仕事をしていたが,アルゴリズムを自前実装する機会は「全く」なかった.メモリ使用量や速度について考えるのはせいぜい複雑なSQLを書く時ぐらいで,効率の良いアルゴリズムやデータ構造の実装はすべて言語の標準ライブラリやRDBMSに丸投げしていた.そのぐらい無頓着に書いても問題なく動作する程度のwork loadしかないweb applicationしか書いていなかった.それよりも,コードの保守性,テストの書きやすさ,安全なdeploymentのためのworkflowの設計,マイクロサービス間のインターフェース設計,分かりやすいdocumentationといった事の方がより重要な関心事だった.

それが今やほぼ毎日精進*1しており,多い日は1日に過去問を16問ぐらい解いた日もある.なぜか?単純に楽しいと感じるからである.例えば業務でbit DPを実装して問題を解く機会は未だにない.しかし,新しいアルゴリズムを覚えて問題を解けるようになってコンテストでのパフォーマンスを上げること自体が純粋に楽しい.

f:id:serihiro:20200519185045p:plain
これまでのレーティング推移.2019年末まではほとんどやっていなかったのが良く分かる.現在のratingは目標の青色から見ると3段階下である...

f:id:serihiro:20200519190029p:plain
横軸は日付,縦軸は解いた問題数の累積を示す.ここ一ヶ月ぐらいから急速に「精進」を始めたのがよくわかる.

また,競プロのスキルは昨今の転職活動において重要になりつつあると感じる.大学院時代,落ちたインターンは全部コーディングテストがあった.不慣れだった自分はビビって全然できずに落ち続けたのである.また,応募条件に「競プロなどで良い成績を収めた経験」を入れる企業も見かけるようになった.3年前はそんな企業は見たことがなかった.時代は間違いなく変わりつつある.募集しているpositionとアルゴリズムの実装能力に関係があるか否かはともかく,大学入試における大学入学共通テスト(a.k.a. センター試験)のような位置づけになりつつあるのではないかと考えている.

そんな訳で,最近はこっちのブログよりも別の競プロ精進ブログの更新頻度の方が高くなっている.

serihiro-competitive-programming.hatenablog.jp

どこまで目指すか?「赤」と言いたいところだが,他の人のブログなりを参考にすると初心者から1年間で到達できるのはだいたい青が限界のようだ.それも時間のある学生が,である.

なのでまずは2020年12月31日まで青到達を目指したい.なお今は茶色であり,道は長すぎるぐらい長い.でもやる.なにせ年齢を忘れたから.なんなら20歳ぐらいになった気持ちでやればいい.*2

機械学習が面白くなってきたのでE資格取るところまで行きたい

CourseraのMLコースを8週目までやってそこから時間的に厳しくなって*3一旦dropoutしてしまったのだが,機械学習は面白い.何より自分で実装するのが面白い.簡単な計算式の反復法で人間にとって有益な結果が得られるところも面白し,得られた結果からパラメータを試行錯誤する職人芸的なところも面白い.大学院時代に数値計算の講義で前処理付きCG法で一次方程式の解を求めるコードを書いたりしたがそれに近い面白さがある.

あと大学院では分散深層学習のtrainingを行う際の訓練データのread I/Oをいい感じに早くする方法について研究していたが,MLそのものはあまり深く勉強できていなかったので改めて勉強したいと思っていた.

で,やるならちゃんと客観的な結果が残るものをやろうということでディープラーニング検定E資格を取ることにした.

www.jdla.org

この資格は認定された講座を修了しないと受けられない仕組みになっており,自分は今月頭からスキルアップAIが提供する「現場で使えるディープラーニング」というコースをオンラインで受講している.*4

www.skillupai.com

オンラインなので,講義は全部動画配信で,課題提出はslack上で行われ,必要な情報はQiita::Team上で提供され,進捗報告はgoogle spreadsheet上で行われたりと,割と「今どきっぽい」ツールを使って運営されている.あと講師が現役のMLエンジニアなので結構突っ込んだ質問にも回答してもらるし,添削コメントがかなり細かったりとその品質は高いと感じている.今の所内容は既読の「ゼロから作るディープラーニング」の一巻目とかぶっているのだが復習だと思ってやっている.

↓2016年12月に謎にバズった「ゼロから作るディープラーニング」のレビュー

serihiro.hatenablog.com

当面はこれをやりつつ2021年2月のE資格試験に備える.あと一通り終わるのが8月ぐらいの見込みなのだが,終わったらkaggleもやっていきたい.あとCourseraのMLコースもせっかくなのでお金払って最初から全部やり直して認定証もらおうかなと考えている.Linked Inとかにロゴを掲載できるらしいし.

年齢を忘れる期間が2年間である理由

2年間は,自分が32歳〜33歳の間に大学院の修士課程に在籍した期間と同じであり,その経験から「30代前半において同じことに全力で取り組むことができる最長の期間は約2年間である」と予測した.よって2年間は集中して競プロと機械学習に打ち込める可能性が高い.逆にそれ以上だとマンネリ化するか燃え尽きてしまう気がしている.でもどちらも一旦止めるとすぐ忘れるのでずっと続けていきたい.

おわりに

人生の残り時間を数えるたびに不安に駆られる.でもまだギリギリ体も頭も十分に動くし,競プロをやっていて分かったのは,まだまだ自分は成長できるという事実である.本当になにか大きな変化を起こせるとしたら30代が最後だろうと思う.高校数学勉強しなおして数学検定2級取ったのも30超えてからである.*5

死ぬ直前に「30代の儂が競プロと機械学習をやっていれば...」と後悔しないようにやっていくぞい.

*1:競プロ用語.コンテストの過去問を説いたり新しいアルゴリズムについて勉強するなどの競プロのための鍛錬をすることを「精進」と呼ぶらしい.

*2:20歳の頃の自分は学部生で,バイトとサークルとCounter-Strike 1.6に明け暮れており,AM 3時に寝てAM 8時に起きて1限の講義に出る生活をしていた.体力ありすぎて笑う.

*3:競プロの精進に

*4:なおお値段は税込みで約30万円である.4ヶ月のプログラミングコースと考えれば相場より少し高いぐらいかなという気がしている.

*5:そのくせこないだのABC168のC問題は解けなかったので再び高校数学を勉強し直すべき時期時期かも知れない.

近況(2020/04/05)

  • これは何か
  • 一言でいうと?
  • なぜ最近ブログを更新できていないのか
    • 1. inputが多すぎてoutputできていない
    • 2. 仕事で疲れすぎてなにも出来ない

これは何か

最近本ブログを更新できていない件に関する反省文である.

続きを読む

じぶん Release Notes (ver 0.33.9)

2020年1月は修論と引っ越しでバタバタしているうちに過ぎ去った.引っ越しは本当に体力使うのでしばらくやりたくない.大分モノは減らしたはずなのだが,それでも段ボール大小それぞれ7個を使うほどには荷物があった.

個人開発

  • なし.そろそろなんかやりたい.

研究

  • 修論発表を終えたのであとは電子版を提出するのみ.

読書

読んでる

読んだ

その他

  • 2年ぶりにちゃんとした健康診断受けたらAST,ALTの異常で精密検査を受けるよう言われた.
    • 都内で精密検査を受けたが肝臓は異常なし.中性脂肪とLDLコレステロールが高めなので運動療法で様子を見るように言われた.
    • 肝臓はエコー検査でhyperechoic areaが見つかり,おそらく良性の血管腫だろうとのことだが,念のため後日別の病院で造影CTを受けることになった
      • 造影CT検査の費用は12,000-15,000円とかなり高いのだが,一応
  • 東京に引っ越した
    • フレッツ回線がようやくまともな速度出るようになった.
      • 盛岡に住んでいた時もそうだったが,地方だとあからさまにネット環境が悪くなる.厳しい.
    • 6畳1Kなので以前よりもかなり狭いのだが,収納が充実しているので何気に広く部屋を使えている.収納の重要性を改めて感じた.
  • あと2月3日(月)から働く