人事の僕がITエンジニアリングについて学んだことをまとめてみた
2020年2月からTECH::CAMP(テックキャンプ)でのプログラミング学習をスタートしました。数年前からプログラミングは学んでみたいと思っており、最近になって学習時間が確保できたので、エイヤっと申込み完了。そもそもプログラミングを学びたいと思った理由は以下の3つです。
1.エンジニア採用を担う上で役立ちそう
2.エンジニアの活躍/定着を担う上で役立ちそう
3.ITプロダクトが好きで裏側にも興味ある
学習開始から1ヶ月が経過し、HTML / CSS編・Ruby編・Rails編と、目標のプログラミング講座を全て修了しました。初学者向けのエンジニアリングの本も数冊読みました。そんな中で、人事や採用担当の皆さん向けに学びをまとめれば少しはお役に立てるかと思い、このnoteを書いてます。エンジニアの皆さんが読むと稚拙すぎて( `д´)ケッと思うかもしれません、ご了承ください。
インターネットの世界観
まず、私たちが普段利用しているFacebookやTwitterなどのインターネット上のサービスが、どのような流れで表示されるのかをみていきます。簡単に図解すると以下のようなイメージです。
PCやスマホから「このWEBサービス見せて」とリクエストします。リクエストする側のことをクライアントと呼びます。お客さんのようなイメージです。クライアントがリクエストするとネット上のどこかのPCから情報が返ってきます。このPCのことをサーバーと呼び、サーバーにはリクエストしたWEBサービスの情報を返す準備がしてあります。この情報の返却をレスポンスと呼びます。
サーバー内部には、データを保存するデータベースと、サービスの仕様を反映するロジックであるサーバーサイドスクリプトがあります。データベースにはExcelの表のようなデータが格納されているとイメージしてください。また、サーバーサイドスクリプトは Ruby / Java / PHP などのプログラミング言語をさします。データベースからデータを取り出すのはSQLで、そのデータを元にサーバーサイドスクリプトが動作し、WEBサービスの見た目である HTML / CSS を生成します。たくさん専門用語が出てきましたが、ここでは一旦全体のイメージだけ掴めれば大丈夫です。
ITエンジニアの職種
次にエンジニアの職種をみていきます。人事にも採用担当や労務担当、育成担当などの職種があるように、エンジニアにも多くの職種が存在します。ここでは代表的な3つの職種を取り上げます。
1.フロントエンドエンジニア
2.サーバーサイドエンジニア
3.インフラエンジニア
詳細を以下にまとめました。上図のインターネットの世界観のイメージと同様に、左を人間側、右をコンピューター側と意識してご覧ください。
WEBサービスを車に例えると、フロントエンドエンジニアは車の「外観」、サーバーサイドエンジニアは車の「動力」、インフラエンジニアは車が走る「道路」をそれぞれ取り扱うイメージで、具体的には次の通りです。
1.フロントエンドエンジニア
WEBサービス上で「画像を見る」「ボタンを押す」「コメント欄に書く」などの操作をするためのUIを開発します。デザイナーがつくったレイアウトやカラーリングを表現するため、HTMLやCSSなどを書きます。
2.サーバーサイドエンジニア
WEBサービス上の画面では見えない機能を開発します。例えば、WEBサービスの会員登録 / ログイン / ログアウト機能や、SNS上の人物の検索機能、ECサイトでの購入時のクレジットカード決済機能など、様々です。
3.インフラエンジニア
WEBサービスが安定稼働するための作業をします。例えば、天空の城ラピュタがテレビ放送される際、Twitterでは瞬間的に大量に「バルス」と呟くユーザーが現れます(参考:Twitterの秒間ツイート数世界記録が大幅更新、「バルス」で秒間14万件)。Twitter社としてはサーバーダウンの危険性が高まるため、インフラエンジニアはそのような障害に備えます。
ITエンジニアのスキル
次にエンジニアのスキルをみていきます。各職種ごとに求められる代表的な言語やフレームワークなどを以下にまとめました。
このnoteで全てのスキルを解説するのは不可能ですが、僕がTECH::CAMPで学んだ HTML, CSS, Ruby, Ruby on Rails については以下に解説していきます。それ以外の言語やフレームワークについては、ご自身でもぜひ調べてみてください!
HTML / CSSとは
私たちが日頃利用しているWEBサービスの目に見える部分は、主に HTML, CSS という言語を用いて作成されます。HTMLで文章を書き、CSSでサイトのデザインを行うイメージです。
左側のように、HTMLはテキストや画像が表示されるのみです。ここにCSSを用いることで、右側のようにレイアウトの整ったデザインにできます。実際にここで書いた HTML, CSS は下記ですが、書き方や内容など、詳細な説明は省きます。
Rubyとは
Rubyは日本人によって開発された日本国産のプログラミング言語です。1995年にオープンソースとして一般公開され、世界中のプログラマーがアップデートし続けているため、より良い言語へと今も進化しています。Rubyの特徴としては、以下が挙げられます。
・短くシンプルに記述ができる
・簡単で読みやすいコードが書ける
・プログラムを書いてすぐに実行できる
・日本国産の言語のため、日本語資料が多い
・いろいろな環境で動作するため、汎用性が高い
Rubyが使用されているサービスとしてはクックパッドが有名ですが、人事の皆さんに馴染みのあるサービスとしては、WantedlyやSmartHRなどもRubyでつくられています。
Ruby on Railsとは
Rubyのフレームワークの1つです。フレームワークとは、Webサービスを簡単につくるための骨組みです。フレームワーク自体はプログラミング言語ではありません。特定の用途に特化した機能を集め、簡単に扱えるようにしたものです。Ruby on Railsの特徴としては、以下が挙げられます。
・速く開発することができる
・初心者でも比較的容易に開発ができる
・Webサービス開発に必要な機能が充実している
Webサービスを建物に例えると、フレームワークは最初から存在している建物の骨組みのようなイメージです。骨組みがあると、建物全体を作りやすくなりますよね。フレームワークを使用することで、一からコードを入力してプログラミングを行う必要がなくなり、エンジニアは少ない労力でスムーズに開発できるようになります。
ここではRubyの書き方やRailsの使い方の詳細説明は省きますが、初心者の僕でも約1ヶ月で簡易版 InstagramのようなWebアプリをつくることができました。写真やコメントを投稿 / 編集でき、アプリへの新規登録 / ログイン / ログアウトの機能も実装しています。つくったものはこちらです。
実際にプログラミングを書いてみたいという方は、ぜひTECH::CAMPなどのプログラミングスクールで学んでみてください!
ちなみにRubyの代表的なフレームワークとしてRuby on Railsを紹介しましたが、JaveはSpring、PHPはCakePHP、GoはGinといったように、他のプログラミング言語にも代表的なフレームワークが存在します。自社の主要な言語とフレームワークは調べておいて損はないと思います。
各ネット企業の主要なプログラミング言語
プログラミングを学び進めると、各プログラミング言語がどのような業界やプロダクトに向いているのかを知りたくなりました。ネットで調べてみましたが、なぜかそういうものが把握できるペライチが見当たりません。「無いなら自分でつくろう」ということでまとめてみました。
スタートアップからメガベンチャーまで、各社の主要なプログラミング言語をまとめてみました。各社の採用ページから情報を取得しましたが、素人調査のため違和感があったらごめんなさい。
ここから読み解くと、例えばJavaは大規模WEBサービスでよく使われており、一方、Rubyは規模問わず幅広く使われていることがわかりました。また、表には書ききれませんでしたが、ゲーム業界ではC#を使っていることが多いようです。規模や業界によってマッチするプログラミング言語があることが、なんとなくわかります。
まだ読んでないけどオススメの本w
ここまでnoteを読み進めた方は、きっとITエンジニアリングについての理解を深めたい欲求で満ち溢れているはず。そんな貴方に朗報です。主にエンジニア採用事業を営んでいるLAPRASさんが、2020年4月に本を出版されます。タイトルは「採用・人事担当者のためのITエンジニアリングの基本がわかる本」。
最後に、このnoteのSNSシェアやハートボタン押し、下の「サポートをする」から投げ銭していただくと、泣いて喜びます!人事や採用担当の皆さんにとって、少しでも役に立つ内容となっていれば幸いです。
▼エンジニア採用支援など、HR領域のお手伝いをしております。私みやもとへの仕事依頼はビザスクからお気軽にどうぞ!
最後までお読みいただき、ありがとうございます。これからもnoteを綴っていきますので、よろしければフォローしてください。今回のnoteを気に入っていただけた方はサポートいただけると励みになります。