技術の進化は急速で、日々新しいツールやライブラリ、フレームワークが登場し、プログラミング言語の選択肢は膨大に増えていた。GitHubや他のソースコード管理サービスでは、次々と新しいライブラリが登場するものの、その多くは人気を集めた瞬間から急速にメンテナンスモードに入ってしまう。人気のフレームワークが突然更新を停止し、ユーザーが困惑する場面も珍しくなくなっていた。X(旧Twitter)では、毎日のように新しい技術やトレンドが取り上げられ、議論の渦に巻き込まれている。メディアサイトでは毎年、プログラミング言語のランキングが発表され、どの言語が今年の注目すべきものかが注目される。AI技術の発展は、多くのエンジニアにとって希望の光のように感じられたが、OpenAI、Perplexity AI、Anthropicなどの企業は、世界の覇権を巡って競争を繰り広げ、血で血を洗う戦いが続いていた。
CMS業界では、圧倒的な人気を誇っていたWordPressでさえ、WP Engineとの競争が激化しており、ACFなどの有名なプラグインも、更新や改善が難しくなりつつあった。WordPressが生み出したエコシステムは非常に大きく、その影響力は未だに強いが、進化し続ける技術の波に押され、時にはその進化が停滞することもあった。
フロントエンドの世界では、技術革新が止まることなく続き、Reactが登場したことにより、フロントエンド開発は全く新しい局面を迎えた。Reactに続き、AngularやVueが登場し、フレームワーク同士の競争は過熱していた。さらに、Remixやqwikといった新たなフレームワークが登場し、SvelteやElm、Imbaなどの独立した技術が次々と登場し、フロントエンドの世界はますます分裂していった。jQueryはすっかり時代遅れとなり、過去の栄光を背負った技術として、かつての輝きを失っていた。
フロントエンドの激しい戦争を避けた者たちは、バックエンドの領域に移住し、平穏を求めていた。しかし、そこにも厳しい戦いが待ち受けていた。サーバレスアーキテクチャを支持する者、コンテナ技術を推進する者、物理サーバを重んじる者たちが争いを繰り広げ、平穏な時代が来る気配は全くなかった。バックエンドの選択肢も多様化し、従来のJavaやC#、PHPの領域に加え、新たに登場したGolang、Elixir、Rustなどの言語が勢力を拡大していた。さらに、関数型プログラミングの原則を重視する勢力も無視できないほどの存在感を示し、競争はますます熾烈になっていた。
データベースの領域でも、Oracleとの決別を目指す動きが加速していた。MySQLやPostgreSQLといった従来型のデータベースは、NoSQL系のデータベースや次世代の分散データベースであるCockroachDBといった新たな技術に圧倒されつつあった。データベース技術の進化は、単に選択肢が増えるというだけでなく、システムのアーキテクチャそのものを大きく変える力を持つようになっていた。
クラウドコンピューティングが全盛となった今、AWSは圧倒的なシェアを持っていたが、AzureやGoogle Cloud、Oracle Cloud、IBM Cloudといった他のクラウドサービスも必死に栄光を取り戻そうとしていた。クラウドインフラの選択肢が増える一方で、それぞれのクラウドが独自のエコシステムを構築し、競争はますます激化していた。
こうした技術選定の世界で、最も重要なことは、どの技術が「最適」であるかを見極めることだと私は考えている。しかし、最適な技術を選ぶということは、決して簡単なことではない。最も重要なのは、その技術が「最新」であるかどうかではなく、そのプロジェクトにとって「最適」であるかどうかだと私は思う。そのプロジェクトにとって長期間にわたって維持管理しやすい技術であるか、運用・保守時にコストがかからないか、将来的に技術が陳腐化するリスクが低いか、そしてチームのエンジニアがそれを使いやすいかという観点を重視するべきだ。
例えば、Javaを「レガシー」として避ける声もありますが、私はJavaが非常に優れたプログラミング言語だと考えています。特に、大規模なシステムを運用する際の安定性や成熟度において、Javaには他の言語にはない強みがあります。F#でWebアプリケーションを開発することも可能ですが、私が企業のシステム開発でF#を選ぶことは少ないでしょう。個人的には、趣味のプログラミングではLispを愛用していますが、それを商業システムに適用することはありません。技術選定は、単に好みに基づくものではなく、プロジェクトの規模や性質、将来の維持管理の観点を総合的に考慮する必要があります。
また、技術選定においては、トレンドを追いかけることが必ずしも最良の選択肢であるとは限りません。短期的な流行や注目を集める技術に飛びつくのではなく、長期的に見て安定した運用が可能で、将来のリスクが低い技術を選ぶことが求められます。特にエンタープライズのシステム開発においては、プロジェクトが完了した後の運用や保守が長期間続くことを考慮し、持続可能な技術選定が重要となります。
もっと学ぶ: https://news.skysolution.com/category/ai-ml/
最適な技術選定は非常に難しく、常に正解があるわけではありません。しかし、その過程で得られる経験や知識は、次のプロジェクトに必ず生かされます。選定の結果がどのようであれ、それを実行に移し、改善しながら進んでいくことが最も大切です。そして、最適な技術選定を行ったときに得られる成果や自信は、今後のキャリアに大きな影響を与えることでしょう。
技術選定は、最適解を見つけるための試行錯誤の過程であり、その過程で得られる成長が最も重要です。自信を持って技術選定を行えるようになる日は必ず訪れるでしょう。それを信じて、毎日積み重ねていきましょう。