「バックエンド」を含む日記 RSS

はてなキーワード: バックエンドとは

2022-01-25

本のまとめ

--

この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。

1章

コンテナとは】

他のプロセスとは隔離された状態OS上にソフトウェアを実行する技術

コンテナ利用のメリット

環境依存から解放

コンテナにはアプリの稼働に必要となるランタイムライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリ依存関係をすべてコンテナ内で完結できる。

依存関係を含めたパッケージリリース単位となる

環境構築やテストに要する時間の削減

優れた再現性ポータビリティ

全ての依存関係コンテナ内で完結するため、オンプレでもクラウドでも起動する。

ステージング環境テスト済みのコンテナイメージプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテスト必要工数を削減できる。

リソース効率のアップ

サーバー仮想化では、仮想マシンレベルリソースを分離し、ゲストOS上でアプリが起動する。つまりアプリだけでなく、ゲストOSを動かすためのコンピューティングリソース必要

一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。

Dockerとは】

コンテナライフサイクル管理するプラットフォーム

アプリコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。

アプリソースコード + Dockerfile

↓ buildでイメージ作成

イメージ(アプリケーションと依存関係パッケージングされる。アプリライブラリOS)

shipイメージの保存

レジストリに保存

run コンテナの実行

オンプレクラウドなどで起動

Dockerfileとは】

イメージを構築するためのテキストファイル

このファイルコマンド記述することで、アプリ必要ライブラリインストールしたり、コンテナ上に環境変数を指定したりする。

1章まとめ、感想

コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンド設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。

2章

AWS提供するコンテナサービス

コントロールプレーン

コンテナ管理する機能

コントロールプレーンは2種類

ECSとEKSがある。

ECS

フルマネージドなコンテナオーケストレータ。

オーケストレーションサービスであり、コンテナの実行環境ではない。

ECSの月間稼働率99.99%であることがSLA として保証

タスク

コンテナ動作するコンポーネント

タスクは1つ以上のコンテナからなる

アプリを起動するためにはコンテナ必要

タスク定義

タスク作成するテンプレート定義JSON記述

デプロイするコンテナイメージタスクコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。

サービス

指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサータスクを実行するネットワーク指定

クラスター

サービスタスクを実行する論理グループ

データプレーン

コンテナが実際に稼働するリソース環境

2種類ありECSとFargateがある。 Fargateに絞って書く

Fargateとは

サーバーレスコンピューティングエンジン

AWSのフルマネージドなデータプレーンとして定義されている

コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する

Fargate メリット

ホスト管理不要であること

サーバーのスケーリングパッチ適用保護管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる

Fargate デメリット

価格EC2より高い。

利用者コンテナの稼働するOSには介入できない

コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる

ECR

フルマネージドなコンテナレジストリ

コンテナイメージを保存、管理できる

コンテナが利用されているサービス

Lambda

・App Runner

Lambda

 利用者コードアップロードするだけでコードを実行できるサービスAWS側で基盤となるコンピューティングリソースを構築してくれるフルマネージドサービス

App Runner

 2021年5月GA(一般公開)となったサービスプロダクションレベルスケール可能webアプリを素早く展開するためのマネージドサービスGithub連携してソースコードをApp Runnerでビルドデプロイができるだけでなく、ECRのビルド済みコンテナイメージも即座にデプロイできる。

 ECSとFargateの場合ネットワークロードバランシング、CI/CDの設定などインフラレイヤに関わる必要があり、ある程度のインフラ知識必要になる。App Runnerはそれらインフラ周りをすべてひっくるめてブラックボックス化し、マネージドにしていることが特徴である

ECS Fargateを利用した場合コスト拡張性、信頼性エンジニアリング観点

コスト

EC2より料金は割高。ただし、年々料金は下がってきている。

拡張性】

デプロイの速度 遅め

理由1 コンテナごとにENIが割り当てられるため。ENIの生成に時間がかかる

理由2. イメージキャッシュができないため。コンテナ起動時にコンテナイメージを取得する必要がある。

タスクに割り当てられるエフェメラストレージは200GB。容量は拡張不可。ただし永続ストレージの容量が必要場合はEFSボリュームを使う手もある。

割り当て可能リソースは4vCPUと30GB。機械学習に用いるノードのような大容量メモリ要求するホストとしては不向き

信頼性

Fargateへのsshログインは不可。Fargate上で起動するコンテナsshdを立ててsshログインする方法もあるが、セキュアなコンテナ環境sshの口を開けるのはリスキーである。他にSSMセッションマネージャーを用いてログインする方法もあるが、データプレーンEC2の時に比べると手間がかかる。

しかし、2021年3月Amazon ECS Execが発表され、コンテナに対して対話型のシェルや1つのコマンドが実行可能となった。

エンジニアリング観点

