はてなキーワード: Vueとは
https://twitter.com/kakedashi_chan/status/1495050350629322752
私はエンジニアちゃんの立場なのだが、同じような経験をしたことがあったので悲しいなあと思った。
以前ともだちと旅行した際にプログラミングの話題になった。わたしは当時から自分でウェブアプリを開発したり、ネイティブアプリを開発したりするのが趣味だったので、プログラミングスクール (Zeroplusというところだった)に通っている友達の話を興味深く聞いた。
そこで教えていたのは、たとえばJSであればもう誰も使っていないgulpであったりとかscssであったりといった時代遅れの技術で、とにかく顧客を捕まえて案件をゲットしようという内容だった。
わたしはネイティブアプリの開発者なのでウェブは門外漢だが、それでもウェブ開発という観点からはあまりに頓珍漢で時代遅れなことを教えていて面食らった。
わたしはともだちに「営業をやりたいのだったら良いスタートアップがあるから紹介するよ」といったが、ともだちはフリーランスエンジニアになりたいの一点張りだった。
「ウェブアプリ開発をやりたいのだったら、無料で良いチュートリアルがあるよ。お金を払うんだったらudemyとかの動画にしなよ。」
「HTMLとJavaScriptの関係はわかっている?今はReactやVueといった仮想DOMでの開発が主流だよ」
「HTTPサーバーというのが何を指しているのかわかっている?」
嫌味にならないように遠回しに「メガベンチャーに入れる」レベルの開発経験の積み方を話した。ともだちは残念なことにGoogle・Indeedなどに入れるような地頭の良さはないので、アルゴリズムよりも開発経験を積むように勧めた。
フリーランスエンジニアになるにしたって、誰がまともな開発をできない人に頼むのだろう。少なくともわたしの知り合いに業界経験が全くなくて、フリーランスエンジニアとして活躍できている人は一人もいないと伝えた。
ココナラやクラウドソーシングサイトで請け負う低単価の案件はいくらやっても、そもそも全く稼げないし、キャリアとして意味がないことも伝えた。
今ではWFHはどの会社でも当たり前だし、週4日勤務のような自由度の高い働き方がしたいのならマイクロソフトなんかがそういう取り組みをしていることも伝えた。
とにかく、エンジニアになると決めたのならちゃんと開発経験を積んで一般就職をいちど目指そうと伝えた。
1年後。
ともだちはその場では「ありがとう教えてくれて!やってみるね!」と話していたが、その後Twitterでは「らくして稼ごうウェブ制作!」といった標語を抱えている詐欺師のツイートを積極的にRTし、初心者コミュニティで自己啓発めいたことを1年間言い続けていた。
ともだちはその後事務員としてどこかの会社に就職したらしいが、音信不通になってしまってなにもれんらくがとれない状態になった。
JSXが嫌いとかそう言うわけじゃない。慣れれば、これはこれで良いかなと感じる部分もある。
何かの入力項目があった場合に、Stateを定義して、入力変更イベントを拾って、Stateに設定し直す処理を毎度書く必要がある。
何十項目とそれがあった場合、面倒だし、それらが単純なものとは言え、無視できないコストになってしまう。
コンポーネントコード中に、あまり本質的でない、Stateの定義と入力変更イベントでStateに設定し直す処理が、何十スクロールと続くのって読んでいて辛くならない?
Stateの定義をObjectでまとめて定義するって言うのも、解決策の一つなんだろうか?
調べてみたらできるっぽいけど、Objectの分割代入を使わなくちゃいけないみたいで、これはこれで面倒。
React Hook Formと言うのもあるみたいだけど、そもそもコアな部分で、それを吸収できる機構が無いのは如何なものかと思ってしまう。
(それをしないのが、React的なシンプルな設計思想でもあるのかな?)
Vue.jsでは、双方向バインディングはv-modelだけで出来ちゃうし、Angularの事は詳しく無いけどAngularも同じノリで出来るみたい。
まとめると、自分的な辛さの原因は『双方向バインディング辛い』ってことだけなんだけど、みんな本当にReactに満足してるのかな?
あと、Reduxに関しても、ちょっと言いたい。大抵のプロジェクトで、そこまでRedux使いたくなるか?
SNSのようなリッチなインタラクティブが求められる尖ったUIを作るのなら、もしかしたら必要なのかもって思うけど、大抵の場合、不要じゃないかって思うんだけど。
・機械工学は大学で学んだ。機械系4力学のさわりだけなら大体やったがもう忘れている。
・切削加工はけがき、フライス盤、ボール盤、くらいならできるが複雑な形状は作れる気がしない。そういえば旋盤は使わなかった。耐久性を考えなければ3Dプリンタでなんでも作れるらしいが、3Dプリンタは触ったことがない。
・CADは大学の演習でSolidWorksを触った程度。もうすっかり忘れている。手書きの製図とかは調べて思い出せば簡単な形状ならできるかもしれない。
・シミュレータはANSYSをマニュアル通り触った程度。動力学解析とか連成解析とか仕組みは全くわかっていない。
・電気工学はだいぶ勉強不足。簡単な回路図はチップの製品情報を睨めっこしながらINとOUTと接地をどうすればいいかくらいはわかったが、複雑なものになるとダメ。ArduinoとRasberryPiは買ってみたが埃かぶっている。論理回路の読み方はすっかり忘れているが調べれば思い出せると思う。
・化学系は全くの無知。大学受験で知識は止まっている。物性物理的なところも無知。
・数値計算はPythonやMatlabでちょっとできる程度。ライブラリを使った行列計算や簡単なニュートン法くらいなら書けるが、精度や速さが必要だったり複雑になるとダメ。解析は微分積分や常微分方程式を調べて思い出せばできる程度。測度論とか特殊な積分とかいわゆる大学数学的な道具が必要になる解析はできない。
・競技プログラミングはちょっとかじったがやめてしまった。むずかしすぎた。
・機械学習や統計はなんとなく知識はついているが、手を動かして何か作ったことはない。この前統計検定1級落ちた。
・バックエンドはSQLをそれなりに書いてとりあえず動くものなら書ける程度。可用性とかパフォーマンスとか考えられるレベルではない。JavaはJavaEEを横展開的に書いた程度。理解できている自信はない。保守性高めたりデザインパターン的に綺麗な書き方とかできない。C++は一瞬だけ触ったことがあるが、環境構築ハマった&謎のSegmentation Faultで苦手意識を残したまま。Go?Rust?なにそれおいしそうだね。
・クラウドはAWSをマニュアル通りに使っている程度。1から設計なんてできない。なのでAWSのソリューションアーキテクトを勉強中。AzureやFirebaseは触ったこともない。
・ネットワーク系とかセキュリティ系は全く勉強不足。応用情報をギリギリ合格できる程度の知識しかない。わかるようにはなりたい。
・フロントエンドはFlutterを勉強中。Flutterむずかしい、どんな言語でもそうだけどチュートリアルから業務レベルまでの乖離がありすぎてよくわからない。javascriptはjQuery一強時代にちょっと書いた程度。VueとかReactとかなにもわからない。TypeScript?なにそれおいしそうだね。
・ハード系だったりファームウェア系だったりコンパイラ系は何もわからない。わかるようにはなりたい。
全部中途半端だな、、、
10年くらい前に比べて、個人でWebサービスを作る人が少なくなった気がする。
Webエンジニアの数が減ったとは思わない。むしろ増えてる。環境も良くなってる。多少の規模なら無料で借りれるサーバーはいくらでもあるし、お小遣い程度の予算があれば工夫次第でそこそこの規模サービスだって作れる。ライブラリもフレームワークもインフラもAPIも揃ってる。
にも関わらず、個人でWebサービスを作る人が少なくなった気がする。
みんなどこへ行ったんだ。Webエンジニアは普段何してるのだろう。仕事だろうか。仕事以外は何してるのだろう。勉強かな。その勉強で手に入れたスキルを仕事にだけ使ってるのかな。それって楽しいのかな。
10年くらい前に次々と新しいWebサービスを立ち上げて一世を風靡していたあの人は今何をしているのだろうと思って調べてみたら、なんかメディアサイトを立ち上げていた。WordPressで作れるような感じのやつ。なるほどな~。一攫千金目指すなら、今だと手の凝ったウェブサービス作るよりWordPressでメディアサイト作ったほうが早いよなー。
じゃあReactとかVueとか勉強してる人って普段何作ってんだろう。世のWebサイトの9割くらいはWordPressで十分だよね。残り1割を作ってるのかな。そうなのかな。
なんかつまらなくなったなぁ。
なんか今頃になってPythonの学習コンテンツが充実してきてるけど
Pythonってもう旬を過ぎたと思うんだよな
tensorflowとかsklearnとか使うためにPythonは凄く有用だったしこぞって使ってた
まぁそれでもPandasはクソだったけど他に選択肢もなかった
あと、AIみたいにサービス化とかUIを気にしなくて良いようなワンショットのプログラミングには向いてた
型付けとかしなくていいし、少しぐらいメモリリークしてても気にしないし、UIはtensorboardとかグラフをpngで吐き出せば良かった
何よりターミナルから打ち込んだら実行してくれたりMarkdownのファイルの中に書いたら実行してくれたりそれはまぁ便利だった
ところがAIがコモディティ化して頭打ちも見え始めてきた段階でそろそろビジネス化しないといけないけど
そうなるとPythonみたいなやんちゃな言語をプロダクトレベルまで実装出来る人が少ないことに気づき始めた
UI作るの面倒だし、型チェックとかもやってくれないから想定してないバグが出たり
Pythonを凄いやってた人も「プロダクトレベルとなるとちょっと」っていう人が増えてきた
かといってJavaには戻りたくないってなってTypeScriptが流行り始めた
そもそも最終のUIはWebだし、jQueryから始まったReact/Vue/Angularあたりはどれを使っても簡単にUIを作れる
おまけに枯れたNode.jsでサーバレスに実行できる環境まであるからTypeScriptが流行りまくってるんだと思う
Web系の弱いところはスマホアプリで、WPAあるけどイマイチ流行ってないしAppleが乗り気じゃ無いのがなんとも
なのでflutterあたりが人気出てくるかなぁ、とは思うけどWeb系ほど選択肢が無いから合わない時にとことん合わないと思う
ここから数年はPython人気が落ちてきて、TypeScriptが伸びて、Dartがじわじわ伸びてくるんじゃないかなぁ
初学者はPython、とか言うけど関係なくTypeScriptやった方がいいと思う
いまもjQueryをWebアプリケーションの大事なライブラリとして使っている会社は少なくないと思う。
jQueryを会社で使っていると何が問題なのかを語っていこう。独断と偏見によるものなので、jQueryを使っていても問題ない会社も当然ある。たとえばペライチのサイトを作る会社とか小規模サイトなんかでは全く問題ない。
採用困難で売り手市場になっている時代、そして「jQueryを触らなければならない環境 vs モダンフロントエンド環境」という選択肢がある中で、あえてjQueryを選ぶフロントエンドエンジニアは少ない。
また、新人はもはやjQueryを学ぶことはない。彼らはES6以降のJavaScript / TypeScriptを書く。よしんばjQueryを学ぶことになった新人がいたとしても、それはただその新人が可哀想なだけで、現役なわけではない。ラガード(遅滞者)の仲間入りをさせているだけだ。新人でもキャリアをデザインできる新人は「jQueryはオワコン」という情報には触れているので、よほど就活で失敗しない限りはjQueryのところにたどり着かなくなっている。
そもそもバックエンドエンジニアでもモダンフロントエンドを書くような環境が増えてきた中で、2世代も前のjQueryだけでアーキテクチャに関する一考もないコードをメンテしなければいけないので、「jQuery」という言葉だけでフロントエンドエンジニアでなくとも入社を避けがちだ。(jQueryでアーキテクチャがしっかりしている可能性は低い。アーキテクチャがしっかりしているならばjQueryに依存しておらず、jQueryに依存していないのであれば簡単にjQueryから脱却できるはずで、簡単にjQueryから脱却できるならもう脱却しているはずだからだ)
メインストリームの部分はほとんどリプレイスが終わっているというでもなく、すべて現役でjQueryなのであれば尚更問題で、誰もメンテしたがらないコードの出来上がりだ。「弊社はCOBOLで書いてます!」とにこやかに言うようなものだ。
(ただし、さすがにjQueryだけでフロントをやっているという会社の求人をほとんど見かけることはない。無意識のスクリーニングで落としているのかもしれない)
jQueryを使っている会社には、フロントエンドエンジニアは一人もいないと言いきってもいいかもしれない。もしくは、今まさにjQueryをやめようとしているか、たまたま入ってきたフロントエンドエンジニアが今まさに辞めようと迷っているかのどれかだ。
「jQueryを使っていました」というエンジニアは、他社からはフロントエンドスキルが0とみなされる。つまり、フロントエンドエンジニアではないという意味だ。jQueryは、jQueryを使っている会社に対してしか武器にならないのだ(逆はできる)
jQueryを書ける人口自体は増えているだろうが、労働市場からは撤退し始めている。昔jQueryを書いていた人材の人数が上限で、そこから新たに学ぶ人の絶対数が減っているため、全体としては減っている。
私もjQueryは以前業務で書いていたが、もう数年書いていない。特にメリットを感じないからだ。遊びで、生のJavaScriptを書くことはある。
jQueryで入社するのは、昔からjQueryを使っている高齢のエンジニアか、なぜかjQueryを学ぶことになってしまった新人である可能性がある。
そのため、需要と供給に応じて、昔いたようなスキルレベルの人を今の市場で見つけようとすると費用がかかってしまう。jQuery書けますという人材が高年齢化しているのだ。そして世継ぎはいない。
リプレイスはハッキリ言って難しい。モダンなフロントエンドを学習するだけでは足りなくて、それを使いこなせた上でしかもjQueryを使用したカオスイベントコードも読めて、そしてアーキテクチャを考えてリプレイスしなければいけない。
時代が下るにつれて、そうしたハイスキル人材はより高価値になっていき、レア度も単価も高くなる。今そういう人を雇うという判断をしない会社が、どうして今後もっとハイスキルの人を雇えようか。
jQueryを使ったサービスがしっかり利益を出している点もリプレイスを難しくしている。全廃もできない。かと言ってコストに見合わなければリプレイスという経営判断も難しい。経営が困難な状態ならより厳しい。
何も理由がなくjQueryを使い続けたいという奇特な人は多くないはずだ。何か理由があってそうなっているわけだ。カッコよく言うと『ナッシュ均衡』という状態だろう。今会社にいる人材もいわゆる『jQuery人材』が多いため、そこを打破するのはとても困難な道だろう。
jQueryから抜け出すには、すでにいる人材がなんとかしてリプレイスするか、外から連れてきて改革するしかない。しかし大抵の場合、既存の従業員にとってはそんな大変なことをするよりも転職したほうが楽な道だ。(もちろん、「jQueryしかなかったサービスをモダンフロントエンドにした」というのが実績としてある人材はかなり魅力的な人材で引くてあまたなことだろう。その意味ではピンチをチャンスに変えるときの『チャンス』ではある)
ReactやVue.jsに変えたいと思ったとして「じゃあお前それですぐに利益出せんのかよ?」と詰められたら、その論争をクリアしてまで変えるのはほとんど無理に近い。通常、リプレイスそれ自体は価値を生み出さない。リプレイス後に運用コストが低下したり、人材獲得がしやすくなるために利益が出るのだ。リプレイスとは長期の投資であるため、短期的には必ず損失になる。経営が困難な状態でリプレイスしようとするのは、生活困窮世帯にリボ払いをやめさせるぐらい難しい。そのため、まず自分が身銭を切ってリプレイスするしかない。そしてリターンがあるかもわからない身銭は切りにくい。そして同僚は容易に『抵抗勢力』になる。
jQueryを今も使っているということは、裏を返せば「これまでリプレイスをしてこなかった」「リプレイスしようとしたが無理だった」という実績にもなる。
jQueryを使っている会社は、昔からあるコードをもとに書いているため、今もES6以前の文法で書いている可能性がある。そうしてどんどんと情報が少なく、古く、現代で通用しにくいものになっていく。
bundlerを使っていない可能性が高いし、もしかするとCI/CDも無いかもしれない。そうすると、モダンなインフラエンジニア(もしくはモダンなインフラ知識のあるエンジニア)がいないかもしれない。SREという概念がないかもしれない。
世間一般から見ると会社の中が古いのだが、古い会社にいると「自分が古い」とはなかなか思えないものだ。太っちょの集まりの中にいたら「自分はそんなに太ってない」と思うのと同じことだ。
すべては憶測なので、実際は違うかもしれない。
さんざんdisってきたが、そもそもjQueryは何も悪くないし、大変優れたライブラリだ。ちょっとしたプロトタイプを作るときには良いものであるかもしれない。しかも今もjQuery自体はメンテされている。そのため、状態管理さえうまくできていればjQueryだろうがなんだろうが問題ない。
問題は、jQueryというライブラリを使ってきた時代からアーキテクチャが前進していない点にある。何年もずっとその状態だということだ。そこを今日に至るまで誰1人として変えられなかったということだ。特に経営陣は何の問題視もしていない可能性が極めて高い。そうした社内のしがらみが反映された結晶体、それが『使用技術: jQuery』という言葉になっているのだと思う。また、ヤバさは、jQueryのバージョンに反比例する。
jQueryを使っているアプリケーションには、jQueryが担保していなかったアーキテクチャ部分に問題があることが多い。また、どこから呼ばれているか誰もわからない複雑なイベント、SPAもクソもないページ遷移ごとのリロード、誰もどこもテストできず、HTMLにベタ書きで書かれたJavaScriptコード、その場しのぎでデタラメに書かれた関数、無視される変数のスコープ、サポートが終わったライブラリ、ドキュメントを見つけるのすら困難なよくわからないライブラリ、高齢者しか知らない伝説の機能・伝説のハック、などもある。これらはモダンフロントエンドではほとんど発生しないものだ。
そのため、一定の基準として「jQueryを使っているかどうか」で、フロントエンドエンジニアとしてのやりがいがあるかどうかを判別できる。
そうして、フロントエンドエンジニアというのはもうjQueryに見向きもしていない。書けるけど書きたくない。パラレルワールドのようなものだ。
そういうようなことを「使用技術: jQuery」という文言から感じ取ってしまうのだ。
(そしてこれは、実際の仕事の中身が違うかどうかは関係ない。jQueryとは、そういうふうなブランドと化しているのだ)
jQueryを使っている会社からしたら「そんなことはわかっている」という部分で、「じゃあどうすればいいのか?」という部分が気になるところだと思う。
そこで、後編では「どうやってjQueryを全廃すればいいのか?」「実際にどのように全廃したのかの事例」について、だいたい来週ぐらいに書くつもりだ。
お楽しみに!
最初に結論から書くと、「データをサーバーとやりとりする掲示板のような機能の実装に1年かかっても取り組めていない」
個人的な目標があり、非IT系だが、webサイト作りをやってる。
しかし、なんとかVue.jsで静的サイトで動きを出したり、BootStrapでタブを作ったりすることはできる。
Firebaseで静的サイトや、AWSでS3にサイトhtmlを置いて公開することもできる。
掲示板の機能を持たせるには、投稿データを保存したり表示したりする必要がある。
そうなると、さーばーから情報を読み出すべきだが、そもそもサーバーに情報をどうやったらためて置けるかがわからない。
Railsの場合はセキュリティーが怖いからやめておきたい、できればクラウドサーバーの機能をそのまま使いたい。
クラウドサーバーにデータを投稿したりクラウドサーバーから読み出す機能がもっと簡単にならないかなあ。
Udemyや本を読んでも、なかなかできるようにならないです。みなさんどうしてます?
よく知らんけど、この彼女のような活動家が「法律の変更時に何らかのアクションを起こす」だろうなーと旧国鉄の法務部隊が推測して、予想可能なアクションをエミュレーションしてイレギュラーな事態を「なんにも問題なし」で解決したのは、プログラマーとしてはすごいと思いました。
それはさておくとして、昨今の DX を理由に React や Vue といった Virtual DOM の推進派が W3C の「アクセシビリティ」で noscript タグなしで動的なサイトを作る現状は、アクセシビリティを高くするために戦ってきた自分としては辛く思います。
これと、伊是名夏子さんになんの関係もありませんが、昨今のサイトの作り方が React とかでアクセシビリティを軽視する流れは、残念なこと限りありません。どうにかならんか?