町外れにある無人の館

そこにはお化けが出るという噂があった

#Progate やってみた感想

なんじゃそりゃ

Progateって知ってますか?まあ知ってるよね

簡単に言えば、ProgateっていうのはプログラミングをWeb上で学習できるサービスのことです。アプリ版もあるよ!

ある程度までは無料でできるんですが、全コースやろうとすると有料になってきます。それがなんやかんやしたら無料で全コースできるようになったので早速試してみました!その感想を話していきまーす。ゆるくいきましょ

ちなみにタイトルに#がついてるのはTwitterで共有したときにハッシュタグにするためだよ。

[追記]
各コースごとの感想をまとめた記事も書きました!

やったこと

Progateでやったコース
Progateでやったコース
画像縦に長いと見にくいなオイ

というわけで

をやりました。

レベル
レベルは217まで上がりました。なるほどな? まあ結構な具合でやったとは思います。デイリーランキングで2位、ウィークリーランキングで3位になったからね

実際どうなの

結論から言いますと

全くプログラミングに触ったことない人が初学でやるには課金する価値があるとても良いコンテンツ
でも、個人的には課金してまでやることではないなあ...

的な感想を持ちました。具体的なメリット/デメリットを挙げながら説明したーい!

メリット

メリットはめっちゃあるので1つずつ紹介していきます。

1. 資料が丁寧でわかりやすい

これはなにか学習しようってなったときに一番気にするポイントだよね。

f:id:bo_yakitarako:20200810153912p:plain
資料

学習資料はこんな感じのやつが画面いっぱいに出てきて、これがスライド形式に何枚か繋がって出来ています。

実装していく上での重要なポイントを抑えてしっかり教えてくれます。最低限に必要なものを簡潔に伝えてるので見やすいしわかりやすい!

俺がプログラミング初めてじゃないからわかりやすいって思うだけかもしれないけど、多分初学者の人にとってもわかりやすいよ。きっと。いや、そうであって。これでわかんない人は諦めて

2. 自分で実装したものの結果がすぐ見える

プログラミングの開発環境ってコマンドで済むこと(CUI)なら実行のショートカットキーッターンッ!とか実行ボタンポチーッ!ですぐ見れるんですが、実際のWebページ作ったりアプリを作ったりするとなるとコンパイルしてブラウザとかで結果見るってなるんで、一旦開発エディタから離れることがちょこちょこあったりします(デュアルディスプレイとか出力を内蔵してるエディタとかなら離れず見れるけど、そういうことは言わんといて)

これがまあまあダルくなってくるんですが、Progateは1ページ内に

  • エディタ
  • 実装したやつの出力
  • 目指すことになるお手本の出力
  • 課題内容

が収まってて、オールインワンです。 f:id:bo_yakitarako:20200810155917p:plain

結果がすぐ見れると、やってて楽しさがアゲぽよになる人は多いでしょう。モチベの維持の観点からもこういうのはありがたいですね

3. 実装する内容がリアルで、達成感がすごい

PHPでは

f:id:bo_yakitarako:20200810161459p:plain

こんな感じのお料理注文画面を制作しますし、Ruby on Railsでは

f:id:bo_yakitarako:20200810162253p:plain

こんな感じの簡易的なSNSサービスを制作しながらプログラミングを学びます。

学んでいる言語とあまり関係ないHTMLやCSSは用意してくれて、自分で実装するのはロジックの部分のみです。見た目作るのダルいからこの辺をやってくれて学ぶべきところに集中できるのは良いですね!

簡易的なものなら自分でも作ることができるんだと実感できることも達成感や自信に繋がるでしょう。

4. 開発環境を用意する手間のなさ

プログラミングって開発環境を用意するのがとても面倒なことが多くて面倒です(至言)

Progateは開発環境が用意された状態で学習を始めることができます。そんな用意の手間なんてありません。

プログラミングやったことない人がプログラミングをやってみようとして挫折する最初の大きなポイントは開発環境の整備ですよね。それをやらなくていいだけでもデカすぎます。

5. 経験値やレベル、ランキングが楽しい

上のほうでもレベルだの言ってますが、この概念がとても楽しいです。やればやるだけレベルがどんどん上がりますし、それに応じてランキングもどんどん上がっていきます。

俺はもう完全にレベリング感覚でProgateやってたまであります。ProgateはRPGです。

6. 安い

プログラミングスクールなんかは受講にウン十万かかりますし、言語の入門書籍も1冊辺り数千円かかり、1冊だけでできるようになることは少ないので実際にサービスを作れるようになるための言語やスキルの習得にはウン万円はかかりるでしょう。