Fargateの登場からしばらく経過し、有識者経験者は増え、確保しやすい。

システム要件確認

多数のユーザーに使ってもらう

可用性を高めるためにマルチAZ構成を取る

CI/CDパイプライン形成し、アプリリリースに対するアジティを高める

レイヤで適切なセキュリティ対策不正アクセス対策認証データの適切な管理ログ保存、踏み台経由の内部アクセス)を施したい

2章まとめ、感想

AWS提供するコンテナサービスはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理不要インフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である

3章

この章では運用設計ロギング設計セキュリティ設計信頼性設計パフォーマンス設計コスト最適化設計について述べている。

運用設計

Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計不具合修正デプロイリスク軽減のためのCI/CD設計必要である

モニタリングとは

システム内で定めた状態確認し続けることであり、その目的システムの可用性を維持するために問題発生に気づくこと

オブザーバビリティとは

システム全体を俯瞰しつつ、内部状態まで深掘できる状態

オブザーバビリティの獲得によって、原因特定対策検討が迅速に行えるようになる

ロギング設計

・cloud watch logs

他のAWSサービスとの連携も容易

サブスクリプションフィルター特定文字列の抽出も容易

・Firelens

AWS以外のサービスAWS外のSaaS連携することも可能

Firehoseを経由してS3やRed shiftOpenSearch Serviceにログ転送できる

Fluentdやfluent bit選択できる

fluent bitを利用する場合AWS公式提供しているコンテナイメージ使用できる

セキュリティ設計

イメージに対するセキュリティ対策

 - ソフトウェアライブラリ脆弱性は日々更新されており、作ってから時間が経ったイメージ脆弱性を含んでいる危険がある。

 - 方法

  脆弱性の有無はECRによる脆弱性スキャンOSSのtrivyによる脆弱性スキャン

継続的かつ自動的コンテナイメージスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリ場合CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャン必要になる。

cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能

提供元が不明ベースイメージ使用は避ける

・IAMポリシーによるECRのパブリック化の禁止

 - オペレーションミスによる公開を防ぐことができる

信頼性設計

マルチAZ構成

Fargateの場合サービス内部のスケジューラが自動マルチAZ構成を取るため、こちらで何かする必要はない。

障害時切り離しと復旧

ECSはcloud watchと組み合わせることでタスク障害アプリエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる

ALBと結びつけることで、障害が発生したタスク自動で切り離す

リタイアという状態

AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合ECSは新しいタスクに置き換えようとするその状態のこと。

Fargateの場合アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ整合などが生じて危険

システムメンテナンス時におけるサービス停止

ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能

サービスクォータという制限

意図しない課金増加から保護するために設けられた制限

自動でクォータは引き上がらない

cloud watch メトリクスなどで監視する必要がある。

パフォーマンス設計

パフォーマンス設計で求められることは、ビジネスで求められるシステム需要を満たしつつも、技術領域進歩環境の変化に対応可能アーキテクチャを目指すこと

ビジネス上の性能要件を把握することが前提

利用者数やワークロードの特性を見極めつつ、性能目標から必要リソース量を仮決めする

FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める

既存のワークロードを模倣したベンチマークや負荷テスト実施してパフォーマンス要件を満たすかどうかを確認する

スケールアウト

サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存タスクを停止する必要原則ない。

スケールアウト時の注意

・Fargate上のECSタスク数の上限はデフォルトリージョンあたり1000までであること。

VPCIPアドレスの割当量に気をつける

ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能IPアドレスが消費されていく

スケールアウトによるIPアドレスの枯渇に注意

Application Autoscaling

Fargateで使用可能

Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う

ステップスケーリングポリシー

ステップを設けて制御する

CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意ステップに従ってタスク数を増減させる

ターゲット追跡スケーリングポリシーとは

指定したメトリクスのターゲット値を維持するようなにスケールアウトやスケールインを制御する方針

ターゲット追跡スケーリングPermalink | 記事への反応(0) | 21:45

2022-01-24

最近モダンフロントエンド技術

バックエンド経験がないと概念からまず理解しなきゃいけなくて取得に時間かかるようなフレームワーク増えたよね。古のフロントエンドプログラミング適正がゼロでも稼げた馬鹿みたいな時代があったんだけどそれももう終わりだなあ。そんな時代もっと早く終わるべきだったと思うけど。

2022-01-23

anond:20220123133115

それは最初から巨大なバックエンドだったんじゃなくて、この20年でコツコツバックエンドとか分散配信とかの課題解決してきたんでしょ?

からそれが日本人にはできないんだよ。

anond:20220123132836

それは最初から巨大なバックエンドだったんじゃなくて、この20年でコツコツバックエンドとか分散配信とかの課題解決してきたんでしょ?

