私的::ゆるふわなC++の継続的学習法

# はじめに

### 私について
まず、筆者である私について軽く共有します。
2022年現時点では、C++を書き始めて9年目ほどです。
ゲーム作りからC++を始めて、個人的に気に入った言語だったので普段使いしています。
(仕事でも使いたいとは、そんなに思ってないが…)

一応私のレベル感で言うと以下で言うところの「初心者」～「規格書リーディング初心者」辺りだと思っています。(たぶん)

https://qiita.com/yumetodo/items/a843bd542106215bbc84

### この記事のターゲット
この記事を読んでいるあなたは、C++が好き、もしくは、これからC++を書いてみたいとか、C++に興味がある人ではないでしょうか？

まだC++を始めたばかりだったり、既に何年か書いてはいるが、そこまで詳しくは知らない人などで
これからも **継続的にC++の情報を追っていきたいが、どうやって学習するのが良いだろうか？** と思っている人もいるのではないでしょうか？

今回の記事ではそういった人への参考程度になればと思い、私が普段どんな感じに情報を集めているかを紹介してみようと思います。

あくまで一個人がやっている事にすぎないことは、ご了承ください！
(既にがっつりC++の勉強できている人にはあまり面白くない内容かもしれませんね)

### 何故ゆるふわ？

"ゆるふわ"じゃなくていいならば、
最新の**規格書/提案書を読め！** 等と言われて、🥺になっちゃうかもしれません。

実際の所、そこまでハードに調べたいわけでもないが、ゆるふわに情報を追いたい人も現実的にはいるのではないでしょうか？

### まったく初めてのC++なら？

今回紹介する事はあくまでもC++の最低限の知識がある人が、継続的に情報を追っていくための側面が強いので
初手のC++学習としては、素直に**書籍**などを活用するのが手っ取り早いかもしれません。


