僕の観察日記

僕が感じたことを書いていき、自分のことを観察、記録するブログ

C++はいいぞ

専門学校に入学してからプログラムを始めた。

 

Cからプログラムに入門して、ゲームプログラマとして歩み始めた訳だが、触り始めは当然「ポインタ?関数?何それ?」だった。しかしその1年後にはそれなりにゲームを作れるくらいには成長していた。

 

そして2年生になり、C++に触れる。当然始めはオブジェクト指向の考え方が分からず、何をクラス化すればいいのか見当もつかなかった。それが1年後にはDirectX9APIと組み合わせて3Dのゲーム作品を1人で作れるくらいに成長していた。

 

そして今、プログラミングをし始めて2年半と2ヵ月、C++を触り始めて1年半と3ヵ月になる。入学前の自分からは考えられないほどプログラミングに詳しくなった。もちろんプログラミングは奥が深く、特にC++は黒魔術などと言われたりもするくらいの代物だ。まだまだ初級者であるのは重々承知しているが、それでも同じタイミングでプログラミングを始めた周囲の人間の大半よりかはC++に関する知識、プログラミングの考え方は備えているつもりだ。ここが自分の武器になっているはずだから自信を持って言いたい。

しかも最近感じるのが、成長速度が上がっている点だ。2年の就活や3年になってからの一人暮らしのためのバイト2つかけもち、制作、学校や内定先の課題など、忙しい中でどうやりくりするかを考えて実行してきた結果としてタスク処理能力が以前より上がったのは間違いない。そうすることでプログラミングについて何か疑問に思った時も、調べて試して身に着けるスピードが上がっていると感じる。3年の始めよりも今の方が圧倒的にいいプログラムを組める自身がある。どういうふうにプログラムを組むべきか、オブジェクト指向コンポーネント指向、template meta programming(TMP)、いろいろなパラダイムに触れて実践を試みている。

またC++、というよりかはVisualStudioを主に使用しているため、VC++に関しての知識も調べて試している。就活では授業で習っていないことを学んでいるのをアピールに使ったりしていたが、今ではそれが当たり前になっている。疑問に思ったらすぐに調べるくせが付いた。pcでもスマホでも気になれば即座に調べ、そこから気になるリンクがあればそれも踏んで先へ先へ。おかげでpcのchromeはonetabのスタックが大量にあり、スマホchromeのtabが50くらいはある。スマホでもonetabを使いたい。

 

最近は趣味でプログラムを組むようになってきた。こんなクラスはどうだろうと試してみたり、上手くいかなければ同じように考える人もいるだろうとコードの一部をコピペしてそのまま検索をかけたり、実際でてきてこんな考え方もあるのかと参考にしたり、先生や同じくプログラムが好きな友人とプログラムの処理内容や組み方について話すのも好きだ。

少し前に、自作クラスは使用せずC++stlさえincludeすれば使用可能な完全疎結合なクラスができた時は本当に気持ちが良かった。インターフェイスもこれは綺麗だというものができ、実際使ってみて非常に便利だと感じた。作って1月ほど経つが、今でもこのクラスが現時点で自分史上最高のクラスだと思う。チーム制作で作ったクラスなのだが、思わずメンバーに使ってほしいとこぼすほどだった。

また今日はC++でのリフレクションを実装した。これは趣味だ。以前自分で組んでみたが上手くいかず、制作に関して先生に相談しに行ったついでに見てもらったところ解決した。やはりtemplateはエラーがわかりづらい。エラー箇所ばかりに目をやってしまって、本来のエラーを起こしている箇所から目をそらされる。Conceptを、早く。C++17では叶わなかったそうなので最短でもC++20、3年後になる訳だが。

ここ数日でTMPの楽しさに気づいてしまったのでもうC++の沼に足を突っ込んでしまった。templateの特殊化、traitsやsfinae辺りの情報を見た時点でヤバそうと思ったが、traitsを理解して身に着けた段階でもう沼に入っていたのかもしれない。traitsは簡単なのでtemplate沼の入門に向いてる気がする。プログラム好きな友人にtemplate楽しいと伝えるとそのまま「constexpr沼にハマるといいと思います」とのこと。Sproutを作った人の気持ちが少し理解できた気がする。

 

このままだと延々楽しいと語ってしまいそうなのでそろそろ終わりにする。

C++はいいぞ。プログラミングは良いぞ。