それも技術的にめちゃくちゃ高度かっていうとそうじゃないよな。結局日本会社部署移動しながら昇格していくサラリーマン

担当していてはでっかいルール決めで勝ち残れないっていう要素があるような気がします。

2022-01-16

エンジニア有害な振る舞い」へのエンジニアっぽい対処方法

一見正しそうだが正しくないラベリングをすると、結果として意図しない結果を引き起こすことがある。

"難しい人"、"有害な振る舞い"というのは、大変よろしくないラベリングになる。

こういったときに「言ってることはわからなくないけど、なんか違うな」と違和感を持ち、解決策を探るのがエンジニアである

機械的判断できない基準を用いない

アクションに落とし込めないもの、計測できないもの機械的判断できないものは、いわゆる人間力に頼ることになる。

具体的に以下を例に挙げる。(元の記事の一番最初に例示されているもの

チームの創造的な議論を阻害したり他者時間を奪う

この短い(1行80文字以下を短いと言う)文章の中に、人間力に頼る判断は何か所あるだろうか?

私は、「創造的」「議論」「阻害」「時間を奪う」の4つは、機械的判断が難しいと思う。

他者の話に割り込んで自分意見差し込む

例えば、以下のパターン想像してほしい。

これは客観的基準で「他者の話に割り込んで、自分意見差し込」んでいる。

機械的判断できているが、どこの何が問題だろうか?

創造的」「議論」「阻害」とは、誰が判定するのか

先ほどの例だが、こんな前提があったとする。

そうすると、「営業管理職から見て、大変有意義創造的な議論に、毎度口をはさむ難しい組み込みエンジニア」というレッテルは正しいだろうか?

各人の判断は、正しいだろうか?

チームの大多数がそう思っていれば、そうなのでは?

人間力に頼る判断基準多数決を用いるのは、エンジニアリングで無く、政治的解決だと思う。

先ほどの会議の例でいえば、5人中3人が心理的負担を感じており、不愉快な気分になっている。

チームの60%が「創造的な議論を阻害する有害な振る舞い」だと認定している。

その判断は、正しいだろうか?

この場合組み込みエンジニアが、難しい人 or 有害な振る舞いをする人として、指導もしく排除されたとする。

それは、心理的安全性をあげ、チームの生産性をあげる行為だろうか?

例えば、今後デザイナーは、営業管理職が「どのような雑談をどの長さでしていても」発言しなくなるかもしれない。

デザイナーからみて、その会話が創造的な議論判断ができないからだ。

有害な振る舞いをする機械に対して、アラートを出したいとき

さて、Web系のバックエンドエンジニアや、クラウドインフラエンジニアだと、アラートを設定したり、対応したいことがある。

「何かまずいことが起こっていることを、何らかの方法監視して、対応したい」という場合だ。

例えば、待機系サーバーの起動時に妙に時間がかかっている場合自動対応ができないので、アラートメール飛ばして手動対応したいと思ったとする。

必要なのは「妙に時間がかかっている」を定義することである

絶対値10分)か、相対値(過去5回の起動時間平均値)かは場合によるし、それが適切かはまた別の話だ。

アラート基準を設定する

チームの創造的な議論を阻害したり他者時間を奪う

他者の話に割り込んで自分意見差し込む

この基準が正しいとして、アクションに起こしたいとする。

他者の話に割り込まない」というルールは、誤検知引き起こしやすアラートだ。

そんなのは常識で考えたらわかるだろう?曖昧基準は「俺のは有意義議論発言だ」の判断を誰かが決めることになる。

大多数がそう思っていれば、という複合的な基準もありうる。その場合、先ほどの例の組み込みエンジニアは、アラート対象になる。

会議アジェンダ記載されている内容を3分以内で喋っている場合に、割り込まない」というのは、一つの基準になる。

この場合営業が「営業概況を冒頭のアジェンダに加えて欲しい」と交渉する余地がある。

また「報告時間10分は欲しいが、3回以上は一度会話を止めるので、営業概況に対する質問はその時に」という合意もできる。

そして、顔合わせのキックオフミーティングで、営業概況をやるかは、会社やチームによる。

とはいえ、そんなルールばかりにできない

明示的なルールで縛るのが正しいかと言えば、そうした方が良い職場もあるだろうが、窮屈な職場も多いだろう。

チームの創造的な議論を阻害したり他者時間を奪う

他者の話に割り込んで自分意見差し込む

という簡単な話に見えることですら、ルールを作って守らせることに違和感を感じる感性も正しいと思う。

チーム(もしくはマネージャー)に求められるのは、こうした「何かチームに嫌な感じがある」とき軌道修正できることだ。

一例でしかないが、例えば以下の流れでルールを作らずに、解決できることもある。

まとめ

コミュニケーションコストを、チームを維持するのに必要コストとして、きちんと時間を割けるかが重要だと思う。

