Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Web系エンジニア職とWebを支える技術の紹介
Search
Ryo Yoneyama
July 26, 2020
Technology
0
160
Web系エンジニア職とWebを支える技術の紹介
知識ゼロでも『完全に理解した』感を得られるように、下記のような方々を対象とする勉強会で使った資料
・Webエンジニア採用している人事向け
・Webエンジニアの転職エージェント(人材紹介事業者)向け
Ryo Yoneyama
July 26, 2020
Tweet
Share
More Decks by Ryo Yoneyama
See All by Ryo Yoneyama
ゼロから始める IntercomでCS立ち上げ
yulii
4
1.5k
エンジニアになるきっかけとエンジニアとしてのプライド / Career Anchors (2016-08-17)
yulii
0
320
男子(おじさん)が創る女性向けサービスのデプロイ戦略
yulii
5
960
テストコード文化を創る
yulii
3
900
キャリア戦略論
yulii
2
1.2k
LiBz CAREER の作り方
yulii
1
250
1 → 10 を創る開発基盤
yulii
0
8k
Emoji Communication
yulii
0
220
短納期&少人数でも 実現できるCI
yulii
2
6.7k
Other Decks in Technology
See All in Technology
Terraform Stacks入門 #HashiTalks
msato
0
350
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
360
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
TypeScript、上達の瞬間
sadnessojisan
46
13k
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
930
[FOSS4G 2019 Niigata] AIによる効率的危険斜面抽出システムの開発について
nssv
0
310
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
複雑なState管理からの脱却
sansantech
PRO
1
140
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Docker and Python
trallard
40
3.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
The Language of Interfaces
destraynor
154
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
The World Runs on Bad Software
bkeepers
PRO
65
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Transcript
Web系エンジニア職と Webを支える技術の紹介 1
今日のゴール 1. 知らない(不安・恐怖・拒絶) 2. 聞いたことがある(親近感) 3. 知っている(興味が持てた) 4. 理解している(他人に説明できる) 5.
使える(それはエンジニアです!) 2 このラインを超えたらOK
「◦◦エンジニア」 丸に入る言葉は? 3
インターネットとは? 4 インターネット
モノづくりとは? 5
◦◦って最近すごいらしいね? あれいくらで作れる? 6
ビジネス向けチャットを作ろう 7
8 インターネット ユーザー
9 インターネット Web サーバー データベース ユーザー Web サービスを動かす サーバーを作成しよう!
10 インターネット Web サーバー データベース ユーザー Web ブラウザ デザインをもとに、 Web
ブラウザで表示する 画面を作成します
11 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ 入力したメッセージを
保存したり、ほかの人の発言を 読み込む処理を実装するぞ。
12 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ チャットが動く様になりました!
13 アプリは? 外出が多いから、 スマホでも使いたい。
14 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ iOS
(iPhone /iPad) Android iPhoneアプリ作ります Android 対応します
15 この間チャットでもらった話が 思い出せなくて... 検索はできないの?
16 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ iOS
(iPhone /iPad) Android 検索サーバー 検索するプログラムを 追加実装します データを検索する 専用サーバーを立てますね
17 サーバーレス (Serverless) が 流行ってるって聞いたよ。 なんでサーバーが必要なの?
サーバーレスとは? 18 インターネット プログラム ユーザー Web ブラウザ iOS (iPhone /iPad)
Android !? 今まで書いたプログラムはどこに...
サーバーレスでも基本構成は変わりません 19 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android クラウドだろうと、サーバーレスだろうと、サーバーは必要です! (物理的に存在してます) 最近は、サーバー設定を一生懸命頑張るより、クラウドの機能を 活用する手法がトレンドになっています。サーバーレスはその一つ。
20 テキストでのやり取りは面倒! サクッと会話した方が効率的なので テレビ会議できる機能が欲しい!
21 もはやチャットではない...
エンジニアは、 何人登場したでしょう? 22
23 バックエンドエンジニア アプリエンジニア フロントエンドエンジニア インフラエンジニア 5人
なぜ、そんなにエンジニアが必要なの? エンジニアの中での分業化が加速しています。新しい技術が生まれて便利になる につれて、各要素技術の専門性が高まり、分業しないとやっていけません。別の 側面から見ると、各エンジニアの転向や複数の役割を兼任するのは大変です。 イメージとしては、眼科と耳鼻科くらいの差があります。眼科の先生とはいえ、 大学で様々な医学を勉強しているので、耳鼻科の知識はあるでしょう。でも、眼 科の先生に「耳の手術してくれ!」と言ったら ってなると思います。 24
インフラエンジニア まとめ:Web サービスの構成図 25 インターネット Web サーバー データベース プログラム ユーザー
Web ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア バックエンドエンジニア アプリエンジニア
モノづくりのプロセス 26
開発プロセス 27 機能A 機能B 機能C 機能D ウォーターフォール開発 企画 設計 実装
テスト アジャイル開発 企画 設計 実装 テスト 機能A 企画 設計 実装 テスト 機能B 企画 設計 実装 テスト 機能C 企画 設計 実装 テスト 機能D リリース リリース リリース リリース リリース
検証する ウォーターフォールのVモデル 28 受け入れテスト 単体テスト システムテスト 結合テスト 実装 詳細設計 機能設計
要件定義 (基本設計) 要求分析 検証する 検証する 検証する この辺りが 上流工程と呼ばれる 参考:Vモデル - 情報システム用語辞典
29 検索はできないけれど、リリースしたことで ユーザーの本当に欲しかったものが 「チャットではなく、テレビ会議」だと 気がつけるかも チャット基本機能 検索機能 企画 設計 実装
テスト リリース 企画 設計 実装 テスト アジャイル開発のメリット ウォーターフォール開発 アジャイル開発 チャット基本機能 企画 設計 実装 テスト iOS アプリ 企画 設計 実装 テスト リリース 複数ルームを横断して検索ができるべきか? 要件が決まらず遅延 実装時に想定外のトラブルが発生! どこか一つの機能の遅延が 全体リリースの遅延に繋がる 当初計画の リリース時期
【余談】『開発』を担うエンジニアのこれから 30 出典:Netflixにおけるフルサイクル開発者―開発したものが運用する モノづくりに必要な技術がたくさんある!! 『専門家』に再利用可能なツールを作ってもらう (例えば、作業の単純化、プロセスの自動化など) 『開発』を担うエンジニアは、 専門家が作ったツールを活用して、 設計、開発、テスト、運用、サポートの すべてのプロセスに責任を持つ『多能工』
技術とエンジニア 31
インフラエンジニア エンジニアの生息マップ 32 インターネット Web サーバー データベース プログラム ユーザー Web
ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア バックエンドエンジニア アプリエンジニア
『技術』には向き不向きがある 33 Web サービスを作りたい Ruby iOS アプリを作りたい Android アプリを作りたい 機械学習を取り入れたい
Python Swift Kotlin
「何エンジニアか?」の特定は難しい 「Ruby ならバックエンドエンジニア」と安直な判断はできません Ruby は、Ruby on Rails というフレームワークなどでバックエンドエンジニアに 使われることが多い言語ですが、インフラエンジニアも使います(例えば、サー バー設定を記述するChef,
サーバー設定のテストServerspec はRuby を使いま す)。 また、一つの言語で作ったソフトウェアが様々な環境で動かせる『クロスプラッ トフォーム』という仕組みがあり、もはや何エンジニアかよくわかりません。 例えば、Kotlin, React Native (JavaScript), RubyMotion (Ruby) などは iOS ア プリとAndroid アプリのどちらも作ることができます。 34
フロントエンドエンジニア 35 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android フロントエンドエンジニア JavaScript HTML CSS
フロントエンドエンジニア • ユーザーに見える部分を作る人 • フロントエンド(front-end)とは? ◦ ユーザーの目に見えて、ユーザーが操作する部分を指します ◦ 別の表現では、Webブラウザ側(クライアント側)と呼ぶことも ◦
ユーザーが操作する部分を『ユーザーインターフェース (UI) 』と言います • おもな技術キーワード ◦ HTML, CSS, JavaScript, React, Vue.js, Nuxt, TypeScript, Angular, AngularJS ... 36
アプリエンジニア 37 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android アプリエンジニア Swift Kotlin
アプリエンジニア • 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
バックエンドエンジニア 39 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android バックエンドエンジニア Ruby Python PHP Go
バックエンドエンジニア • サーバー上で動くソフトウェアを作る人 • バックエンド(back-end)とは? ◦ ユーザーの操作に従いデータの保存や読み込む処理を指す ◦ 別の表現では、サーバーサイドと呼ぶことも •
おもな技術キーワード ◦ Ruby on Rails (Ruby), Django (Python), Go, PHP … • 補足 ◦ プログラミング言語とフレームワークはセットで出現します ▪ ただし、めちゃくちゃたくさんあるので覚えなくて良い ◦ ネットで調べて言語が特定できれば十分です ▪ 「Ruby on Rails は、Ruby で書かれています」 ▪ 「Django は、Python で実装されたWeb アプリケーションフレームワーク」 ▪ 「Symfony は、PHP フレームワーク」 40
インフラエンジニア 41 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android インフラエンジニア AWS Google Cloud Azure Docker Terraform
インフラエンジニア • サーバーの設定・構築や監視をする人 ◦ クラウドを利用することが一般的になり、物理的な機器を取り扱うことは少ない • おもな技術キーワード ◦ AWS, Google
Cloud, Azure, Docker, Kubernetes, Terraform … • 補足 ◦ AWS (Amazon Web Services) ▪ Amazonが提供しているクラウドコンピューティングサービスの総称です ▪ サーバーやデータベースなど用途に合わせたコンピューターを提供しています ◦ SRE(Site Reliability Engineering) ▪ インフラエンジニアの部署やチームをSRE と呼ぶことがあります ▪ 『ユーザーがいつでも快適にサービスを利用できる状態(信頼性)』の維持を指す ▪ 具体的には、インフラ業務を自動化や大量のアクセスに耐えられる仕組みを作る 42
AWS が提供するサーバー機能 出典:Amazon Web Service (AWS) 43 約200個のサービス!
モノづくり 44
インターネットとは? 45
無線で繋がるクラウド 46 インターネット
ではなくて... 47
こんな仕組みです! 48 インターネット Web サーバー データベース プログラム ユーザー Web ブラウザ
iOS (iPhone /iPad) Android
そして、 複数のエンジニアと 様々な技術を組み合わせて 作られています 49
まとめ:Web サービスの構成図 50 インターネット Web サーバー データベース プログラム ユーザー Web
ブラウザ iOS (iPhone /iPad) Android フロントエンドエンジニア アプリエンジニア インフラエンジニア バックエンドエンジニア Swift Ruby Python PHP AWS Google Cloud Azure JavaScript HTML CSS Go Kotlin Docker Terraform
以上です! 51
Appendix 52
ほかにもエンジニアがいっぱい! • コーポレートエンジニア ◦ 社内SEや情シスなどに近い領域に、エンジニアが必要とされる様になってきています ◦ 業務ツールをクラウド利用 (SaaS) する場合が多く、関連業務の効率化/自動化が一般的に •
RPAエンジニア ◦ 繰り返し発生する業務を自動化するRPA (Robotic Process Automation) の導入も盛ん ◦ プログラミングとは異なるが、『業務手順(シナリオ)』の定義はエンジニアの発想が必要 • テストエンジニア ◦ ソフトウェアの品質を担保する人で、『QA (Quality Assurance) エンジニア』とも呼びます ◦ Selenium などを使い『自動的にソフトウェアを操作してテストする』仕組みを作ります • セキュリティエンジニア ◦ 技術・システムを取り巻く様々な脅威に対して対策していくエンジニアです デジタルトランスフォーメーション (DX) の重要性が増す現代においては、 『エンジニア』が必要のない部署は存在しないと言っても過言ではありません 53 参考:どれ目指す?IT業界のエンジニア職19種類と仕事内容をまるっと解説 - paiza開発日誌
アジャイル開発したい 無自覚なPMがエンジニアに「価値の分解」を丸投げしちゃダメです! 自覚はないかもしれませんが、あなたはPMとしての役割の一部もしくは全部を担っています。 あなたがアジャイルとはなんぞや? を学んでから始めても遅くはないです (もしくはエンジニアと一緒に学びながらやりましょう)。 エンジニアだけでなく、PMとも面談させてもらいましょう。 どんな人がPMの役割を担っているかは重要です。 PMに「どうやって開発する機能を決めていますか?」「バグが発覚した際に、いま進んでいる機能開発 とどの様に折り合い(優先順位)を付けていますか?」など聞いてみると良いかも。
54 経営者「アジャイルで開発しよう」 エンジニア「アジャイル開発している会社に転職したい」