ブログ

Progateで学んだことはすぐにアウトプットしないと無駄になる理由

masahide

14年間務めた大手自動車会社を退職 TECH CAMP短期集中コース受講 地元の自社、受託開発企業へ就職 やればできるを発信しています。

プログラミングの入り口として、よくオススメに出てくるのはProgateではないでしょうか。

初心者オススメポイント

  • 面倒な環境構築が不要
  • Webブラウザ上で学習が完結
  • OSに左右されない
  • 初心者向けの解説
  • コードをゴリゴリ書く事ができる

2020年の4月から始めて、テックキャンプ の事前学習〜途中で復習〜卒業後の言語習得と使いたおし、いつもの間にやらLv200になっていました。

 

Progateでプログラミングができるようになるのか?

タイトルにもありますが、アウトプットしないと身につかないと思っています。

なぜなら、web 上でコードをお手本通りに書くだけでは、自走力がつきません。

 

自走力をつけるためにはアウトプット

実際に自分の考えたアプリやサイトをProgateで学んだ知識を元に作成するのが1番の近道です。

考えたものを作るという行為は、Progateを何周もするより遥かに効率が良いです。

でも、何作ったらいいの?
masahide(筆者)
ん〜自分が欲しいなと思うアプリでいいんじゃないかな

参考-僕のアウトプット

  • 学習記録をまとめるサイト作成(HTML / CSS)
  • 数あてゲーム(Ruby)
  • 小1用の計算ゲーム(JAVA)

僕のアウトプットアプリはこんな感じです。

アルゴリズムを学ぶ時は、家族や友人をターゲットにして、『こんなの作ったよ、やってみて』と言ってやってもらうとモチベアップにも繋がります。

実際、最近作ったJAVAの計算ゲームは小1の娘にやってもらい、いろいろ提案をもらいながら改良していきました。

 

Progate2周以上は無意味

Progateは1週できたらすぐに何か『簡単なアプリ、サイト』を作らないと身になりません

Progate学習可能言語(有料含む)

全てを1週するのではなくて、一つの言語に絞って学習するのがいいです。

 

初学者にオススメなロードマップ

参考

  1. HTML / CSS:自分のブログみたいなサイトを作る
  2. 道場サイトを写経してみる(開発環境構築はドットインストール がいいです)
  3. そこで学んだ技術を自分のサイトに使ってみる
  4. Ruby:簡単なアプリを作成してみる
  5. Ruby on Rails:web アプリケーションの作成
  6. JavaScript:自身のサイトに動きをつける
  7. jQuery:ライブラリを使ってスライドショーでもつけてみる

僕が今から学ぶとしたら、こんな感じで学んでいきます。

もちろんこれは一例であり、自分の学びたい言語を習得するのが一番ですが、「とりあえずプログラミング学びたい」という場合は上記の方法を参考にしてみてください。

 

インプットし続ける事が無駄な理由

ProgateでRubyを学んだ後に「まだ、覚えていないかもう一回」と復習し続けるのはな事です。

しかし人間『楽』を続けて、やれることをやり続けても『成長』することありません。

できないことが「やれる!」に『変化』した時にこそ成長できると思います。(偉そうに感じたらごめんなさい)

 

辛くても自分で作ってみるともっと楽しくなる

0→1での開発はとても辛いです。特に新しい言語を学んだ後だと、かっこいいサイトなんか作れません。

Progateで10学んだとしたらアウトプットできるのは1〜2ってとこでしょう。

しかしそこで絶望せずに、作りきってから復習していくことで10に近づいていきます。

 

実際に作ってみた計算アプリ

現在JAVAを学習しているので、ProgateでJAVAを1週して、アプリを作りました。

初期機能

  • 足し算問題の出力
  • ユーザーから値を受け取る
  • 正解であれば『正解です』誤っていれば『ヒントが出力』

1問だけじゃつまんない

引き算もやりたい

と、娘からリクエストを受け、改良(Progateもう1週しました)