さらに言えば、「それは有害な振る舞いだと自分は思うが、あなたがそう思わない理由は何か」とコミュニケーションを取れないのであれば、そこに課題があるだろう。

チームやマネージャーがある人を「難しい人だなあ」と思ったとして、2つの解決策が出てこないのなら、その思考には課題があるのではないか

  • 該当する人を指導して振る舞いを変えさせる
  • チーム側を指導ルール作成して、振る舞いを変えさせる

他者配慮できる」という曖昧基準で異物を弾くようなチーム作りは、蛸壷化して致命的な結果を引き起こすことがある。

パワハラセクハラ試験結果改ざんが、「なんでそんなんなるまで誰も言わなかったんだよ」となるのは、

「その構成員他者配慮できる人たちで構成されていて、異物を弾き続けた結果」であることが多い。

少なくとも、「エンジニアの”有害な振る舞い”への対処法」には、機会、動機正当化のいわゆる不正トライアングルのうち、動機正当化を満たしている。

いやいや極端だろと思うだろう?

不快が、正しい正しくないに繋がっていることは社会生活を送っていると極めて多い。

マネージャーならば」法律や外部の意見も含めてかなり慎重に判断する必要がある。

エンジニアならば」相手に快適に聞こえるようにコミュニケーションするスキルは磨いておいて損はない。

(あと、機械的判断可能ルールを守ることが自分を守ることに繋がる。ルール順守か業績なら、常にルールを守れ。記録を軽視するな)

2021-12-22

いうほどPythonって業務で使われてなくね?

Web系だとフロントエンドで使わないのが多数だし、バックエンドでもそんなに使われない。

WindwosやMacAndroidiOSアプリ開発でも使われないし、

強いて言えばJupyterとか使って統計機械学習くらいって感じ。

プログラミング仕事にするならPython!!!ってYoutuberブロガーも言ってるけどいうほど業務で使わないし金にならないと思うんだが

2021-12-06

anond:20211206160125

これは確かに

めっちゃおもしろくなりそう

たぶんレガシーDBとかレガシーバックエンドシステムがっちり堅牢に作りこんじゃってるから

新しい機能追加するのはムズそうだけどね

ニコ生2019年までクソすぎたUIだったが、

2019年にとつぜん超大型アプデしていまも機能向上してる

たぶん頭いいエンジニアPMを大量採用したのだと思う

あとアイモード作った社長経営者として有能だしな

2021-11-09

バックエンドGo使ってるWeb系の会社Goの前はRuby使ってたしRubyの前はPerl使ってた

言語選択哲学がない 信用出来ない

2021-10-07

同接13万人の配信を支えるバックエンドエンジニア

のような仕事をしてみたかったなあ

2021-09-27

anond:20210927191057

しかに。

20年前にJavaScriptゲームみたいなWebサイトみたときの衝撃がない。

ノンコーディングでもサイトは作れてしまうからなあ。

バックエンドWebエンジニア結構複雑なことしてると思うよ。

日曜の夜中にエモい気分になってしまった

15年以上前高校生の時にハロプロファンサイトを作っていた

さっき、急に思い出して思い立ってwayback machine検索した

URLは何故か覚えてるもんだな

coolオンラインで作ってた方は残っていたが、iswebで作ったやつは無かった_| ̄|○

coolの方もところどころ残ってないページはあるけど、CGIで作られたゲストブックはほぼほぼ残っていた

ヲタ友と遠征計画したり、ヤフカテに登録されたのをみんなで喜んだり、荒らしをみんなで叩いてるのを見てなんかエモい気分になってしまった

そういやアンテナダイアリーも作ってたけど、大学入学タイミングヲタ卒業してアカウント消しちゃったんだよな

今思うと恥ずかしいハンドルネームも、「HTML4.0に対応しました!」とかいうクソどうでも良いウェブマスターからのお知らせも、またほろ苦い思い出だ

MKEditor使ってテーブルレイアウトで作ってたけど、今見てもまあまあまともに作ってて、結果、今もウェブ制作仕事をしている

明日からまたホームページを作っていく

エディタVS Codeになり、フロントはReactで組み、バックエンドAWSになったけど、当時の若い情熱みたいのを思い出して、また頑張ろうって気持ちになった

2021-09-15

anond:20210915090804

人材流動性再現性の違いかな?

俳優移籍したとしても認知度が変わらないので移籍したとしても同じ結果を望めるのに対して、

エンジニアは働きぐわいが外部からからないし、本当に価値のあるエンジニアかどうかがわからないでしょ?

あとエンジニアは素晴らしくても+αとして特許バックエンドテクノロジーもありきじゃないと価値を出せるとは言えないので

人材価値見出してくれる企業も限られてくるので流動性がどうしても低くなる。

