レガシーエンジニアがWEB系の勉強をしてみた
まえがき
私は約8年間COBOLで稼働している業務系/基幹系システムのエンジニアをしてきました。
昨年の2024年8月、自分の趣味である神社巡りをテーマとしたWEBアプリを作成したいと思い勉強を始めたのですが、レガシー言語の開発現場で身につく知識や技術とWEB系で必要な知識や技術に大きなギャップがあり、何から手を付ければよいか苦悩しました。
技術の習得には手を動かした方が早いと思うのですが、その前に身に着けておいた方が良いと感じた事項を記事にしましたので、WEB系のイメージ作りの糧になれば幸いです。
【目次】必要な知識/技術
- Webの基礎知識
1-1. HTTP周りの基礎知識
1-2. HTML・CSSの知識
1-3. JavaScriptの知識 - プログラミングパラダイムの違い
- フレームワークやライブラリの概念
- インフラ部分の知識
1-1. クラウドプラットフォーム
1-2. コンテナ技術 - 開発環境や関連ツールの知識
1-1. IDE(統合開発環境)
1-2. GitHub
1-3. CI/CD - データベースの知識
- セキュリティの知識
- 開発アーキテクチャとその思想の理解
1-1. フロントエンド側の設計
1-2. バックエンド側の設計
1. Webの基礎知識
基本情報技術者やITパスポートの資格取得者はご存知と思いますが、レガシー言語の現場ではこの知識を使用しないことが多いかと思います。
そのため、まず第一に抑えておくべき知識として記載をしておきます。
1-1. HTTP周りの基礎知識
1-2. HTML・CSSの知識
インターネットブラウザから閲覧するWebページはHTMLという言語で作成されています。
デザイン部分を担うものがCSSと呼ばれるものです。
1-3. JavaScriptの知識
Webページの基本部分はHTMLで作成されますが、複雑な動きをさせたい場合に使用するものがJavaScriptという言語です。
2. プログラミングパラダイムの違い
COBOLは主に手続き型です。WEB系で使用する言語はオブジェクト指向か関数型で記述することになりますので、これらの概念を理解する必要があります。
3. フレームワークやライブラリの概念
レガシー系言語の現場でも、フレームワークを使用することもあるのですが、私の感覚としては外部製品のフレームワークなどは使用しないことが多い印象です。
モダン系言語では開発効率化のひとつの手段として、(必ずと言ってもいいくらい)フレームワークやライブラリというものを使用します。そのため、これらの概念も抑えておきましょう。
4. インフラ部分の知識
自分でWEBアプリを作成する場合、動作環境となるサーバーの選定も自分で行う必要があります。
あくまで個人開発が前提の私の考えですが、無料で使用できる+ハードルが高くないサービスが嬉しかったため、Vercelというサービスを選びました。
1-1. クラウドプラットフォーム
- IaaS/PaaS/SaaSとは
- [参考]Vercelの始め方
- [参考]AWS/GCP比較
1-2. コンテナ技術
フレームワークやライブラリと同様、開発標準化や効率化を目的とした技術です。
個人開発では、なくても問題は起きないのですが、チーム開発をする場合には必須になります。
5. 開発環境や関連ツールの知識
レガシー系とWEB系では使用するツールであったり、資産管理の考え方が異なります。
このギャップを埋めるため、IDE、GitHubという2つのツールと、CI/CDという概念を紹介します。
1-1. IDE(統合開発環境)
迷ったら、コードエディタとしてCursorを使用することをお勧めします。
1-2. GitHub
業務系/基幹系システムとWEB系システムの違いとして、ソースコードなどの資産管理があります。
業務系は集中型(Subversion(SVN)など)が多いかと思いますが、WEB系では基本的にGitを使用します。
1-3. CI/CD
6. データベースの知識
レガシーな開発現場でもRDBMSかどうかはさて置き、DBにあたるものはあると思います。
データベースって何?という部分は割愛し、WEB系でのDB知識を記載します。
7. セキュリティの知識
個人的には、全く触れてこなかった知識でした。。
業務系/基幹系システムでこの知識を使用する現場はあるのでしょうか...?
そのため、セキュリティに対する考え方から勉強が必要です。
8. 開発アーキテクチャとその思想の理解
1-1. フロントエンド側の設計
1-2. バックエンド側の設計
Discussion