プログラミングを始めてからほぼ1年が経ったので振り返る話
要旨
タイトルの通りです(検閲・校閲・推敲とかはあまりしていません)。2019/2/16をもって丁度1年なので書いてみました。
はじまり
2018年2月初旬に突然「プログラミング面白そうだな・・・(将来Googleとかで働けたら面白そうだなあ*1」とか思い始めました。
なのでとりあえずその翌日の放課後にコンピューター部の部室にアポ無し突撃をしてみると、Bwambocosがいたので入ってみたいとか話をしました。なんかいいっぽいのでとりあえず入りました。当時は競技プログラミングなんて知りませんでしたし、「なんかゲームとか作りたいなあ。作るんだろうなあ」とか思っていました。そもそも文化祭でゲームを出している部活なので最初からゲーム作るんだろうとか思っていました。
競プロ
まあしかし予想に反して競技プログラミングなるものを勧められ、とりあえず存在を知って家に帰ってググりました。確か最初にAtCoderのサイトを紹介された気がします。試しに例題を見てみました。難しそうです。当然予備知識は無いので「入力...?出力...?はて」状態でした。
なので次の日から部室でC言語を学び始めました。部室にはネットが通っていないので*2、オフライン版の教材で学んでいました。ゲーム作るにせよ競プロするにせよ最低でも言語1個は覚えないといけないですからね。
そして、Bwamに助けられながら、やっとこさAtCoderで初AC。
同級生の初 AC 情報ですhttps://t.co/upMks8nYb4
— Bwambocos (@babcs2035) February 16, 2018
これが2018/2/16。一応この日をプログラミング始めた日に設定してます(いつ初めて部室に行ったかを覚えてないので)。
その後
2/16に始めたとか言ってますが、実はここから2ヵ月弱ほとんど精進をしていません。
理由としては、
・とりあえずC言語を覚えないといけない
・他の活動が忙しい
が挙げられます。
解いてもABCのA問題レベルで、ほぼ無精進でした。なので本当に2/16で1年なのかとは思っています。
はじめてのあっとこーだー
コンテストに出てみました。ABCです。結果はいわゆる爆死ですね。今になってもっと勉強してから望むべきだったとアカウント作り直したいレベルで後悔してます(初ACの3日後でした(言い訳))。
同級生の新しい中3競プロer、昨日の ABC で CE しか出してない模様で
— Bwambocos (@babcs2035) March 12, 2018
C++への乗換とSiv3D
確か3月か4月あたりにC++なる言語の存在を知りました。きっかけはAtCoderトップページのAtCoder Programming Guide for begginers(APG4b)です。chokudaiさんが直々に編集しているので分かりやすそうということで勉強の参考にするために見たのがきっかけです。こうしてC++を知りました。
そこで、「なんかC言語よりコード量短くないか?(例:printf→cout、scanf→cin)書くの楽になりそう」となって、C言語の学習が大体終わったところでAPG4bでC++を学び始めました。まあ結果的に今になって思うとこの選択はまあよかったのかなあ。と思います。
提出記録を見たら5月くらいにはC++メインで300点くらいの問題を解いていました。
話は変わって時は6月、幣校の文化祭が9月にあり、その準備が始まっていた時、Bwam(何度も名前出してごめん)に「ゲーム出せ(意訳)」と言われ、Siv3Dを学び始めました。
前述の通り、部室にはネットが無いので苦労しました。分からない関数名をリファレンスで見まくりました。難しいですね。Siv3D。ただ、Siv3Dは作者さんがツイッターで質問に回答してくれるのでその点とても助かりました。
Siv3DはC++なのでまあCの種族をコンプしにかかってるように見えますね。なんでC++とSiv3Dをまとめたかっていうと、こういう理由です。
ニシキヘビ(Python)
段々「CとC++だけじゃなんかなあ(バリエーションに乏しい)・・・」とか思いはじめます(どっちも満足にできない人の言う言葉じゃないですが)。
元々自分で調べてPythonという言語は存在を知っていたので勉強し始めます。
PythonだとC++と違ってセミコロンが文の終わりに無かったりインデントが崩壊だとさようならだったりしますが、別に根幹の部分はC++と何ら変わらないので割とすぐに両者の違いには慣れました。
Pythonを学んだことにより色々開発の幅が広がりました。下の記事とかその代表例な気がします。あとは簡単な画像識別用機械学習プログラムを書いたりもしました。今はKuskeプロと一緒に五目並べの自動対戦ゲーム(COM側がAI)を作成中です。ここまでの延長で今まで来ました。
大会
この1年で大きな大会ではPCK、JOIに出ました。どちらも予選落ちです。つらい。PCKはKuskeプロと出て4か5完だった気がします。JOIは310点でした。圧倒的精進不足が招いてしまった結果だと思うので反省したいです(Kuskeプロには私が弱いばっかりに申し訳ない感があります)。
総括
もともと自分は絵が壊滅的に下手ですし、絵をふんだんに使うようなゲーム開発とかをするよりも最初に競技プログラミングから始められたのは幸運かなとか思っています(弱いですが)。しかし、そもそも1年かけてAtCoder茶色中盤なのは弱いことの証左だなあとか思っていて、まだまだだなって感じです。
ただ、JOIやPCK、AtCoder等のコンテストで良い経験を沢山積めていると感じているので(来年は少なくともJOIは本選には行きたいですね)、今後とも精進をしていきたいです。
ですが、プログラミングを始めて、Twitter等でも沢山の凄い方たち(語彙力をつけたい)に出会え、自らの知見がものすごく広がりました。職業とかをこっち方面に進みたいとか考えているので、1年と少し前の自分が予期していた人生にはならなそうです。これからプログラミングを続けてどうなるかは予想もつきませんが、頑張っていきたいです(まとめるのが絶望的に下手)。付き合いのある皆様、今後ともよろしくお願いします!