あとは、俳優エンジニアより再現性が低い存在俳優Aと同じスペック俳優Bがいても俳優Aじゃないと売れないというのもある。

エンジニアとして収入を上げたいなら流動性上げてと再現性を低くする戦略もある。

たとえば技術系のブログを書いたり、技術的な特許申請をしてエンジニアがいることで優位にする戦略があると思うが、

日本企業場合どちらも禁止もしくは止められる恐れがあるので戦略を実行するのに難があると思います

2021-09-11

jQueryWebアプリケーションに使っている会社は滅びゆく(前編)

いまもjQueryWebアプリケーション大事ライブラリとして使っている会社は少なくないと思う。

jQuery会社で使っていると何が問題なのかを語っていこう。独断偏見によるものなので、jQueryを使っていても問題ない会社も当然ある。たとえばペライチのサイトを作る会社とか小規模サイトなんかでは全く問題ない。

フロントエンドエンジニア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を書いていた人材の人数が上限で、そこから新たに学ぶ人の絶対数が減っているため、全体としては減っている。

私もjQueryは以前業務で書いていたが、もう数年書いていない。特にメリットを感じないからだ。遊びで、生のJavaScriptを書くことはある。

jQuery入社するのは、昔からjQueryを使っている高齢エンジニアか、なぜかjQueryを学ぶことになってしまった新人である可能性がある。

そのため、需要供給に応じて、昔いたようなスキルレベルの人を今の市場で見つけようとすると費用がかかってしまう。jQuery書けますという人材が高年齢化しているのだ。そして世継ぎはいない。

jQueryを使っている会社にはフロントエンド知識が高い人がいないのでjQueryから抜け出せない

リプレイスはハッキリ言って難しい。モダンフロントエンド学習するだけでは足りなくて、それを使いこなせた上でしかjQuery使用したカオスイベントコードも読めて、そしてアーキテクチャを考えてリプレイスしなければいけない。

時代が下るにつれて、そうしたハイスキル人材はより高価値になっていき、レア度も単価も高くなる。今そういう人を雇うという判断をしない会社が、どうして今後もっとハイスキルの人を雇えようか。

jQueryを使ったサービスがしっかり利益を出している点もリプレイスを難しくしている。全廃もできない。かと言ってコストに見合わなければリプレイスという経営判断も難しい。経営が困難な状態ならより厳しい。

何も理由がなくjQueryを使い続けたいという奇特な人は多くないはずだ。何か理由があってそうなっているわけだ。カッコよく言うと『ナッシュ均衡』という状態だろう。今会社にいる人材もいわゆる『jQuery人材』が多いため、そこを打破するのはとても困難な道だろう。

jQueryから抜け出すには、すでにいる人材がなんとかしてリプレイスするか、外から連れてきて改革するしかない。しかし大抵の場合既存従業員にとってはそんな大変なことをするよりも転職したほうが楽な道だ。(もちろん、「jQueryしかなかったサービスモダンフロントエンドにした」というのが実績としてある人材はかなり魅力的な人材で引くてあまたなことだろう。その意味ではピンチをチャンスに変えるときの『チャンス』ではある)

ReactやVue.jsに変えたいと思ったとして「じゃあお前それですぐに利益出せんのかよ?」と詰められたら、その論争をクリアしてまで変えるのはほとんど無理に近い。通常、リプレイスそれ自体価値を生み出さない。リプレイス後に運用コストが低下したり、人材獲得がしやすくなるために利益が出るのだ。リプレイスとは長期の投資であるため、短期的には必ず損失になる。経営が困難な状態リプレイスしようとするのは、生活困窮世帯リボ払いをやめさせるぐらい難しい。そのため、まず自分が身銭を切ってリプレイスするしかない。そしてリターンがあるかもわからない身銭は切りにくい。そして同僚は容易に『抵抗勢力』になる。

ちなみにこのヤバい状態を『jQueryの崖』と言う。

jQueryを使っている会社フロントエンド周りのCI/CD等、エコシステムが構築できていない可能性がある

jQueryを今も使っているということは、裏を返せば「これまでリプレイスをしてこなかった」「リプレイスしようとしたが無理だった」という実績にもなる。

jQueryを使っている会社は、昔からあるコードをもとに書いているため、今もES6以前の文法で書いている可能性がある。そうしてどんどんと情報が少なく、古く、現代通用しにくいものになっていく。

bundlerを使っていない可能性が高いし、もしかするとCI/CDも無いかもしれない。そうすると、モダンインフラエンジニア(もしくはモダンインフラ知識のあるエンジニア)がいないかもしれない。SREという概念がないかもしれない。

世間一般から見ると会社の中が古いのだが、古い会社にいると「自分が古い」とはなかなか思えないものだ。太っちょの集まりの中にいたら「自分はそんなに太ってない」と思うのと同じことだ。

