Slide 1

Slide 1 text

"84-BNCEBͱาΜͩ lαʔόʔϨεzͱࠓޙ ٢ాਅޗ !ZPTIJEBTIJOHP ηΫγϣϯφΠϯ δΣωϥςΟϒΤʔδΣϯπ

Slide 2

Slide 2 text

吉田真吾 n バックグラウンド 証券システム基盤開発 p基盤システム開発、Oracleチューニング エバンジェリスト‧ソリューションアーキテクト pAWS設計‧構築‧移⾏ pエバンジェリスト‧SA スタートアップCTO p技術経営‧組織開発 pタレントマネジメントSaaS 開発‧運⽤ n 現在のしごと (株) セクションナイン 代表取締役CEO (株) ジェネラティブエージェンツ 取締役COO n 実績等 pAWSウルトラクイズ 初代チャンピオン pAWS Samurai 2014 / 2016 pAWS Serverless Hero p講演、執筆多数

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ "84-BNCEBͷ஀ੜ ʲ೥ͷ͜ͱʳ αʔόʔϨεΞʔΩςΫνϟͷຄڵͱίϛϡχςΟͷ੒௕ ʲʙ͘Β͍ͷ͜ͱʳ ϫʔΫϑϩʔΦʔέετϨʔγϣϯͦ͜ਅࠎ௖ ʲ೥Ҏ߱ͷ͜ͱʳ ˞ศٓతʹ࣌ܥྻͷਖ਼֬ੑ͕ඈͼඈͼʹͳΔ෦෼͕͋Γ·͢

Slide 4

Slide 4 text

"84-BNCEBͷ஀ੜ

Slide 5

Slide 5 text

·ΔͰΫϥ΢υͰ૸ΔϚΫϩݴޠʮ"84-BNCEBʯൃද • ೥຤ SF*OWFOU ʹͯൃද • /PEFKT • Πϕϯτιʔεɿ • 4όέοτ • %ZOBNP%#ςʔϒϧ • ,JOFTJTετϦʔϜ • ϗετɿඇެ։ -JOVYϕʔε • ϝϞϦɿ.#ʙ (# • λΠϜΞ΢τɿʙඵ • Ұ࣌ετϨʔδɿ.# • ϝϞϦʹൺྫͯ͠$16ωοτ ϫʔΫͷׂ౰ͯ΋ଟ͘ͳΔ https://www.publickey1.jp/blog/14/aws_lambdaaws_reinvent_2014.html

Slide 6

Slide 6 text

'VODUJPOTBTB4FSWJDFͷ୆಄ • ಛ௃ • ࣮ߦ؀ڥ͸ӅṭˍϓϥοτϑΥʔϜ؅ཧͰɺඞཁͳͷ͸ίʔυͷΈ • ίϯςφϕʔεͰௐୡϦʔυλΠϜΛ୹ॖ • ෼ࢄ࣮ߦ؀ڥʹΑΔՄ༻ੑͷ֬อ • ࣮ߦ࣌ؒͷΈ՝ۚʹΑΔίετ௿ݮ • ΞʔΩςΫνϟʹ͓͚Δ੹຿ • 4UBUFGVM 4UBUFMFTT΁ • Ӭଓσʔλ شൃੑ • ϞϊϦγοΫ .JDSPTFSWJDFT • όονॲཧ ΠϕϯτυϦϒϯ https://aws.amazon.com/jp/about-aws/events/reinvent-report-2014-pt2/

Slide 7

Slide 7 text

