IT未経験者に必要な知識
はじめに
IT企業に転職する際に、研修等を受けることがある。しかし、異業種に対して基礎的な教育が欠落しており前提条件が抜けていることで、理解せず、かつ今更聞くわけにもいかない状況にあるSEを見てきた。
これを理解しておけば、自分が何をしていて、次にどうすれば良いのか、技術がわからずとも推察することで調べて解決することが容易になる。
IT転職のメリット
IT経験者で、異業種転職を考える人間は増えていると思う。中でもIT企業は、20代や35才程度まで、研修制度など間口が広い為に選択されがちだ。
まだ先の話の人にはピンとこない話だろうけれど、近しい所でもWEBデザイナー等は年齢制限や未経験に厳しく、収入や労働環境も良いとは言えないため、個人的にはITへの転職を奨めている。
なぜ、IT企業が転職しやすいのかという話に移る。
第一には「IT人材を増やそう」という政府の方針がある。その為に、研修制度や支援金等が充実しているというわけだ。
次に、現実的には、ITの働き方のジャンルの一つに「SES」というものがあるためだ。これは、客先常駐と呼ばれるもので、自分の所属する会社には月一前後の帰社日以外帰らず、客先に通勤する。たまに自社にもシステム部がある場合もあるが、基本的にはシステムの開発や運用保守(インフラ)を行なうことになる。
システムに不具合が出た際や、システムを開発してくれる人がいる、ということに対して、常駐先が企業に月の「単価」を支払っている。
研修中の成果等で判断されることが多いが、最初の数か月は無料~初月から40万という感じだ。これは未経験での話で恐らくは学歴や飲酒等の付き合いなども加味されて決定される。
SESというのは、上記の構造上、人がいればいる程に儲かるのだ。新入社員でさえ、客先から40万の定期収入があり、社員には20万弱を渡す。とはいえ、研修費用や福利厚生を考えると、実際にマージンで利益を得ているのは先輩社員だろう。
実際に、IT転職の際に通っていたスクールで「スクールが無料で運営出来ているのは、SES企業からの投資」と詳細な説明を受けた。「未経験」を「SE」にすることで、常駐先に説得力を持たせるための研修や学習だ。
実際のところ、スクールや研修内容というのは、大学より義務教育に近く、詰め込み教育というかなぞるような教育が多い。現場は応用の連続だし、言語が違ったり、私に至ってはWEBとJavaの開発研修のみの習得でCUIを叩くインフラの現場に放り込まれた。
概念が源流
本項は、概念的な内容となる。
個人的に、研修は歴史やコードやプログラミングから始まることが多く「サーバって何」「IPアドレスって何」「どうすれば公開できる」など聞きづらい疑問が蓄積するため、そのような問題に対してのアンサーとなる。
ちなみに、それらを身につけた私は、初月から単価が同期で最高値だったが、2か月後に本社開発に部長同士、単価を倍にするという契約で引き抜かれた。転職後は、30歳女性で、フルリモートフルフレックスで年収550万程度になっていた。
IT全体としての概念
IPアドレス
ピリオドで4分割された数字で構成されており、サーバにアクセスするために必要な住所。WEBサイトの場合は、ドメインをはぎ取ってもアクセスが可能となる。
サーバとPC
この二つは、名称が異なるだけで同じマシンである。古いPCやラズパイなどを用いてサーバとして運用することも可能だ。サーバというのは凄く簡単に云うと、物を出し入れしたり複雑な処理を行なうような場所だ。
ただ、使用目的に対して特化している部分がある。
例えば、PCは家庭用で操作性のわかりやすさなどが重視されるためにGUI(グラフィックユーザーインターフェース)をを搭載している。
テレビのハッカーが黒画面に白文字でアルファベットを打っている場面を目にしたことがあると思う。マシンというものは本来は視覚的なインターフェースを持っておらず、カーソルやクリック等を用いるのがGUIだ。
一方で、サーバとして用いる場合、処理を軽くするためにあまりGUIを導入しないでCUI(キャラクターユーザーインターフェース)を使用する。その為、モニターもついていない場合もあり、ノートPCを繋いだり、リモートでSSH接続したりして使用する。
また、PCと異なり、24時間365日電源を入れた状態をキープする必要がある。サーバールームの冷房や火災システム等はこのためにある。
役割としてのサーバ
ややこしくなる一つに「サーバ」という単語が頻出することが起因している。例えば、上記で述べた「物体としてのサーバ」に対して、ここでは役割としてのサーバをいくつか記載する。
ミドルウェアと呼ばれているものだ。
OS(機械語を人間が使用しやすいように翻訳するソフトウェアのようなもの)、WindowsやiOSを指す。この下に、どの処理をどこで行なうか、またその処理を行なうための環境を区分化して作成する。
AP(アプリケーション)サーバ、DB(データベース)サーバ、WEBサーバ、メールサーバのようなものだ。
本番とテスト
上記は大抵4つに区分され、場合によっては1つのマシンではなく、ミドルウェアサーバの用途によってマシン自体が分かれている場合がある。
AP、DB、WEB、メールだった場合、4つのマシンが存在する場合があるということだ。
また、開発の際に、いきなり本番サーバを使用することは無い。同じ環境にされたテストサーバにてテストを行なうことになる。そのため、場合によっては8つのマシンに分れており、8つのIPアドレスが必要となる場合がある。
「○○DB」など、主に4文字のアルファベットで呼称されることが多い。
使用する際のサーバ
サーバは、目的に沿って選択される。WEBサイトか、それに会員サイトなどのバックエンド言語が必要となるか、プログラムの運用に際してのメリットデメリットや費用対効果等。
その為にいくつかの検討がされる。
まず、自社サーバとレンタルサーバ(広義)。文字通り、サーバを自社で工面するのか、他者に委託するのかというところから始まる。
また、次に決めるのは、物理サーバ、仮想サーバ、最近であればクラウドサーバ等の選択肢になる。
一台のマシンを一台のサーバとして運用するのか、マシンの中を区切って仮想マシンをサーバとして運用する。クラウドは大企業のサーバの中にサーバを建てる。仮想との違いはよくわかっていないが、実務では何度も触れてきているので、実体を持たない物理サーバというのが近そうだ。
物理サーバやクラウドの場合はここで終わりで、レンタルの場合はもう少し選択肢がある。
漏れがあったら申し訳ないのだけれど、VPSサーバとレンタルサーバ(狭義)など。VPSサーバは仮想サーバとほぼ同じで、OSであったりCUIからのセットアップが行なえる。レンタルサーバはWEBサーバを区切って、主にWEBサイト等の公開に特化したサービスだ。
私は、WEBデザイナー時代はレンタルサーバを使用しており、クライアントにもそれを推奨していた。バックエンド言語は別料金ということもあり、サービスを組み合わせることでコストパフォーマンスが良かったのだ。
現在は、Pythonでチャットボットを作った際の練習用に、WEBサーバだけで足りなくなったのでVPSサーバを利用している。
ここに記載したものは、全て構築をしてきているのだけれど、基本的にはSSH(遠隔操作)・FTP(ファイル転送)等を出来るようにする。そのためには、サーバ側とPC側の帳尻を合わせるために、双方が噛み合うようにソフトを入れて、ポートやセキュリティ等の設定を弄ることで開通させるという作業が必要になる。
サイト公開程度なら、SSL化や独自ドメインを含み、サービスのGUI上で操作できるレンタルサーバを圧倒的にお勧めする。
おさらい
混乱しそうなほど使われる「サーバ」という用語の分類
マシンの中での用途を示す言葉
PC
サーバ
ミドルウェアとしての役割
APサーバ
DBサーバ
WEBサーバ
メールサーバ
本番とテスト
APサーバ(本番・テスト)
DBサーバ(本番・テスト)
WEBサーバ(本番・テスト)
メールサーバ(本番・テスト)
使用時のサーバの種類
自社サーバ
レンタルサーバ(広義)
物理サーバ
仮想サーバ
クラウドサーバ
VPSサーバ
レンタルサーバ(狭義)
とあるSES企業の部長が「ヒューマンエラーは起きてはならない」と言っていた。これは、大企業のマナーテストの一項目に対しての感想だったが、正解は「ヒューマンエラーは起きる」というのが正解だった。
1953年頃には、航空機のコメット機は連続大破していた。DC-10の貨物ドアは多くの犠牲者を出し、737-MAXや777も多くの問題を引き起こした。
航空業界というのは、膨大な金銭が動く一方で「空飛ぶ金属」から不信感を取り戻すのは難しい。設計ミスや金属疲労などによるものは、すぐに対策が取られた。
現在では、航空機事故自体が年間でも数える程になった一方で、事故の要因はヒューマンエラーが目立つようになった。鬱や投資での自死に、統合失調症や、オーバーワークでの注意力散漫やケアレスミスにパワハラや慢心が増えたのだ。9.11以後はコックピットへの入室が難しくなり、それを逆手に取って立てこもって自死した事例も複数ある。
CRMという、所謂「対等に意見が云える」風通しのいい職場づくりや、病歴や、勤務時間の決まりに、ヒューマンエラーをカバーするシステムの導入などが急がれている。
仕事も同じだ。ヒューマンエラーというのは避けられる物事ではない。だからこそ、エラーが起きないためにシステムを活用したり、エラーが起きた際は自責や動揺するのではなく、リカバリーや建て直すことが何よりも大切なのだ。
ミスをしないことではなく、ミスをする可能性を念頭に置いていれば、フォローアップも迅速に行える。完璧よりも、結果を大事にしてほしい。
WEB方面の概念
別の項にまとめた方が良いかと思ったけれど、結び付いてくる物事もあるため、省略して記載する。
IPアドレスとドメイン
先述の説明で理解できているか不明だけれど、サーバの中のWEBサーバにWEBサイトのファイル(HTML/CSS等)を入れる。サーバのIPアドレスを住所とするため、アドレスバーにIPアドレスを打ち込むことでWEBサイトが表示されるようになる。
とはいえ、レンタルサーバであれば、そのサーバの無料ドメインが表示されるのでそれを使用することが殆どだ。例えば「https://レンタルサーバ.com/
(指定したドメイン)」のようなものを使用する。
別に独自ドメインというものがある。「https://(指定したドメイン)」で表示することが出来るようになる。基本は年単位での有料だが、会社として箔をつけたい場合や、ユーザーが検索しやすくするなどの利点がある。
独自ドメインやSSLの設定はVPSでは面倒くさいので、PHPやDBを使用するとしてもレンタルサーバーの上位プランなどでカバーするのがお勧め。
ファイル作成後の公開方法
ファイルの作成方法を記載しないで、公開方法を先に記載する。
個人的に学校や研修で学んだ際にコーディングやプログラミングを学んでサーバ契約やアップロード方法についての説明がなくて、不思議に思っていた為。
まずはネット上で「レンタルサーバ」で検索を行なう。「無料」を付けても良いのだけれど、ここ数年であっという間に無料は減って、3ヵ月毎の更新など色々と制約が増えた。
レンタルサーバであれば、個人的にはここがとても安かった。ただ、インフラ知識がない人間にとっては、au飛び越していきなりMVNO契約するような感覚なので、自己責任でいてほしい。
次に「FFFTP」というFTPソフトを入れる。レンタルサーバであれば特に設定はいらないと思うので、レンタルサーバ側のFTP設定の項目に従って入力する。
VPSだと、vpftpを入れて、ここでポート関係の問題が生じたり、色々大変なのだけれど、レンタルサーバなら検索して解決できる程度の問題だろう。
FFFTPを用いて、勉強に基づいて作成したサイトファイルをアップロードすることで、晴れてレンタルサーバー提供ドメインにて表示される。
WEB方面で気を付けること
デザインはデザイン、フロントエンドはフロントエンドなので、フロントエンドが異常に出来ることでデザインの人として見られるのが苦手だ。最後に記載するが、IT業界ではフロントエンドは軽視されることが多い。
ITの研修を受けている際に、インターフェース設計の為にHTML/CSSがカリキュラムに含まれることが多い。しかし、XHTMLとHTML5が混ざっていたり、空要素やテーブルの多用にHTMLにstyle指定などW3Cが卒倒しそうな内容が多々見られる。
どうしてそうなったのかといえば、フロントエンドが軽視される風潮であったり、システムは体裁を繕えればWEBサイトと異なってSEOを意識する必要がないからだ。
SEOというのは、検索順位を上げるための対策であってそれ専門の会社などもある。Googleがクローラーという自動でサイトを巡回して信頼できるか順位付けするようなシステムが有名だ。そのクローラーの為に、セマンティックマークアップという、HTMLには構造の記述しかしない、という考え方が重要視されるのだけれど、今は省略する。
先にも云ったように、体裁を整えられればシステムでは影響がないということなのだけれど。
阿部寛のサイトのように、いつかはサポート対象外に愛想が尽きて見れなくなる可能性。
理解せずにテーブルの多用で継接ぎだらけになって予想だにしない動作に時間を食われる可能性。また、重くなる可能性。
レスポンシブデザインを行なう上では、flexやgridなどCSS3を使用した方が楽ということ。
ブロックレベルとインライン
加えて、マージンやパディングなどが含まれる。
ITで研修を受けている際に、ネット上で見たボタンデザインを適用させたいと高学歴の知人にせがまれて、コードを見て絶句した記憶がある。
その時に関しては、HTMLとCSSとの結びつきが一切理解できていないのが明白だった。高度なことを実習で行なおうとする前に、土台がついてきていないのだ。
そのため、ITの研修の際に欠けている、カリキュラムの手順として、避けてはいけないものを挙げる。
HTMLにはブロックレベルとインラインというものがある。F12で検証ツールでも開いて学んでほしいのだけれど、例えば<h1>のようなものはブロックレベルになる。ブロックレベルは、内容の幅に関わらず常に100%の横幅を持っていて、marginやpaddingが効く。逆に<span>や<a>のようなものは、横幅を持っておらず、余白等の指示も効かない。
これが全て頭に入っていると、デザインをしたい際に、何処に何の指示をしたらいいかというのがわかるのだけれど、逆に頭に入っていないとバグだと思い込んだり、投げ出す人が多くいる。
marginとpaddingというのは、両方とも余白なのだけれど「他との間隔=margin」「要素の中での余白=padding」と考える。これもトライ&エラーだ。それに、これらに関しては、他と組み合わせた際にエラーが起きやすいため、代替案を用意するか、妥協するか考えた方が良い。
とても簡略化した説明でした。
レスポンシブデザイン
PCとスマホでの表示についてのデザイン。今でも、PC用とスマホ用でURLが違って、クライアントを取得してリダイレクトするサイトも散見される。
システムでもブラウザアプリもあるため、最初から、ワイヤーフレームやデザインカンプの段階、無くとも頭の設計段階で、レスポンシブを意識した方が楽でモダン。
メディアクエリというのを記載して、画面幅に応じ、CSSの内容を書き換えることで実装することが多いけれど個人的にはあまり記載しない。
flexやgridであったり、margin:0 autoやmax-widthにobject-fit等などを使用して、体裁を整えることが多い。様々な端末を考え出したらキリがないからボーダーを引きたくないと云うのと、面倒くさがりだというのが一番。なので、ここは独学の良くないところなのかもしれない。
すべてのIT研修を知らないからわからないのだけれど、WEBデザインで習ったり習わないで自分でググったりする内容なので、ITやるならHTML5/CSS3は軽くでも齧った方が良いと思う。
おわりに
フロントエンドの意義
本題の前に、冒頭の辺りで記載した、航空事故調査で得た教訓というのはIT業界に関わらず沢山学べるところがあると思う。
フェイルセーフシステムというものもあり、これは「故障することを前提として、故障した際に他に波及しないように設計すること」を指している。SESは営業が強い人は特に「失敗しない人」が人材価値が高いと信じているが、「失敗しないものはないと知ってそれを立て直す人」こそ人材価値が高いのだ。
フロントエンドに対する風当たりも似たようなものを感じる。
まあ、そもそもフロントエンドという分類自体が曖昧模糊としている。「WEBデザイナー」「WEBコーダー」「フロントエンドコーダー」「フロントエンドエンジニア」「マークアップエンジニア」など。「WEBエンジニア」はバックエンドなのかな。
求人名で収入が決められている反面、WEBデザイナーもAdobe使えればいい人と、コーディングまで含まれる人がいる。WEBデザイナーとフロントエンドエンジニアでは、職務内容は同じなのに年収や労働条件が大きく異なっていたりする。
私は、RFPの作成などもやっていた。外注のRFPの作成というのは、本来は上流階級のその上のため業界に10年以上いないとやってはいけないと云われている。
内容としてはシステムを導入したい公益団体が、刷新を考えていて、それに従って業務フローや不便に感じていることなどの詳細を毎週打合せして最終的にはパワポにまとめるという作業だった。システム屋とクライアントの間の通訳のようなものだ。
結局のところ、上長の鶴の一声ばかりで、食い下がっても意見が通ることは無かった。なんでかと云うと、システム屋の視野狭窄と私利私欲からだった。
コンペで自分たちが勝ち取りやすいように、ヒアリングを会社の都合の良い用に曲解してRFPを作成していた。
私は再三にわたり「とてもデザイン性に拘る会社だから、フロントエンドは外注した方が良い」だとか、システムの具体的な部分についても、解釈が異なっていることを訴えた。クライアントが一生懸命に伝えようと言葉にまとめてきてくれたことを、粗雑に扱うことは不義だと感じたのだ。
その後、離職したために、どうなったかはしらない。
しかし、システムを依頼するクライアントは、システムを知らないから依頼するのだ。その中身が如何に優れていようが関係が無くて、デザインと使いやすさと重くないかに最初に触れる。
UI/UXもあれば、実務にもあるだろう。押すボタンが少ない程、良いデザインだと云われる。
なので、フロントエンドは確かにバックエンドより簡単かもしれないが、軽視する風潮に飲まれずにいてほしい。
この記事が気に入ったらサポートをしてみませんか?