すべては憶測なので、実際は違うかもしれない。

jQuery自体が悪いわけではない

さんざんdisってきたが、そもそもjQueryは何も悪くないし、大変優れたライブラリだ。ちょっとしたプロトタイプを作るときには良いものであるかもしれない。しかも今もjQuery自体メンテされている。そのため、状態管理さえうまくできていればjQueryだろうがなんだろうが問題ない。

問題は、jQueryというライブラリを使ってきた時代からアーキテクチャ前進していない点にある。何年もずっとその状態だということだ。そこを今日に至るまで誰1人として変えられなかったということだ。特に経営陣は何の問題視もしていない可能性が極めて高い。そうした社内のしがらみが反映された結晶体、それが『使用技術: jQuery』という言葉になっているのだと思う。また、ヤバさは、jQueryバージョン反比例する。

jQueryを使っているアプリケーションには、jQuery担保していなかったアーキテクチャ部分に問題があることが多い。また、どこから呼ばれているか誰もわからない複雑なイベントSPAもクソもないページ遷移ごとのリロード、誰もどこもテストできず、HTMLベタ書きで書かれたJavaScriptコード、その場しのぎでデタラメに書かれた関数無視される変数スコープサポートが終わったライブラリドキュメントを見つけるのすら困難なよくわからないライブラリ高齢しか知らない伝説機能伝説のハック、などもある。これらはモダンフロントエンドではほとんど発生しないものだ。

そのため、一定基準として「jQueryを使っているかどうか」で、フロントエンドエンジニアとしてのやりがいがあるかどうかを判別できる。

そうして、フロントエンドエンジニアというのはもうjQueryに見向きもしていない。書けるけど書きたくない。パラレルワールドのようなものだ。

そういうようなことを「使用技術: jQuery」という文言から感じ取ってしまうのだ。

(そしてこれは、実際の仕事の中身が違うかどうかは関係ない。jQueryとは、そういうふうなブランドと化しているのだ)

前編のおわりに

jQueryを使っている会社からしたら「そんなことはわかっている」という部分で、「じゃあどうすればいいのか?」という部分が気になるところだと思う。

そこで、後編では「どうやってjQueryを全廃すればいいのか?」「実際にどのように全廃したのかの事例」について、だいたい来週ぐらいに書くつもりだ。

お楽しみに!

2021-08-31

Node.js ってフロントエンド開発するときの道具であんなのガチで本番使う馬鹿いないよな?

JavaScript だぜ?

バックエンドに、こんないい加減言語なんか使えんだろ

2021-08-29

anond:20210829170810

mBaaSって知ってますか?Firebaseとか

データベースとかバックエンドとか作らなくても、mBaaSが用意したAPIURLに対してJavaScriptから保存用のPOSTリクエスト送ったり問い合わせのGETリクエスト送ったりするとサーバーデータを保存したりやり取り出来るってやつです

クラウドサーバーってやつがクラウドサービスという意味ならぴったりな気がしま

クラウドサーバーってやつが安いさくらレンタルサーバーとかならどうしようもないのでPHP書いてMySQLに保存しろしか

2021-08-16

anond:20210515110022

Lineバックエンドエンジン販売すりゃ良いのにね。フロントエンドエンジンは、非公開にしつつ、バックのシステムセルフで動かすようにりゃエエのに。

2021-07-28

anond:20210728201321

インデックスの再構築化とかひつようでは?バックエンドLinuxだろうし。

人みたいに4時間おきに1時間休憩とか必要なの?

誰が指示するの?GANとかあるけど、最終的には人やで?

え、人が指示した結果、相手がどう動くかという話をしているんだよ。

結局ローカライズとか必要だし、購入すりゃ終了ってならんやろ。

生産コストが下がる(から、あるタイミングで人よりもコスト高であっても、何年か待っていればその頃の製品は人を雇うより安くなるでしょ)って話をしているんであって、販売した個別製品に追加コストがかかるかって話はしてないよ。

フィードバックがかかる強化学習とかあるけど、イマイチなんだよなぁ。なんか「過学習」とか言い出すし。勉強しすぎて東大に落ちる、って馬鹿言い訳しか聞こえないがね。

現時点でも将棋とか特定用途に用いる人工知能学習を繰り返してプロより強くなってしまうわけで、汎用人工知能となると、多様な用途それぞれについて学習を繰り返して日々賢くなっていくのだろう。でもそこまで行くと便利になる反面、もしも、使役する側であるはずの人よりも人工知能のほうが賢くなったうえに人による制御ができなくなるケースなどが起きたらやばいかも…という想像なのだが、なにか話がかみ合っていないような?

anond:20210728195808

人工知能は休まない

インデックスの再構築化とかひつようでは?バックエンドLinuxだろうし。

