サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

どんなプログラミング言語を最初に学ぶべきか

はじめに

 学校で教えてくれるものや趣味でやるものを別にして、職業としてプログラミングをやっていこうとする場合に、どんなプログラミング言語を最初に学ぶべきか、悩んでいる人も少なくないかと思います。

 その言語は「稼げる」のか?学ぶ上での優位性は?など、気になる点は多いでしょう。

 まず最初に伝えておきたい大切なことがあります。職業としてやっていく場合、必ず複数の言語を使います

 なので「はじめての」言語の選択はあまり重要ではありません。どの言語でもいいので選んで学習を始めて、プログラムを作っていくことに慣れるのがいちばん大切だとサポンテは考えます。

JavaScript

 それでも「最初」は必ずあるわけなので、何が手っ取り早いかというと、JavaScript だと思います。モダンな Web ブラウザがあれば、それだけで始められますし。

複数の言語を使うとはどういうことか

 サポンテはかつて Web 開発の仕事をしていました。そこでは PHPSQL、HTML、JavaScriptCSS など、複数の言語を使用しました。

 職業プロとはそういうものです。様々な技術を組み合わせて、ビジネスの問題を解決する。それが IT 屋さんの仕事です。一つの言語だけ習得・習熟して事足りる世界ではありません。

 「『なにを最初に』はあまり重要でない」と考える理由です。

学習が無駄になることが怖い

 プログラミング言語にも栄枯盛衰があり、せっかく学習した言語が廃れていてしまうことを恐れるあまり、言語選びに慎重になりすぎているかもしれません。

 しかし(職業として)一度作られたものは、結構長い寿命を持ちます。その中には人気がほとんどないために技術者の少ない COBOL のようなものもあります。しかし COBOL で作られたシステムは現役ですし、これからも当面のあいだ稼働し続けるでしょう1。メンテナンスのための技術者も、ずっと必要になります。人気がなくなったからといって、それがすぐに求人がなくなることにつながるわけではありません。

パソコンは必要か

 最近、職業プログラマを希望しながらパソコンに触れたこともないという人が増えているそうです。背景として、いくつかの理由がありそうです。

  • スマホが高機能になったため、一般としてはパソコンが不要になった
  • 貧困が深刻化しており、パソコンの購入は優先順が低いか念頭にない
  • 未経験可という求人や、プログラミングスクールの謳い文句が増えた

 スマホでもプログラミングはできます。しかしスマホだけで業務をやっている会社はありません。

 この記事はあくまで「プログラミング」「職業」としての話をしています。

 「スマホでもできるので、入社したらスマホで仕事をします。パソコンは使いません」と言って採用してくれる会社があれば別ですが、いまのところないかと思います。

 「パソコンは高くて買えない」というのは、そうかもしれません。新卒を除いてそういう場合は、別の職業に就いてパソコンの基本を身につけるという回り道が必要かもしれません。

 「未経験可」については、「未経験」の定義が人によって違うためだと思いますが、あくまで「プログラミングだけが未経験」を表していると思います。プログラミングの外側のパソコンの世界は、すでに習熟できていることが期待されています。そうでないと教えられませんから(これらの話も新卒は別として)。

タッチタイプは必要か

 タッチタイプ(ブラインドタッチ)は必要です。

 確かにできなくても仕事している人はいます。ですが、ごく一握りです。

 タッチタイププログラミング言語の習得よりも、自動車運転免許の取得よりも、ずっと短い時間で習得できます。なおかつ一度習得したそれは、自動車の運転のように自然な技能になり、あなたを生涯支え続けます。反対に、身につけていないと不必要に疲れます。

 習得に便利なタイピングゲームも無料のものを含めてたくさんありますし、これを習得しない選択肢は怠慢に過ぎると思います(あくまで、この職業に限っての話です)。

 今できなくても、仕事を始めたらすぐにゲームも始めましょう。

オブジェクト指向を学ぶべきか

 「オブジェクト指向はもう古い」と言われていることは確かです。

 しかしそれは、オブジェクト指向をすでに理解しているから言えることです

 オブジェクト指向を身につけていない人がそれを言っても、オブジェクト指向のその先の未来には行けません。

 オブジェクト指向による設計は、現実にそぐわなくなってきている技術領域もあります。しかしオブジェクト指向の考え方については、そこかしこに残っています。これからも、その形は変わるかもしれませんが、考え方は残るでしょう。学ぶ必要がないとは、今のところ考えにくいです。

 しかし、オブジェクト指向言語は理解が難しいところもあるので、最初に学ぶべきかと言うとちょっとどうなんだろうな、とは思います。そういう点で、いろいろな書き方ができる JavaScript は、やはり最初には適しているかなとも思います。

JavaScript のその他の利点

 プログラミングをしていると、似たようなコーディングを繰り返すことがあります。初めのうちはスニペットで対処することが多いと思いますが、そのうちにコード自体をプログラムで作りたくなってきます。コードジェネレータですね。

 コードジェネレータを作るツールは何でも良いです。以前は、少ない記述で書ける Perl が人気だったように思います。サポンテは VBA で作っていました。Excel のワークシートに引数を記述してマクロを実行する感じです。

 やがて、こうしたツールをチーム内で共有したいというニーズが出てきます。すると、VBA は途端にめんどくさくなります。ツール自体のメンテナンスやバージョン管理、リリースなど、VBA やったことがある人はわかると思いますが、リリースする方も使う方も面倒なんです。

 JavaScript なら、JSFiddle や CodePen で作ればリンクをメールやチャットで送るだけで簡単に共有できます。共有したメンバーがカスタマイズしたい場合も容易です。

おわりに

 書いてて「貧困の深刻化」はほんとうに深刻だなと思いました。そもそもそんなに稼げる仕事でもないはずなのに、これが「稼げる仕事」と言われる日が来るとは。


  1. COBOL の人気のなさは、今に始まったことではありません。かなり昔から一貫して人気がありません。しかし現役ですし、なくなる気配はありません。これは揺らぎのない実績です。