1. はじめに
私は現在、以下の教育機関に所属しています。入学後約半年で義務過程(first circleと呼ばれる)の半分を終了したので、その感想をまとめようと思います。学校の規約で課題の詳細については述べられないことをご了承ください。
対象読者
- 42Tokyoに興味がある方
- Computer Scienceの体系的な学習に興味がある方
本記事で述べること
- 42Tokyo本科課題に関する以下の内容
- 課題で筆者が学んだ要素
- 課題のつまづきポイント
- その他感想
本記事で述べないこと
- 本科課題の詳細設定
- 本科課題の解法、解答コード
- 本科課題の参考資料
- その他課題を実際に進めるために有益な情報
2. libft
概要
libftは、標準Cライブラリを模倣する基本的な関数に加えて、標準には存在しないが汎用で有用な関数を自作する課題です。
この課題から学べること
- エラーハンドリング、エラーハンドリング、エラーハンドリング!!!!
- メモリリークの対処
- 本科のレビューがPiscineから次元が違う厳格さになること(課題が単純なので何ならまだぬるい)
- 同期入学の半分以上があっさり来なくなること
3. ft_printf
概要
ft_printfは、標準ライブラリのprintf
関数を自作する過程で可変長引数の使い方を学びます。
この課題から学べること
- フォーマット指定子や可変長引数の処理方法
4. get_next_line
概要
get_next_lineは、ファイルから1行ずつ読み取る関数を実装する過程で、より厳密にメモリリークを対処することとstatic変数の扱い方を学びます。
この課題から学べること
- static変数とはなにか
- メモリとはなにか
- メモリリークとはなにか
- スタック?ヒープ?
5. Born2beroot
概要
Born2berootは、仮想マシンを使ってLinuxサーバーを構築する課題です。
この課題から学べること
- サーバー管理やLinuxの基本的なコマンドライン操作
- 仮想環境構築の初歩の初歩
感想
急にコーディングではなく座学が必要になる影響か、モチベが保てず来なくなる同期が多発します。
6. push_swap
概要
push_swapは、スタックを使って数列を並び替えるアルゴリズムを実装する課題です。
この課題から学べること
- 要件を満たすアルゴリズムを考える力
- 計算量の削減や最適化技術について調査する力
7. fdf
概要
fdfは、3Dグラフィックスを扱う課題で、42の独自ライブラリを提供された状態でワイヤーフレームを描画します。
この課題から学べること
- 2Dから3Dの座標変換の実装
感想
これまでさんざんライブラリを縛られていたのに急に外部ライブラリを使用するため、エラーハンドリングに手間取りました。ただ、これまで自分の実装でどうハンドリングするべきかを考えていたために「こういうエラーハンドリングだろうなあ」という仮説思考が先に湧いてきたのでなんとかなりました。
8. pipex
概要
pipexは、パイプとプロセスの間でデータを渡す仕組みを実装する過程でプロセス間通信とファイルディスクリプターの管理について学ぶ課題です。
この課題から学べること
- シェルやプロセス間通信の基本
- パイプ、ファイルディスクリプタ、システムコールの扱い方
- システムコールのエラーハンドリング
感想
一番理解に苦しみました。一番インプットが重かったと思います。ここでちゃんと勉強しておくと後述するminishellが楽に理解できると思います。
9. minishell
概要
minishellは、小規模なBashを実装する課題です。本科に入って初めてのチーム課題です。
この課題から学べること
- シェルの構造
- シグナル処理
- チーム開発のノウハウ
- shellのリダイレクト処理
- 複雑で巨大なプログラムのエラーハンドリング
感想
おそらく多くの人にとって本科first circleの中ボスに位置する課題です。平均2~3ヶ月、長い人は5ヶ月近くかかるそうです。正直これを完了出来る人はどこでもサバイブできると思わせるほどの大変な課題でした。ペアに恵まれたおかげで非常に楽しかったです!
10. philosophers
概要
philosophersは、哲学者の食事問題を解決する課題で、並行処理とデッドロック回避がテーマです。
この課題から学べること
- マルチスレッドプログラミング
- デッドロックとはなにか
- デッドロックを回避するには
11. おわりに
ここまでお読み頂きありがとうございました。フルコミット出来る環境にいられる幸運さと家族や友人に感謝し続ける毎日です。入学した同期の80%くらいがほとんど校舎に来ないような状況で寂しくなる一方ですが、自分は自分自身とまだ来ている同期達を鼓舞して後半も楽しく学び続ける所存です。
これを読んで42Tokyoに興味が湧いた方はPiscineという入学テストの受験を検討されてみてはいかがでしょうか。いかなる金銭的な価値に変えられない貴重な体験が得られることを保証します。