私がいまフロントエンドエンジニアを選択した理由
私はiCAREに入社するまで特にフロントエンド専門のエンジニアという訳ではありませんでした。
一番好きで得意なのがフロントエンドの開発でしたが、Webエンジニアとしての経歴が約20年という事もあり
エンジニアを始めた当初はフロントエンドエンジニアという言葉そのものがそもそもありませんでした。
初めてコーディングをおこなったのはWindows95,98の時代で
IE3,4やNetscapeNavigatorなどが主流だった頃で
IEにおいてはJavaScriptではなく、JScriptと厳密には別のもので
CSS1.0とHTMLでレイアウトの制御にはtableタグ必須という
今考えるとすごい時代でした。
エンジニアになった当初はCGI(Perl)やMicrosoft ASP(ActiveServerPage)、PHP3・4、JavaはJSPなどで
バックエンドの開発のついでにフロントエンドもコーディングしておりました。
恐らく当時からWebエンジニアを続けてこられている方にはそういう方が沢山おられると思います。
今の時代にWebエンジニアとしてスタートすれば、もしかしたら違ったかもしれません。
私がエンジニアになった時代は、バックエンドの開発は今に比べると非常にシンプルだったように思います。
(勿論、大量のアクセスのあるサービスやそういったサービスの運用などが求められれば違ったのだと思いますが。
あとインフラは別の話です。)
Javaなどにはフレームワークという概念が当初から存在していましたが、フルスクラッチによる開発や、独自フレームワークによる開発などが普通の時代で
当時の私にとって、同じ事の繰り返しで面白く感じられなくなっていました。
(あくまでも私個人の嗜好の問題ですあしからず)
私がフロントエンドの面白さに気がつき、どっぷりつかったのは
今はほとんど利用されなくなってしまったFlash
(現Adobe AnimateCC)との出会いによるものでした。
FlashはWebアニメーション、インタラクションを非常にリッチに表現できる開発環境で
ActionScriptと呼ばれるEcmaScript系の開発言語でWeb制作をおこなう事ができました。同じ頃にOOP、所謂オブジェクト指向という考え方も広く普及しはじめて、オブジェクト指向を学習するのにもFlashは非常に良いツールでした。
HTMLとCSSだけでレイアウト、表現するよりもはるかに自由度が高く、好きなようにオブジェクトを配置し、アニメーションさせ、インタラクションを実現できる。
これは非常に画期的でした。概念的なオブジェクトと異なり、目に見えるオブジェクトを通じて
OOPと触れ合えるプログラミング環境で、
また物理シミュレーションや3D表現、アニメーションなどで数学とも触れ合うことができる。
プログラミングの楽しさ、楽しみ方は個々人で様々かと思いますが
私はこの環境で根源的なアルゴリズムを作る楽しさと触れ合う事ができました。
これがフロントエンド開発を好きになったきっかけです。
必然的にWebデザインの知識も必要となり、デザインに関する知識も得られる事ができたのも良い経験でした。
時代は変わって、スマホが当たり前の時代に突入し、小さな画面や処理能力、PCとの使い勝手の違いなどから
リッチサイトの需要が緩やかに減少してきました。
世の中のニーズはレスポンシブ、スピーディー、シンプルさなど
どのような環境・デバイスを利用しても、似通ったインターフェースで、幅広い層のユーザーが直感的かつ簡単に利用ができる事というように変化してきました。
またソフトウェア開発、特にWebアプリケーション開発の世界の
開発手法のスタンダードは大きく変わったように思います。
オープンソースの普及やGitHubの登場などでパッケージ管理システムの利用が
どのプログラミング言語においても重要視されるようになった為です。
フロントエンドにおいてはnpmやyarnなどがそれに該当するものと思います。
Webへの信頼性が向上してきた事によるサービス継続化の重要性の変化(DevOps)なども開発体勢へインパクトを与えたものと思います。
ここまでインターネット黎明期からの変化や
私がフロントエンドを好きになったきっかけなどのお話をさせていただきましたが
いま2020年にフロントエンドエンジニアを選択した理由として
1つは単純に好みである事は間違いありませんが
もう一つの大きな理由としてはフロントエンドの役割は大変広く深く
また開発言語としてのJavaScriptもTypeScriptやBabelなどのコンパイラ・トランスパイラ等の登場もあり
常に成長を続けており、応用範囲が多岐に渡り今後も進化し続けると信じている為です。
ElectronはJavaScriptでネイティブアプリケーションの開発を可能とし、ReactNativeは同様にJavaScriptでスマホアプリの開発を可能とします。
UI,UXに対する考え方はデバイスや環境の変化により進化を続けるとは思いますが
人間中心に設計するという点をつかんでおけば、どのような変化にも対応できると考えています。
ITの進化の速度は人類史上なかったスピードで加速しつづけています。
3年から5年単位で時代が変わっているように感じています。
スマホの登場、ブラウザの進化によりフロントエンドの開発は大きく変わりました。
恐らく次の時代、またその次の時代と益々進化を続けると思います。
ウェアラブルデバイスの普及、生体認証、VR・AR・MRなどがさらに進化すると、求められるUI・UXはさらに変化すると考えています。
昨今フロントエンドエンジニアというと
React,Vue,Angularなどの3大フレームワークを利用した
Web向けのアプリケーションを開発する専門家というのが
恐らく一般的な認知であると思われますが
別の面でHTML5 Canvasを利用したリッチコンテンツ、アプリケーションを開発するという分野の
フロントエンドエンジニアも存在します。
WebGLの技術が利用可能になりましたので、Flashなどで制作されていた血脈は
Canvas及びそれらを実現するライブラリとして継承されています。
PixiJS (https://www.pixijs.com/ )や
CreateJS (https://createjs.com/ )
などを利用すると、リッチなコンテンツの開発が比較的優しく開発できますので
興味のある方は是非トライしてみてください。
とても興味深い世界と出会える事と思います。
参考までにWebGLを利用したリッチコンテンツを紹介している専門サイトを掲載させていただきます。
https://webgl.souhonzan.org/
私個人はどちらかというとリッチコンテンツの制作が好きなのですが
先に述べさせていただいたように大きく分けると
フロントエンド開発の方向性は二極化していると思っています。
今現在の需要ベースで考えるとメジャーどころの3大フレームワークを使って開発するアプリケーション類の需要が高いと思いますが、
今後VR類の進化や生体認証と連動したARやMRなどの広告媒体なども、Webの技術で実現されるようになるのではないかと妄想しており
そうなると再びリッチコンテンツの需要が再浮上するのではないかと期待しています。
要するにフロントエンドの技術を習得しておくと
今後も幅広く、息が長く活かせ
しかも楽しい(完全に個人の見解です)というのが
フロントエンドに特化してみようと決めた理由です。
長文失礼いたしました。