複数言語・フレームワークを経験して感じた、キャッチアップ力の重要性

アイキャッチ画像

はじめに

これまでの開発現場では、複数の言語やフレームワークを経験してきました。

実際の案件では、面談時に聞いていた技術だけではなく、参画後に新しい技術を求められることも少なくありませんでした。そのため、必要になったタイミングで都度キャッチアップしながら対応してきました。

本記事では、これまで経験してきた技術や、その中でどのようにキャッチアップしてきたかについて書いていきます。

経験してきた技術

これまで、大まかには以下のような流れで経験を積んできました。

  • WebPerformer(ローコード開発ツール)
  • PHP / Laravel
  • Python / Django
  • Dart / Flutter
  • Swift / Kotlin
  • C++
  • Python / Django REST framework
  • React / TypeScript
  • Python / FastAPI
  • Vue.js / TypeScript

振り返ると、最初からすべて理解していたわけではなく、「必要になったタイミングで学びながら対応する」という場面が多かったです。

ローコード開発ツールで感じた難しさ

初めての開発案件では、WebPerformerというローコード開発ツールを使用していました。

当時は、一般的なプログラミング言語を使った開発案件へ入りたい気持ちもありましたが、自分の経験や会社都合もあり、この案件へ参画しました。

参画前は個人でキャッチアップしようと思っていましたが、

  • 情報がほとんどない
  • 本も少ない
  • 有料ライセンスが必要

という状況で、個人学習がかなり難しかったです。

そのため、案件へ入ってから、

  • 公式マニュアルを読む
  • 既に参画している人へ聞く
  • 実際に触りながら覚える

という形でキャッチアップしていきました。

この経験から、「現場へ入ってから学ぶ力」の重要性を強く感じました。

LaravelとDjangoで感じた共通点

その後、Laravelを使った開発案件へ参画しました。

Laravelについては、Udemyや技術記事など学習環境が非常に充実していたため、参画前にハンズオン形式で学習を進めました。

その後、Python / Django案件へ入りましたが、Laravelで学んだMVCの考え方がかなり活かせました。

フレームワークが変わっても、

  • ルーティング
  • MVC / MTV
  • ORM
  • テンプレート

など、根本的な考え方は共通している部分が多いと感じました。

一方で、ここで最も苦戦したのはCSSでした。

一般的には新人向けと思われがちですが、

  • 他のCSSの影響
  • テンプレート継承
  • 修正時の影響範囲

など、既存システムでは複雑になりやすく、実際にはかなり難しい分野だと感じました。

Flutterとスマホアプリ開発

Django案件として参画したものの、途中からFlutterを使ったスマホアプリ担当になったこともありました。

Flutterについては、それまで全く経験がありませんでしたが、業務中に数日間のキャッチアップ期間をいただき、Udemyなどを活用して学習しました。

Web開発と異なり、

  • 画面
  • 状態管理
  • 非同期処理

などの考え方に違いもありましたが、「まず動かしてみる」ことを重視して進めました。

また、一部機能ではFlutterだけでは対応できず、SwiftやKotlinでネイティブ側の実装も行いました。

この時は、一部機能のみだったため、キャッチアップよりも「必要な部分を調べながら実装する」形で対応しました。

フロントエンド開発

ReactのキャッチアップでもUdemyを活用しました。

それまで複数の言語やフレームワークを経験してきたため、少し学べば対応できるだろうと考えていましたが、ここで初めて「コンポーネント」という考え方へ本格的に触れたため、最初は多少苦戦しました。

その後、Vue.js案件へ参画しましたが、状態管理やコンポーネントなどの概念は共通部分も多く、比較的スムーズにキャッチアップできました。

API開発

Django REST frameworkやFastAPIについては、それまで経験してきたDjangoでのバックエンド開発経験を活かせたため、比較的スムーズにキャッチアップできました。

特に、

  • リクエスト/レスポンス
  • – バリデーション
  • – ORM

など、共通する考え方が多かったため、大きくは「どのような書き方をするか」を押さえることで対応できました。

まとめ

これまで様々な技術を経験してきましたが、特に重要だと感じたのは、

最初から完璧に理解しようとしないこと

です。

まずはミニマムに動くものを作り、

  • 実際に触る
  • ログを見る
  • 処理の流れを追う

ことで理解を深めるようにしてきました。

また、技術が変わっても、

  • HTTP通信
  • MVC
  • API
  • 状態管理
  • 非同期処理

など、共通する考え方は多くあります。

そのため、特定技術だけではなく、「新しい技術へキャッチアップできる力」そのものが、エンジニアとして非常に重要だと感じています。