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
830
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
78
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
320
早く行きたいならClaude Codeと行け、遠くに行きたいならチームで行け 〜AI駆動開発の講師が教えるAIがリードするチーム開発の実践ノウハウ/Fast w/ Claude Code, Far Together
yoshidashingo
0
56
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
770
はじめてのAI-DLC
yoshidashingo
3
1.6k
初手AIで実現する 「AIと一緒に働く」ということ - AIファーストを実現する汎用タスクエージェントのつくりかた / JAWS DAYS 2026
yoshidashingo
0
100
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
4
19k
エンジニアはコミュニティで伸びる!テックコミュニティ代表者トークリレー / TCP2026
yoshidashingo
0
50
達人に学ぶAIコーディング / ai-coding-learned-from-master
yoshidashingo
0
73
Other Decks in Technology
See All in Technology
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
180
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
950
AI時代、データエンジニアが一番おもろい
genshun9
0
670
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
130
Claude Code本って、 読む必要あるの?
oikon48
2
480
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
160
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
160
あけおめLINE 傾向とその対策
nasa9084
0
140
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
700
What the customer really needed
kawaguti
PRO
3
210
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Making Projects Easy
brettharned
120
6.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Technical Leadership for Architectural Decision Making
baasie
3
570
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Practical Orchestrator
shlominoach
192
12k
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で実装するエージェント デザインパターン 【好評発売中!】