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
60
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
820
はじめての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
53
達人に学ぶAIコーディング / ai-coding-learned-from-master
yoshidashingo
0
76
Other Decks in Technology
See All in Technology
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
210
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
140
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
160
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
FOSS4Gを活用した自治体業務DXの試み
470715
0
120
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
120
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
130
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
0
120
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.1k
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
530
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.3k
Agile that works and the tools we love
rasmusluckow
331
22k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
Git: the NoSQL Database
bkeepers
PRO
433
67k
Statistics for Hackers
jakevdp
799
230k
A better future with KSS
kneath
240
18k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
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で実装するエージェント デザインパターン 【好評発売中!】