タオルケット体操

サツバツいんたーねっとでゲームとかガジェットのレビューとかをします

今後必要になる言語や大統一言語や学習効率についてのあれこれ

Sponsored link

今後必要になる言語はお前がどういうキャリアパスを辿りたいかによって変わる。以上。
場所によってはCもCOBOLもまだ現役だし、パチンコの制御基板はアセンブラだ(確か)。そもそもPythonだってそろそろ30年選手の言語なわけだ。その影で消えていった言語は無数にあるが、優劣だけが原因で消えたわけではない。未来を予想できる人間はさっさと投資家にでもなったほうがいい。

「今後必要になる〜〜」系の記事が定期的に話題にのぼるが、こういう話を真に受けて「参考になるぜ…」とかおもってしまう人は非常に危うい。むしろヤーヤー野次馬したり、それを諌めるなどして火遊びをするオタクのほうが賢明な可能性もある*1
理由は簡単で、今後何がどう必要になるかは人それぞれの選択に応じて変わる。なので、たとえば仮に件のQiita記事の内容ががまともだったとしても参考に値しない。むしろ重要なのは、今後どういうものが自分にとって必要なのかを自分で見極める能力そのものだ。そして見極めたものを実際に習得する実力も、当然必要になる。

そういう意味で、その手の流行りを語る記事全てが完全に無意味だとは言わない。例えばいわゆるWeb業界でサヴァイブしたいのであればマジョリティを占めるアーキテクチャに詳しいほうが仕事を得やすいだろう。あるいはまだそこまで需要が発生していない技術をキャッチアップしてセルフマーケティングしていくのも有効な手立てになる。
ただしここでもまた見逃してはならないメタ視点がある。「流行りに乗って情報をキャッチアップしていく」ともすると軽薄におもわれがちな戦術であっても、それをうまく実践していくにはそれなりの調査能力と見合った学習能力が必要になる。そこには「一つのことをやり続ける」のとはまた違った難しさと、今の持ち札に拘泥しすぎないというある種のストイックさが必要とされる。


この手の話題が議論の壇上にあがると、ついで出てくるのが「今ある技術をしっかり極めるべきか否か」論だ。
どうするのがベストなのか、はっきり教えてやる。好きにやれ。以上。

当たり前だが、「今ある技術をしっかり高めていく」「新しい技術を柔軟に取り入れていく」。このふたつはパソコンをかちゃかちゃする業界に限定された話ではなく、人生というフィールドでどちらも同じくらい重要なアティチュードだ*2
140文字の投げあいで議論(笑)が成り立つと錯覚するほどに脳みそが軽い人間の前に、なんとなく対極にありそうなふたつの事象を提示すると二元論の宗教論争が発生することはよく知られているが、二元論の宗教論争をのぞいて、世の中の物事はだいたい重要であることは知られていない。
だが「重要だ」ということは「やらなければならない」ということを意味したりはしない。極めたい道があるなら他を全て無視して極めればいい。その結果、名声を得たりメイクマニーすることもあるかもしれないし、あまりにマイナーすぎて困窮し、そのまま犬死にするかもしれない。あるいは何も極めずになんとなく生きて死んだっていいじゃない。別にそれでも良いじゃない。

世の中の人間は、相当に知能が高い人間でも

  • 客観的な最善手
  • 個人的経験
  • 各人の趣味趣向得手不得手

この3つを分けて語るということができない。
そしてよほど賢明なやつでもない限りは個人の経験というものに巨大なバイアスのかかった意見をぶつけてくる。
ここまで書くと三行以上の文章を読まないというアホすぎるインターネット文化に染まってしまったやつらは「だから他人の意見なんか無視しろ、自分で考えろってことだろ」とか早とちりし始めるが俺はそんなことは言わない。そういうしょうもなく浅い読解でスマホンをいじりちらして火をつけて遊んでいるのでこの国の税率は軽減されてしまいこの国はいつか滅ぶ。

他人の経験というものは10%くらいの確率でそれなりに学べるものであったりする。相手がかなり優秀な人間であればその確率は50%くらいになる。だから参考にしたいときはすればいいし、虫の居所が悪くてイライラしてるときは聞き流せばいい。

そういった前提の上で僕がどうしているかを語らせてもらう*3
僕がとっているのは弱者の戦略だ。どういうことかというと、「今ある技術を極めていく」「最先端をキャッチアップ」どちらもやらない。何故ならこれは両方共に強者のフィールドだからだ。