※ちなみに私の場合、学び始めは
- Cの参考書は読んでいた(C++は読んでない)
- 大学でプログラミングをする部活に入っていたので、同期や先輩達からの共有があった
- [ロベールのＣ＋＋教室](http://www7b.biglobe.ne.jp/~robe/cpphtml/) をちらちらしてみる
- [cpprefjp](https://cpprefjp.github.io) をちらちらしてみる

といったことをしていた気がします。

# 継続的な情報収集

## SNS等をちらちらする

SNS等のコミュニティで情報発信している人も少なくはないので
情報収集に使えます。

### Twitter

https://twitter.com
私の場合は**Twitter**を利用しているので上手く活用しています。

- TwitterでC++強そうな人や、C++の情報発信が多い人などフォローします
  - 標準化委員会に参加している人をフォローしてみるのも面白いかもしれません
- TwitterにはC++のコミュニティもあるので、興味があれば参加してみても良いかもしれません


こうすることで、のんきにTwitterをしているだけでも、最新情報が目に入るきっかけになります。

これは、**ゆるふわ**に違いない！

### その他 コミュニティ

cppmapで、その他のC++コミュニティもいろいろ紹介されていますので、
自分の気に入ったものをチェックしてみると良いかもしれません。
https://cppmap.github.io/learn/communities/

## 技術共有サービスをちらちらする

今はインターネットで気軽に技術共有できる時代です。
当然誤った情報もあったり、質もバラつきますが、**ゆるふわ**にアンテナを張るには便利です。
例えば

### Qiita
https://qiita.com

ｺｺのサービスです。
- Qiita の [C++](https://qiita.com/tags/cpp) タグをチェックする
  - もっと言えば、C++17, C++20 など細かくタグが分かれているので、私はそれらもフォローしている
- まさに Qiita Advent Calender なんかでは、毎年情報が集まるので見てて面白い

### Zenn
https://zenn.dev

最近だとZennの活用をしている人も多いと感じます。

- Zenn の [C++](https://zenn.dev/topics/cpp) トピックをチェックする

----

その他気になるサービスがあればチェックしてみるといいかもしれません。

## C++erのブログをちらちらする

C++erのブログをチェックすれば、いろいろなC++情報を知るきっかけになります。
C++について、勉強している際に自然にたどり着いた人も多いのではないでしょうか？

ありがたいことにcppmapにもオススメのブログがまとまっています。
https://cppmap.github.io/learn/blogs/

勝手ながらですが、いくつか紹介させてください:bow::pray:（勝手に紹介してすいません…）

- [地面を見下ろす少年の足蹴にされる私](https://onihusube.hatenablog.com/) 
最近だと、個人的な一番のオススメはonihusubeさんのブログです。
最新の提案文書のまとめなどもしてくださっており、とても助かっています。
ありがとうございます！！

- [本の虫](https://cpplover.blogspot.com)
一昔前だと江添さんのブログにも良くお世話になりました。
今でも過去の提案書の情報をあさりたいとき等に役立っています。
ありがとうございます！！

- その他のブログにも何度もお世話になっております。
ありがとうございます！！

こういった所にもアンテナをはることで、**ゆるふわ**に情報を得ることができます。
つよつよなC++erに圧倒的感謝していきましょう。

ありがとうございます！！

## リファレンス/解説サイトをちらちらする

リファレンスサイトのチェックはC++学習においては非常にオススメです。
C++の言語機能や標準ライブラリについて、バージョン毎にまとまっているので大変便利です。
たぶん、**ゆるふわ**さ！

### cppreference.com
https://en.cppreference.com/w/

英語のリファレンスサイトです。
普通にC++の機能とか標準ライブラリの事とかを気軽に調べたいときに使いまくってます。

- 更新頻度も良いです
- 例えば現在であれば [C++23](https://en.cppreference.com/w/cpp/23) のページを見ればC++23に入ることが決まっている機能やライブラリ等がまとまっているので、次規格の情報を追うのにも便利
- 一応日本語翻訳もある…
  - https://ja.cppreference.com/w/cpp

### cpprefjp
https://cpprefjp.github.io

日本語のリファレンスサイトです。
- こちらもcppreference.comと併用して使っています
- 日本語でまとまっている分、気軽に調べやすいです

### C++ の歩き方 | cppmap

https://cppmap.github.io

すでに何度か名前を出していましたが、近年誕生したcppmapもオススメです。

- C++に関する様々な情報がまとまっていて面白いです

### その他のオンライン資料

その他のオンライン資料に関してもcppmapにまとめてあります。ありがたいですね！！
https://cppmap.github.io/learn/online-resources/

## その他のちらちら
私はそこまでしていないものも含めて、その他いろいろ紹介

### 書籍
最新規格が発行されれば、それに対応した書籍が出版されるかもしれません。
そちらをチェックすることでも情報を得ることができるでしょう。

書籍となると最新の情報からはやや遅れてることもあると思いますが
学習する上では割とメジャーな手段であり**ゆるふわ**ではないでしょうか？

cppmapにもオススメ書籍がまとまっています。
https://cppmap.github.io/learn/books/

### Boost C++ Libraries

https://boostjp.github.io

Boostは準標準とも呼ばれるライブラリ群です
- Boostから標準ライブラリに採用されるものも多い
    - Boostを知ることが結果的に次期C++を知る可能性にもなります
- 日本語の情報サイトもあります
    - https://boostjp.github.io

どのみち標準ライブラリにはない便利なライブラリが集まっているので知っておけると損はないと思っています。
Boostに限った話ではなく、様々なC++ライブラリの情報をキャッチすることもC++学習において、できるにこしたことはない要素に思います。


これは、**ゆるふわ**なのだろうか

### C++標準化委員会の文書を読む

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/

ゆるふわだと思えば、なんだって**ゆるふわ**さ

# 継続的なアウトプット

さて、いろいろな**ゆるふわ**な方法で情報を得ることができたかもしれませんが、
やっぱり実際に書いてみたり、使ってみないと身につかない事も多いと思います。
情報収集することも大切ですが、実際にアウトプットすることも大切です。

## 最新の言語機能やライブラリを試してみよう

リファレンスサイト等からコンパイラの実装状況なども確認できます。
https://en.cppreference.com/w/cpp/compiler_support

コンパイラの対応ができていたら、早速試しに使ってみましょう！！

実行環境を用意するのが大変であればオンラインコンパイラを使用するのが便利です。

### Wandbox

例えばWandboxなんかは気軽にオンライン上でC++のコードを試せて楽です。
開発環境の準備が不要だなんて、これは**ゆるふわ**としか思えない

https://wandbox.org

## 実開発の中でも積極的に使っていこう

もし、最新のC++を使って何か開発する機会があるならば積極的に新しい言語機能やライブラリを使っていけると学ぶ上では良さそうです。
(無理やり使う必要はないと思いますが)

私の場合だと
趣味のゲーム開発はMSVCと[OpenSiv3D](https://github.com/Siv3D/OpenSiv3D)を使っているので
C++20の新機能などを積極的に使うことを意識しながら開発をしています。
OpenSiv3D自体も積極的に最新規格のC++を取り入れてくれるフレームワークなので学習面でもありがたく感じています。



## 情報発信をしよう

学んだことを今度は自分が記事などにして発信してみるのも良いです。
Qiitaなどの技術共有サービスに投稿するのに抵抗があれば
個人ブログなどでも良いでしょう。それならば**ゆるふわ**じゃないでしょうか？

あらためて自分でまとめることで、理解がより深まるのではないかと思います。

# さいごに

## 謝辞

今回紹介したものも、そうでないものも含め
C++の情報発信をしてくださっている大勢の方々に
あらためて感謝を申し上げます。

## まとめ
- **ゆるふわ**な情報収集の手段の例として以下のものが活用できる
    - SNS
    - 技術共有サービス
    - C++erブログ
    - リファレンスサイトなど
- 学んだことはアウトプットしていこう
    - オンラインコンパイラで気軽に試せる
    - 情報発信するのも良い