コンピュータサイエンスが学べるRecursion(リカージョン)とは?サービスの特徴やカリキュラムを解説します。

プログラミングを始めよう。

そう思ったらまずはコンピュータサイエンスを学習してみませんか?

コンピュータサイエンスとは、一言でいうとコンピュータに関する学問。現代社会ではあらゆる場所でコンピュータサイエンスによる成果が活用されています。


例えば、

  • ECサイトで在庫状況、運搬状況、距離、注文時間等に応じて、当日配達のアルゴリズムを開発する
  • 顧客密度、よく使われる道路や人気の目的地、設置費用、維持費用などから、電気自動車用の新しい充電ステーションを最適に配置する
  • 突然変異、遺伝子再集合を予測して感染症パンデミックのシミュレーションを行う

のように、PCやスマホだけでなくネットショッピングから学術研究までコンピュータが使われており、コンピュータサイエンスによって私たちの生活が成り立っていると言っても過言ではありません。


コンピュータサイエンスによる技術の発展を受けて、アメリカでは国策としてコンピュータサイエンス教育に力を入れています。「Computer Science for All」と呼ばれ3か年計画で40億ドルもの資金が投入されたことが当時話題になりました。

日本でもプログラミング教育への関心は高まりつつあります。しかし、コンピュータサイエンスはまだあまり認知されておらず、学習できる場も限られているのが現状です。

そこでRecursionは、コンピュータサイエンスを日本語で学習できる環境を提供することにしました。MITやスタンフォード大学などアメリカの大学で取りれられているようなコンピュータサイエンスのカリキュラムを日本にいながら学ぶことができます。


この記事ではRecursionについて、

  • どのようなカリキュラムなのか知りたい方
  • 料金や登録方法について知りたい方
  • Recursionで学習すると何がいいのか知りたい方

のために、Recursionの詳しい特徴、料金や登録方法、学習後に得られるスキルについても具体的に解説しています。

Recursionの特徴

Recursionには3つの大きな特徴があります。

  1. コンピュータサイエンスを日本語で学習できるカリキュラム
  2. 自分で考えて手を動かす大量のアウトプット課題
  3. 充実の学習サポートと仲間づくりができるコミュニティ

まずはこれらの特徴について詳しく説明していきます。

1. コンピュータサイエンスを日本語で学習できるカリキュラム

Recursionはプログラミングだけではなくコンピュータサイエンスを学習できるプラットフォームです。

「プログラミングとコンピュータサイエンスって何が違うの?」と思われているかもしれませんが、プログラミングはコンピュータサイエンスの幅広い分野のうちの1つでしかありません。

アメリカでのプログラミング教育は、コンピュータサイエンスを学習するための入り口という位置づけになっています。日本でも小学校の学習指導要領にプログラミングが盛り込まれたり、数々のプログラミングスクールが登場したりなど、アメリカ同様にプログラミング教育に対する関心が高まっていますが、コンピュータサイエンスよりもプログラミングに偏っている傾向があります。

コンピュータサイエンスを理解しないままプログラミングを学習してしまうこの状況は、学習者にとって良くない事態を招いてしまう可能性があります。

  • プログラミングがなぜ動くのかを理解できず自力での設計ができない
  • ドキュメンテーションが理解できず、使い方の検索に時間を要してしまう
  • 基礎を理解していないので、新しい言語に遭遇した時の学習コストが高くなる

コンピュータサイエンスを知らなくてもプログラミングを書くことはできますが、そのスキルだけではプログラミング学習者が増え始めているこれからの時代に勝ち残っていくことは難しくなるでしょう。


逆に言えばコンピュータサイエンスの知識があることで優秀なエンジニアとして市場価値が高まり、学習者のその後の選択肢を増やすことにつながります。

  • 特定のフレームワークに頼らずとも高度なソフトウェア開発ができる
  • 言語に依存しない基礎力を身につけることができる
  • 基礎を理解しているので専門書、ドキュメンテーションなどは簡単に読める