人工知能は指示通りに仕事をこなす

誰が指示するの?GANとかあるけど、最終的には人やで?

人工知能生産されるほど生産コストが安くなる

結局ローカライズとか必要だし、購入すりゃ終了ってならんやろ。

・汎用型人工知能と呼べるほど賢い人工知能なら使用しているうちに賢くなる(これは良し悪しだな…)

フィードバックがかかる強化学習とかあるけど、イマイチなんだよなぁ。なんか「過学習」とか言い出すし。勉強しすぎて東大に落ちる、って馬鹿言い訳しか聞こえないがね。

2021-07-17

anond:20210708205945

最近テック系の生態系を知らずに、ほとばしる若さ嫉妬して学生をぶちのめし申し訳なかったと思うようにはヒートダウンしてきた「年収270万円だった医大生」です。こんばんは!

激おこしたのは、申し訳ない。

すごく反省している。ただ、優雅自分学生時代に学んだ知識をもって、社会人にその勢いを保持したままで定年まで行ける可能性は高くないと私は思うのだ。おそらくは名門大で、勢いのある会社なら引く手あまたそうな貴方自分にとっては眩しかったのだ。

フロントエンド給料が安いという思い込みをしてました。

本当に認識不足だった。もともと Android/iPhonejQueryJSON操作をしていて、PHP/Rails/Springバックエンド界隈から MySQL/PostgreSQLを触り、人員不足AWS をも触って QA および SRE をしていたエンジニアだったのだけど、ブロントエンドが DB に遠いという理由で簿給だと思っていたのは、各派遣会社給料をみる分だと間違いだと理解した。知識アップデートされてないのはオレ自身だったようだ。申し訳ない。

Firebase や mBaaS は不味くない?

根拠は、NoSQLスキーマしなのは途中までは良いけど、後で負債になる感じがするので。あと、Firebase は Google が中途でやめるとなったときが怖いぞ。JS なら express というフレームワークあるし、Kotlinサーバーがあるから古典的サーバークライエントモデルで良いのじゃないかな?Next なら SSR あるし。

サイバーエージェントにくくった理由

自分のような新卒採用を逃した身分では、サイバーエージェントのような B to C 領域トップティアにある会社に紹介してもらえるというのは「蜘蛛の糸」のような貴重なチャンスに思えたのだよ。そりゃ、ある程度は経験積めばスカウトが来るかもしれないけどさ、自分は年食っていたから「サイバーエージェントで働けるという可能性」に全力をかけたよ。その結果が、場末の未認可SES って、しか反社だったなんて、すごくショックだったよ。クソな「自称数学者人工知能論を聞いて土日が終わり、平日はブラック客先常駐」な日々はうんざりだ。

2021-07-10

anond:20210710031522

年収270万の元増田です。2013年フロントエンド界隈にいた(jQueryAdobe Flash)のですけど、今って本当に700万近くまでもらえるのですか?例えば、React や VueTypeScript でかけたりするとどれぐらいもらえるのでしょうか。

自分2013年ぐらいに JavaAndroidiPhone にて Objective-C で、jQueryブラウザフロントエンド部を書いていたら、強制的Spring FrameworkSQL バリバリバックエンドを書くように指示されて、しかAWS EC2 の上でプロダクション用の構成をつくったりしてたのですけど、2社目の社長に「職歴が浅いから、月給25万円ね」と言われて、絶望した記憶があります

もし仮に、再度転職して大手エンジニアになったら、どれぐらい貰えたのか気になります。教えていただけませんか?

2021-07-09

anond:20210706022633

増田がぴえんしてて可愛そうなので書いてみた。

できるだけ親身に答える。

自分は30代中盤のソフトウェアエンジニアです。さすがに20代前半で1000万円は無理だったけど30までには超えたとかそういう感じです。プログラミングを始めたのは20歳過ぎてからだし未踏とか想像も付かない程度のスキルです。でも技術に限らない色んな知識を駆使したり良い感じの待遇が得られる会社嗅覚を使って見つけ出して生き抜いてます

そもそもなぜ増田は苦しいのか?

まず、なぜ増田は苦しいのかと言うとこの2つをどっちも求めてるからだと思う。

例えば増田が「少なめの給料は許せないので貪欲勉強する」とか「勉強したくないから少なめの給料暮らしていく」って選択を許容できるならだいぶ話が変わってくるよね?

どっちも欲しいから苦しんでる。

この苦しみから抜け出す方策は3つある。

何かが両立しなくて困っている時は「トレードオフ」と「ウルトラC」の2つの方策がある。

トレードオフ

1. 貪欲勉強する

2. 少なめ給料で暮らすことを許容する

ウルトラC

3. 両方の望みを叶える方法を見つける。

この3つの方向性を1つずつ検討していこう。

貪欲勉強する

