一年間くらい42Tokyoで生きてきた狐から見た42Tokyoの話

## はじめに
こちらは，42Tokyoというこの記事の中で詳しく紹介していく，謎の？プログラミングスクールの2021年度の[アドベントカレンダー](https://qiita.com/advent-calendar/2021/42tokyo)になります．

https://qiita.com/advent-calendar/2021/42tokyo

自分は一日目を担当する，42Tokyo在校生のぐーすかきつねといます．42Tokyoには昨年の11月ごろに入学したので，ちょうど一年ほど所属している狐です．
今回の記事では，アドベントカレンダーの一日目ですし，とりあえず42Tokyoの紹介ということで，一年間42Tokyoの中で過ごしてきた狐の目線から，どんな団体でどんなことを学べる場所なのかを，書ける範囲で書いていこうと思っています．
明日以降に関しては，42Tokyoの在校生がこの一年間で学んだこととか思ったこととか，42やプログラミングに関することを色々好き勝手書いていってくれると思うので，是非毎日記事をチェックしていただければと思います．


## 42Tokyoとは
### 概要
さっそく42Tokyoの紹介を行っていこうと思います．
42Tokyoとは[42](https://42.fr/en/homepage/)というフランス発のエンジニア養成機関の東京校です．（公式サイトは[こちら](https://42tokyo.jp/)）

https://42tokyo.jp/

42の名を関するエンジニア養成機関は，世界各国に現在36校存在しています．42Tokyoは42の理念に共感したDMM様（主に亀山会長）がメインスポンサーとなり，昨年6月に開校した，42network（42の名を関する一連の学校群のこと）の中で現在一番新しい校舎になります．
42のエンジニア養成機関としての大きな特徴は，個人的には以下の三つだと思っています．

1. 完全無料
2. 講師・授業なし
3. 今までの経歴不問 

まず，「完全無料」について．
42の提供するカリキュラムを受けるために必要となるお金は0円です．かかるお金は，校舎に行くための交通費ぐらいかなと思います．六本木にある校舎に行くことが可能な距離に住んでいれば，パソコンを持っている必要もありません．校舎にはiMacがたくさん並んでいます．
次に「講師・授業なし」について．
42において，講師にあたる人は存在しません．よって授業的なものも存在しません．じゃあ，どうやってプログラミングに関して学ぶの？となるとおもうのですが，それに関しては，「入学後」の部分で簡単に書いていきたいと思います．
最後に「今までの経歴不問」です．42に入学するために必要なことは，42が用意している二つの試験を突破することだけです．この試験の受験資格は，16歳以上であればどのような人にも等しく与えられます．ただし，二回目の受験は現状許されていないので，受験の際にはしっかり計画を練ることをお勧めします．

ちなみに，開講してからの実績は以下の記事で簡単に見ることができます．

https://prtimes.jp/main/html/rd/p/000000012.000051804.html

### 入学に必要なこと
さて，42Tokyoに入るためには，上でも紹介したように以下の2つの試験をクリアする必要があります．

1. 一次試験のwebテスト
2. 二次試験のpiscine

です．
1次試験はweb上で行われるテストにチャレンジしてもらうことになります．今の所要時間は30分になっているんですね（自分が受験したときは2時間くらいあった気がする．．．）webブラウザが開ける環境があれば問題なく参加できます．
こちらの1次試験に合格された方は，2次試験のpiscineに参加することができます．
piscineとは，4週間にわたるコーディング試験のことです．
4週間の間で，与えられた課題を同じくpiscineに参加する人たちと協力しながらこなしていくことになります．
こちらの試験も，現状はオンラインで行われています．Discordというチャットや通話が可能なアプリを用いて，他の受験生と交流が可能になっており，codeのreviewに関してもオンラインで行える制度が整えられています．
このpiscineの中では42において重要となるreviewを生徒同士で行い，互いのcodeを評価しあい，また機械採点（競技プログラミングの採点機能みたいなものを想像してください）によって，codeの出来栄えを評価されていくことになります．
合格する人は大体，みんな一日10時間前後はこのpiscineに4週間フルコミットするような試験となります．自分は実質プログラミング未経験で参加しましたが，毎日12時間ほどコミットしていたように思います．
piscineの合格基準は明らかにされていません．課題を進めたから合格するというわけではないのです．実際に自分より課題を先に進めていた人が不合格になっている例を知っていますし，一方で，課題自体は正直そこまで進んでいなかったけれど合格した例も知っています．piscine中の様々な行動も含めて評価の対象になっているのかしれませんね．
このpiscineに合格すると晴れて入学することができます．ちなみに，最初の一次試験の申し込みから計算すると最終合格者は4%になるらしいですね．すごい！

### 入学後の話
さて，晴れて入学した後，42Tokyoでは何をしていくのかという話を簡単にしていきます．

入学すると，42Tokyoからは在籍可能な残り日数と，決められた課題が与えられます．課題をこなすと，42Tokyoに在籍可能な日数が増えていき，在籍可能日数以内に課題をこなせなければ，退学とという制度になっています．（42内では，退学になることをblackholeに飲まれると言っています）
42に居続けて，勉強し続けるためには，まず課題をこなして，在籍可能日数を伸ばしていくことが必要になります．

入学から半年程度はC言語に関する課題を主にこなしていくことになります．
libcのライブラリ再実装，printfの再実装，簡単なアルゴリズム課題，C言語のライブラリの一つであるX11のwindow描画システムを使った簡単な2Dゲームの作成，bashの再実装，フルスクラッチレイトレイサーの実装や３Dゲームの実装などをC言語でこなしていくことになります．
また，これらの課題においては使用可能なbuiltin関数に制限があり，大部分の関数を自身で実装して，課題をこなしていくことになります．これらの課題では，C言語の基礎的な部分と，それなりの大きさのプロジェクトに関して実装する力をつけていく感じでしょうか．
C言語に関する課題が一定まで進むとC++の課題もやっていくことになります．C++の基礎的な概念を理解した上で，stlの再実装を行ったりします．こちらに関しては，今回のアドベントカレンダーの中で書いてくれる方がいるようなので，そちらをお楽しみにしてください．また，C++で簡易的なHTTPサーバを再実装したりする課題もあります．各課題の詳細に関しては，既に記事を書いてくれてる在校生が何人かいるので，探してみてください．
また，これらの課題と同時進行的に，Docker Composeやネットワークの基礎知識を学ぶための課題もこなしていきます．


42Tokyoではこれらの課題に関して，運営側からは課題文のみが与えられ，それ以外に関しては基本的意に何も与えられません．課題文を読み解き，実装すべきことを自身で考え，生徒同士で話し合い，ググッて調べ，図書館に行って参考書籍をもとに調べ，実装していくというのが，42において学生が行うことになります．
そして，課題の出来に関してはレビューで互いに評価していくことになります．運営側が各課題に対して示している一定の評価基準があり，その基準をもとにして，さらにそこに各学生の知識や知見を含みつつレビューを行っていきます．

上記で示した，カリキュラム以外にもサブプログラムのような形で，JavaScript，Python，Goなどについての課題を行うこともできます．
最近ですと，こちらの記事で紹介されているように，いくつかの企業との提携したプログラムなども登場しました．楽しみですね．

https://prtimes.jp/main/html/rd/p/000000015.000051804.html


企業との連携ではAWSとの連携もあり， AWS Academyの講座を無料で受講できる仕組みもあります．自分はこの講座のおかげで，AWSがある程度分かるようになりました．

https://aws.amazon.com/jp/training/awsacademy/

課題以外の活動に関しても簡単に紹介させていただきます．

近頃，42Tokyoの学生内でいくつか勉強会が積極的に開かれるようになっており，
①Goに関する勉強会
②統計学から機械学習に関しての勉強会
③「コンピュータ・システム プログラマの視点から」を読む勉強会
④ドメイン駆動設計に関して学ぶ勉強会
などなど，いくつかの勉強会が今現在も行われていたりします．今回のアドベントカレンダーの中で紹介されるものもあるかと思うので，お楽しみに．

学生が主体となって外部の方に声をかけて，勉強会や講演会を開いてもらうような活動も最近は行われています．
こちらは，先日行われたlinkerに関する勉強会の様子です．今後も学生主体でこうしたイベントを増やしていければよいなと思っています．

https://www.youtube.com/watch?v=alDvi0vdb0Q

また，42Tokyoにはassociationと呼ばれる大学でいうサークルのような組織があります．
自分は42XRという最近メタバースで話題になっているVR系の技術を含めたXR全般のガジェットや技術を体験したり，開発したりするassociationのリーダーをやっており，先日は42Tokyo生向けにVR機器の体験会などを行いました．他にも，機械学習系のことを学ぶassociationや，企業を目指す人たちが集まっているassociation，あらゆる場所でコーディングを行うエクストリームコーディングをするassociationなどがあります．
42Tokyoにおいては，課題の割合がそれなりに重たく，今まではassociationの活動までなかなか手が回っていなかったのですが（blackholeがあるので），少しずつ活動が始まってきているように思います．


## 42に一年いての感想
まず，コミュニティとして非常に好きです．プログラミング関係のことであれば，自分から動きさえすれば，大体なんでもできる環境があり，また周りの人たちもプログラミングに関する興味関心が非常に強い方々が多いので，毎日の会話もとても楽しいです．
純粋に努力をしている人たちのいるコミュニティにいると，自分も努力をしようとやる気がわいてくるので，そういった面でも非常に良い環境だと感じています．
個人的に，42において自分が一番入ってよかったと思っていることは，42というコミュニティの「人の多様性」です．
42というコミュニティは今まで自分が所属してきたコミュニティでは，出会うことができなかった人に出会うことができ，それが自分にとってとてもいい経験になっています．
42Tokyoの生徒の内訳としては，自分の所感ですが，大学生4割，働いている社会人4割，その他色々が2割って感じです．大学生の自分が普通だと知り合うことがなかったような方々と，同じ課題をこなすために色々議論をしたり，その中で色々な経験談を聞くことができたりすることは，非常にいい経験になっています．
なんだかんだ，今までの人生，自分とある程度同質の人間と過ごすことが多かった中，42という場所では，自分にとって異質にあたる，価値観が異なる人に会え，その人たちと「良いコード」を目標に語り合うという経験は，とても面白いものだなぁと思っています．

42に入学を現状考えるている方々向けに少し話すと，「42ではすぐに一流にはなれないが，時間をかけて（1年から2年）1流になるための知識をためることができる」と思ってもらえればと思っています．なので，入学を考える上では，入学後にある程度まとまった時間を学習に取り続けられるかどうかを考えておくことをお勧めします．42においてこなすべき各課題に対してはそれなりに時間がかかります．自分はレイトレーシングの課題などについては，一カ月ほど毎日6時間以上codeと向き合うくらいのコミットが必要でした．
また，学習内容としては，非常に基礎的な部分というか，低レイヤな部分に関する学びが初期は多いです．大体最初の一年間はCやC++についてばかりです．巷のプログラミングスクールで習えるようなRubyでwebアプリケーションを作って～～みたいなことは一切ありません．
しかし，プログラミングをするにあたって非常に重要になる概念を課題を通して自分で学んでいくことになります．実際，42の課題になっていることの中には大学の情報系の学科の受業で行われているようなことも含まれていたりします．
さらに，ここに「自分で」という要素が加わります．正直効率を考えると，情報系のちゃんとした大学に通った方が効率がいい部分も大いにあると思います．そういった方があっている方はそちらを選んだ方がいいと思います．しかし，「自分で」学ぶことの楽しさ，一緒に学んでいる人たちとともに考えて，先に進む楽しさ，学んだ知識をもとにして，一つのプロダクトを作る楽しさ，完成したときのうれしさといったものを知ることができるのは，42における非常に良い点の一つだと思います．

こうした部分に魅力を感じる方は，是非入学試験をうけてみてください！とくにpiscineには42の面白さが詰まっているので，piscineを体験する中で，自分が42にあっているかどうかを判断できると思います！
エントリーはこちらから！

https://apply.42tokyo.jp/users/sign_in


だらだらと書いてきましたが，ここまで読んでくれた方本当にありがとうございました．自分の記事はここら辺で終わりにしたいと思います．
明日以降は，いろんなプログラミング関係の話とかを42Tokyoの在校生，staffさんが書いてくれるみたいなので，ぜひお楽しみに！
ちなみに明日は，[keiteanさん](https://qiita.com/keitean)が，「GitHubを使用したチーム開発のススメ」について書いてくれるみたいなので，是非チェックしてください！
それでは！