研究者への道 〜プログラミング編 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やりたいんだけど、なかなか優先順位が上がってこない
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io