CS(コンピュータサイエンス)がオンラインで学べるRecursionについてご紹介します。
Recursionさんからレビュー依頼があり、1ヶ月サービスを使わせていただき記事を書きました。
公式のサイトはこちらになります。
Recursionで学習できる内容や実際に「やってみてよかった」ところや、この辺が「イマイチだった」というところについて書いています。
今回、実際にコンテンツとしてやってみたコースは下記になります。
・OOP
・データベース
・デザインパターン
・Django
・React
チーム開発やコミュニティ参加など、他の方とコミュニケーションが必要になるコンテンツについては体験していません。
(※理由としては、1人でもくもくとやりたかったためです…)
後述していますが金額的にもなかなか高いので、コミュニティやチーム開発までしっかりと参加したほうが良いかと思います。
Recursionで学べる内容は?
Recursionで学べる内容について記載します。
Recursionではコンピュータサイエンスの基礎から始まって、プログラミングパラダイムやアルゴリズム&データ構造などを学んでいくことができます。
コンピュータサイエンスとは?
Recursionの公式ページには、下記のように書いています。
コンピュータサイエンス(CS)は、プログラミングやアルゴリズム、ハードウェア・ソフトウェア開発、データ処理などといった計算の理論や情報の処理に関する学問です。
個人的にはコンピュータサイエンスという言葉にあまり聞き覚えがなく、最初は「なんだろう…」と思いました。
コンピュータサイエンスについては、Recursion運営者のShinyaさんが書いた下記の記事に詳しく書いています。
なぜ、プログラミングではなく「コンピュータサイエンス」なのか
プログラミングを始める前に理解しておくと、より高度なものを作れるようになれるということのようです。
私もCSのコースを受講しましたが、中級から難しくなりました。
今回CSの初級・中級・上級をひととおり終わらせましたが、問題などは全て解けていない状態です。
難しいので、本当に初心者の方の場合は1人でやっていくと詰まるかと思いますが、わからない箇所が出てきたらコミュニティで聞きながら進めると良さそうだなと思いました。
コンピュータサイエンスで学べる項目については、下記のようになっています。
・データ
・プリミティブ型
・変数
・関数
■CS中級
・抽象化
・再帰
・スコープ
・制御フロー
・オブジェクト
・リスト
■CS上級
・データ構造入門
・木構造
・ラムダ関数
・ソフトウェアテスト
メモリや2進数の話などが出てきて、専門学校で基本情報技術者を学んでいたときの感じだなーと、ちょっと思い出しながらときました。
プロジェクト開発とは?
今回、私は行いませんでしたが、Recursionではプロジェクト開発をすることもできます。
プロジェクト開発では、実際にコードを書きながら動くものを作成していきます。
その過程で、JavaScriptでのDOM操作や、非同期通信、MVCモデルなどについて学習していきます。
プロジェクト開発で行える内容は下記になります。
タイトル | 作るもの | 学ぶこと |
---|---|---|
User Card App | ユーザープロフィールカードを作成する | JavaScriptのDOM操作 |
Sliders | Webページのスライダーをスクラッチから作成する | JavaScriptのイベントリスナー・イベントでのデータ処理 |
Banking App | 銀行口座のシミュレーションアプリ開発する | JavaScriptでGUIの読み書きなど |
Library App | 本の検索アプリを作成する | JavaScriptのJSON・API・サーバー・アロー関数など |
Black Jack | トランプゲームのブラックジャックをスクラッチから開発する | コードのリファクタリング、拡張、設計が容易になるMVCアーキテクチャ |
File Directory | コマンドラインのファイルディレクトリシステムを作成する | 連結リストや木構造を活用したモデルを設計、CRUD操作ができるファイルディレクトリシステムについて |
プロジェクトでは主な要件と、画面周りは用意されていて、ロジックはユーザーが組み立て作成します。
実際にユーザーの方が作られたブラックジャックが下記になります。
Recursionについてのレビュー
今回、CS初級からデータベース・デザインパターン・Djangoと一通り学習してみましたが、コンピュータサイエンスの内容が一番しっかりしているという印象を受けました。
Recursionのメリットは?
実際に使用させてもらったところ、コンピュータサイエンスの学習教材に重点をおいているように感じました。
コンピュータサイエンスの初級・中級・上級を解いていかないと、後続のツール(LaravelやVue.js、Djangoなど)を学ぶことが不可能になっています。
コンピュータサイエンスを基礎から学べる
コンピュータサイエンスについて、オンラインで学べるようなサービスは他にはないと思います。
コンピュータサイエンスを学びたい方にとっては、最適な学習教材になるのではないでしょうか。
プログラム自体もブラウザ上で実行できるため、開発環境を作る必要がありません。
チーム開発に参加できる
私は参加していませんが、実際にチーム開発に参加できるとのことです。
実際にプログラマーなどで、現場で働く場合にはチームで開発していくので、先に体験できるのは良いなと思います。
チーム開発では、メンター1人とメンバー3人で構成されたチームを作り設計から考えて、1ヵ月でアプリケーションを開発するとのことでした。
実際にRecursionのチームで開発したアプリが、Google Play Storeで公開されています。
リンクはこちらです。アプリは下記のボードゲームアプリケーションです。
コミュニティでいつでも質問が可能
ある程度学んだ方であれば、独学でやっていくことが可能かもしれませんが、初心者の独学は挫折に繋がりがちです。
Recursionでは、その点を防止するために、気軽に質問したりユーザー同士の交流できる場を提供しているとのことです。
有料ユーザー限定のDiscordでは24時間いつでも質問を受け付けているということです。
大体の質問は数時間以内には、他のユーザーから回答があるということで、活発にコミュニティが動いているようです。
すぐに聞ける環境というのは、初心者の方には大切かと思います。
Recursionを利用する場合には是非コミュニティに入りたいですね。
Recursionのデメリットは?
Recursionを使って感じたデメリットについてです。
コンピュータサイエンスに重点をおいているため、特定の言語の使用方法については、あまり深く書かれていません。
特定の言語について深く知りたい場合には、別途、本などを使用して学習する必要がありそうです。
ツールを学びたいだけの場合は辛い
また、Django・Reactなどツールについても受講しましたが、「これを作ってみてね」といった感じでした。
説明については、公式へのリンクのみなので「公式サイトのみで理解して作れる」という方でないと難しそうです。
完成形のコードの掲載もないため、その辺を改善してもらえるとありがたいなーと思いました。
難しく感じるコンテンツがある
私はWebシステムの開発など、10年以上業界に携わっています。
個人的な経験を元にして考えてみると、フレームワークなどを使用してプログラミングで仕事をすることがほとんどです。
そのためRecursionのCS中級や上級でやっているような、高度な内容を使うことはほとんどありませんでした。
普通のプログラマよりも、一段階上の知識を身につけたい方におすすめなのかなと感じました。
コミュニティを使うと良いかも
今回、コミュニティを使いませんでしたが、コミュニティで気軽に聞くこともできるということです。
そのため、上記のような
・ツールについてわからない
・CSの問題が難しい
などの場合は、コミュニティで聞いてみたら解決するのではないでしょうか。
終わりに
今回はRecursionについての紹介とレビューを書きました。
普通のプログラマよりも、もう一段階上に評価されるプログラマになりたい方は是非確認してみてください。
私自身もCS中級・上級の問題が解けずに残っているので、時間があるときには挑戦してみたいと思いました。
コメント