"84-BNCEB αʔόʔϨεɾϚχϑΣετ ϑΝϯΫγϣϯ͸σϓϩΠ୯Ґ֦ுՄೳ୯ҐͰ؅ཧ͢Δ ػث΍Ծ૝αʔόʔ΍ίϯςφ͕ϓϩάϥϛϯάϞσϧ͔Βݟ͑ ͯ͸͍͚ͳ͍ σʔλΛӬଓԽ͢ΔετϨʔδ͸ଞͷ৔ॴʹ֬อ͢Δ ϦΫΤετ୯Ґʹεέʔϧ͕؅ཧ͞ΕΔɻϢʔβʔ͸Ωϟύγ ςΟͷௐୡෆ଍΋௒ա΋͠ͳ͍ ΞΠυϧ࣌ؒʹ՝ۚ͞Εͯ͸͍͚ͳ͍ʢ଴ػαʔόʔίϯςφ΍ ՝ۚʣ ϑΝϯΫγϣϯ͸Ͳ͜Ͱ΋࣮ߦͰ͖ΔͷͰɺ҉໧తʹ଱ো֐ੑΛ ࣋ͭ #SJOHZPVSPXODPEFίʔυ͚ͩ࣋ͪࠐΊ͹͍͍ ϝτϦΫεऩू΍ϩάऔಘ͸ઈରతਖ਼ٛͰ͋Δ

Slide 8

Slide 8 text

"84-BNCEB :&4 • ಠཱͨ͠ϑΝϯΫγϣϯ • 3&45GVM"1*͔ ΠϕϯτυϦϒϯ • #:0$ ίʔυΛ࣋ͪࠐΉ͚ͩ • ෳࡶͳΞϧΰϦζϜͰ؅ཧ • ਫฏεέʔϧ • ಉظඇಉظεέδϡʔϦϯά /0 • αʔόʔ্ͰՔಇ • ϞϊϦγοΫͳUBSϘʔϧʹͳͬ ͍ͯΔ • ϞϊϦγοΫͳσϓϩΠํ๏ • ॏྔڃϑϨʔϜϫʔΫ • ෼ࢄ഑෍͞ΕͨγεςϜίʔυ • ୯ௐ࡞ۀʢϩάऔಘͳͲʣ͕ඞ ཁ αʔόʔϨεΞϓϦέʔγϣϯ͔Ͳ͏͔

Slide 9

Slide 9 text

ίʔϧυελʔτ໰୊ 2019年3⽉現在 • ⾔語実⾏環境によって違いあり • NodeやGoについては無視できる 場合が⼤半だと⾔える ※並列実⾏してない(ランプアップなし)なのであくまで 参考 1SPWJTJPOFE$PODVSSFODZ΍ 4OBQ4UBSU ͔ͭͬͯ

Slide 10

Slide 10 text

αʔόʔϨεΞʔΩςΫνϟ ͷຄڵ

Slide 11

Slide 11 text

ύϥμΠϜγϑτ 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/

Slide 12

Slide 12 text

1BB4ͷීٴ ʙ • ΠϯϑϥΛӅṭͨ͠ιϑτ΢ΣΞ࣮ߦج൫ ˠΠϯϑϥ΍࣮ߦ؀ڥͷϝϯςʹඅ΍͢࡞ۀ ͕ݮΔ • 'BDUPS"QQ ͷਪਐ • ՝୊ • ϨΨγʔγεςϜͷҠ২ੑ • ύοέʔδϯά΍ϙʔλϏϦςΟͷ࠶ݱੑ ͷ௿͞

Slide 13

Slide 13 text

8FC 6*υϦϒϯ ΞϓϦέʔγϣϯ #BDLFOE'PS'SPOUFOEͰαʔόʔϨ ε׆༻ ೝূϩδοΫΛ#BB4Ͱஔ׵͑ %ZOBNP%#ʹΫϥΠΞϯτ͔Β௚ ઀ΞΫηε͢ΔΑ͏ʹ େ൒ͷϩδοΫΛΫϥΠΞϯτͷ γϯάϧϖʔδΞϓϦέʔγϣϯ ʹ 69ʹؾΛ͚ͭΔ ͯ͠αʔόʔ ଆ͸"1*(BUFXBZͰଋͶΔ ݕࡧػೳΛ'BB4্ʹ ηΩϡϦςΟͷߟྀͰ՝ۚ͸ผ%# ʹผ'BB4ͰΞΫηε͢ΔΑ͏ʹ http://martinfowler.com/articles/serverless.html

Slide 14

Slide 14 text

