いむらや競プロ雑記

キーワード:競プロ、育児、石川県

競プロ歴1年でやっとやっと緑になったけど、最初の関門は競技育児だった話

この記事は Competitive Programming (1) Advent Calendar 2020 10日目の記事です。 adventar.org

 

この記事について

技術的なことではなく、自分にとって参入障壁?になっていた、育児と競プロの兼ね合いについて書いてみます。

  • 育児が今障壁になってる方への参考に
  • これからの方へは心構えに
  • まだ遠い方へはファンタジー的な読み物に

なれば、と思います。  

緑になった

なんだかんだで一年かかりました。 f:id:imuraya:20201208220044p:plain  

精進量が少ないので、まだまだ頑張ります。 f:id:imuraya:20201208220455p:plain

自分について

仕事はソフト開発者でC++多め(それ以上にパワポ多め...)ですが、競プロはほぼPythonです。なんか違う言語覚えてえなと思ったため。

小さい子供が2人います。育児参加は割と積極的なつもりです。家事はするけど、料理(刃物)だけはてんでダメです。

活動時間は、コンテストとその後の反省時間以外では、週3-5時間くらいしか取れないことが多いです。何とかして増やしていきたいところですが、最低限減らさないように、マイペースにやっていきます。

 

時期とやってたことを振り返る

f:id:imuraya:20201208221512p:plain

  1. 競技育児
    コンテスト自体は、勝手が分からない上に、遅れて参加し2完とか。終わり掛けに駆け込み1完とか。面白そうなのに面白くなりきれず、何か複雑な日々...

  2. Pythonのお勉強
    コンテスト中、そもそもPythonの文法なんかをググって勉強している比率が高かった(もったいない)

  3. 灰Diffメインで少し精進し始める
    明らかに簡単な問題は早く解けるようになったが、上限難易度が全然上がらない(当たり前)

  4. 茶Diff~を精進し始める

ざっくりこんな感じで、なかなか鈍足ではあるものの、定番の「精進量がカギ」というのは感じているこの頃です。単純に知識量というわけでもないけど、経験や感覚が溜まってくことも含め、積み上げですね。

で、子持ちにとっては(焦るばかりで楽しくならない)上記1の期間を、いかに脱するか。この競技育児攻略が、競プロを楽しみ始めるための、最重要課題であろう、と思います。

以下ではその辺を語ります。

 

競技育児

背景

~3歳くらいの子供がいると、昼寝から起きる夕方以降、以下のようなタスクが発生します。

  1. 遊ぶ
  2. おやつを食べさせる
  3. 風呂に入れる
  4. 着替え・肌ケアなど
  5. メシを用意する(その間の遊び相手になる)
  6. メシを食わせる
  7. 歯磨きなどのケア
  8. 多少遊び相手になる
  9. おもちゃなどの片づけ
  10. 寝かしつける
  11. (随時)💩💩💩

これを21時の数分前に片づけたうえで、自分の状態もそこそこに(メシ食ってあり、フラフラではない状態)しないといけません。

 

経験上、17時時点なんかではヨシッ!(未証明)と思うわけですが、大概漫然とこれを進めていくと、21時にやっと6あたりにいて、TLEします。

 

課題

21時に安定して、パソコンの前でスタンバイしたい。ただし・・・

  • 子供の世話を家族に押し付ける → 最終手段だなあ
  • 寝かし付けながら何とか参戦 → 良いことなかったなあ
  • 育児スタイルを見直す → やるだけ?

寝かし付けながら参戦(ベビーベッドの横でパソコン開く・スマホでとりあえず問題見て考えながら寝かし付ける…)してみたこともありましたが、部屋は基本真っ暗にするため、子供はよけい寝なくなるわ、 自分の目は疲れるわ、全然ダメでした。

一度、試しに膝の上に子を寝かせ(ようとし)つつ参戦してみたら、タイピングの振動からか寝たことがありました。が、二度は再現しなかったので、これもイマイチです。

問題と対処

