プログラミング学習で重要なのは「何を作りたいか」を考えること

こんにちは、tataneです。

先日の記事のアプリを作っていた時に、タイトルのようなことを再確認したので思ってることを書いてみようと思います。

React+Webスクレイピング+Azureでアプリを作ってみた話

 

基礎知識は大事

こんなタイトルで始まりましたが、まず前提条件としてプログラミングの最低限の知識は必要です。

例えばif文やfor文などの存在や使い方を知ることです。何の言語でもいいので1回理解してしまえば他の言語に移行した時に導入が楽になります。

欲を言えば構文自体の暗記だったりどんなメソッドがあるのか覚えるのではなく、プログラムの構築方法やオブジェクト指向などの思想を理解しておくと、どの言語に行ってもさほど苦労することはないのかなと思います。

「Progate」あたりでサクッとやってしまいましょう。

プログラミング初心者がProgateで勉強するべき理由

 

基礎学習の反復では限界がある

先ほども言ったように基礎学習は大事です。でもこれだけだと限界がやって来ます。

僕も例に漏れず最初はProgateを少しやっていたのですが、どんどんコースをクリアして行くにつれ、「レッスンに出てくる簡単な処理は実装できるようになったけど、自分は何を作れるんだろう」と思うんですよね。

ProgateのいいところはUIや解説がすごく親切なところに尽きると思うのですが、その親切さに甘えてしまって、実装方法を教えてもらわないとプログラムが書けない人になってしまうのが怖いです。

ただそこで危機感を持つならいいのですが、良くも悪くもProgateは楽しいので(レベルの概念とか)惰性で続けてしまうことが多いです。

2,3周程度なら素晴らしいことなのですが、レベル上げに専念してしまってひたすらにレッスンを繰り返していると時間が勿体無いなと感じてしまいます。(すごく面白いのはわかるので遊び感覚でやるのは全然いいと思います)

それ以外にも自分も好きなところばかりやってしまって幅広い知識がつかないのも懸念点です。

 

「自分が作りたいもの」を考える

本記事のメインです。

 

今回僕は、「英語の論文の概要を簡単に読みたい」というテーマを決めてアプリを作り始めました。

そうするとこのテーマの実現にはどんな技術が必要なのか調べなければいけないわけで、

「英語を翻訳するにはMicrosoft AzureのAPIが良さそう」とか

「検索かけて概要を抜き出すならPythonを覚えてスクレイピングしないとダメだな」とか

「PythonでAPIを作りたいならFlaskかな」とか

「リアルタイムで反映させるならReactを使おう」と言ったように、今の自分に必要な知識を洗い出すことができます。

エンジニアは情報収集のスキルも大事です、ほんとに。

プログラミング学習の情報収集【初心者向け】

 

ここまで決まったらあとは楽しいものでした。

今までPythonとかAzureには興味があったのですがなかなか手を出せずにいたのがこれが良いきっかけになり、しかも実現したい内容が決まっているのでそこだけ勉強したら良いから効率的なんですよね。

今まではプログラミング言語を勉強しようと思ったら基本的な構文から使うかわからない応用まで…みたいな感じで網羅的にやらなければいけない感じだったのですが(網羅的に勉強することも時には必要です)、今回はスクレイピングがしたい!というだけだったのでSeleniumを用いたサンプルコードの理解のための勉強だけでただただ楽しいだけでした。かかった勉強時間も僅かです。

Azureについても、ただAzureを勉強したい!と言っても使えるサービスが多すぎて混乱してしまうのですが、「翻訳がしたい!」ということが先にあると、Cognitive ServicesのTranslator Text APIの使い方を勉強すれば良いんだな、と絞り込むことができるのですぐに実装できました。

Reactはそこそこやっていたので、あとはさっとフロントを組んで上記の技術でバックエンドを合わせるだけです。

 

こんな感じで作っていたのですが、開発中とても良いなと思っていたことをまとめると

  • モチベーションが高く維持できる
  • 何を勉強すれば良いか迷わない
  • 必要最低限の勉強のため効率的
  • 基礎学習では身につかない幅広い知見を得られる

ということでした。

 

正直プログラミング学習は、覚えても使わない技術が結構多かったりすると思うので、作りたいものが先に来る学習フローはとても効率的なのかなと思います。

エンジニアはみんな全ての知識が必要なわけではありません、Webサービスを作るつもりのない人がRailsを勉強しても恩恵は少ないです。

プログラミング技術以外にも現実的なサービス運用に必要な周辺技術なども学べるのは基本的な学習サービスにはない強みです。

 

「何も作りたいものがない」というのもわかるのですが、エンジニアとして生きていく以上、もし下請けばかりやりたくないのであれば「作りたいものを考える力」もプログラミング技術と同様かそれ以上に必要になってくるスキルだと思うので、それを養う意味でもこの学習方法は良いものだなと思います。

 

最近は何か作ってTwitterなどでシェアすると反応がもらえてすごく嬉しいので、みなさんも何か作ってみてはいかがでしょうか。

 

初めての人にオススメしたいReactの勉強法【初心者向け】