エンジニア養成機関、42Tokyo での活動について知ってもらうために、11月に42Tokyoであったことについて振り返る記事です。
自分が取り組んでいる課題や、行われたイベント、課題外の活動について振り返ります。
今月はイベントが盛りだくさんの月でした。
やったこと
42Tokyoの課題
C++98でコンテナクラスの再実装をする課題をクリアした後、Webサーバを作る課題をメインで行っています。
たまにTypeScriptでオンラインゲームを作る課題に取り組んでいます。
C++98でコンテナクラスの再実装をする課題をクリア
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回目が行われました。
今回の内容は
- IT業界の企業
- 企業の求めるスキル
- 選考通過のためのポートフォリオ戦略
についてでした。
「選考通過のためのポートフォリオ戦略」はWebアプリにフォーカスした内容で、レベル別にどんな機能が必要か説明されていました。
次回はポートフォリオのより具体的な内容について説明いただけるそうで、楽しみです。
シュルレアリスト中野圭先生による『アート×プログラミング』講義
このイベントは校舎・Zoomの同時開催でした。校舎から参加しました。
オルゴールライブコーディングでは、Sonic Piとオルゴールを使って、その場で音楽を作られていました。
講義の内容は難しかったのですが、Processingが話に上がり、久しぶりにやってみたくなりました。
校舎・Zoomの同時開催は面白い試みだったので、またあるといいなあと思います。
その他の活動
統計WEBの輪読会(10月から継続)
10月から始まった 統計WEB の輪読会に参加しています。
今月はStep1. 基礎編の「10. 条件付き確率とベイズの定理」まで進みました。
自分の発表週では、「6. 分散と標準偏差」と「7. 場合の数」を担当しました。
発表はNotionを使って行っています。NotionはLaTeXを使って数式を書けるのですが、LaTeXをベタ書きするのが大変なので、数式は Mathcha を使って書き、LaTeXをNotionにコピペしています。MathchaはLaTeXを補完してくれるのでとても楽です。
SpeakerDeckのアカウントを作ってみた
今後Zennに記事を投稿する予定なのですが、ZennはGoogleスライドに対応していないので、SpeakerDeckのアカウントを作ってみました。
42Tokyoの課題に特化したスライドではなく、より一般的な内容のスライドを上げられたらと思っています。
ちなみに、先月の記事 で就活したいと話していたのですが……課題やイベント、統計WEBの輪読会をやって全然できていないです。
来月以降はチーム課題にコミットしたいのと、新カリキュラム「Road to」が始まるので就活するのは難しいかもと思っています……。
コミット時間
今月のコミット時間は178時間35分、1日平均5時間57分でした。
コミット時間の推移は以下です。
チーム課題を始めてから、課題にコミットする時間が増えました。
今後やること
Webサーバを作る課題を引き続きやっていきます。12月か1月くらいに完成できたらと思っています。