はてなキーワード:TypeScriptとは
昔のJSの頃も複雑で面倒ではあったけどまぁどうにかなるものだった
実行してエラーが出るところをそのライブラリの変更点に応じて変えるくらいだったし
でもTSになると実行すれば動くものなのに型エラーが山ほど出る
関連ツールも増えてしかも依存関係があるから片方だけあげて見るとかはできず全部上がる
最近あったのはこれまでだと期待通りに推論されてたところが勝手にanyとみなされるようなった
その結果あちこちに暗黙的なany の受取はダメみたいなエラー
さすがに何百ページもあるのにそれ全部に実際の型を書いてられない
型がとても複雑だから推論に任せてたのに
その原因を辿ろうにもTS自体の推論方法が変わったのかライブラリの推論させるための型定義が変わったのかわからない
深く探ろうにもライブラリが多数組合わさってるところで簡単に特定できない
そもそも原因をできたところでどうしようもないと思う
さすがにこの規模はやってられないということでアップデートはせず元のバージョンに戻した
数年もすればきっと大幅に作り直すことになるんだろうし、そのときに一から作り直せばいいんじゃないかなと未来に投げた
ただそのプロジェクトに関わるメンバーの再編でビジネスロジックの実装レベルならできるが開発環境を更新とかそういう事できる人が残ってないわけで、どうなるんだろうな
2025年、私たちはソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代を現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たちの仕事は、いずれAIに奪われるのではないか」と。
この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマの仕事の本質が、歴史上かつてないレベルで抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考を要求されることになる。
本稿では、プログラミングの歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわち「Why(なぜ作るのか)」を定義し、記述する能力の重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略の提示である。
LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。
コンピュータの黎明期、プログラミングとは、計算機が理解できる命令(How)を、一行一行、丹念に記述する作業そのものであった。アセンブリ言語や初期のFORTRAN、COBOLといった言語は、ハードウェアの制約を強く受けており、プログラマはメモリ管理やプロセッサの動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。
この時代のテストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定の入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジックと実装の詳細が密結合し、コードは特定の処理手順を記述した、硬直的な塊となっていた。
風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間の認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミング(XP)の中で、テスト駆動開発(TDD)という考え方が登場する。
TDDの本質は、単なるテスト手法の改善ではない。それは、プログラミングのパラダイムを根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマの意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。
テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーがログインボタンをクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。
この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式でソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャーやビジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである。
TDD/BDDによってプログラマの意識が「What」に向かい始めると、コードそのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンなフレームワークの存在だ。
Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQueryに代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンがクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。
しかし、Reactは「UIとは、ある状態(state)に対する純粋な写像である」という宣言的なモデルを提示した。プログラマがやるべきことは、UIの状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的に更新するかという面倒な「How」の部分は、Reactの仮想DOMと差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。
この「WhatからHowへの変換」は、様々な領域で見られる。
これらのフレームワークやツールは、いわば「特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。
現状は、この歴史的変遷の延長線上にある。プログラマの仕事は、手続きを記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。
フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定の領域に特化した変換器」であったのに対し、LLMは「あらゆる領域に対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。
前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たちに特定の「制約」を課してきた。Reactを使うならコンポーネントベースで思考し、状態管理の作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。
しかし、LLMはこの前提を覆す。LLMは、特定のフレームワークや言語の知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由な形式で「What」を伝えることができる。
例えば、こうだ。
ユーザー認証機能付きのシンプルなブログアプリを作ってほしい。フロントエンドはReactとTypeScript、UIコンポーネントはMUIを使う。バックエンドはNode.jsとExpressで、データベースはPostgreSQL。ユーザーはGoogleアカウントでログインでき、新しい記事を作成、編集、削除できる。記事にはマークダウン記法が使えて、画像もアップロードできるようにしてほしい。
この要求(What)は、特定のフレームワークの流儀に則ったものではない。複数の技術スタックを横断し、機能要求を自然言語で並べただけのものである。しかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベルの要求から、ディレクトリ構造、設定ファイル、APIエンドポイント、フロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。
これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定のフレームワークが存在しなかったニッチな領域や、複数の技術を組み合わせる複雑なシステム構築においても、AIによる宣言的プログラミングの恩恵を受けられる時代が始まろうとしているのだ。
LLMという汎用変換器の登場により、プログラマの生産性は、「いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである。
質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である。
これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーやデザイナーとの対話を通じて、日常的に行ってきた思考プロセスそのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力(プロンプト)という形で、明示的に言語化されることを要求するのだ。
やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDがテストコードという形式で「What」を記述したように、私たちは自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コードが蒸発していく未来である。
「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。
答えは、明確にNoである。
ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ず「Why(なぜそう作るのか)」という、背景、文脈、そしてトレードオフの考慮が必要不可欠となる。
簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。
これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストとシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。
LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報が必要だからだ。
これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネスの目標、組織の文化、ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。
ここで重要なのは、これまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。
私たちが技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニアの採用市場が活発だから(Why)」といった、様々な「Permalink |記事への反応(0) | 17:09
2025年、私たちはソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代を現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たちの仕事は、いずれAIに奪われるのではないか」と。
この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマの仕事の本質が、歴史上かつてないレベルで抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考を要求されることになる。
本稿では、プログラミングの歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわち「Why(なぜ作るのか)」を定義し、記述する能力の重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略の提示である。
LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。
コンピュータの黎明期、プログラミングとは、計算機が理解できる命令(How)を、一行一行、丹念に記述する作業そのものであった。アセンブリ言語や初期のFORTRAN、COBOLといった言語は、ハードウェアの制約を強く受けており、プログラマはメモリ管理やプロセッサの動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。
この時代のテストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定の入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジックと実装の詳細が密結合し、コードは特定の処理手順を記述した、硬直的な塊となっていた。
風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間の認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミング(XP)の中で、テスト駆動開発(TDD)という考え方が登場する。
TDDの本質は、単なるテスト手法の改善ではない。それは、プログラミングのパラダイムを根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマの意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。
テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーがログインボタンをクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。
この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式でソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャーやビジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである。
TDD/BDDによってプログラマの意識が「What」に向かい始めると、コードそのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンなフレームワークの存在だ。
Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQueryに代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンがクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。
しかし、Reactは「UIとは、ある状態(state)に対する純粋な写像である」という宣言的なモデルを提示した。プログラマがやるべきことは、UIの状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的に更新するかという面倒な「How」の部分は、Reactの仮想DOMと差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。
この「WhatからHowへの変換」は、様々な領域で見られる。
これらのフレームワークやツールは、いわば「特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。
現状は、この歴史的変遷の延長線上にある。プログラマの仕事は、手続きを記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。
フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定の領域に特化した変換器」であったのに対し、LLMは「あらゆる領域に対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。
前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たちに特定の「制約」を課してきた。Reactを使うならコンポーネントベースで思考し、状態管理の作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。
しかし、LLMはこの前提を覆す。LLMは、特定のフレームワークや言語の知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由な形式で「What」を伝えることができる。
例えば、こうだ。
ユーザー認証機能付きのシンプルなブログアプリを作ってほしい。フロントエンドはReactとTypeScript、UIコンポーネントはMUIを使う。バックエンドはNode.jsとExpressで、データベースはPostgreSQL。ユーザーはGoogleアカウントでログインでき、新しい記事を作成、編集、削除できる。記事にはマークダウン記法が使えて、画像もアップロードできるようにしてほしい。
この要求(What)は、特定のフレームワークの流儀に則ったものではない。複数の技術スタックを横断し、機能要求を自然言語で並べただけのものである。しかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベルの要求から、ディレクトリ構造、設定ファイル、APIエンドポイント、フロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。
これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定のフレームワークが存在しなかったニッチな領域や、複数の技術を組み合わせる複雑なシステム構築においても、AIによる宣言的プログラミングの恩恵を受けられる時代が始まろうとしているのだ。
LLMという汎用変換器の登場により、プログラマの生産性は、「いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである。
質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である。
これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーやデザイナーとの対話を通じて、日常的に行ってきた思考プロセスそのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力(プロンプト)という形で、明示的に言語化されることを要求するのだ。
やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDがテストコードという形式で「What」を記述したように、私たちは自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コードが蒸発していく未来である。
「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。
答えは、明確にNoである。
ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ず「Why(なぜそう作るのか)」という、背景、文脈、そしてトレードオフの考慮が必要不可欠となる。
簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。
これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストとシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。
LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報が必要だからだ。
これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネスの目標、組織の文化、ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。
ここで重要なのは、これまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。
私たちが技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニアの採用市場が活発だから(Why)」といった、様々な「Permalink |記事への反応(0) | 17:09
めちゃくちゃいっぱいある。
順不同、脈絡なく書いていく。
最近まで知らなかったことだけじゃなく、書いたけど結局わからんことも書く(そっちのほうが多い)。
5Sといって整理、整頓、清掃、清潔、躾だそうだ。
全部日本語じゃねーかって思った。
QCサークルとか、サークルっていうから酒でも飲むのかと思ったら普通に業務じゃないか。
簿記とか会計に疎かったので、営業利益とか経常利益とか違いがわからんかった。
ググってみても、本業の稼ぎが営業利益とか出てきて意味がわからなかった。
経費削減っていうから、会社の支出は全部経費かと思ったら、材労経だろJK
原価といっても全部原価とか直接原価とか標準原価とか次々新しい名前が出てきていまでもわからん。
雑損てなんだ?
散々計算した挙句、所得の定義が国税と地方税で違うとか温厚な俺でもキレそうになる。
税金難しすぎる。
消費税の仕組み、仮払いとか仮受けとかも知らんかった。
一番よくわからない。善意の第三者っていえば、普通に考えて、親切な人だろ?なんで事情を知らない人をいうんだよ?
ヒトのことを、法人に対して自然人というとか、お前頭沸いてんのか?と思った。
法令はそうそう変えられないから、細かいことは政令に政令に定めるとか省令に任せるってことにしといて、パブコメだけで規則変えるのって頭いいけどズルくね?
母数は分母のことじゃないとか、n=100は標本数じゃなく標本サイズだとか、そういうの。
分類とクラスタリングは違うとか、俺がなにか喋るたびに訂正される。
自転車は車道って言われても、5叉路とかになるとどの信号みていいかわからん。
降りて歩行者になってる。
仕組みがよくわからん。
なんでこんな何枚も似たような書類をいろんなところに書かないといけないのか。
事業者に書類書いて、なんちゃら福祉事務所に書いて、自治体に書いてとまあ。
自治体に提出しにいくと、これは福祉課、これは子育て支援課、年収判定は課税課、子育て支援でゴミ袋無料になるから環境課に行けとかいろいろ。
その度に住所と名前を書く。
あとイールドカーブとかも知らんかった。
なんで住所情報を管理するシステムと家族関係を管理するシステムが別なのかわからん。
ジークアクスみてるんだけど、宇宙世紀は教養なのか?知らねーよ。
もう全部わからん。
コマンドプロンプトとPowerShellの違いすらわかんないってのに、TypeScriptとJavaScriptの違いなんか興味もないわな。
下地ってなんだ?
ジェスチャーでエンジンの動きを教えてくれた人がいてさ、水平対向エンジンはこう、Vツインはこう、と熱心にモノマネしてくれたんだけど、気が狂ったのかと思った。
実は、そもそも4サイクルと2サイクルの仕組みすらわかってないんだ。
ディーゼルはまた別なんだろ?
前項でエンジンわからんって言ったけど、身の回りの電化製品とかもほとんどわからん。
株式だってよくわかってないし、先物とかオプションとかスワップとかって説明されてもわからん。
生理周期とメンタルが関連するって聞いたけど、機嫌が悪いのは生理前なのか生理のときなのか生理直後なのか。
聞くのも憚られるから、女が怒ってるときは「なんかわかんないけどホルモンのせいだな」と諦めてる。
そもそも、自民党と共産党以外、どの党がどういう支持母体でなりたってるのかわかってない。
htmlも覚えたのにcssに取って替わられるし、JavascriptだフレームワークだモダンCSSだJamstackだTypeScriptだやってらんねーわ。
先日の日曜、某IT系の勉強会に参加してきたんだけど、そこでも話題に上がったのが「AIによって人間のプログラマーは不要になるのか?」って話。
正直俺も含めてその場にいたほとんどの人間が、腹の底ではいやいや、それはないっしょって笑ってたわけ。
たとえばChatGPTとかGitHub Copilotとか、最近はTabnine、Amazon CodeWhispererなんかもあるけど、どれも便利ではある。
でも結局のところAIが書いたコードの品質をチェックするのは人間だし、プロンプト自体が難しいから結局基礎ができてないと無理だよねっていうある種の安心バイアスがあった。
でもその考え、甘かったっぽい。
聞いた話では今のAIでは分業化が進んでるらしい。
例えば、一般的な言語モデルであるGPT-4はもちろん優秀なんだけど、今はそこからさらに“ドメイン特化型”のAIが開発されていて、分野別に専門AIが配置されてる。
データベース設計ならこのAI、フロントエンドならこっち、セキュリティに関してはあっち、みたいな。
つまり何が起きてるかっていうと、素人が「こういうアプリ作りたいんだけど」ってざっくりした質問をしたとしても、AIの中で自動的に専門家AIにルーティングされて、実際にプロレベルの回答が返ってくるようになってきてる。
人間の経験とか判断力に頼っていた領域が、いよいよAIに侵食されはじめてる。
しかも進化スピードが異常でMistralやAnthropic Claude、MetaのLlama 3、Google Geminiあたりの最新モデルはすでに「構文の正しさ」や「コード全体の可読性」まで含めて自己チェックできるようになってきてるらしく、OpenAIが次に出すGPT-5では、おそらく「仕様の良し悪し」までも判断できるって噂まである。
もうこうなると、中堅レベルのプログラマーが真っ先にいらなくなる可能性が出てくる。いやマジで。
実務経験を積んでやっと「これがベターだな」って判断できるスキルが、AIにあっさり再現されるとしたらそれ以下の人材は何を武器にすればいいんだ?
正直かなりゾッとした。
俺も完全にその中堅側にいるから。
これまではいくらAIがすごくても使いこなせるのは人間だけって思ってた。
でも今後は違うかもしれない。
……たぶん、生き残るのは本当に一握りの設計思想まで含めて自分でAIを育てられるレベルのプログラマーだけになる。
言語でいうなら、RustやGo、TypeScript、Kotlinとかをベースに、フレームワークだけじゃなくて抽象化の設計思想まで一人で持てるような人。
おかげで週末はとっても陰鬱な気分で過ごす羽目になった。
・ポートフォリオのためにreact,typescriptでアプリ作成
を帰宅後や休日コツコツやってる26歳男です。現職は旅行代理店。
ビルの喫煙所で一服してたら私服の男性2名が入ってきた。このビルで私服なのはIT系の会社だけ。仮にA社とする。
喫煙所に俺とその2人の3人しか居なかった。だからA社の人達の雑談が耳に入るんだよね。
そしたら断片的だけど「DNSが〜」とか「要件が〜」とかまあ、話していたわけよ。
外部で話したらダメだろということは置いておいて、今勉強している単語たちが断片的に聞こえるわけな。
そしたら「あーならこうすればいいのか」とか「なるほどね」とかどんどん盛り上がって来ていたわけよ。課題が解決したのかな。
ただ、難しい単語だらけ。
そしてたまに聞こえる知っている単語、俺が勉強しても勉強してもよく分からない概念だったりするわけよ。
それをさも当然かのように、まるで簡単かのように話しているわけよ。
見た目は汚いおっさんなんよ。私服もヨレヨレ。無精髭生やしてさ。
けど、その難しい概念を簡単に使いこなし、それでどんどん楽しくなって行ってる(ように見える)
心が折れかけた。なんか、レベルが違いすぎた。
それでも向こうは専門職で何年もやっているだけ。そう思いたい。
そこに、スーツの若い男が入って来た。2人に混ざって雑談開始。多分新卒さんかなあ。若いし、スーツだし。
するとさ、「基本情報簡単でした」みたいなことが聞こえて来たわけよ。
なんかさ、もうさ、怖い。
なんであれが簡単になるのさ。
人種が違いすぎる。
転職、別業種にしようかな。それとも同業種への転職にしようかな。
なんかさ、もうさ、本当にさ、エンジニアさんって凄いんだね。
https://survey.stackoverflow.co/2024/technology
https://survey.stackoverflow.co/2020#technology
- | 2020 | - | - | - | 2024 |
JS | 67.7 | - | - | - | 62.3 |
Python | 44.1 | - | - | - | 51 |
TS | 25.4 | - | - | - | 38.5 |
Java | 40.2 | - | - | - | 30.3 |
C# | 31.4 | - | - | - | 27.1 |
C++ | 23.9 | - | - | - | 23 |
C言語 | 21.8 | - | - | - | 20.3 |
PHP | 26.2 | - | - | - | 18.2 |
Go | 8.8 | - | - | - | 13.5 |
Rust | 5.1 | - | - | - | 12.6 |
kotlin | 7.8 | - | - | - | 9.4 |
Lua | - | - | - | - | 6.2 |
Dart | 4.0 | - | - | - | 6 |
Ruby | 7.1 | - | - | - | 5.2 |
Swift | 5.9 | - | - | - | 4.7 |
Scala | 3.6 | - | - | - | 2.6 |
※HTML/CSS,SQL,Bash/Shell,とかそういうのは省いた
順調に伸びるPython人気、そしてTypescriptの伸びがすごいな
Javaって永遠に人気なのかと思ってたけどじわじわと人気が落ちている
PHPも長期的にみると厳しそう。
GoとRustが着実に人気を獲得。
Luaが地味に人気出てる。
- | 2020 | - | - | - | 2024 |
PostgraSQL | 36.1 | - | - | - | 48.7 |
MySQL | 55.6 | - | - | - | 40.3 |
SQLite | 31.2 | - | - | - | 33.1 |
SQLServer | 33.0 | - | - | - | 25.3 |
MongoDB | 26.4 | - | - | - | 24.8 |
Redis | 18.3 | - | - | - | 20 |
MariaDB | 16.8 | - | - | - | 17.2 |
Elasticsearch | 13.8 | - | - | - | 12.5 |
Oracle | 16.5 | - | - | - | 10.1 |
MySQL+MariaDBではまだMySQL系が多いが・・・
- | 2020 | - | - | - | 2024 |
Node.js | 51.4 | - | - | - | 40.8 |
React | 35.9 | - | - | - | 39.5 |
jQuery | 43.3 | - | - | - | 21.4 |
Next.js | - | - | - | - | 17.9 |
Express | 21.2 | - | - | - | 17.8 |
Angular | 25.1 | - | - | - | 17.1 |
ASP.NETCORE | 19.1 | - | - | - | 16.9 |
Vue.js | 17.3 | - | - | - | 15.4 |
ASP.NET | 21.9 | - | - | - | 12.9 |
Flask | 14.2 | - | - | - | 12.9 |
Spring | 16.4 | - | - | - | 12.7 |
Django | 14.2 | - | - | - | 12 |
FastAPI | - | - | - | - | 9.9 |
Laravel | 11.1 | - | - | - | 7.9 |
Svelte | - | - | - | - | 6.5 |
Rails | 7.0 | - | - | - | 4.7 |
※フロントとバックエンドがごちゃごちゃなのなんでだろう。Node.jsってフレームワークじゃないだろ・・・
Next.jsの勢いがすごい。やはりWEBはTSでNext.jsの時代なのか
Pythonの人気は盤石だけど、DjangoとかFlaskは人気が落ちてる。FastAPIに食われたか?
LaravelとRailsはこのまま消えていく予感
Speed,SEO, scalability, and developer productivity aremore critical than ever. While React.js remains a powerhouse forbuilding interactiveuser interfaces, many businesses and developers arenow leaning towardNext.js for complete, production-ready solutions.So what exactly makesNext.js amore favorable choiceover React.js in 2025?Let’s explorethe reasons in detail.
🧱 React.js vsNext.js:Core Distinction
React.jsis aJavaScript library focused solelyonbuildingUI components.
Next.jsis a full-fledgedframework builtontop of React that includeseverythingyouneed for production — routing,SSR,SEO optimization, static site generation, andmore.
In essence, React givesyou the tools to build aninterface, whileNext.js givesyou thestructure to build, deploy, andscale a completewebapplication.
🚀Key Advantages of ChoosingNext.js in 2025
1. Built-in Server-Side Rendering (SSR)
3. Hybrid Rendering Capabilities
5.Image & Font Optimization
This alignsperfectly withGoogle’sperformance guidelines in 2025. React.js doesn’t offer this natively.
7. Enhanced Developer Experience
Next.jshas evolved intoone ofthe most developer-friendlyframeworks in 2025, backedby the Vercelecosystem.In 2025,Next.js standsoutas the smarter, faster, andmore scalable solution forbuilding modernwebsites andwebapplications.It inheritseverything great about React —and addsstructure, optimization, and production-readiness. Ifyou’re planning to build awebsite that demands speed,SEO,and a seamless development process,Next.jsis the clear choice.
Formore details read this informative article:https://www.nimblechapps.com/blog/choosing-nextjs-over-reactjs-for-website-development
それあるなら諦めず応募してたら受かるだろ。もっとザコかと思ってたわ
もっとポートフォリオサイト作ってDockerやk8sやAWSやGCPやAI使ってアピールしろ。RAGやMCPサーバー構築できると良い。AWSとかの資格も取れ。あとはコード設計な。デザインパターンやれ。MVC理解したあとDDDやれ。IT系のビジネスの本も読め。Figmaでデザイン作れ。とにかくがむしゃらに受かるまでやれば受かる。どうせ全部あとで役に立つ。AtCoder緑あるならコンパイラ作れるだろ。そういうの作ってGitHubに置け。Slackも自分で使え。bot作れ。SOLID原則理解しろ。Java以外も書け。特にTypeScript。Java分かるなら楽勝だろ。データベース勉強しろ。Nginx立てろ。プロマネの本も読め。勉強会参加してこい
もうReactもtypescriptも死んで巨大な技術的負債になり、みんなHTMLXで作り直して終わるんだわ
TypeScriptの是非はともかく、そういうアレルギー反応は技術屋の今後にとっていい傾向を生まないと思いますね…。
TypeScriptはインストール時点でうお~~~xんでくれ~~~~ってなったから徹底的に思想が合わない
TypeScriptのやりたいことってすでにバックエンドで終わるから存在自体が無駄で
無駄にフロント開発者食わせるためだけの公共事業みたいなとこある
TypeScriptは共通言語になりつつあるのて流行ってるとか関係なく書けるようになっとけ
掲題の通りだ。
じゃあお前が言語を作れよ。
プロなら、仕様通りに動くものを作れよ、金もらってやってるんだから。
◯◯が💩なんて、猿でも言える。
俺達はほぼ例外なく無能で、先人たちが作ってくれたOSやプロトコルにしたがって積み木を積んでいるだけだ。
新しいものなんて作れない。
JavaScriptを使うしかねーんじゃん。今は。TypeScriptとかあるかもしれないけど、実質はJavaScriptだ。
重箱の隅をつつくようなことばかり言って理解したような気になってキーキー言っている猿どもは狭い世界で生きてる。
最後に、俺もPHPとJavaScriptは💩だと思う。
身体を壊して先日ちょっと入院していたのだが、病院内ではWiFiが提供されていたので、消灯時間外の日常生活アクセスはそれのお世話になっていた。消灯時間は夜9時から朝6時までだ。
事前に「入院生活にそぐわないサイトには接続できません」という告知が為されていたので、覚悟の上で使ったのだが、Webアプリ開発者としての業務に必要なサイトとかも禁止されていたので、ここにメモしておく。
通信が禁止されていると思われるサイトに接続すると、ブラウザ側ではタイムアウトのエラーとして表示される。もちろん、それなりに待たされる。ブラウザの開発ツールの様子を見るに、おそらくTCP handshake に失敗していそう。
正常に接続できるサイトの様子を見た範囲では、HTTPS接続の証明書改ざんは行われていないようだったことから、HTTPSの暗号を解読してどうのこうの、という処理をしていない可能性が非常に高い。つまり、通信制限は接続先ドメインまたはIPアドレスによる判断で実施している可能性が高い。
また、中間的なサイトも存在する。通常2秒以内で表示できるようなサイトの表示に10秒(体感)かかるところがある。稀にタイムアウトする。
謎なのは、通信が禁止されていそうなサイトでも「待たされた挙句、つながることが非常に稀にある」ということと、curl等ではすんなりと接続できることである。
DNS設定と一緒にproxy設定が落ちてきているのであればこの挙動も理解できるのだが、手元のOSのネットワーク設定にはproxy情報が何も出てこない。ちょっとよくわからない。
もしもDNSに対するAレコード(AAAAも?)問い合わせに対してニセモノを返すという仕組みで通信制限しているのだとしたら、「非常に稀につながる」挙動にはならないはずなので、透過型proxyによって頑張っているのではないかと想像するところである。
なお、消灯時間中は全てのリクエストがタイムアウトになる。消灯時間開始直前にHTTP Request を送出して、応答が来る頃には消灯時間に入っている場合にはどういう挙動をするのか、というテストをやる暇は無かった。スマソ
業務で使う全部のサイトを検証できた訳じゃなくてゴメンね。結局のところ仕事は携帯回線でやっちゃったから。
ドメイン | サイトの概要 | 接続の様子 |
---|---|---|
hatelabo.jp | はてなの実験的サービス置き場 | すんなり |
anond.hatelabo.jp | 増田 | 禁止 |
??????.hatenablog.jp | はてなブログのドメインの一つ、そして増田の中の人のブログ | 遅い |
console.aws.amazon.com | AWSの管理コンソール | 禁止 |
www.amazon.co.jp | ショッピング | めちゃくちゃ遅いけどつながる |
www.amazon.com | ショッピング | めちゃくちゃ遅いけどつながる |
ja.wikipedia.org | 百科事典 | 禁止 |
www.php.net | プログラミング言語PHP | 禁止 |
www.typescriptlang.org | プログラミング言語TypeScript | すんなり |
stackoverflow.com | プログラミング質問サイト(英語) | すんなり |
qiita.com | プログラミング質問サイト(日本語) | 禁止 |
packagist.org | PHPのパッケージ管理 | 遅い(通常通り?w) |
www.npmjs.com | JSのパッケージ管理 | すんなり |
なお、自分のドメインのサブドメインに禁止ドメインを入れたようなもの、例えばanond.hatelabo.jp.example.com のようなドメインに対する接続可否は検証していない(面倒だったw)
サーバ目線で見えるclientIP をwhois等で調べると、某F社さんだった。AWS管理コンソールへの接続を禁止するあたり「あっ…!」と思ったり…w
TypeScriptの書き直しでC#を使わなかった理由でもあるように最近はOOPは流行らないしあまり使われないね
ゲームエンジンとかでも新しいのはOOPじゃなくしたとかなかったけ
https://xn--pckua2a7gp15o89zb.com/
技術 | 1月3日 | 3月12日 |
rails | 22,891 | 27,570 |
node.js | 12,829 | 16,178 |
Django | 13,348 | 17,054 |
Flask | 1,589 | 1,907 |
FastAPI | 1,210 | 1,509 |
Laravel | 26,879 | 32,624 |
spring | 16,380 | 23,965 |
spring boot | 5,110 | 7,002 |
React | 49,465 | 65,273 |
Next.js | 7,382 | 10,288 |
Vue | 34,322 | 45,354 |
言語 | 1月3日 | 3月12日 |
Ruby | 61,479 | 94,975 |
Python | 98,527 | 179,183 |
PHP | 92,129 | 142,628 |
JAVA | 124,840 | 232,585 |
Javascript | 99,212 | 237,094 |
Typescript | 65,828 | 91,348 |
Rust | 3,807 | 21,921 |
Go | 48,000 | 183,352 |
コンニチハ、オイソギデスカ
非常に良くない生成AIビックウェーブが来ちゃったんで憂鬱な皆さんこんにちは。
生産性が上がるとか効率が良くなるとか宮仕え(みやづかえ)だと、福音どころか地獄ですよね。
ぼちぼち日経新聞がAIエージェント導入で他社に差をつけようみたいな記事を書く頃だと思うので、備えましょう。
まずいつも通り前提からな。
ここまでは前提な。
DeNAがさ、既存事業3000人の従業員を半分で回すようにするって目標立てたじゃん。つまり、1500人の業務負荷は倍になるのよね。
倍になったら普通は回らないところ、生成AI使えば倍でも回るでしょ?って言われてるわけだよね。
アレが非難されずに、素晴らしいとか、(諦め半分で)まあそうなるよねって言われてるのが全てなんだけどさ、シンドイよね。
生成AIで業務効率化されてハッピー、毎日定時で何なら毎週金曜日はカジュアルフライデーで飲みながら仕事だ〜、とはならないんだよ株式会社は特に。
経歴詐称して潜り込むってウッソだろというホワイトなみなさんは、パワポ作るとかペアプロするとか輪読会するとか適宜置き換えてください。
新規にプロジェクトに入った時に、なんか資料もねえし、コードをぼちぼち読みながら、急ぎでもクリティカルでも無い部分を書いてレビューしてもらって修正してマージして、
みたいな作業が消えます。この辺もう既に出来るから生成AIで。
というか、すでにこのへん置き換えて楽してるやついるだろ。そうそこのお前。
今までも、華麗なる経歴とやらの人物が作り上げていったコードを保守運営する時に相当キッツイことになってた人は多いでしょう。
ほら、新規事業でも何でも、とりあえず動いて売り上げ立てた人が偉いのはその通りなんだけど、それを直すのは大変なのよね。実運用の時には大抵転職してて居ないし。
でもさ、まあ言うても立ち上げの時期に技術的負債とか考える余裕もなく速度重視でゴリゴリ作った人の立場になってみると、まあ仕方がなかっただろうな、と感情移入もできる。
これが、スーツが「動くものは作っておいたから簡単だよね?」とかAIの作ったクソコードの山をギークに渡すようになるんだぜ。腹立つことにハンパに動くやつを。
今までも「AWSでポチポチしたらすぐでしょ?」とか言うクソスーツは居たけど、実際に手を動かしてモノ作ってくるスーツは概ねまともだっただろ?
金払えば使えるようになったから。身も蓋もないけど。
あえて言えば、簡単にお試しできるようになった、と言うところが本質的な部分です。
以前からChatGPT4とかAmazon BedRockとか使ってた人ならわかると思うんだけど、別に今までもできたんだよね。
ただ、全自動で回せるパッケージングとしての品質がそれなりに高いので、お試しのハードルがぐっと下がった。
これ、APIと簡単なスクリプトで以前から自動化できてたんだよね。(やってたやつは俺以外にも割といると思う)
決まったフォーマットで出力してもらって、そっから切り出して実行して、出たエラーをもう一回入れて修正して、動くようになったら止める。
出来上がったコードとそれまでの途中経過を全部まとめて入れて、最初から出来上がったコードにするためのプロンプト考えてってところまでをワンショット。
あとは、出てきたコードとプロンプトを眺めて良さそうなら採用する。この繰り返しでめっちゃ楽出来てた。(壊れたらDocker建て直せば良いし)
これを、そう言うスクリプト書いて整備して良い感じにGitで管理してたお手製のツールを大手が良い感じに作り上げてきちゃった感じ。あーあ。
特に速度は分かりやすく効率に影響するので、自営業とかプレイングマネージャとかは、今導入しても元がとれるだろうね。
じゃあ、なんでCline(とそれに類似するツール群)に全部賭けない方が良いかというと、まだ過渡期の技術だから。
ツールのオペレーションに全振りして、大手が改良版出しちゃってオペレーターとしての職が無くなった経験、あるでしょ?
今Clineで不満に感じてることとか、プロンプト調整しなきゃなあみたいなところ、全部自動化できるでしょ。
一年保たないと思うよ。
そりゃあ人間雇ったら高えのはわかるけど、単一障害点は怖いぜ。
みんな、生成AIのAPIが逆鞘だろうことはわかってるよね?急に明日から10倍に値上げされて耐えられますか?
今、OpenAPIのたけえのだってたかだか3万ぽっちだけど、あれに毎月30万円だせって言われて耐えられる?90万なら?SLAも怪しいのに?
そう言う時、「じゃあやめて人間雇えば良いじゃん」って言った時に、話聞いてくれる相手がいて欲しいよね?不義理しないでおこう。
同じように、新人はちゃんと育てるべきなんだけど、多分聞いちゃくれないから、そう言うところはドンヅマったら転職しよう。
(経営側にいる人間は、安易にAIエージェント+中堅に頼った場合、中堅がその会社の急所になるのは抑えておこうね。引き抜かれて崩壊する組織は脆弱だよ)
IBMが訴えられてるよね。アレ、AIエージェントあったら回避できてた?
俺は無理だと思う。
試験導入しますね、と言ってガンガン使ってコストをあげましょう。予算が尽きるまで使えば概ねそこまでです。
また、AIエージェントを導入しつつ、動作を確認したり、自社のどこに活用できるのか見ておくのはとても役に立ちます。
具体的に言うと、ググったコマンドを片っ端から試すような新人が入ってくると思ってください。
その新人は、概ね1000行以下のコードなら即レスしてきます。変えるなと言った箇所もたまに結果を出すために変えたりします。
そして、その新人相手の知見はおそらくそんなに長くは持ちません。何故なら我々が不満に思う箇所は改善されてお出しされるからです。
そのため、Cline(やそれに類似するツール)の知見を貯めよう!なるほどこんなプロンプトを与えてやれば良いのか!みたいな試行錯誤はやめた方が無難です。
今後も解決されないであろう部分を切り分けるのに留めましょう。
超具体的に言うと、AWSのコマンドを片っ端から試されたりすると、すげえ課金されるやつ、あるよね。でもそれちゃんとポリシーで制限できるよね。
人間相手に常識で縛ってたことを、ポリシーで縛るようにちゃんとしておこうね、ミスったコードで高速にIaCお試しされるとすげえことになるよ。
(なりました)
仕様検討にはo1 pro modeが(推論が強いから)、コーディングはClaude 3.5 Sonnetが(コーディングに万能に強いから)、コードのデバッグはo3-mini-highが(コードの解析に強いから)という時代から、Claude 3.7 SonnetのAPIセットしたClineで全部お任せして試行錯誤した方が結果的に効率が良くなってます。
今はPythonやTypeScriptのように、基本的に大量にコードが存在して生成AIを開発する側が良く使うコードの性能が高くなっています。
(ただ、相当にマイナーな言語であっても、別に学習に支障があるとは思えません。おそらく単に優先順位の問題です)
「AIコーディングについてのレポートをあげて、稟議を通すための理由もつけておくように」みたいな指示は、ChatGPTのDeepResarchに振って、上がってきたレポートをそれっぽく書いておけば良いです。
なお、ChatGPT4.5があんまり性能が出てないと聞いてがっかりしている人に朗報ですが、4oから4.5に変わったことで、相当に性能は上がっています。
具体的に言うと、「クソみたいな上司からムカつく指示が来てどうにも収まらないんだけど、以下の内容を相手が納得するように書き直してくれない?」みたいなのに、すごい親身になってそれっぽい感じに書き直してくれます。人間力は多分俺より上です。
TypeScriptベースのフルスタックフレームワークが増えてきたね。
フロントエンドもバックエンドもTypeScript実装できてとっても嬉しいね。
しかし、バックエンドとフロントエンドと密結合な事実はとても怖いんだ。
フロントエンドの成長速度はとても早い。
React がデファクトになりつつあるが、 Reactベースのフレームワークは群雄割拠だ。
むしろ、 React を排する新しい技術も出てくるくらいの戦国時代なんだ。
フレームワークを選定時、各言語でも多くて3つ程度に絞られるのではないか。
成熟しつつあるバックエンドと成長中のフロントエンドを一緒のライブラリで運用すること。とても怖い。
特にTypeScript はフロントエンドを祖に持つので、フロントエンドの事情がフレームワークの開発ロードマップの意思決定に強い影響を与える。
フロントエンドに破壊的変更が加わった時、バックエンド側にも影響を与える。
他フレームワークにおけるフロントエンドの実装について、あのRuby on Rails ですらバージョン上がるごとにフロントエンドに破壊的な変更が入る。
まぁView の取り扱いの黒魔術は魔境だから極力触りたくないが、バックエンドの側面のみを切り出したAPIモードであれば爆速の開発体験とテスト機構により信頼性が高い。
それなら、フロントエンドとバックエンドを別々に管理にしたい。
いや俺は、TypeScript のアプリケーションが嫌いなのかもしれない。
フォルダ設計も、テスト機能の整備も、ORMの設定も、最初から設定する必要があるから。面倒なんだ。
どうせTypeScriptアプリケーションの設計は設計者の自己満足になる。
そして、設計者は運用の責任を全うせずいなくなる。ドキュメントすら残さない。
それなら、規約で縛るフレームワークの方が、後任がキャッチアップしやすい。
設計者が知識を普及もしくはドキュメントを整備して知識の移転に心を砕いてくれれば、設計方針を汲み取りやすいのだが、そうしてる設計者はいるのだろうか。
後任のために、せめてものドキュメンテーションを心がける。