Masayan tech blog.

  1. ブログ記事一覧>
  2. ものづくり、創造性、クリエイティブ性に魅力を感じてWebエンジニアになるのはオススメできない理由

ものづくり、創造性、クリエイティブ性に魅力を感じてWebエンジニアになるのはオススメできない理由

公開日

この記事を読むことで得られるメリット

  • Webエンジニアの仕事における「創造性」の本質を理解できる
  • 自分のクリエイティブ性を活かせる職業選択のヒントが得られる
  • デザインパターン、コーディングアシスタントの実態と影響について知ることができる
  • 技術職におけるキャリア選択の新たな視点を得られる
  • 「ものづくり」の喜びを得るための正しいアプローチが分かる

この記事を読むのにかかる時間

約12分

Webエンジニアの仕事の実態

多くの人がWebエンジニアを「デジタルなものづくり職人」と憧れる。コードを書くことで自分のアイデアを形にし、世界中の人が使うサービスを生み出す——確かに魅力的だ。しかし現実はどうだろうか?

実際のWebエンジニアの日常は、新しいものを一から「創造する」作業というよりは、既存のパターンを「組み合わせる」作業が中心である。若手エンジニアが抱く「自分だけのコードで世界を変える」という期待と、実際の業務の間には大きなギャップがある。

最近のWeb開発では、フレームワークやライブラリに依存した開発が主流となっている。Reactなどのフロントエンドフレームワークや、Ruby on RailsやLaravelなどのバックエンドフレームワークは、開発効率を高める一方で、「枠の中での作業」に開発者を押し込めているのだ。

フレームワークの普及と標準化

現代のWeb開発環境は、フレームワークなしでは考えられないものになっている。React、Angular、Vue.jsなどのフロントエンドフレームワークや、Ruby on Rails、Laravel、Djangoなどのバックエンドフレームワークは、確かに開発効率を劇的に向上させた。

しかし、これらのフレームワークは「フレームワークの流儀」に従うことを強制する。Reactの場合はコンポーネント志向の設計、Railsなら「convention over configuration(設定より規約)」の原則に従うことが求められる。フレームワークの思想に反する実装は「アンチパターン」とされ、独自のアプローチを取ることが難しくなっている。

新しいプロジェクトを始める際も、「何を作るか」よりも先に「どのフレームワークを使うか」が議論されることが多く、技術選定がクリエイティブプロセスを縛っている。結果として、多くのWebサイトやアプリケーションが同じような見た目や機能を持つようになってきているのだ。

ライブラリの肥大化と再利用文化

「車輪の再発明をするな」はプログラミングの世界で広く受け入れられている格言だ。npm、PyPI、Composerなどのパッケージマネージャーにより、ほぼすべての機能について既存のライブラリを利用することが可能になった。

現代のWebアプリケーションでは、実際に開発者が書いたコードよりも、外部ライブラリのコードのほうが圧倒的に多いことも珍しくない。package.jsonやrequirements.txtのサイズが膨れ上がる一方で、自分自身が書くコードの量と複雑さは減少していく。

再利用性と効率を重視するこの文化は、ビジネス的には合理的だが、「一から自分の手でものを作る」という経験を減少させている。ライブラリに依存することで、内部の仕組みを深く理解する機会も失われがちだ。

ローコード・ノーコードプラットフォームの台頭

さらに状況を加速させているのが、Webflow、Bubble、Wixなどのローコード・ノーコードプラットフォームの台頭である。これらのツールは、コードをほとんど(あるいは全く)書かずにWebサイトやアプリケーションを構築することを可能にしている。

ドラッグ&ドロップインターフェースと視覚的な開発ツールにより、プログラミングの知識がなくても複雑な機能を実装できるようになっている。これは一般ユーザーにとっては素晴らしい進化だが、「コードを書いてものを作る」という従来のプログラマーの役割を侵食しているのだ。

特にビジネスアプリケーションの領域では、これらのプラットフォームがプロの開発者の仕事を代替し始めており、伝統的なプログラミングの創造的側面がさらに減少している。

クラウドサービスとマネージドサービス

