追記: この記事(2022/10)のころは、六本木に校舎があり、開発・判定環境はmacOSでしたが、新宿に移転したり、環境もLinux(具体的には不明)に変わったらしいので、シェルのオプション周りLinux風にだいぶ変わっている可能性があります。どうぞその点はお含み置きください。
Piscine(ピシン)、落ちた話も受かった話もまあまあブログ記事とかになっていて、公開できないことも多いし、僕がこれ以上つけ加えることはほとんどないと思うが………。なんていうの、やっぱり落ちればくやしいわけで、なにかポエムを書こうと思って。
42tokyo
そもそも、42tokyoは何なのだろうか。プログラミングスクールなのだろうか。もちろん学校法人ではない(一般社団法人 42 Tokyo)。実質はDMM様のご厚意で、会社の大きい部屋と大量のiMacを貸していただいているという感じだ。新宿熊野神社の隣へ独立した。
最近私が気に入っている定義は、定期的に問題を解かないと追い出されるサロンというものだ。
ピシン(Piscine)
ピシンも、入学後も、「問題と生徒だけがあって、先生がいない」基本スタイルは変わらないようである。落ちたので、本科は詳しくないけど、ウェブサイトにはそう書いてある。ピシンには体験会的な面もあるのだろう。
私ことmiidaは2022年10月度のピシンを受けた。ウェブサイトで受ける2時間かかる壮大なCAPTCHAみたいな試験があり、受かったので、ピシンに参加した。IDから「みいださん」とか「いいださん」と呼ばれていた。
私の出身は、入試偏差値で日本で三指には入ると言われるアホ高専だが、一応電子情報工学科卒で、情報系であった。情報工学専門なら42なんて行かなくてもいいんじゃない? って思う人もいるらしいけど、ぜんぜんそんなことないから。現に落ちてるし。高校1年とかの必要性のわかってないやつらにプログラミング教育するのって難しくて、大した授業は受けられなかったのだ。
ピシンの風景
あるところに集められて、問題集渡されて、4週間放置されるみたいな感じ。レビュー予約と自動判定のシステムは一体で、大問ごとに2回レビューを受けると自動判定が走る。レビューの点数はおそらく大して大きくない。レビューを受けたいときは空き枠から選べる。逆に自分がレビューしてもいい時間帯を登録しておくと、システムを通じて勝手に予定が入る。レビューは15分単位で入れられるが、私は15分だと足りなかったから、15分ごとに枠を入れておいて、ブッキングされたら前後の空き枠を消していた。
リアル教室はでっかいパソコン室みたいなのが1個ある。リアル教室はいくつかのパソコン室みたいなのがある。私たちの回はコロナ特例でオンラインで参加できたので、ほとんどいっていない。現在は完全オンラインは不可能らしい。
勝ち方と負け方
落ちた話も受かった話もまあまあブログ記事とかになっているが、
- がんがんググって、
- がんがんコード書いて、
- 遠慮せず質問して、
- がんがんレビュー受けて、
- がんがん他の人のレビューする
- どれが足りなくてもダメ
というのが私が身をもって(不合格になることで)学んだことだ。特に私は時間をかけすぎたことが落ちた理由である。
大問のなかに小問がいくつか入っていて、判定は小問ごとにOK/NGされる。
各大問のうち50%で合格。ただし、一番最初のNGになった小問以降は点数にならないというスパルタ。なので、
- 大問を最後までやるような完璧主義もダメ
- だけど、凡ミスで前半の小問をNGにする注意力のなさもダメ
だと思う(大問最後までやることが、入った後に役に立つ可能性はあるが)。
これでPassしなかったら、NGの問題だけなおして、またレビュー×2、自動判定してもらう。
私が負けたのは、まずレビューのポイント制を理解してなかったこと。完璧主義であったために、提出したコードをながめて、なかなかレビューを受けず、「24時間以内に2レビュー受ける」ルールを守れてなかったことがある。書き終わってfinishボタン押してから「これで大丈夫かな?」とかぐずぐず見直したり、ブッキング入れたのにキャンセルしたり(ポイントが消える)。
これは本当にダメ。
はじめの方は、平気で書いてから4日(24時間以上)とか寝かしていた。これだけは本当に無駄。
私はせまい実家住みなので、夜型なのに、午前0時以降は通話しないと決めていたのだけど、そうするとまともにレビューができなかった。最後の方はあきらめて家族に謝って、午前2時、3時とかにレビューしてましたが、フルタイムは無理でも休日なし毎日6時間程度は必要じゃないかな。
ちなみに、finish(提出)後24時間以上経過ってもレビューが2回終わらないとどうなるかご存じの方はいますか? これまともな人は体験しない結構なレアケースで、どうなるか知らない方もいるだろうが、1レビュー受けた瞬間に自動判定が走って、OK/NGはわかるけど、0点になります。
そんなことばっかりしてたら、お互いの進捗ってよくわからないので、最後の方のチーム戦で組んだ大学生に「え!なんで、そんなところにいるの!こっちはいいから、自分のやって!!」とめっちゃ怒られました。すみません、すみません。
とにかく最初は知識がなくても、Googleで調べたり、同期の人から情報を得るのが上手く、デバッグやレビューを参考に、驚異的な速度で私を追い抜いていって受かった人もいる。
とにかく手が動かないのは許されない。
仕事があったりして、時間がないときは
ちなみに、どうしてもピシン中に時間を確保できない場合は、事前にC言語の勉強、シェル(bash)の勉強をするしかない。
シェル使ったことない、シェルってそもそもなんですか? ってのは論外で、大変な目にあう。
何がなくても、そのくらいの事前準備はした方がいいと思う。
- 主要なコマンド5個くらいかな……の名前とおおまかな機能の暗記。
- あと一般的なオプションや引数の形式(つけかた)。
- 複数のコマンドを組み合わせるやり方とか(いくつかある)
まで、知ってるとスタートダッシュが効くかも。
そしてC言語。
どのような課題か教えることはできないが、海外も含めて42本科の最初には「ft_lib」という課題があるらしい(必修なので、できないと即退学)という記事を読んだけど、まあそういう学校なので、ft_libが何か説明を読んで、なんとなくどういう風に作るか理解できくらいのレベルが、入学を許可されるレベルなんだと思う。
公開情報によれば「ft_lib」は、「libc(glibc)」とかのサブセットを自作するようだ。Cのコンパイラに付属する標準的なツール(関数とか)が入っている「libc」というものがあるんだけど。あと、macOSはUNIXであるから、UNIX基準で勉強すること。
つまり、これから言えるのは、Cに関しては大ざっぱに言って1990年年代前半くらいまでのC言語の教科書に載っているような知識が役立つということ。当然CLI(コマンドライン)のみで、GUIはピシンには出ないとわかる。
ピシンの合格した友人たちが、このft_libでヒーヒー言っているので、もちろん一々ライブラリーの中身を使える必要はない。ただ、ライブラリーってなに? 関数ってなに? では不利になるだろう。
合格者は即ft_libが書けること期待してるわけですからね。
続きを読む