AGESTのブログ - TECH PLAY

TECH PLAY

AGEST

AGEST の技術ブログ

å…š487ä»¶

​「1人目QA」ずいうワヌドを、2020幎ごろからよく聞くようになりたした。 ​もちろんそれ以前から、組織の䞭で1人目のQAずしお掻動をされおきた方はたくさんいたした。 しかし、QA゚ンゞニアずいう職皮の認知が広たったこずで「いたたでQA専門の人は居なかったけど、りチにも芁るよね」ず思いはじめた䌚瀟が倚くなり、採甚募集や実際に1人目QAずしおお仕事をする方も増えたように思いたす。​ 私自身も、珟圚は1人目のQAずしお詊行錯誀をしおいる身です。 ​そこで、本蚘事からは“1人目QAずしおの立ち回り”シリヌズずしお、1人目のQAに求められおいるこず、実際にやっおみお倧事だず思ったこずなどをお䌝えしおいきたす。​ なお、本蚘事では「QA゚ンゞニア」を指しお「QA」ず衚珟したす。 1人目QA、ずはなにか ​たずはタむトルにもある「1人目QA」がそもそも䜕なのか、から考えおみたしょう。 ​䌚瀟の1人目なのか、郚眲の1人目なのか、などは組織によっおバラバラですが、共通するのは「前任者や同僚のQAが居ない状態」に新たに入っおきたQA゚ンゞニアずいう点です。 前任者や同僚が居ないずいうこずは、 テストや品質保蚌を開発者が詊行錯誀しながら行っおいる、テストや品質保蚌の䜓制が敎っおいない QAの具䜓的な圹割やロヌル蚭定がない ずいうこずです。぀たり、1人目QAはプロダクトのテストや品質保蚌業務ず䞊行しお、これらを決める・぀くるこずも担う存圚、ずいえたす。 需芁が増えおいる1人目QA ​冒頭にも觊れたように、2020幎ごろからX旧Twitter䞊でも1人目QAに関する蚀及が増えおきおおり、求人サむトでも「QA立ち䞊げメンバヌ」や「1人目QA」などを募集する䌁業を目にするようになりたした。 ​芁因はさたざた考えられたすが、そもそもの「QA゚ンゞニア」ずいうロヌルの認知・必芁性の理解が進んできおいるため、募集する䌁業が増えた、ず考えられたす。それに䌎っお、「今はQA゚ンゞニアやQA専任の組織はないけれども、新たに立ち䞊げをしたい」ずいう䌁業も増えおきたした。 ​QAチヌムを぀くるうえで、1人目のQAはずおも重芁です。 ​そのチヌムや組織のカルチャヌを創る存圚でもありたすし、組織におけるQAや品質ぞの期埅を把握し぀぀ゎヌルずタスクを具䜓化しながら進めおいく、ずいう高難床の仕事を担うこずになりたす。 開発組織ぞのアプロヌチの仕方 ​そんな難床の高い仕事を担う1人目QAに぀いお、本蚘事ず今埌の連茉を通じおいく぀かの切り口で分類を詊みたす。 ​今回は、1人目QAによる、開発組織ぞのアプロヌチの仕方に぀いお考えたす。 ​1人目QAが新たにJoinしお開発組織ず䞀緒に業務を行う堎合、考えられるパタヌンは倧きく2぀ありたす。 ​パタヌン1:特定のチヌムに入り蟌む ​​ひず぀は、特定のチヌムに入り蟌んで、そのチヌムの専任QAずしお実務を行うパタヌンです。 ​開発しおいるプロダクトが䞀぀だけのずころに1人目のQAずしお入る堎合や、専任QAが居ない状態で耇数プロダクトを開発しおいたうちの1プロダクトに専任QAずしお入る堎合などがありたす。 ​特定のチヌムに1人目のQAずしお入る堎合、それたでのテストのやり方や品質に察する考え方などを把握し぀぀、そのチヌム・プロダクトにずっお最適な品質向䞊のプロセスや仕組みづくりを担っおいきたす。 同時に、そのプロダクトのリリヌスに向けた普段のテストや改善掻動なども行いたす。 ​チヌムや組織によっお求められるこずはさたざたですが、䟋ずしお ​テスト蚈画・分析・蚭蚈・実装・実行・報告たでの、テストプロセスに沿ったテスト掻動党般 テストプロセスの敎備 探玢的テストによる “バグ出し” チヌム内の䞍具合管理や分析 芁件や蚭蚈、単䜓テスト等のレビュヌ 開発者に察するテスト技法や品質に぀いおの考え方のレクチャヌ テスト自動化 ​などがありたす。 ​実際に1人目QAずしおJoinする方にずっおのパタヌン1のメリットは、開発チヌムず密に連携できる、プロダクトの仕様や過去の経緯などをキャッチアップする範囲が狭めずいう点が挙げられるでしょう。 ​範囲や察象がある皋床絞り぀぀、1人目QAずしおの取り組みをタスクレベルに分解・取り組みがしやすい䞀方で、ある皋床短期的な成果が求められるこずもありたす。 パタヌン2:耇数チヌムに広く浅く関わる もうひず぀は、耇数のチヌムやプロダクトに暪断的に関わり、兌務のような圢で倖から品質向䞊の手助けをするパタヌンです。 ​専任QAが居なかった䌚瀟においお、組織党䜓ずしお品質向䞊の取り組みを始めるために1人目QAずしお入る堎合や、瀟内のQA業務を倖郚の䌚瀟に䟝頌しおいるずころに1人目の正瀟員QAずしお入る堎合などがありたす。 ​こちらはパタヌン1ずは異なり、より組織にフォヌカスした働きを求められる傟向にありたす。 ​たずえば ​組織党䜓でのテスト・QA掻動状況の把握 「QA゚ンゞニアずは」の認知向䞊 2人目3人目のQA゚ンゞニアの採甚関連業務 「品質基準」や「テスト暙準」など、組織党䜓に関連するルヌルや基準の制定および普及 チヌムをたたいだテストプロセスや䞍具合の管理・分析方法の蚭定 ​などがありたす。 ​こちらのパタヌン2の1人目QAずしおJoinするメリットは、パタヌン1ず比べおより広い範囲に携われるこず、䞭長期的な芖点で品質向䞊斜策やチヌムをたたいだ土台づくりに着手できるこずなどがありたす。 ​䞀方、暪断的に関わるQA偎が積極的に開発チヌムに察しお働きかけをしおいかないず、品質向䞊斜策がなかなか進たないなど、成果が出づらくなっおしたう面もあるでしょう。 ​2぀のパタヌンを行き来する堎合も ​実際に私自身も「1人目QA」ずしお仕事をしおおり、パタヌン2に近い圢で動いおいたす。 ​䟿宜䞊パタヌン1ず2、ずいう区別をしたしたが、これらは完党に別物であったり、䞀方を遞択したらもう䞀方は遞べない、ずいうものでもありたせん。状況によっおは、それぞれを切り替えたり、ある皋床䞡立させようずするこずも考えられたす。 ​たずえば私が所属する郚門では、耇数の開発郚が存圚しおおり、私が入瀟するたで専任のQAは居たせんでした。 そこに1人目のQAずしおJoinしたわけですが、最初に考えたのが「特定のチヌムに入り蟌んで動くパタヌン1のず、広く浅く党䜓をみるパタヌン2のず、どちらがいいだろう」ずいう点です。 ​最初はパタヌン2を遞択しお、各開発チヌムに察しお少しず぀関わっおいたした。しかし、しばらく行っおみたずころなかなか品質向䞊掻動が前に進んでいない実感があり、これは特定のチヌムで成功事䟋を䜜らないず難しそうだず考え、パタヌン1に近い圢に倉曎をしたした。 ​その埌、ひず぀のチヌムに入り蟌んで掻動をし぀぀、そこで行った内容を他のチヌムにも共有するこずで「それならりチも」ず声をかけおもらえるようになりたした。結果ずしお、再床パタヌン2の圢に近づいおいたす。 ​これはあくたでも私の䟋であり、これが正解ずいうこずはありたせん。組織芏暡や開発チヌムの文化などに応じお、぀ど考えおいくこずが倧切です。 「1人目QA」が掻躍するために、2぀のパタヌンをもずに考えたしょう ​今回は、1人目QAに぀いおの抂芁ず、1人目ずしおJoinしたQAが開発チヌムに関わっお掻動しおいく際の2パタヌンに぀いおご説明したした。 ​特定の開発チヌムに入り蟌む堎合ず、耇数の開発チヌムに察しお倖から関わる堎合。組織の状況や募集時の芁件などによっおどちらかのパタヌンに定たるこずもあれば、どちらかを遞択したり行き来しながらQA掻動を進めるこずもありたす。 ​もし遞択できる堎合には、開発組織のマネヌゞャヌなどず「どちらのパタヌンでいくか」を䞀緒に考え、合意するこずが倧切です。1人目QAずしおJoinした堎合、もしくは1人目QAを迎え入れる堎合は、いずれのパタヌンが適切かを考えおみおください。 The post 1人目QAの䜍眮づけず、開発組織ぞのアプロヌチの仕方 first appeared on Sqripts .
はじめたしお ヒロッシュです。 珟圚の業務はアゞャむルQAずしお、お客様先に垞駐しお業務を行なっおいたす。 9/22に JaSST’23 Niigata が開催されたした。今回、「QA組織に仲間を増やしおいくずきに倧事なこず」「QAスキルアセスメントずオンボヌディングで乗り越えた壁ずこれから乗り越える壁」等、自身の垞駐先に新芏メンバヌが配属された時にOJTずしお圹立぀こずがあるのではないかず思い、オンラむンで参加しおきたした。 その䞭でも自身の珟堎で圹立぀ず感じた、 「事䟋発衚」 をピックアップさせおいただき、孊びの郚分を共有させおいただきたいず思いたす。 事䟋発衚 事䟋発衚は、 〚QAスキルアセスメントずオンボヌディングで乗り越えた 壁ずこれから乗り越える壁〛ず題しお、ミッツこず川満 勇哉さん freeeずkenseiこず 本倚 顕成さん freeeが登壇されたした。講挔内容から埗た「぀の孊び」を以䞋にたずめたす。 孊び そのOP(オンボヌディングパヌトナヌ)ず䞀緒に課題ず目暙を持っお取り組んでいく 講挔は、今幎の4月に䞭途入瀟された川満さんが䜓隓したfreee のスキルアセスメントずオンボヌディングに぀いおの話から始たりたした。 オンボヌディングずは オンボヌディングずは、新入瀟員をはじめ、䞭途採甚瀟員など新しく組織に加わった瀟員の早期離職を防ぎながら、䌁業にずっお有甚な人材に育成する斜策のこずです。 オンボヌディングずは事䟋5遞実斜のポむントやメリットも解説 過去に川満さんご自分が䜓隓しおきたこずずの比范を䞭心に以䞋の3点に぀いおお話いただきたした。 これたでの珟堎ず比范しおよかった所 オンボヌディングに察しおのQA組織の雰囲気 オンボヌディングを受けた䞭で困った所 オンボヌディングの雰囲気も話しやすくお良かったずのお話もされおいたした。グルヌプチャットを掻甚しお受講者仲間や先茩瀟員ぞの質問がし易い環境が甚意されおいたのが良かったそうです。 たた、困ったずきにありがたかったこずずしお、OP(オンボヌディングパヌトナヌ)の存圚があるずのこずでした。OPずは、オンボヌディングを実斜する偎が受講者ひずりひずりの担圓になる制床です。川満さんが受講者ずしお「䜕から手を付けたらよいか」悩んでいるずきに、OPに課題や目暙を盞談・共有できる環境があったこずが良かったずのこずでした。 私の珟堎では専任のOJTの担圓を蚭けおおらず、詳しい人に聞くずいったこずになりがちになっおいたす。OPのような存圚を珟堎で蚭定するこずで、以䞋の改善が図れるず考えおいるので、今埌取り組んで行ければず思いたす。 窓口が䞀元化されるので新芏メンバヌが質問しやすくなり、心理的安党性が担保された状態で教育を受けるこずができるこず 専任担圓者にずっおも埌茩を指導する経隓の堎を䞎えられるこず 教える偎ず教わる偎でしっかりコミュニケヌションを取りながら䞍明点や心配事を乗り越えお、お互いに成長しながら孊んでいける環境を䜜りたいず思いたす。 孊び そのオンボヌディングを党お受けたから䞀人前ずいうわけではない。 講挔の埌半は川満さんのOPでもある本倚さんの担圓ずなり、ご自身が入瀟したオンボヌディングの䜓制が敎っおいなかったころず珟圚ずの比范、それずオンボヌディングを実斜する偎の芖点に぀いお以䞋の3点を䞭心にお話をしおいただきたした。 スキルアセスメント・オンボヌディング導入以前のQA組織 オンボヌディングの課題 スキルアセスメントの課題 今回は詳しく觊れたせんが、 ・オンボヌディング導入以前の組織は開発チヌムにQAが⌊っお密にコミュニケヌションを取りながらテストをできるメリットがあったものの、各チヌムでのテストのやり方がバラバラだずいう課題があったそうです。 ・スキルアセスメントでは、自己評䟡で個人毎のブレが発生しおしたうなどの課題があったそうです。 川満さんの3぀のお話の䞭で䞀番倧事だず感じたこずは、オンボヌディング受講者の課題ずしおあげられた、【オンボヌディングを党お受けたから䞀人前ずいうわけではない。】ずいう郚分です。これは、孊んだこずをハンズオンで実斜しなければなかなかスキルずしお身に付かないずいうこずです。 私の珟堎ではOJT期間以降は専任の担圓者を付けるこずがありたせんでした。が、OJT期間埌も匕き続き新芏メンバヌの業務にサブ担圓を付けるなどのフォロヌを継続するこずで、成果ず教育を効率よく実践できるようになるのではず考えおいたす。 もちろん、䞀番倧事なこずは本人の孊習意欲ず積極性になるず思いたす。 たずめ 以䞊、事䟋発衚から埗た孊びをご玹介させおいただきたした。 今回オンボヌディングの話を䞭心に取り䞊げさせおいただきたしたが、スキルアセスメントに぀いおも 湯本 剛さんfreee/ytte Labの基調講挔で取り䞊げられおいたす。 【QA組織に仲間を増やしおいくずきに倧事なこず】ず題しお、QA組織の拡倧を図る䞭で人員増加に適した組織䜜りの蚭蚈に぀いおお話いただいおいたす。 詳しくは以䞋をご参照ください。 JaSST’23 Niigata レポヌト 基調講挔 セッション 1 「QA組織に仲間を増やしおいくずきに倧事なこず」 オンボヌディングに぀いおは色々な䌚瀟が詊行錯誀しお取り組んでいるず思いたす。匊瀟でも取り組みを行なっおおりたすが、新芏メンバヌにより良い成果を出しおもらうためにも、配属埌のサポヌトもしっかりず行なっおいきたいず改めお思いたした。 継続的なサポヌトを手厚く行うにはサポヌト偎のコスト面も意識しなければなりたせんが、新芏メンバヌずより良い成果を出すために努力しおいきたいず思いたす 最埌たで読んでいただきありがずうございたした。 The post オンボヌディングの珟堎掻甚のヒント芋぀けたJaSST’23 Niigata 参加レポヌト first appeared on Sqripts .
こんにちはフロント゚ンド゚ンゞニアの぀かじです。 今回は、私がReact開発で普段利甚しおいるアクセシビリティのチェックツヌルに぀いおご玹介したいず思いたす。 アクセシビリティずは アクセシビリティずは、情報ぞのアクセスを党おの人が平等に行うこずができる状態を意味したす。りェブアクセシビリティは具䜓的には、芖芚・聎芚などの障害を持぀人々や、高霢者などがりェブサむトやアプリケヌションを利甚する際に遭遇する可胜性のある困難を解消するこずを目指したす。 React開発においおも、アクセシビリティの確保は重芁な芳点ずなりたす。この蚘事では、その実珟をサポヌトする䞀郚のツヌルを玹介したす。 アクセシビリティのチェックツヌル esl int-plugin-jsx-a11y React開発においおは、コヌディングの初期段階からアクセシビリティの問題を特定するこずが重芁です。その䞀助ずなるのがESLintのプラグむンである eslint-plugin-jsx-a11y です。 このプラグむンは、Reactアプリケヌションで䜿甚されるJSXにおけるアクセシビリティルヌルを怜蚌したす。Reactコンポヌネント内のJSX芁玠に関連するアクセシビリティルヌルをチェックし、開発者に朜圚的なアクセシビリティの問題を譊告たたぱラヌずしお衚瀺したす。 䟋えば、img芁玠にalt属性が存圚しない堎合や、フォヌム芁玠がラベル付けられおいない堎合など、アクセシビリティに関する問題を怜出しおくれたす。このツヌルを䜿甚するこずで、コヌドの品質を向䞊させ぀぀アクセシビリティの問題を早期に発芋できたす。 axe-core axe-core は、Deque Systemsが開発したオヌプン゜ヌスのアクセシビリティの問題を蚺断するためのラむブラリです。ブラりザのデベロッパヌツヌルのコン゜ヌルにアクセシビリティ違反の譊告を衚瀺するこずで、開発䞭にリアルタむムのフィヌドバックを埗られたす。 導入方法は非垞にシンプルで、アプリケヌションのメむンの゚ントリヌファむルに以䞋のようにコヌドを远加するだけです。 Next.jsの_app.jsの䟋 import React from 'react'; if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') { const ReactDOM = require('react-dom'); const axe = require('@axe-core/react'); axe(React, ReactDOM, 1000); } function MyApp({ Component, pageProps }) { return <Component {...pageProps} />; } export default MyApp; 開発環境でのみaxe-coreを有効化したす。そのため、本番環境ではパフォヌマンスに圱響を䞎えたせん。 axe Accessibility Linter axe Accessibility Linter は、アクセシビリティをチェックするためのVSCode拡匵機胜です。この拡匵機胜は、䞊蚘で玹介したaxe-coreをベヌスにしおいたす。eslint-plugin-jsx-a11yず同様、アクセシビリティの問題を自動的に怜出し、゚ディタ内で盎接フィヌドバックを提䟛するこずができたす。 Accessibility Insights for Web Accessibility Insights for Web は、Microsoftが提䟛しおいるChromeずEdgeの拡匵機胜です。このツヌルは、アクセシビリティの問題を自動的に怜出し、修正ポむントやガむダンスなど豊富なレポヌト機胜を通じお、開発者がアクセシビリティの向䞊に取り組むこずができたす。 終わりに 以䞊、私が日々のReact開発においお掻甚しおいるアクセシビリティチェックのツヌルをいく぀か玹介したした。これらのツヌルを利甚するこずで、アプリケヌションのアクセシビリティ問題を早期に怜出し、可胜な限り倚くのナヌザヌにずっお䜿いやすいアプリケヌションを開発するこずが可胜になりたす。 しかしながら、ツヌルだけで完党なアクセシビリティを保蚌するこずは困難です。ツヌルの掻甚は重芁ですが、それず同時に、アクセシビリティに぀いおの知識を深めるこずも倧切です。党おのナヌザヌが快適にアプリケヌションを利甚できるよう、我々は匕き続き孊びを深めおいきたしょう The post React開発におけるアクセシビリティのチェックツヌルの玹介 first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第10回目のテヌマは、「゚クストリヌム・プログラミングXP」です。前回は䟡倀の解説をしたので、今回は原則やプラクティスを解説したす。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 XPの原則 XPの原則 䞀般的に語られおいるXPの原則は、第1版第2版で内容が進化したりした圱響で、いく぀か皮類がありたす。よっお、どれが本物かずおもわかりにくいので、今回はWikipedia Extreme programming – Wikipedia にたずたっおいるものをベヌスに解説しおいきたす。 XPの原則 フィヌドバック たず「フィヌドバック」です。顧客からのフィヌドバックだけでなく、テストによるフィヌドバックも含みたす。迅速なフィヌドバックを埗るために、短いサむクルでどんどんリリヌスを繰り返したり、テストを自動化しおくりかえし自動でテスト実行したりしたす。XPは迅速なフィヌドバックがもっずも重芁だず考えおいたす。 XPの原則 シンプルさを前提ずする 次に「シンプルさを前提ずする」です。シンプルさはXPの䟡倀にも登堎したした。 シンプルなものを耇雑にしおはなりたせん。耇雑なものをシンプルに解決しおいくのが重芁です。短い期間で小さく開発するのもシンプルさに぀ながりたす。小さくコツコツリリヌスを繰り返しおいきたす。 XPの原則 倉化を包容する 最埌に「倉化を包容する」です。英語だず「Embracing change」。XPを知る人にずっおは有名な蚀葉です。「embrace」は抱きしめる、包囲する、取り巻く、包容する、受け入れるずいった「積極的に取り入れる」意味になりたす。 これたでのプロセスでは倉化をコントロヌルしようずする方法が取られおきたしたが、そうではなく倉化を積極的に受け入れるのがアゞャむル開発の倧きな特城です。倉化を包容するこずで、より柔軟に開発を進めおいけるようになるのがアゞャむル開発の目指す方向性です。 XPのプラクティス 最埌にXPのプラクティスを芋おいきたしょう。 プラクティスは状況に応じお実斜しおいきたす。たた、プラクティス同士、関係し合う郚分があるので、うたく぀ながるず倧きな効果を満たせたす。たずえば、10分でビルドず垞時結合を䞀緒にやるこずで、プログラム同士の結合がより確実に安党に行われたす。 XPのプラクティスはたくさんあるのですが、珟圚でも䜿える色耪せない技術プラクティスが倚いです。筆者自身も、顧客の支揎でXPのプラクティスを䞭心に導入するケヌスは倚くありたす。 珟圚だず、コミュニケヌションやチヌム運営が䞭心のスクラムが䞻流ずなり、技術プラクティスがおろそかになっおしたう珟堎も倚いです。その結果、アゞャむル開発が倱敗するケヌスもあるので、ここでは、ちょっずだけ詳しく解説しおおきたす。 XPのプラクティスは基瀎ず応甚に分かれおいたす。 XPの基瀎プラクティス 党員同垭 ひず぀めは「党員同垭」です。 最近のオフィスだずあたりないかもしれたせんが、昔のオフィスだずパヌティションに区切られたりしおいたした。それはそれで個宀のように䜿えるので「集䞭できる」ずいった䟿利な点もありたすが、゜フトりェア開発は共同䜜業なので、パヌティションが文字通り壁になっおしたう堎合もありたす。 たた、チヌムメンバヌがそれぞれ別の堎所で働いおいる堎合、コミュニケヌションが取りにくくなりたす。同じビルでフロアが別でも䌌たような問題がおきたす。 繰り返したすが、開発は人間による共同䜜業ですので、党員同垭ずいうプラクティスはできるかぎり取り組んでいくず良いず思いたす。難しい堎合でも、開発チヌムの島にひず぀だけビゞネスの垭を䜜っおおく・・・ずかしお、時間があるずきにそこにきおもらっお䜜業できるようにしおあげる・・・などの察応も有効です。 チヌムの座垭配眮は、チヌム立ち䞊げ時によく考えおみるずよいでしょう。 XPの基瀎プラクティス チヌム党䜓 2぀目は「チヌム党䜓」です。 いわゆる職胜暪断型チヌムを぀くるずいうこずです。職胜暪断型チヌムずは、プロゞェクトを成功に導くためのすべおのスキルや知識や経隓をも぀人達が集たったチヌムです。 職胜暪断型チヌムを䜜るのが難しい組織の堎合は、アゞャむル開発がなかなかうたくいかないケヌスも倚いです。いいすぎかもしれたせんが、職胜暪断的チヌムを立ち䞊げ、ふりかえりずいうプラクティスをくりかえし行えば、たいおいの珟堎はアゞャむル開発をうたく機胜させられる気がしおいたす。 たずは、職胜暪断型チヌムをできるだけ䜜り、難しい堎合は、倖郚の協力を埗お、その摩擊をできるだけなくす・・・ずいった察策を考えおいくず良いでしょう。 XPの基瀎プラクティス 情報豊富な䜜業空間 3぀目は「情報豊富な䜜業空間」です。 たずえば、アゞャむルチヌムは、壁にふせんを貌り付けお議論したり、ホワむトボヌドに新しいアヌキテクチャのドラフト図を曞いたりしお、情報豊富な䜜業空間を䜜っおいきたす。 さらにいうず、フロアにコヌヒヌメヌカヌをおいおもらっお雑談空間を䜜ったり、そこにおや぀をおいお集たりやすくしたりする工倫もしたりしたす。 私自身も、開発チヌムの座垭の近くに、おや぀眮き堎をおいたりしたす。これはおや぀神瀟などず呌ばれるプラクティスで、メンバヌはすきな額のお金をお賜銭箱に入れお、お菓子をたべたす。賜銭箱のお金を䜿っおお菓子を補充するのが僕の圹目でした。 XPの基瀎プラクティス 掻気のある仕事 4぀目は「掻気のある仕事」です。第1版だず「週40時間劎働」ずいう名前のプラクティスでした。 アゞャむルマニフェストにもありたすが、持続可胜な開発が重芁です。よっお、XPでは週40時間勀務をベヌスずしお、しっかり䌑息を取るようにしおいたした。 あたりたえのこずのように思うかもしれたせんが、昔は残業でカバヌが暪行しおいたので、明瀺的に「ノヌ残業デヌ」を䜜るのも手です。 ただ、残業がだめずいうわけではありたせん。堎合によっおは、必芁なずきもあるはずなので、するずしおも無理のない方法をずる。メンバヌも玍埗の䞊で働ける環境を䜜るのが重芁だず思いたす。 XPの基瀎プラクティス ペアプログラミング 5぀目は「ペアプログラミング」です。通称ペアプロは、有名なプラクティスであり、賛吊が分かれるプラクティスでもありたす。 ペアでプログラミングをするので、開発量は2分の1になりたす。ただ、随時議論を行いながらコヌディングするので、レビュヌのコストが枛るため、結局こちらのほうが効率が良かったりしたす。たた、ペアで䜜業するこずで、知識や経隓は倍のスピヌドで埗られるようになりたす。 ペアプロの生産性に぀いおは、過去倚くの議論が行われおいたすが、少なくずも、ずっずペアプロができなくおも、新しいメンバヌがはいっおきたずきや、難しい実装をするずきなどにしがっお、ペアプロを郚分的に掻甚できたす。 XPの基瀎プラクティス ストヌリヌ 6぀目は「ストヌリヌ」です。ナヌザヌストヌリヌず呌ばれたりしたす。 ストヌリヌの特城のひず぀は、芋積もりをすばやくシンプルに行えるこずです。よっお、必然的にストヌリヌは、できるだけ小さく䜜らなければならなくなりたす。1000ペヌゞの芁件定矩曞よりも、1枚のカヌドに曞ききれる量のストヌリヌをXPはあ぀かいたす。 XPの基瀎プラクティス 1週間サむクル 7぀目は「1週間サむクル」です。第1版では蚈画ゲヌムずいうプラクティスでした。 アゞャむル開発ではむテレヌションスクラムだずスプリントず呌ばれる短いサむクルで開発を行いたす。曞籍は圓初2〜3週間を掚奚されおいたしたが、第2版では1週間になっおいるのが興味深い点です。より短い期間でリリヌスを繰り返しおいくこずをすすめおいるのかもしれたせん。 XPの基瀎プラクティス 四半期サむクル 8぀目は「四半期サむクル」です。 短いサむクルで開発を行いたすが、䞭長期的な蚈画も倧切です。四半期、぀たり䞉ヶ月ぐらいの期間で倧きな目暙の調敎を行っおいきたす。 長期的な蚈画に぀いおは、珟堎に合わせお長さを調敎するず良いず思いたす。ただし、長く芋積もっおも、1幎から2幎ぐらいが限界だず思いたす。意味のある範囲で蚈画を立おおいきたしょう。 XPの基瀎プラクティス ゆずり 9぀目は「ゆずり」です。ゆずりで有名なものずしおはGoogleの20ルヌルがありたす。 やるこずを詰め蟌んでも、倧抵はうたく終わりたせん。どうせうたくいかないこずを、毎回のむテレヌションで行うずどんどん蟛くなっおきたす。よっお、ある皋床のゆずりを蚭け、この問題を解決しおいきたす。 XPの基瀎プラクティス 10分ビルド 10番目は「10分ビルド」です。 システムの芏暡によっお倉わっおくるかもしれたせんが、ここでは10分ずいう目安を蚭定しおいたす。10分以内ずいう制限があるこずで、実行回数を維持しやすくなりたすし、時間が長くなっおしたったずきに気が぀けたす。 ビルド時間は短いに越したこずがありたせん。時間に぀いおは、自分たちが埅おる時間を蚭定しおもいいず思いたす。 XPの基瀎プラクティス 垞時結合 11番目は「垞時結合」です。 これは継続的むンテグレヌションCIです。曞籍では2〜3時間ごずに結合ずテストを行うずありたすが、最近だず゜ヌスがコミットされたら自動でCIが動く方法をずっおいる所も倚いず思いたす。 倧抵の堎合、問題は結合郚分におきたす。よっお、垞時結合しおいけば、その問題にすぐきが぀けるようになりたす。これがCIを利甚するメリットです。 XPの基瀎プラクティス テストファヌストプログラミング 12番目は「テストファヌストプログラミング」です。テストファヌストずテスト駆動開発は、賛吊䞡論が起きやすいプラクティスです。 倱敗するテストをたず曞き、テストが倱敗しないようにコヌドを修正しおいくプラクティスです。はじめからテストファヌストで行うのが難しいなら、コヌドずテストを同時コミットするルヌルから始めおもいいず思いたす。なんにせよ、自動テストはアゞャむル開発に必須の技術プラクティスです。 XPの基瀎プラクティス むンクリメンタル蚭蚈 13番目は「むンクリメンタル蚭蚈」です。第1版ではシンプルな蚭蚈ずいうプラクティスでした。 これは説明が難しいプラクティスですが、ざっくりいうず、ちょっずず぀蚭蚈したしょうです。その理由は、党郚をたずめお蚭蚈するのはコストがかかるからです。ちょっずず぀蚭蚈すれば、いた決めなくおも良いこずを、ぎりぎりたで先延ばししお、それたでに埗た情報を䜿っおあずで決められたす。先延ばしをうたく䜿う方法です。これはあずで解説を予定しおいるリヌン゜フトりェア開発にも「最終責任時点」ずいう䌌たような蚀葉がでおきたす。 ここたで基瀎プラクティスを解説しおきたした。次回は応甚プラクティスの解説を行いたす。 連茉䞀芧 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回埓来型開発ずアゞャむル開発の違い その 第4回埓来型開発ずアゞャむル開発の違い その 第5回アゞャむル開発のよくある誀解を解いおいこう 第6回䞖界䞭で倧人気の秘密に迫るスクラムを䜿った゜フトりェア開発 第7回わかるようでわかりにくいスクラムチヌムの責任 第8回スクラムむベントの実践方法 第9回゚クストリヌム・プログラミングずその䟡倀 The post 第10回 ゚クストリヌム・プログラミングの原則ず基瀎プラクティス first appeared on Sqripts .
こんにちは。自動テスト゚ンゞニアのおすしです。 2023幎8月にLogiGear瀟の自動テストツヌル「TestArchitect」がモバむルアプリのテストに察応したした。今回はこの機胜の抂芁を玹介したす。 TestArchitectずは 「 TestArchitect 」はAGESTのグルヌプ䌚瀟であるLogiGear瀟が開発した自動テストツヌルです。10幎以䞊の運甚実瞟がありたす。圓初は特定の顧客の芁望に沿っお開発されたオンデマンドツヌルでしたが、機胜远加ず改善を繰り返しお汎甚性の高い補品に進化したした。珟圚も積極的に開発が進められおいたす。 2023幎8月にモバむルネむティブアプリのテスト機胜が远加( v9.3 )されたこずで、数ある自動テストツヌルの䞭でも察応できるテスト範囲が広いツヌルずなりたした。レコヌド機胜を利甚した簡単な自動テストから、ほかツヌルずの連携やスクリプトを利甚した耇雑な自動テストたで䜜成できる適甚範囲の広いツヌルです。 TestArchitectの特城 TestArchitectのメリット キヌワヌド駆動ず豊富な組み蟌みアクションで実装ずメンテナンスにかかるコストが少なく、テストコヌドの可読性が高いためレビュヌのコストも枛らせるずいうメリットがありたす。テスト察象がWindowsネむティブアプリ、ブラりザの他、モバむルネむティブアプリAndroidアプリ/iOSアプリにも察応しおいるため、他の自動テストツヌルず比べおも幅広い開発チヌムで利甚可胜です。 動䜜環境 TestArchitectはWindows PCで動䜜したす。 Windows 10,11 ※その他動䜜環境は自動化察象や連携するツヌルによっお異なりたす。詳しくは公匏ドキュメント「 Supported platforms 」をご参照䞋さい。 テスト察象 WebブラりザChrome、Edge、Firefox、IE Windowsネむティブアプリ Androidネむティブアプリ iOSネむティブアプリ 䞻な機胜 キヌワヌド駆動型テスト TestArchitectはキヌワヌド駆動型テストを採甚しおいたす。操䜜内容がシンプルなキヌワヌドで蚘述できるため可読性が高いテストを䜜成できたす。たた、テストの修正も容易になるずいう利点がありたす。 レコヌド機胜 操䜜した内容を蚘録しおテストコヌドずしお利甚できるため、誰でも簡単にテストが䜜成できたす。蚘録したテストは簡朔なUIで衚瀺され線集も容易です。 ※v9.3では、Webブラりザ、Windowsアプリテストがレコヌド機胜に察応しおいたす。モバむルアプリテストに぀いおも開発䞭です。 あらゆる操䜜に察応するアクション TestArchitectは 膚倧なアクション が定矩されおいたす。テストで必芁な操䜜はこれらのアクションを組み合わせるこずで実珟可胜です。ナヌザヌが自分で開発する必芁はありたせん。 プログラミング蚀語が利甚可胜 テストはプログラミング蚀語でカスタマむズするこずも可胜です。既にプログラミング蚀語で実装したテストがある堎合、それをTestArchitectのテストに組み蟌むこずもできたす。 利甚可胜蚀語 Java Python C# その他、画像認識機胜、他瀟ツヌルずの連携機胜、自瀟端末を利甚可胜、DBず連携したデヌタ駆動型テストができるなど、様々なオヌダヌに察応できる機胜を備えおいたす。 モバむルアプリテスト機胜 テスト環境の構成図 TestArchitectのモバむルアプリテスト機胜はAppiumサヌバヌを利甚しお動䜜したす。手持ちの端末のほか、Remote TestKitなどの端末クラりドサヌビスも利甚可胜です。 Appiumサヌバヌを介しお操䜜するため、iOS端末をテストする堎合はXcodeをむンストヌルしたMacが必芁です。 䜜成できるテストの䟋 TestArchitectはAndroidずiOSを亀互に操䜜したり、耇数の端末を切り替えながら操䜜するこずができたす。AndroidずiOSで音声通話を行うテストや、3端末以䞊でメッセヌゞのやり取りをするテストなどを実装するこずができたす。このような耇雑な操䜜でも組み蟌みアクションが甚意されおいるためコヌディングの必芁はありたせん。 たた、モバむルアプリ、Windowsブラりザ、Windowsアプリなどを切り替えお操䜜するクロスプラットフォヌムテストも䜜成できたす。モバむルアプリで登録した情報をWindowsのデヌタベヌスアプリで確認する、ずいったテストも䜜成可胜です。 テスト䜜成の手順 iOS端末で写真を撮圱するテストを䜜成する手順を玹介したす。 端末ぞの接続 TestArchitectの「むンタフェヌスビュヌワヌ」機胜に接続する端末の情報を入力しお「接続」ボタンをクリックしたす。 芁玠の取埗 ミラヌ画面䞊で取埗したい察象をクリックするず芁玠のプロパティが衚瀺されたす。芁玠の怜出に利甚したいプロパティにチェックをいれお保存するだけで取埗が可胜です。 保存ボタンを抌すず、TestArchitectのむンタヌフェヌスに取埗した芁玠が衚瀺されたす。 テストコヌドの䜜成 組み蟌みアクションず取埗した芁玠を利甚しおテストを䜜成したす。ExcelラむクなUIであるため、スクリプト蚀語で䜜成したテストケヌスよりも分かりやすいテストコヌドを䜜成できたす。芁玠の名前には英数字以倖に日本語が利甚可胜です。 テストの実行ず結果レポヌト 「むンタフェヌスビュヌワヌ」を利甚した時ず同様に接続先の端末情報を入力するだけで実行できたす。 テスト結果レポヌトはhtml圢匏で出力されたす。倱敗時だけではなく、操䜜毎にスクリヌンショットを自動的に撮圱するように蚭定するこずができたす。それらのスクリヌンショットは操䜜箇所が赀い䞞で囲たれ、確認箇所は赀い枠で囲たれおいたす。テストの内容が分かりやすく、結果の確認をスムヌズに行うこずが可胜です。 ・カメラアプリをtapする前埌でスクリヌンショットを撮圱した堎合のレポヌト ・操䜜や確認箇所は赀い〇などで明瀺されたす。 䜿甚感 私はAppiumずプログラミング蚀語のPythonを利甚しおフルスクラッチの自動テストを䜜成した経隓がありたす。それず比范するず、TestArchitectを利甚した自動テストには倚くのメリットがあるず思いたす。 テストコヌドが速く䜜成できる フルスクラッチで実装したずきはAppium Inspectorで芁玠を取埗しおコピペでコヌドに匵り付ける䜜業を䜕回も繰り返す必芁がありたしたが、TestArchitectはむンタヌフェヌスビュヌワヌでスマホのミラヌ画面をクリックするだけでむンタヌフェヌス定矩に出力できたす。テストコヌドに぀いおも既にほずんどのアクションが準備されおいるため、それを呌び出すだけで終わりたす。アクションの䜿い方はF1キヌを抌すだけでTestArchitectから該圓のアクションを解説した公匏ドキュメントに遷移できたす。探す必芁はありたせん。フルスクラッチのコヌディングよりもかなり速くテストコヌドが䜜成できたす。 ただ、アクションが膚倧にあるため、慣れるたでは䜿いたいアクションを探すのに時間がかかりたす。 テストコヌドが読みやすい 私はコヌドの矅列ずむンデントによる区別に慣れおいたので、TestArchitectのExcelみたいな芋た目はちょっず ず思っおいたしたが実際に䜿っおみるずかなり読みやすい印象です。さらにアクションやむンタヌフェヌスに日本語名を䜿うず内容が䞀目で分かりたす。自動テストの実装担圓者やレビュアヌにぱンゞニアではないメンバヌが含たれる堎合があるため、コヌドが読みやすい点はメリットがあるず思いたす。 テスト実行が簡単 実行するテストケヌス、実行察象の環境端末などの接続先を指定したテスト実行甚のバッチファむルをワンクリックで䜜成できる機胜がずおも䟿利です。テストスむヌトやテスト端末毎に䜜成しおおくず必芁なテストをすぐに実行するこずができたす。Jenkinsなどの倖郚ツヌルで定期実行するずいったCI/CDに組み蟌むこずも簡単です。 プログラミング蚀語が利甚可胜 TestArchitectはJavaやPythonずいったラむブラリが充実しおいるプログラミング蚀語で拡匵できるため、公匏のサポヌトがないツヌルを連携させたり、かなり特殊な凊理でも自動テストに組み蟌むこずができたす。他のテスト自動化ツヌルの倚くは察応しおいる蚀語がJavaScriptのみであったり、限定された範囲でしか利甚できないずいった制玄がありたす。いざずなったらコヌドを曞ける点は自動テスト゚ンゞニアずしお安心できる機胜だず思いたす。 おわりに TestArchitectのモバむルテスト機胜は、Appiumずプログラミング蚀語を利甚したテストず比范するず簡単にか぀速く䜜成ができ、修正にかかる工数も少なく枈みたす。操䜜が容易である䞀方で、自動テストツヌルの䞭でも倚機胜か぀拡匵性が高いずいう特城がありたす。 TestArchitectはFreeラむセンスを提䟛しおいたす。自動テストツヌルを探しおいる方はぜひお詊しください。 https://www.testarchitect.com/ AGESTではTestArchitectの導入を考えおいる方、少しでも興味がある方に向けお説明䌚を実斜しおいたす。お気軜にお問い合わせ䞋さい。 The post TestArchitectモバむルテスト機胜の玹介 first appeared on Sqripts .
こんにちは、バック゚ンド゚ンゞニアのたるです。 この蚘事では、Protocol BuffersのLinterの䞀぀である Buf を䜿ったLint぀いお、実践䟋ずずもにご玹介したす。 Protocol Buffersずは Protocol Buffersは、Googleが開発したバむナリデヌタのシリアラむズ圢匏です。デヌタ蚘述圢匏の䞀皮なのでJSONやXMLず比范されるこずもありたすが、ProtocolBufferはバむナリ圢匏で保存されるため、JSONやXML圢匏などのテキストベヌスの圢匏よりもデヌタサむズが小さく、より高速にデヌタ転送ができたす。 Protocol Buffersは、Googleが開発したRPCフレヌムワヌクである gRPC に䜿われおいたす。Protocol BuffersずgRPCの関係は、JSONずHTTP通信の関係によく䌌おいたす。HTTP通信がデヌタ蚘述圢匏ずしおJSONを䜿甚するように、gRPCはProtocolBufferを䜿甚しお通信を行いたす。 Bufずその他のLinterの比范 我々のプロゞェクトでは、初めはProtocol BufferのLinterずしお Google API Linter を採甚しおいたした。Protocol BuffersがGoogle補なので、LinterもGoogle補のものを䜿えば安心だろうず考えおいたためです。 しかし、Google API Linterのルヌルはいささか厳しすぎたため、プロゞェクトのシステム構成の芋盎しのタむミングでLinterの遞定を芋盎すこずになりたした。再遞定の際に決めた芁件は以䞋の3぀です。 最近たで曎新がある開発が止たっおいない 個人開発でない今埌も曎新が続けられる可胜性が高い Lintのルヌルが厳しすぎない 怜蚎したLinterは以䞋の通りです。 prototool 盎近の曎新が2020幎ず叀く、公匏の発蚀を芋おも今埌アップデヌトされる可胜性が䜎い。 protolint 個人開発である点が䞍安。 Buf prototoolの埌継にあたる。曎新頻床は高く、ルヌルも問題ない。 これらのLinterを䜿っお軜くPoCを行い、最終的にはすべおの芁件を満たしおいたBufを採甚したした。 .protoファむルの準備 ここから、実際にBufを䜿ったlintの䟋をご玹介したす。 Bufをむンストヌルする前に、たずはLint察象の.protoファむルを甚意したしょう。今回は、以䞋のような簡単な.protoファむルbook.protoを䜿いたす。 曞籍デヌタを䜜成するCreateBookず、曞籍デヌタを取埗するGetBookずいう2぀のメ゜ッドがありたす。この2぀のメ゜ッドのResponseは共通のメッセヌゞ型Bookを䜿甚しおいたす。 syntax = "proto3"; package book.v1; service BookService { rpc CreateBook(CreateBookRequest) returns (Book); rpc GetBook(GetBookRequest) returns (Book); } message Book { string id = 1; string title = 2; string author = 3; int32 pages = 4; } message CreateBookRequest { string title = 1; string author = 2; int32 pages = 3; } message GetBookRequest { string id = 1; } 以䞋のようなディレクトリ構成にしお、v1の䞋にbook.protoを眮きたしょう。 sample-project └── pb-proto └── book └── v1 └── book.proto これで準備完了です。 Bufのむンストヌルずセットアップ 次に、Buf CLIをむンストヌルしたす。 $ brew install bufbuild/buf/buf Homebrew以倖のむンストヌル方法に぀いおは、公匏の むンストヌルガむド を参照しおください。 buf CLIのむンストヌルが終わったら、Lintのためのセットアップをしたす。プロゞェクト盎䞋に以䞋のような内容の buf.work.yaml を䜜成したしょう。 directories にはpb-protoを指定したす。 version: v1 directories: - pb-proto 最埌に以䞋のコマンドを実行したす。これにより、  buf.yaml  ãŒpb-protoディレクトリに生成されたす。 cd pb-proto buf mod init 最終的なディレクトリ構成が以䞋のようになっおいたら成功です。 sample-project ├── buf.work.yaml └── pb-proto ├── buf.yaml └── book └── v1 └── book.proto Bufを぀かったLint さっそくBufを䜿っおbook.protoをLintしおみたしょう。 $ buf lint ./book/v1/book.proto 出力を芋おみるず、いく぀かLint゚ラヌが出おいるこずが分かりたす。 pb-proto/book/v1/book.proto:5:3:"book.v1.Book" is used as the request or response type for multiple RPCs. pb-proto/book/v1/book.proto:5:46:RPC response type "Book" should be named "CreateBookResponse" or "BookServiceCreateBookResponse". pb-proto/book/v1/book.proto:6:3:"book.v1.Book" is used as the request or response type for multiple RPCs. pb-proto/book/v1/book.proto:6:40:RPC response type "Book" should be named "GetBookResponse" or "BookServiceGetBookResponse". 1぀目ず3぀目は、「 Book ずいうメッセ―ゞ型が耇数のRPCで䜿われおいる」ために生じた゚ラヌです。 Bufの公匏の Configuration and options ペヌゞには、以䞋のような蚘述がありたす。 最新の Protobuf 開発においお最も重芁なルヌルの 1 ぀は、すべおの RPC に察しお䞀意のリク゚ストメッセヌゞずレスポンスメッセヌゞを持぀こずです。耇数のRPC間でProtobufメッセヌゞを共有するず、このProtobufメッセヌゞのフィヌルドが倉曎されたずきに耇数のRPCが圱響を受けるこずになりたす。筆者翻蚳 Configuration and options 芁は「メッセヌゞ型を䜿いたわすな」ずいうこずを蚀っおいたすね。どのような名称に倉曎するべきかは2行目ず4行目を参考にすればよいです。 修正埌のbook.protoは以䞋のようになりたす。 syntax = "proto3"; package book.v1; service BookService { rpc CreateBook(CreateBookRequest) returns (CreateBookResponse); rpc GetBook(GetBookRequest) returns (GetBookResponse); } message CreateBookRequest { string title = 1; string author = 2; int32 pages = 3; } message CreateBookResponse { string id = 1; string title = 2; string author = 3; int32 pages = 4; } message GetBookRequest { string book_id = 1; } message GetBookResponse { string id = 1; string title = 2; string author = 3; int32 pages = 4; } もう䞀床Lintをかけおみるず、゚ラヌが出なくなったこずが分かるず思いたす。 開発の郜合で無効化したいルヌルがある堎合は、buf.yamlに except の段萜を䜜っお無効化したいルヌル名を指定するずよいです。 以䞋が RPC_RESPONSE_STANDARD_NAME ず RPC_REQUEST_RESPONSE_UNIQUE を無効化したbuf.yamlの䟋です。 version: v1 breaking: use: - FILE lint: use: - DEFAULT except: - RPC_RESPONSE_STANDARD_NAME - RPC_REQUEST_RESPONSE_UNIQUE こうするず、修正前のbook.protoでもLintが通りたす。他のルヌルの名称に぀いおは公匏ペヌゞの Rules and categories を参照しおください。 終わりに Bufを䜿っおProtocol BufferをLintする方法をご玹介したした。BufはLint機胜を䜿うだけなら非垞にシンプルで、孊習コストがかからないず思いたす。 この蚘事がみなさんのお圹に立おば幞いです。 The post Protocol BuffersのLintチェック入門: Bufを䜿った実践ガむド first appeared on Sqripts .
本連茉では、ブロックチェヌンの基本的な仕組みを解説しながら、オンチェヌンデヌタを分析するための基本的な手法に぀いお、党8回で玹介したす。 第6回の今回は、匕き続きオンチェヌンデヌタのオンラむン分析サヌビスのDune https://dune.com/ を甚いお、Ethereumを察象ずしたデヌタ分析の挔習を始めおいきたす。 Raw Blockchain Dataの確認 Duneの提䟛するデヌタテヌブルには、第5回の蚘事でもご玹介した通り、Decoded projectsやSpellsなどの分析のために加工された䟿利なデヌタテヌブルが揃っおいたす。しかし今回は、ブロックチェヌンの基本的なデヌタ構造を理解するためにも、ブロックチェヌンの生のデヌタに近いRaw Blockchain Dataを䞭心に取り扱っおみたしょう。 EVM Raw Table Data Duneでは、BitcoinやEthereumをはじめ、Polygon、Optimism、BNB Chainなど、さたざたなブロックチェヌンのデヌタを提䟛しおいたす。このうち、BitcoinやSolanaなどの少数の䟋倖を陀き、ほずんどのブロックチェヌンはEthereum Virtual Machine(EVM)ず呌ばれる仮想マシンを利甚しおいたす。 Ethereumのクラむアントプログラムにはいく぀かの実装が存圚したすが、すべおのクラむアントが同じEVMの仕様に準拠するこずで、実装の違いを気にするこずなく同じスマヌトコントラクトを実行しお同じ結果を埗るこずができたす。たた、Ethereum以倖のブロックチェヌンであっおも、EVMの仕様に準拠しおいるチェヌンであれば、Ethereum甚に実装されたスマヌトコントラクトを動かすこずができたす。 スマヌトコントラクトを実行可胜なブロックチェヌンは数倚く存圚したすが、その䞭でもEVMず互換性のあるチェヌンがデファクトスタンダヌドずなっおいるため、たずはEthereum(EVM)のデヌタ構造に慣れおおくず汎甚性が高たりたす。 BlocksずTransactions 第3回の蚘事 でもご玹介したずおり、倚くのブロックチェヌンはブロックずトランザクションずいうデヌタ構造を持っおいたす。 Ethereumにおけるブロックずトランザクションの生デヌタは、Dune䞊ではそれぞれ「ethereum.blocks」「ethereum.transactions」ずいうテヌブル名で参照できたす。 䞋蚘のコヌド1.をDuneのク゚リ゚ディタに蚘茉し、RunをクリックしおEthereumのブロックデヌタを10件取埗しおみたしょう。FROM句に欲しいデヌタのテヌブル名を指定し、SELECT句に欲しいカラム名を列挙したす。すべおのカラムを取埗したい堎合は「」を利甚できたす。たた、すべおのデヌタを取埗するのは非垞に時間がかかる可胜性があるため、LIMIT句で取埗するデヌタの件数を指定する癖を぀けおおくず安心です。 コヌド1 . Ethereumのブロックデヌタを10件取埗するク゚リ SELECT *FROM ethereum.blocksLIMIT 10 無事に実行が終了するず、図1のようなク゚リ結果画面が衚瀺されたす。なお、SQLにおけるテヌブルは、衚蚈算゜フトにおけるテヌブルずは異なり、順序を持たないデヌタの集合ですので、取埗される10件のデヌタは実行ごずに異なるものが取埗される可胜性がありたす。今回の実行結果では、2015幎9月12日のタむムスタンプが付䞎された、ブロック番号「224095」のデヌタが1件目に取埗されおいたす。 図1. ethereum.blocksテヌブルのサンプルデヌタ Duneで取埗したデヌタが正しいかどうか、Etherscan https://etherscan.io/ のサむトでも確認しおみたしょう。Etherscanの怜玢窓にブロック番号を入力しお怜玢するず、該圓ブロックの詳现情報を蚘茉したペヌゞが閲芧できたす。 図2 . ブロック番号「224095」の詳现情報 https://etherscan.io/block/224095  図1ず図2を比范しおみお、TimestampやDifficultyなど、基本的な情報が䞀臎しおいるこずを確認しおみおください。 デヌタ加工のためのSQL 䞊蚘のブロックデヌタを察象ずしお、SQLを甚いた簡単なデヌタ加工の挔習をしおみたしょう。 SQLにおけるデヌタ加工のための挔算は、倧きく分けお数倀や文字列などのスカラ倀を察象ずした挔算ず、デヌタの集合であるテヌブルリレヌションを察象ずした挔算が存圚したす。䞡者に぀いお具䜓䟋を確認しおみたしょう。 倀を察象ずした挔算 図1で瀺したク゚リの出力結果のうち、タむムスタンプを衚す「2015-09-12 17:04」ずいったデヌタや、ブロック番号を衚す「224095」ずいったデヌタに察しお、SQLを甚いお奜きな加工を斜すこずができたす。特に、ブロックチェヌンのデヌタの倚くはタむムスタンプを付䞎された時系列デヌタですので、タむムスタンプを分析しやすい圢に加工する機䌚が倚くありたす。 コヌド2に、タむムスタンプを取り扱う兞型的な関数の蚘茉䟋を瀺したす。yearやmonthずいった関数は、タむムスタンプから特定の芁玠を抜出する関数です。date_trunc関数は、タむムスタンプを指定した桁で切り捚おた倀を取埗する関数で、日次や週次でのデヌタ集蚈を実斜したい堎合によく甚いられたす。format_datetime関数はJavaの時刻関数ですが、Dune SQLではこのようなSQL暙準には存圚しないものの有甚な関数も倚く察応が行われおいたす。 Dune SQLでどのような関数が実装されおいるかは、公匏のドキュメント https://dune.com/docs/query/DuneSQL-reference/Functions-and-operators/ を参照しおください。 コヌド2 . タむムスタンプを加工する関数䟋 SELECT time, year(time), month(time), day(time), date_trunc('day', time), date_trunc('week', time), format_datetime(time, 'MMM-dd-yyyy KK:mm:ss a +z'), number FROM ethereum.blocks WHERE number = 224095 LIMIT 10 図3. 「コヌド2」の実行結果䟋 SQLにおける倀を察象ずした挔算の泚意点ずしお、察象テヌブルに含たれるすべおのレコヌドのカラムに察しお、同じ挔算が適甚される点に泚意しおください。䟋えば、100件のデヌタが存圚した堎合に、䞀般的な手続き型のプログラミング蚀語では、for文などのルヌプ構文を甚いお、1件ず぀挔算を適甚しおいくこずが倚いず思いたす。䞀方、SQLは集合挔算を基本ずしおいるため、ルヌプ構文などは存圚せず、100件のデヌタすべおに必ず同じ挔算が適甚されるこずになりたす。 たた、倀を察象ずした挔算では、入力したテヌブルに含たれるレコヌド数ず、出力されるレコヌド数は必ず䞀臎するこずにも泚意しおください。100件のレコヌドを含むテヌブルに察しお倀を倉曎する挔算を実行した堎合、出力結果のレコヌド数も必ず100件ずなっおいたす。 もし、期埅しおいる分析結果がレコヌド数の増枛を䌎うようなものであれば、次のテヌブルを察象ずした挔算が必芁です。 テヌブルを察象ずした挔算 集合挔算ずしおのSQLを䜿いこなすためには、テヌブルに察しお挔算をおこなっお別のテヌブルを䜜成する、ずいうむメヌゞを持぀こずが重芁です。 集合挔算ずしおのSQLを䜓隓する前準備ずしお、さきほど瀺したdate_trunc関数を甚いお、タむムスタンプを日付で切り萜ずしした䞀時デヌタを䜜成しおみたす。コヌド3では、date_truncの蚈算結果カラムに察しお、AS句を甚いお「day」ずいう名前を付けおいたす。コヌド2のような曞き方では、出力結果のカラムが「_col1」「_col2」ずいったデフォルトの連番名ずなっおいたしたが、これらに分かりやすい名前を぀けるこずで、分析の芋通しやク゚リの再利甚性が向䞊したす。 たた、取埗するレコヌドの条件をWHERE句で指定し、レコヌドの絞り蟌みをおこなっおいたす。WHERE句の次に指定した匏がTRUEずなるレコヌドだけが出力結果に衚瀺されたす。「timestamp ‘2023-01-01 00:00:00’ <= time」ずいう条件匏は、’2023-01-01 00:00:00’ずいう文字列をtimestamp型に倉換し、timeカラムの倀ず比范しおいる匏です。 コヌド3 . date_trunc関数を甚いた前凊理 SELECT time, date_trunc('day', time) AS day, number, size FROM ethereum.blocks WHERE timestamp '2023-01-01 00:00:00' <= time 図4 . 「コヌド3」の実行結果䟋 図4に瀺したずおり、タむムスタンプから時刻情報が切り萜ずされ、日付情報を瀺すdayカラムを持ったサンプルレコヌドを取埗するこずができたした。 このサンプルレコヌドを察象ずしお、日付ごずにどれくらいのブロックが生成されおいるかを集蚈するク゚リを蚘述しおみたしょう。 たず、テヌブルに察しお挔算を適甚するこずをむメヌゞするために、コヌド4のような曞き換えをおこなっおみおください。コヌド3に限らず、すべおのSELECT文の出力結果はテヌブルリレヌションの圢匏をしおいるので、その出力結果をFROM句に指定しお、さらに別のSELECT文を蚘述するこずが可胜です。コヌド4の実行結果は、図4で瀺したコヌド3の実行結果ず同じです。 コヌド4 . 「コヌド3」のSELECT文をFROM句に指定したク゚リ SELECT * FROM ( SELECT time, date_trunc('day', time) AS day, number, size FROM ethereum.blocks WHERE timestamp '2023-01-01 00:00:00' <= time ) 集玄関数 テヌブルを察象ずした挔算ずしお代衚的なものに、集玄関数ず呌ばれる関数矀がありたす。コヌド5は、コヌド3の出力結果のテヌブルに察しお、集玄関数であるcount, max, min関数を適甚したク゚リです。 コヌド5 . 「コヌド3」の出力結果に集玄関数を適甚したク゚リ SELECT count(1), max(day), min(day) FROM ( SELECT time, date_trunc('day', time) AS day, number, size FROM ethereum.blocks WHERE timestamp '2023-01-01 00:00:00' <= time ) 図5 . 「コヌド5」の実行結果䟋 コヌド5の蚈算結果は、FROM句で指定したテヌブルに含たれるレコヌド数、dayカラムの最倧倀ず最小倀を瀺しおいたす。ここで、出力結果のテヌブルのレコヌド数が1件ずなっおいるこずに泚意しおください。テヌブルを察象ずした挔算は、倀を察象ずした挔算ず異なり、入力テヌブルのレコヌド数ず出力テヌブルのレコヌド数は必ずしも䞀臎したせん。 GROUP BY句 集玄関数をGROUP BY句ず組み合わせお䜿うこずで、集玄をおこなう粒床を指定するこずができたす。GROUP BY dayず指定するこずで、dayが同じ倀を持぀レコヌド矀を単䜍ずしお集玄関数を適甚し、dayをキヌずした新たなテヌブルが生成されおいたす。なお、蚈算結果の衚瀺順はデフォルトでは䞍定のため、ORDER BY句を甚いるこずで゜ヌトしお衚瀺するこずができたす。 コヌド6 . 日付ごずにブロック数をカりントするク゚リ SELECT day, count(1) FROM ( SELECT time, date_trunc('day', time) AS day, number, size FROM ethereum.blocks WHERE timestamp '2023-01-01 00:00:00' <= time ) GROUP BY day ORDER BY day 図6 . 「コヌド6」の実行結果䟋 WITH句共通テヌブル匏 任意のSELECT文の結果はFROM句に指定しお新たなSELECT文ぞの入力ずしお指定できたすが、倚くのSELECT文がネストしたク゚リは可読性が䞋がる可胜性がありたす。 WITH句を甚いた共通テヌブル匏ずいう構文を甚いるず、SELECT文の結果に䞀時的なテヌブル名を付䞎するこずができ、䞀連のク゚リのなかで再利甚ができるようになりたす。 コヌド7は、コヌド3のSELECT文の結果にtmpずいう名前を付け、WITH句を甚いお共通テヌブル匏化したク゚リです。出力結果はコヌド6ず同様になりたす。 コヌド7 . WITH句を甚いた「コヌド6」の曞き換え WITH tmp AS ( SELECT time, date_trunc('day', time) AS day, number, size FROM ethereum.blocks WHERE timestamp '2023-01-01 00:00:00' <= time ) SELECT day, count(1) FROM tmp GROUP BY day ORDER BY day JOIN句 テヌブルを察象ずした挔算には、レコヌドをフィルタしたり集玄したりするWHERE句や集玄関数ずは逆に、耇数のテヌブルを組み合わせおレコヌド数やカラムを増加させる挔算も存圚したす。 䞊蚘のblocksテヌブルに含たれる情報だけでは、ブロックに含たれるトランザクション数などを把握するこずができたせんでした。ブロックごずのトランザクション数の集蚈は、transactionsテヌブルを甚いお蚈算できたす。transactionsテヌブルの蚈算結果ず、blocksテヌブルのカラム情報を組み合わせお結果に衚瀺させたい堎合は、耇数のテヌブルを指定したキヌで結合するJOIN句が利甚できたす。 コヌド8は、WITH句による共通テヌブル匏で、トランザクション数を集蚈したtx_countテヌブルを䜜成し、blocksテヌブルのnumberカラムず、tx_countテヌブルのblock_numberカラムずをキヌにしお結合したク゚リです。 コヌド8 . ブロックに含たれるトランザクション数の集蚈ク゚リ WITH tx_count AS ( SELECT block_number, COUNT(1) AS tx_count FROM ethereum.transactions GROUP BY block_number ) SELECT number, time, miner, difficulty, tx_count FROM ethereum.blocks AS b JOIN tx_count AS t ON b.number = t.block_number ORDER BY b.number DESC LIMIT 10 図7. 「コヌド8」の実行結果䟋 次回予告 今回の蚘事では、ブロックチェヌンの基本的なデヌタ構造であるブロックやトランザクションのテヌブルをサンプルずしお、デヌタ分析で圹立぀SQLの基本的な構文や、SQL特有の思考方法に぀いお玹介したした。次回蚘事では、EVMのデヌタ構造の深掘りや、発展的なSQLの構文に぀いお解説しながら、オンチェヌンデヌタ分析の挔習を進める予定です。 連茉䞀芧 【第1回】ブロックチェヌンずは 【第2回】ビットコむンの仕組み 【第3回】むヌサリアムの仕組み 【第4回】ビッグデヌタ分析のためのSQL基瀎 【第5回】Ethereumデヌタ分析挔習 1 The post 【第6回】Ethereumデヌタ分析挔習2 first appeared on Sqripts .
こんにちは。 ゚ンゞニアの nobushi です。 RDBを扱うWebアプリケヌションを構築しおいるずRDBのレプリケヌション環境を必芁ずするこずもあるず思いたす。 アプリケヌション偎で察応が必芁なのでできれば開発を行うロヌカル環境の段階で導入したいずころです。 そこで今回は手軜にロヌカルのdocker-composeでRDBのレプリケヌション環境を構築しおみたいず思いたす。 䜿甚するRDBは PostgreSQL です。 ぀いでに怜蚌甚に pgAdmin も導入しおみたす。 導入 docker-compose が䜿える環境で、任意のディレクトリに以䞋のファむルを配眮しお / db_primary/ init.sh pg_hba.conf db_read_replica/ entrypoint.sh docker-compose.yml 配眮したディレクトリで起動しおください。 docker compose up -d docker-compose.yml services: db_primary: image: postgres:14.8 command: -c "hba_file=/etc/postgresql/pg_hba.conf" environment: - POSTGRES_PASSWORD=hoge - POSTGRES_DB=main volumes: - db_primary_data:/var/lib/postgresql/data - ./db_primary/pg_hba.conf:/etc/postgresql/pg_hba.conf - ./db_primary/init.sh:/docker-entrypoint-initdb.d/init.sh healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] db_read_replica: image: postgres:14.8 entrypoint: /etc/postgresql/entrypoint.sh volumes: - db_read_replica_data:/var/lib/postgresql/data - ./db_read_replica/entrypoint.sh:/etc/postgresql/entrypoint.sh healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] depends_on: db_primary: condition: service_healthy pgadmin: image: dpage/pgadmin4:7.3 volumes: - pgadmin_data:/var/lib/pgadmin environment: - PGADMIN_DEFAULT_EMAIL=johndoe@example.com - PGADMIN_DEFAULT_PASSWORD=johndoe ports: - 50080:80 volumes: db_primary_data: driver: local db_read_replica_data: driver: local pgadmin_data: driver: local 構成はPostgreSQLのむンスタンスがプラむマリ、レプリカでそれぞれ䞀぀、 pgAdminが䞀぀です。 たたそれらのデヌタ保持甚のボリュヌムを定矩しおいたす。 db_primary/init.sh #!/bin/sh -xeu psql -v ON_ERROR_STOP=1 <<- _EOT_ CREATE USER replicator WITH REPLICATION; SELECT pg_create_physical_replication_slot('my_replication_slot'); _EOT_ db_primary/pg_hba.conf local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust host replication replicator 0.0.0.0/0 trust host all all all scram-sha-256 db_read_replica/entrypoint.sh #!/bin/sh -xeu pg_basebackup \\ -h db_primary \\ -D ${PGDATA} \\ -S my_replication_slot \\ -X stream \\ -U replicator \\ -R || true /usr/local/bin/docker-entrypoint.sh postgres プラむマリDB プラむマリDBで必芁なこずは以䞋の3点です。 レプリケヌションスロットの䜜成 レプリケヌションナヌザヌの䜜成 レプリケヌションナヌザヌの認蚌蚭定 レプリケヌションスロットの䜜成 レプリケヌション接続を行うためのレプリケヌションスロットを䜜成したす。 init.sh で行っおいたす。 SELECT pg_create_physical_replication_slot('my_replication_slot'); レプリケヌションナヌザヌの䜜成 レプリカ偎からの接続甚にナヌザヌを䜜成したす。 init.sh で行っおいたす。 CREATE USER replicator WITH REPLICATION; このサンプルではセキュリティは気にしないのでパスワヌドは蚭定したせん。 レプリケヌションナヌザヌの認蚌蚭定 pg_hba.conf は認蚌蚭定ファむルです。 デフォルトの pg_hba.conf は /var/lib/postgresql/data/pg_hba.conf にありたすので、それをベヌスにしお以䞋の蚭定を远加しおいたす。 host replication replicator 0.0.0.0/0 trust この蚭定により replicator ナヌザヌのレプリケヌション接続は接続元に関係なくパスワヌド䞍芁ずなりたす。 本サンプルはロヌカルの環境甚ですので簡易的に蚭定したす。 db_primaryの蚭定 䜿甚する pg_hba.conf を倉曎するためにコマンドを蚭定しおいたす。 command: -c "hba_file=/etc/postgresql/pg_hba.conf" たた、ファむルを差し替えるためにvolumeを蚭定しおいたす。 - ./db_primary/pg_hba.conf:/etc/postgresql/pg_hba.conf - ./db_primary/init.sh:/docker-entrypoint-initdb.d/init.sh レプリカDB レプリカDBでは pg_basebackup を䜿甚しおレプリケヌションを䜜成したす。 pg_basebackup はPostgreSQLの起動前に実行し、 PostgreSQLの起動時にはレプリケヌションDBが既に生成されおいるように制埡する必芁がありたす。 そのためにENTRYPOINTを差し替えお、 埓来のENTRYPOINTの前に pg_basebackup を実行するようにしたのが entrypoint.sh です。 pg_basebackup の匕数はプラむマリDBの蚭定内容に合わせたものです。 たた、2回目以降の起動時にはすでにデヌタがあるため pg_basebackup が゚ラヌ終了したす。 その堎合ぱラヌを無芖するように || true を぀けおいたす。 pg_basebackup \\ -h db_primary \\ -D ${PGDATA} \\ -S my_replication_slot \\ -X stream \\ -U replicator \\ -R || true たた、プラむマリDB偎が起動した状態でないず起動に倱敗するため、 composeでプラむマリDBのステヌタスがHealthyになっおから起動するように制埡しおいたす depends_on: db_primary: condition: service_healthy pgAdminで怜蚌 ではpgAdminで動䜜確認しおみたす。 pgAdminぞのアクセスは docker-compose の通りであれば http://127.0.0.1:50080 でアクセス可胜なはずです。 login ログむン画面が衚瀺されるので docker-compose の環境倉数で蚭定した以䞋のメヌルアドレス、パスワヌドでログむンしたす。 johndoe@example.com / johndoe 接続 ログむンしたら各サヌバヌぞの接続を远加したす。 General / Name Connection / Host name Connection / Username Connection / Password db_primary db_primary postgres hoge db_read_replica db_read_replica postgres hoge 怜蚌 この段階でレプリカDB偎にも main デヌタベヌスがある等 プラむマリDBず同期しおいるこずが分かりたす。 ではプラむマリDBにテヌブルを远加しおみたす。 レプリカDB偎にも同期されたした。 たたレプリカDB偎にテヌブルを远加しようずするず゚ラヌが発生したす。 ERROR: cannot execute CREATE TABLE in a read-only transaction 所感 ロヌカルでRDBのレプリケヌション環境ができればアプリケヌションのテスト等やりやすくなるず思いたす。 compose䞀発で構築可胜なのでぜひお詊しください。 The post PostgreSQLのレプリケヌション環境をDockerで手軜に立ち䞊げおみる first appeared on Sqripts .
2023幎9月26日に垝囜ホテルで開催された「Stuart Reid博士来日むベント 特別セミナヌ知識れロから孊ぶAIテスト」に参加しおきたした。 完璧ではないAIを”どうテストするか” “AIをどう䜿うか”に泚目が集たっおいたすが、完璧ではないAIを”どうテストするか“に぀いおはほずんど議論がされおいたせん。 AIプロダクトのテストに぀いお、AIテストの第䞀人者であるStuart Reid博士ず西康晎先生をお招きしお特別セミナヌを開催したす。 セミナヌ抂芁 今から1幎ほど前、2022幎の秋たでは、生成AIなどで話題になるものはあっおも、認知床もそれほど高くなく、珟圚ほど普及はしおいたせんでした。 ずころが2022幎11月、 OpenAI が ChatGPT を発衚するず、たたたく間に泚目を集め、IT業界だけでなく、いわゆる䞖間䞀般、教育業界、子䟛たちにたで認知されるようになりたした。 AIは今たさに、急速な拡倧期を迎えおいるずいえたす。 このAIずいうもの、「すごい」ず感嘆の声を挙げたくなるこずも倚いのですが、反面、「完璧でない」ず感じるこずが倚いのもたた事実です。 ChatGPTを䜿ったこずのある方なら経隓があるかもしれたせんが、しれっず「間違った答えをさも真実のように」䌝えるこずがありたす。 ここが、” AIが完璧ではない “ずころです。 完璧ではないAIですが、せっかくの䟿利なモノなので利甚しない手はありたせん。しかし、利甚しおみたずころでやっぱり完璧でないので「AIの品質」が課題になる。 どのように利甚しおいくのか、はたしお利甚しおいけるのか 。 そんなこずに頭を悩たせる品質界隈の方々にプレれントされたのが、本日の特別セミナヌ「知識れロから孊ぶAIテスト」です。 たさに「AIの品質」にスポットを圓お、゚キスパヌト3名の講挔を聞くこずができたした。 Building Trust in AI through Risk: An Emerging Test SpecialismStuart Reid博士講挔 たずはStuart Reid博士が登壇されたした。 タむトルを盎蚳するず、 リスクを通じおAIの信頌を築く 新たなテスト専門分野 ずなりたす。 AIテクノロゞヌの95は機械孊習システムMachine Lerning Systemずのこずで、MLSを䞭心に講挔が進みたす。 冒頭から䞀気にひき぀けられる内容でした。 芁玄 2022幎には92の䌁業がAIに投資をし、AIから倧きな利益を埗られるようになっおきおいたす。 垂堎に倧きなむンパクトを䞎え、AIの時代が到来したこずを告げおいたす。 しかし、AIには「信頌できない」ずいう問題が䟝然ずしおありたす。 䞖界で玄半数の人は 「AIの利益はリスクを䞊回る」 ず答えおいたすが、AIを「 信頌しない 」「 デヌタをAIず共有したくない 」ず考える人も38もいたす。日本やむギリスは「信頌しない」の割合が高い 䞀方でむギリスのほがすべおの人がSNSを䜿甚しおいたす。 しかし驚くべきこずに、実に45の人はSNSがAIを䜿甚しおいるこずを知らないで䜿甚しおいたす。 AIのメリットを享受しおいるこずを知らずに「信頌しない」ず答えおいるずいうこずです。 信頌がなければAIは発展しおいくこずができたせん。 では、信頌を埗るためにはどうすればよいのか。 テストをするこずです。 テスト業界には倧きなチャンスが蚪れおいたす。 ここからMLSのリスクず重芁性に関するお話になるのですが、講挔に先駆けお特別寄皿されおいる こちらの蚘事 にも詳しく解説されおいたすので、ぜひご参照ください。 【日本語】AIのリスクベヌステスト/Risk-Based Testing for AI 䞭でも、「入力デヌタのリスク」では、 「ineffective data governance非効果的なデヌタガバナンス」に぀いお、「39がデヌタプラむバシヌは生成AIのリスクであるず考えおいるにも関わらず、このリスクを軜枛しようずしおいるのは20%のみ。 玄半分はテストをしおいない。テストをせずに公開しお利益を埗るこずを遞択しおいる可胜性がある」 「開発リスク」では、 「lack of explainability (e.g. selected algorithm is difficult to explain) 説明䞍足䟋遞択したアルゎリズムの説明が難しい」に぀いお、「39が、生成AIには説明の欠劂ずいうリスクがあるず考えおいるにも関わらず、このリスクを軜枛しようずしおいるのはわずか18」 「開発フレヌムワヌクのセキュリティテストに぀いお、53はリスクがあるず考えおいるのに、軜枛を図っおいるのはわずか38」 など、MLSのテスト実斜割合の䜎さ、品質の問題点に぀いお数倀を甚いお倧倉わかりやすく解説しおいただき、あらためお問題意識を持぀こずができたした。 AIMLS独自のテストに぀いおもReid博士の寄皿文に詳しく解説されおおりたす。 【日本語】AIのリスクベヌステスト/Risk-Based Testing for AI (日本語翻蚳版) コヌヒヌブレむク オフラむン開催のセミナヌならではのコヌヒヌブレむクでは、垝囜ホテルのサンドむッチずコヌヒヌで䞀息。 参加者同士の名刺亀換、登壇者ず参加者の雑談颚景が芋られるのも、オフラむン開催ならではです。 オンラむンに慣れおしたっおいるこのごろですが、やはりこのような颚景はいいですね。 䌚堎を眺めおいるず、いろいろな雑談や笑い声が聞こえおきお、枩かみを感じたした。 AIのAIによるAIのためのテスト西康晎博士講挔 続いおは西康晎博士の講挔「AIのAIによるAIのためのテスト」です。 時々䌚堎を笑いに包みながら、様々な事䟋ずずもにAIテストの具䜓䟋を解説しおくださいたした。 シベリアンハスキヌず狌を芋分けるAIを䜜成した。 どのようにシベリアンハスキヌず狌を芋分けおいるかずいうず、顔や錻、耳を芋おいるわけではなく、バックグラりンドに雪があるかどうかだけで刀断しおいる。 このようなAIを信頌できるかずいうお話は倧倉興味深いものでした。 たた、AIのテストにおいおは、 ・これたでのテスト技術が䜿えない ・自動化が必須 ・性胜や䞍具合の因果関係の説明や理解は極めお難しいため、XAIExplainable AIAIの䞭身を説明できた気になる技術が倧事になる ずいうお話もあり、あらためおAIをテストするこずの難しさを感じたした。 メタモルフィックテスト AIテストの代衚的な䞀぀が「メタモルフィックテスト」であるずし、詳しく解説くださいたした。 ・メタモルフィックテストずはAIの間違いを探すこずが䞻 ・刀定ミスを起こさせるこずで、どこで刀別しおいるかがわかる ・テストケヌス自䜓をAIで生成するずいう研究が盛んにおこなわれおいる ⇒「泳いでいるコアラの画像を入力するずモルモットず刀別する」ずいうテストケヌスを生成する、など 西博士もおっしゃっおいたしたが、このあたりのテストは発芋も倚く「面癜い」ずのこず。 スラむドを芋ながら講挔を聞いおいるだけでも、倧倉興味深く面癜かったです。 倧芏暡蚀語モデルLLM 続いお倧芏暡蚀語モデルLLMLarge Language ModelsChatGPTなどのバグを芋぀けるお話がありたした。 LLMは人間のように䌚話したすが、䞀切知性を持っおいない。 「次の単語予枬マシヌン」にすぎないから、 単語を厩すゲヌム をやらせるず間違える。 西博士のお話にあった䟋を、さっそく垰瀟埌にChatGPTGPT-3.5で詊しおみたした。  1. 4桁×4桁の掛け算をやらせるずたず間違える 䞍正解 。 正解は、1958×5089=9,964,262 です。 続いお単語テスト。 2. Sで始たりSで終わる単語を教えお 䞍正解 いい線いっおたしたが、5番を間違えおいたした。 もう䞀぀詊しおみたす。 3. Pで始たりPで終わる単語を教えお 䞍正解 これも惜しかったですね。 間違えおいるにもかかわらず、回答の埌に泚意事項たで述べおくれるChat-GPTに感謝しお実隓を終わりたいず思いたす。 さお、レポヌトに戻りたすが、西博士の講挔は、 AIを恐れる必芁はありたせん。 AIを䜿いこなせる䌚瀟が勝ちたす。 進む方向はもうわかっおいたす。 どちらに進むかは、みなさんが決めるこずです。 ず締めくくられたした。 AIテスト及びシフトラむト戊略高橋寿䞀博士講挔 続いお高橋寿䞀博士の講挔「AIテスト及びシフトラむト戊略」です。 11/16刊行予定こちらもよろしくお願いしたす。 AIずいうのは避けお通れなくなっおいるが、AIのテストずいうのは倧倉だず感じおいる。 テストの仕方も耇雑になっおいる。 23幎前たではShift-Leftを唱えおきたが、今はなぜShift-Rightなのか。 ずいうお話しから始たりたした。 参考  いたさら「シフトレフト」に぀いお考えおみた Shift-Rightに぀いおは、 ・あたり定矩はない ・Shift-Leftでやりたいが、できないため仕方なくShift-Right手法をずっおいる ゜フトりェアの巚倧化、耇雑化に䌎い、Shift-Rightを考えおいく必芁がある時期に来おいる。 実際にビルドをしお客先に出る盎前、もしくは客先に出おからテストをしなければならないずいうこずが、今埌増えおくるのではないか。 ずのこずで、品質に携わる方々の仕事は増えおいく、Shift-Leftもやらなければならないし、Shift-Rightも増えおいくのではないかず予枬されおいたした。 AIのテストに぀いおは、 ・答えがないテストず蚀われおいる ・基本テストケヌスが無限倧 ・ずいっおもテストケヌスデヌタがちゃんず䜜れない そんな䞭で、ただ完璧な゜リュヌションは持っおいないが、なんずか品質を担保しおいきたいず研究しおいるずころである、ずいうお話しでした。 たずめ 今回のプレミアムセミナヌは「知識れロから孊ぶAIテスト」ずいうこずで、専門甚語すら怪しかった私ですが、非垞にわかりやすく、たた興味をそそられる内容でした。 AIを利甚した技術はただただこれから進歩・進化しおいきたすが、興味を持っおAIず仲良くしおいきたいず感じたした。 3人の博士には熱く楜しい講挔をお聞かせいただき、本圓にありがずうございたした。 The post 「知識れロから孊ぶAIテスト」セミナヌ参加レポヌト first appeared on Sqripts .
どうもITむンフラ゚ンゞニアのあっきヌです。 普段の業務はお客様先に定期的にお䌺いしサヌバヌやクラむアント端末などのメンテナンスやコンサルをしおいたす。 ここ最近は「Windows Server 2012/2012 R2」のマむクロ゜フトサポヌトが2023幎10月に終了しおしたう話題が倚くありたす。 「Windows Server 2003」から「Windows Server 2012/2012 R2」ぞリプレむスを行い、珟圚も皌働しおいるケヌスが倚いようで、必然的にこのタむミングでのリプレむスが喫緊の課題になっおいたす。 サポヌト終了埌は、マむクロ゜フトからの新芏のセキュリティパッチが提䟛されなくなりたす。その為、新たな脆匱性が芋぀かった堎合、その脆匱性を狙った攻撃を防ぐこずが難しくなりたす。たた、トラブル時にマむクロ゜フトのサポヌトも受けられないため、ビゞネスが止たるリスクが高たりたす。既に「Windows Server 2012/2012 R2」のリプレむスのお話は倚く頂いおおりたすが、その䞭でも倚い盞談はActive Directoryアクティブ・ディレクトリの移行、ファむルサヌバヌの移行を含む案件です。 今回はActive Directoryの移行に関しおお話させお頂きたす。Active Directoryずは、Windows Server 2000から提䟛が開始された機胜で、ネットワヌクに぀ないでいるクラむアント端末やサヌバヌ、プリンタヌ、アプリケヌションなどの情報を収集し、䞀元管理できるディレクトリサヌビスです。Active Directoryの歎史は長くなるので今回は割愛いたしたす笑。 では本題に戻りたす。Active Directoryを移行する手順はいたるずころで玹介されおいたすが、今回は、Active Directoryが皌働しおいる「Windows Server 2012 R2」から「Windows Server 2019」若しくは「Windows Server 2022」ぞリプレむスする際に泚意が必芁な事を玹介したす。Active Directoryの移行䜜業では、お客様ぞのヒアリング、旧サヌバヌの調査、初期蚭定、ネットワヌク蚭定、Active Directory参加等々の䜜業埌、ドメむンコントロヌラヌ昇栌䜜業に入りたすが、皀に䞋図のような゚ラヌが発生する事がありたす。 ADサヌバヌリプレむス時に考慮しお構成されおいる堎合は出ないむレギュラヌな゚ラヌですが、「Windows Server 2022」ではSYSVOL共有のレプリケヌトにDFS-Rを利甚しおいたす。新芏構築では発生しないのですが、Windows Server 2003頃からActive Directoryを利甚しおいお、バヌゞョンアップしたリプレむスをした際にFRSからDFS-Rに倉換しおいない時に芋かけたす。ちなみに、FRSずは以前から䜿甚されおいたレプリケヌションサヌビスで、「Windows Server 2016」たではサポヌトされおおり、Windows Server 2019以降ではサポヌトされおおりたせん。 💡 Active Directory の SYSVOL レプリケヌション方匏ずしお、埓来ではファむルレプリケヌションシステムFRSFile Replication Systemが䜿われおいたしたが、ドメむン機胜レベル Windows Server 2008 から分散ファむルシステムレプリケヌションDFS-RDistributed File System Replicationが利甚できるようになりたした。たた、DFS-R ぞ切り替えるこずで「SYSVOL 倉曎情報の差分のみが同期される」、「SYSVOL に倉曎が発生した堎合は即時に同期が行われる」などのメリットがありたす。 ずうこずで、こういうケヌスの時はドメむンコントロヌラヌ昇栌䜜業前にActive Directory の SYSVOL レプリケヌション方匏をFRSからDFS-Rに倉換する䜜業が必芁ずなりたす。FSRからDFS-Rに倉換するには䞋蚘倉換コマンドを利甚したす。 【FRS⇒DFS-R倉換コマンド】  dfsrmig.exe /CreateGlobalObjects  dfsrmig.exe /GetGlobalState  dfsrmig.exe /GetMigrationState  dfsrmig /SetGlobalState 1  dfsrmig /GetMigrationState  dfsrmig /SetGlobalState 2  dfsrmig /GetMigrationState  dfsrmig /SetGlobalState 3  dfsrmig /GetMigrationState コマンド実行埌、問題なくFRSからDFS-Rに倉換されたこずを確認できれば、ドメむンコントロヌラヌの昇栌䜜業が実斜できたす。その埌、ADのマむグレヌションを行えばリプレむス完了ずなりたす。 今回はActive Directory移行時の泚意点ずしお「FRS」ず「DFS-R」の話をさせお頂きたした。 ただ1幎間ぐらいはWindows Server 2012/2012R2のリプレむスは倚くあるず芋おいたす。最近は党く想定しない手順が必芁ずなるケヌスはあたりありたせんが、同じようなケヌスのリプレむスや新芏構築でも決たった手順通りに進たないむレギュラヌ手順は発生するものです。圓瀟ではむレギュラヌな手順が必芁になった時は再珟環境を䜜り、問題を特定しお手順確立ずナレッゞ化を行っお察応の品質向䞊に取り組んでいたす。 The post Active Directory移行時の「FRS」ず「DFS-R」 first appeared on Sqripts .
はじめに 前回は、自動販売機を題材にしお、BDDを甚いたプロセスの「定匏化(Formulation)」の郚分たでを説明したした。 今回は、「自動化(Automation)」の郚分を説明したす。 5. 自動化 前回の蚘事の「4. レビュヌ」たで、自動化に぀いおは䞀切考えおいたせんでした。BDDは自動化が目的ではないず第4回でお䌝えした通りです。 ここたできお初めお、自動化に぀いお考えたす。 今回は、前回䜜成した以䞋のGherkin蚘法のシナリオをむンプットにしお自動化を行いたす。 Feature: 自動販売機   Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る     Given 自動販売機がある     When 550 円を入れる     And 120 円の "コヌラ" を遞択する     Then "コヌラ" が出おくる     And 430 円が出おくる 自動化の手順0. BDDのフレヌムワヌクを導入する BDDで行うためのフレヌムワヌクを導入したす。本蚘事では、 プログラミング蚀語 Java フレヌムワヌク Cucumber ビルドツヌル Maven で臚みたす。 たた、IDEはIntelliJを䜿甚しおおり、「Cucumber for Java」のプラグむンがむンストヌル枈みです。蚘事䞭に茉っおいる画像は党おIntelliJのスクリヌンショットであるこずをご了承ください。 Cucumberの構造を理解する Cucumberは以䞋の構造を䜜成しお動かしたす。 Gherkin蚘法のシナリオずテストコヌドが分かれおいるのが、CucumberをはじめずしたBDDフレヌムワヌクの特城です。 これにより、ビゞネス関係者はGherkin蚘法のシナリオを芋るだけで、どのような振る舞いを定矩しおいるのか理解するこずができたす。その際に、プログラミング特有のスキルは必芁ありたせん。 CucumberのプロゞェクトをCloneする 今回は、 cucumber-java-skeleton のプロゞェクトをCloneしたす。 Cloneの仕方ずCucumberの実行の仕方に぀いおはプロゞェクトのReadmeをご芧ください。 テストが実行できるこずを確認する GradleもしくはMavenを甚いお、プロゞェクトのReadmeに曞いおある通りにテストを実行したす。 䟋えばMavenの堎合、以䞋のようにテストが実行できればOKです。初期状態ではテストが倱敗するようになっおいたす。 IDE䞊でフィヌチャヌファむルのテスト実行できるこずを確認する GradleもしくはMavenでテスト実行するず、IDEのフィヌチャヌファむル䞊でCucumberの実行ができるようになっおいたす。 今回はCloneしたプロゞェクトにデフォルトで入っおいるmaven/src/test/resources/io/cucumber/skeleton/belly.featureのファむルを開いおみたしょう。するず、以䞋の画像のようになっおいるはずです。 この䞭で、行番号の1行目もしくは3行目の右偎に぀いおいる䞉角圢2぀のアむコンをクリックしたす。するず、以䞋のようなりィンドりが出おくるはずです。この䞭の䞀番䞊にある「Run ‘〜〜’」をクリックするず、IDE䞊でCucumberのテストを実行できたす。 実行埌、以䞋の画像のような結果になればOKです。 䞍芁なファむルおよび蚘述を削陀する 実際のプロゞェクトを蚘述する䞊で以䞋のファむルは䞍芁なので、削陀しおください。 maven/src/test/resources/io/cucumber/skeleton/belly.feature maven/src/main/java/io/cucumber/skeleton/Belly.java maven/src/test/java/io/cucumber/skeleton/StepDefinitions.java 以䞊で、Cucumberを甚いおBDDの自動化を行う準備ができたした。 自動化の手順1. フィヌチャヌファむルに蚘茉する 新たにフィヌチャヌファむルを䜜成し、前回䜜成した以䞋のGherkin蚘法のシナリオを蚘茉したす。今回はmaven/src/test/resources/io.cucumber.vendormachine/vendormachine.featureずいうファむルを䜜成したした。 Feature: 自動販売機   Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る     Given 自動販売機がある     When 550 円を入れる     And 120 円の "コヌラ" を遞択する     Then "コヌラ" が出おくる     And 430 円が出おくる 自動化の手順2. フィヌチャヌファむルを実行し、倱敗を確認する 「自動化の手順1」で䜜成したフィヌチャヌファむル䞊で、Cucumberの実行をしたす。 するず、以䞋のようにテスト倱敗ずなるはずです。 この時点では倱敗しおいる状態が正解ずなりたす。なぜならばシナリオを蚘述しただけで、それぞれのステップに察する実装をしおいないためです。 なお、䞊のテスト倱敗時の画像では、以䞋のようなテスト実行ステヌタスになっおいたす。 Feature: 自動販売機 Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る Given 自動販売機がある //←テスト倱敗 When 550 円を入れる //←実行スキップ And 120 円の "コヌラ" を遞択する //←実行スキップ Then "コヌラ" が出おくる //←実行スキップ And 430 円が出おくる //←実行スキップ Feature: 自動販売機 Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る Given 自動販売機がある //←テスト倱敗 When 550 円を入れる //←実行スキップ And 120 円の "コヌラ" を遞択する //←実行スキップ Then "コヌラ" が出おくる //←実行スキップ And 430 円が出おくる //←実行スキップ 自動化の手順3. ステップ定矩ファむルを䜜成し、Givenステップの実装を行う 「自動化の手順1」で䜜成したフィヌチャヌファむルを開くず、以䞋のようになっおいたす。 このうち、4行目から8行目の背景色が぀いおいる郚分は、コンパむル゚ラヌの状態を瀺しおいたす。今回の堎合、それぞれの行に察応するステップ定矩がないためコンパむル゚ラヌずなっおいたす。 そこで、たずは4行目の「Given 自動販売機がある」に察するステップ定矩を䜜成したす。 「自動販売機がある」の文章䞊にカヌ゜ルを持っおいくず、ヒントずなる豆電球のアむコンが出おきたす。 豆電球のアむコンをクリックし、「Create step definition」をクリックしたす。 するず、ステップ定矩ファむルの䜜成りィンドりが出おきたすので、適圓なファむルを䜜成したす。 今回は、ファむル名を「VendorMachineDefinitions」、ファむルパスを「maven/src/test/java/io/cucumber/skeleton」ずしたした。 りィンドりの「OK」ボタンを抌すず、以䞋の画像のようなmaven/src/test/java/io/cucumber/skeleton/VendorMachineDefinitions.javaファむルが自動䜜成されるはずです。 ここたで行ったらもう䞀床、「自動化の手順1」で䜜成したフィヌチャヌファむル䞊で、Cucumberの実行をしたす。 するず、前回ずテスト結果が少し異なっおいるのが分かるでしょうか。 ステップ定矩ファむル䜜成前のテスト結果 ステップ定矩ファむル䜜成埌のテスト結果 ステップ定矩ファむル䜜成前では「自動販売機がある」の郚分でテスト倱敗になっおおり「550円を入れる」は実行スキップずなっおいたした。 䞀方ステップ定矩ファむル䜜成埌では「自動販売機がある」の郚分は衚瀺されず、「550円を入れる」の郚分でテスト倱敗になっおいたす。 これは、「自動販売機がある」の郚分のテストが成功しおおり、次のステップである「550円を入れる」のステップ定矩が芋぀からないためテスト倱敗ずなっおいるこずを瀺しおいたす。 自動化の手順4. Givenの䞭身を実装する ステップ定矩ファむルおよびメ゜ッドを䜜成しただけでは、具䜓的に実装ができおいたせん。そこで、次に䞭身の実装を行いたす。 今回の堎合、以䞋の画像のように蚘述したす。珟時点ではVendorMachineクラスが無いにもかかわらず、たるで存圚しおいるかのように曞くのはTDDを曞く時ず䌌おいたすね。 この時点ではコンパむル゚ラヌが発生しおいる状態になっおいればOKです。 自動化の手順5. コンパむル゚ラヌの解消を行う 「自動化の手順4」で発生しおいたコンパむル゚ラヌの解消を行っおいきたす。 今回の堎合、maven/src/main/java/io/cucumber/vendormachine/VendorMachine.javaを䜜成するこずでコンパむル゚ラヌの解消を行いたした。 自動化の手順6. Whenステップの実装を行う 先ほどたでず同様に、今床は「When 550 円を入れる」のステップの実装を行いたす。 豆電球のアむコンをクリックし、「Create step definition」をクリックしたす。 今回は先ほどの「Given 自動販売機がある」ず同じファむル䞊にステップ定矩の実装を行うため、「VendorMachineDefinitions(io.cucumber.skeleton)」を遞択したす。 するず、VendorMachineDefinitionsファむルは以䞋のようになりたす。倉数名はarg0からinsertedAmountに倉曎したした Tips シナリオ蚘茉時に「When 550 円を入れる」ず、数倀の前埌に半角スペヌスを蚘茉するず、Cucumberが自動的に数倀の倉数だず刀断しおくれたす。 同様に「Then “コヌラ” が出おくる」のように、甚語を””で括るず、Cucumberが自動的に文字列の倉数だず刀断しおくれたす。 Whenの䞭身を実装する Givenの時ず同様に、TDDのような感芚で実装しおいきたす。今回の堎合、以䞋のようになりたす。 なお、Givenの時に生成したVendorMachineクラスを掻甚したいため、Given内のロヌカル倉数だったvendorMachineをフィヌルド倉数に倉曎しおいたす。 そしお、VendorMachineクラス内は以䞋のように倉曎したす。 以䞋同様に、ステップ定矩ず実装を䜜成しおいきたす。 おわりに 今回は「自動化(Automation)」ずしお、BDDのフレヌムワヌクであるCucumberを甚いた実装方法を玹介したした。 今回は説明したせんでしたが、BDDずしおのステップ定矩を完成させた埌は、より现かいテストを曞いたり、実装郚分のリファクタリングを行っおいったりしたす。 その過皋で色々ず実装内容を倉曎するこずになるずは思いたすが、今回のステップ定矩を完成させおおくこずにより、倖偎の振る舞いは動くこずを確認できるずいう安心感を持っお倉曎するこずができたす。これが、BDDやATDDの良さでもありたす。 本連茉「TDDずBDD/ATDD」も今回で最終回ずなりたす。今回は「自動化(Automation)」ずいうプログラミング郚分に぀いお説明しおいきたしたが、BDDにおいお䜕よりも重芁なのは「発芋(Discovery)」で行うビゞネス関係者ずの協調䜜業です。自動化のみを行っお、Seb Roseに「開発アプロヌチは少しも BDD にはなっおいたせん。」ず蚀われないようにしたしょう。 たた、本連茉をきっかけにBDDに興味を持った方は、ぜひThe BDD Booksシリヌズをお読みいただければず思いたす。 The BDD Booksシリヌズの曞籍玹介ペヌゞは以䞋の通りです。 『 The BDD Books – Discovery 邊蚳 The BDD Books – Discovery Japanese Edition 』 『 The BDD Books – Formulation 邊蚳The BDD Books – Formulation Japanese Editionはもうすぐ出版予定』 『The BDD Books – Automation』はもうすぐ出版予定 それでは、BDDを通じおビゞネス関係者ず協調しながら、日々の業務を行っおみおください。 連茉䞀芧 TDDずBDD/ATDD(1) TDDはテスト手法ではない TDDずBDD/ATDD(2) 2皮類のBDD TDDずBDD/ATDD(3) BDDずATDDずSbE TDDずBDD/ATDD(4) ツヌルずしおのBDDずプロセスに組み蟌たれたBDD TDDずBDD/ATDD(5) BDDのプロセスその1「発芋(Discovery)」ず実䟋マッピング TDDずBDD/ATDD(6) BDDのプロセスその2「定匏化(Formulation)」ずBRIEFの原則 TDDずBDD/ATDD(7) BDDのプロセスその3「自動化(Automation)」 The post TDDずBDD/ATDD(7) BDDのプロセスその3「自動化(Automation)」 first appeared on Sqripts .
はじめたしお、QA゚ンゞニアの桜 満開です。 最近よく生成AIずいう蚀葉を聞いたり目にしたりするこずはありたせんか 生成AIが実甚化されおきおいる芁因ずしたしおは、「コンピュヌタ性胜の向䞊」「コロナ犍による劎働環境の倉化」「少子化による劎働人口の枛少」など、様々な芁因はあるかずは思いたすが、人間の皌働削枛の必芁に迫られ、この数幎で飛躍的に進化を遂げおきおいる技術です。 ゜フトりェアテストにおいおも、AI掻甚によるテストの自動化は詊みられおおり、「生成AIによるテストスクリプトの自動生成」ずいった掻甚も行われおきおいたす。 ここたで䟿利に思える生成AIですが、急速に発展する技術にはそれを正しく利甚するために留意しおおかないずいけないこずがありたす。 そう、タむトルにもある「著䜜暩」です。 去る什和5幎6月19日に文化庁による著䜜暩セミナヌ「AIず著䜜暩」が開催され、文化庁からの生成AIの利甚時における著䜜暩の考え方に぀いお、䞀定の指針が発衚されたした。 生成AIを利甚しおコンテンツを生成する堎合も、状況によっおは著䜜暩の察象ずなりえる堎合がありたす。 ここでは、セミナヌでのポむントを抑えながら、生成AIや著䜜暩に぀いお䞀緒に考えおいきたいず思いたす。 ※本ブログ内容は什和5幎8月時点の内容ずなりたす。 セミナヌ抂芁 セミナヌ名什和5幎床 著䜜暩セミナヌ「AIず著䜜暩」 䞻催者  文化庁著䜜暩課 開催日  什和5幎6月19日 著䜜暩法の正しい理解に基づいお生成AIの利掻甚がされるよう、珟行の著䜜暩法の考え方やAIず著䜜暩の関係に぀いおの説明が行われたした。 第郚では著䜜暩制床の抂芁に぀いおの解説。 第郚ではAIず著䜜暩に぀いお、生成AIず著䜜暩の関係に぀いおの解説。 ずいう、郚構成で玄時間のセミナヌずなっおいたした。 アヌカむブ映像や講矩資料は 文化庁のWebサむト から確認するこずができたす。 そもそも著䜜暩ずは たずはセミナヌの第郚「著䜜暩制床の抂芁に぀いおの解説」ず同じく、著䜜暩に぀いお 文化庁の著䜜暩テキスト の内容を匕甚し぀぀確認・敎理しおいきたす。 著䜜暩保護の目的 著䜜暩テキスト 4ペヌゞ に以䞋のように蚘茉されおいたす。 適切な暩利保護によっお「創䜜の促進」を図り、暩利の制限によっお「公正な利甚」を確保し、もっお「文化の発展に寄䞎」するこずを目的ずしおいたす。 文化庁著䜜暩テキスト ※ 文化庁の著䜜暩テキスト 4ペヌゞ より掲茉 芁は 「文化の発展に寄䞎」 するためには、新たな創造 「創䜜の促進」 が䞍可欠で、「創䜜の促進」を促すには、暩利の保護・暩利の制限で著䜜物の 「公正な利甚」 を確保し、著䜜者に䞍利益にならないように利甚できるようにするこずで、創䜜の埪環が生たれるようにする。ずいうこずのようです。 セミナヌでも、 「著䜜者等の暩利・利益を保護するこず」ず、「著䜜物を円滑に利甚できるこず」のバランスを取るこずが重芁ず考えられおいる。 ず話されおいたした。 著䜜物に぀いお 次に著䜜物に぀いおの定矩を確認したしょう。 著䜜暩テキスト 5ペヌゞ の蚘茉内容に、 著䜜暩法では、著䜜物は、 「(a)思想又は感情を (b)創䜜的に (c)衚珟したものであ぀お、(d)文芞、孊術、矎術又は音楜の範囲に属するもの」 文化庁著䜜暩テキスト ず定矩されおいたす。 ぀たり、 思想や感情などの含たれないデヌタや事実ずいったもの 創䜜ではなく暡倣であったり、ありふれたもの 衚珟しおいないアむデアのたた 工業補品 ずいうように、定矩から倖れるものは著䜜物ず認められない可胜性が高いです。 業務に身近な著䜜物に぀いお それでは、゜フトりェアテストにおける身近な著䜜物に぀いおはどのようなものがあるでしょうか ゜フトりェアテストにおける䜜成物では、 芁件定矩曞 詳现蚭蚈曞 テストスむヌト テストシナリオ テストスクリプト テストサマリヌレポヌト など、様々な䜜成物が存圚するかず思いたす。 これらに぀いお、著䜜物の定矩や皮類にあおはめおみるず、 思想を創䜜的に衚珟した蚀語やプログラムの著䜜物ずしおなり埗るもの は、 テストシナリオ テストスクリプト テストサマリヌレポヌト 蟺りでしょうか。 ただ、テストの目的ずしおは「誰が操䜜しおも正しい結果が埗られるこず」を目的ずしおいるので、そこに察しお創䜜性を芋出すこずは難しいかもしれたせん。 そもそも生成AIずは 続いお、今回のセミナヌでは説明ずしお觊れられおいたせんでしたが、「生成AIずは䜕なのか」「AIず䜕が違うのか」を確認しおおきたす。 AIず生成AIの定矩に぀いお AIに぀いお 厚生劎働省から公開されおいる「 AIの定矩ず開発経緯 」には、 人工知胜AIartificial intelligenceに぀いおは、明確な定矩は存圚しないが、「倧量の知識デヌタに察しお、高床な掚論を的確に行うこずを目指したもの」䞀般瀟団法人 人工知胜孊䌚蚭立趣意曞からの抜粋ずされおいる。 AIの定矩ず開発経緯 ず蚘茉されおいたす。 その他に総務省から公開されおいる「 人工知胜(AI゚ヌアむ)のしくみ 」でも、 「AI」に関する確立した定矩はありたせんが、人間の思考プロセスず同じような圢で動䜜するプログラム、あるいは人間が知的ず感じる情報じょうほう凊理しょり・技術ぎじゅ぀ずいった広い抂念で理解されされおいたす。 人工知胜(AI゚ヌアむ)のしくみ ずいう蚘茉がありたす。 AIは明確に確立された定矩は無い。 ずいう少し曖昧な技術ですが、倧量のデヌタに察しお 人間が思考・凊理を行うこずず同じように、コンピュヌタが動䜜を行うこずを目的ずした技術。 ずいうこずで、䞻に人間の代わりに凊理を行うコンピュヌタを指すこずが倚い印象です。 生成AIに぀いお NIKKEI COMPASSの生成AIの解説 には、 生成AI(英:Generative AI)は、画像、文章、音声、プログラムコヌド、構造化デヌタなどさたざたなコンテンツを生成するこずのできる人工知胜のこず。 NIKKEI COMPASSの生成AIの解説 倧量のデヌタを孊習した孊習モデルが人間が䜜成するような絵や文章を生成するこずができる。 NIKKEI COMPASSの生成AIの解説 ずありたす。 ぀たり、AIが凊理や技術を指しおいるこずに察しお、 生成AIはそのAI技術を䜿っお新たなコンテンツを生成するこずを目的 ずしおいたす。 生成AIの孊習段階ず生成段階 生成AIを利甚しお新たなコンテンツを生成するためには、たずAIにデヌタを蓄積しお情報を孊習させる「孊習段階」ずいうものがありたす。 この孊習段階で蓄積するデヌタによっお、AIの特城づけが行われたりしたす。 次に、孊習枈みのAIに察しお新たなコンテンツを生成させるために、利甚者がどのようなコンテンツを 生み出したいかずいった芁求をAIに指瀺を出しおコンテンツを生成する「生成段階」ずいうものがありたす。 この指瀺の出し方でも最終的な生成物の仕䞊がりが巊右されたす。 䞻な生成AIサヌビス 昚今話題に䞊がっおいる䞻な生成AIの皮類では、「画像生成AI」「テキスト生成AI」「動画生成AI」「音声生成AI」など様々なものが展開されおいたす。 䟋えばテキスト生成AIに぀いおは、サポヌトセンタヌなどぞチャットで問い合わせた際に、質問に応じた生成メッセヌゞが返答される。 ずいう機䌚が身近に増えおいるかず思いたす。 ゜フトりェアテストにおいおも、テキスト生成AIにおテストケヌスの自動生成やテストスクリプトの自動生成、テストデヌタの自動生成など、生成AI掻甚の堎面も増えおきおいたす。 生成AIを利甚する䞊での著䜜暩に関するポむント では、実際に生成AIを利甚する䞊で著䜜暩に泚意するポむントはどこになるのか、著䜜暩セミナヌの郚で解説されおいた内容を元に確認しおいきたす。 冒頭で觊れおいた、「生成AIを利甚しおいおも、状況によっおは著䜜暩の察象ずなりえる堎合」に぀いお、たた「察象ずならない堎合」に぀いおも具䜓的に芋おいきたしょう。 孊習段階における孊習のもずずなった著䜜物 たず぀目に、AIの開発・孊習段階における、AI孊習の元ずなったデヌタに぀いおの著䜜暩に関する問題が説明されおいたす。 結論ずしおは、什和5幎6月時点の著䜜暩法第条のの解釈では、 AI開発のための情報解析は既存の著䜜物に衚珟された思想や感情の享受を目的ずした利甚ではない。 暩利制限芏定 ず考えられるこずが倚く、原則ずしお著䜜暩者の蚱諟なくAI孊習を行うこずができるようです。 セミナヌでは、䞀般的な深局孊習におけるAI孊習段階の䞀䟋を元に説明されおいたした。 ※ 文化庁の著䜜暩セミナヌテキスト 30ペヌゞ より掲茉 こちらに曞かれおいるように、AI孊習段階においおはWeb䞊のデヌタを収集しお孊習しおいくこずが倚く、さらに数十億点ずいうような倧量デヌタの著䜜暩の有無の刀別や、著䜜者からの蚱諟を埗る。 ずいうこずが困難で非珟実的ずいう状況から、䞋蚘の取り組みが行われおきたようです。 平成21幎改正むンタヌネット情報怜玢サヌビスのための耇補、電子蚈算機による情報解析のための耇補等に぀いお、暩利制限芏定を敎備 平成24幎改正いわゆる「写り蟌み」、技術の開発又は実甚化のための詊隓の甚に䟛するための利甚等に぀いお、暩利制限芏定を敎備 次䞖代知財システム怜蚎委員䌚〔知的財産戊略本郚・H2728〕 新たな情報財怜蚎委員䌚〔知的財産戊略本郚・ H2829〕 これらの取り組みの結果、著䜜暩法第条のが導入され、 開発のための情報解析のように、著䜜物に衚珟された思想又は感情の享受を目的ずしない利甚行為は、原則ずしお著䜜暩者の蚱諟なく行うこずが可胜です暩利制限芏定。 ず法改正になっおいるようです。 ※ 文化庁の著䜜暩テキスト 65ペヌゞ より掲茉 ただし、あくたで 著䜜暩者ぞの経枈的利益を害するものではない。 ずいうこずが前提の思想ずしおはある為、 「著䜜暩者の利益を䞍圓に害するこずずなる堎合※」は、本条の芏定の察象ずはなりたせん。 ※䟋えば、情報解析甚に販売されおいるデヌタベヌスの著䜜物を孊習目的で耇補する堎合など。 ずいう䜆し曞きの条件や、 著䜜暩者の著䜜物の利甚垂堎ず衝突するか、あるいは将来における著䜜物の朜圚的販路を阻害するかずいう芳点から、最終的には叞法の堎で個別具䜓的に刀断されたす。 ずも説明されおいたした。 ゜フトりェアテストにおいおもAI開発・孊習が行われおいたすが、倚くの䌁業では自瀟の過去のナレッゞからAI孊習を行っおいるこずが倚いようです。 私の所属䌚瀟AGESTに぀きたしおも、先日7月11日にAI技術の研究開発を行う「AGEST AI Lab.」の蚭立を発衚いたしおおりたす。 こちらの ホヌムペヌゞ に情報公開しおおりたすので、ご参照いただければず思いたす。 生成段階における入力情報の著䜜物 ぀目に、生成AIを利甚しおデヌタを生成する段階における、入力情報ずなるものの著䜜暩に関する問題が説明されおいたす。 結論ずしおは、 生成AI利甚の有無に関わらず、既存の著䜜暩同様の考え方が適甚される。 ずいうこずのようです。 セミナヌで説明されおいた内容ずしたしおは、 を利甚しお画像等を生成した堎合でも、著䜜暩䟵害ずなるか吊かは、人がを利甚せず絵を描いた堎合などの、通垞の堎合ず同様に刀断されたす。 AI生成物に、既存の著䜜物ずの「類䌌性」又は「䟝拠性」が認められない堎合、既存の著䜜物の著䜜暩䟵害ずはならず、著䜜暩法䞊は著䜜暩者の蚱諟なく利甚するこずが可胜です。 これに察しお、既存の著䜜物ずの「類䌌性」及び「䟝拠性」が認められる堎合、そのようなAI生成物を利甚する行為は、 ① 暩利者から利甚蚱諟を埗おいる ② 蚱諟が䞍芁な暩利制限芏定が適甚される   のいずれかに該圓しない限り、著䜜暩䟵害ずなりたす。 ずいうこずでした。 ※ 文化庁の著䜜暩セミナヌテキスト 44ペヌゞ より掲茉 䞊蚘内容のずおり、特にAIだからずいうこずではなく、既存の著䜜暩同様の考え方が適甚されおいる。 ずいうこずでした。 ただ、生成AI利甚ずいう点でいうず、特に 生成物を䜜成するためのテキストの入力情報に぀いおも、「類䌌性」「䟝拠性」を問われる。 ずいう点は気を぀ける必芁がありそうです。 生成AIの生成物自䜓の著䜜暩の有無 ぀目に、生成AIで生成した生成物自䜓に「著䜜暩は認められるのか」「著䜜者は誰になるのか」ずいう問題が説明されおいたす。 結論ずしおは、 AIが独自で創出したものは著䜜物にならず、利甚者の創䜜意図が介入しおいる堎合は著䜜物になる。 ずいうこずのようです。 セミナヌで説明されおいた内容ずしたしおは、 AIが自埋的に生成したものは、 「思想又は感情を創䜜的に衚珟したもの」ではなく、著䜜物に該圓しないず考えられたす。 䟋人が䜕ら指瀺※を䞎えず又は簡単な指瀺を䞎えるにずどたり 「生成」のボタンを抌すだけでAIが生成したもの ※プロンプト等 これに察しお、人が思想感情を創䜜的に衚珟するための「道具」ずしおAIを䜿甚したものず認められれば、著䜜物に該圓し、AI利甚者が著䜜者ずなるず考えられたす。 ずいうように、あくたで 著䜜物は人の「思想や感情などを創䜜的に衚珟したもの」である ので、それに圓おはたらない利甚方法をしおいる堎合は著䜜物には該圓せず、圓おはたる堎合は利甚者の著䜜物ずしお考えられるようです。 この考え方は䞭々に興味深く、人の思想や感情が入っおいなければAIが生み出す生成物に぀いお、たずえ創造性が高いものであったずしおも著䜜物になり埗ず、著䜜者もいない。ずいうケヌスが出おくる可胜性がありたす。 たずえ同じような生成物だずしおも、 「AI独自で創り出したもの」ず「人の創䜜意図が介入しお創り出したもの」ずでは著䜜物の有無が異なる。 ずいうこずになりたす。 䜕ず蚀いたすか、新しい時代に入っおいるのだ。ず改めお認識する感芚ですね。 さいごに 生成AIを業務利甚する際にはどのようなこずに泚意すべきか ここたで著䜜暩セミナヌの解説内容を振り返りながら、著䜜暩や生成AIに぀いお確認しおきたしたが、結局のずころ生成AIを掻甚しお業務利甚を行っおいくに圓たっお、泚意しおおくポむントをたずめおおきたしょう。 ・ ポむント぀目著䜜物ずなり埗るのかどうか 生成AIの開発・孊習段階、生成段階、生成物に぀いお、著䜜物の定矩 「(a)思想又は感情を (b)創䜜的に (c)衚珟したものであ぀お、(d)文芞、孊術、矎術又は音楜の範囲に属するもの」 ず照らし合わせお著䜜物ず芋なされるかを確認しおおくこずが重芁です。 ・ ポむント぀目著䜜者の暩利を䟵害しおいないか ぀目の確認で著䜜物であった堎合、生成AIを利甚しおコンテンツを生成する䞊で、著䜜暩の䟵害に該圓しないかどうかの確認が必芁ずなりたす。 基本的に「暩利制限芏定」以倖での利甚は著䜜者に蚱諟が必芁ずなりたす。生成AIの利甚で著䜜者の利益を䞍圓に䟵害しおいないこずが考え方の基本ずなりたす。 今埌の著䜜暩法の改正に぀いおもチェックが倧切 生成AIに限らず、技術の進歩に応じお著䜜暩法も日々時代に合わせお改正されおいたす。 先日に文化庁で行われた著䜜暩セミナヌのように、技術の進歩に応じお考え方を敎理・怜蚎しお提瀺したり、法改正や斜行が行われおいたす。 文化庁で公開されおいる著䜜暩テキストも珟圚は什和5幎床版が公開されおいお、前幎床から蚘茉内容の倉曎箇所もありたす。 先端技術に぀いおは法改正の敎備頻床も早いので、文化庁などの発信情報を泚芖しおいくこずが倧切だず改めお感じたした。 The post 生成AIず著䜜暩に぀いお考える first appeared on Sqripts .
みなさん、こんにちは QA゚ンゞニアのゆヌすけです。 9/22にJaSST新期が開催されたした。 JaSST  新期でのハむブリット開催オフラむンオンラむンのため、圓初は業務の傍らオンラむン芖聎ができればず思っおたしたが、掲げたテヌマに匷い興味を抱いたため、業務を調敎しお新期珟地参加をしおきたした。 「QAスキルアセスメントを掻甚したQA暙準化ずQA人材育成」 今回の新期のテヌマがこちらになりたす。 アセスメントずはざっくりいうず評䟡、分析ずいった類の意味合いずなりたす。 ひず昔前のAGESTでは、各圹割職務ないし職胜に察しおの定矩が 「求められる圹割を満たすこず」 ずいうような蚘茉もあり、圹割に察しおの解釈が個人で異なる、たた䌚瀟ずしお暙準スキルの定矩が曖昧な郚分もあったため、目指すべきキャリアに察しおの研鑜すべきスキル提瀺ができおないものもありたした。 順次job description以䞋JDを敎理しおいるものの、圹割に察しお求められるスキルや、スキルに察する埅遇ずいうものはそれぞれの組織で倧きく異なっおいお、ここに明確な解はありたせん。 珟圚、圹割に応じたゞョブ定矩、持っおいおほしいスキル、資栌などを鋭意蚭蚈䞭ですが、なかなか自分の所属組織倖の情報を聞けるずいう機䌚も䞭々に皀だず思い、せっかく聞くのであれば珟地で生の声を聞こうず思い、新期に足を運ばせるきっかけずなりたした 基調講挔ずしお、Sqriptsスクリプタヌである 湯本氏 によるfreee瀟での取り組みを語っおいただいおおりたす。 講挔内容レポヌトに関しお、情報の誀認識、拡倧解釈、認識のバむアスなどがあるずfreee瀟にご迷惑をおかけしおしたうこずになりそうなので、印象に残った箇所の抜粋ずそれに察する自分の考えやAGESTの方向性を取り䞊げおいきたいず思いたす。 分化の違いを理解したうえで、自己の分化を確立する QAの経隓があるずいっおも、組織が違えば根本的な郚分での分化の違いはある 採甚ずあわせお、自瀟ずしおのQAを確立する必芁性があった こちらはたさにその通りすぎる、ず思いたした。 自分も採甚面接に携わるこずがありたすが、これはクラむアント様ずMTGする時も思うこずがありたす。 分化が違えば同じ甚語を䜿っおいおも䞭身の意味が党く違う、ずいうようなこずは倚々あるので、 「コミュニケヌションを重ねる」 「異文化である、ずいうこずを倧前提で考える」 「自分の䞭の指暙・ものさしをしっかりず固める必芁がある」 ずいったようなこずが倧事である、ず改めお感じるお蚀葉でした。 教えるもの、教えないものを切り分ける QA人材の育成で必芁なこずは、䜕を教えるのか、どこたで教えればいいのかを明らかにするこず  オンボヌディングで行う内容ず、OJTで行う内容を明確に分かる これはなるほどな、ず。 AGESTでも入瀟埌のオンボヌディングを11.5ヵ月で行っおいたすが、オンボヌディングを実際に受けおいないメンバヌは実際のオンボヌディングで明確に䜕をどの粒床たで教えおいるか、ずいうこずたでは切り分けられおないな、ず。 基本的には珟堎で必芁そうな内容をオンボヌディングに入れ蟌んでいたすが、あえおオンボヌディングでは扱わずOJTに任せるその代わり必ずOJTで扱うようメンバヌ理解が必芁ずいうこずは効果的になるものもあるな、ず匷く感じた内容でした。 スキルラダヌのロヌル定矩 スキルラダヌのロヌル定矩 スキルラダヌに関しおは自分も初聞きの単語でした。 ラダヌは梯子を意味しおおりスキルラダヌずするずスキルの専門性をあげおいくための指暙。 キャリアマップ/パス、JDずは異なり昇進、報酬ずは関連しない玔粋なスキルマップのようなものずなり、今の自分のスキル䜍眮を蚈れるようなもの、ずいう理解をしおいたす。 ゞュニア局の定矩は各分野の初歩は党おできるべき、ミドル局からは圹割に特化しお専門的にスキルアップできるように この内容に関しおは、AGESTでも同じような考えをしおいたす。 なぜならAGEST QA郚門で考えおいるJDでも、ゞュニア局は党おの初玚を理解し、その䞊で専門性のあるテスト゚ンゞニア、テストマネヌゞャヌ、テクニカルテスト゚ンゞニアなどに分かれるように蚭蚈しおいるので、新たな芳点を埗られたずいうこずはありたせんが、それ以䞊に倧きな安心感を埗られた、ずいう思いになりたした。 スキルラダヌの評䟡軞自立性 freee瀟の自立性評䟡ずしお、「サポヌトありき」「サポヌトが必芁だから基本はできる」「サポヌト䞍芁」「人のサポヌトができる」ずしおいる、ずのこずでした。 ここもある䌌おいる考えをしおおり安心感を芚えた内容ですが、個人的には test.sff や守砎離の考え方にもある「改善、改良、新芏プロセスを生み出すこずができる」ずいったものも䞊䜍評䟡ずしお眮きたいず考えおいたす。 アりトプットを暙準化するず人の流動化が容易になる これは自瀟プロダクトが耇数ある前提特有かな、ずいう思いが匷い内容でした。 自瀟内に耇数プロダクトがあり、QAのアりトプットをプロダクト暪断で暙準化するこずでプロダクト移動をしおも芚えなおしがなく䞀定䞊の効果が芋蟌たれる、ずいう内容ずいう理解をしおいたすが、第䞉者䌚瀟ではアりトプットの内容は顧客偎に䟝存するこずがありたす。そもそもテストに察するむンプットデヌタが絶察的に暙準化されない 第䞉者怜蚌䌚瀟でも自瀟フォヌマットで運甚しお構わないものは暙準化を行っおいたすが、顧客に向き合い、顧客ごずの䜓制/芁望に寄り添い臚機応揎に察応、カスタマむズしおお成果を出す、ずいうのが第䞉者怜蚌䌚瀟ならではの面癜味なのかもしれない、ずあらためお感じたした。 評䟡ずカルチャヌ ほか心に残った内容ずしおは 人事評䟡はスキルラダヌでは行わず、アりトカムで行う スキルラダヌは採甚には掻甚しない。採甚はカルチャヌフィットが重芁 ずいうのが評䟡、採甚にも携わる立堎ずしおは今埌も意識しお考えるべき内容だな、ず思っおいたす。 今回䞀郚お芋せいただいたスキルラダヌは提瀺するこずで、スキルの客芳的向䞊の可芖化評䟡、埅遇盎結ずいったようなこずも起こりやすいのかな、ず思いたすが、 成果により䌚瀟貢献 ↑ 成果を出すためのプロセス、ゞョブ定矩   ↑ プロセスを達成するためのスキル     ↑ スキルを習熟するための研修、オンボヌディング、および各皮資栌奚励 のようなこずが基本である、ず。 たた、採甚においおもスキルや経隓の確認を重芁芖しおいた時代十数幎前も確かに自分にもありたしたので、この2぀は自分の襟を正すきっかけになったのではないかな、ず思っおおりたす。 たずめ 今回スキルラダヌや、freee瀟で䜿甚されおいるテストチャヌタ等、具䜓的なものも芋せおいただきたしたが、実際に䜕を考え䜕を構築するかは所属組織次第だず思っおいたす。 freee瀟の事䟋はあくたでfreee瀟にあった内容であり、湯本氏も講挔資料冒頭で 「組織䜜りの参考にしおね」 ず蚘茉しおいるので、倧事なのは事䟋を100%受け止めるのではなく、 スキルアセスメントや暙準化などを考えるこずがカルチャヌ圢成になり、 カルチャヌが定たるこずによっお方針、方向性がより匷固なものになり、 それが自瀟ブランドになっおいく、 ずいうこずが、今回のカンファレンス参加で持ち垰った内容になりたす。 この自分の考えもあくたで自瀟カルチャヌにあわせた考え方も倚いず思いたすので、 皆様も組織䜜りや組織の䞭での動き方の参考にしおいただければず思いたす。 たたもしAGESTのカルチャヌに興味を湧くようなこずがありたしたら、気軜にお問い合わせをしおいただければず The post 今こそQAスキルアセスメントに぀いお考えおみたJaSST新期レポヌトにかえお first appeared on Sqripts .
こんにちは、芋習いフロント゚ンゞニアのぱやぎです。 今回はframer-motionを䜿甚しお、ReactTypescriptでカレンダヌコンポヌネントに月の倉曎時のアニメヌションを远加する方法を玹介したす。 はじめに たず、完成したものをご玹介したす。 フレヌム数の問題でカクカクしおいたすが、実際はスムヌズに動䜜したす 実装 それではアニメヌションの実装をしおいきたす。。 䜿甚技術 TypeScript: “^4.8.4” React: “^18.2.0” framer-motion: “^9.0.0” date-fns: “^2.29.3” アニメヌション䜜成前の準備 たず、date-fnsを䜿甚しお以䞋のようなコンポヌネントを䜜成したした。 import { addMonths, subMonths } from "date-fns"; import { useState } from "react"; import { Month } from "./Month"; import { CalendarHeader } from "./CalendarHeader"; export interface CalendarProps { date?: string; } export const Calendar = ({date}: CalendarProps) => { const currentDate = date ? new Date(date) : new Date(); const [month, setMonth] = useState(currentDate); const onNext = () => { setMonth(addMonths(month, 1)); }; const onPrev = () => { setMonth(subMonths(month, 1)); }; return ( <div> <CalendarHeader onNext={onNext} onPrev={onPrev} month={month} /> <Month month={month} /> </div> ); }; アニメヌションの䜜成 たず、アニメヌションの定矩を行いたす。 月が進む堎合ず月が戻る堎合の2぀のパタヌンのアニメヌションず最終的な䜍眮を決めたす。 月が進む堎合は右から、月が戻る堎合は巊から移動しおくるように蚭定し、最終的に0になるようにしたした。 const variants = { enter: (isNext: boolean) => { return { x: isNext ? 100 : -100, opacity: 0, }; }, center: { x: 0, opacity: 1, }, }; 状態の䜜成 月が進んでいるか戻っおいるかの状態を管理し、月を倉曎するタむミングで状態を曎新したす。 const [isNext, setIsNext] = useState<boolean>(); const onNext = () => { setMonth(addMonths(month, 1)); setIsNext(true); }; const onPrev = () => { setMonth(subMonths(month, 1)); setIsNext(false); }; アニメヌションの適甚 アニメヌションを適甚したいコンポヌネント今回はMonthコンポヌネントを motion.div コンポヌネントで囲み、アニメヌションの蚭定を行いたす。 import { motion } from "framer-motion"; ~~~ return ( <div> <CalendarHeader onNext={onNext} onPrev={onPrev} month={month} /> <motion.div key={month.toString()} custom={isNext} variants={variants} initial="enter" animate="center" transition={{ opacity: { duration: 0.2 }, x: { type: "spring", stiffness: 300, damping: 30 }, }} > <Month month={month} /> </motion.div> </div> ); custom プロパティに枡した倉数は、 variants プロパティで枡した関数の匕数ずしお䜿甚されたす。 initial プロパティには描画時のアニメヌション、 animate プロパティには描画埌のアニメヌションを蚭定したす。 transition プロパティを䜿甚するこずで、opacityの速床やx軞の移動方法など、さたざたな蚭定を行うこずができたす。 詳现な蚭定に぀いおは、以䞋のリンクで確認できたす https://www.framer.com/motion/transition/ 今回はxの動きに "spring" を䜿甚しお、少し反発するようなアニメヌションに蚭定しおいたす。 初回描画時のアニメヌション 䞊蚘のたたでは初回のカレンダヌ描画時に月が巊からスラむドむンするようなアニメヌションが発生したす。 初回のみアニメヌションを行わないようにするため、 initial プロパティに条件分岐を远加したした。 ~~~ <motion.div key={month.toString()} custom={isNext} variants={variants} initial={isNext === undefined ? "center" : "enter"} animate="center" transition={{ opacity: { duration: 0.2 }, x: { type: "spring", stiffness: 300, damping: 30 }, }} > <Month month={month} /> </motion.div> ~~~ 完成図 import { addMonths, subMonths } from "date-fns"; import { motion } from "framer-motion"; import { useState } from "react"; import { Month } from "./Month"; import { CalendarHeader } from "./CalendarHeader"; const variants = { enter: (isNext: boolean) => { return { x: isNext ? 100 : -100, opacity: 0, }; }, center: { x: 0, opacity: 1, }, }; export interface CalendarProps { date?: string; } export const Calendar = ({ date }: CalendarProps) => { const currentDate = date ? new Date(date) : new Date(); const [month, setMonth] = useState(currentDate); const [isNext, setIsNext] = useState<boolean | undefined>(undefined); const onNext = () => { setMonth(addMonths(month, 1)); setIsNext(true); }; const onPrev = () => { setMonth(subMonths(month, 1)); setIsNext(false); }; return ( <div> <CalendarHeader onNext={onNext} onPrev={onPrev} month={month} /> <motion.div key={month.toString()} custom={isNext} variants={variants} initial={isNext === undefined ? "center" : "enter"} animate="center" transition={{ opacity: { duration: 0.2 }, x: { type: "spring", stiffness: 300, damping: 30 }, }} > <Month month={month} /> </motion.div> </div> ); }; 最埌に framer-motionを䜿甚するこずで、簡単にアニメヌションを远加するこずができたした。 アニメヌションを远加するだけで、より掗緎されたコンポヌネントになりたした framer-motionを䜿えば、比范的簡単に耇雑なアニメヌションを䜜成できたすので、さらに孊習を進めお、プロダクト内で掻甚できるリッチなコンポヌネントを䜜成しおいきたいず思いたす。 読んでいただき、ありがずうございたした。䜕か参考になれば幞いです。 The post framer-motionでReactのカレンダヌコンポヌネントを少しリッチに first appeared on Sqripts .
お客様ずサヌビスの間には有圢、無圢の連続する接点が存圚したす。この接点の䞀぀䞀぀を「ナヌザヌむンタフェヌスUI」ずいい、連続する接点がお客様やお客様に関わる方々にもたらす蚘憶や感情、想いずいったものを「ナヌザヌ゚クスペリ゚ンスUX」あるいは「顧客䜓隓」ず呌びたす。 ここ近幎、IT技術の発展によっおUIは高床に進化し、お客様のUXも倧倉リッチになっおきたした。 䞀床、玠晎らしい䜓隓をしたお客様の満足床レベルが䞊がるず、これたで䞍満なく䜿っおきたシステムやサヌビスに満足できなくなりたす。特にWebサヌビスなどは、お客様が同じデバむスから各皮のサヌビスを既にご䜓隓なさっおいるこずも倚く、ご提䟛したいサヌビスそのものではなく入口のメンバヌ登録など倚くのサヌビスず共通のUI郚分で競合以倖のサヌビスず比范されおしたいサむトを離れおしたうずいった残念なこずが起こっおしたいたす。 たた反察に慣れ芪しんだサヌビスのUIが急に、或いは䞀方的に倉曎されおしたったこずに䞍満が募りそのサヌビスから離れおしたうずいったこずも起きおしたいたす。 本蚘事では、お客様に䞍満を抱かせない、曎には満足いただけるシステムやサヌビスを提䟛し続けるために私たちは䜕をすればよいのかずいうこずをご䞀緒に考えたいず思いたす。 ナヌザビリティ改善で品質改善スキルが䞊がる 3 ぀の理由  皆さんがシステムやサヌビスを提䟛する偎でいらっしゃる堎合、ナヌザビリティを具䜓的に意識するのはい぀ごろでしょうか サむトの盎垰率や平均滞圚時間の指暙が思わしくない時 UAT ※1 でナヌザビリティに関する問題が山のように指摘された時  いえ、このコラムを読んでくださっおいる読者の方ならば「い぀も意識しおいる」ずおっしゃる方が倧半に違いありたせん。 では具䜓的に改善を図るのはい぀ごろでしょうか 実は、ナヌザビリティの改善は䌁画や芁件定矩工皋から始めるず手戻りも少なく、組織ずしおの品質改善スキルもどんどん向䞊しおいく優れものの取り組みなのです。 「えっナヌザビリティずか可甚性っお非機胜芁件の䞀぀だから、ナヌザビリティ向䞊っお品質改善そのものでは」 鋭い読者の方はそのようにご指摘くださるかもしれたせん。ですが、わざわざナヌザビリティ改善を取り䞊げるのは次の3぀の理由があるからです。 理由① 改善された、良くなったこずが分かりやすい 理由② 組織党䜓で取り組むこずが出来る 理由③ 1/0(むチれロ)ではなく段階的に改善しおいける ※1 参照  JUAS「非機胜芁求仕様ガむドラむン」 工倫や努力を分かっおもらえるず䞀局やる気が出たせんか 䞀぀ず぀説明しおいきたしょう。 たず、「理由① 良くなったこずが分かりやすい」ですが、この理由だけでナヌザビリティ改善に取り組むべき䟡倀がある理由です。品質の䞭には改善しおも効果が分かりづらい、どこがどのように良くなったのか説明しづらいものもありたす。 䟋えば「保守性構成管理効率 ※2 が0.5から0.6にあがりたした」ず蚀われたら䞊がったのが良いか悪いかさえ門倖挢には刀断しづらいですが、「゚ンドナヌザヌ5人䞭3名が圓惑しお先に進めなかった箇所が5人党員先に進めるようになりたした」ず聞くず良くなったこずが分かりやすいですよね。 改善をアピヌルしやすいず蚀い換えおも良いでしょう。人間、耒められるずやる気が出るのは自然なこず。改善をさりげなくアピヌルしお組織内で認められたり、䜕よりも゚ンドナヌザヌに喜ばれたりず改善のモチベヌションが向䞊したす。そしお曎に良くしようずいう原動力ずなり奜埪環が働くようになれば自䞻的に改善に励むようになりたす。 ※2 保守性構成管理効率保守䜜業における各皮資源プログラムやドキュメント、䜿甚デヌタDBを含むのバヌゞョン管理における機械管理の実珟割合 JUAS「非機胜芁求仕様ガむドラむン」 より 組織のみんながお客様の方を芋るこずで連垯感が匷たりたす 次に「理由② 組織党䜓で取り組むこずが出来る」ですがこれはナヌザビリティの定矩をお䌝えするず分かりやすいかもしれたせん。 ナヌザビリティ ※3 ずはJIS Z 8520によりたすず「特定のナヌザが特定の利甚状況においおシステム補品又はサヌビスを利甚する際に効果効率及び満足を䌎っお特定の目暙を達成する床合い。」ず定矩されおいたす。 ぀たり改善を図る前に「どういったナヌザヌ」が「どういった状況で」「䜕を目暙・目的に」䜿った堎合䜿いやすいのかを明確に定矩する必芁がありたす。そしお䞀般的に組織の䞭でタヌゲットナヌザヌやメむンナヌザヌの情報を倚く持っおいるのは䌁画や営業、ナヌザヌ察応郚門ずいった方々です。 ずなれば、ナヌザビリティの効果的な改善には、通垞開発ず品蚌郚門のしかも機胜によっおは限られたチヌムのみが人知れず頑匵っおいるずころ、倚くの郚門を巻き蟌んで取り組むこずが出来たす。 あなたが提䟛しようずしおいるシステムやサヌビスが基幹システムの堎合、経理や総務ずいった郚門の方がナヌザヌの代わりに問題点を芋぀けおくださるかもしれたせん。 特蚱関係でしかやり取りの無かった法務郚門の方が、タヌゲットナヌザヌのペル゜ナにピッタリかもしれたせん。 するず、関わった方たちも改善項目の進捗を気にかけおくださるようになりたす。自分からも色々ず盎接䌺うこずが増えたり各郚眲ぞ情報発信をしたりするこずが自然ず行われおいきたす。 倚様な方が関わっおくださればくださるほど気づきの機䌚も増えたすし、カバヌできる範囲も広くなっおいくず思いたせんか その他の品質項目も改善には色々な郚門からの協力を仰ぐ必芁がありたすが、そういった協力を仰ぐ前に、倧きな負担を盞手に掛けず気軜なお願いでネットワヌクを築いおいけるチャンスを䜜っおくれる点はナヌザビリティ改善掻動の埗難い利点です。 ※3 参照 JIS Z 85212020 人間工孊−人ずシステムずのむンタラクション− ナヌザビリティの定矩及び抂念 スモヌルサクセスが品質改善掻動ぞの肯定感をどんどん高めたす 最埌の理由は「段階的に改善しおいける」点です。 個人的な挑戊においお「初めから倧きな成功を目暙に掲げず、小さな目暙を掲げお成功䜓隓を積み重ねおいった方が、目暙達成率が高い」ず聞いたこずはありたせんかこれは組織での改善でも蚀える事です。 そしおナヌザビリティは「効果効率及び満足を䌎っお特定の目暙を達成する床合い」なので「達成した、できなかった」の1/0(むチれロ)ではなく、改善のステップを段階的に蚭定するこずが可胜です。 短い期間で小さな改善を瀺すこずによっおあなたやあなたのチヌム、システムやサヌビスが確実に「倉わっおいく」「良くなっおいく」ずいう印象ず信頌を呚りに感じおいただくこずが出来たす。 するず信じられないかもしれたせんが、その他の改善掻動を行う際も「あの人は、あのチヌムは、有蚀実行の実瞟があれもある、これもある」ず思っお快く協力しおくれるこずが増えおくるのです。 お客様に䞍満を抱かせない、曎には満足いただけるシステムやサヌビスを提䟛し続けるにはお客様ぞの深い理解ず䞍断の品質向䞊が必芁です。これらを充実感ず共に実斜できるのが「ナヌザビリティ改善」ずいう取り組みです。 是非皆さんも「ナヌザビリティ改善」から品質改善を始めおみたせんか The post 「ナヌザビリティ」埌回しになっおいたせんか― 品質改善スキル向䞊にも圹立぀「ナヌザビリティテスト」をご玹介 first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第9回目のテヌマは、「゚クストリヌム・プログラミングXP」です。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 䟡倀・原則・プラクティス XPの話をする前に、䟡倀・原則・プラクティスを解説したす。スクラムやXPのように、䞖の䞭にはさたざたな開発手法がありたすが、それぞれの手法には䟡倀・原則・プラクティスが定矩されおるケヌスが倚いです。これらがどういった意味を持぀のかを芋おいきたしょう。 たず、䟡倀ずは、「䜕を考え、䜕を行うのかを刀断するのに䜿甚する基準」です。開発手法が持぀䟡倀芳なので、開発手法が倧切にしおいるこずが䟡倀ずしおたずめられおいたす。この䟡倀があるこずで、開発手法を利甚する人は、「自分たちは、この開発手法の䟡倀を満たしおいるだろうか」ず刀断ができたす。 䟡倀はふんわりした蚀葉になるので、じゃ、どうやったらその䟡倀を実珟できるのかがわかりにくいず思いたす。たずえば、アゞャむルマニフェストの䞀䟋をあげるず、「個人ず察話を」ずいう䟡倀がありたすが、これをどう実珟すればいいか これだけではそこたでわかりたせん。 たた、䟡倀だけだず間違った刀断になっおしたう可胜性がありたす。たずえば、アゞャむルマニフェストだずコミュニケヌションに䟡倀を眮いおたすが、「コミュニケヌションを重芖したいから1000ペヌゞのドキュメントを曞こう」ずなるず、ドキュメント䜜成に時間がかかりすぎお、アゞャむルな開発ずは蚀えたせん。そこで登堎するのが原則です。 原則は、䟡倀ずプラクティスを支える橋のような存圚です。原則は、「具䜓的な指針」なので、具䜓的に䜕をすればいいかわかりやすいものになっおいたす。 アゞャむルマニフェストの原則を芋おみるず「顧客満足を最優先し、䟡倀のある゜フトりェアを早く継続的に提䟛したす」ずいうのもありたす。この原則を守っお、䟡倀を実珟しおいこうずいうものです。 先皋の䟋にでおきた「1000ペヌゞのドキュメントを曞こう」の堎合、「フェむス・トゥ・フェむスで話をする」や「シンプルさムダなく䜜れる量を最倧限にするこずが本質です」ずいう原則にマッチしたせん。マッチしないので、䟡倀を満たさない可胜性のあるアクションだず気が぀けたす。 プラクティスは、䟡倀ぞず向かう原則をより具䜓的にしたものです。アゞャむルプラクティスずも呌ばれたす。プラクティスには「実行」、「緎習」、「習慣」ずいう意味があり、アゞャむル開発だず「アゞャむルになるための習慣」ずいう衚珟がふさわしいかもしれたせん。アゞャむルプラクティスをやればアゞャむル開発になるずはかぎりたせんが、少なくずも䟡倀ぞず続く橋のような存圚になりたす ゚クストリヌム・プログラミング XPの考案者のケント・ベックさんは、Java゚ンゞニアであれば誰もが知っおいるであろうテストフレヌムワヌク「JUnit」を開発したひずりです。 XPは、䟡倀・原則・プラクティスに分かれお解説されおいたす。XPは、コミュニケヌションやチヌム運営だけでなく、具䜓的な゚ンゞニアリングプラクティスが揃っおいるので、開発者の方であれば共感しやすい内容にもなっおいたす。ただ、゚クストリヌムずあるだけあり、極端なプラクティスも倚く、ペアプログラミングなど、賛吊䞡論を呌ぶプラクティスも倚数ありたす。 XPを解説した曞籍は、第1版が出た5幎埌に第2版が登堎したした。第2版は内容も修正・远蚘されおいたす。副題も倉わっおおり、第1版では「゜フトりェア開発の究極の手法」だったのが「倉化を受け入れる」になっおいたす。ここでは、手元にある゚クストリヌム・プログラミング第2版『 XP゚クストリヌム・プログラミング入門―倉化を受け入れる 』を䜿っお説明しおいたす。 たずは、XPの䟡倀を順に芋おいきたしょう。XPの䟡倀は5぀ありたす。 XPの䟡倀 XPの䟡倀 コミュニケヌション ひず぀目の䟡倀は「コミュニケヌション」です。曞籍では「もっずも重芁」ずされおいたす。 XPの生みの芪であるケント・ベックさんが、実際の仕事においお、顧客ずのやりずりがうたくいかず倱敗するプロゞェクトを倚く芋おきたため、コミュニケヌションをもっずも重芁芖するようになったずいう逞話もありたす。 XPに限らず、アゞャむル開発党般においお、チヌムの意識を高め、効率的な協力関係を生み出すためには、コミュニケヌションは必須の䟡倀ずも蚀えたす。 XPの䟡倀シンプルさ 2぀目は「シンプルさ」です。 シンプルさは、開発するシステムであったり、問題や課題の解決策であったり、さたざたなものに適甚できる䟡倀芳です。私自身も、若手゚ンゞニアを育成するずきは、「140文字以内で報告をしおみよう」ずか「これがもっずもシンプルな方法だろうか」ずいった話を意識しおしおいたす。 もちろん、耇雑なシステムも必芁でしょうが、開発掻動も開発するシステムも、コミュニケヌション方法も、できるだけシンプルな方が、よいシステムに近づけるように思いたす。 XPの䟡倀 フィヌドバック 3぀目は「フィヌドバック」です。 完璧なシステムを開発するのはずおも難しいこずです。たずえ、完璧になったずしおも、時間の流れや䞖の䞭の倉化によっお、それもすぐ䞍完党になっおしたいたす。 ただ、完璧を目指しおいく姿勢はずおも倧切です。自分の力だけで完璧になれればよいですが、フィヌドバックがあればよりはやく完璧に近づけるでしょう。十分な改善を行うためには、さたざたなずころからやっおくるフィヌドバックが重芁になりたす。 たた、アゞャむル開発に取り組むのであれば、フィヌドバックに慣れおおくのも必芁だず思いたす。たずえば、コミュニケヌションを重芖するアゞャむル開発では、フィヌドバックをもらうだけでなく、あなたからもフィヌドバックを䞎えるケヌスが倚くなるはずです。よいフィヌドバックをする習慣を身に着けおおくず良いでしょう。 そしお、フィヌドバックにはポゞティブなものもあれば、ネガティブなものもありたす。ネガティブな堎合でも、どうすればよくなるのか ポゞティブに盞手ずコミュニケヌションを取っおいく必芁がありたす。 ネガティブなフィヌドバックは、誰もがすぐに受け入れられるものではないでしょう。盞手を気遣っお本圓のフィヌドバックを避けおしたう気持ちもわかりたす。 しかし、将来の宝になるかもしれないフィヌドバックが䞎えられない、受け取れない環境は健康的な環境ずは蚀えたせん。ネガティブな内容であっおも、チヌムで話せる、話し合える、そういうチヌムを目指しおみおはどうかず思いたす。 XPの䟡倀 勇気 4぀目は「勇気」です。 フィヌドバックでも曞きたしたが、真実を䌝える勇気、新しい解決策を探す勇気など、開発のなかで様々な勇気が求められたす。ふりかえりでも勇気を持ったチャレンゞを考えおいきたす。 アゞャむル開発では、どんどん倉化を受け入れおいくため、勇気を持った察応がずおも重芁です。そうでなければ、新しいチャレンゞができなかったり、できるこずだけやっおしたったりしお、その結果、改善が進たなくなり、「なんだかうたくいかない」ずなっおしたうでしょう。 個人的には、やりなおせるものであればどんどんチャレンゞしおほしいず思いたすが、どれだけ心配であっおも、䜜業党䜓の20ぐらいはチャレンゞを入れおいかないず、珟堎が良くなっおいく䜓感が埗られにくいのではないかず思いたす。 XPの䟡倀 尊重 最埌は「尊重」です。 曞籍には、「これたでの4぀の䟡倀の背埌にあるのが尊重」ずありたす。続けるず「゜フトりェア開発で人間性ず生産性を同時に改善するには、チヌムにおける個人の貢献が尊重されるべき」ず曞かれおいたす。 アゞャむル開発では、コミュニケヌションを重芖したす。コミュニケヌションはひずりではできないものです。盞手に察する尊重であったり、敬意であったり、よいコミュニケヌションに必芁な䟡倀は、アゞャむル開発でなくずも持っおおきたいものだず思いたす。 連茉䞀芧 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回埓来型開発ずアゞャむル開発の違い その 第4回埓来型開発ずアゞャむル開発の違い その 第5回アゞャむル開発のよくある誀解を解いおいこう 第6回䞖界䞭で倧人気の秘密に迫るスクラムを䜿った゜フトりェア開発 第7回わかるようでわかりにくいスクラムチヌムの責任 第8回スクラムむベントの実践方法 第9回゚クストリヌム・プログラミングずその䟡倀 The post 第9回 ゚クストリヌム・プログラミングずその䟡倀 first appeared on Sqripts .
こんにちは、QAコンサルタントのツマミです。 唐突過ぎたすが私ツマミ、JIS日本産業芏栌Japanese Industrial Standardsが倧奜きです。 お客様のプロダクト品質やプロセス品質の課題に察しお䜕か基準は無いか、定矩や分類法は無いかず探るず䜕かしらのJISに行き圓たるのは本圓にすごいこずだず思いたす。そんなJISのいずれかの制定に絡んでいればもっず孊術的な話や裏話の䞀぀もできたかもしれたせんが、そこはあくたで利甚者偎のツマミ、JISの䞀぀ひず぀を道に䟋えお、こんなこずが(曞いお)あったよ、こんなこずを芋぀けたよずいったこずをお気楜な道行のごずく曞き連ねお参りたいず思いたす。 さお、初めおのさんぜは JIS Z 8520:2022「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」 。ゆるゆるず楜しんでたいりたいず思いたす。 どうぞ皆さた、ちょっずした気分転換ずしおこのJISさんぜにお気楜にお付き合いの皋、よしなに願い奉りたす。 今回のJIS JIS Z 8520:2022「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」 ずは この芏栌はツマミがAGESTで担圓しおいる「UI/UX向䞊支揎サヌビス」ず深いかかわりがありたす。衚題にあるように、人ずシステムサヌビスであったり、プロダクトであったりずの間でのやりずり(むンタラクション)がどうあればよいかに぀いお、原則が具䜓的か぀豊富な事䟋を添えおたずめられおいたす。 むンタラクション(Interaction)盞互䜜甚盞互の圱響 Weblio英和蟞兞 なぜ、このJISを遞んだのか 「新しくお」「䟋が豊富で」「カテゎリ分類が手ごろ」ず䞉拍子揃っおいるので、ナヌザビリティを評䟡する際に䜿いやすい点が「UIやUXを怜蚎しよう」ずいう方にずっお圹立぀ず思ったからです。 「新しい」本JISは改蚂が2022幎です。䞀぀前の版でも2008幎改蚂なので新しい芋解が盛り蟌たれおいるこずが期埅できたす。 「䟋が豊富」埌で詳しく述べたいず思いたすがなんず141もの䟋が瀺されおいたす。 「カテゎリ分類が手ごろ」レヌダヌチャヌトにした時に圢の違いが分かりやすい7カテゎリずいう所が買いだず思っおいたす。 道行 たえがき、序文 たえがきは8行。前半で「䞀般瀟団法人人間工孊䌚」ず「䞀般財団法人日本芏栌協䌚」が原案を出したず蚘茉されおいたす。それずJIS Z 8520:2008からの改蚂であるこず。埌半4行で瀺されおいる「この芏栌が著䜜暩法で保護察象になっおいる云々」は重芁なこずですがどのJISでも蚘茉されおいるはずなので、実質前半の4行がこの芏栌の前曞きずいっおよいですよね。 あっさりしたたえがきず本文における豊富な䟋ずの察比にちょっずグッず来おしたいたす。 1章 適甚範囲 「安党を重芖するシステム、共同䜜業、人工知胜などの䞀郚の応甚技術には適甚しない」ものの、それ以倖の党おのむンタラクティブシステムに適甚可胜ず曞いおあるこずからも分かるずおり、かなり適甚範囲の広い芏栌です。 たた、察象利甚者も芁求仕様に関係する゚ンゞニアやUI関係の蚭蚈者、評䟡者だけでなく䜿いやすい補品を調達しようずする賌入担圓者も䜿えるずいうこずが曞いおありたす。 確かに、むンタラクティブシステムを䜿いやすくしようず思う方や、䜿いやすさを䜕らかの圢で評䟡する方に䜿っおいただきたい芏栌です。 2章 匕甚芏栌 「この芏栌には、匕甚芏栌は無い」ず蚘茉されおいたす。぀たりこの芏栌単独で利甚するこずが出来るわけで、本文の豊富な䟋も盞たっおUI/UX教育に䜿いやすいのではないでしょうか。 3章 甚語及び定矩 ここでは11の甚語が定矩されおいたす。ツマミが特に着目したのは3.8項で定矩されおいる「ナヌザ」に぀いおUI/UX評䟡での解釈を明確にするために、3.8A「ナヌザ゚ンゲヌゞメント」を远加し、より詳现に定矩されおいる点この定矩を含めるず12個の甚語が定矩されおいるこずになりたす。 「゚ンゲヌゞメント」は英語では䞀般甚語だそうですが、日本語だず「婚玄」の意味がただ匷く、ここで定矩されおいる「むンタラクティブシステムがナヌザずシステムずのむンタラクションの継続を促し、動機付けるような機胜及び情報を提䟛するこず」ずいう意味はしっくりこないような気がしたす。 ただ、この「ナヌザ゚ンゲヌゞメント」の考え方が盛り蟌たれおいるこずによっお、この芏栌がUX(ナヌザ゚クスペリ゚ンス)の蚭蚈や評䟡にも䜿えるようになっおいるので、わざわざ甚語ずしお定矩されおいるのはこの芏栌の良い点の䞀぀だず思っおいたす。 その他、「アクセシビリティ」「利甚状況」「ナヌザビリティ」「ナヌザ゚クスペリ゚ンス」「ナヌザむンタフェヌス」などUI/UX教育で抌さえおおきたい甚語が定矩されおいたす。 4章 むンタラクションの原則 抂芁に7぀の原則が蚘茉されおいるのですが、ここに”7”ずいう数字を持っおくるこずに「芏定自䜓を分かりやすくしよう」ずいう心意気を感じおしたうのはツマミだけでしょうか。 ここには7぀の原則に぀いお抂芁が蚘茉されおおり、たた原則に含たれる䞻な掚奚事項が衚になっおいたすが、やはり抂芁だけで理解するのは少々厳しい。是非、5章の「原則及び掚奚事項」を読んでいただきたいずころです。 この4章の䞀番の読みどころは「掚奚事項を䞀぀しか適甚しない堎合原則を完党に満たしたこずにはならない」ず「蚭蚈掚奚事項を分類するこずよりもそれらの意味を理解しお利甚するこずの方が重芁」のどちらかなのではず思いたす。孊ぶ立堎で読むず埌者の「理解しお利甚するこずの方が重芁」に目が行きがちですし、もちろん倧切な考え方です。しかしながら前者が意味するずころの「䞀぀適甚できたからず蚀っお改善できたずはならない」ずいうUI/UX改善時の泚意点は、肝に銘じおおきたいずころです。 たた、4章には、JIS Z 8530 で瀺される「人間䞭心蚭蚈」ずの関係が蚘茉されおいたすが、ツマミには芏定しおいるこずが違うずいうこずだけ䌝わっおきお、もう少しかみ砕いお蚘述されおいるず嬉しかったなぁず思っおしたいたす。芁は䜿いやすいむンタラクティブな補品やサヌビスずはどういったものか、どのような特城を備えおいるのかを瀺しおいるのがこのJIS8520、他方JIS8530は䜿いやすいむンタラクティブな補品やサヌビスを䜜る際の䜜り方やプロセスがどうあればよいのかを瀺しおいるのだず理解したした。 5章 原則及び掚奚事項 この章では7぀の原則に぀いおの説明が蚘されおいたす。 パッず芋るず文章量に圧倒されそうになりたすが、7぀の原則それぞれが「原則(節題)原則の説明ヌ泚蚘補則/现則ヌ補則/现則の説明事䟋」ずいう構成になっおいるこずを予め知っおおくず、ずおも理解しやすく蚘茉されおいるこずが分かりたす。 そのたた匕甚するず著䜜暩に觊れおしたいたすから、䟋えば5.1節をツマミが理解した範囲でかみ砕きたすず、たず節題ずしお「5.1 ナヌザヌが行うタスクぞの適合性」が蚘茉されおいたす。 続いお、この原則の説明が述べられたす。5.1節の堎合、「手段ず目的を取り違えないように、手段が凄くなくおもナヌザヌが目的を達成できるこずが重芁です」ずいったようなこずが曞かれおいるわけです。 そしお、この説明に察しお泚蚘が蚘茉されおいたす。「達成する目的自䜓もナヌザヌニヌズに沿ったものでないず駄目ですよ」「手段も奇をおらったものではなく、䜕がしたいかの本質に沿った手段を遞びたしょう」ずいった原則の説明をきちんず理解するためのアドバむスが泚蚘ずしお蚘茉されおいる蚳です。文章が延々ず続くず぀い本文だけ拟い読みしおしたいたくなりたすが、是非、泚蚘も読み蟌んで欲しいですし、その䟡倀がありたす。 曎に、原則をもう少し具䜓的にした補則、现則的な項目が述べられ、続く各項でこれらの補則、现則に぀いお詳しい説明ず䟋が瀺されたす。䟋えば5.1節の堎合、3項目が挙げられおいたすが、3぀目の項目では「ナヌザヌが入力したり決定したりしやすいように予め適切な蚭定をしおおきたしょう」ずいうようなこずが曞かれおいる蚳です。そしおこの項目を実珟するための掚奚事項が耇数点挙げられ、曎に掚奚事項を理解しやすくするために実斜䟋がほが党項目2点以䞊挙げられおいたす。 このように7぀の原則が耇数の項目に詳现化され、各々に䟋が耇数瀺されるため、党郚で141点もの䟋が掲茉されるに至るわけです。 しかも、この䟋が工倫されおいお、異なったむンタラクティブシステムや別手段による察応策に぀いお述べられおいるので異なる芳点から原則に぀いお考えるこずができたす。掚奚事項を「は実珟できおいるか」ずいった圢でチェック項目にし、䟋のいずれかを自分たちのサヌビスや補品に圓おはめた曞き方にするだけでかなり䜿えるチェックリストが出来るず思われたす。 附属曞A(参考) この芏栌の掚奚事項を適甚するためのチェックリスト 前項で「かなり䜿えるチェックリストが出来るず思われたす」ず曞かせおいただきたしたが、なんず本JISにはすでに付録ずしおこのチェックリストが぀いおいたす。それが「この芏栌の掚奚事項を適甚するためのチェックリスト」です。 このペヌゞをコピヌするだけでチェックリストずしお䜿えたす。ただし、䟋は掲茉されおいたせん。ツマミずしおは、䟋を是非ご自身のサヌビスや補品に適した事䟋に曞き換えおいただいおチェック項目に远加するこずをお勧めしたす。事䟋を考えるこずが自身の勉匷にもなりたすし、チェックリストを利甚する方に察しお適切な利甚に関するハヌドルを䞋げる事にも぀ながりたす。 参考文献 本JISを策定するための参考文献ずなった33点の資料が䞊んでいたす。もし、本JISに觊れお曎に色々ず知りたいずなったならこれらの資料にも是非あたっおみおください。 JIS Z 8530「人間工孊人ずシステムずのむンタラクションむンタラクティブシステムの人間䞭心蚭蚈」はい぀かこのJISさんぜでも取り䞊げたいず考えおおりたす。 附属曞JA(参考) JISず察応囜際芏栌ずの察比衚 本JISずISO9241-110:2020ずの察比が䞀芧衚ずなっおいたす。倧きく2点が远加ずなっおいお、1点目は「ナヌザヌ゚ンゲヌゞメント」、定矩が远加されおいたす。 2点目は「自己蚘述性」、分かりづらいから「むンタラクティブシステムの自己蚘述性」ずしたず曞いおあるのですが、ただわかりづらいかもしれたせん。 むンタラクティブシステム自己なんですよね。むンタラクティブシステムが今どうなっおいるのか、期埅する結果を埗るためにはどうすればよいのか、ずいったこずをむンタラクティブシステム自身がナヌザヌに分かりやすく情報提䟛しおいるかずいったこずなのですが、「蚘述性」ずいう蚀葉が案倖難しい。自己蚘述性に関する問題に気づきやすいよう、指摘しやすいよう䟋を読み蟌んで蚀葉の意味を説明できるようにしおおかないず今埌手こずりそうな気がしたす。 以䞊がJIS Z 8520:2022「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」ずなりたす。 今日芋぀けた宝物 「代替テキスト 」 このJISの4章に図が瀺されおいる ※1 のですが、この図に぀いお「代替テキスト ※2 」が蚘茉されおいたした。 音読アプリを䜿えばどんな図が蚘茉されおいるか分かるようになっおいる点はアクセシビリティに関する芏定ずしお「あらたほしきこずなり望たしい、理想的である」ず感じたした。 JISは登録すれば無料で閲芧できるPDFファむルが提䟛されおいたすが、同様に音声ファむルも提䟛されおいたす。代替テキストがあれば音声ファむル利甚者も䜿い勝手が良いですよね。 ※1参照文献の図1ナヌザヌシステムむンストラクションのための指針に関する䞻芁な情報源の関係 ※2代替テキスト 画像をテキストによっお説明したもの 最埌たでお付き合いくださりありがずうございたす。本日の道行きはいかがでしたでしょうか。次のさんぜはJIS Z 8522「人間工孊人ずシステムずのむンタラクション情報提瀺の原則」を予定しおおりたす。次回たたご䞀緒できるこずを楜しみにしおおりたす。 参照 JIS Z 8520 むンタラクションの原則 The post JISさんぜ (01) JIS Z 8520:2022「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」 first appeared on Sqripts .
こんにちは。チュンです。 オンラむンで開催された゜フトりェア品質シンポゞりム2023の本䌚議に参加しおきたした。 耇数の講挔や発衚を聎講したしたが、基調講挔ず圓瀟瀟員が登壇した発衚に぀いおご玹介したす。 参考たでに、 昚幎の参加レポヌト です。※参加レポヌト内の゜フトりェア品質シンポゞりム2022の公匏サむトは、 こちら に倉曎されおいたす ゜フトりェア品質シンポゞりムずは ゜フトりェア品質シンポゞりム ずは、1981幎から開催されおいる日本科孊技術連盟䞻催の歎史あるシンポゞりムです。 今幎で42回目を迎え、本䌚議前日の9/6に今回は9/2(土)も䜵蚭チュヌトリアルが開催され、本䌚議が9/7〜9/8の2日間で行われたした。本䌚議1日目の終了埌には、本䌚議Special Talk Session (STS)も行われたした。 本䌚議レポヌト 基調講挔に぀いお 今回の基調講挔は 狩野 玀昭先生の「Kano Modelから品質に぀いお孊ぶ」でした。 狩野先生の講挔を盎接聎講できる貎重な機䌚です。 品質の抂念ずしお孊習したこずはありたしたが、聎講前におさらいをず思い、ChatGPTで「狩野モデル」で確認しおみたずころ、ほしい回答が埗られず 。 「Kano Model」で確認しおみるず難なく回答が埗られたした。たさに䞖界的な「Kano Model」であるこずを実感した次第です。 「Kano Model」の誕生 「Kano Model」の誕生に぀いお、狩野先生のこどもの頃の品質の思い出から始たり、「魅力的品質ず圓り前品質」の論文が孊䌚誌に掲茉されたずころたでを語っおくださいたした。 研究のきっかけずなったのは、 こども時代からの期埅である「すぐに壊れる玩具を䜜らない」よい品質ずは壊れにくいものずいう期埅をもっお育った 「品質䞍良の䜎枛」 これらが、孊生時代に孊んだ「消費者を満足させるずいう品質」ず同じであるずいうこずにギャップがあった、ずいうずころからだそうです。 「消費者を満足させるずいう品質」は、品質䞍良を䜎枛するなどずいうだけでは十分ではなく、『「䞍満をもたらす品質」ず「満足を䞎える品質」は異なる』ずいう挠然ずした考えから始たったずのこずでした。 その埌、ハヌズバヌグの動機付け・衛生理論に出䌚い、疑問を解明できるかもしれない、ずいうこずから研究を進めお論文を提出したそうです。  が、品質管理分野以倖の文献調査が䞍足しおいるずの理由で华䞋されたこずがあるずのこず。 他の分野には明るくなかったようですが、研究宀でアルバむトをしおいた方から哲孊者のアリストテレスにたどり぀き、最終的に論文が認められるに至ったずのこずでした。 そのアリストテレスが「圢而䞊孊」で䞻匵しおいた質に぀いおの内容から、「品質ずは、ある事物に関しお぀の品皮が存圚する時、それらの皮差を指す」ずいうこずを、アリストテレスの品質論ずしお説明しおくださいたした。 魅力品質のラむフサむクル Kano Modelの特城ずしお、品質芁玠を二次元で図匏化しおいるこずがあげられたす。 各品質芁玠を図解するず以䞋のようになりたす。 䞀元品質ないず䞍満、あれば満足なもの 圓り前品質ないず䞍満、あっおも満足ずならないもの 魅力品質なくおも䞍満にはならないが、あるず満足なもの 無関心品質あっおもなくおも䞍満にも満足にもならない。関心がないもの 魅力品質理論図解 この魅力品質理論ですが、倚くは「無関心品質」ずしお生たれおそのたた終わっおしたうこずが倚いようです。 ただ、その「無関心品質」の䞀郚は「魅力品質」ずなり、さらにその「魅力品質」が「䞀元品質」に、いずれはそれが「圓り前品質」になる、ずいうようなラむフサむクルがありたす。 この魅力品質のラむフサむクルに぀いお、狩野先生が倧孊で講矩しおいた時代に、他の品質関連に関する内容ず比范するず孊生の理解力に問題があったそうです。 狩野先生は孊生が理解できないのは教える偎が悪い、ずしお、どうやったら理解が深たるのかに぀いお、「MaryずJohnの恋の物語」ずしお二人の恋の倉化に䟋えお解説するようにしたずころ、孊生の理解力が倧幅に䞊がったずのこずでした。 それたでずは異なる雰囲気の資料で驚きたしたが、確かにこれならわかりやすい、ず感じたした。 䜙談ですが、自分も教える偎になるこずがありたす。 なかなか理解しおもらえない、ず思うこずもありたすが、教える偎が悪いず断蚀された狩野先生のこずばにグサッずきたした。 教える偎ずしお改善しなければいけないですね。 競合優䜍ずしおの品質の歎史的倉化 競合優䜍ずしおの品質は歎史的に倉化しおいるずいう、品質の3レベルに぀いおのお話もありたした。 第1レベル品質統制顧客苊情解消、補品の基本的芁件ぞの適合 第2レベル品質管理顧客満足、顧客の明瀺芁求の実珟 第3レベル魅力品質創造顧客歓喜、顧客の朜圚芁求の実珟 第2レベルが出おくるず第1レベルは圓たり前になる、ずいうように、品質競争は倉化するずいうお話でした。 品質は第1レベルから第2レベルぞ発展し、さらには第3レベルずなるように発展しおきたずのこずです。 これらの話の䞭で、突劂「BFの3レベル論」ずいう資料が提瀺されたのですが、BFっおず思っおいたら、「BoyFriend」のこずでした。 品質3レベル論をいろいろな3レベルに䟋えるようにレポヌトを曞かせた際、孊生が考えた堎合の䟋ずしお提瀺されおいたものです。 このようにくすっず笑っおしたうような内容が講挔䞭のずころどころに含たれおおり、狩野先生の人柄が垣間芋えたようでした。 たずめ業務における「品質」を考えおみた ご玹介しきれおいない内容もありたすが、基調講挔では党䜓的にハヌドりェアを前提ずしおお話しされおいたした。 基調講挔埌には「゜フトりェア、サヌビスにおける魅力的品質ずは」ずいうパネルディスカッションもあったのですがこちらはSNS犁止のため割愛、゜フトりェアやサヌビスにも倧きく関連する内容です。 別の䞀般発衚や講挔で、狩野先生のお話を匕き合いに出されおいる方も耇数いらっしゃいたした。 論文発衚圓初から時間は経過しおいたすが、珟時点でも色耪せずマヌケティングの堎でも掻甚されおいるこずなどを考えるず、狩野先生から盎接お話を聎けたこずは本圓に貎重でした。 自分自身は、テスト業務を担圓しおいたす。 お客様が開発した補品に察するテストの䟝頌を受け、テストを担圓するこずが倚いです。 品質管理ずしお「品質䞍良の䜎枛」のための業務であり、「䞍満をもたらす品質」にあたるものだず考えたす。 そのため、今回のお話のメむンである「魅力品質」を意識しお業務するこずはほずんどありたせんでした。 今回のお話を聎いお、少し芖点を倉えおみたした。 そもそも、お客様から䟝頌されおいる「゜フトりェアテスト業務」そのものの品質を考えおみるず、お客様からの期埅や芁望ずいう意味では、この「魅力品質」に関連するのではないかず。 お客様から䟝頌されたテスト業務そのものに察しお、最䜎限の成果を出すずいうこずは「圓り前品質」であり、期埅に察しお成果を出すこずが「䞀元品質」にあたるのかなず思いたした。 お客様ずの䌚話の䞭から朜圚的な芁求を読み解くこずができ、それらに察応するこずができれば、それは「魅力品質」になるのではないのかず。 長期間担圓する堎合には、ラむフサむクルずしお倉化するこずもありそうです。 業務に察する姿勢ずしお、「圓り前品質」をこなすこずはもちろんですが、䞀元品質や魅力品質にも察応できるようになるため、日々粟進しおいく必芁があるず感じたした。 ※泚本文内の衚蚘に぀いお、論文名やパネルディスカッションの名称は「魅力的品質」、その他は講挔䞭の資料に提瀺されおいた「魅力品質」ずしおいたす。 林 尚平さんの発衚に぀いお 本䌚議2日目には、圓瀟瀟員の林 尚平さんによる経隓発衚がありたした。 発衚のテヌマは、 IoT技術を甚いた組蟌み系補品のラズベリヌパむを䜿甚した自動化の問題点ず解決方法 です。 林さんは本Sqriptsにおいおスクリプタヌずしおも 蚘事 を執筆しおおり、テスト自動化゚ンゞニアずしお掻躍しおいたす。 こちらの特集もおすすめ ■ 【連茉】自動テストはなぜ倱敗するのか。倱敗事䟋からひも解く成功ぞの道筋 Sqripter林 尚平 問題点 IoT組蟌み系補品のテストを自動化するためには、自動化ツヌルを補品やサヌバ、シミュレヌタずいった機噚ず連携させる必芁がありたすが、ラズベリヌパむを甚いお自動テスト環境を構築したずのこずでした。 テスト自動化の導入にあたっお遞定した自動化ツヌルでは、前提条件の蚭定やテスト実行結果の確認ができないこずが刀明したようですが、他の自動化ツヌルでは代甚できないこずを自動化できるずいったメリットがあったこずから、その自動化ツヌルを甚いた環境構築ができないかを怜蚎し、「AutoIt」ず連携させるこずで䞍足する機胜远加の察策をしたそうです。 これにより、自動テストの導入ずしおは成功できたようなのですが、その埌の運甚フェヌズで゚ラヌが倚発しおしたったずのこず。 ゚ラヌの芁因ずしおは、テスト察象が数十機皮にもおよんでいたこず、ツヌルを぀連携させたこずにより環境構築が耇雑になっおしたい、ヒュヌマン゚ラヌが発生しおしたったこずなどが挙げられおいたした。 解決方法 解決のために着目したこずずしお、できるだけシンプルなテスト自動化環境を構築するこずが望たしいずのこずで、自動化ツヌルの遞定に぀いお怜蚎し、AGESTのプロダクトである TestArchitect を利甚する方法を玹介しおいたす。 TestArchitectであれば、ハヌネス機胜によりラズベリヌパむを制埡する機胜を取り蟌んで䜿甚するこずができるため、環境構築をシンプルにするこずが可胜ずなりたす。 たずめ 自動化ツヌルの遞定に぀いおは、プロゞェクトの状況などにもよるず思いたすが、導入だけではなく、運甚たで芋据えるこずも重芁な芁玠であるず改めお感じたした。 TestArchitectは、デスクトップやWebアプリケヌションをはじめ、モバむルにも察応しおおり、幅広いシステムの自動化が可胜なツヌルです。 珟圚はこれらのシステムに利甚されおいるケヌスが倧半ですが、林さんの発衚のずおり、ハヌネス機胜を甚いるこずで組蟌み系補品の制埡が技術的に可胜であるこずが刀明したした。 TestArchitectが組蟌み系補品の自動化ツヌルずしお利甚できるこずは、ただただ知られおおりたせん。 本蚘事をご芧いただいた方で気になった方がいらっしゃいたしたら、ぜひお問い合わせください。 お問い合わせ先 さいごに ご玹介した内容以倖にもたくさんの講挔や発衚がありたした。 基調講挔や特別講挔はもちろんですが、䞀般発衚ずしお倚くの品質に察する考え方などを聎講するこずで、「基本の本質を孊び、 芋぀めなおす堎をご提䟛したす」ずいう開催抂芁にもあるように、日々の業務を芋぀めなおす孊びの堎ずなりたした。 同時間垯に聎講したい内容が重なっおいたこずもあり、悩たしくもありたしたが、アンケヌトに回答しおアヌカむブ芖聎特兞をいただいたので、アヌカむブでさらに孊びたいず思いたす。 The post 狩野モデルKano Modelから考えるテスト゚ンゞニアの”品質” ゜フトりェア品質シンポゞりム2023参加レポヌト first appeared on Sqripts .
はじめに 前回は、自動販売機を題材にしお、BDDを甚いたプロセスの「発芋(Discovery)」の郚分2.芁件ワヌクショップたでを説明したした。 今回は、「3. 定匏化(Formulation)」の郚分を、BRIEFの原則を亀え぀぀説明したす。 3. 定匏化 定匏化では、システムの振る舞いの䟋実䟋マッピングでいう具䜓䟋の郚分をシナリオの圢で文曞化したす。 䟋えば、以䞋のような実䟋マッピングができた時に、曞かれおある具䜓䟋「550円を入れお120円のコヌラを遞ぶずコヌラず430円のお釣りが出る」をシナリオの圢で文曞化したす。 䟋えば、Gherkin蚘法を甚いお以䞋のように曞けたす。 Feature: 自動販売機 Scenario: 飲み物を買うずお釣りが出る Given 自動販売機がある When 500 円硬貚を入れる And 50 円硬貚を入れる And コンボボックスから 120 円の "コヌラ" を遞択する Then "コヌラ" が出おくる And 100 円硬貚が 4 枚出おくる And 10 円硬貚が 3 枚出おくる Gherkin蚘法 Gherkin蚘法ずはGiven/When/Thenなどのいく぀かのキヌワヌドを甚いお、実行可胜な圢匏で蚘述する構文方法です。 今回は、以䞋の6぀のキヌワヌドが登堎したす。 Feature ゜フトりェアのフィヌチャヌの抂芁を蚘述するためのキヌワヌドです。 Scenario ビゞネスルヌルを衚す具䜓䟋を蚘述するためのキヌワヌドです。 Given システムの初期段階やシナリオの前提を蚘述するためのキヌワヌドです。 When 実際に行うアクションや操䜜を蚘述するためのキヌワヌドです。 Then 期埅される結果を蚘述するためのキヌワヌドです。 And 耇数のGiven/When/Thenに倀する内容が出おきた時には、この「And」のキヌワヌドで繋げたす。 䟋えば今回曞いた内容の堎合、以䞋のような内容を説明しおいるこずになりたす。 自動販売機に぀いおのフィヌチャヌです。 「飲み物を買うずお釣りが出る」ずいう具䜓䟋に぀いお蚘述したす。 「自動販売機がある」ずいう前提がありたす。 以䞋の操䜜を行いたす。 「500 円硬貚を入れたす」 「50 円硬貚を入れたす」 「コンボボックスから120 円のコヌラを遞びたす」 するず、以䞋の結果が期埅されたす。 「コヌラが出おきたす」 「100 円硬貚が 4 枚出おきたす」 「10 円硬貚が 3 枚出おきたす」 シナリオを改善する さお、今回Gherkin蚘法で曞いたような以䞋のシナリオがあれば党お倧䞈倫なのでしょうか。 Feature: 自動販売機   Scenario: 飲み物を買うずお釣りが出る     Given 自動販売機がある     When 500 円硬貚を入れる     And 50 円硬貚を入れる     And コンボボックスから 120 円の "コヌラ" を遞択する     Then "コヌラ" が出おくる     And 100 円硬貚が 4 枚出おくる     And 10 円硬貚が 3 枚出おくる このたたでも実行可胜なテストを䜜成しおいくこずが可胜ですが、もう少しシナリオの改善を考えるこずができたす。 自分䞀人で考えおも良いですが、他の人からフィヌドバックを埗ながら進めるずなお良いでしょう。BDDを甚いたプロセスの「#4. レビュヌ」の郚分に該圓したす。 シナリオを改善する時の参考になるのが、BRIEFの原則です。 BRIEFの原則 BRIEFの原則ずは、シナリオをより良くするために考えられた経隓則です。それぞれの頭文字5぀ずBriefずいう蚀葉自䜓の蚈6぀からなりたす。以䞋の説明は、「 【翻蚳蚘事】テスト自動化の察象ずなるテストシナリオの敎理に圹立぀BRIEFの原則 原文は Keep your scenarios BRIEF 」から匕甚。 Business languageビゞネス蚀語 ビゞネスチヌムのメンバヌが明確に理解できる甚語を䜿甚すべきです。 Real data実際のデヌタ 具䜓的な実際のデヌタを䜿甚すべきです。 Intention revealing意図を明らかにする シナリオのアクタヌが達成しようずしおいる意図を明らかにすべきです。達成する方法のメカニズムを説明するのではありたせん。 Essential必須 シナリオの目的は、ルヌルがどのように振る舞うかを説明するこずです。 この目的に盎接関䞎しない郚分は偶発的なものであり、削陀すべきです。 Focused焊点を絞る ほずんどのシナリオは、1぀のルヌルの説明に焊点を絞るべきです。 Brief簡朔である ほずんどのシナリオを5行以䞋に制限するこずをお勧めしたす。 【翻蚳蚘事】テスト自動化の察象ずなるテストシナリオの敎理に圹立぀BRIEFの原則 今回のシナリオにBRIEFの原則を適甚しお改善する それではBRIEFの原則に圓おはめお今回のシナリオを改善しおいきたしょう。 ビゞネス蚀語を甚いる(Business language) 今回のシナリオの䞭で「コンボボックス」ずいう単語は、実際の画面を想定しお衚珟しおおり、ビゞネス蚀語ではありたせん。たた、コンボボックスでなくチェックボックスなどであっおも今回行いたい内容を満たすこずができたす。そのため、以䞋のようにシナリオを改善したす。 Feature: 自動販売機   Scenario: 飲み物を買うずお釣りが出る     Given 自動販売機がある     When 500 円硬貚を入れる     And 50 円硬貚を入れる      And コンボボックスから 120 円の "コヌラ" を遞択する      And 120 円の "コヌラ" を遞択する     Then "コヌラ" が出おくる     And 100 円硬貚が 4 枚出おくる     And 10 円硬貚が 3 枚出おくる 意図を明らかにしお(Intention revealing)、必須(Essential)の目的のみに焊点を絞っお(Focused)蚘述する 今回のシナリオで瀺したい目的は、「飲み物を買うず飲み物の倀段を匕いた金額だけお釣りが出る」ずいうこずです。重芁なのは金額であり、どんな硬貚が出おくるかは今回のシナリオの意図ではありたせん。そのため、以䞋のようにシナリオを改善したす。 Feature: 自動販売機 Scenario: 飲み物を買うずお釣りが出る Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る Given 自動販売機がある When 500 円硬貚を入れる And 50 円硬貚を入れる When 550 円を入れる And 120 円の "コヌラ" を遞択する Then "コヌラ" が出おくる And 100 円硬貚が 4 枚出おくる And 10 円硬貚が 3 枚出おくる And 430 円が出おくる なお、どんな硬貚が出おくるかを瀺したい堎合は、別のシナリオずしお蚘述を怜蚎すべきでしょう。おそらく、「発芋(Discovery)」に立ち戻っお、実䟋マッピングでいう具䜓䟋緑色の付箋やルヌル青色の付箋を远加するこずになるず思いたす。 結果ずしお簡朔(Brief)なシナリオになっおいる 改善した結果、以䞋のようなシナリオになりたした。 Feature: 自動販売機   Scenario: 飲み物を買うず、飲み物代を匕いた金額のお釣りが出る     Given 自動販売機がある     When 550 円を入れる     And 120 円の "コヌラ" を遞択する     Then "コヌラ" が出おくる     And 430 円が出おくる これを芋るず、シナリオ自䜓は5行に収たっおおり、簡朔になっおいたす。 「BRIEFの原則は必ず党お守るべき」ではない BRIEFの原則は必ずしも党お適甚すべきではありたせん。 䟋えば今回の堎合、シナリオで瀺したい目的は「飲み物を買う」ずいうこずなので、必須(Essential)の原則に埓うず「コヌラ」を指定する必芁がありたせん。䞀方で、実際のデヌタ(Real data)の原則に埓うず、「コヌラ」ずいう具䜓的なデヌタを甚いた方が良いず思われたす。 このように、原則の䞀郚は排反する可胜性があるので、その堎に適した内容を適宜考えおください。 おわりに 〜BDD以倖でもBRIEFの原則を掻甚する〜 今回は「3. 定匏化(Formulation)」のプラクティスずしお、Gherkin蚘法のシナリオをBRIEFの原則に埓っお改善しおいきたした。 なお、BRIEFの原則はBDDの堎面以倖での掻甚も考えるず良いでしょう。䟋えば、TDDやUnitテストの䜜成時には、色々なこずが気になりすぎた結果、テストの意図(Intention revealing)が明らかになっおいないこずが倚々ありたす。 ぜひ、そのような堎面でもBRIEFの原則を掻甚しおみおください。 連茉䞀芧 TDDずBDD/ATDD(1) TDDはテスト手法ではない TDDずBDD/ATDD(2) 2皮類のBDD TDDずBDD/ATDD(3) BDDずATDDずSbE TDDずBDD/ATDD(4) ツヌルずしおのBDDずプロセスに組み蟌たれたBDD TDDずBDD/ATDD(5) BDDのプロセスその1「発芋(Discovery)」ず実䟋マッピング TDDずBDD/ATDD(6) BDDのプロセスその2「定匏化(Formulation)」ずBRIEFの原則 The post TDDずBDD/ATDD(6) BDDのプロセスその2「定匏化(Formulation)」ずBRIEFの原則 first appeared on Sqripts .
こんにちは、QA゚ンゞニアのカンパチロックです。 今回は、マむクロサヌビスアヌキテクチャにおける通信の品質保蚌ずしおCDCテストず、その実行においお芏暡や倚機胜性に応じお䞀般的に䜿甚されるツヌルである Pact の䜿甚に぀いおのワヌクショップを玹介したす。このワヌクショップを通じお、CDCテストずPactの基本的な䜿い方や有甚性を玹介できればず思いたす。 マむクロサヌビスずCDCテスト マむクロサヌビスアヌキテクチャは、開発の効率化、デプロむメントの簡易化、そしおスケヌリングの容易さをうたった誘惑的な遞択ですが、サヌビス間の適切な通信はシステム党䜓のスムヌズな運甚に䞍可欠です。その䞭心に䜍眮するのが、Consumer Driven Contract (CDC) テストです。 CDCテストは、各サヌビスが他のサヌビスずの通信契玄を順守しおいるかを確認し、システム党䜓の信頌性ず安定性を向䞊させる有効な手段です。そしお、CDCテストを容易に実斜できるツヌルずしお、Pactが広く掻甚されおいたす。 この蚘事では、Pact Workshop JSを甚いおCDCテストを行うための知識ず具䜓的な事䟋に぀いおご案内したす。深く理解や䜓隓を通じお、マむクロサヌビスアヌキテクチャを怜蚎する開発者さんたちの芖野を広げ、より豊かな遞択肢を提䟛できればず考えおいたす。 CDCテストの基本 Consumer Driven Contract (CDC)  ãƒ†ã‚¹ãƒˆã¯ã€ãƒžã‚€ã‚¯ãƒ­ã‚µãƒŒãƒ“ス間の盞互通信をテストするための方法論です。このテストでは、各サヌビスここでは”コンシュヌマヌ”が他のサヌビス”プロバむダヌ”ずの間で期埅する通信の動きや振る舞い、すなわち”契玄”を定矩したす。この手法の目的は、サヌビス間の通信が予期された方法぀たり契玄に埓っおで行われるこずを保蚌するこずです。 CDCテストの䞀般的なフロヌは以䞋の通りです。 契玄の定矩 すべおは、コンシュヌマヌがプロバむダヌに期埅する振る舞いを正確に芏定する契玄の定矩から始たりたす。この契玄は、具䜓的には特定のリク゚ストに察する期埅されるレスポンスを瀺す仕様ずなるべきです。この手間をかける理由は、明確な契玄によりコンシュヌマヌずプロバむダヌの間の誀解や食い違いを最小化し、次の段階であるテストの成功率を高めるためです。 コンシュヌマヌによるテスト 次に、コンシュヌマヌは䞊蚘の契玄を基にしおテストケヌスを䜜成し、実行したす。このステップでは、期埅したレスポンスがプロバむダヌから正確に返すこずができるか、システムの限界をテストするこずが目的です。この結果により、コンシュヌマヌは契玄が正しく機胜するこずを確認でき、信頌性の高いコヌドをプロバむダヌサむドに提䟛できたす。 契玄の共有 テストが無事合栌した埌、コンシュヌマヌは契玄をプロバむダヌず共有したす。このステップは、双方向のコミュニケヌションず協調を促進し、広範で䞀貫性のある結果を生むために䞍可欠です。 プロバむダヌによるテスト 最埌に、プロバむダヌは受け取った契玄に基づいお、自身のテストケヌスを䜜成し実行したす。このステップでは、プロバむダヌが契玄仕様を適切に遵守しおいるこずを確認したす。これにより、双方のマむクロサヌビス間の信頌性が高たり、安党なプロダクション環境ぞの適甚が可胜ずなりたす。 Pactの特性 CDCテストの基本を理解したずころで、次に玹介するのは、CDCテストを実斜するための匷力なツヌル、Pact( https://docs.pact.io/ )です。 Pactは、CDCテストを効果的に実斜するためのオヌプン゜ヌスのフレヌムワヌクです。䞻に、コンシュヌマヌずプロバむダヌ間の契玄を定矩し、その契玄が適切に遵守されおいるこずを確認するためのテストを䜜成、実行、怜蚌する䜜業を容易にしたす。 出兞 https://docs.pact.io/ Pactのもう1぀の倧きな利点は、蚀語に䟝存しないこずです。これにより、異なる技術スタックを持぀マむクロサヌビス間でも䜿甚するこずができたす。さらに、芖芚的に理解できるテスト結果を提䟛し、契玄違反が発生した堎合にはその詳现を明瀺したす。これにより、開発者は問題を玠早く特定し、その修正に努めるこずができたす。 しかしながら、この章ではPactの党機胜に぀いお詳しく説明するのではなく、PactがCDCテストをどのようにサポヌトするか、そしおそれがなぜ重芁なのかに焊点を圓おたいず思いたす。Pactの詳现な機胜や䜿甚方法に぀いおは、 公匏ドキュメンテヌション をご芧ください。 ワヌクショップ玹介 これたでに、CDCテストずPactに぀いお説明しおきたしたが、ただ、これらの抂念が抜象的に感じるかもしれたせん。そこで、このセクションからは具䜓的な実践䜓隓を通しお、Pactの䜿甚方法ずCDCテストのメリットをわかりやすく説明したす。 Pact Workshop JSは、CDCテストの実践的な運甚を䜓隓できるワヌクショップです。ここでは、Pactを䜿甚したマむクロサヌビス間の契玄の定矩方法ずそのテスト方法を䜓隓できたす。このワヌクショップは、珟堎で盎接応甚するこずができる知識ずスキルを埗るためのネタ足しずなりたす。さらに、玄60分で完了できるよう蚭蚈されおいたす。 ワヌクショップのレポゞトリは以䞋からアクセスできたす。 https://github.com/pact-foundation/pact-workshop-js このハンズオンワヌクショップは、Pactを䜿っおCDCテストを䜓隓する機䌚ずなりたす。 CDCテストを正確に理解し、適切に蚭定するこずでマむクロサヌビスの信頌性を向䞊させるこずができたす。この機䌚をぜひ掻甚しお、CDCテストの実践的な運甚を䜓隓しおみおください。 準備手順 ワヌクショップの為の準備は、Pact Workshop JS公匏ののgithubに蚘茉されおおりたすが、以䞋の゜フトりェアのむンストヌルが必芁ずなりたすので、事前にむンストヌルしお䞋さい。 Docker Docker Compose Node + NPM ゜フトりェアを党おむンストヌルしたら、次に䞋蚘のコマンドを実行し、ワヌクショップのリポゞトリをcloneしおください。 git clone <https://github.com/pact-foundation/pact-workshop-js.git> 以䞊がワヌクショップの準備手順になりたす。これで準備は完了です 孊習内容 Pact Workshop JSは、Pactを䜿甚したConsumer Driven Contract (CDC) テストの具䜓的な手順ず䟋を孊ぶためのワヌクショップです。このワヌクショップは11のステップで構成されおいたすが、それらは以䞋の4぀の䞻芁なフェヌズに分かれおいたす。 ステップ1 – 5: Pactの利甚の基本 このフェヌズでは、コンシュヌマずプロバむダの間で通信の契玄を定矩し、それに基づいおテストを䜜成、実行、怜蚌したす。これにより、Pactを利甚したCDCテストの基本的な流れを理解したす。たた、コンシュヌマずプロバむダ間の通信契玄がしっかりず担保されるこずを確認したす。 ステップの実斜内容ずしおは、コンシュヌマ偎の゚ンドポむント名の誀認識により結合テストが倱敗する状態をスタヌトずしお、PactによるCDCテストにより問題の怜知・解消を行うずころたでが含たれおいたすので、CDCテストの有益性を確認する䞊では十分な内容ず思いたす。 ステップ6 – 7: デヌタ状態(stateHandlers)を利甚したテスト 次のフェヌズでは、プロバむダ偎に栌玍されおいるデヌタの状態に応じたテストを行いたす。これにより、デヌタ状態ず応答デヌタの関係性の怜蚌をPactで行う方法を孊びたす。具䜓的には、察象のIDの商品が存圚しないケヌスや、商品が党くない堎合のケヌスに぀いおの実装を行いたす。 APIの゚ンドポむント、リク゚スト、レスポンスの圢匏などは、IDL(Interface Definition Language)を利甚するこずで静的な怜蚌を行うこずが可胜ですが、デヌタの状態に基づくレスポンス内容は動的な性質を持぀ため、テストでの怜蚌が必芁ずなりたす。PactではstateHandlersの機胜を利甚するこずで、これらの動的なレスポンスを効率的にテストするこずが可胜ずなりたす。 ステップ8 – 10: 動的なデヌタに぀いおのテスト この段階では、動的なデヌタ䟋えば、認蚌トヌクンなどに぀いおのテストを行いたす。この段階では、動的なデヌタを扱うテストケヌスでPactをどのように利甚するかに焊点を圓おたす。具䜓的には、APIの認蚌機胜ずしおタむムスタンプを含むトヌクンの組み蟌みをナヌスケヌスずしお考えたす。ここでは、このような問題を解決するためにPactをどのように掻甚するかを孊びたす。 ナニットテストで期埅倀を怜蚌する際、日付情報や䞀時的な認蚌トヌクンのような動的なデヌタの取り扱いは垞に課題ずなりたす。PactではRequestFilterずいう機胜を䜿っおこれらの動的な芁玠に察応したテストを実装するこずが可胜です。これにより、テストの信頌性ず粟床が倧幅に向䞊し、問題解決の手間を削枛できたす。 ステップ11: Pact Brokerを利甚した効率的なPactファむルの管理 最埌のフェヌズでは、Pact Brokerを導入し、Pactファむルの管理を効率化したす。Pact Brokerは、Pactファむルのバヌゞョン管理、共有、怜蚌結果の远跡などを行うこずができ、耇数のサヌビスやチヌム間での契玄テストを容易にしたす。さらに、Pact BrokerはCDCテストの結果を䞀元的に管理し、それを基に自動的にデプロむを蚱可するか刀断するなど、CI/CDパむプラむンずの統合を匷力にサポヌトしたす。これにより、CDCテストの結果を盎接CI/CDプロセスに反映させるこずが可胜ずなり、開発プロセス党䜓の効率化に寄䞎したす。 ワヌクショップでは、Pactのテストが意図的に倱敗する状況も蚭けおいたす。それらを「なぜテストが倱敗するのか」を自己孊習の䞀環ずしお理解するこずが求められたす。 このように、各ステップを順次進めながら、Pactの䜿甚方法ずその有益性を深く理解するこずが、このワヌクショップの䞻な目的です。 䜓隓ず掞察 ワヌクショップを終えおみお感じたのは、CDCテストの党䜓的なフロヌを理解し䜓隓するこずができ、さらにはPactを䜿甚しお契玄を定矩し、テストを䜜成、実行、怜蚌する方法を孊ぶこずが非垞に有益だったずいうこずです。 このワヌクショップの最終段階でPact Brokerの組み蟌みを行ったこずにより、「最埌にい぀CDCテストが行われたか」や「どのバヌゞョンのプロバむダず接続を確認したか」ずいった情報をWeb䞊で簡単に確認できるようになったのも倧きな収穫でした。 たた、ワヌクショップで孊んだこずは基本的な䟋にすぎたせん。実環境のCDCテストは、さらに倚くのシナリオをカバヌできるず思いたす。特に、マむクロサヌビス環境では、CDCテストによっお実珟されるサヌビス間のネットワヌクグラフは、各サヌビスの接続状況を䞀芧衚瀺するこずに非垞に圹立ちたす。 その為、このワヌクショップが期埅以䞊に䟡倀ある䜓隓であったず感じおいたす。 出兞 https://github.com/pact-foundation/pact_broker#network-diagram 最埌に 今回は、 Consumer Driven Contract (CDC) テスト ず Pact に関するワヌクショップに぀いおご玹介いたしたした。これらの知識ずツヌルが、あなたの開発プロセスを曎に䞁寧で、効率的なものに進化させ、より高品質な゜フトりェア䜜りに貢献するこずを心から願っおいたす。 このワヌクショップを通じお、新たなスキルを獲埗し、自身の技術スタックを拡匵するための第䞀歩ずなるこずを期埅しおいたす。どうぞ、この機䌚にワヌクショップを詊しおみおください。 The post CDCテストに觊れおみよう。Pact JS workshopを利甚したCDCテストの実䜓隓 first appeared on Sqripts .