42Tokyo人生振り返り ~You've been absorbed by the Black Hole!~
まえがき
2020年1月の初回piscine(入学試験)を受験し、42本科生としても2年半ほど所属していたエンジニア養成期間、42TokyoをついにBlackHole(退学)になったので、これを機に42Tokyo人生を振り返りたいと思います。
42Tokyoってなに?って方はこちらから。
入学試験のpiscine
piscineは4週間にわたって開催される42Tokyoへの入学試験です。私は2020年1月にオフラインで受験しました。
piscineはネタバレ禁止なので特に詳しいことは書きませんが、全然分からないけどめっちゃ頑張ってやってみたらなんとかなるの繰り返しって感じです。生涯で楽しかった(つらかった)ことランキングトップ3に入るくらいめちゃくちゃ楽しかったし、なんなら本科より楽しかったです。
チーム課題を徹夜で取り組んだ後の六本木グランドタワーからの景色はとてもえもかった。
piscine詳細についてもっと知りたい方はこちらから。
本科に入ってから取り組んだ課題達
piscine合格後に第一子の妊娠が発覚 & 退職して実家のある京都に引っ越すことになったので本科に進むのは諦めようと思っていたのですが、コロナによってオンラインで本科の課題に取り組むことができるようになったため、当面勉強させてもらうことにしました。
というわけで本科に入ってから取り組んだ課題達を当時の思い出とともにざっくり振り返ります。
libft
C言語の標準ライブラリの関数などをひたすら再実装する課題。42名物(?)の再実装課題はここから始まった…!
42Tokyo本科では一定期間のうちに課題をクリアしないとBH(退学)するというシステムなのですが、piscineで仲良くなった人たちがここでことごとくBHしたため、早々にモチベーションが急落してしまいました。
https://github.com/pistachiyoda/42_libft_new
get_next_line
第一引数に渡されたファイルディスクリプタで読み込まれたものを第二引数のlineに読み込むget_next_line関数を作る課題。
ファイルディスクリプタやstatic変数について少し詳しくなりました。
int get_next_line(int fd, char **line);
ちなみにget_next_lineクリア後、他の課題のレビューをしているときお腹が定期的にやたら痛くなるな〜と思っていたら翌日第一子を出産しました👶
産後すぐは乳腺炎になって連日高熱にうなされたり、夜泣き対応で大変すぎたので、もう42辞めよか…ってなってたのですが、3ヶ月ほど経ったら体調も夜泣きも落ち着いてきたのでもうちょっと頑張ることにしました。
https://github.com/pistachiyoda/42_get_next_line
ft_printf
簡易printfの再実装。printfといえば%s, %dくらいしか使ったことなかったのですが、manをみてprintfの奥深さを知りました。未定義動作についてどこまで実装すればいいのか分からず沼りました。
https://github.com/pistachiyoda/42_ft_printf
netwhat
今はなきサービス課題。ネットワーク関連の簡単な問題(TCPとUDPの違いとか)に答えるだけで課題クリアになって残BH日数も割と伸びるというサービス感が過ぎたためか課題アップデート時に消えてしましました。
ft_server
今はなきWordpressをコンテナで動かす課題。やっぱりグラフィカルに動くものは楽しいですね。
https://github.com/pistachiyoda/42_ft_server
cub3d
簡易3Dゲームを作る課題。
レイキャスティングについて細かめに解説してるlodevというサイトを参考にして作りました。lodevがなかったら1000%できてなかったと思います。数学知識がもろに必要な課題で数学(算数)の知識がつるかめ算で止まっている私は非常に苦戦したため、なるべく知識を図にして整理しました。
数学の必要性について思い知らされた課題でした。
ちなみに画面描画用のライブラリがM1Macだと動きません。。
https://github.com/pistachiyoda/42_cub3d
pipex
パイプやリダイレクトを実装する課題。
以下のようにプログラムが引数を受け取って実行された時、
./pipex file1 cmd1 cmd2 file2
こんなふうに実行されるように実装します。
< file1 cmd1 | cmd2 > file2
bashでコマンドラインを実行する際の裏側について学ぶことができました。
産後でメンタルが若干センシティブになっていたため子プロセスをkillするのがしんどくて、killしなくて済む方法を探して迷走しました。
https://github.com/pistachiyoda/42_pipex
b2br
DebianかCentOSを選択し、課題仕様に基づいてsudo、パスワードポリシー、ssh、ufw, lvm、モニタリングスクリプトの設定などを行ったりWordPressをインストールしたりする課題。
私はDebianを選択したのですが、Debianのコードネームはトイストーリーの登場人物の名前になっていることを知って興奮しました。
ちなみに、第一子であるむすめちゃんの夜泣きもすっかりおさまり、そろそろ就活するか〜と考えいたら第二子の妊娠が発覚したので、もう少し42Tokyoで勉強しておいて第二子出産後に就活しようということになりました。
so_long
2Dゲームっぽいものを作る課題。プレイヤーを操作し、マップ上に配置されている宝物を収集後、ゴールである魔法陣へ向かうとクリアするようなゲームです。
私が書いたものはプレイヤーが移動するごとに画面全部再描画されるというあまりよくない実装になっています。(変更があった部分だけ再描画するようにすればよかった)
ちなみにこちらもcub3dと同様に画面描画用のライブラリがM1Macだと動きません。。
https://github.com/pistachiyoda/42_so_long
push_swap
複数の値を、2つのスタックを用いて特定のオペレーション(swap, push, rotate, rev_rotate)によって小さい順にソートする、といったプログラムを実装する課題。
つわりで若干体調が悪く、push_swapは吐き気と戦いながら実装しました。
https://github.com/pistachiyoda/42_push_swap
philosophers
哲学者達にパスタを食べさせる課題です。
「1人以上の哲学者が円形テーブルの周りに座り、テーブル中央のパスタを食べたり、眠ったり、考えたり、寿命が来たら死んだりします…餓死させてはいけません…」みたいなことが課題文に書いてあって、どんな状況やねん!と理解に苦しみましたが、ポピュラーな問題であることを知りました。
スレッド、ミューテックス、プロセス、セマフォについて少し詳しくなれたました。
https://github.com/pistachiyoda/42_Philosophers
netpractice
一部のノードにIPアドレスやサブネット情報を与えられたネットワーク図から、特定のノードのIPアドレスやサブネットを求める課題です。難易度がだんだん上がっていく形式で確か7~8問ほど出題されます。
大昔に取ったCCNAがほんの少し役に立ちました。
minishell
軽量版bashと一部コマンド(cd, pwd, echo, export, unset, env, exit)を実装するもので、2人チームで取り組む課題です。Notionで共有ドキュメントを作ったり、一日一回はボイチャで話して進捗確認したりして進めました。
重めの課題で2ヶ月ほどかかったのですが、BHまでの期日もぎりぎりだったのでヒヤヒヤしました。しかもそんな中むすめちゃんの保育園がクラスターでやられて旦那もコロナに感染した時は「オワタ…」と思いましたが、なんとかなりました。
また、実装時に参考にしたBash Reference Manualには載ってない動作とかも多くて、どこまで実装するべきか沼りました。つらいことも多かったけどチーム課題は楽しかったし、42の課題の中では一番思い出深いものとなりました。
ちなみにペアを組んでた相方が浅草に住んでいると言うことだったので、いつか絶対に東京に行くので打ち上げで蔵前のダンデライオンチョコレートに行こうね…!と言っていたのにいつの間にかBHして音信不通になってしまったことは特につらかったです。
https://github.com/pistachiyoda/42_minishell
cpp_modules
C++やオブジェクト指向についてステップバイステップで学んでいく感じの課題です。この課題を終わらせてから2人目の出産に挑みたかったのですが、cpp07をやってるくらいで第二子が爆誕しました👶
https://github.com/pistachiyoda/42_CPP_Module_00
https://github.com/pistachiyoda/42_CPP_Module_01
https://github.com/pistachiyoda/42_CPP_Module_02
https://github.com/pistachiyoda/42_CPP_Module_03
https://github.com/pistachiyoda/42_CPP_Module_04
https://github.com/pistachiyoda/42_CPP_Module_05
https://github.com/pistachiyoda/42_CPP_Module_06
https://github.com/pistachiyoda/42_CPP_Module_07
https://github.com/pistachiyoda/42_CPP_Module_08
Inception
Docker composeでなんやかんやする課題…
なのですが、第二子の夜泣きが第一子と比べ物にならないくらい激しすぎたり、引越ししたりでバタバタしているうちにBlack Holeに飲み込まれてしまいました😢
感想とこれから
piscineに参加したときには、42Tokyoの特色の1つであるピアラーニングを通じて、相互学習を体験することができました。しかし、本科に入ってからは、出産や育児といったことが重なり時間がなくなってしまったこと、またオンラインだったこともあり基本的にはソロプレイで課題を解いていたため、ピアラーニング的なことはあまりできず、42らしさをあまり享受できなかったし私も提供できなかったのが心残りです。。
最近42Tokyoではオフライン化を進めており、オフラインの生徒たちがオフラインなピアラーニングを通じて爆速で課題を進めているのを見ると、やっぱりオフラインがいいよな〜!と感じます。42Tokyoとは関係ないけど、世の会社がオフィス回帰を進めるのもなんだか納得しました。なので、東京に行ける機会も少ないオンライン参加勢の私がこのへんでBlack Holeしたのはいいタイミングだったのかも。
最後に42Tokyoと育児を両立できたのは理解ある旦那氏のおかげです。ここ2〜3年は好き勝手させてもらったので、これからはこれまで旦那が一本柱で支えてくれていた家計を私も共に支えるべく労働に勤しみたいし、いつか旦那氏にも好き勝手できる2〜3年間を作ってあげられるように頑張ります!
この記事が気に入ったらサポートをしてみませんか?