研究者への道 〜プログラミング編 vol.3 学習順序の一例〜

2018.11.27

 

こんにちは、代表の大野です。

 

プログラミングをどうやってはじめたのか、

それによって気づいたこと、学んだことなどを各シリーズの第三回目です。

 

<バックナンバー>
研究者への道 〜プロローグ〜
研究者への道 〜プログラミング編 vol.1 悩むな、はじめろ〜
研究者への道 〜プログラミング編 vol.2 学習方法〜

 

 

第一回では、学習をはじめるには

なんのプログラミング言語からでもいい、と述べましたが

 

今日は僕の学習順序と、果たしてそれがよかったのか

などを紹介していきたいと思います。

 

 

 

|  学習順序

 

僕の場合は、これまで以下のような学習変遷を辿ってきています。

 

①HTML/CSS

②JavaScript / jQuery

③PHP

④MySQL

⑤Python

⑥Vagrant / Docker

⑦LinuxOSの操作

⑧シェルスクリプト

⑨Ruby / Ruby on Rails / Sinatra

⑩C++言語

⑪C言語

⑫SQLite / PostgreSQL / MongoDBとか

⑬Node.js / Express

 

なんか、プログラミング言語と言えるのか

微妙なものまで混じってますが、

それは置いておいて。

 

僕の場合は、まず

 

①HTML/CSS

 

からはじめました。

 

なんでと言われると

あんまり覚えていないんですが、

 

なんかWEBページ作れると

カッコイイとか、

 

そういう単純な理由だった気がします。

 

「これで今日から自分もプログラマー♪」

 

なんて、当時は胸踊らせてはじめたはいいんですが、

 

後日、HTML/CSSは

プログラミング言語ではないと気づき

 

赤っ恥を書いたというのも、

誰もが通る道じゃないでしょうか?(笑)

 

HTMLは、マークアップ言語、

CSSはスタイルシート言語といいます。

 

 

それは、置いておいて、

HTML/CSSというのは、

 

Webサイトのページデザイン・構成を作る言語

と言ったらよいかと思います。

 

とある地方の企業さんで、

 

PDFの画像をアップロードして、

 

WEBサイトと言っている企業さんがいて

衝撃を受けたことがあるんですが、

(はい、すみません、茨城県です)

 

一般的にWebサイトは、

デザイン画像がアップロードされているのではなく

 

HTMLという言語によって、

どの位置に何を表示して、といったことを指定し

 

CSSという言語によって、

色やサイズなどの、デザインを決めていきます。

 

HTMLとCSSができるようになると

ある程度のWEBサイトは、

形にできるのではないかと思います。

 

それで、もっとWEBサイトをカッコよくしたいとか

他社のデザインのこのカッコイイのって

 

どうやってやるのかを探して行くと

自然とJavaScriptとjQueryに

たどり着くことになるでしょう。

 

そうしていくうちに、

今度は、WEBサイトに、「フォーム」を作りたくなり

 

お問い合わせを受けたら、メールを送るとか

掲示板を作るとか (← 古い)

 

データベースに情報を保存するとか

その辺がやりたくなるので

 

サーバーサイド言語のPHPと

データベースのMySQLを学ぶようになります。

 

なので、①〜④は

必然的に通る、既定路線なのかもですね。

 

すると、

PHPってめんどくさい書き方が多いなぁ

と感じるようになり

 

流行りのPythonを触ってみると、

なんと簡単なことか!

とPythonにハマりはじめます。

 

「標準ライブラリ」

というものの素晴らしさに触れ

import、importの嵐ですが、

 

ふとある時、

「黒い画面」から逃れられない自分に気づきます。

 

そう、Macでいえば、

ターミナル

 

Windowsでいえば、

コマンドプロンプト、PowerShellです。

 

①〜④までは、

XAMPPとか、phpMyAdminという

便利なツールが出ているので

 

黒い画面を使わなくても

楽しめちゃうことはできるんですが、

 

Python使ってるあたりから、

だんだん雲行きが怪しくなってきます(笑)

 

僕はmacユーザなので

「ターミナル」になるんですが、

 

UNIXコマンドとか

Linuxの本質がわからないと、

 

いろいろ行き詰まることが

多くなってきてしまいました。

 

ということで、

このあたりから、

GUI系のツールの利用はやめて、

 

極力CUIで操作するように

心がけるようになります。

 

⑥Vagrant / Docker

⑦LinuxOSの操作

⑧シェルスクリプト

 

この辺は、けっこう心折れやすいですよ。

なんたって成果物出ないですからね。

 

HTMLとかCSSだと

作ったら、すぐ形やデザインとして

見れる楽しさがあったのですが、

 

Linuxまわりの操作となると

 

黒い画面と会話して、

 

成功したら無言

失敗したら、大量のエラーコード

 

ですからね。

 

欲求不満なんですよ、きっと。

 

でもこのあたりを学んだころに

一気にエンジニアとしての視界が

開けてくるんだと思います。

 

僕はそうでした。

 

日本という国の中から、東京を見ていたのが

世界地図を見た中での、東京の立ち位置が見えてくるような

 

全体観がついてくるといった感じでしょうか。

 

ターミナルを自由自在に操れて

目をつむりながら、ディレクトリ移動できるようになれば

 

自信もついてきて

「新言語いつでも来いや」

って感じになるので、

 

ここからようやく、

自己学習がはかどるようになります。

 

むしろ、誰かに教えてもらうのとかが

うざったくなってきます。

 

僕は、仕事で必要なプログラミング言語を

当然メインに学習をしていますが、

 

どの言語からやっても

ほんとにいいと思います。

 

かの有名なエンジニアの格言である

 

「なんでもいいんじゃないですか?」

 

がこの辺で理解できてきますので(笑)

 

あとは好きな言語を

どんどん突き詰めていきましょう。

 

ただ、個人的には

やっぱり、C、C++言語は

一度は通ることを、オススメしますね。

 

最近の日本のエンジニアさんだと、

WEB系の仕事が多いことから、

 

Python、Node.jsから

はじめることも多いでしょうが、

 

コンパイラ言語と呼ばれる

C言語とかC++言語は、

 

メモリの考え方が必要になり

これらの習得が、WEB系のプログラミング言語の

理解も深めると思うからです。

 

オブジェクト指向プログラミングもできて

メモリ管理も重要なC++は特にオススメな気がします。

 

ということで

こんな学習変遷をおってきました

という紹介ブログでしたが、

 

いまいまでいくと、仕事で使う

Node.js / Express / Electronあたりをガシガシやっています。

 

その次は、Rustなんかに

手を出してみたいなとも思っています。

 

でもきっと、

業務的な都合で、C#になりそうな予感。 (← 早くJavaやれよ)

 

それでは、また。

 

P.S. Javaやりたいんだけど、なかなか優先順位が上がってこない


Top