こんにちは、いつも「かつコード」のサイトをご覧いただきまして、ありがとうございます。
毎週金曜日にブログとしてリポートをお伝えしておりますが、今回はちょっと気になることがあったので記事にしました。
「古い技術だからダメ」は本当?技術選定で大切なこと
Webやシステム開発の世界では、毎年のように新しい技術が登場します。
新しいフレームワークが注目されると、
「これからは○○一択」
「○○はもう古い」
「今からその技術を使うのはありえない」
といった意見を見かけることがあります。
最近では、
「PHPやRubyは古いからおすすめしない。これからはNext.js一択」
といった意見を目にすることもあります。
確かに、新しい技術には魅力があります。
しかし、私たちは**「古いから使わない」「新しいから使う」という考え方だけで技術を選ぶことには疑問があります。**
システム開発で本当に重要なのは、
「その技術で何が作れるのか」
そして、
「その技術によって、お客様のビジネスや目的を達成できるのか」
ではないでしょうか。
今回は、Web・システム開発における「技術選定」について、私たちの考え方をご紹介します。
「古い=悪い」ではない
まず、最も分かりやすいところから考えてみましょう。
「古い技術」と聞くと、時代遅れのように感じるかもしれません。
しかし、長く使われている技術には、それだけの理由があります。
例えばPHP、Ruby、Javaなどは長い歴史を持っています。
だからこそ、
- 多くの開発実績がある
- 豊富なライブラリがある
- フレームワークが成熟している
- 開発者が多い
- 情報が豊富
- トラブル事例が蓄積されている
- 長期間の運用実績がある
といった強みがあります。
これは企業のシステム開発において非常に大きなメリットです。
新しい技術には「これから伸びる」という魅力があります。
一方、成熟した技術には、
「すでに多くの現場で使われている」という安心感
があります。
PHPは本当に「古い」のか?
PHPは1990年代から存在するプログラミング言語です。
確かに歴史だけを見れば、新しい言語ではありません。
しかし、PHPは現在でもWeb開発で広く利用されています。
そしてPHPには、Laravelのような現代的なフレームワークがあります。
Laravelを利用すれば、
- 会員管理
- 顧客管理
- 予約システム
- ECサイト
- API
- 管理画面
- バッチ処理
- メール送信
- 認証
- 権限管理
など、さまざまなWebシステムを構築できます。
つまり、
「PHPは古い」
という事実だけでは、
「PHPでは現在のWebシステムを作れない」
という結論にはなりません。
ここは分けて考える必要があります。
Rubyにも成熟した強みがある
Rubyも同じです。
RubyはWebアプリケーション開発で長く利用されてきた言語で、Ruby on Railsという非常に有名なフレームワークがあります。
スタートアップやWebサービスなどで利用されてきた実績も多く、
「素早くサービスを作る」
という面で大きな強みを持っています。
これも、
「古いから使わない」
という一言だけで判断するのはもったいない技術です。
重要なのは、
その技術が現在のプロジェクトに適しているか
です。
Javaは企業システムで今も重要
Javaについても同じことが言えます。
Javaは非常に長い歴史を持っていますが、企業システムや大規模システムでは現在も重要な存在です。
なぜでしょうか。
それは、
- 安定性
- 信頼性
- 大規模開発への対応
- 豊富な開発実績
- 人材の多さ
- 長期運用への強さ
などがあるからです。
企業にとって、
「新しいから使う」
よりも、
「長期間安定して運用できる」
ことが重要になる場面はたくさんあります。
では、Next.jsはダメなのか?
もちろん、そんなことはありません。
Next.jsは非常に魅力的なフレームワークです。
Reactをベースに、現代的なWebアプリケーションを構築できます。
例えば、
- リッチなユーザーインターフェース
- 高速な画面遷移
- サーバーサイドレンダリング
- 静的サイト生成
- Reactのエコシステム
- インタラクティブなWebサービス
などを実現しやすいというメリットがあります。
特に、ユーザー体験を重視するWebサービスでは、非常に強力な選択肢です。
私たちもReactやNext.jsを否定するつもりはありません。
むしろ、
「非常に良い技術だからこそ、適した場面で使う」
という考え方です。
Next.jsにも「落とし穴」はある
一方で、
「Next.jsならすべて解決する」
と考えるのも危険です。
Next.jsを使う場合には、
- Server Components
- Client Components
- データ取得
- キャッシュ
- レンダリング方式
- Server Actions
- デプロイ環境
- 認証
- API設計
など、理解すべきことがたくさんあります。
React自体の進化も速いため、数年前の知識だけでは対応できないケースもあります。
つまり、Next.jsは非常に強力ですが、
「新しい=簡単」ではありません。
むしろ、新しい技術だからこそ、正しく理解して使う必要があります。
そもそも「PHP vs Next.js」は単純比較できない
ここは技術選定を考える上で重要なポイントです。
「PHPとNext.js、どちらが優れている?」
という質問を見かけることがあります。
しかし、少し違和感があります。
なぜなら、PHPはプログラミング言語であり、Next.jsはReactをベースとしたWebフレームワークだからです。
つまり、そもそもの役割が完全に同じではありません。
例えば、
Laravel + React
という構成もあります。
Laravel + Next.js
という構成もあります。
もちろんNext.js単体でバックエンドを含むアプリケーションを構築することもできます。
つまり、
「どちらか一つを選ばなければならない」
という考え方自体が、必ずしも正しいわけではありません。
技術は「組み合わせて使う」こともできる
実際のシステム開発では、複数の技術を組み合わせることが珍しくありません。
例えば、
Laravel
バックエンド・API・データベース・認証・業務ロジック
↓
React / Next.js
フロントエンド・ユーザーインターフェース
↓
MySQL
データベース
↓
AWS
インフラ・サーバー
という構成もできます。
それぞれの技術の得意分野を活かすわけです。
だからこそ、
「この技術が一番新しいから全部これで作る」
という発想よりも、
「それぞれの技術をどこで使うと効果的か?」
と考える方が、実際の開発には向いています。
技術選定で一番重要なのは「何を作るか」
では、何を基準に技術を選べばよいのでしょうか。
私たちは、まず、
「何を作るのか?」
から考えるべきだと思っています。
例えば、
「会社のホームページを作りたい」
のであれば、非常に複雑な技術構成は必要ないかもしれません。
一方、
「顧客管理システムを作りたい」
となれば、
- 顧客情報
- 権限
- 履歴
- 検索
- データ管理
- 帳票
- 通知
などを考える必要があります。
さらに、
「予約・決済・顧客管理・ECを統合したシステム」
となれば、さらに要件は複雑になります。
このように、作るものによって最適な技術は変わります。
「誰が使うのか」も重要
技術選定では、ユーザーも重要です。
例えば、
一般のお客様が使うサービス
ユーザー体験や画面の操作感を重視する。
↓
React / Next.jsなどが有力な選択肢になる。
社内スタッフが使う管理システム
データ管理や業務効率、保守性などを重視する。
↓
Laravelなどのバックエンドフレームワークが非常に有力になる。
もちろんこれは一例で、実際には要件によって変わります。
重要なのは、
「誰が、何のために使うのか」
を考えることです。
「何年使うのか」も考える
企業システムでは、短期間で捨てるものばかりではありません。
5年、10年と使うシステムもあります。
その場合、
「今、一番話題だから」
だけで決めるのは危険です。
- 保守できる人材がいるか
- 将来的に開発できるか
- 情報が残っているか
- バージョンアップできるか
- 他のシステムと連携できるか
なども考える必要があります。
技術選定は、開発開始時だけではなく、数年後まで考える必要があります。
開発コストも重要
企業にとって、技術選定は経営判断でもあります。
例えば、同じシステムを作れるとしても、
Aの技術なら3か月
Bの技術なら6か月
かかるのであれば、開発費用にも大きな差が出ます。
さらに、
「開発した後の保守費用」
も考えなければなりません。
そのため、
「何が作れるか」だけでなく、「どのくらいのコストで作れるか」
も重要です。
最新技術を使うことが目的ではない
技術者として、新しい技術を使ってみたいという気持ちは自然なものです。
新しい技術にはワクワクします。
新しいフレームワークを触ることも楽しいでしょう。
しかし、企業からシステム開発を依頼された場合、
「最新技術を使うこと」そのものが目的ではありません。
目的は、
「業務を効率化する」
「売上を増やす」
「予約を自動化する」
「顧客情報を一元管理する」
「新しいサービスを提供する」
など、ビジネス上の課題を解決することです。
技術は、その目的を達成するための手段です。
「枯れている技術」には価値がある
ソフトウェア開発では、
「枯れた技術」
という表現があります。
これは必ずしも悪い意味ではありません。
むしろ、
長く使われ、多くの問題が解決され、安定している技術
という意味で、大きな価値があります。
新しい技術には、
「これから何ができるのか」
という可能性があります。
成熟した技術には、
「これまで多くのシステムを支えてきた」
という実績があります。
企業システムでは、後者が非常に重要になることがあります。
それでも新しい技術を学ぶ意味はある
では、古い技術だけ知っていればいいのでしょうか。
もちろん、そうではありません。
開発者として、新しい技術を学び続けることは重要です。
新しい技術には、新しい考え方や設計方法が詰まっています。
例えばReactやNext.jsを学ぶことで、
「こういうユーザー体験が作れるのか」
「こういうデータ取得方法があるのか」
「こういう設計方法があるのか」
といった新しい発見があります。
そして、その知識が既存の技術を使った開発にも活きることがあります。
つまり、
「古い技術か新しい技術か」ではなく、両方を理解した上で選択できること
が重要なのです。
技術選定で考えたい7つのポイント
実際にシステムを作る場合は、次のようなことを考えてみましょう。
① 何を作るのか
ホームページなのか、業務システムなのか、ECなのか、Webサービスなのか。
② 誰が使うのか
一般ユーザーなのか、企業のスタッフなのか。
③ 何を実現したいのか
売上向上なのか、業務効率化なのか、新しいサービスなのか。
④ どのくらいの規模なのか
小規模なのか、大規模なのか。
⑤ どのくらいの期間使うのか
短期なのか、5年、10年と使うのか。
⑥ 開発・保守コストはどうか
開発費用だけでなく、将来の保守も考える。
⑦ 必要な技術・人材があるか
その技術を扱える人材を確保できるか。
これらを考えた上で、初めて技術を選びます。
私たちの技術選定に対する考え方
私たちは、
「この技術が一番新しいから採用する」
という考え方はしていません。
まず、
「お客様が何を実現したいのか」
を考えます。
その上で、
「どんなシステムが必要なのか?」
「どんな構成が適しているのか?」
「どの技術を使えば効率よく実現できるのか?」
を考えていきます。
例えばLaravelを使うこともあります。
Reactを使うこともあります。
Next.jsを使うこともあります。
必要であれば、これらを組み合わせることもあります。
重要なのは、
「Laravelを使うこと」でも「Next.jsを使うこと」でもありません。
お客様の目的を達成することです。
「一択」ではなく「選択できる」こと
私たちは、開発者にとって大切なのは、
「○○しか使わない」ことではなく、「○○も選択できる」こと
だと考えています。
PHPを知っている。
Rubyも知っている。
Javaも知っている。
Reactも知っている。
Next.jsも知っている。
そして、
「今回のプロジェクトならこれが良い」
と判断できる。
これが技術者としての強みではないでしょうか。
まとめ
「古い技術だから使わない」
「新しい技術だから使う」
という二元論だけでは、実際のシステム開発を判断することはできません。
PHP、Ruby、Javaには、それぞれ長い歴史の中で培われた実績と成熟したエコシステムがあります。
一方、Next.jsのような新しい技術にも、現代的なWebサービスやリッチなユーザー体験を実現する大きなメリットがあります。
重要なのは、
「どちらが優れているか」ではありません。
「今回作るシステムには、どの技術が適しているか」
です。
技術は目的ではありません。
ビジネスやユーザーの目的を達成するための手段です。
だからこそ、私たちは「最新技術だから」という理由だけで技術を選ぶのではなく、
- 何を作るのか
- 誰が使うのか
- 何を実現したいのか
- どれくらいの規模なのか
- どれくらい長く使うのか
- 開発・保守コストはどうか
- 将来も運用できるのか
といったことを考えた上で、最適な技術を選ぶことが大切だと考えています。
古いからダメなのではない。新しいから正解でもない。
「その技術で、何ができるのか。」
そして、
「それによって、お客様の目的を達成できるのか。」
これこそが、技術選定で最も大切なことではないでしょうか。
今日からできる3つのアクション
① 「最新だから使いたい」を一度疑ってみる
新しい技術を使うこと自体が目的になっていないか、一度考えてみましょう。
「なぜこの技術が必要なのか?」
と考えることが第一歩です。
② 作りたいシステムの目的を書き出す
「顧客管理を効率化したい」
「予約を自動化したい」
「ECの売上を伸ばしたい」
など、技術より先に目的を書き出してみましょう。
③ 技術ではなく「実現したいこと」から相談する
システムを作るとき、
「Laravelで作ってください」
「Next.jsで作ってください」
と最初から技術を決める必要はありません。
まず、
「こういうことを実現したい」
と相談してみましょう。
その目的に合わせて、必要な技術を選ぶことができます。
技術選定チェックリスト
□ 何を作るのか明確になっている
□ 誰が使うのか明確になっている
□ システムで解決したい課題が明確になっている
□ 最新技術という理由だけで選んでいない
□ 長期的な保守を考えている
□ 開発コストを考えている
□ 保守・運用コストを考えている
□ 必要な人材を確保できるか考えている
□ 他のシステムとの連携を考えている
□ 複数の技術を比較している
8〜10個:目的に合わせた技術選定ができています。
技術そのものではなく、システム全体を見て判断できています。
5〜7個:もう少し目的を整理してみましょう。
特に「何を実現したいのか」を明確にすると、技術選定がしやすくなります。
0〜4個:まずは技術より目的を整理しましょう。
「何を作りたいのか」「何を解決したいのか」から考えてみることをおすすめします。
3分で理解!技術選定で大切なこと
- 「古い=悪い」ではない
- PHP、Ruby、Javaには成熟した強みがある
- Next.jsも非常に優れた選択肢の一つ
- ただし「Next.js一択」と決める必要はない
- 言語とフレームワークは単純比較できない
- 複数の技術を組み合わせることもできる
- 技術選定は「何を作るか」から考える
- ユーザー、規模、コスト、保守性も重要
- 最新技術を使うこと自体を目的にしない
- 「枯れている」ことがメリットになる場合もある
- 新しい技術を学ぶことも重要
- 最も大切なのは「その技術で目的を達成できるか」