他にも、経済や生命科学の知識があればそれらと掛け合わせて新しい研究に活かせますし、GoogleやFacebookなどコンピュータサイエンスの知識を高く評価している有名企業への採用面接でも十分戦える力が身につくでしょう。


Recursionでは、コンピュータサイエンスの基礎として「データとは何か」というところから学習を始めます。これは、一般的なプログラミング学習サイトが「まずは『Hello World』を表示させましょう」から始めるのとは全く異なるスタートです。全てのソフトウェアはデータと関数で構成されており、データは何かを最初に理解しておくことはとても重要なことなのです。

コンピューターの世界では、すべてのデータを0と1の2進数で表しています。Hello Worldを表示するのは数行のコードを実行するだけなので、とても簡単に見えるかもしれませんが、実際には文字を2進数で表し、さらに文字のつながりを配列やリストのデータ構造で文字列として表した上でコンソール上に表示する関数を使うなど、とても複雑な処理を行っています。

これらの詳細な説明を省略して、上辺だけの学習をしていては応用力は身に付きません。


Recursionのカリキュラムは、データや変数から始まり、再帰、制御フロー、オブジェクト、配列、木構造、連結リスト、ラムダ関数、オブジェクト指向、デザインパターンなど、基本から丁寧に学ぶことができ、難解な学問であるコンピュータサイエンスを理解しやすい構成になっています。

このカリキュラムはMITやスタンフォード大学などアメリカの大学で取り入れられている教育課程をもとに作成された信頼性の高いRecursionオリジナルのカリキュラムです。

2. 自分で考えて手を動かす大量のアウトプット課題

動画を見るだけ、本を読むだけのインプット学習では、全体の5%程度しか定着しないと言われています。自分で考え、手を動かすアウトプット学習がなければ、学んだ知識を定着させることができません。

スポーツで例えると、テニスのルールブックを読んでもテニスはできるようになりません。ラケットを振ったりボールを打ち返したり、実際に体を動かしてみないと学べないことがあります。さらにプロテニスプレイヤーを目指そうと思ったら、ただ打ち返すだけでは試合に勝てません。戦略や技術の習得が必要になってきます。

プログラミングの場合も同じです。動画を見たり、本を読んだりしただけではプログラミングを書くことは出来ませんし、さらに優秀なプログラマーになりたかったら、選択式や穴埋め、模写するだけの学習ではなく、自分で考えて開発する力が必要になります。

Recursionではインプット学習の後に、必ずコーディング問題、プロジェクトといったアウトプット課題に取り組みます。それでは、具体的にRecursionでどのように学習するのか、トランプゲームのブラックジャックを開発する工程を使って説明します。

コンテンツを読んで内容を理解する

まずは中級コースで関数を抽象化して再利用する方法や、forループなどの制御フロー、配列、オブジェクトなどについての説明を読むインプット学習を行います。

コードの書き方、文法は、プログラミング言語によって変わりますから覚える必要は全くありません。しかし、その概念はしっかりと理解しなければなりません。ただ書き方を覚えただけでは、応用することができないからです。

セクションごとの課題は環境構築不要の専用エディターでアウトプット

新しい構文、メソッドなどが登場する度に、使い方とその動きを確認できる専用エディターで確認します。ここではコード例の紹介だけでなく、簡単な課題に取り組んで学んだことをすぐにアウトプットできます。

Recursionでは煩わしい環境構築を省略するために専用のエディターを用意しています。環境構築の難しさは、初心者が躓きやすい要因の1つ。ネットに情報は溢れていますが、OS、バージョンなどの前提条件が違ったり、表示される画面が違ったりすると思うように構築できず、無駄な時間を取られてしまいます。

Recursionは、コンテンツ、練習問題、プロジェクトなど、すべてRecursionのシステムで完結させることができるので環境構築をする必要がなく、コンピュータサイエンスの学習に集中して取り組むことができます。

コーディング問題を解いて勝利アルゴリズムを作成