改良機能

  • 10問連続出力(正解であれば得点が加算)
  • 足し算、引き算、掛け算を選べる
  • 終了後にもう一度挑戦できる

下図のようなサイクルで学習をしていくのが最効率かと思います。

JAVAの計算アプリコード

実際のコードがこちらになります。

Progate2周してどの程度のアプリが作れるかの指標になれば幸いです。

 

import java.util.Scanner;

public class Main {

// 選択用メソッド
	public static int select(String title) {
		System.out.println(title);
		System.out.println("[0]:たしざんをする");
		System.out.println("[1]:ひきざんをする");
		System.out.println("[2]:かけざんをする");
		System.out.println("[3]:やりません");
		System.out.print("せんたく してください:");
		int number = new Scanner(System.in).nextInt();
		return number;
	}
// 計算式を分岐
	public static void branch(String name, int number) {
		if (number == 0) {
			 Format.calc(name,number);		 
		} else if (number == 1) {
			Format.calc(name,number);
		} else if (number == 2) {
			Format.calc(name,number);
		} else if (number == 3) {
			System.out.println("またきてね");
		} else {
			System.out.println("そんな すうじは ないよ");
		}
	}

	public static void main(String[] args) throws InterruptedException {
		System.out.println("あなたの なまえを おしえてください");
		String name = new Scanner(System.in).next();
		System.out.println("こんにちは" + " " + name);
		
		String start = "テストにちょうせんしますか?";
		String repray = "もう一度挑戦しますか?";
		
		int number = select(start);
		branch(name, number);
		select(repray);
		branch(name, number);
	}
}
import java.util.Random;
import java.util.Scanner;

public class Format {
	public static void calc(String name, int number) {
		long start_point = System.currentTimeMillis();
		int score = 0;
		for(int i = 1; i <= 10; i++) {
			switch (number) {
//	足し算の処理
				case 0:
					int a = new Random().nextInt(9)+1;
					int b = new Random().nextInt(9)+1;
					int answer = a + b;
					
					System.out.println( i + "もんめ");
					System.out.print(a + "+" + b + "=");
					int guess = new Scanner(System.in).nextInt();
					if (guess == answer) {
						System.out.println("だいせいかい");
						score += 10;
					} else {
						System.out.println("まちがいです");
					}
					break;
//	引き算の処理
				case 1:
					int c = new Random().nextInt(5)+5;
					int d = new Random().nextInt(9)+1;
					int answer1 = c - d;
					
					System.out.println( i + "もんめ");
					System.out.print( c + "-" + d + "=");
					int guess1 = new Scanner(System.in).nextInt();
					if (guess1 == answer1) {
						System.out.println("だいせいかい");
						score += 10;
					} else {
						System.out.println("まちがいです");
					}
					break;
//	掛け算の処理
				case 2:
					int e = new Random().nextInt(9)+1;
					int f = new Random().nextInt(9)+1;
					int answer2 = e * f;
					
					System.out.println( i + "もんめ");
					System.out.print(e + "×" + f + "=");
					int guess2 = new Scanner(System.in).nextInt();
					if (guess2 == answer2) {
						System.out.println("だいせいかい");
						score += 10;
					} else {
						System.out.println("まちがいです");
					}
					break;
				}
				
		}
		long end_point = System.currentTimeMillis();
		long time_seconds = (end_point - start_point) / 1000 % 60;
		long time_minutes = (end_point - start_point) / 1000 / 60;
		System.out.println(name + "のスコアは" + score + "てん です");
		if(score == 100) {
			System.out.println("かんぺきだ! まんてんですね");
		} else if (score >= 80) {
			System.out.println("すばらしい そのちょうしです");
		} else if (score >= 40) {
			System.out.println("いいですね");
		} else {
			System.out.println("がんばったね");
		}
		System.out.println("じかんは" + time_minutes + "ふん" + time_seconds + "びょう でした");
	}
	
}

-ブログ
-, ,

© 2020 まさブログ Powered by AFFINGER5