ところが、Progateの場合は月額980円です。HTML/CSSJavaScriptPythonRubyPHPJavaなどなど様々なコースが用意されてたったの980円です。月額なので数年単位でやるとそれだけお金はかかりますが、1ヶ月や数ヶ月単位でやれば数千円で済みます。

これは「安すぎてヤスリになったわね🔨」と言いたくなるレベルです。すごい

デメリット

メリットでめっちゃ褒めてきましたが、「課金してまではやることではないなあ...」と思うには当然のデメリットも存在します。

1. 内容がガチで初心者向けしかない

一応コース内で初級編とか上級編とかで難易度分けが存在して、後半になれば上級にっていう流れがありますが、ぶっちゃけ全部初級編にしか見えません。

挑戦課題!みたいなので吠えるのはせいぜいFizzBuzz程度です。「道場コース」っていうそれまでやってきたことをあまり指示受けずになるたけ自分で頑張るみたいなやつも用意されてるんですが、それも所詮それまでやってきたことをなぞるだけです。

プログラミングでよく言われる「論理的思考」はほとんどやりません。用意されたものを指示通り書いていくだけです。実際はどうやるか考えることも大事だと思うんだけどなあ...

2. 紹介された書き方しか許さない

これはかなりのイラつきポイントでした。同じ出力を得るのに様々な書き方があるのに、スライド資料で紹介した書き方でしか許されません。

例えば、Pythonではf-stringやstr.formatの使用は紹介してないので使えません。なので

length = 1.7
print('身長は' + str(length) + 'mです')

この書き方でやっとクリア判定になります。マジでめんどいし、

f'身長は{length}mです'

って書かせてくれよ

PHPではこんなこともありました。多分初期値1からfor文回して数値を出力するみたいなやつです f:id:bo_yakitarako:20200810170753p:plain

資料では右のように初期値を1としていました。でもfor文で初期値1、条件に<=というのは気持ち悪くないですか?for文中の$iは"index"という意味を持つ変数であると解釈します。当然0スタートなので普段通りに0からやってみたらダメって言われるんです。

上で挙げたやつ以外でも同じような場面にたくさん遭遇しました。なんか小学校の先生が教えたこと以外でやったらバツにするからね!ってやつを想起させて嫌悪感を抱きました。初学者にはあんまり関係ないのかなぁ...

3. 紹介する内容が少なすぎる

JavaRubyPythonなどの言語紹介のコースでは出力や変数や条件分岐、繰り返し、配列といったプログラミングの基礎的なことをやりつつ、オブジェクト指向の説明なんかも交えていました。

それにしても全然踏み込んでいかないんですよ。そこはもっといっとけよ!ってとこに手が届いてないんですよ。

例えば、三項演算子再帰関数は全然やりません。まあそのへんは初学者には難しいのでわかるとしても、例外処理もやらないんですよ。exception投げるとかtry-catchもやらないんですよ。

Rubyはやったことないので深いところまでわからないんですが、調べたら繰り返しはforやwhileなんかはもちろんuntilなんかあるんですね。おもろい。でも、紹介されたのは配列のeachでの繰り返しだけです。確かに配列操作して繰り返しってことが多いっちゃ多いですが、それしか言わないのどうなん?って感じました。

Javaではinterfaceのこと何も言わなかったり、Pythonではタプルの話とか一切なかったり、JavaScript(ES6)もPromiseの非同期の話やスプレッド構文が出てこなかったりと、結構はしょってます。

内容の少なさとは逸れますが、JavaScript(ES6)に関してはletconstの扱いに少し疑問を感じました。

Progateではletは変数!constは定数!と言ってletconstを識別しています。「定数〇〇を定義してください」なんて言うんです。

まあよく肥えたフロントエンドエンジニアのみなさんならこんなこと言われたらツッコみたくなりますよね?なって。なってくれないと俺が恥ずかしい。

f:id:bo_yakitarako:20200810174548p:plain
constの説明

letconstも変数だし、constは再代入不可です。定数ではないです。値が更新できないなんて言ったらオブジェクトリテラルとか配列で変更できるのなんなん?ってなるでしょう(その話が出てきたら普通にconstで値更新してた)。このへんは下に小さくとかでいいんでちゃんと紹介してほしいですね。

4. エディタが貧弱

これはVS CodeEclipse、PyCharmといったIDEで慣れきってしまった弊害ではありますが、エディタがなんもしてくれなくて辛かったです。

