はじめに
「42tokyoってどんなところなの?」
少しずつ知名度があがってきているのか、聞かれることが増えてきた質問。
大学でもプログラミングスクールでもない、なかなか端的に形容することが難しいと感じている42という組織の実態をより手触り感をもって知ってもらえるコンテンツを作りたい。そんな思いでこの記事を書き始めました。
42を知らない友人に「これ読んで!」と共有できる記事になっていたら嬉しいです
42ってどんなところ?
実際に上記の質問を聞かれた時には、公式サイトを見てもらった上で「コンピュータサイエンスの基礎を手を動かしながら学び合える場所」と回答することが多いです。ただ、公式サイトに並ぶのは「エンジニア養成機関」「学費無料」「24時間利用可能」などの文言。42の特異的な側面ではあります。ただ、これで42のリアルな輪郭が伝わるでしょうか。
C言語をベースにメモリやプロセス管理、ネットワークやアルゴリズムを学んでいることは確かなのですが、それだけではないのです。なぜかコアの良さが伝わっている気がしない。
この記事では42の機能的な側面ではなく、空気感を伝えることを優先したいと考えています。そして、42tokyoアドベントカレンダーの最終日にふさわしい、これから42tokyoを知る人に共有したくなる記事となったら本望です。
なお、この記事は自身の体験をもとに作成したストーリーを追いながら、42での1日を追体験できるものとしました。エンジニアの卵たちがどのような生活をしているか、少しでも楽しんでもらえると嬉しいです。
Episode01:登校
それでは早速1日を始めよう。朝の気持ちのいい空気を吸いながら、新宿駅から西側へと歩を進める。新宿中央公園の端にある校舎は今日も特別な場所だ。後ろにたたずむ熊野神社のおかげだろうか。なぜか神聖な場所のように感じる。
学生証をタッチし入校する。今日はどこまで課題を進められるだろうか。階段を登ると広がる、iMacが所狭しと並んだ光景。
今日も頑張ろう。六本木校舎の「ワンフロアで誰がどこにいるか一望できる」環境も大好きだったが、移転してからは部屋が分かれており集中スペースなど用途別に場所を変えられるのが良いところだ。午前は作業に集中しよう。まだ数人しかいない、この朝の空気感が好きだ。
さっそくiMacにログインして、課題を確認する。
昨日はどこまで進めたっけ。今日はどこまで目標に作業しようか。
42には教科書はない。先生もいない。スタッフに聞いてもなにも答えてくれない。最初は「そのくらい教えてくれても」と思うことも多かった。ただ、それでいい。自分で計画を立て、真っ黒なターミナルの画面で表示できるC言語マニュアルページ(通称 man )と、インターネット検索を駆使して課題を進めていく。
ちょっと前までは簡易的なターミナル(シェル)の実装を進めていたが、今はwebサーバを自作している。おっと、少し難解な用語を並べてしまったが、身構えないでほしい。
前者はプログラマが大好きな、コンピュータに命令を打ち込めるアプリケーション。後者はインターネットにアクセスしたときに、画面に描画されるサイト情報などを返してくれるwebのコンテンツ管理係だ。
詳しいことはわからなくても全く問題ない。みんな最初は知らない状態からスタートする。
この課題の最終成果物は何か?どのように実装ステップを分解できるだろうか?
友達に聞いたり、検索したりしてその解像度を少しずつ上げていけばいい。そして、実装できそうな部分が出てきたらそこから手をつければいい。
不思議なもので、書き始めたらだんだん課題の輪郭が見えてきて、気づいたら検索をしていても焦点を絞った調べ物ができてきている。そしてその恩恵を受けて実装もどんどん進んでいくというループに入れたりする。
「前に進んでいる」
この感覚を感じるときに脳汁が溢れるあの感覚は、全プログラマーが賛同してくれるのではないか。
Episode02:お昼休み
気づいたら昼過ぎになっていた。新宿中央公園の紅葉を眺めながら散歩でも行こうかと立ち上がると、同期入学の友達とばったり。ちょうどお互いお腹が空いていたので近くでランチをすることに。もちろん食事の時にも課題や技術について話し込んでしまうこともあるが、どちらかというとプライベートの話に花が咲く。
42は年齢制限がなく多様な世代の方がいらっしゃるのと、かなりコミット量を求められるので、いい意味で変わった人が多い。もちろんプログラマとして飛び抜けて優秀な人も沢山在籍しているのだが、格闘技のプロだったり、元自衛隊や航海士など、普段生活していると出会うことのない方々とお話できて人生の幅が広がる感覚があるのも42の良さかもしれない。あえて誇張して言うと、人類のるつぼ感がある。最近はサラダボウルという表現なんだっけ。
バックグラウンドや所属組織が多様で、セキュリティの大会に出場したり、仲間を集めて起業したり、政府支援に採択されるプロジェクトがあったり。。いろんな方面で活躍されている方が多く、いつも刺激をもらえる環境でもある。
Episode03:プレレビュー
昼食後の眠気対策として、コーヒーを片手に校舎に戻る。午前は集中タイム、午後はコミュニケーションに時間を割くのが個人的なルーティン。午後は友人とお互いの課題のプレレビューをし合う予定だ。友人は厳密さが求められるアルゴリズム系の課題に取り組んでおり、人によって実装方法は多様なのでプレレビューするのが楽しみ。
42では在籍している生徒ランダム2,3人の承認を得て課題の完了となるのだが、その提出にはレビューポイントという対価が必要。自分がレビューしてもらうために、他人のプログラムをレビューすることでレビューポイントが貰えるという仕組みになっている。レビューにはレビューポイントが必要なだけでなく、レビュアーの方の貴重な時間をいただくという背景もあり、可能な限り万全な状態に近づけて提出するために、友人間で事前の確認をし合うが多い。これをプレレビューと呼んでいる。
レビューでは良い意味で意地の悪い仮想敵になりきって、他者が実装したプログラムの穴をつく必要がある。ただ、お互いの成長のためとわかっていても、他者に誤りを指摘されるのは伝え方によっては気持ちの良いものではない。そこも信頼関係あってこそだ。これは入学試験Piscineの価値を強く感じる部分だ。ダテに1ヶ月近く毎日生活していない。同期の絆は絶大である。
最終調整を終え、提出が完了した。レビュアーの方とのマッチングは30分後と表示されている。ちょうど良いので、気分転換にSwitchを立ち上げる。最近友達とは互角の勝負が繰り広げられているので、今日こそは勝ち越したい。
集中している時間が長いと、息抜きを求めるのが人間のサガなのかもしれない。42にはスマブラやマリオカートなどのゲームスペース、ウエイトやスクワットができる筋トレスペース、食事をとりながら団欒できるスペースがコンピュータの並ぶ空間とは別に用意されている。
特に筋トレは血液の循環が促進され、健康増進だけでなく集中力も上がるのでよく利用している。理学療法士の免許を持った友人に効果的かつ体を痛めにくいフォームを教えてもらい、結果がちゃんと見えるようになってからどんどんハマっていっている。自律感の獲得、ホルモンバランスの調整、筋肉の成長など、多方面から自己肯定感が上がる筋トレは万人におすすめできる。
Episode04:レビュー
そんなこんなしていると、気づいたらレビューの時間になっていた。レビュアーの方へ挨拶を皮切りに、簡単な自己紹介に花を咲かせる。相変わらず42には色んな人がいて面白い。今回のレビュアーさんはこの課題に精通しているわけではなかったため、課題要件から実装の工夫まで丁寧に説明する。人のコードをレビューしている時ももちろんだが、自分のプログラムを人に説明するのは本当に力がつく。レビュアーの方の別実装の提案や、実装に関する質問などにより、自分のプログラムの穴が見つかったり、知らなかったより堅牢な実装を知ることができたり。レビューをしたり、してもらったりする仕組みは本当によくできている。42ではピアトゥーピア(Peer to peer)という教え合いに基づく学習を重要視しているのだが、レビューはその機会を強制的に作り出す理にかなっている仕組みである。
プロのレビュアーの方は、少しでも実装にあやがあるとちゃんと指摘してくれたり、学びを促す問いを投げてくれたりする。極めつけはプログラム全体の破壊である。セグフォやメモリリークと呼ばれる、実行時の問題を見つけたり、完全にクラッシュさせたり。クラッシュさせるのが本来の目的ではないのだが、致命的なバグは1つもあってはならないのだ。そのような欠陥を見つけると、もちろん課題は0点、期間を空けて再提出する必要がある。
人情では通過させてあげたくなるシチュエーションも多いが、実務では小さくても穴は穴だ。金融機関のシステム停止や、個人情報の流出に代表されるように、よくがんばりましたでは許されない。基本的には致命的なバグは1つもあってはならないのだ。それを皆が理解し、お互いの成長のためを想って厳しい指摘が飛び交う。この文化はこれからも続いていってほしい。
Episode05:チームMTG
レビューを終えると、指摘していただいたポイントや、自分たちで気が付いたリファクタリングポイントなどを洗い出す。今行っているのはチームで行う課題であるため、チームメンバーと今後のタスク整理と分担を決める。周りも騒がしくなってきた。曜日や季節に寄るが、だいたい夕方15-19時くらいが校舎にいる人数のピークな気がしている。エンジニアは夜型の人も多く、早朝よりは深夜の方が校舎の活気があるイメージだ。
次の提出日を1週間後に定め、それまでの各メンバーのタスクが決まった。同じ課題に取り組むチームメンバーはもちろん、同期やレビュアーの方など、色んな人の力を借りながら出口を見つけていく、この感覚がたまらない。独学や教えられるだけの授業からは身に付けられない、課題解決の過程が身についていく感覚。大局観と実装の細かいところの精緻化を行き来しながら、バランスよくサイクルを回していく。やっている行為はプログラミングかもしれないが、これから学ぶすべての物事に通ずる”学びの基盤”とでも表現すべきことを体得している感覚がある。
Episode06:今日という日の終わり
そろそろ1日が終わる。そんな時に急に目が冴えてきて、いきなり進捗が生まれる。そんな経験を何度もしてきた。この時間は謎に将来のエモい話をしたり、深夜テンションでたわいもない話で盛り上がったり、他の時間帯にはない特別な感覚がある。将来への不安がない人はいない。ただ、それでも目の前に熱中し、今日も前に進む。生きている感覚がする時間帯だ。
気づいたら終電の時間が迫っていた。帰宅方面が同じ友達と丸ノ内線へ走り込み、それぞれの駅で手を振る。明日も頑張ろうな。
家に帰ると、解決できなかった沼のことを考えながら、気づいたら寝落ちしていた。まぁ大丈夫か。果報は寝て待て。夜に難解に感じた問題が、朝起きると大したことなく解決できる経験を何度もしてきた。明日の朝、すっきりした頭が解決してくれることを信じて。
さいごに
ここまでお読みいただきありがとうございました。この記事で伝えたかったことは、最初から一貫して「42は学び方を学べる場所」です。低レイヤー(よりOSに近い)コンピュータサイエンスを学びたくて入学したのですが、より普遍的な概念である学習基礎体力や、関心の育て方、コミュニケーションを通じた学習の密度の上げ方など、これからの人生を彩ってくれる学びのベースを築いてくれました。
プログラミングやったことないけど大丈夫かな。。
理系じゃないから難しいのかな。。
気にしないでください。42は進捗や能力を他人と比べるところではありません。課題や仕組みを通じ、学び合いをする場です。
AI発展の文脈で、「AIがなんでも答えてくれるから、学ぶ必要がなくなる」旨の発言をしばしば耳にしますが、私はかなり懐疑的な見方をしています。学び方を知らない人はAI(ここでは主にテキストベースの生成AI)を使いこなせません。AIの能力を最大限引き出す周辺知識をキャッチアップできません。それにより、適切な回答を返すプロンプトを構築できず、同じAIなのに活用度合いには大きな隔たりがあることは、ここ1-2年で広く浸透した感覚ではないでしょうか。
また、今後技術が発展し、プロンプトをはじめ人間によるインプットのインターフェースに差がつかない発明が起これば、もうそれは知的生産が代替された合図でしょう。それ以降は学びは余暇としての立ち位置になるかもしれませんが、なおさら学ぶ力があった方が日々が楽しくなるのは目に見えているのではないでしょうか。
少しでも興味がある人は、ぜひ飛び込んでみてください。入学にはPiscineという1ヶ月間プログラミングと向き合う時間があるのですが、向いているかどうかはその後に嫌でも分かるはずです。と言いながら、走り切ったら1ヶ月前の何も知らない自分からの大きな成長を感じてのめり込むこと間違いなしです。最初の一歩は苦しいかもしれませんが、振り返ってみると大きな達成感があります。もしこの記事で少しでも42へ興味を持っていただいたあなた。一足先に校舎でお待ちしています。