安定というのもキモです。そこで以下のような手を打ちます。
結構、裏返しで倒せることは少なく、大元を辿ります...

  • 体力が有り余って寝ようとしない事象を防ぐ
    • そのために、夕方積極的に激しめ(公園行くとか)に遊ばせる
    • そのために、昼寝から覚める時間を前倒すため、昼寝に早く入る
    • そのために、午前中に体力を一旦使い切るため、朝から積極的に遊ばせる
    • そのために、自分もちゃんと子供と一緒に起きる(当たり前)
  • 寝かし付けで自分も寝落ちするのを防ぐ(寝たふりが結構危ない)
    • そのために、自分の寝不足を防ぐ
    • そのために、自分はあまり夜更かししないようにする
    • そのために、家事が深夜帯に入らないようにする
    • そのために、残業をなるべく減らしていく…(在宅勤務超推進派になる)
  • 漫然と時間が押す事態を防ぐ
    • 何時までにどれが終わってないとヤバイ、というラインを引く
    • ウィークリーなタスクは前日に終わらせる(便所掃除とか)
    • そもそもそれぞれの作業を高速化・安定な処理量にする
      • 掃除
        • ロボット掃除機を導入する。大体子供対策で床の片づけは、過去最高に進んでいるはずなので相性良
        • 大物は便所と階段くらいしかなくなる。事前計算により、部屋数Nに依存せず、実質O(1)になる
      • 調理
        • ホットクックを導入し、冷凍室もデカくする。または冷食の買い置きを減らす。
        • 作り置き離乳食を増やす。事前計算により、食材数Nに依存せず、実質O(1)になる
        • ついでに、料理がダメな自分でも、解凍盛り付けに参戦できるようになる(これは料理苦手マンの自己効力感高まります)
      • メシ
        • レジャーシートを敷く、長袖エプロンを導入する、食器は食洗器対応で揃える、など
        • 汚された量Nに依存せず、片付けの所作を解放処理だけにすることで、O(1)になる
      • 遊び
        • ものを減らし、遊び用に最適化したエリア(部屋)を作る。
        • おもちゃ展開・片付けを、おもちゃ数Nに依存して入り乱れるO(N2)から、O(N)に軽減する
      • ケア類
        • (おしりふき、ワセリン、おむつゴミ箱など)各所に配備し、寝室・居間・トイレなど、都度行き来する手間を回避。
        • ケア前後の処理が不要になり、拠点数Nに依存せず、O(1)になる

リスクヘッジ

どれだけ手を尽くしても、子供相手にイレギュラーはおきます。 ふいに起きてくることもあれば、ぐずったもう一人に起こされて、無限ループすることもあります。 実は一番大事なのがコレ。

  • 1人は絶対寝かすから、もう1人は寝かし付け頼む、と分担を調整しておく
  • ベビーモニターを導入。微妙に寝たか怪しい場合、モニターをつけて、祈りながら参戦できるようにしておく
  • 競プロの有用性を説いておき、緊急時は家族に押し付けさせてもらえる理解を得る。例:
    • ぷろぐらむの大会があるんだ(愚直解)
    • 資格の勉強なんだ(PAST法)
    • 転職する時に役立つんだ(Jobs法)
      • 本音はゲーム枠だとしても、そう言われると受け入れにくいものです

効果

この辺を一通り対処すると、ほぼ家族に土下座パターンに入らずに、21時の数分前にスタンバイが安定するようになりました。ACです。

まとめ?

結局のところ、銀の弾丸などなくて、地道に問題を分解して、対処するしかないわけです。もとから、この事態には対面してはいたはずですが、漫然とやっていたような気もする。なんせ必須な目標は、ないですからね。

競プロをやり始めた(ようとする)ことが、育児にも「21時までに寝かし付けACすること」という競技性を与え、見る見る効率化が進み、結果として(自分だけでなく家族の)心の余裕にもつながったことは、大きな発見でした。たぶん、お子様から見た満足度も上がってんじゃないかと思います。

育児と競合するから競プロできない!という声をしばしば聴きます。だからこそ、競プロに参加するために、育児を競技化し、戦ってみてはいかがでしょうか?案外、それは利益相反でもないかもしれません!