コーディング問題では、ブラックジャックの勝利アルゴリズムを考えます。

  • プレイヤーの手札の合計値が 21 を超えている場合はプレイヤーの敗北
  • ディーラーの手札の合計値が 22 未満でかつプレイヤーのカードの合計値より大きければ、プレイヤーの敗北
  • ドローだった場合もプレイヤーの敗北

などのブラックジャックのルールに合わせ、コンテンツで学習したfor文、配列、関数の分解などを応用させて勝利判定をする関数を作成します。分からない時には、ヒントを見たりDiscordコミュニティで質問したりできますが、自力で答えを導き出すまで解答例を見ることはできません。

トランプゲームを設計していく過程を学ぶ

14の工程に分けてトランプゲームを設計していきます。


(1) 1枚分のカードを表す設計図としてクラスCardを作る

(2) for文と配列で絵と数字を組み合わせた合計52枚のカードを作る

(3) デッキにあるカードを表示する処理を作る

(4) カードをシャッフルする処理を作る

(5) シャッフルできたかコンソール上に表示する

(6) デッキからカードを1枚ずつドローする処理を作る

(7) ディーラークラスを作り、カードをプレイヤー全員に配る処理を作る

(8) ポーカーにも対応できるようコードを拡張する

(9) ゲームの種類やプレーヤーの人数、手札を表示する

(10) プレイヤーの手札からスコアを計算する処理を作成する

(11) 誰が最も多いスコアを獲得したかを返す処理を作成する

(12) キャッシュを使って効率よく勝者を表示する処理を作成する

(13) ゲームの種類によってカードの値を変えられるようにする

(14) ゲームの種類によって勝利条件を変更する処理を作成して完成


この段階では見本コードを見ながら学習できます。Recursionのカリキュラムは、Facebook社在籍の現役ソフトウェアエンジニアが作成しています。シリコンバレーで活躍するエンジニアが書くコードを日本語で学習できる機会は、他ではなかなか経験できません。この点はRecrusionの大きな特徴の1つと言えます。

お手本を見てロジックを理解したら、練習場として用意しているエディターを使って手本を見ずに自分で考えながら作成していきます。

プロジェクトでゲームを完成させる

プロジェクトではソフトウェアの設計を学び、ブラックジャックを実際にWebアプリとして遊べるように完成させます。

チップを賭けたり、カードをもう一枚引いたりといったユーザーの行動を受け取って、それを画面に反映させます。また、プレイヤーやハウスが持つ手札やチップの残りによって挙動を変更するCPUを考え、ターンが終わってもゲームの状態を保存しておかなければいけません。


ゲームの設計を作り、GUI(ゲーム画面の見た目)を完成させ、これらをつなげたらブラックジャックの完成です。

Recursionのプロジェクトは、ポートフォリオとして使用することができますので、就活中、転職活動中の方はぜひ活用してください。多くのRecursionユーザーが、GitHubなどで作成したプロジェクトを公開されています。

Recursionのプロジェクトを使って文系から有名企業の内定獲得|もーよんさんインタビュー

3. 充実の学習サポートと仲間づくりができるコミュニティ

プログラミング学習者の9割は挫折を経験すると言われています。その理由としてオンライン、独学では孤独になってしまうこと、行き詰っても質問できないことがあげられます。

Recursionでは学習サポートとユーザー同士のコミュニケーションを目的としてコミュニティを用意しています。

Discordコミュニティ

Discordコミュニティでは、コースごとに分かれたチャンネルが用意されています。もし行き詰ってしまったら、該当のチャンネルに質問を書き込んでみましょう。わかりやすいヒントやアドバイスがもらえるはずです。

コンテンツの内容以外のやり取りも活発で、ハッカソンやisuconに参加してくれるメンバーを探したり、おすすめのキーボード、モニターについて質問したりと、ユーザー同士の交流の場として活用いただいています。

Twitter

練習問題やプロジェクトが完成したら、Twitterのアイコンをクリックしてツイートしましょう。

#RecursionCSのタグで、Recursionユーザーのアカウントを簡単に見つけることができます。お互いにフォローして学習の成果を披露したり、何気ない会話を楽しんだりしましょう。

