システムが得意なクオンツの僕が、Web系システムに手こずっている5つの理由と、それを解決させる為にしていること
金融業界でC、C#、Python、R、VBAなどいろんな言語をやってきて、それなりに得意だと思っていたプログラミング、けど最近始めたWeb系の言語には手こずりまくり。なんでそうなのか、どうするかって話です。
会社でインターネットのしばりがきつかったから、会社内の閉じられた環境でプログラム開発をしてきた、使ってるソフトはほとんど有料のバグのない、便利で安全なものばかり。
そして、ずっとやりたかったネット系のシステム、10年前とか20年前のネット環境を思い出してみると、今ってかなり発展してるし、これからも右肩上がり、専門家になると楽しい世界があると確信!
ということで、やり始めたわけですが、まず手こずってる理由です。
理由1 【 フロントエンドとバックエンド、なにそれ?】
最初にぶちあたるのが、こんなところ。
会社の閉じたシステムでは、「サーバーって言えば、データベースとか共有フォルダ」のこと。だからWebサーバーとかってイマイチイメージできない。そこからですよ。
ネットではChromeなどのブラウザで見る側のシステムがフロントエンドで、それに答えるサーバー側がバックエンドなんですよね。
フロント側はデザインやインターフェースが大事で、サーバー側は高速に処理してフロントにデータを返したりが大事、役割がだいぶ違うんですよね。
お互い役割が別だから、Chromeなどのブラウザサイド側で使う言語と、サーバー側で使う言語が違ってたりして、JavaにJavaScriptにTypeScriptにPHPなどいろんな言語があるのもわかりにくいってわけですね。
そもそもここのところを良くわかってないと、何から勉強すべきかもわからない、わからないことがわかりませんでした。
理由2 【デザインするのも言語ですか!】
Webのページって字の大きさとか、色とか、画像の配置とか、完璧にデザインが大事なわけですが、それをCSSとかの言語で記述しなきゃいけないんですよね。
これって普通にかなりマニアックな操作です、なぜならC#とかではVisual Studioでマウスだけで画面を作ったりしてきたから。根本的に違うわけです。
最近ではCSSを体系的に記述できるようなSassって言語があったり、CSSをばかちょん化した、Bootstrapのような便利フレームワークがあったりする。
どこからどこまで勉強してサポートしときゃいいのか、わかりにくいし、スマホとPCで見る画面が違ってるのって、こういう技術を使うからなんだって、デザインの大きさを理解するのも一苦労。
理由3 【だいたい言語もどきが多すぎでしょ!】
Java、PHP、JavaScript、CSS、Sass 、TypeScript、Vuejs、Nodejs、Angular、React、Flutterなど、たくさんありすぎて、全部を普通に理解できる状態になるまで時間かかりますよね。
実際、理解するまで、いろんなことを知ってないとわからないんですよね、技術の発展の歴史も知らなきゃいけないなんて、大学の一般教養みたいな感じ。
理由4 【サーバーとかクラウドに慣れてない】
WordPressだって、Webサービスだって結局、サーバーを借りてそこで起動させるわけなので、サーバー環境について知らなきゃいけないし、契約、管理とかも面倒。SSHとか、権限の設定、バックアップとか。Unixやってたからまだわかるけど、普通にここだけで専門的なんですよね。
理由5 【Microsoftと絶縁状態ですよ】
Web系の開発やってる人達って基本Macなんですよね。サーバーのOSって普通Linux系だし、データベースも言語もMicrosoftがなくていいものばかり。
会社って、PCはWindowsだし、データベースはSqlServer、開発はVisual Studioで、ソフトもWindowsで動くものばかりだったわけだし、今までの経験が直接使えないものが多いんですよ。
といってもVS CodeとTypeScriptだけは存在感あり
こっちはMicrosoftだけど、かなりメジャーになりつつあり、かなりクオリティーが高いんですよね。VS CodeはMacで使えて本当に良かった。
まとめ: 【いままでが便利すぎただけか!】
いろいろ書きましたが、結局いままで便利すぎただけかもしれません。逆にWeb系ってマニアな人にとってはいろんなところにつっこみどころがあり、慣れてしまえば楽しくてしかたがないような気もします。
じゃどうすればいいかって話になって
結局、何をやりたいかって話で学習方法が変わってくると思い、自分が何をやりたいのか、よく考えて整理してみました。その結果がこうです。
① ユーザーサイド(フロントエンド)のシステムをやる
コンテンツよりのテクノロジーを身に着けて、自分のコンテンツに最適なシステムを作りたいから。
② 一人で完結できるシステムを目指す
一人でやることを前提に、効率性とデバッグ能力を重視。めんどくさいことがパッケージ化されてるフレームワーク、それもメジャーなものをやる。
具体的にはNodejs、Vuejs、Expressあたりから始めて、デザイン系ではBootstrapとかSass。
言語は絶対的に重要と感じたものを集中的にやる。JavaScriptとTypeScriptを深めにやって、使っているWordPressをカスタマイズする為にPHPもやることに!
クラウドとかサーバーは、Webサービスに必要だから、アマゾンのAWSをまずやり、マイクロソフトのAzureとか、グーグルのFireBaseとか、便利そうなものを片っ端にやってみる
③ 専門家を知るために、 有料講座を買いまくる
バーゲンセールで恐ろしく安く受講できるUdemyの講座を大量購入。
VsCodeの操作方法とか、Gitとか、拡張機能の情報とか、動画をみるだけで身につく情報も沢山あります。
過去にはできる人が身近にいることで、すごい勢いでシステムを習得できたことがあるんですが、今は一人なので、動画で同じ効果を得るってわけです。
結局は、どの程度やりたいか、自分の関心は何かってこと
Web系のコンテンツまわりの仕事をやることを決めてるので、逆算して、こういう学習方針になったわけなんですけど、人それぞれ目的が違いますよね
まずは、いろんなWebサービスとかコンテンツに接したあとに、これなら面倒でもやってみたいというものを見つけるところから、始めるのが良いです
なぜならネット系は学習範囲が広すぎるし、常に新しいものが出てくるので、やる気や関心がないと、辛くなる可能性が高いからです。
でも目的さえ見つかれば、大丈夫です、身につける事、学習自体が楽しくなって、ハードルが一気に下がっていきますよ。