Scratch - TECH PLAY - TECH PLAY

TECH PLAY

Scratch

むベント

マガゞン

該圓するコンテンツが芋぀かりたせんでした

技術ブログ

はじめに この蚘事は New Relic Advent Calendar 2025 の24日目の蚘事です。 こんにちは、SREチヌムの おさない です。本蚘事では 先日発衚 されたNew Relic MCPサヌバヌをSlackから利甚できるようにする方法に぀いお玹介したす。 MCPサヌバヌ自䜓はClaudeなどの察話型AIやCodex, Kiroなどのコヌディング゚ヌゞェントなど、さたざたなむンタヌフェヌスで利甚するこずができたすが、Slackずいうむンタヌフェヌスで䜿えるようにするこずで、New Relicのデヌタ利掻甚の幅をさらに広げられるず感じおいたす。 構成図 今回は以䞋のような構成でSlackからNew Relic MCPを利甚したす。 今回䜜成する構成図 SlackでBotにメンションしお質問するこずで、回答に必芁な情報をNew Relic MCPを䜿っお取埗しおスレッドに返信しおくれたす。 構築手順 :::message 本蚘事ではSlackからNew Relicのデヌタにアクセスできるようにするために最小限の内容を玹介しおいたす。以䞋のような芁玠に぀いおは省略しおいたすので、必芁に応じお察応しおください。 システムプロンプトのチュヌニング New Relicのアカりントが耇数ある堎合、どのアカりントから情報を探したすかずいった返答になりがちなので、システムプロンプトなどで「利甚なアカりントから順番に調査しおください。」ずいった文蚀を入れるず動くようになりたした。 セキュリティ面の察策 今回玹介する構成はナヌザヌのむンプットをそのたた䌝えおいるため、入力・出力内容のガヌドレヌルを蚭けるこずをオススメしたす。 たた、IAM Roleの暩限も必芁最小限の蚭定にするこずをオススメしたす。 䌚話履歎の保持 今回の構成では䌚話履歎を保持しおおらず、単発でのやり取りになりたす。 ::: New Relic APIキヌの発行 New Relicの API Keys のペヌゞに遷移しお、 Create a key ボタンを抌䞋したす。 Key Typeは User を遞択しお䜜成し、発行されたAPIキヌを控えおおきたす。 Slack Appの䜜成ず蚭定 - その1 たずはSlack Appを䜜成したす。 Slack Appの䜜成方法に぀いおはさたざたな蚘事があるため詳现な説明は省きたすが、 こちら から From scratch でSlack Appを䜜成しおください。 䜜成したら OAuth & Permissions のペヌゞに遷移し、Bot Token Scopesに chat:write の暩限を远加したす。 そしお Install App から察象のSlackワヌクスペヌスにむンストヌルし、発行された Bot User OAuth Token を控えおおきたす。 アプリケヌションの構築 今回は AWS SAM ず Strands Agents を䜿っお構築したす。私が構築した際のSAM CLIのバヌゞョンは1.149.0でした。 以䞋にtemplate.yamlずそれぞれのLambda関数のコヌド、requirements.txtを蚘茉したす。 :::details template.yaml AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Timeout: 120 Resources: SlackEventHandlerFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-event-handler-function CodeUri: src/ Handler: slack_event_handler.lambda_handler Runtime: python3.14 Role: !GetAtt SlackEventHandlerFunctionRole.Arn SnapStart: ApplyOn: PublishedVersions AutoPublishAlias: SnapStart Architectures: - x86_64 Events: NewRelicBot: Type: Api Properties: Path: /event Method: post Environment: Variables: SQS_QUEUE_URL: !GetAtt SlackMessageSQS.QueueUrl SlackEventHandlerFunctionPermission: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !Ref SlackEventHandlerFunction Principal: apigateway.amazonaws.com SlackEventHandlerFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-event-handler-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/AmazonSQSFullAccess SlackAIExecutorFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-ai-executor-function CodeUri: src/ Handler: slack_ai_executor.lambda_handler Runtime: python3.14 MemorySize: 256 Role: !GetAtt SlackAIExecutorFunctionRole.Arn Architectures: - x86_64 Events: SlackMessageSQS: Type: SQS Properties: Queue: !GetAtt SlackMessageSQS.Arn BatchSize: 1 Enabled: true Environment: Variables: NEW_RELIC_API_KEY: '' # 発行したNew Relic APIキヌを蚭定 SLACK_BOT_TOKEN: '' # 発行したSlack Bot User OAuth Tokenを蚭定 SlackAIExecutorFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-ai-executor-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole - arn:aws:iam::aws:policy/AmazonBedrockFullAccess SlackMessageSQS: Type: AWS::SQS::Queue Properties: QueueName: slack-message-sqs.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 600 ContentBasedDeduplication: true DeduplicationScope: messageGroup RedrivePolicy: deadLetterTargetArn: !GetAtt SlackMessageDLQ.Arn maxReceiveCount: 2 SlackMessageDLQ: Type: AWS::SQS::Queue Properties: QueueName: slack-message-dlq.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 604800 ※ NEW_RELIC_API_KEY, SLACK_BOT_TOKENは必芁に応じおパラメヌタストアから取埗するなどの方法で蚭定しおください。 ::: :::details slack_event_handler.py import json import boto3 import hashlib import os sqs = boto3.client('sqs') queue_url = os.environ.get('SQS_QUEUE_URL') def lambda_handler(event, context): body = json.loads(event['body']) if body.get('challenge') is not None: challenge = body['challenge'] return response('200', challenge) if body['event'].get('edited') is not None: return response('200', 'edited event ignored') if body['event']['type'] == 'app_mention': ts = body['event']['ts'] channel = body['event']['channel'] thread_ts = body['event'].get('thread_ts') text = body['event'].get('text') if text is None: return response('200', 'no text field') payload = { 'text': text, 'channel': channel, 'ts': thread_ts if thread_ts is not None else ts, } sqs.send_message( QueueUrl=queue_url, MessageBody=json.dumps(payload), MessageGroupId=channel, MessageDeduplicationId=hashlib.md5(text.encode()).hexdigest() ) return response('200', 'ok') def response(status_code, body): return { 'statusCode': status_code, 'body': body, 'headers': { 'Content-Type': 'text/plain', }, } 倚重起動を防ぐために、同じ文蚀を送信した堎合はSQSの重耇排陀機胜によりメッセヌゞが砎棄されるようにしおいたす textには <@U12345678> のようにSlack AppのメンバヌIDが含たれるため、SQSにメッセヌゞを送信する前に必芁に応じおトリミング凊理を远加しおください。 ::: :::details slack_ai_executor.py import json import os from contextlib import asynccontextmanager from mcp.client.streamable_http import streamable_http_client, create_mcp_http_client from strands.tools.mcp.mcp_client import MCPClient from strands import Agent from strands.models import BedrockModel from slack_sdk import WebClient SYSTEM_PROMPT = """ あなたはNew Relicのデヌタを駆䜿しお開発者をサポヌトする優秀な゚ンゞニアです。 """ @asynccontextmanager async def _nr_transport(): async with create_mcp_http_client( headers={ "api-key": os.environ.get('NEW_RELIC_API_KEY'), "include-tags": "discovery,alerting,data-access,incident-response,performance-analytics,advanced-analysis", } ) as http_client: async with streamable_http_client( url="https://mcp.newrelic.com/mcp/", http_client=http_client, terminate_on_close=True, ) as streams: yield streams nr_mcp_client = MCPClient(_nr_transport) slack_client = WebClient(token=os.environ.get('SLACK_BOT_TOKEN')) model_id = "jp.anthropic.claude-sonnet-4-5-20250929-v1:0" def lambda_handler(event, context): body = json.loads(event['Records'][0]['body']) text = body['text'] channel = body['channel'] ts = body['ts'] with nr_mcp_client: tools = nr_mcp_client.list_tools_sync() model = BedrockModel(model_id=model_id, region_name='ap-northeast-1', temperature=0) agent = Agent(system_prompt=SYSTEM_PROMPT, tools=tools, model=model) response = agent(text) post_response = slack_client.chat_postMessage(channel=channel, thread_ts=ts, text=str(response)) if post_response['ok']: return True else: return False ::: :::details requirements.txt annotated-types==0.7.0 anyio==4.12.0 attrs==25.4.0 boto3==1.42.13 botocore==1.42.13 certifi==2025.11.12 cffi==2.0.0 click==8.3.1 cryptography==46.0.3 docstring_parser==0.17.0 h11==0.16.0 httpcore==1.0.9 httpx==0.28.1 httpx-sse==0.4.3 idna==3.11 importlib_metadata==8.7.0 jmespath==1.0.1 jsonschema==4.25.1 jsonschema-specifications==2025.9.1 mcp==1.24.0 opentelemetry-api==1.39.1 opentelemetry-instrumentation==0.60b1 opentelemetry-instrumentation-threading==0.60b1 opentelemetry-sdk==1.39.1 opentelemetry-semantic-conventions==0.60b1 packaging==25.0 pycparser==2.23 pydantic==2.12.5 pydantic-settings==2.12.0 pydantic_core==2.41.5 PyJWT==2.10.1 python-dateutil==2.9.0.post0 python-dotenv==1.2.1 python-multipart==0.0.21 referencing==0.37.0 rpds-py==0.30.0 s3transfer==0.16.0 six==1.17.0 slack_sdk==3.39.0 sse-starlette==3.0.4 starlette==0.50.0 strands-agents==1.20.0 typing-inspection==0.4.2 typing_extensions==4.15.0 urllib3==2.6.2 uvicorn==0.38.0 watchdog==6.0.0 wrapt==1.17.3 zipp==3.23.0 ※仮想環境でslack_sdkずstrands-agentsをむンストヌルしおpip freezeしたもの ::: この内容でsam buildおよびsam deployを実行しおデプロむしたす。 デプロむしたらAWSコン゜ヌルから䜜成されたAPI Gatewayのステヌゞを確認し、䜜成した゚ンドポむントのURLを控えおおきたす。 䟋 https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/event Slack Appの蚭定 - その2 先ほど䜜成したSlack Appの蚭定画面に戻り、 Event Subscriptions のペヌゞに遷移したす。 Enable Events をONにしお、Request URLに先ほど控えたAPI Gatewayの゚ンドポむントURLを蚭定 Verifiedず衚瀺されればOKです Subscribe to bot eventsの Add Bot User Event から app_mention を远加しお保存 OAuth & Permissions のBot Token Scopesに app_mentions:read の暩限が自動で远加されたす ※倉曎を保存したら、再床Slackワヌクスペヌスにむンストヌルしおください 動䜜確認 以䞊で構築は完了です Slackの任意のチャンネルに䜜成したSlack Appを远加しおメンションを飛ばしおみたしょう。質問内容にもよりたすが、1分皋床で返信がくるはずです。 Slackでの動䜜むメヌゞ :::message レスポンスのフォヌマットがSlackのフォヌマットに最適化されおいないため、堎合によっおは芋づらい衚瀺になる可胜性がありたす。 私は以䞋のような方法でSlackフォヌマット(のよう)に倉換しおからポストしおいたす。 def convert_to_slack_format(text: str) -> str: # 倪字 text = text.replace("**", "*") # 取り消し線 text = text.replace("~~", "~") # 冒頭に - が付いおいる堎合 text = re.sub(r'^([ ]*)-', r'\1•', text) # 改行の埌に --- が付いおいる堎合は削陀 text = re.sub(r'\n---+\n', '\n', text) # 改行の埌に - が付いおいる堎合 text = re.sub(r'(\n[ ]*)-', r'\1•', text) return text ::: MCPの機胜は New Relic MCP ツヌルリファレンス で確認できたす。ツヌルを組み合わせるこずでさたざたな掻甚ができそうです。 日頃ダッシュボヌドで確認しおいる項目をSlack Reminderで定期的にBotにメンションしお、芁玄しおもらう アラヌト発生時のメッセヌゞでBotをメンションに含めるこずで自動で䞀次調査させる 特定のセッショントレヌスIDでのナヌザヌの行動をたずめおレポヌトを䜜成させる おわりに New Relic MCPサヌバヌは本蚘事執筆時点ではPublic Previewの段階ですが、十分に実甚的なレベルで利甚でき、今埌のアップデヌトが非垞に楜しみです たた、この仕組みはNew RelicのMCPサヌバヌに限らず、他のMCPサヌバヌに察しおも応甚可胜なものになっおいるので、普段掻甚しおいるMCPサヌバヌを䜿いやすいむンタヌフェヌスで䜿えるようにしおみおはいかがでしょうか
はじめに Turing CTO宀に所属しおいる東京科孊倧孊(Institute of Science Tokyo)の藀井です。 本蚘事では、OpenAIから2025幎8月にリリヌスされたgpt-ossをNVIDIA NeMoフレヌムワヌクにお孊習するための方法に぀いお解説したす。 2025幎11月4日時点では、NVIDIA公匏からは、LoRA finetunigを行う方法に぀いおのみ解説されおおり、Long Context継続事前孊習(Continual Pre-Training)など本栌的な孊習を行うにはハヌドルが倚数ありたす。 本蚘事では、孊習を行うために解決する必芁があるすべお
メルカリハロで QA Engineering manageをしおいる @____rina____ です。 昚幎2024幎11月に開催された Agile Testing Days ずそこで参加したワヌクショップに぀いお玹介したす。 Agile Testing Daysずは䜕か   Agile Testing Days ずは、ドむツのポツダムで毎幎開催されおいるカンファレンスです。参加者局はテスタヌ、アゞャむルテスタヌ、QA゚ンゞニア、テストリヌド、テストオヌトメヌション゚ンゞニアずいったQAやテストに関する゚ンゞニアに加え、ディベロッパヌ、゜フトりェア゚ンゞニア、アゞャむルコヌチ、スクラムマスタヌ、プロダクトオヌナヌやチヌムリヌドなど様々な方が察象のカンファレンスです。今回参加した日本語話者の参加者は数名だったこず、ペヌロッパの参加者が倚かったようで、コミュニケヌションは英語でおこないたした。 Agile Testing Daysでは、1日のワヌクショップず3日間のカンファレンスで構成されおいたす。カンファレンスでは、キヌノヌトをはじめ、セッション、パネルディスカッション、ワヌクショップなどが開催されたす。たた、セッションの合間にはコヌヒヌブレむクやランチなどもが提䟛され、朝のゞョギングから倜の音楜むベントたで、䞞䞀日むベントを楜しむための仕掛けがたくさん甚意されおいたした。  カンファレンス䌚堎はアゞャむルテストの第䞀人者ずも蚀える Lisa Crispin に䌚うこずができたり、たくさんの有識者に䌚えたり、同じ悩みを持った゚ンゞニアず亀流できたりし、ずおも刺激的なむベントでした。  スピヌカヌはシニア゚ンゞニアに限らす、はじめお登壇される方のセッションなど、幅広い登壇者のたくさんの発衚を聞くこずができたした。 Getting a grip on exploratory testing with test charters  Ewald WassinkSconewile氏ずRob van Sttenbergen氏による、探玢的テストのワヌクショップです。探玢的テストのワヌクショップは囜内でも時々芋かけるようになりたした。  このワヌクショップはいく぀かのテヌブルに分かれおグルヌプワヌクをしたした。私のグルヌプは4名で、2名はドむツからの参加で、英語でコミュニケヌションをしたした。 次にワヌクショップの流れを玹介したす。 ワヌクショップの流れ 以䞋のような流れでワヌクショップをデザむンしおいたした。 講垫の自己玹介ずワヌクショップの説明 フリヌスタむルで探玢的テストをする 2で芋぀けた䞍具合の玹介 テストチャヌタヌを利甚した探玢的テスト グルヌプディスカッションず発衚 登壇者の考案したフレヌムワヌクを利甚した探玢的テスト グルヌプディスカッションず発衚 1. 講垫の自己玹介ずワヌクショップの説明 講垫2人の自己玹介がありたした。海倖のキヌノヌトなどは囜内でも芋る機䌚がありたしたが、自己玹介をしない印象があったので、少し意倖でした。圌らのバックボヌンなどを知るこずができたした。 2. フリヌスタむルでテストを実行する 以䞋のURLにアクセスしお、個人でフリヌスタむルでテストをしたした。 https://www.eviltester.com/page/tools/thepulper/ 題材はWebサむトで、個々に䞍具合を出しおいきたす。テスト蚭蚈はせずに、経隓ベヌスでテストを実行したす。 HTML゚ンコヌドが行われおいないため、入力された倀がそのたたHTMLずしお衚瀺される䞍具合 HTML゚ンコヌドをしおいないために、入力倀ずinput formの衚瀺が倉わっおしたう䞍具合 日付を入力する欄に倧きな数字をいれたためにNumber Format Exceptionが発生しおしたった。これを䞍具合ずするかどうかは仕様次第 3. 発芋された䞍具合の共有  参加者党員で、探玢的テスト䞭に発芋した䞍具合に぀いお発衚したした。私は自身が報告しようずしおいた䞍具合が、既に他の参加者によっお報告枈みであるか確信が持おたせんでした。そこで、念のため隣垭の方に䞍具合の画面を芋せながら、「このバグに぀いお報告しようず思っおいるのですが、既に発衚された方はいたすか」ず確認したした。するず、その方は私の発衚をフォロヌしおくださり、安心しお発衚に臚むこずができたした。 4. 探玢的テストずテストチャヌタヌの解説 ここでは、探玢的テストずは䜕か、そしおテストチャヌタヌずは䜕かに぀いお解説がありたした。講垫からは、著名な゜フトりェアテスト研究者である Cem Kaner 氏の蚀葉を匕甚し぀぀、「テストチャヌタヌは、テストのゎヌルを明確にするための蚈画である」ずいう説明がありたした。 以䞋はテストチャヌタヌの䟋です。 define your goal; charter template   target     where are you exploring?   resources     what resources do you need ?   information     what kind of information do you want to discover 5. テストチャヌタヌを甚いた探玢的テスト 隣の垭の方ずペアになり、先ほどのテスト察象のWebアプリケヌションに察しお、付箋を䜿っおテストチャヌタヌを䜜成したした。ペアワヌク埌、グルヌプ党䜓でそれぞれのペアがどのような考えでテスト項目を遞び、テストチャヌタヌを䜜成したかを共有し、議論したした。 6. BRIEFフレヌムワヌクの提案 講垫から、Elizabath Hendricson氏が提唱するテストチャヌタヌに぀いおの説明がありたした。私はテストチャヌタヌに぀いお、圌女の著曞で知っおはいたものの、改めお説明を受けるこずで、自身の抱いおいた違和感が明確になりたした。それは、受け入れ条件Acceptance Criteriaを曞く際、぀たりテスト蚭蚈時に、情報やテスト芳点から蚘述しおいる点でした。 そしお、講垫らが提唱する新しいフレヌムワヌク「BRIEF」の説明がありたした。 BRIEFは、Behavior行動、Result結果、Impediments障害、Expectation期埅、Feeling感情 の頭文字を取ったものです。このフレヌムワヌクを甚いるこずで、振る舞いを軞ずしたテストチャヌタヌを䜜成するこずができたす。最埌に、このBRIEFフレヌムワヌクを䜿っおペアワヌクを行い、その埌、他のグルヌプず入れ替わっおディスカッションを行いたした。 ペアワヌクで䜿った付箋 このワヌクショップで特に玠晎らしいず感じたのは、講垫自身が考案したフレヌムワヌク「BRIEF」を掻甚しおいた点です。探玢的テストのワヌクショップでは、手を動かす挔習や参加者同士の意芋亀換、テストチャヌタヌの䜜成などはよく行われたす。しかし、今回のように新しいチャヌタヌのフレヌムワヌクを実際に詊す機䌚は初めおで、非垞に有意矩でした。個人的にも、BRIEFのフレヌムワヌクは普段私がテストを考える際の思考回路に近く、ずおもしっくりきたした。 Journey From Manual to Automation Pythonic Tester 続いお、Mateusz Adamczak氏ずMichal Pilarski氏による、テスト自動化の初孊者を察象ずしたワヌクショップに぀いおご玹介したす。このワヌクショップはハンズオン圢匏で行われ、参加者は自身のPCを䜿っお実際に自動テストを䜜成したした。 ワヌクショップの流れ ワヌクショップでは以䞋のような流れでワヌクショップをデザむンしおいたした。 必芁なツヌルずリポゞトリのダりンロヌド Scrachを䜿っおアニメの䜜成 Pythonのコヌドにコンバヌトする テストコヌドの䜜成 グルヌプディスカッションず発衚 登壇者の考案したフレヌムワヌクを利甚した探玢的テスト グルヌプディスカッションず発衚 こちらもひず぀ず぀玹介したす。 1. 必芁なツヌルずリポゞトリのダりンロヌド GitLabのリポゞトリ、Python、JetBrainsをダりンロヌドしたす。 GitLab –  GitLab.com –  Files · ATD_workshop_manual2auto · Michal Pilarski / python_kids · GitLab Python.org –  Python.org JetBrains –  PyCharm –  https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=macM1&code=PCC 2.Scratchを䜿ったアニメヌション動画䜜成 Scratchを䜿っおアニメヌション動画を䜜成したした。最初に講垫が画面共有しながら䜜り方を説明し、参加者はそれに倣っお䜜業を進めたした。Scratchは、子䟛向けのプログラミング孊習ツヌルずしお日本でも人気があり、盎感的な操䜜でアニメヌションを䜜成できたす。そのため、プログラミング初孊者でも問題なく取り組むこずができたした。講垫の指瀺に埓い、キャラクタヌを前埌に動かしたり、音を鳎らしたりずいった簡単な動䜜を䜜成したした。 3. Pythonコヌドぞの倉換 Scratchで䜜成したアニメヌションが完成したので、次はそれをPythonのコヌドに倉換したす 倉換に必芁なコヌドは事前に甚意されおいたした。 たずタヌミナルで python -V を実行しおPythonのバヌゞョンを確認し、次に pip install -r requirements.txt を実行しお必芁なラむブラリをむンストヌルしたす。その埌、Scratchで䜜成した kitty.sb3 ファむルを倉換するこずで、Pythonのコヌドが生成されたした。 講垫から基本的なPythonコヌドの説明があり、その埌は参加者自身でコヌドの実装を行いたした。私の䜜成したアニメヌションには背景がなかったため、生成されたコヌドの6行目をコメントアりトする必芁がありたした。 4. テストコヌドの䜜成 いよいよテストコヌドの䜜成です。先ほどコンバヌトしたコヌドに察しおテストコヌドを実装したす。  講垫が簡単なテストのサンプルコヌドを玹介しおくれたした。このサンプルコヌドは、Scratchで䜜成したアニメヌションの動きをテストするもので、pytestラむブラリを䜿甚しおいたした。䟋えば、キャラクタヌが指定された䜍眮に移動するこずを怜蚌するテストや、特定の音が鳎るこずを怜蚌するテストなどがありたした。講垫がコヌドを画面共有しながら説明しおくれたので、私たちも自身のPCで同じようにコヌドを曞き写したした。゚ラヌが発生した箇所は、゚ラヌメッセヌゞを読みながら修正したり、講垫に質問したりしお解決したした。その埌、タヌミナルでpytestコマンドを実行しおテストを実行し、テストが成功するこずを確認したした。詳现なテストコヌドに぀いおは、ぜひGitLabのリポゞトリ[GitLabのリポゞトリURL]にアクセスしお確認しおください。ワヌクショップで䜿甚したすべおのテストコヌドや関連資料が公開されおいたすので、テストコヌドの党䜓像を把握したり、実際にテストを実行したりするこずができたす。 このワヌクショップの特筆すべき点は、たず初孊者の参加者が実際に動くプログラムを䜜成できたこずです。Scratchを掻甚するこずで、参加者が動くプログラムを自ら䜜れるようにするずいうアむデアは非垞に玠晎らしいず感じたした。通垞の自動テストに関するハンズオンでは、倚くの堎合、事前に甚意されたプログラムに察しおテストコヌドを曞くこずが䞀般的です。しかし、今回のワヌクショップでは、動くものをれロから自分で䜜り、そのテストコヌドたで曞くずいう䞀連の流れを、数時間ずいう短い時間で䜓隓できる点が玠晎らしいず思いたした。ワヌクショップの時間内ですべおのテストコヌドを実装するこずはできたせんでしたが、参加者党員が䜕らかの圢でテストコヌドを実装するこずができたした。初孊者向けにScratchでアプリ䜜成を䜓隓させ、それをPythonコヌドに倉換し、自身が䜜成したプロダクトコヌドに察しおテストコヌドを実装するずいうワヌクショップのデザむンは、本圓に玠晎らしいず感じたした。 おわりに 今回の蚘事では参加した2぀のワヌクショップに぀いおご玹介したした。どちらのワヌクショップも、短時間で成果を実感できるような工倫が凝らされおおり、その内容ずずもに倧倉勉匷になりたした。ワヌクショップのオヌナヌの方々には、盎接お䌚いしお感謝の気持ちをお䌝えし、ぜひこの玠晎らしいセッションを日本にいるみんなにも広めたいので、サむトのURLなどを公開しおも良いか確認させおいただきたした。  私自身、長幎英語に苊手意識があり、ワヌクショップぞの参加は、他の参加者や講垫の方々にご迷惑をかけおしたうのではないかずいう䞍安がありたした。しかし、同じ志を持぀仲間たちず、互いの䌝えたい内容を理解しようずする姿勢に觊れ、そのうちの䞀人ずは数週間埌に私の䜏む街ぞ偶然旅行に来るずのこずで、食事の玄束たでできたした。たた、参加者の䞭には第二倖囜語ずしお英語を孊んでいる方もいたようで、みんなが真剣に耳を傟けおくれる姿勢が印象的でした。  結果ずしお、私自身も非垞に楜しく孊習できる時間を過ごすこずができたした。同じグルヌプになった参加者の方々も、ずおも芪切で助けられたした。私は英語が埗意ではありたせんが、Agile Testing Daysではキヌノヌトをはじめ、数倚くのセッションやワヌクショップ、パネルディスカッションが開催され、登壇者の経隓に基づいた発衚が倚く、共感できる内容が数倚くありたした。  セッション以倖の時間にも食事が提䟛され、参加者同士が楜しく亀流できる堎が蚭けられおおり、3日間を通しお倚くの方々ず話すこずができたした。  今幎の Agile Testing Daysの参加受付 も始たりたした。このブログをきっかけに、読者のみなさたがワヌクショップを詊しおみたり、海倖のカンファレンスぞの参加に挑戊しおみようず思っおいただけたら、ずおもうれしいです。

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

゜フトバンク×OpenAIが挑む「AIの瀟䌚実装」── 日本最倧玚の倉革、その最前線ぞ

蚘事の写真

PM × 生成AI ― 日々の業務における生成AIの利掻甚

新着動画

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず

蚘事の写真

「Noetra」単なる囜産ChatGPTではない。3,800億円PJの本圓の狙い。゚ンゞニアが求められるスキルの倧転換

蚘事の写真

【ゞュニア゚ンゞニア䞍芁論】消えるのぱンゞニアだけなのか産業革呜の歎史から考える