αʔόʔϨεγϯάϧϖʔδΞϓϦέʔγϣϯ ಡΈਐΊͳ͕ΒखΛಈ͔͚ͩ͢Ͱ 4FSWFSMFTT 41"͕࡞੒Ͱ͖Δ 4UFQCZ 4UFQΨΠυ

Slide 15

Slide 15 text

www.example.com Amazon Route 53 Amazon S3 (Static Website) Google+ profile Cognito Identity Pools Lambda DynamoDB SPA 41"ʴαʔόʔϨεߏ੒

Slide 16

Slide 16 text

αʔόʔαΠυॲཧෆཁ [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

Slide 17

Slide 17 text

'use strict'; var learnjs = {}; learnjs.problemView = function() { return $('
').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] 実装

Slide 18

Slide 18 text

αʔόʔαΠυॲཧ͸ύʔπͱͯ͠૊ΈࠐΈ ログイン ID取得 検証 認証情報取得 検証 APIコール ログインOK ID発行

Slide 19

Slide 19 text

ΠϕϯτυϦϒϯΞϓϦέʔγϣϯ • ΦϯϥΠϯ޿ࠂγεςϜ • ૉૣ͍഑৴ ͱಉ࣌ʹ ΞΫςΟϏςΟه࿥ • ඇಉظʹαʔόʔʹૹ৴͍ͯͨ͠෦෼ ΛεέʔϥϏϦςΟΛؾʹ͠ͳ͍ͯ͘ ͍'BB4ʹૹ৴ • ͦͷଞɺΞοϓϩʔυίϯςϯπͷ αϜωΠϧ࡞੒ͳͲ http://martinfowler.com/articles/serverless.html

Slide 20

Slide 20 text

"84ʹΑΔαʔόʔϨεΞʔΩςΫ νϟ • αʔόʔϨεΞʔΩςΫνϟʹΑΔಈըγΣ ΞαΠτߏங • ΦϯϥΠϯڭҭಈըαΠτʮ"$MPVE (VSVʯͰ࣮ࡍʹ࢖ΘΕ͍ͯΔٕज़΍ίʔυ Λϕʔεʹ%FFQ%JWF • "84-BNCEB"1*(BUFXBZ4 $MPVE'SPOU &MBTUJD5SBOTDPEFS "VUI'JSFCBTF3FBMUJNF %BUBCBTF

Slide 21

Slide 21 text

ϋϯζΦϯ಺༰

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

http://www.slideshare.net/acloudguru/ant-stanley-being-serverless

Slide 24

Slide 24 text

$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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

https://techbookfest.org/product/np5LkgiR LfMg3bZ0YMFhi7?productVariantID=hZ0Y sP2zByYzyn2p07T0t3

Slide 27

Slide 27 text

ιϑτ΢ΣΞΞʔΩςΫνϟͱͯ͠ͷಛ௃ n マイクロサービス指向 • ⼩規模で⾃律的なシステム • 1つの⽬的にフィットしている n リアクティブなアーキテクチャ • リクエストルーティング機能(バインド/トリガ/ファンアウト)∕ランタイム∕状態管理∕ 永続ストレージを「分離」することでコードをメンテナンスしやすい状態に維持し、⽣産性 を向上する n 認証‧認可にもとづくリソースアクセス • サービス間のアクセスは認証サービスから取得した委任トークンを⽤いて認可される (SAML / OpenID Connect) n DRY • 競争⼒を得られない汎⽤機能のアウトソース

Slide 28

Slide 28 text

ϦΞΫςΟϒͳΞʔΩςΫνϟΛ࣮ݱ͢ΔͨΊͷཁૉ nϦΫΤετϧʔςΟϯάػೳ l8FCɿ8FCϓϩΩγFY'BTU$POUBJOFS lϚΠΫϩόονɿ1VC4VCɺΩϡʔΠϯά lϫʔΫϑϩʔ੍ޚɿΦʔέετϨʔλʔ nঢ়ଶ؅ཧ l࣮ߦ࣌ΤϥʔλΠϜΞ΢τ੍ޚϦτϥΠ੍ޚϑΝϯΞ΢τॱং੍ޚ εϩοτϦϯάαʔΩοτϒϨΠΧʔεέʔϦϯάॖୀ αʔϏεσΟεΧόϦʔճ෮ੑϩΪϯά nӬଓετϨʔδ lΦϒδΣΫτετϨʔδΩʔɾόϦϡʔετΞ3%#.4 nϥϯλΠϜ lϏδωεϩδοΫͷΈ

Slide 29

Slide 29 text

αʔόʔϨεΞʔΩςΫνϟͷ ύλʔϯผϢʔεέʔε IUUQZPTIJEBTIJOHPIBUFOBCMPHDPNFOUSZTFSWFSMTTVTFDBTFT

Slide 30

Slide 30 text

Usecases of Serverless Architecture 8FCΞϓϦέʔγϣϯ • 41" • 3&45"1* ӡ༻ۀ຿ Ϗοάσʔλܥ • ετϦʔϜσʔλॲཧ • &5-ॲཧɺେن໛ΫΤϦॲཧ ϞόΠϧɾ*P5ͷόοΫΤϯυ ΞϓϦέʔγϣϯ࿈ܞͷόοΫΤϯυ • 76* • $IBUCPU

Slide 31

Slide 31 text

8FCΞϓϦέʔγϣϯ 4FSWFSMFTT 4JOHMF1BHF"QQT

Slide 32

Slide 32 text

www.example.com Amazon Route 53 Amazon S3 (Static Website) Google+ profile Cognito Identity Pools Lambda DynamoDB SPA

Slide 33

Slide 33 text

8FCΞϓϦέʔγϣϯ $47Ξοϓϩʔυʗμ΢ϯϩʔυ )3ܥࣄۀձࣾ

Slide 34

Slide 34 text

upload.example.com Amazon Route 53 Amazon S3 (Static Website) Cognito User Pools Lambda RDS アップロード画⾯ Amazon S3 イベント発⽕

Slide 35

Slide 35 text

8FCΞϓϦέʔγϣϯ 3&45"1*

Slide 36

Slide 36 text

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コード

Slide 37

Slide 37 text

ӡ༻ όονॲཧ ೔ܦ৽ฉ͞Μͷࣄྫ

Slide 38

Slide 38 text

ΦϯίʔϧγεςϜ Lambda 障害DB アーカイブ アラート アプリケーション ログの監視対象 API Gateway 輪番のリスト 発呼 コマンド指⽰ コマンド選択 Lambda 履歴登録 コールバック

Slide 39

Slide 39 text

όονॲཧ upload.example.com Amazon Route 53 Amazon S3 (Static Website) Cognito User Pools Lambda RDS アップロード 画⾯ Amazon S3 イベント発⽕ • ⼀覧画⾯や詳細画⾯とCSVアップロード∕ダウンロードが 同⼀アプリに載っている • php-fpmやunicornのワーカーの設定チューニングが⼤変 (重たい処理に合わせないといけない)

Slide 40

Slide 40 text

https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-

Slide 41

Slide 41 text

https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-

Slide 42

Slide 42 text

https://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-

Slide 43

Slide 43 text

ΞϓϦέʔγϣϯ࿈ܞ "MFYB4LJMMT4FU

Slide 44

Slide 44 text

ɾ"NB[PO։ൃऀϙʔλϧΞΧ΢ϯτ ɾ"84-BNCEBʢ"84ΞΧ΢ϯτʣ ɾBMFYBΞϓϦʢʴ"NB[PODPKQΞΧ΢ϯτʣ

Slide 45

Slide 45 text

Πϯςϯτͷ࡞੒ 4LJMM#VJMEFS それぞれのインテントが Lambdaの別々のハンドラーに マッピングされる サンプル発話で動詞の 「ゆれ」を吸収する

Slide 46

Slide 46 text

։ൃޮ཰͸Α͍͔ʁ

Slide 47

Slide 47 text

10X Product Development • 最優先 = Product Market Fit • 10X ソフトウェア開発者は存在しない • 10X 製品開発はできる • ビジネスコード開発に時間を使う • 顧客とのイテレーションを最⼤化する • 依存性の最⼩化:仕様確定待ち、DBA 待ちなどを避ける IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGKPFFNJTPOYQSPEVDUEFWFMPQNFOU

Slide 48

Slide 48 text

10X Product Development • Commercial Search • 2⼈の開発者 x 4ヶ⽉ • TypeScript 13,307⾏ • 開発者の稼働 95%以上 • Microservices的だが⾃分たちはコアだけ • 構成 • Auth: Firebase • Static Site Hosting: Netlify • 画像管理: Cloudinary • 検索: Algolia • ペインポイント • 製品ごとのラーニングカーブ IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGKPFFNJTPOYQSPEVDUEFWFMPQNFOU

Slide 49

Slide 49 text

νʔϜ։ൃͬͯ೉͍͠Ͱ͔͢ʁ • ΞʔΩςΫτͱ࣮૷ͷ෼ׂ͑͞Ͱ͖Ε͹Ή͠Ζ޻ఔ΍඼࣭؅ཧ ͠΍͍͢ 中山桂一さん@キャラウェブ WebもアプリもサーバーサイドはREST API化 してますが「Swagger定義」と「DynamoDB のテーブル定義」さえちゃんとできていれば、 外部ベンダに関数ごとに制作お願いできるん で管理しやすいですよ (明日の開発カンファレンス より) 現場的コンウェイの法則 (マイクロサービスの実践)

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

ୈষʴষɿࣾ಺จॻʹ౴͑Δ4MBDLΞϓϦͷ࣮૷ LLM を組み込んだチャットアプリケーションを写経しながら実装できる「ChatGPT/LangChain によるチャットシステム構築[実践]⼊⾨」を読んだ https://kakakakakku.hatenablog.com/entry/2023/10/16/085525 Ξοϓϩʔυͨ͠υΩϡϝϯτʹ ͍࣭ͭͯ໰ʹ౴͑Δ4MBDLΞϓϦ

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

ӡ༻อक͸ϥΫ͔ʁ ໨ࢦͤ/P0QTʁ

Slide 54

Slide 54 text

すべてがサーバーレスかつNoOpsになるか? No → 運⽤上の最終責任者はかわらない http://www.slideshare.net/ServerlessConf/charity-hound-serverless-noops-the-tooth-fairy n 対応が必要となる変化 • システムの構築やメンテナンス⽅法の変化 • 障害対応内容の変化 • 組織の技術スキルの変化 • 解決すべき技術課題の変化 • サーバーレス/NoOpsに適した組織⽂化づくり

Slide 55

Slide 55 text

すべてがサーバーレスかつNoOpsになるか? トレードオフへの対応 IUUQXXXTMJEFTIBSFOFU4FSWFSMFTT$POGDIBSJUZIPVOETFSWFSMFTTOPPQTUIFUPPUIGBJSZ n トレードオフ • 可視性が下がる → 適切な運⽤監視の計画 • ⾃分⾃⾝で問題を修復できない → リスクの把握、追加対策の実施 • 制約が明⽂化されていない可能性 → ⼗分な利⽤可否調査 • 共同利⽤‧アイソレーションの問題 → ⼗分な利⽤可否調査、ヒアリング、第三者認証、 監査レポートなど • ツールの未成熟さ → エコシステムの学習、⽀援、適切なツールチェー ンの構築

Slide 56

Slide 56 text

0CTFSWBCJMJUZͷୡ੒ n ಛ௃ • 'BB4͸04ʹΞΫηεͰ͖ͳ͍ • 'BB4͕εέʔϥϒϧͳͷͰ؂ࢹج൫͕εέʔϧ͠ͳ͍ͱҙຯͳ͍ n ιϦϡʔγϣϯ ໨తʹԠͯ͡ • %BUBEPH • &QTBHPO 5IVOESB "8493BZͳͲ

Slide 57

Slide 57 text

IUUQTTQFBLFSEFDLDPN@LFOTIQMBUGPSNFOHJOFFSJOHPOTFSWFSMFTT TMJEF 1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTT

Slide 58

Slide 58 text

ϫʔΫϑϩʔͷΦʔέετ Ϩʔγϣϯͦ͜ਅࠎ௖

Slide 59

Slide 59 text

ϫʔΫϑϩʔΦʔέετϨʔγϣϯ • ͢΂ͯͷ࢓ࣄ͸ϫʔΫϑϩʔͰ͋Δ • εςʔτϚγϯΛ؅ཧ͢ΔΦʔέετϨʔλʔ • ίϯϙʔβϒϧͳ࣮ߦ؀ڥ

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

● ΤʔδΣϯτͱ͸ɺ環境を認識し、目標を達成するた めに自律的に行動するଘࡏ ● ΤʔδΣϯτΒ͠͞ͷ؍఺ ਓ޻஌ೳͷ֤෦෼ྖҬΛͦΕΒͷಠࣗͷྺ࢙తจ຺ʹԊͬ ͯղઆ͢ΔͷͰ͸ͳ͘ ݱࡏ஌ΒΕ͍ͯΔࣄฑΛڞ௨ͷ࿮૊ ΈͷதͰ࠶ߏங͢Δ͜ͱΛࢼΈͨ ˠཧ࿦ͱ࣮ફ ॳ൛೥ ๜༁೥ ୈ൛೥ ๜༁೥ ୈ൛೥ୈ൛೥ "*ΤʔδΣϯτͱ͸ʁ

Slide 62

Slide 62 text

͢΂ͯͷ࢓ࣄ͸ϫʔΫϑϩʔͰ͋Δ αʔϏεσβΠϯͳ͠Ͱ ϓϩμΫτ࡞ΔΘ͚ͳ͍ΑͶʁ

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

あなたは部屋の中央にいます。すばやく周囲を⾒てみるとキャビネット#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)

Slide 65

Slide 65 text

"*ΤʔδΣϯτͷ࣮૷Ξϓϩʔν ׬શͳ3F"DUΤʔδΣϯτ • ෳࡶͳ໨ඪʹ޲͔ͬͯҎԼͷ ͢΂ͯΛ--.Ͱ੍ޚ ɾ؍࡯ 0CTFSWF ˠࢥߟ 5IJOL<3FBTPOJOH> ˠߦಈ "DU ΦʔέετϨʔλʔʴ--. • ͭҎ্ͷΞΫγϣϯΛܾఆతͳ ΦʔέετϨʔλʔͰ੍ޚ • --.ʹΑΔΞΫγϣϯ • ೝ஌ɾ؍࡯ • λεΫͷܭը΍'VODUJPOͷબ୒ • λεΫͷ࣮ߦ • ଟ͘ͷϚϧνΤʔ δΣϯτϑϨʔϜ ϫʔΫ • -BOH(SBQI • "HFOUTGPS #FESPDL • 4UFQ'VODUJPOT #FESPDL

Slide 66

Slide 66 text

メモリ 実⾏エージェント (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

Slide 67

Slide 67 text

A1. 数学の問題を解く 学⽣ アシスタント 専⾨家 アシスタント 専 ⾨ 家 に 聞 く 検索拡張 プロキシ 検索拡張 アシスタント A2. 検索拡張チャット ALFWorld 実⾏マシン A3. 意思決定 アシスタント グラウンディング エージェント 指揮官 A4. マルチエージェントコーディング ライター 護衛 マネージャー A5. 動的グループチャット ⼀⻫配信 会話 チェス盤 A6. 対話型チェス プレイヤー A プレイヤー B AutoGen

Slide 68

Slide 68 text

-BOH(SBQI

Slide 69

Slide 69 text

Conditional Edge 実⾏待ち ノード Eメールの 新着チェック Eメール取得 ノード ノード Eメール クルー Eメール解析 フィルタリング 全スレッド取得 調査実施 下書き作成 crewAI + LangGraph https://github.com/crewAIInc/crewAI-examples/tree/main/CrewAI-LangGraph

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

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で実装するエージェント デザインパターン 【好評発売中!】