Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Dev Day 2021
Search
Kazuki Maeda
September 28, 2021
Programming
0
99
AWS Dev Day 2021
Kazuki Maeda
September 28, 2021
Tweet
Share
More Decks by Kazuki Maeda
See All by Kazuki Maeda
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
680
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
3
1.7k
日本の教育の未来 を考える テクノロジーは教育をどのように変えるのか
kzkmaeda
1
260
モノリスの認知負荷に立ち向かう、コードの所有者という思想と現実
kzkmaeda
0
250
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
9
6.7k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
6.5k
生成AIを用いた 新しい学びの体験を 提供するまでの道のり
kzkmaeda
0
370
生成AIによって変わる世界 -可能性とリスクについて考える-
kzkmaeda
2
340
新しいことを組織ではじめる、そしてつづける
kzkmaeda
5
1k
Other Decks in Programming
See All in Programming
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
6
1k
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
420
ゲームの物理 剛体編
fadis
0
320
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
380
Developing static sites with Ruby
okuramasafumi
0
250
生成AIを利用するだけでなく、投資できる組織へ
pospome
0
240
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
430
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
2.3k
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
38
25k
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
360
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
A Tale of Four Properties
chriscoyier
162
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Side Projects
sachag
455
43k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
How to train your dragon (web standard)
notwaldorf
97
6.4k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Balancing Empowerment & Direction
lara
5
790
Optimizing for Happiness
mojombo
379
70k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Transcript
プログラミング学習サービスの これまでを支えてきた技術と、 これからを創っていく技術
• 自己紹介 • Progateについて • 「これまで」を支えてきた技術 • 「これから」を創っていく技術 Index
自己紹介
登壇者の紹介 前職リクルートにてSREやPMなど に従事。 現在、「Engineer Function」のマネー ジャーを担う。 AWS Community Builder Member
新規サービス企画・開発のチームのテック リード。 前職は Google のChromeチームで Software Engineer として勤務。 STEP教育コースの講師も行っていた。 前田 和樹 Kazuki Maeda 島津 真人 Makoto Shimazu
Progateについて
None
None
None
None
None
None
「これまで」を支えてきた技術
「これまで」のサービス提供の 難しいポイント
「これまで」のサービスを提供する上での難しいポイント • ポイントに絞った学習 • ユーザーのコードを「実行」する • ユーザーのコードを「判定」する • グローバル展開対応
「これまで」のサービスを提供する上での難しいポイント • ポイントに絞った学習 • ユーザーのコードを「実行」する • ユーザーのコードを「判定」する • グローバル展開対応
InputとOutputの学習設計 学んだ内容をすぐにアウトプットできる学習設計
ステップバイステップの演習 レッスンを進めるごとにできることが積み上がっていく学習設計
「これまで」のサービスを提供する上での難しいポイント • ポイントに絞った学習 • ユーザーのコードを「実行」する • ユーザーのコードを「判定」する • グローバル展開対応
ブラウザ上で動くエディタ・ターミナル・ブラウザ
コードの実行 Docker Docker Web Server コード実行システム ユーザーごとに個別のコード実行環境を提供している
「これまで」のサービスを提供する上での難しいポイント • ポイントに絞った学習 • ユーザーのコードを「実行」する • ユーザーのコードを「判定」する • グローバル展開対応
コードの判定 Docker Docker Web Server コード実行システム コード判定システム
独自の判定ロジック 書かれているコードは 想定通り?
独自の判定ロジック 書かれているコードは 想定通り? コードの実行結果は 正しい?
独自の判定ロジック 書かれているコードは 想定通り? コードの実行結果は 正しい? テストは通る?
独自の判定ロジック 書かれているコードは 想定通り? コードの実行結果は 正しい? テストは通る? 生成されたHTMLと 見本との差異は?
独自の判定ロジック 書かれているコードは 想定通り? コードの実行結果は 正しい? テストは通る? 生成されたHTMLと 見本との差異は? レッスンに応じて結果を多角的に判定する独自の判定ロジック
「これまで」のサービスを提供する上での難しいポイント • ポイントに絞った学習 • ユーザーのコードを「実行」する • ユーザーのコードを「判定」する • グローバル展開対応
コンテンツの多言語対応
コード実行システムをグローバルに配置 Web Server コード実行システム よりユーザーに近いロケーションでコードの実行が可能
「これまで」のサービスを 構成しているアーキテクチャ
「これまで」のサービスを提供しているアーキテクチャ
基本的なWeb構成 Webのレイヤは標準的な構成 (ALB + EC2(ASG) + RDS + Redis) Github
+ CircleCI でCI/CD
ユーザーのコード実行システム ユーザーのコードを実行する環境を EC2にホストしたDocker swarm clusterで実現 (現在別の技術への置き換えを検証中) このコンポーネントを複数 Regionに配置
アーキテクチャ進化の一例 クライアントサイドのログを収集する基盤は マイクロサービス化して ECS Cluster(Fargate)で構築 →TechBlogで詳細解説しています! https://tech.prog-8.com/entry/2021/03/17/080000
マネージドサービスの活用 学習体験をトラッキングするためのログ基盤は Amazon Kinesis Data Firehose + AWS Lambda +
Athena で構築 →サービス改善に役立てることを目指しています!
AWSを活用していたからできたこと • 枯れた技術を用いた安定したサービス提供と、アップデートの早い豊富なマ ネージドサービスを用いたスピーディな新規開発 ◦ メインのWebシステムはEC2ベースの枯れた技術を選定していますが、非常に安定的に サービス提供を行うことができています ◦ データストリームやChatOpsなど新規に構築する機能はマネージドサービスを活用し、ス ピーディに開発できています
Progateのこれから
None
これまで
これから
「これから」を創っていく技術
これからやっていきたいこと 最短で「創れる人」になってもらうための、 プログラミング学習における「知の高速道路」を整備していきたい。 ・基礎的なプログラミングを躓くことなくきちんと体験できる環境 ・いろいろなコードを書いてみたり、作業をする試行錯誤の中で 必要な知識や経験を身につけてもらえるような演習体験 43
創れる人 Progate が提供できているもの・したいもの スキル 学習量 現状のProgateの カバー範囲
創れる人 Progate が提供できているもの・したいもの スキル 学習量 現状のProgateの カバー範囲
Quest デバッグ問題 「バグがあるので直してください」 アルゴリズム問題(TSP) 「すべての地点を一筆書きできる 短い経路を見つけてみましょう」
これまでとの違いは? ・課題(バグを直す)をどう対処するか、 手順を自分で考える必要がある ・ヒントは与えられ、自分で検索しながら 学習していくスタイル
創れる人 Progate が提供できているもの・したいもの スキル 学習量 現状のProgateの カバー範囲 Quest
創れる人 Progate が提供できているもの・したいもの スキル 学習量 現状のProgateの カバー範囲 Path Quest
実践的な、試行錯誤しながら学べる演習とはなにか? 普段僕たちが行っているような開発が出来るまでに 何を経験する必要があるだろうか?
実践的な、試行錯誤しながら学べる演習とはなにか? 問題の分割 ツールの操作 普段僕たちが行っているような開発が出来るまでに 何を経験する必要があるだろうか? プログラミングももちろんだけど、 それ以外にもたくさんの要素がある! デバッグ エラーの分析 コードの理解
環境構築 きれいな コーディング
実践的な、試行錯誤しながら学べる演習とはなにか? 問題の分割 ツールの操作 普段僕たちが行っているような開発が出来るまでに 何を経験する必要があるだろうか? プログラミングももちろんだけど、 それ以外にもたくさんの要素がある! デバッグ エラーの分析 コードの理解
環境構築 きれいな コーディング それってどんな演習なら体験できる? 🤔
問題の分割 ツールの操作 普段僕たちが行っているような開発が出来るまでに 何を経験する必要があるだろうか? プログラミングももちろんだけど、 それ以外にもたくさんの要素がある! デバッグ エラーの分析 コードの理解 環境構築
きれいな コーディング それってどんな演習なら体験できる? 🤔 →鋭意作成中!
作っているものの一例:ユーザー体験のサポートのためのコマンドラインツール - 補助輪としてユーザー体験を支えるツール - ユーザーさんが簡単に環境構築できるようサポート - テストを走らせる - Go を採用
- クロスコンパイルが簡単 - バックエンドとの通信のための gRPCのサポートが充実している - Cobraのようなコマンドラインツールをつくる使い勝手のよいライブラリもある
作っているものの一例:コンテンツ管理システム - エンジニアとしては、カスタマーとしてユーザーさんの他に 社内のコンテンツプランナーやi18nチームもいる コンテンツ配信 システム コンテンツプランナー i18nチーム ユーザーさん 入稿するデータが特殊。
・演習のページ ・ユーザーさんが触るソースコード ・判定システム
Progate では、2つの軸を据えてプロダクト開発を行っています。 ・躓くことなくプログラミングの世界に触れることができるプロダクト ・「創れる人」になるための力をつけることができるプロダクト Progate エンジニアチームとしては、 よりよいユーザー体験を提供するために、必要な技術的な課題を 日々解いています。
• エンジニアのインタビュー記事やイベントレポートなど掲載 • 是非一度ご覧ください! \積極採用中!/ 57 採用特設サイトを公開しています! https://bit.ly/progate-aws-devday-2021
Progate エンジニア 採用情報