42Tokyoでの2021年11月振り返り

エンジニア養成機関、42Tokyo での活動について知ってもらうために、11月に42Tokyoであったことについて振り返る記事です。

自分が取り組んでいる課題や、行われたイベント、課題外の活動について振り返ります。

今月はイベントが盛りだくさんの月でした。

やったこと

42Tokyoの課題

C++98でコンテナクラスの再実装をする課題をクリアした後、Webサーバを作る課題をメインで行っています。
たまにTypeScriptでオンラインゲームを作る課題に取り組んでいます。

C++98でコンテナクラスの再実装をする課題をクリア

f:id:nafuka11:20211204224652p:plain
自作テスターの出力

C++98でvector, map, stackなどを再実装する課題です。
8月から始めてようやくクリアしました。かかった時間は約121時間(11月で13時間)でした。

この課題では、以下のことを学べました。

  • STLコンテナのデータ構造と、計算量を実現するための実装方法
  • リファレンスサイトではなく、規格を読むことの大切さ

詳細については、後で振り返り記事を書けたらと思います。

C++98でWebサーバを作る課題

HTTP/1.1に準拠したWebサーバを作る課題です。複数のクライアントに対応するために、Apacheのようにプロセスをforkするのではなく、NginxのようにI/Oを多重化する必要があります。

この課題は2-3人で取り組む課題で、現在2人で取り組んでいます。

進捗は、echoサーバを試しに作った後、HTTPリクエストのパース処理を実装しています。

大変な点

  • HTTP/1.1の仕様を把握するために、RFCを読み込むのが結構大変です。

面白い点

  • echoサーバを作ってみて、ブラウザからHTTPリクエストを受け取った時は感動しました。Chromeデベロッパツールでも見れますが、自分が作ったサーバが文字列を受け取れると達成感がありました。
  • I/Oの多重化が面白そうです。I/Oを多重化するための関数はselect, poll, epoll, kqueueのいずれかを選択できます。kqueueを使う予定なのですが、ソケット以外にもファイル、プロセス、シグナルなど様々なイベントを受け取れてすごいです。Node.jsの非同期I/Oにも使われているそうで、ワクワクします。 engineer.recruit-lifestyle.co.jp

TypeScriptでオンラインゲームを作る課題

Pong というゲームをオンラインで遊べるWebサイトを作る課題です。

  • フロントエンド:TypeScriptならどのフレームワークでも可
  • バックエンド:NestJS
  • DB:PostgreSQL
  • 認証:42のOAuth認証, 2段階認証も有効にできる
  • その他:Pongをオンラインで遊べるだけでなく、フレンド機能やチャット機能等もあり

Webサーバを作る課題をクリアした後の課題なのですが、先に進んでいる学生とたまにモブプロをしていました。

イベント

5つのイベントに参加しました。

VR体験会

42Tokyoの学生が校舎にOculus Quest 2を持ち寄って、持っていない学生にVRを体験してもらうイベントです。

42TokyoにあるAssociation、42XRが企画しました。Associationは大学のサークルのような、学生の集まりです。昨今の情勢もあり、消毒対策などされた上で開催されました。

体験内容は はじめてのQuest 2 をやったそうです。

自分は機材トラブル用の予備要員として参加しました。 久々に校舎に行って、Discord以外で学生とお話できて楽しかったです。

コードゴルフ

Python3.9で eval を使わずに計算機を作りましょうというお題で1時間コードゴルフをしました。

愚直に正規表現を使って実装したのですが、後で exec が使えることに気づきました……。
優勝はなりませんでしたが、勉強になりました。

42Tokyoの学生が作ったアプリ・サービスを見たり体験談を聞く会

42Tokyoの学生が企画したイベントで、4人の学生にそれぞれのアプリ・サービスを作った背景などについて伺いました。

作ったものはWebアプリ、スマホアプリ、ECサイトと様々で、お話を聞いて刺激を受けました。自分も何か作りたいという気持ちになりました。

レバテックのポートフォリオ作成ガイダンス

全2回のガイダンスで、今月は第1回目が行われました。

今回の内容は

についてでした。

「選考通過のためのポートフォリオ戦略」はWebアプリにフォーカスした内容で、レベル別にどんな機能が必要か説明されていました。

次回はポートフォリオのより具体的な内容について説明いただけるそうで、楽しみです。

シュルレアリスト中野圭先生による『アート×プログラミング』講義

このイベントは校舎・Zoomの同時開催でした。校舎から参加しました。

f:id:nafuka11:20211204222019j:plain
講義の内容(許可を得て撮影しています)

オルゴールライブコーディングでは、Sonic Piとオルゴールを使って、その場で音楽を作られていました。

講義の内容は難しかったのですが、Processingが話に上がり、久しぶりにやってみたくなりました。

校舎・Zoomの同時開催は面白い試みだったので、またあるといいなあと思います。

その他の活動

統計WEBの輪読会(10月から継続)

10月から始まった 統計WEB の輪読会に参加しています。

今月はStep1. 基礎編の「10. 条件付き確率とベイズの定理」まで進みました。

自分の発表週では、「6. 分散と標準偏差」と「7. 場合の数」を担当しました。

f:id:nafuka11:20211204223451p:plain:h300
Notionで作成した資料の一部

発表はNotionを使って行っています。NotionはLaTeXを使って数式を書けるのですが、LaTeXをベタ書きするのが大変なので、数式は Mathcha を使って書き、LaTeXをNotionにコピペしています。MathchaはLaTeXを補完してくれるのでとても楽です。

SpeakerDeckのアカウントを作ってみた

今後Zennに記事を投稿する予定なのですが、ZennはGoogleスライドに対応していないので、SpeakerDeckのアカウントを作ってみました。

speakerdeck.com

42Tokyoの課題に特化したスライドではなく、より一般的な内容のスライドを上げられたらと思っています。


ちなみに、先月の記事 で就活したいと話していたのですが……課題やイベント、統計WEBの輪読会をやって全然できていないです。
来月以降はチーム課題にコミットしたいのと、新カリキュラム「Road to」が始まるので就活するのは難しいかもと思っています……。

42tokyo.jp

コミット時間

今月のコミット時間は178時間35分、1日平均5時間57分でした。

コミット時間の推移は以下です。

f:id:nafuka11:20211203213100p:plain
コミット時間の推移

チーム課題を始めてから、課題にコミットする時間が増えました。

今後やること

Webサーバを作る課題を引き続きやっていきます。12月か1月くらいに完成できたらと思っています。