Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web系エンジニア職とWebを支える技術の紹介

 Web系エンジニア職とWebを支える技術の紹介

知識ゼロでも『完全に理解した』感を得られるように、下記のような方々を対象とする勉強会で使った資料
・Webエンジニア採用している人事向け
・Webエンジニアの転職エージェント(人材紹介事業者)向け

Ryo Yoneyama

July 26, 2020
Tweet

More Decks by Ryo Yoneyama

Other Decks in Technology

Transcript

  1. 14 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ iOS

    (iPhone /iPad) Android iPhoneアプリ作ります Android 対応します
  2. 16 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ iOS

    (iPhone /iPad) Android 検索サーバー 検索するプログラムを 追加実装します データを検索する 専用サーバーを立てますね
  3. サーバーレスでも基本構成は変わりません 19 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ

    iOS (iPhone /iPad) Android クラウドだろうと、サーバーレスだろうと、サーバーは必要です! (物理的に存在してます) 最近は、サーバー設定を一生懸命頑張るより、クラウドの機能を 活用する手法がトレンドになっています。サーバーレスはその一つ。
  4. インフラエンジニア まとめ:Web サービスの構成図 25 インターネット Web サーバー データベース プログラム ユーザー

    Web ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア バックエンドエンジニア アプリエンジニア
  5. 開発プロセス 27 機能A 機能B 機能C 機能D ウォーターフォール開発 企画 設計 実装

    テスト アジャイル開発 企画 設計 実装 テスト 機能A 企画 設計 実装 テスト 機能B 企画 設計 実装 テスト 機能C 企画 設計 実装 テスト 機能D リリース リリース リリース リリース リリース
  6. 検証する ウォーターフォールのVモデル 28 受け入れテスト 単体テスト システムテスト 結合テスト 実装 詳細設計 機能設計

    要件定義 (基本設計) 要求分析 検証する 検証する 検証する この辺りが 上流工程と呼ばれる 参考:Vモデル - 情報システム用語辞典
  7. 29 検索はできないけれど、リリースしたことで ユーザーの本当に欲しかったものが 「チャットではなく、テレビ会議」だと 気がつけるかも チャット基本機能 検索機能 企画 設計 実装

    テスト リリース 企画 設計 実装 テスト アジャイル開発のメリット ウォーターフォール開発 アジャイル開発 チャット基本機能 企画 設計 実装 テスト iOS アプリ 企画 設計 実装 テスト リリース 複数ルームを横断して検索ができるべきか? 要件が決まらず遅延 実装時に想定外のトラブルが発生! どこか一つの機能の遅延が 全体リリースの遅延に繋がる 当初計画の リリース時期
  8. インフラエンジニア エンジニアの生息マップ 32 インターネット Web サーバー データベース プログラム ユーザー Web

    ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア バックエンドエンジニア アプリエンジニア
  9. 「何エンジニアか?」の特定は難しい  「Ruby ならバックエンドエンジニア」と安直な判断はできません Ruby は、Ruby on Rails というフレームワークなどでバックエンドエンジニアに 使われることが多い言語ですが、インフラエンジニアも使います(例えば、サー バー設定を記述するChef,

    サーバー設定のテストServerspec はRuby を使いま す)。 また、一つの言語で作ったソフトウェアが様々な環境で動かせる『クロスプラッ トフォーム』という仕組みがあり、もはや何エンジニアかよくわかりません。 例えば、Kotlin, React Native (JavaScript), RubyMotion (Ruby) などは iOS ア プリとAndroid アプリのどちらも作ることができます。 34
  10. フロントエンドエンジニア • ユーザーに見える部分を作る人 • フロントエンド(front-end)とは? ◦ ユーザーの目に見えて、ユーザーが操作する部分を指します ◦ 別の表現では、Webブラウザ側(クライアント側)と呼ぶことも ◦

    ユーザーが操作する部分を『ユーザーインターフェース (UI) 』と言います • おもな技術キーワード ◦ HTML, CSS, JavaScript, React, Vue.js, Nuxt, TypeScript, Angular, AngularJS ... 36
  11. アプリエンジニア • iOS/Android のアプリを作る人 ◦ それぞれ特有の作り方があるので、iOSエンジニアやAndroid エンジニアと呼ぶことが一般的 • おもな技術キーワード ◦

    iOS の場合 : Swift, Objective-C ◦ Android の場合 : Kotlin, Java ◦ 両方に使える : React Native (JavaScript), Unity (ゲーム向け) • 補足 ◦ アプリは『アプリケーション』の略。 ▪ アプリケーションは特定の作業のためにつくられたソフトウェアのこと ▪ スマートフォンやPC 上で動くソフトウェアを指してアプリと呼ぶことが多い ◦ Windows / Mac などのPC 向けアプリもあります ▪ 例えば、 Slack やZoom などPC にインストールして利用するサービスがあります ◦ 提供サービスとしてiPhone もAndroid も対応して欲しい。でも、開発言語が違うので大変 ▪ Scadeは、Swiftを使用してAndroidアプリ開発を可能にすることを目指す 38
  12. バックエンドエンジニア • サーバー上で動くソフトウェアを作る人 • バックエンド(back-end)とは? ◦ ユーザーの操作に従いデータの保存や読み込む処理を指す ◦ 別の表現では、サーバーサイドと呼ぶことも •

    おもな技術キーワード ◦ Ruby on Rails (Ruby), Django (Python), Go, PHP … • 補足 ◦ プログラミング言語とフレームワークはセットで出現します ▪ ただし、めちゃくちゃたくさんあるので覚えなくて良い ◦ ネットで調べて言語が特定できれば十分です ▪ 「Ruby on Rails は、Ruby で書かれています」 ▪ 「Django は、Python で実装されたWeb アプリケーションフレームワーク」 ▪ 「Symfony は、PHP フレームワーク」 40
  13. インフラエンジニア 41 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ

    iOS (iPhone /iPad) Android インフラエンジニア AWS Google Cloud Azure Docker Terraform
  14. インフラエンジニア • サーバーの設定・構築や監視をする人 ◦ クラウドを利用することが一般的になり、物理的な機器を取り扱うことは少ない • おもな技術キーワード ◦ AWS, Google

    Cloud, Azure, Docker, Kubernetes, Terraform … • 補足 ◦ AWS (Amazon Web Services) ▪ Amazonが提供しているクラウドコンピューティングサービスの総称です ▪ サーバーやデータベースなど用途に合わせたコンピューターを提供しています ◦ SRE(Site Reliability Engineering) ▪ インフラエンジニアの部署やチームをSRE と呼ぶことがあります ▪ 『ユーザーがいつでも快適にサービスを利用できる状態(信頼性)』の維持を指す ▪ 具体的には、インフラ業務を自動化や大量のアクセスに耐えられる仕組みを作る 42
  15. まとめ:Web サービスの構成図 50 インターネット Web サーバー データベース プログラム ユーザー Web

    ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア アプリエンジニア インフラエンジニア バックエンドエンジニア Swift Ruby Python PHP AWS Google Cloud Azure JavaScript HTML CSS Go Kotlin Docker Terraform
  16. ほかにもエンジニアがいっぱい! • コーポレートエンジニア ◦ 社内SEや情シスなどに近い領域に、エンジニアが必要とされる様になってきています ◦ 業務ツールをクラウド利用 (SaaS) する場合が多く、関連業務の効率化/自動化が一般的に •

    RPAエンジニア ◦ 繰り返し発生する業務を自動化するRPA (Robotic Process Automation) の導入も盛ん ◦ プログラミングとは異なるが、『業務手順(シナリオ)』の定義はエンジニアの発想が必要 • テストエンジニア ◦ ソフトウェアの品質を担保する人で、『QA (Quality Assurance) エンジニア』とも呼びます ◦ Selenium などを使い『自動的にソフトウェアを操作してテストする』仕組みを作ります • セキュリティエンジニア ◦ 技術・システムを取り巻く様々な脅威に対して対策していくエンジニアです デジタルトランスフォーメーション (DX) の重要性が増す現代においては、 『エンジニア』が必要のない部署は存在しないと言っても過言ではありません 53 参考:どれ目指す?IT業界のエンジニア職19種類と仕事内容をまるっと解説 - paiza開発日誌