はてなキーワード: コンポーネントとは
AI(特に生成AI)の急速な進化により、「フロントエンドエンジニアが不要になる」「仕事がなくなる」という言説は、近年非常に多く聞かれます。
結論から言うと、「単純なコーディングやボイラープレート(定型文)を書く仕事は消えるが、フロントエンドエンジニア自体は消えず、役割がより高度な領域へ変化・進化する」というのが、多くの専門家や現役エンジニアの共通認識です。
具体的な状況は以下の通りです。
AIは、従来のコーディングプロセスを劇的に変化させています。
定型業務の自動化: UIデザインからHTML/CSS/コンポーネントコード(React, Vue.jsなど)への変換はAIが非常に得意としており、人間がゼロからコードを書く必要がなくなっています。
API連携・テスト生成: API連携のパターンやテストコード、デバッグ作業もAIで効率化されている。
「Vibe Coding(フィーリングコーディング)」: 曖昧な指示からアプリのプロトタイプを爆速で作れてしまうため、初期段階のフロントエンド実装がいらなくなる。
AIは「実装」を高速化しますが、「設計・判断・最適化」は依然として人間に依存します。
要件の解釈と複雑な設計: 曖昧な顧客の要件から正しいUI/UXを設計し、パフォーマンスを最大化する構造を考える能力は人間にしか難しい。
10%の仕上げ(ポーリッシュ): AIが生成した90%のコードをレビューし、修正・最適化して実用化する「最後の10%」の作業は人間が担当する。
アクセシビリティ・セキュリティ: アクセシビリティの確保やセキュリティのチェック、パフォーマンスの微調整など、人間中心の細やかな対応が求められる。
AIツールの活用能力: AIを道具として使いこなし、開発速度を10倍、100倍にする「AI駆動型」エンジニアの需要が高まっている。
AI時代には、単なる「コーダー」ではなく、以下の視点を持つエンジニアが生き残ります。
フルスタック化・UI/UXへの進化: フロントエンドの知識だけでなく、バックエンドやUI/UXデザインまで理解し、ビジネス全体を見渡せる人材。
AI駆動開発の習得: CopilotやCursorなどを駆使して、開発プロセスを自動化・効率化する。
深い専門性の追求: AIには代替しづらい、Web技術の深い知識や、特定フレームワークへの高度な熟練度を高める。
つまり、AIはフロントエンドエンジニアの「敵」ではなく、「面倒な作業を奪ってくれる強力なツール」となり、人間のエンジニアはよりクリエイティブな課題解決に集中できるようになると考えられています。
CLAUDE.md や rules / skills みたいな形で、重要なコーディングルールはあらかじめかなり固めておく。
たとえば repository 層や Entity 層は具体的にどう書くのか、テストケースはどういう書き方をして、どういう観点で項目を洗い出すのか、みたいな AI への指示は最初から用意しておく。
あと、linter や ArchUnit、dependency-cruiser みたいなアーキテクチャ制約も、自分なりの定石を持っておく。
割と過剰なレベルでガチガチに固める感じで、アーキテクチャルールも「◯◯は XXX に依存できない」みたいなブラックリスト式じゃなくて、「◯◯は XXX だけに依存できる」みたいなホワイトリスト式の方が良いと思っている。
ts 前提だと eslint や tsconfig は一番厳しい水準に設定する、流石にきつい部分でてきたらそこだけ緩める、という運用
おすすめなのは、何かしらの小規模案件や個人開発アプリを1つオーバーエンジニアリング上等でガチガチ構成で作っておく。
そこで出てきた linter 設定やプロンプト設定を、別案件に横展開する感じ。
正直、ガチガチすぎると MVP とかレベルだとコード量は増えるけど、メンテする前提の案件ならバイブコーディング時代だと普通にペイすると感じている。
アイディアを思いついたら、AI と壁打ちしながら仕様を洗い出していく。
手書きでドメイン図を書いて、それを写メ撮って画像認識で仕様整理、みたいなのも割とアリだと思っている。
どういう画面があって、どういう入力項目や表示項目が存在するか、バックエンドはどういうエンドポイントが必要か、この辺りは最初に一通り洗い出しておく。
それに加えて、ユーザーが初めてトップページを開いてから登録・ログインして実際にサービスを一通り使うまで、みたいな流れをそのまま Playwright のシナリオテストに落とせそうな形で何パターンか仕様書にしておく。
フロントエンドで、DDD における集約みたいな概念がそのまま当てはまらない領域についても、設計時点で洗い出せているなら Entity 的なものやドメインサービス的なロジック用のレイヤを作って、ドメインオブジェクトとして実装していく。
最初に作った基本設計をベースに、◯◯Entity、XXEntity、△△Entity……を作るためのプランとチェックリスト形式の TODO を 1つの md ファイルに吐き出してもらう。
フェーズごとにフォーマッタ、linter、アーキテクチャルールなど一括実行したコマンド実行させて失敗してたら成功するまで修正繰り返させる。
ある程度わかりやすい単位で AI に依頼する感じで、出来上がったコードをレビューする前提なので、実装プランの md 自体はよほど分かりやすいツッコミどころがない限り細かくレビューしない。
mdのフォーマットは skills 側で事前に用意しておく。
フロントエンド用、バックエンド用の両方でドメイン層のファイルを作る。
当然、足りないロジックは後から絶対に出てくるけど、最初から完璧は目指さない。
TODO 一覧の中から自分の認知負荷が許す単位で「チェックリストのここからここまで実装して」と指示を出し、実装が終わったら TODO 項目のチェック状態を更新してもらう、mdファイルもコミットに含める。
コミット前にはlint ルールを無効化していないか、意図通りの実装になっているかは git diff の差分で必ず確認する。
git worktree を使うことが多い。
よくやるのはフロントエンドの画面モック作成とバックエンド実装の2並列で行う。
実装プランを考えてもらうときは「◯◯画面を実装プラン考えて」くらいの単位で依頼する。
実装プランの md ファイルを作るときのプロンプトには、基本設計の〇〇画面の項目一覧をベースに、◯◯のアイテムコンポーネント、リストコンポーネント、◯◯のボタンコンポーネント、Information コンポーネント、外部通信用の ◯◯Gateway を実装する、◯◯コンポーネントは既に ◯◯ 機能で実装してあるからそれを使って、◯◯は処理が膨らみそうだからドメインサービスで実装して、みたいな感じで頭の中のふんわりしたイメージを伝える。
バックエンドも同様で、◯◯のエンドポイントを作って、Gateway がこれこれ必要だから実装して、これはインターフェースと実装分けてね、Entityへの変換処理は関数分けて、◯◯の処理は Usecase 層で、◯◯の処理はドメイン層で、Usecase が膨らみそうだから ◯◯ の処理は独立したクラスにして、あ、似たようなのが ◯◯ 機能にあるからそれを参考にして、くらいの粒度で指示を出す。
フロントエンドの実装を待っている間に、バックエンドのプランを考えたり、タスク粒度を調整したり、リファクタリングプランを考えたりする、またバックエンドのAI待ち時間はフロントエンドのことをする。
フロントエンドオンリーの実装とかで作業が競合するリスクあるときは並列作業しない。
チェックリスト更新が終わるごとに差分を確認して、問題なければコミットメッセージを提案してもらってコミットする。
細切れにするコストよりも、レビューする人間の認知不可が許すレベルであればある程度まとまった単位でレビューして実装速度を優先する派。
テストは、ある程度実装が進んでリファクタリングが辛くなってきたタイミングで作ることが多い。
カバレッジやミューテーションテストなど、定量的にテストを評価できる仕組みは導入する。
バックエンド側のテスト実装は正直かなり楽で、行数や認知的複雑度を厳しく制限して単一責務の原則を守って実装しておけば、AI がかなり高精度なテストを出してくれる。
これもテストファイル実装プランを作ってもらって「ここからここまでのテスト20ファイルを実装してね」をレビュー挟んで繰り返す感じ、例えばミューテーションテストのkill率100%ならそんなに詳しくは見ない。
フロントエンドはテストの定量指標での評価が難しいので、そこはその分レビューを頑張るしかない。
自分はこんな感じでやっている。
感覚としては、優秀だけどシステムのアーキテクチャ全体の責務を負ったことはない経験不足の2年目やSESの部下を扱うEMに近いのかなぁ。
周りの話を聞いていると、もっともっと AI に自律的にいろいろやらせているようにも聞こえる。
これでも 1日1人で数万行レベルはコードを書けてるので、AIない時代に比べると数ヶ月分の成果を1日とかで出してることになるが、もっと本気出せるのかなぁ。
「全機能分プラン作ってね!そこから良い感じの粒度でコミットも自分でやってね!」みたいな指示を良い感じに出せたとしても、指示がでかすぎると、脆弱性盛々になったり、lint エラーループでパニクって linter オフにし始めたり、テスト通すためにエラー握りつぶして assertTrue(true) し始めたりする。
それは流石に許容できないレベルじゃない?が紛れ込むリスクが上がりすぎるんじゃないかなぁ。と思ってるんだがどうだろうか。。。
あとツールはあんま入れてないねkiroとかspec-kitとか、ガチガチ細切れで仕様書作るメリットもあんま感じなかった。
mcpもserenaくらいしかいれてないや、トークン節約してレートリミットの猶予伸ばした方が結局開発早くなるかなって。
いろいろ入れた方がいいんだろうか。
完全にオレオレでこんな感じでやっているんだけど、みんなspec駆動開発というものをどんな感じで、具体的にどうやっているのかが知りたい。
続き。たぶん1枚めの写真。
なお、内容物については全部を記載していない。目立つチップとか特徴的なコンポーネントを表記している。これは今後も同じ。
----
----
----
----
----
まだ続く、かも知れないけれど明日以降になるかもしれない。
https://togetter.com/li/2649566 で話題になった「箱と中身が別々になったボードゲーム」。
譲られた人が写真を上げていたので、
https://x.com/niko252529/status/2009453466520047664
基本的に上段から横書きを読むような流れで。つまり左上から右上に行き、最初のボードゲームの次の行に移動して続ける感じ。
----
----
----
----
----
バックエンド開発だと、main.ts とか main.java みたいなエントリポイントで依存ツリーを頑張って構築するか、DIコンテナを使って解決することが結構多いじゃん?
実行時はそれで組んで、テスト時はコンストラクタ経由でモックをDIする、みたいなのが一般的だと思うんだけど。
最近Next.jsを勉強してて、バックエンドと同じ感覚でこれをやろうとしたら、まあややこしい。
ファイル先頭で直接関数を import してそのまま実行してるけど、それって密結合じゃないの? テスタビリティ低くないの?
って思って調べたら、テスト時は vi.mock とか jest.mock とかを使って、モジュールごと無理やり上書きする方法が主流っぽい。
例えば「テスト対象のコンポーネント」と「その孫コンポーネント」が異なるGatewayに依存していた場合、
しかも「サーバーコンポーネント → クライアントコンポーネント」だとPropsで関数(依存)を渡せないから、Context経由でのDIになるっぽいよね?
でもそれだと最上位でDIしたものが最下層のコンポーネントまで全部使えちゃうから、「なんだかなぁ」ってなる。PropsバケツリレーもContextも、どっちもまあまあ面倒くさい。
あとバックエンドだと、こういう「モジュールをグローバルに上書きしてテスト」みたいなのって割とアンチパターン扱いされる文化が強いと思うんだけど、フロントエンド界隈だと「そういうもんだ」って割り切るのが普通なのかな?
みんなはどんな感じで単体テスト書いてるの?
中国のWS-10エンジンのレスポンス(応答性)に関する具体的な数値(秒数など)は公開されていません。
しかし、初期のバージョン(WS-10A)は、ロシアの同等エンジンであるAL-31と比較して、推力を発生させるまでに「遥かに長い時間」を要したと報告されています。
これは、初期のWS-10Aがロシア製エンジンに比べて技術的に未熟であったことを示唆しており、当時の中国航空産業の課題を反映していました。
しかし、その後の改良型(WS-10B、WS-10Cなど)では、材料の改善や新しいコンポーネントの導入により、性能と信頼性が大幅に向上しているとされています。
最新のバリアントは西側の同等エンジンに匹敵する性能パラメーターを備えていると評価されており、応答性も改善されていると考えられますが、詳細なデータは機密情報のため不明です。
あーこれ?
可能です。しかも確実に信頼できないノードがわかっているという条件は、トラストランク(TrustRank)やアンチトラストランク(Anti-TrustRank)の発想と非常に相性が良いです。
以下、理論的にどう扱えるかを、X(旧Twitter)のような拡散ネットワークを想定して論理的に説明します。
この情報だけで、信用度の低い可能性が高いノード(疑似スパム)は推定可能。
しかし、信用できるノードは状況次第で推定可能だったり不可能だったりする。
悪ノードの集合がわかるだけで、そこからの影響を逆流追跡すれば、怪しいノード集合を特定できる。
悪ノードに汚染されているかどうかは決められるが良ノードであるかどうかは追加の前提がないと決まらない。
グーグルのTrustRankは良ノード集合をシードにして信用スコアを伝播させるが、Anti-TrustRank は逆で、悪いノードから不信スコアを伝播させる。
Xの例だと
悪ノード → A → B → C
C と Z は悪ノードから距離が遠いが、もしそれ以外のネットワーク構造が不明なら、CやZが信用できるとは論理的に確定できない。
理由は簡単で、善を証明できるには良ノードのシードが必要で、悪だけでは悪の汚染のみがわかる。
以下の前提を1つでも置けば、信用できるノードの推定が可能になる。
1. 悪ノード集合を基点にする
2. グラフを逆方向に探索し不信スコアを伝播させる(減衰付き)
4. 巨大クラスタで異常指標が低い部分を相対的に信頼性が高いと推定
という3層に分類する。
悪を塗りつぶす → 残った未塗り部分が大規模な自然クラスタであれば、それを信用側とみなせる。
ChatGPT:
はい、Delphi(Object Pascal)のソースも読めますし、解説・リファクタ・バグ箇所の指摘・他言語への移植案など対応できます。
VCL / FMX、Generics、Interface/RTTI、プロパティ/イベント、レコード・セット型、メモリ管理(string/AnsiString/UnicodeString の違い)、スレッド(TThread / TTask)、WinAPI/COM 呼び出し、uses 単位構成、.dfm(フォーム)やリソース周りもOKです。
コードを貼ってくれれば、1ステップずつ説明や改善案を出します(DelphiのバージョンやVCL/FMXも書いてあると精度上がります)。
UNIFACEはどう?
ChatGPT:
はい、UNIFACE(Proc言語)も対応できます。フォーム/サービス/レポート/エンティティなど各コンポーネントのトリガ(initialize, validate, leave field など)、operation/entry、newinstance/activate/call、retrieve/e, read, write、エラー制御($status, $procerror)や論理名・assignment(.asn)、署名/パラメータ、DSP/REST・SOAP連携、DBドライバ設定までOKです。
コードや .asn を貼っていただければ、処理フローの解説、バグ箇所の指摘、リファクタ、他言語・他フレームワークへの移植案(例:REST API化、Java/Python 置き換え)まで具体的にやります。
可能なら UNIFACE のバージョン(9/10/10.4 など)、DB(Oracle/SQL Server 等)、OS を添えてください。
増田の投稿をChatGPTに聞いたら、次のような答えが返ってきたよ。
----------
この投稿はインパクト重視の論調で書かれていますが、内容にはかなりの誇張と誤解が混ざっています。
確かに「Apps in ChatGPT」のような機能は、ユーザー体験の一部を「チャットUI」に統合する可能性を持っています。しかし、それが「フロントエンドエンジニア=不要」という結論にはなりません。
人間が情報に触れるには、必ず何らかの「インターフェース」が必要です。AIが自動生成しようが、それを心地よく見せ、操作しやすくするための設計原理(アクセシビリティ、情報設計、心理的デザイン)は残ります。AIがHTMLを生成するようになっても、「どのような体験を提供すべきか」を定義するのは依然として人間です。
次に、Apps in ChatGPT=Webの終焉という見方も現実的ではありません。
これは「一部のユーザー行動の置き換え」にすぎません。人々がすべての行動をチャット上で完結させたいとは限らず、ビジュアル的な体験(ゲーム、ECのUI、SNS、動画編集、ダッシュボード操作など)は、テキストUIよりも視覚的UIの方が圧倒的に優れています。Spotifyの例にしても、ChatGPT上で曲を探すことはできても、音楽体験そのものはSpotifyアプリ内のインターフェースで完結したほうが豊かです。
さらに言えば、「AIがUIを描く」時代は「フロントエンドの再定義」の時代です。
Reactコンポーネントを手書きする仕事は減るかもしれませんが、「AIに指示してUIを生成し、それを調整する」役割は残ります。人がHTMLを書かなくても、ユーザー体験を設計する力・AIが生成したUIを検証する力・アクセシビリティやブランド整合性を担保する力が求められるようになります。
一方で、この投稿が指摘している**「構造を設計できる人の重要性」**は確かに的を射ています。
API設計、データスキーマ、セキュリティ、AIと連携するバックエンド構造への理解はますます価値を増します。UIの自動生成が進むほど、裏側の整合性・信頼性を支えるエンジニアリングが中心的になるのは確かです。
要するに、フロントエンドは「消滅」ではなく「変質」していく段階に入っています。コードを書く職種から、AIを使って体験を設計・制御する職種に移行していくというのが、現実的な見立てです。
この一言に尽きる。
ChatGPTの新機能「Apps in ChatGPT」が登場した瞬間、フロントエンドという職種の地盤は音を立てて崩れた。
これまでは、Webアプリやサービスは「フロントエンドでUIを作り、バックエンドでデータを返す」
という分業構造の上に成り立っていた。
だがApps in ChatGPTは、その構造をぶち壊す。
ChatGPTのチャット画面内でSpotifyを操作し、Zillowで物件を探しEtsyで買い物をする。
あなたが書いてきたReactコンポーネントもボタンもフォームもすべてAIに吸収される。
もはやユーザーはブラウザを必要としない。URLをコピペすることも無くなるだろう。
「このホテル予約して」と言うだけでAIがAPIを呼び、レスポンスをカルーセル形式で提示する。
ReactもNext.jsも「人間が画面を操作する前提」で存在していた。
でもその前提はもう終わった。
AIがデータを直接受け取り、AI自身が人間に見せるUIを自動生成する。
あなたが設計した美しいフォームもAIにとってはただの "action": "submit" という構造情報にすぎない。
Apps in ChatGPT以降の世界では、
これらが新しいUIだ。
だからこれから必要なのは「見た目を作る人」ではなく、AIが読み取れる形式で世界を記述できる人 だ。
バックエンドに戻れ。
Apps in ChatGPTが意味するのは、
今後必要なのは、AIが扱いやすいデータスキーマを定義する力や認証・権限・トランザクションを安全に扱う力やMCPやWeb APIをAIが使いやすい形に整える力だ。
これは警告だ。猶予は短い。
Apps in ChatGPTの登場は、「AIがUIを直接扱い始めた」という歴史的転換点だ。
あなたがフロントにしがみつく間に、AIはすでにあなたの代わりにUIを描いている。
5年後にはブラウザから色んなサイトにアクセスするという行為は一部のマニアだけ行うものになっているだろう。
もう時間はないぞ。急げ
経歴書を見て、ちょっと引いた。
GitHubのスター数が現実離れしてるし、技術ブログも見たことない分量。
使える技術は自分の三倍。React、Vue、Go、Rust……カタカナを追うだけで手一杯だった。
「また意識高い系か」
隣の田村が呟く。俺も同じことを考えてた。
古いコードを一目見て渋い顔をする。会議で「そろそろモダンな構成にしませんか」みたいな提案。
コードレビューは容赦なし。「ここ、コンポーネントに責任持たせ過ぎですね」「エラー処理、もっと丁寧に」「テストコード、当たり前に書きましょう」。
ひたすら正論。
うざかった。
俺たちがどうして汚いコードを書いてるか、この男には分からない。
毎日終電、土日は障害対応で呼び出されて、ただ“動くもの”を積み上げるしかないんだ。
俺たちが一週間かかる仕事を、三日で終わらせてくる。
正直、悔しかった。
前職を調べた。同僚が「有名Web系だったらしい」「やっぱり恵まれてるよな」と言う。
自分はSIer、古い文化に浸かりきった人間。あいつは最初から違った世界の住人。
最初から条件が違うのだから、そりゃ勝てるわけがない、そう思っていた。
「実は俺、文系です。完全未経験からSIerでCOBOLとJavaだけで食ってたんです。毎日終電、土日も当然出勤」
……俺たちと同じだ。いや、むしろスタートはもっと後ろだった。
それでも佐々木は毎朝5時に起きて、出社前2時間、帰ってからも1時間。
土日は技術書を読み倒し、何年でも続けた。
「4年やりました。最初の転職活動は100社受けて全滅。でも勉強して、2回目でやっとWeb系に引っかかりました」
7,000時間近く積み上げて、そこにいる。
俺はと言えば、「環境が悪い」「仕方ない」「時間がない」と言い訳して、家ではYouTubeとゲームだけ。
土日もゴロゴロして何も変えなかった。
才能でも環境でもない。ただ、努力したかどうか。それだけだった。
素直に屈辱を噛みしめ、うなずいた。
明日から一緒に朝活を始める。1時間だけでも、たぶんそれでいいんだと思う。
朝活は、正直きつかった。
寝不足のまま早朝の会議室に集まってコーヒーを流し込み、黙ってテーブルを挟む。もちろん最初は普通に勉強だ。
けれど、だんだんと慣れてくると、俺なりの意地も芽生えてきた。
「ああ、昨日この分野を調べてきたんだ」
「なるほど、そっちの技術ではこうやるのか」
ただ教わるばかりじゃ悔しいので、眠い頭で資料を漁って少しでも佐々木に食らいつく。
知識の差は大きい。でも、佐々木も意外と勝負事が好きらしい。「今日はどっちが新しいツールを導入できるか」みたいな余計なルールまで作り出し、コードレビューでお互いをねちねちいじり始める。
気がつけば、朝活は勉強会というより妙な競争の場になっていた。
「あ、そっちの書き方の方が効率いいな」
「また変なイースターエッグ仕込んでる」
仕事でも張り合うようになった。
些細な設計やリファクタリングの方針ひとつで、絶対譲れなくて熱くなった。むきになって議論する。
他のメンバーには「仲悪いのか」と言われたけど、本人たちは別に悪い気がしない。不思議な高揚感。
次第に会社での評価も上がっていた。成果が出ると、お互いに無言でアイコンタクト。
なんとなく、ライバルってやつになっていた。
飲みに誘ったり、逆に誘われたりすることも増えた。くだらない愚痴をこぼし合い、バグの話で夜中まで笑った。
仕事が終わった金曜に、そのまま繁華街で朝まで過ごすこともあった。
ある日、こんな風に、飲みに誘われた。
静かな居酒屋、少しアルコールが入る。気づけば昔話になり、くだらない話、恥ずかしい話、お互いの情けなさをさらし合う夜。
気付いたら閉店まで二人だけ、なぜか離れがたくて、一緒に深夜の街をふらふら歩いた。
妙な感情が残った。
帰り道、不意に言葉がこぼれる。
「なんかさ、お前といるとずいぶん楽なんだよ」
「……わかる。俺もそう」
見ればわかるくらい、距離が近づいた。
休日に技術イベントがあれば二人で出かけ、休日の帰り道は自転車を並べて走った。
日曜の朝、駅前の喫茶店で合流して、黙ってノート開いて並んでいる時間が、いつの間にかすごく安心するようになった。
仕事も私生活も地続きで、ただ一緒にいることが普通になっていく。
もしかすると、お互い惹かれたのかもしれない。でもはっきり「好き」と言うのは、たぶん、もっと先になる気がする。
この歳で、こういう物語があるとは思っていなかった。でも悪くない。
淡々とした毎日のなかで、少しずつ少しずつ、何かが変わっていた。
もう結構まえからWindowsの機能アップデートは爆弾とか地雷とかそういう感じなのですぐにアップデートするメリットは無い。
肝心の追加される機能も待ちに待ったようなすげーものであることはまず無いので半年くらい遅らせても困ることは無い。
以下やりかた(Pro版)
3.[コンピューターの構成] → [管理用テンプレート] → [Windows コンポーネント] → [Windows Update] → [Windows Updateから提供される更新プログラムの管理]とたどる
4.[プレビュー ビルドや機能更新プログラムをいつ受信するかを選択してください]を開き、 "有効" にする
3ヶ月前、うちの開発チームに新しいエンジニアがやってきた。佐々木(仮名)、29歳。
経歴書を見た時点で、正直ビビった。
React、Vue、Next.js、TypeScript、Go、Rust、Docker、Kubernetes…もう何がなんだかわからない。
「また意識高い系が来たよ」
俺も同感だった。
レガシーなコードを見て「これはちょっと…」みたいな顔をする。
と提案してくる。
うぜぇ。
そんな中で何とか動くものを作ってるんだよ。
綺麗なコードなんて書いてる余裕ないんだよ。
3日で仕上げてくる。
悔しかった。
「やっぱりな。恵まれた環境にいたから、あんなことできるんだよ」
俺たちは佐々木を妬んでいた。
そう思っていた。
ところが先週、佐々木と飲みに行く機会があった。
新卒で入った会社は、まさに俺たちと同じようなSIer。Java とCOBOLでレガシーシステムの保守をやっていた。
でも、佐々木はそこで諦めなかった。
土日は技術書を読み漁り、
オンライン講座を受講し、
個人開発を続けた。
「平日は合計3時間、土日は10時間以上勉強してました。それを4年間続けました」
俺は計算した。
=6,880時間。
「最初の転職活動は100社受けて全部落ちました。でも諦めずに勉強を続けて、2回目の転職活動でようやく今のレベルの会社に入れました」
俺は恥ずかしくなった。
佐々木を「恵まれた環境にいたから」と妬んでいたが、実際は俺たちと同じ、いやそれ以下のスタートラインから、血のにじむような努力で這い上がってきた人だった。
俺は何をしていた?
「環境が悪い」
「時間がない」
そう言い訳して、
家に帰ったらゲームして、
努力の量だ。
「今からでも遅くないですよ」
と佐々木は言った。
恥ずかしかったけど、頷いた。
毎朝1時間でもいい。変わりたい。
29歳。まだ間に合うよな?
言いたいことは分かるけど、ノイジーマイノリティではなくて、視野が狭い人の特徴だと思う。で、それらはマイノリティかというとマジョリティじゃねえかなって。根拠はないけど。
例えば
やりたい仕事って大企業のオフィスワークみたいなのだろうけど、そういうキラキラ仕事って有名大学でてないとできないからね。
高学歴以外でそういう職場に入れても派遣とかになるから、可処分所得を考えると地方のがマシっていう。
あとはスキルアップ繰り返した結果入れる感じかな。
この実態ってどれだけの人が知ってる?
大企業入ったことがある人、あるいは少なくとも大企業とお付き合いのある人じゃないと分かんないんじゃない?これ。
ドラマなんかで、未だに
みたいな表現になるじゃん。
あれはテレビ屋が実際に一般企業で働いた事が無いから、大企業のコンプライアンスレベルとか今どうなってるのかわかんなくてこう言う表現になっちゃうわけよ。
で、そんな解像度の低い表現をみて、東京行けば高層ビルでキラキラオフィスワークができる!って思ってしまって行ってしまうのは仕方がねえんじゃねーかなって。ある程度さ。で、NHKの報道にできていた人たち、どれぐらいの幅でそう言った視点持ててる?ってのは疑問だよね。
地方移住の現実とか言われるけど、上京の現実みたいなのもちゃんといるんじゃね?って思う。
だから横の旅(地域を横断した旅、違う地方に行く、都会に言ってみる、外国を見に行く)だけじゃなくて縦の旅(違うコミュニティを見てみる、階層を超えてみてみる)事が大事なんだよ。大企業の連中も中小企業のリアルなんてわかんないでしょ。逆に。
で、今のこどもたちはこれを超える教育を受けてるんだよな。地元にある会社に依頼をして、仕事体験フェアみたいなことをやっている。キッザニアやKandoみたいなやつのミニ版。小中学生向けのやつから、高校生向けのもうちょっとがちな奴、大学生のもあったかな。大学生まで来ると殆ど求人とかわんなくなるけど。内容は地元の企業が自分のところの製品を持ち込んで、どんな仕事をしているかを説明していながら、実際に一部体験するという内容。製造している車のコンポーネントを持ってきて最後の組立をやらせたり、木工会社がCNC加工機持ち込んで彫刻作ったり、測量会社がドローンを飛ばしたり、病院が採血練習用の模擬腕もってきて注射体験ができたり。
営業の仕事だと地方でも普通に女性がやってると思うけど、単にその企業が女性に営業させなかったというだけな気がする。n=1みたいな。その地方を代表するような企業だったんだろうか。
こういうのの実態を見る事ができる。少なくともn=の数に足しにはなって、今の会社がまずくて他の会社に転職すりゃ思った仕事ができるって知れるのか、それとも都会にはキラキラ仕事があるから上京しますみたい夢の方を信じてしまうかをちゃんと選べるようになるんだよね。
キラキラ仕事を得るには努力しなきゃいけないという事も、キラキラ仕事をやってる人たちはそれ相応に犠牲を払って努力した結果でそこにたどり着いていると言う事も理解できる。そうすりゃ、希望する人はちゃんと努力する道も選べるってもんでさ。
昔ながらのPHPとテンプレートで動いていた大規模システムを、Next.jsベースのモダンな構成に置き換えるプロジェクトをやったんだけど、これがなかなかうまくいかなかった話。
1年以上かけて、コンポーネント化されたNext.jsアプリとして開発を進めて、見た目もコードも“今どき”になった…はずだったんだけど、完全な置き換えはできず、結局は既存のPHPシステムと共存させる形に。
その間、運用人員がいなかったから他社に協力を依頼して、お金もかなりかかった。
でも、いざリリースしてみると、「誰がどこを触れるのか分からない」「直したいけど全体の影響が読めない」みたいな状態になり、むしろ運用の手間は以前より増加。タスクは溜まり続けている。
ぶっちゃけ、従来のシステムのままで運用していた方が、楽だった面も多い。
もちろん、古いシステムに限界がなかったわけじゃないけど、今は「置き換えた結果、前よりもしんどくなってる」状態で、結構困ってる。
「古いけど運用実績があって、そこそこ動いてるシステム」を「最新の技術で綺麗に作り直す」って、理想はあるけど、現実的には時間もお金もかかるし、引き継ぎやドキュメント、周辺業務の整備まで考えると、運用の現場がついていけなくなることも多い。
しかも、複雑な状態になると、関わるエンジニアの数も制限されて、どんどん属人化していく。
会社やめたほうがいい?
何度キャッシュを削除したりしても
や「コンテンツが利用できません」「コンテンツサーバーに接続できません」みたいなエラーメッセージでダウンロードが失敗するようになったPCがある。
今回、回避に使った手法は、正常に動作する別デバイスでダウンロードし「ゲームファイルをローカルネットワーク経由で転送」機能を使い迂回する方法。
実際に有効になるかは自動識別みたいなので、設定を有効したら再起動したり、既に進んでいたキャッシュを削除してみたりするのも効果があるかもしれない。いかんせん再現性を調査しにくいものなのでいかがでしたかレベルの話になるが…備忘録である。
再販可能コンポーネントは転送できないようだが、これはセキュリティソフトの一時停止、steamの管理者権限での実行、更新の連打などまあ通りいっぺんの方法でなんとか突破してほしい…
D−1 20:00 JST、パートナー個体との外食セッションをスケジュール通り実行開始。
プロセス稼働中、内蔵フィジカル・モジュール(腹部サブシステム)に軽度の不具合シグナル(PainFlag=TRUE)が発生。
座席離脱時、携行ユニット(Bag)からウォレット・モジュールを物理抽出し、ポケット・ストレージに再配置。
この操作は純粋にリスクマネジメント層のアルゴリズムに従った結果であり、感情層の意図はゼロ。
トイレからのリターン後、相手個体の感情UIにおいて「Smile」「Neutral」コンポーネントが非表示化、
代わりに「Irritation」コンポーネントがフルスクリーンで描画される。
【フェーズ3:原因解析】
帰路において感情ログが開示され、WalletRemovalイベントが**"TrustViolationException"**として処理されたことが判明。
相手個体の推論エンジンでは「ウォレット携行=不信感」というIF文がハードコードされている模様。
本ユニット側では当該行為はISO/IEC 27001準拠のセキュリティオペレーションと認識しており、信頼スコア(3年連続稼働)に影響なしと評価。
逆に同様のアクションを相手個体が実行した場合、"WellDisciplined()" 関数を返す仕様。
①「国または知識はこれでよろしいですか?」の画面から「Moicrosoftアカウントを追加しましょう」の画面の間に「Shift」キーと「F3」キーと「Alt」キーを押す。するとコマンドプロンプトが表示されるので、そのウィンドウを「Alt」キーを押しながらマウスでクリックしてアクティブにする。
②「start ms-cxh-for-key-b:localonly」と入力して「Enter」キーを押す。Moicrofoftアカウントを作るためのウィンドウが表示されるので、任意のユーザー名とパスワードを入力して「次へ」を押す。
セットアップ終了後、
③スタートメニューなどから検索して「グループ ポリシーの編集」を起動(事前にBitRockerはオフにしておく)
④左のツリーから「コンピューターの構成」→「管理用テンプレート」→「Wandows コンポーネント」→「BitRocker ドライブ暗号化」→「オペレーティング システムのドライブ」を選び、右側のリストで「ネイティブのUEFIファームウェア構成……」の項目をダブルクリック