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
Shingo Yoshida 吉田真吾
November 13, 2024
Technology
860
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/
Shingo Yoshida 吉田真吾
November 13, 2024
More Decks by Shingo Yoshida 吉田真吾
See All by Shingo Yoshida 吉田真吾
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
170
Claude Code実践〜個人開発からチーム開発へ
yoshidashingo
0
7
AIに代替されるフリーランス、AIを操りチームを導くリーダー。運命を分ける『AI-DLC』とインテントマネジメント/Intent is All We Need
yoshidashingo
0
130
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
380
早く行きたいならClaude Codeと行け、遠くに行きたいならチームで行け 〜AI駆動開発の講師が教えるAIがリードするチーム開発の実践ノウハウ/Fast w/ Claude Code, Far Together
yoshidashingo
0
69
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
870
はじめてのAI-DLC
yoshidashingo
3
1.9k
初手AIで実現する 「AIと一緒に働く」ということ - AIファーストを実現する汎用タスクエージェントのつくりかた / JAWS DAYS 2026
yoshidashingo
0
170
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
4
21k
Other Decks in Technology
See All in Technology
公共分野での生成AI活用
toru_kubota
1
230
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
4
3k
AI時代に求められる優秀なTechLeadの振る舞い
pospome
10
14k
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
190
公共システムAdventCalendar2026
toru_kubota
0
260
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
0
400
企画からFlutter実装まで、1つの機能を一貫して開発したプロセスと成果物
khiroyuki1003
1
160
The future of architectural work
ufried
0
170
`go get`したらELFが降ってきた件
taiyow
0
180
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
200
SLOを阻む不安
sraku2159
0
220
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
4
280
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
4 Signs Your Business is Dying
shpigford
187
23k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.7k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
290
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
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で実装するエージェント デザインパターン 【好評発売中!】