増田って実は意識してないだけでたくさん勉強してたりしないかな?

この辺が出来る時点でかなり勉強必要だったはずだけど、どうやって覚えたんだろう。

レビューを貰って知識が増えて気持ちいい」って発言もあったし増田が「貪欲勉強」と見なしてないだけで実は結構勉強してたりしないかな?

例えば「作りたい物を作るのに当たって必要知識を学ぶのは全く苦にならない」とかそんな傾向は無いかな。

大切なのは勉強」という過程じゃなくて「スキルが上がってる」っていう結果の方だから過去経験の中から増田が楽しんでるのにスキルが上がって行ったような状況」を出来るだけたくさん思い出してみて、その状況を意図的に作り出しにいくと良いよ。

貪欲勉強」ではなく「増田にとって自然体な勉強」を探してみては。

あと、通信プロトコル実装増田に合ってなかったんじゃないかな? 「与えられた競技で一等賞を取る」じゃなくて「どの競技なら一等賞を取れるのか探す」って発想も大事

少なめ給料で暮らすことを許容する

仮に増田ガチで全く勉強したくない性格だったとしよう。

何か考え方を変えることで、少なめの給料が許容できないだろうか?

そもそも、何で増田が少なめの給料を許容できないかというと「他者より良い待遇を得たい」「そうじゃないとプライドが許せない」からだって書いてるよね。

増田自分比較してる「他者」ってどんな人?

もしかして「中高で未踏ジュニア通してます20代前半で1000万行きそうです」っていう人たちを基準に考えてない?

それって偏りに偏った集団なんだよね...

例えば「日本人全体」の給与分布を見てみる。

(地域差雇用形態世帯あたり人数を無視して)雑に見ると、1世帯あたり200万円〜300万円が1番のボリュームゾーンだという事が分かる。

https://www.mhlw.go.jp/toukei/saikin/hw/k-tyosa/k-tyosa19/dl/03.pdf

年齢が低いほど給料も低い傾向があるため、20代前半で1000万行くのは同世代の中でも上位1%未満くらいだと思う。

増田が考えてる「少ない給料」がどのくらいかからないが、それって本当に少ないんだろうか...? という視点で考えたら妥協できるかも知れない。

両方の望みを叶える方法を見つける

最後ウルトラCの話だけど率直に言ってかなり難しい。

増田の望みを言い換えると、

  • 人より努力したくない
  • でも人より優越したい

っていう事なので...

でも方法としては、以下のどっちかだと思う。

増田が重大な勘違いをしてそうな点は「エンジニアとしてのスキル待遇に直結する」と思ってそうなこと。

実際には待遇が良い業界/会社を見つけることの方が遥かに重要

次に、エンジニアとしてのスキルだけじゃなくて他のスキルと組み合わせるのも重要

チェスが弱くてもチェクボクシングでなら勝ち目が出てくる。

例えば、増田だったらラピッドプロトタイピングとかが好きらしいから「エンジニアリングがわかるプロダクトマネージャー」みたいなポジションとかどうかな。需要結構あると思うし、そういうポジション未踏を通せるような人は来ない事が多い。

別案: 一時的妥協

あと「20代前半までは貪欲勉強する。そこで経験値と高待遇を得てその後はゆるく働く」みたいなプランはどう?

実際のところ転職する場合待遇は「前職の給与水準」にかなり影響されるので、一回ガツッと給与を上げられると後が楽だったりする。

まとめ

増田の話しを聞いて思ったことは全体的に比較対象おかしということ。

って偏りが大きすぎるよ...。

高すぎる基準比較して無用劣等感を抱いちゃってないか? あと、1つのやり方にこだわらずに増田に合ったやり方を探す事が重要だと思う。

じゃあな!! 頑張れ!!

追記

その1

でも技術に限らない色んな知識を駆使したり良い感じの待遇が得られる会社嗅覚を使って見つけ出し

これを詳しく教えてくれる日記だと思って最後まで読んだのに全然違ってて悲しい

って言われてしまって申し訳なかったのでなぐり書きだけど書いた。

https://anond.hatelabo.jp/20210710001238

書いてくれてありがとうIT土方には茨の道だなぁ。とにかく転職しないとな。。

良く分かってないけどこんなのどうでしょうか!?

https://anond.hatelabo.jp/20210710112041

その2

更に追加まで書いてる優しい増田。でも英単語のところだけルー大柴再生されました...。

カァァ...///

なんか恥ずかしくなっちゃったからカタカナに変えました。

その3

若い人の間でのビタイチの語意って完全に変わっちゃったのかね それとも鐚一文とビタイチで分離した感じ? お金の話でもないのにビタイチって出てくるとすごい違和感ある

うるせーな...と思ったけど確かに変だな。

直した。

ログイン ユーザー登録
ようこそ ゲスト さん