僕は異常に飽きっぽいので一つのことをやり続けるということができない。そして最先端を即座にキャッチアップし続けていくようなコンピューターサイエンスの基礎はない*4。そもそもゲームとかぬか漬けとか昼寝とか、プライベートでやりたいことが色々ある。
流行りそうなもの流行ったもの、広く使われているもの、そしてそれらの中でも応用が効きそうなもの、そういうコスパがいいやつを選別して重要度や自分の適正に合わせて50〜80点をとっていく。それを繰り返していくと、手持ちの60点札がコンボを発動してめちゃくちゃコスパがよくなったりするのでそこでいい感じに自己アッピールをする。

その戦略がうまく刺さったのがReact〜TypeScriptの流れで、その経験をバイアスがあれしてこういうことを書いているわけです。
僕はAngularとかの知名度が出てくるくらいまでフロントエンドを一切書いたことがなかったが、ルーツが.NET系であることもあって、逆にGUIのアーキテクチャ*5については結構勉強していた。
なので(Angular1はまぁわかりやすいとは言いがたかったけど)MVVMだとかのワードが出てきて騒がれているときに、「これなら強くてニューゲームできるやんけwww*6」ということでブラウザァフロントエンドに鞍替えした。フロントエンド界隈は「新しい」「変化」みたいなワードで語られることが多いけど、少なくとも現状主流な技術はだいたい何かの延長線上か焼き直しか、あるいはただの移植だ。例えば当初イケてる難解超時空魔法みたいな扱いだった*7ReactiveExtensionは僕のプログラマー歴よりも先輩な古株ライブラリだったりするわけで、C#erなら完全に異世界転生無双クソラノベ状態。

TypeScriptもJavaScriptの上位互換として完全に便利なんだけど、例えば今までただひたすらにフロントエンド"だけ"を極めようとしてた人(仮想人格です)が学ぼうとするには学習コストが高すぎる。というかここ数年のWebのマジョリティは動的型付け言語だったわけで、静的型付け言語は学校でちょっとCとかJavaをやりましたケロ……という状態でいきなり挑戦するのはかなり頭良くないと厳しい。
でも色んな言語をつまみ食いした後だと「進研ゼミでやったやつ」とか「XX言語には欠けてて夢見てた機能」みたいな感じではじめてなのにはじめてじゃない……という感じになる。言うなればシャドーボクシングで烈海王戦のリハーサルをしたバキ状態。

要は自分を鍛えるとか有望そうな技術をさがして投資する、とかそういうのは二の次にしてひたすら将来の変化に備える、変化に乗じて最小の労力でそこそこの成果をあげる。というのがぼくのかんがえたさいきょうの弱者の戦略。
この戦略のいいところは、大きな変化が起きそうな状況でも心穏やかでいられること。この業界、常にアジテーターみたいな人が出てきて最新でスーパーいけてる技術で世の中がひっくりかえる! という大予言が繰り返されて当たったり当たらなかったりするが、ひっくり返されてしまう側の人がそれを聞いていい気持ちになることはない。そこでしょっちゅう不毛ないさかいが発生しているのはインターネットのお友達ならみんな知ってるよね?
例えばこれからフロントエンドはTypeScriptが主流になっていく(ポジショントークです)とおもうけど、インターネット上でそういうことを発言すると例えばES5でJSを書いてる人とか、TypeScriptがしょっちゅう繰り出してくる数百文字のエラーメッセージを読みながら霊感で解決するのが嫌いな人たちは自分が否定されたような、すごい嫌な気持ちになってしまう。知ったこっちゃねーけどな!

でも弱者の戦略に聖域はないので、手持ちのカードのどれがひっくり返ってもたいして困らない。むしろ変化は歓迎、もう全部TypeScriptでいいよ。強いて言うならすぐに立ち位置を変えられるイナゴ力が切り札だけど、イナゴ力が発揮できない業界は死んでるのでどうせ共倒れなので大丈夫。
さっきからTypeScript連呼してるけど、仮にTypeScriptがオワコン化しても僕は全然困らない。そもそも僕は最初Haxeにベットして失敗したわけだけど、そのおかげでTypeScriptの習得は10分で終わったし今後でる新機能も出た瞬間から使いこなせるはず(慢心)。

Haxe カテゴリーの記事一覧 - タオルケット体操

5年前……だと……?

この戦略でやってると何かを極めた人間の「凄み」とかパワみたいなものは出ないし、誰かの劣化コピーに甘んじ続けるわけだけど、それがどうした。

さて、何書こうとしてたんだっけ。

結論

TypeScriptはいいぞ

*1:どうだろう

*2:わからないやつはジョジョを読め

*3:なぜならここは俺の日記帳なので好きなことを語る

*4:とはいえあまりに基礎がないままにしておくと効率が悪いのでメモリの管理だとかパーサーの書き方だとか、最低限そういうところはかじっておくべき

*5:"本物"のMVCとか

*6:現実はそこまで甘くない

*7:要出展