技術の寿命と自分の寿命
Java 2019 == COBOL 2001
1980年代から趣味でPCをいじって、プロとして仕事を始めて17年も経ってくると、ソフトウェアの流行の移り変わりを感じることがある。Javaはすでにピークを過ぎて10年以上が経過し、JVMの上に多数の新言語(Scala, Clojure, Kotlinなど)が育っていった様を見るにつけ、Javaは言語というより環境になったのだなあと感じる。言語としてのJavaは(私は最新情報を追いかけていないので知らないし、私の業務では長らくJava 6の時代を経て最近ようやく8になったばかりだ)旧SunからOracleへそのオーナーが変わった混乱により、あまり進歩していない印象を受ける。Java 8のアロー関数など見ていると、だからどうしたとも思う。これで簡潔に書ける処理(フィルタリングなど)もあれば、forで回したほうがマシなのでは、というケースも散見される。Java 8登場当時、「コードからfor文を全部消してやる!よろしい!ならばLambdaだ(略」のような勘違いが見られたけど、というか平野耕太ってオタクの悪い部分だけを煮染めたような奴だと思ってるんですけど。閑話休題。
Java8におけるLambda構文は、Java 5登場時に for (Integer it : list)
のような拡張for文が書けるようになり、躍起になって旧来のfor文を置き換えていたら、ループ中で配列の添字 i
を使いたい場面に遭遇して諦めた記憶を思い出させる。
そんなに関数型が好きなら、Scalaだとか中途半端な事を言わないで、ClojureのようなLisp系言語を採用すればいい。使用者人口?が少ないのでプログラマーを募集しても集まらないだろうけど。古い言い伝えによれば、アメリカではボストン周辺にLispコミュニティが、日本では越谷レイクタウンの周辺にClojureコミュニティがあるという。
Ruby 2019 == Java 2001
Rubyはどうか。最近、Ruby 3x3だとか言って、速度向上の取り組みをしているそうだ。そのようなプロジェクトに心血を注いでいる人には敬意を払いつつ、しかし1990年代の半ばに皆でバカにしていたJavaScriptが滅法速くなってしまったのを見ると、大切なのは言語設計ではなく、どれだけ金を掛けられるかなのだなあと感じる。JavaScriptを高速化したICT業界の巨人たち、すなわちGoogle, Apple, あと企業じゃないけどMozilla財団のおかげだ。Microsoftは知らん。長すぎたIE6の時代を経てEdgeもChromeベースになるのだから、何をやっているのやら。Microsoftはアメリカのトップ大学で計算機科学の修士だか博士だかを持った、ご立派な方々が掃いて捨てるほどいるというのに、それら「立派な方々」が下す決定がいつも正しいわけではないのだ。彼らもただの人なのだから学問の過尊などやめたらいいのにと思う。Microsoftは15年前のSunのようなポジションになったと思う。オッサン企業相手に商売するだけの。
そう、Ruby。日本のスタートアップ企業の求人を見ると、ほとんどが「Railsエンジニア募集!」なんてやってる。今年2019年なのにね。10年前にRailsを採用して、まだメンテナンスをしているというのなら分かる。しかし1から作るのに採用する技術というのが、少なくとも日本では、いまだにRailsなのだなあと不思議に思う。設計者が日本人だから、日本のコミュニティが成熟しているのだろうか?Railsの設計者はデンマーク人なのだけど。
私の感覚では、Ruby/Railsは15年前のJavaのようなポジションになったように感じる。言語もフレームワークもエコシステムも成熟して、別段面白くない。今どきのスタートアップだったら、「サーバーレスで作る!」とか言わないのだろうか。私などはどうしても「ハッカーと画家」に影響されてしまい、Lispハッカーである著者がその言語の持つパワー、作業効率でJavaやらを採用した同業他社を出し抜いた、これぞスタートアップ!と呼べるような成功物語を見て感動したので、2019年に今更Ruby/Railsを採用するスタートアップなど見るにつけ、「銀行のようなお固い企業なのですか?」と思う。
プログラミングをどうやって教育するのか?
プログラミング未経験者に教育する教室が東京を中心に色々あるようですが、そこではRuby/Railsを教えているらしい。うへえ、こりゃ大変だ。同時にJavaScriptもCSSもHTMLもDBMSも覚えなければならない。そうだ、Terminalの使い方とかも、もしかして知らない?Linuxが台頭してきた時に、当時Anacondaインストーラなども無くて、自分でインストール先のHDDの残り容量を電卓で計算して入力するといった経験をしてこないで、いきなりWebアプリですか?そりゃ大変だ。viとかemacsといった変態エディタで設定ファイルぐらい編集できるようでなければ、サーバーの管理もできないしなあ。今はクラウドとかいってやらなくてもいいのかな。
デザインはどうする?Photoshopとかって使ったことある?私は2.0Jが出たときにいじってるから、最近のバージョンであってもしばらくすればキャッチアップできると思うけど。使ったことない?そりゃ大変だ。
バージョン管理もどうする?Gitとかだよなあ今どきは。あれ、Subversionに比べてメチャ使いづらいと思っているのですが、そんな発言をすると時代について来れないオッサン認定されてしまうので大声では言えない。Mercurialが流行ってほしかったなあ。
開発環境は?今どきはIntelliJなどが定番ですが、この重量級開発環境を覚えるのもまた手間です。VSCodeとかでいいんですかね。あのChrome派生エディタ、重いよね。VSCode 2019 == Emacs 1995と書いておこう。
ところで、世の中の独学でプログラミングを覚えようとする人たちって、なぜ判で押したようにRuby on Railsを学ぼうとして挫折するんですかね?プログラミングスクールが勧めるのが悪いような気がするけど。2005年の、あのデビッド・ハインメイヤー・ハンソン(DHH)による伝説の動画「Railsを使って5分でブログサイトを作る」(だっけ?)を15年後に私達がシロウトさん相手に同じことやってるだけじゃないか。しかも「就職に有利」「21世紀は皆がプログラミングをする時代」とかいう話の尾ひれまでつけて…。さすがのDHHだってそこまで吹かさなかったぞ。
そんな純真無垢で世間知らずな皆様は、判で押したようにWordPressサイトなどを作り、SEOのために目次を書き、最後に「いかがでしたか?」と付け加えるのを忘れず、そしてトップ画像には判で押したようにいらすとやのフリー素材を使うことで当節の「ブログ作法」を満たし、個性を殺してコミュニティの細胞になろうとする。そういった、明文化されていないルールを察する「空気を読む才能」があるから、公務員などぴったりの職業かと思いますが、どうして非効率の代名詞ともいえる公務員を辞めて、公務員と対極に位置する、プログラマーなどという効率化のみが善の職業を目指そうと思ったのかは不明ですが、残念ながら、「プログラマーとしての才能」は、あまり無いようで:
ではこの2019年に、どのプログラミング言語を学んだほうが良いか?答えは簡単、JavaScript。理由は、Webブラウザで唯一動く言語だから。私がこんな世界にしたんじゃありません。インターネットの半分を牛耳るGoogleの力を持ってしても、WebブラウザにDartを持ってくるのは不可能だったじゃないか。
まあ、でも、私にお金をくれるというのなら「21世紀は皆がプログラミングをする時代!Railsを覚えて、このエー・アイ時代(←関係ない)に対応しよう!」とかシロウトさんに吹かしますけど。
技術などプロダクトの10%に過ぎないと思う
上記の技術たちを叩き込んで、精根尽き果てた初心者に追い打ちをかけるようですが、所詮技術などプロダクトの10%ぐらいの重要性しかなく、周囲のメンバーやマネージャ、客先とどのようにプロジェクトを進めるのかの方が重要です。自分の命を守りつつ、仕様策定でクライアントに対して押すところと引くところを見極めるといったスキルの習得にはこれといった教科書は無く経験のみが…と言ったら初心者は帰ってしまうだろうか。
だから、技術ブログなどで常に最新技術を追いかけている皆様を見るにつけ、仕事熱心で結構とは思いますが、偉いなどとはぜんぜん思いません。「ハッカーと画家」など読むと、そういった技術に憧れるのも分かるし、このような仕事をするモチベーション(きっかけ)であるのは私も同じです。でもまあ、この歳になったら、そういうのはカッコいいとは思わない。
仕事など人生の10%に(以下略)
金持ちでも貧乏でも必ず死ぬ。
随想をポエムと呼んで揶揄する人間に永遠の呪いあれ
お前らのことだQiitaの連中。