プログラミングするときのエディタの機能ってめっちゃ大事ですやん。入力補完で変数名やメソッド名を間違えずに入力できるし、自動でインポートしたり、崩れたインデントを直したり、他にもなんか色々してくれるエディタの機能を使わないで開発してるプログラマーはほぼいないですよ。

学習ごときにそこまで必要ないでしょ...って俺も最初思って受け入れてたんですが、変数とかメソッドの名前をめちゃくちゃちゃんと付けるお陰でタイプミスしまくってシンタックスエラーを何回も繰り返してるうちにそんな思いは消え失せました。イライラはどんどん溜まっていきました。

命名しっかりやるのはとても好感持てるんですが、それってエディタの機能で補完してくれるのが前提の話じゃないの...

5. Web系に偏りすぎている

現代の市場とかよくわからないんですが、なんで未経験からプログラマーっていう謳い文句はだいたいWeb系への道になるんでしょうか?

そんな感じでなんか初学となるとWeb系っていう関係なのかProgateで紹介されてる言語や技術は全てWeb系です。

組み込み系、アプリ系、ゲーム関連のプログラミング技術はまず学べません。

個人的にはC++C#、Rust辺りが分かりやすく紹介されてたらいいのになあって思います。でもこの辺になるとポインタとかメモリ管理とか難しいから初学者向けではないんだよな...あれ?さっきの問いの答え出たやん!やったー

え?React紹介されてるしReact Nativeに繋がるかもしれないだろだって?さてはテメー捻くれてるな?

6. Web系に偏ってるのにWebのフレームワークRuby on Railsしかない

Reactはライブラリだょ。。。

タイトル通りに、WebのフレームワークRuby on Railsしかありません。せっかくPHPPythonJavaScriptがあるのにLaravel、Codeigniter、CakePHPDjangoといったMVCフレームワークや、AngularやVue.jsといったフロントエンドのフレームワークもありません。

まあこれに関しては「教える側が大変になる」っていうことが関係してくると思うんですよね。言語仕様そのものは言語間で書き方が違うだけで概念的には共通している部分が多いですが、フレームワークとなるとフレームワークごとに独自の仕様持ってて全て用意するのはめっちゃ大変そうです。

さらに、フレームワークとなると実践的になるんで当然なんらかのアプリ作りながらとなるでしょう。その大元のアプリ用意するのも大変そうですね。RailsSNSモドキはめっちゃよくできてましたし、それ作るためのレッスンの数も多くなってました。他のコースのレッスンの数はだいたい4〜7個くらいなのにRailsだけ15個もあります。学習コストが低いと言われるRailsですらこれなので、Angularとかやり出したらもう大変そう。

あとは、単純にフレームワークの習得って難しいですよね。フレームワークじゃないけどReactをやったときマジで難しすぎて麦になったもん。特にredux-saga、テメーはジェネレータ関数とかいうクソムズ概念引っさげてやってきてんじゃねぇ。未だによく分かってねえからな。

そんなのを初学者にやらせたら挫折率が急上昇してトレンド入りするくらいですよね。失礼しました。

まあでもRailsしか無いのは事実なのでもっとモダンな技術をやろうと思うならProgateは不適切でしょう。Rubyはオワコンだから早くなんとかして対応しなさーい!

総評

メリットのところで言及したように、Progateには良いところがたくさんあります。Twitterで #Progate のハッシュタグを見ると、たくさんの人がProgateを使って学習している様子が見受けられます。そうなるだけのコンテンツ力がProgateにはあると言えます。

しかし、基本的に学習内容は「 Web系プログラミングの触り程度 」ということに限定されます。#Progate のハッシュタグ見ても意識高そうな初学者の方々ばっかりです。ある程度プログラミングに精通したエンジニアが新しい技術を学ぶ場所には到底なり得ないと思います。あくまでプログラミングやったことない人が初めてプログラミングに触れてみる場所、ということですね。Progateのレベルが上がったからといってなんらかのサービスが作れるようになるとも到底思えません。

課金するまでもない、というのは触り程度に限定されるProgateで紹介されているものがググって情報をゲットできる範囲から脱しないためです。

Progateは誰でも分かりやすく作られていると言えます。しかし、言い換えればそれは誰でも分かるような簡単な情報しか無いということです。ググれば手に入ります。そんなものに金払うのアホくさいですよ。これに金払って時間溶かすならもっとモダンな技術を習得して新しいサービスを能率的に作るほうがよっぽど有意義です。

ほいじゃ以上、したっけ〜