Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
Search
吉田真吾
November 13, 2024
Technology
840
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
AWS Lambda 10周年記念生誕祭
https://serverless-newworld.connpass.com/event/320224/
吉田真吾
November 13, 2024
More Decks by 吉田真吾
See All by 吉田真吾
AIに代替されるフリーランス、AIを操りチームを導くリーダー。運命を分ける『AI-DLC』とインテントマネジメント/Intent is All We Need
yoshidashingo
0
110
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
340
早く行きたいならClaude Codeと行け、遠くに行きたいならチームで行け 〜AI駆動開発の講師が教えるAIがリードするチーム開発の実践ノウハウ/Fast w/ Claude Code, Far Together
yoshidashingo
0
59
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
810
はじめてのAI-DLC
yoshidashingo
3
1.7k
初手AIで実現する 「AIと一緒に働く」ということ - AIファーストを実現する汎用タスクエージェントのつくりかた / JAWS DAYS 2026
yoshidashingo
0
110
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
4
20k
エンジニアはコミュニティで伸びる!テックコミュニティ代表者トークリレー / TCP2026
yoshidashingo
0
50
達人に学ぶAIコーディング / ai-coding-learned-from-master
yoshidashingo
0
74
Other Decks in Technology
See All in Technology
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
420
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
140
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
160
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
360
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
270
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
200
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
670
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
220
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
330
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
220
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
520
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
950
Paper Plane (Part 1)
katiecoart
PRO
2
11k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Odyssey Design
rkendrick25
PRO
2
850
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Transcript
"84-BNCEBͱาΜͩ lαʔόʔϨεzͱࠓޙ ٢ాਅޗ !ZPTIJEBTIJOHP ηΫγϣϯφΠϯ δΣωϥςΟϒΤʔδΣϯπ
吉田真吾 n バックグラウンド 証券システム基盤開発 p基盤システム開発、Oracleチューニング エバンジェリスト‧ソリューションアーキテクト pAWS設計‧構築‧移⾏ pエバンジェリスト‧SA スタートアップCTO p技術経営‧組織開発
pタレントマネジメントSaaS 開発‧運⽤ n 現在のしごと (株) セクションナイン 代表取締役CEO (株) ジェネラティブエージェンツ 取締役COO n 実績等 pAWSウルトラクイズ 初代チャンピオン pAWS Samurai 2014 / 2016 pAWS Serverless Hero p講演、執筆多数
ࠓ͢͜ͱ "84-BNCEBͷੜ ʲͷ͜ͱʳ αʔόʔϨεΞʔΩςΫνϟͷຄڵͱίϛϡχςΟͷ ʲʙ͘Β͍ͷ͜ͱʳ ϫʔΫϑϩʔΦʔέετϨʔγϣϯͦ͜ਅࠎ ʲҎ߱ͷ͜ͱʳ
˞ศٓతʹ࣌ܥྻͷਖ਼֬ੑ͕ඈͼඈͼʹͳΔ෦͕͋Γ·͢
"84-BNCEBͷੜ
·ΔͰΫϥυͰΔϚΫϩݴޠʮ"84-BNCEBʯൃද • SF*OWFOU ʹͯൃද • /PEFKT • Πϕϯτιʔεɿ •
4όέοτ • %ZOBNP%#ςʔϒϧ • ,JOFTJTετϦʔϜ • ϗετɿඇެ։ -JOVYϕʔε • ϝϞϦɿ.#ʙ (# • λΠϜΞτɿʙඵ • Ұ࣌ετϨʔδɿ.# • ϝϞϦʹൺྫͯ͠$16ωοτ ϫʔΫͷׂͯଟ͘ͳΔ https://www.publickey1.jp/blog/14/aws_lambdaaws_reinvent_2014.html
'VODUJPOTBTB4FSWJDFͷ಄ • ಛ • ࣮ߦڥӅṭˍϓϥοτϑΥʔϜཧͰɺඞཁͳͷίʔυͷΈ • ίϯςφϕʔεͰௐୡϦʔυλΠϜΛॖ • ࢄ࣮ߦڥʹΑΔՄ༻ੑͷ֬อ •
࣮ߦ࣌ؒͷΈ՝ۚʹΑΔίετݮ • ΞʔΩςΫνϟʹ͓͚Δ • 4UBUFGVM 4UBUFMFTT • Ӭଓσʔλ شൃੑ • ϞϊϦγοΫ .JDSPTFSWJDFT • όονॲཧ ΠϕϯτυϦϒϯ https://aws.amazon.com/jp/about-aws/events/reinvent-report-2014-pt2/
"84-BNCEB αʔόʔϨεɾϚχϑΣετ ϑΝϯΫγϣϯσϓϩΠ୯Ґ֦ுՄೳ୯ҐͰཧ͢Δ ػثԾαʔόʔίϯςφ͕ϓϩάϥϛϯάϞσϧ͔Βݟ͑ ͍͚ͯͳ͍ σʔλΛӬଓԽ͢ΔετϨʔδଞͷॴʹ֬อ͢Δ
ϦΫΤετ୯Ґʹεέʔϧ͕ཧ͞ΕΔɻϢʔβʔΩϟύγ ςΟͷௐୡෆա͠ͳ͍ ΞΠυϧ࣌ؒʹ՝ۚ͞Ε͍͚ͯͳ͍ʢػαʔόʔίϯςφ ՝ۚʣ ϑΝϯΫγϣϯͲ͜Ͱ࣮ߦͰ͖ΔͷͰɺ҉తʹোੑΛ ࣋ͭ #SJOHZPVSPXODPEFίʔυ͚ͩ࣋ͪࠐΊ͍͍ ϝτϦΫεऩूϩάऔಘઈରతਖ਼ٛͰ͋Δ
"84-BNCEB :&4 • ಠཱͨ͠ϑΝϯΫγϣϯ • 3&45GVM"1*͔ ΠϕϯτυϦϒϯ • #:0$ ίʔυΛ࣋ͪࠐΉ͚ͩ
• ෳࡶͳΞϧΰϦζϜͰཧ • ਫฏεέʔϧ • ಉظඇಉظεέδϡʔϦϯά /0 • αʔόʔ্ͰՔಇ • ϞϊϦγοΫͳUBSϘʔϧʹͳͬ ͍ͯΔ • ϞϊϦγοΫͳσϓϩΠํ๏ • ॏྔڃϑϨʔϜϫʔΫ • ࢄ͞ΕͨγεςϜίʔυ • ୯ௐ࡞ۀʢϩάऔಘͳͲʣ͕ඞ ཁ αʔόʔϨεΞϓϦέʔγϣϯ͔Ͳ͏͔
ίʔϧυελʔτ 2019年3⽉現在 • ⾔語実⾏環境によって違いあり • NodeやGoについては無視できる 場合が⼤半だと⾔える ※並列実⾏してない(ランプアップなし)なのであくまで 参考 1SPWJTJPOFE$PODVSSFODZ
4OBQ4UBSU ͔ͭͬͯ
αʔόʔϨεΞʔΩςΫνϟ ͷຄڵ
ύϥμΠϜγϑτ 8IZ5IF'VUVSF0G4PGUXBSF"OE"QQT*T4FSWFSMFTT CZ,FO'SPNN 71PG#VTJOFTT%FWFMPQNFOUBU*SPOJP • ίϯϐϡʔςΟϯάϦιʔεͷௐୡϦʔυλΠϜͷॖ • ελϯμϩʔϯΞϓϦ͔ΒͷมԽʢݱࡏͷ.JDSPTFSWJDFTʣ • ΫϥυͰॊೈʹίϯϐϡʔςΟϯάϦιʔεΛαʔϏεͱͯ͠ར
༻͢Δ͜ͱ͕Ͱ͖Δ • αʔόʔ͕ཁΒͳ͍ͱ͍͏͜ͱͰͳ͘ɺ։ൃऀαʔόʔʹ͍ͭ ͯʮߟ͑ͳͯ͘Α͘ͳΔʯ http://readwrite.com/2012/10/15/why-the-future-of-software-and-apps-is-serverless/
1BB4ͷීٴ ʙ • ΠϯϑϥΛӅṭͨ͠ιϑτΣΞ࣮ߦج൫ ˠΠϯϑϥ࣮ߦڥͷϝϯςʹඅ͢࡞ۀ ͕ݮΔ • 'BDUPS"QQ ͷਪਐ •
՝ • ϨΨγʔγεςϜͷҠ২ੑ • ύοέʔδϯάϙʔλϏϦςΟͷ࠶ݱੑ ͷ͞
8FC 6*υϦϒϯ ΞϓϦέʔγϣϯ #BDLFOE'PS'SPOUFOEͰαʔόʔϨ ε׆༻ ೝূϩδοΫΛ#BB4Ͱஔ͑ %ZOBNP%#ʹΫϥΠΞϯτ͔Β ΞΫηε͢ΔΑ͏ʹ
େͷϩδοΫΛΫϥΠΞϯτͷ γϯάϧϖʔδΞϓϦέʔγϣϯ ʹ 69ʹؾΛ͚ͭΔ ͯ͠αʔόʔ ଆ"1*(BUFXBZͰଋͶΔ ݕࡧػೳΛ'BB4্ʹ ηΩϡϦςΟͷߟྀͰ՝ۚผ%# ʹผ'BB4ͰΞΫηε͢ΔΑ͏ʹ http://martinfowler.com/articles/serverless.html
αʔόʔϨεγϯάϧϖʔδΞϓϦέʔγϣϯ ಡΈਐΊͳ͕ΒखΛಈ͔͚ͩ͢Ͱ 4FSWFSMFTT 41"͕࡞Ͱ͖Δ 4UFQCZ 4UFQΨΠυ
www.example.com Amazon Route 53 Amazon S3 (Static Website) Google+ profile
Cognito Identity Pools Lambda DynamoDB SPA 41"ʴαʔόʔϨεߏ
αʔόʔαΠυॲཧෆཁ [index.html] イベント ループ Javascript [app.js] [app_spec.js] イベントを トリガする リクエスト
コールバック 関数の起動 入力の取得 マークアップの変更 マークアップのテスト public ├── index.html ├── app.js ├── tests │ ├── SpecHelper.js │ ├── app_spec.js │ ├── index.html │ └── lib │ ├── jasmine-2.3.4 │ │ ├── boot.js │ │ ├── console.js │ │ ├── jasmine-html.js │ │ ├── jasmine.css │ │ ├── jasmine.js │ │ └── jasmine_favicon.png │ └── jquery-2.1.4.js └── vendor.js
'use strict'; var learnjs = {}; learnjs.problemView = function() {
return $('<div class="problem-view">').text('Coming soon!'); } learnjs.showView = function(hash) { var routes = { '#problem-1': learnjs.problemView }; var viewFn = routes[hash]; if (viewFn) { $('.view-container').empty().append(viewFn()); } } ςετۦಈ [tests/app_spec.js] describe('LearnJS', function() { it('can show a problem view', function() { learnjs.showView('#problem-1'); expect($('.view-container .problem-view').length).toEqual(1); }); it('shows the landing page view when there is no hash', function() { learnjs.showView(''); expect($('.view-container .landing-view').length).toEqual(1); }); }); テスト ϧʔτͷଘࡏνΣοΫˠςετɿΤϥʔ ˠϧʔτͷ࣮ˠςετɿਖ਼ৗ [app.js] 実装
αʔόʔαΠυॲཧύʔπͱͯ͠ΈࠐΈ ログイン ID取得 検証 認証情報取得 検証 APIコール ログインOK ID発行
ΠϕϯτυϦϒϯΞϓϦέʔγϣϯ • ΦϯϥΠϯࠂγεςϜ • ૉૣ͍৴ ͱಉ࣌ʹ ΞΫςΟϏςΟه • ඇಉظʹαʔόʔʹૹ৴͍ͯͨ͠෦ ΛεέʔϥϏϦςΟΛؾʹ͠ͳ͍ͯ͘
͍'BB4ʹૹ৴ • ͦͷଞɺΞοϓϩʔυίϯςϯπͷ αϜωΠϧ࡞ͳͲ http://martinfowler.com/articles/serverless.html
"84ʹΑΔαʔόʔϨεΞʔΩςΫ νϟ • αʔόʔϨεΞʔΩςΫνϟʹΑΔಈըγΣ ΞαΠτߏங • ΦϯϥΠϯڭҭಈըαΠτʮ"$MPVE (VSVʯͰ࣮ࡍʹΘΕ͍ͯΔٕज़ίʔυ Λϕʔεʹ%FFQ%JWF •
"84-BNCEB"1*(BUFXBZ4 $MPVE'SPOU &MBTUJD5SBOTDPEFS "VUI'JSFCBTF3FBMUJNF %BUBCBTF
ϋϯζΦϯ༰
None
http://www.slideshare.net/acloudguru/ant-stanley-being-serverless
$PHOJUP "84-BNCEB (PPHMF"QQ &OHJOF 1SFWJFX 8IZ5IF'VUVSF0G4PGUXBSF "OE"QQT*T4FSWFSMFTT ϑϩϯτΤϯυͷओઓԽʹ ͏όοΫΤϯυͷύʔπԽ
"NB[PO4 "1*(BUFXBZ ,JOFTJT'JSFIPTF $MPVE8BUDI&WFOUT &WFOU#SJEHF 4UFQ'VODUJPOT "UIFOB (MVF "VSPSB4FSWFSMFTT7 "QQ'MPX 1SPUPO "QQMJDBUJPO $PNQPTFS 0QFO4FBSDI 4FSWFSMFTT #FESPDL "QQ'BCSJD ##%BUB*OUFSDIBOHF &MBTUJ$BDIF 4FSWFSMFTT "QQ4ZOD "84'BSHBUF 4FSWFSMFTT"QQMJDBUJPO3FQPTJUPSZ lͪΐͬͱzαʔόʔϨε αʔόʔϨε ΠϕϯτϧʔςΟϯάɺϑΣσϨʔ γϣϯɺεςʔτϚγϯͳͲͷਐԽ $%/ΤοδͷαʔόʔϨε 7 8BTN CZ4IJOHP٢ాਅޗ !"844FSWFSMFTT)FSP <ࢀߟࢿྉ> 'JHIUJOHPGGGBVYTFSWFSMFTTCBOEJUTXJUIUIFUSVFEFGJOJUJPOPGTFSWFSMFTT IUUQTXXXHPNPNFOUPDPNCMPHGJHIUJOHPGGGBLFTFSWFSMFTTCBOEJUTXJUIUIFUSVFEFGJOJUJPOPGTFSWFSMFTT Ί͓͖5FDI3FQPSU ʮαʔόʔϨεͷ࣍ͳΜͳΜͩʯ IUUQTOFLPSVSJCPPUIQNJUFNT
4FSWFSMFTT$PNNVOJUZ +1 ΧϯϑΝϨϯε • 4FSWFSMFTTDPOG 5PLZP • 4FSWFSMFTTDPOG 5PLZP •
4FSWFSMFTT%BZT 5PLZP • 4FSWFSMFTT%BZT 5PLZP • 4FSWFSMFTT%BZT 'VLVPLB • 4FSWFSMFTT5PLZP 7JSUVBM • 4FSWFSMFTT5PLZP • 4FSWFSMFTT5PLZP .FFUVQ • 4FSWFSMFTT.FFUVQ5PLZP • 4FSWFSMFTT.FFUVQ0TBLB • 4FSWFSMFTT.FFUVQ4BQQPSP • 4FSWFSMFTT.FFUVQ'VLVPLB • 4FSWFSMFTT.FFUVQ/BHPZB • 4FSWFSMFTT.FFUVQ+BQBO 7JSUVBM
https://techbookfest.org/product/np5LkgiR LfMg3bZ0YMFhi7?productVariantID=hZ0Y sP2zByYzyn2p07T0t3
ιϑτΣΞΞʔΩςΫνϟͱͯ͠ͷಛ n マイクロサービス指向 • ⼩規模で⾃律的なシステム • 1つの⽬的にフィットしている n リアクティブなアーキテクチャ •
リクエストルーティング機能(バインド/トリガ/ファンアウト)∕ランタイム∕状態管理∕ 永続ストレージを「分離」することでコードをメンテナンスしやすい状態に維持し、⽣産性 を向上する n 認証‧認可にもとづくリソースアクセス • サービス間のアクセスは認証サービスから取得した委任トークンを⽤いて認可される (SAML / OpenID Connect) n DRY • 競争⼒を得られない汎⽤機能のアウトソース
ϦΞΫςΟϒͳΞʔΩςΫνϟΛ࣮ݱ͢ΔͨΊͷཁૉ nϦΫΤετϧʔςΟϯάػೳ l8FCɿ8FCϓϩΩγFY'BTU$POUBJOFS lϚΠΫϩόονɿ1VC4VCɺΩϡʔΠϯά lϫʔΫϑϩʔ੍ޚɿΦʔέετϨʔλʔ nঢ়ଶཧ l࣮ߦ࣌ΤϥʔλΠϜΞτ੍ޚϦτϥΠ੍ޚϑΝϯΞτॱং੍ޚ εϩοτϦϯάαʔΩοτϒϨΠΧʔεέʔϦϯάॖୀ αʔϏεσΟεΧόϦʔճ෮ੑϩΪϯά nӬଓετϨʔδ
lΦϒδΣΫτετϨʔδΩʔɾόϦϡʔετΞ3%#.4 nϥϯλΠϜ lϏδωεϩδοΫͷΈ
αʔόʔϨεΞʔΩςΫνϟͷ ύλʔϯผϢʔεέʔε IUUQZPTIJEBTIJOHPIBUFOBCMPHDPNFOUSZTFSWFSMTTVTFDBTFT
Usecases of Serverless Architecture 8FCΞϓϦέʔγϣϯ • 41" • 3&45"1*
ӡ༻ۀ Ϗοάσʔλܥ • ετϦʔϜσʔλॲཧ • &5-ॲཧɺେنΫΤϦॲཧ ϞόΠϧɾ*P5ͷόοΫΤϯυ ΞϓϦέʔγϣϯ࿈ܞͷόοΫΤϯυ • 76* • $IBUCPU
8FCΞϓϦέʔγϣϯ 4FSWFSMFTT 4JOHMF1BHF"QQT
www.example.com Amazon Route 53 Amazon S3 (Static Website) Google+ profile
Cognito Identity Pools Lambda DynamoDB SPA
8FCΞϓϦέʔγϣϯ $47Ξοϓϩʔυʗμϯϩʔυ )3ܥࣄۀձࣾ
upload.example.com Amazon Route 53 Amazon S3 (Static Website) Cognito User
Pools Lambda RDS アップロード画⾯ Amazon S3 イベント発⽕
8FCΞϓϦέʔγϣϯ 3&45"1*
3&45"1* カスタマー S3 CloudFront DynamoDB Lambda function API Gateway Amazon
Cognito 認証‧認可 SPA REST API CodePipeline CodeBuild CodeDeploy 開発者 CloudFormation テンプレート Swagger.yml • API BlueprintによるAPI Docの⾃動最新化 • newmanでAPIの⾃動テスト Functionコード
ӡ༻ όονॲཧ ܦ৽ฉ͞Μͷࣄྫ
ΦϯίʔϧγεςϜ Lambda 障害DB アーカイブ アラート アプリケーション ログの監視対象 API Gateway 輪番のリスト
発呼 コマンド指⽰ コマンド選択 Lambda 履歴登録 コールバック
όονॲཧ upload.example.com Amazon Route 53 Amazon S3 (Static Website) Cognito
User Pools Lambda RDS アップロード 画⾯ Amazon S3 イベント発⽕ • ⼀覧画⾯や詳細画⾯とCSVアップロード∕ダウンロードが 同⼀アプリに載っている • php-fpmやunicornのワーカーの設定チューニングが⼤変 (重たい処理に合わせないといけない)
https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-
https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-
https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-
ΞϓϦέʔγϣϯ࿈ܞ "MFYB4LJMMT4FU
ɾ"NB[PO։ൃऀϙʔλϧΞΧϯτ ɾ"84-BNCEBʢ"84ΞΧϯτʣ ɾBMFYBΞϓϦʢʴ"NB[PODPKQΞΧϯτʣ
Πϯςϯτͷ࡞ 4LJMM#VJMEFS それぞれのインテントが Lambdaの別々のハンドラーに マッピングされる サンプル発話で動詞の 「ゆれ」を吸収する
։ൃޮΑ͍͔ʁ
10X Product Development • 最優先 = Product Market Fit •
10X ソフトウェア開発者は存在しない • 10X 製品開発はできる • ビジネスコード開発に時間を使う • 顧客とのイテレーションを最⼤化する • 依存性の最⼩化:仕様確定待ち、DBA 待ちなどを避ける IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGKPFFNJTPOYQSPEVDUEFWFMPQNFOU
10X Product Development • Commercial Search • 2⼈の開発者 x 4ヶ⽉
• TypeScript 13,307⾏ • 開発者の稼働 95%以上 • Microservices的だが⾃分たちはコアだけ • 構成 • Auth: Firebase • Static Site Hosting: Netlify • 画像管理: Cloudinary • 検索: Algolia • ペインポイント • 製品ごとのラーニングカーブ IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGKPFFNJTPOYQSPEVDUEFWFMPQNFOU
νʔϜ։ൃ͍ͬͯ͠Ͱ͔͢ʁ • ΞʔΩςΫτͱ࣮ͷׂ͑͞Ͱ͖ΕΉ͠Ζఔ࣭ཧ ͍͢͠ 中山桂一さん@キャラウェブ WebもアプリもサーバーサイドはREST API化 してますが「Swagger定義」と「DynamoDB のテーブル定義」さえちゃんとできていれば、 外部ベンダに関数ごとに制作お願いできるん
で管理しやすいですよ (明日の開発カンファレンス より) 現場的コンウェイの法則 (マイクロサービスの実践)
None
ୈষʴষɿࣾจॻʹ͑Δ4MBDLΞϓϦͷ࣮ LLM を組み込んだチャットアプリケーションを写経しながら実装できる「ChatGPT/LangChain によるチャットシステム構築[実践]⼊⾨」を読んだ https://kakakakakku.hatenablog.com/entry/2023/10/16/085525 Ξοϓϩʔυͨ͠υΩϡϝϯτʹ ͍࣭ͭͯʹ͑Δ4MBDLΞϓϦ
4FSWFSMFTT "QQMJDBUJPO-FOT 8FMM"SDIJUFDUFE'SBNFXPSL • "84ͰαʔόʔϨεΞϓϦέʔγϣϯΛ͍͔ʹʮઃ ܭʯʮσϓϩΠʯʮΞʔΩςΫτʯ͢Δ͔ʹϑΥʔΧ εͨ͠ 8FMM"SDIJUFDUFE'SBNFXPSLผࢴ • ίϯϐϡʔςΟϯάσʔλετϦʔϜϢʔ
βʔཧϞχλϦϯάγεςϜཧΤοδ • ઃܭݪଇ • 'VODUJPO୯ҰతͰγϯϓϧʹ࡞Δ • ࢄɾฒྻͰॲཧ͕ՄೳͳΑ͏ʹ࡞Δ • γΣΞʔυφογϯά εςʔτϨε • ϋʔυΣΞͷΈΛҙࣝ͠ͳ͍࡞Γ $16ϑϥάͳͲ • 'VODUJPOͰͳ͘εςʔτϚγϯΛͬͯΞϓϦΛΦʔέετ Ϩʔτ͢Δ • ඇಉظͳΠϕϯττϦΨʔΛ׆༻͢Δ ϙʔϦϯάͱ͔͠ͳ͍ • ϦτϥΠલఏͰ͖ͳಈ࡞͕อূ͞ΕΔ࡞Γ • αʔόʔϨεͷϢʔεέʔε Serverless Application Lens https://d1.awsstatic.com/whitepapers/architecture/AWS-Serverless-Applications-Lens.pdf Serverless Applications Lens AWS Well-Architected Framework November 2017
ӡ༻อकϥΫ͔ʁ ࢦͤ/P0QTʁ
すべてがサーバーレスかつNoOpsになるか? No → 運⽤上の最終責任者はかわらない http://www.slideshare.net/ServerlessConf/charity-hound-serverless-noops-the-tooth-fairy n 対応が必要となる変化 • システムの構築やメンテナンス⽅法の変化 •
障害対応内容の変化 • 組織の技術スキルの変化 • 解決すべき技術課題の変化 • サーバーレス/NoOpsに適した組織⽂化づくり
すべてがサーバーレスかつNoOpsになるか? トレードオフへの対応 IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGDIBSJUZIPVOETFSWFSMFTTOPPQTUIFUPPUIGBJSZ n トレードオフ • 可視性が下がる → 適切な運⽤監視の計画 •
⾃分⾃⾝で問題を修復できない → リスクの把握、追加対策の実施 • 制約が明⽂化されていない可能性 → ⼗分な利⽤可否調査 • 共同利⽤‧アイソレーションの問題 → ⼗分な利⽤可否調査、ヒアリング、第三者認証、 監査レポートなど • ツールの未成熟さ → エコシステムの学習、⽀援、適切なツールチェー ンの構築
0CTFSWBCJMJUZͷୡ n ಛ • 'BB404ʹΞΫηεͰ͖ͳ͍ • 'BB4͕εέʔϥϒϧͳͷͰࢹج൫͕εέʔϧ͠ͳ͍ͱҙຯͳ͍ n ιϦϡʔγϣϯ తʹԠͯ͡
• %BUBEPH • &QTBHPO 5IVOESB "8493BZͳͲ
IUUQTTQFBLFSEFDLDPN@LFOTIQMBUGPSNFOHJOFFSJOHPOTFSWFSMFTT TMJEF 1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTT
ϫʔΫϑϩʔͷΦʔέετ Ϩʔγϣϯͦ͜ਅࠎ
ϫʔΫϑϩʔΦʔέετϨʔγϣϯ • ͯ͢ͷࣄϫʔΫϑϩʔͰ͋Δ • εςʔτϚγϯΛཧ͢ΔΦʔέετϨʔλʔ • ίϯϙʔβϒϧͳ࣮ߦڥ
1990年代 2013 2018 2020 統計的⾔語モデル ニューラル⾔語モデル 事前学習済み⾔語モデル ⼤規模⾔語モデル(LLM) 特定タスク⽀援 n-gram⾔語モデル
統計的⼿法 確率推定 特定のタスク⽤途 タスクに依存しない 機能学習 Word2Vec (NPLM), NLPS 静的な単語の関連性 ニューラル⾔語モデル 特定のNLPタスク⽤途 タスク 解決 能⼒ 転移学習をもちいた NLPによるタスク解決 ELMO, BERT, GPT-1/2 コンテキスト表現 事前学習+ファイン チューニング さまざまなNLPタスク ⽤途 汎⽤的なタスク解決 GPT-3/4, ChatGPT, Claude ⾔語モデルの規模拡⼤ プロンプトによる⽳埋め さまざまな実世界のタスク ⽤途 A Survey of Large Language Models https://arxiv.org/abs/2303.18223
• ΤʔδΣϯτͱɺ環境を認識し、目標を達成するた めに自律的に行動するଘࡏ • ΤʔδΣϯτΒ͠͞ͷ؍ ਓೳͷ֤෦ྖҬΛͦΕΒͷಠࣗͷྺ࢙తจ຺ʹԊͬ ͯղઆ͢ΔͷͰͳ͘ ݱࡏΒΕ͍ͯΔࣄฑΛڞ௨ͷ ΈͷதͰ࠶ߏங͢Δ͜ͱΛࢼΈͨ ˠཧͱ࣮ફ
ॳ൛ ༁ ୈ൛ ༁ ୈ൛ୈ൛ "*ΤʔδΣϯτͱʁ
ͯ͢ͷࣄϫʔΫϑϩʔͰ͋Δ αʔϏεσβΠϯͳ͠Ͱ ϓϩμΫτ࡞ΔΘ͚ͳ͍ΑͶʁ
3F"DU4ZOFSHJ[JOH3FBTPOJOHBOE"DUJOHJO-BOHVBHF .PEFMT • ݕূύλʔϯ B 3FBTPOͳ͠ɺ"DUͳ͠ C 3FBTPOͷΈ D
"DUͷΈ E 3FBTPO͋Γɺ"DU͋Γ 3F"DU • "QQMF3FNPUFͷ΄͔ʹɺ"QQMF 3FNPUF͕ͱͱ૬ޓ࡞༻͢ΔΑ ͏ʹઃܭ͞ΕͨϓϩάϥϜΛ੍ޚͰ ͖ΔσόΠε͋Γ·͔͢ʁ ˠ3F"DUͷΈਖ਼ղ https://arxiv.org/abs/221
あなたは部屋の中央にいます。すばやく周囲を⾒てみるとキャビネット#6、キャビネット#1、コーヒーマシン#1、カウンター#3、ガスコン ロ#1、トースター#1があります。 あなたのタスクは: 胡椒⼊れを引き出しに⼊れてください。 (2) AlfWorld ⾏動 1: 引き出し#1に⾏きます。 観察
1: 引き出し#1は閉まっています。 ⾏動 2: 引き出し#1を開きます。 観察 2: 引き出し#1を開きました。引き出し#1は開いています。中に⾷ 器洗いスポンジ#2とスプーン#1が⼊っています。 ⾏動 3: キッチンシンク#1に⾏きます。 観察 3: キッチンシンク#1の上に⾷器洗いスポンジ#3と、ヘラ#1と、ス プーン#2があります。 ⾏動 4: キッチンシンク#1から胡椒⼊れ#1を⼿に取ります。 観察 4: なにも起きません。 ⾏動 5: キッチンシンク#1から胡椒⼊れ#1を⼿に取ります。 観察 5: なにも起きません。 (2a) Act のみ ⾏動 1: 思考[まず胡椒⼊れを⾒つける必要があります...キャビネット (#1-6)やカウンター(#1-3)や...にあるかもしれません。] ⾏動 2: キャビネット#1に⾏きます。 観察 2: キャビネット#1の上に花瓶#2があります。 (ここでエージェントはキャビネット#1に⾏き、キャビネット#2,#3、そ してカウンター#1,#2に⾏きます。) ⾏動 6: カウンター#3に⾏きます。 観察 6: カウンター#3の上にりんご#1、パン#1,...胡椒⼊れ#1,花瓶#3が あります。 思考 7: カウンター#3から胡椒⼊れ#1を⼿に取ります。 観察 7: カウンター#3から胡椒⼊れ#1が⼿に⼊りました。 ⾏動 8: 思考[胡椒⼊れ#1が⾒つかりました。次に、これを引き出し#1に ⼊れる必要があります。] ⾏動 9: 引き出し#1に⾏きます。 観察 9: 引き出し#1は閉まっています。 ⾏動 10: 引き出し#1を開けます。 観察 10: 引き出し#1を開いています... ⾏動 11: 胡椒⼊れ#1を引き出し#1に⼊れます。 観察 11: 胡椒⼊れ#1を引き出し#1に⼊れました。✔ (2b) ReAct (Reason + Act)
"*ΤʔδΣϯτͷ࣮Ξϓϩʔν શͳ3F"DUΤʔδΣϯτ • ෳࡶͳඪʹ͔ͬͯҎԼͷ ͯ͢Λ--.Ͱ੍ޚ ɾ؍ 0CTFSWF ˠࢥߟ 5IJOL<3FBTPOJOH> ˠߦಈ
"DU ΦʔέετϨʔλʔʴ--. • ͭҎ্ͷΞΫγϣϯΛܾఆతͳ ΦʔέετϨʔλʔͰ੍ޚ • --.ʹΑΔΞΫγϣϯ • ೝɾ؍ • λεΫͷܭը'VODUJPOͷબ • λεΫͷ࣮ߦ • ଟ͘ͷϚϧνΤʔ δΣϯτϑϨʔϜ ϫʔΫ • -BOH(SBQI • "HFOUTGPS #FESPDL • 4UFQ'VODUJPOT #FESPDL
メモリ 実⾏エージェント (GPT-4) (1) タスクと実⾏結果のペアを保存 (2) コンテキスト情報をメモリから読み出す 3. タスクの実⾏結果を送信する タスク作成エージェント
(GPT-4) タスクキュー ユーザー 1. ⽬標やタスクを与える 2. タスクを実⾏させる コンテキスト情報 4 新しいタスクを追加 優先度づけエージェント (GPT-4) コンテキスト情報を メモリから読み出す コンテキスト情報 5. タスク優先度をつける 6. タスクを消す Task-driven Autonomous Agent https://yoheinakajima.com/task-driven-autonomous-agent-utilizing-gpt-4-pinecone-and-langchain-for-diverse-applications/ Baby AGI
A1. 数学の問題を解く 学⽣ アシスタント 専⾨家 アシスタント 専 ⾨ 家 に
聞 く 検索拡張 プロキシ 検索拡張 アシスタント A2. 検索拡張チャット ALFWorld 実⾏マシン A3. 意思決定 アシスタント グラウンディング エージェント 指揮官 A4. マルチエージェントコーディング ライター 護衛 マネージャー A5. 動的グループチャット ⼀⻫配信 会話 チェス盤 A6. 対話型チェス プレイヤー A プレイヤー B AutoGen
-BOH(SBQI
Conditional Edge 実⾏待ち ノード Eメールの 新着チェック Eメール取得 ノード ノード Eメール
クルー Eメール解析 フィルタリング 全スレッド取得 調査実施 下書き作成 crewAI + LangGraph https://github.com/crewAIInc/crewAI-examples/tree/main/CrewAI-LangGraph
None
1. LLMアプリケーション開発の基礎 2. OpenAI APIの基礎 3. プロンプトエンジニアリング 4. LangChainの基礎 5.
LCEL徹底解説 6. RAGアプリ開発実践 7. LangSmith 8. AIエージェントとは? 9. LangGraphでつくるAIエージェント実践入門 10.LangGraphでつくる要件定義生成AIエージェント 11.エージェントデザインパターン 12.LangChain/LangGraphで実装するエージェント デザインパターン 【好評発売中!】