oVice

みんなで集まってもくもくと自分の課題に取り組む「もくもく会」を定期的に開催しています。

50分作業して10分休憩を2回、合計約2時間の会です。作業時間は課題に集中し、休憩時間にまわりの人と話したり質問したりします。「人の目があると集中できる」、「休憩時間のコミュニケーションが楽しい」と評判がよく、毎回たくさんのユーザーが参加される人気の会になっています。


もくもく会が開催されていない時は自習室として有料会員に開放されています。

サイレントルームで1人静かに作業したり、チャットルームで会話したり、音楽を聴きながら作業したりなど自由に利用することができます。ミーティングルームでは、メンターシッププログラムのメンバーが集まって画面共有しながらチーム開発をするなど活用いただいてます。

メンターシッププログラム

メンターシッププログラムとは、Recursion中級者と上級者で1つのグループを作り、チーム開発を通じてユーザーがRecursionにより馴染みやすくするためのプログラムです。

1チーム1人のメンターと3人のメンティーで構成され、1ヶ月かけて1つのプロジェクトを一緒に完成させます。Recursionで交流関係を作り、モチベーションを保ちつつ上級者へ到達することを目的としています。

大規模なプロジェクトになるほどチームワークが大切で、就職活動でもコミュニケーション力を重要視される場合があります。メンターシッププログラムを通じてチーム開発の経験を積んでおくことは、アピールの1つになるでしょう。

Recursionの登録方法と料金

Recursionを利用するには会員登録する必要があります。


登録に必要なのは、

  • ユーザー名
  • Eメールアドレス
  • パスワード

の3つだけです。本名や住所などは必要ありません。利用規約とプライバシーポリシーをお読みになってからご登録をよろしくお願いします。


無料会員になると、Recursionのカリキュラムのうち、初級コースとHTML&CSSコースのすべてを体験することができます。この2つのコースだけでも、カリキュラムページ数は80ページ、コーディング問題25問あり、学習時間の目安は45時間になります。

Recursion 有料プランテーブル

豊富なコンテンツをしっかり試してから、有料会員になるかご検討いただければと思います。

Recursionは現在620時間分のカリキュラムと340問のコーディング問題を用意しています。今後も対応言語を増やしたり、フレームワークのコースを開設したり、スピード感を持ってコンテンツを増やしていく予定です。


月額プランもしくは年額プランへ登録していただきますと、これら膨大なコンテンツを受講し放題になります。

  • 月額プラン…61ドル/月
  • 年額プラン…588ドル/年

年額プランはひと月あたりに換算すると49ドルになり、144ドル分もお得に受講できます。無料会員と有料会員で受けられるサービスの違いについて、詳しくはこちらのページで説明していますので、ご一読ください。

Recursionであなたが進む未来とは

未経験からソフトウェアエンジニアとして転職した方や有名企業の開発エンジニアとして就職した方など、Recursionユーザーの中にも徐々に新しい一歩を踏み出した方が増え始めています。就活のために取り組んだことや、これから就活する人へのアドバイスを伺っていますので、詳しくは転職成功者へのインタビュー記事をご覧ください。


最後に、Recursionは簡単ではありません。

短期集中で簡単に得られるようなスキルでは差別化することはできませんし、自分の市場価値を高め、好条件を勝ち取るにはより深い知識と経験が必要だからです。たった1人で進むには困難な道のりでも、正しい知識を持って誘導できるメンターと、ともに学び励ましあえる仲間がいれば乗り越えることができます。

Recursionはあなたのメンターとなり、仲間とともに学習できる環境を提供します。


1000時間を超える学習を乗り越えた後は、フロントエンドエンジニア、バックエンドエンジニア、データサイエンティストなど、コンピュータサイエンスに関わるあらゆる職種への選択肢が広がっていることに気づくでしょう。

Recursionは最高の環境を用意して、あなたの冒険を応援し続けます。

Leave a Comment

Your email address will not be published. Required fields are marked *