AWS、Azure、GCPなどのクラウドプロバイダーが提供する豊富なマネージドサービスも、プログラマーの「ものづくり」体験を変化させている。かつては自前で構築・設計していたインフラやシステムコンポーネントが、今ではクラウドサービスとして提供されているのだ。

データベース(Amazon RDS)、認証システム(Cognito)、ストレージ(S3)、サーバーレス機能(Lambda)など、アプリケーションの基幹部分が「ブラックボックス」化されている。Firebase、Amplifyなどのサービスはさらにこの傾向を強め、バックエンドの実装をほぼ不要にしている。

これにより開発者はビジネスロジックに集中できる一方で、システムの深層を理解し設計する機会が失われている。「サーバーレス」という言葉自体が、かつてプログラマーが担っていた重要な役割の一部が不要になったことを象徴しているのだ。

コーディングアシスタントの台頭

近年、GitHub CopilotやChatGPTなどのAIコーディングアシスタントの普及により、状況はさらに変化している。これらのツールは、プロンプトに基づいて自動的にコードを生成する。

エンジニアの役割は「コードを書く人」から「AIが生成したコードをレビュー・修正する人」へと変わりつつある。もはやゼロからコードを書く機会は減少し、創造的なコーディングの喜びを感じる瞬間も少なくなっている。

確かにこれらのツールは生産性を向上させるが、「自分のコードで何かを作り上げる」という満足感は得にくくなっている。コピペエンジニアリングがさらに加速し、「自分だけの解決策」を考え出す力は衰えていく可能性があるのだ。

スタイルガイドと強制ツール

ESLint、Prettier、Rubocop などのリンターやコードフォーマッターは、コーディングスタイルを標準化し、「正しい」コードの書き方を強制する。これらのツールは確かにコードの品質と一貫性を向上させるが、同時に個人の表現スタイルを制限する傾向がある。

多くの企業では、コードレビューでスタイルガイドに準拠していることが第一の評価基準となり、コードの表現力や独創性は二の次になっている。コードは機能するだけでなく「チームのルール」に従うことが求められ、プログラミングが芸術的表現から標準化された製造プロセスへと変化しているのだ。

オープンソースの成熟と創造性の制約

GitHubなどのプラットフォームの普及により、オープンソースエコシステムは驚異的な成長を遂げた。今やほぼあらゆる問題に対して、誰かがすでに解決策を実装している

これは素晴らしい進化である一方で、問題解決の喜びを減少させる要因にもなっている。新しい問題に直面したときも、「自分で解決策を考える」より「既存の解決策を探す」ことが推奨され、Stack Overflowやチャットボットに質問することが標準的なワークフローになっているのだ。

創造的な問題解決の機会は減少し、「検索能力」や「適切なライブラリを選定する能力」が以前より重要になっている。これは効率的だが、問題解決のプロセスから得られる深い学びや達成感を奪いかねない。

デザインパターンの普及と独創性の制限

デザインパターンとは、ソフトウェア開発における共通の問題に対する解決策のテンプレートだ。MVCアーキテクチャ、シングルトンパターン、ファクトリーパターンなど、多くのパターンが確立されている。

これらのパターンを学び、適切に応用することは確かに重要なスキルだ。しかし、パターンに従うことが「正解」とされるあまり、エンジニアの思考は「どうやってゼロから解決策を考えるか」ではなく、「どのパターンを適用するべきか」にシフトしている。

チームでの開発においては、コードの可読性や保守性のために、個人の独創的なアプローチよりも、チーム全体が理解できる標準的なパターンを使うことが推奨される。結果として、創造性を発揮する余地は限られていくのだ。

創造性を発揮できる本当のフィールド

では、本当の創造性はどこで発揮できるのだろうか?Webエンジニアリングにおいては、実はコーディング以外の部分に創造的な要素が多く残っている。

例えば、ユーザー体験のデザイン、システムアーキテクチャの設計、複雑な技術的課題の解決策の考案などは、依然として高い創造性を必要とする。単なるコードの実装者ではなく、問題解決者としての役割が重要になっているのだ。

また、新しい技術やツールを組み合わせて革新的なソリューションを生み出すことも、創造性を発揮できる場面だ。ただし、これはシニアレベルのエンジニアに求められる能力で、キャリアの初期段階では経験できない場合が多いだろう。