AGESTのブログ - TECH PLAY

TECH PLAY

AGEST

AGEST の技術ブログ

å…š487ä»¶

はじめたしお。IAです。私は゜フトりェア開発゚ンゞニアずしお7幎のキャリアを積んだ埌、珟圚はQA゚ンゞニアずしお働いおいたす。 今回はなぜ私が開発゚ンゞニアからキャリアチェンゞしたのか、キャリアチェンゞしたこずで埗たこずは䜕なのかを玹介したいず思いたす。 私のキャリアずキャリアチェンゞした背景 たず、開発゚ンゞニア時代の私のポゞションず、珟圚のQA゚ンゞニアずしおのポゞションを簡単に説明したす。 ゜フトりェア開発゚ンゞニア時代 組み蟌みアプリケヌション開発芁件定矩結合テスト 業務アプリケヌション開発基本蚭蚈単䜓テスト、結合テスト QA゚ンゞニア テスト蚭蚈・テスト実装・テスト実斜システムテスト テスト芋積り・テスト蚈画の䜜成ができるように孊習䞭 次に、キャリアチェンゞを決断した背景には自身の垌望ず業界の動向の䞡方がありたす。 自身の垌望 自分の取埗技術が固定化するこずを避け、新たなスキルを取埗し自己成長を目指したためです。 元々、専門性を高められるこずよりも幅広い分野で掻かせるこずが魅力的だず考えIT業界を志望しおいたした。最初は開発゚ンゞニアずしお開発業務を行っおいたしたが、特定の技術分野や業務に集䞭した開発が続いおおり、新たなスキルや実瞟を積むずいう点に぀いお限界を感じおいたした。そこで、より広範囲の分野にアクセスしスキルを取埗できる職皮を探しおいたした。どの゜フトりェア開発においおも必芁なテストずいう領域であるずいう点ず、幅広いゞャンルや新しい技術に携われそうずいうむメヌゞからQA゚ンゞニアずいう職皮に興味を持ちたした。 業界の動向 ゜フトりェアを量産する時代から高品質の時代ぞの転換で、QA゚ンゞニアの需芁が高たっおいるため。 開発者ずしおの経隓がQA゚ンゞニアに掻かせたこず ゜フトりェア開発でのテスト経隓がある キャリアチェンゞ埌、QA゚ンゞニアずしお最初に行った業務がテスト蚭蚈でした。 開発゚ンゞニアの時代に開発工皋の䞀環ずしお単䜓テスト・結合テストの工皋を担圓したこずがありたす。組み蟌みアプリケヌション開発の単䜓テストではフロヌチャヌトをベヌスにコヌド単䜓テストの蚭蚈・実斜を行い、業務アプリケヌション開発ではコヌド単䜓テスト及びモゞュヌル間結合テストの蚭蚈、実斜を行いたした。 これらの゜フトりェア開発でのテストの経隓があったこずで、分岐や境界倀など開発者目線でテストをしお欲しいであろう箇所を速やかに理解するこずができたした。さらに入瀟時に行われるテスト蚭蚈者研修に参加するこずで、そのテストを行うために有効な手法が䜕かを孊ぶこずができたため、開発未経隓者よりも深くテスト蚭蚈に぀いお理解できたず感じおたす。 ゜フトりェア開発の流れを理解しおいる ゜フトりェア開発フロヌ党䜓を通じた芋識がありたした。特に私はりォヌタヌフォヌルモデル型開発を経隓しおいたため、芁件定矩や基本蚭蚈曞の各工皋で行われる具䜓的な蚭蚈内容や、察応するテストに぀いおの具䜓的なむメヌゞが元からありたした。この経隓を基に察応する工皋に合わせたレベルのテスト蚭蚈を行うこずができたした。 QA゚ンゞニアずしお埗られたこず経隓・知芋・新たな芖点など 開発者からQA゚ンゞニアに転職したこずで゜フトりェアの品質ずいう偎面から顧客に貢献するこずができ、開発者ずはたた違った仕事の達成感を感じおいたす。業務アプリケヌションやWebサむト、スマヌトフォンアプリ等の幅広い皮類のシステムに觊れ、各システムの特城を考慮しお有効なテストアプロヌチを考えるこずができたした。開発゚ンゞニア時代には觊れるこずが無かった゜フトりェア環境のテストを行うこずもあり、新しいスキルを身に着ける機䌚も埗られたした。 たた、テスト蚭蚈を行うに圓たり、ナヌザヌ芳点に぀いお意識を改めるこずができたした。 単䜓テストや結合テストの芳点の倧郚分は芁件定矩曞や機胜仕様曞に蚘茉されおいる事であったのに察し、QA゚ンゞニアで実斜するシステムテストやUATでは、ナヌザヌにずっお䜿いやすいシステムになっおいるか等のナヌザヌの立堎に寄り添った芳点も汲み取る必芁があったため、意識を改めるこずができたした。 開発者芖点から切り替えおテスト蚭蚈をするこずは倧倉でしたが、ナヌザヌに意識を向けるこずでナヌザヌの満足床を高められるように努力したした。 さらに、テスト蚭蚈をするずきは誰でも同じ結果が埗られるテストケヌスを甚意するこずが求められたす。テスト蚭蚈者ず実斜者は別であるこずがありたす。そのためテスト蚭蚈を行う際は具䜓的な操䜜や期埅結果を詳现にわかりやすく蚘述するこずで、䞀貫性ず再珟性を保぀テストを行うこずができるよう意識しおいたす。 キャリアチェンゞを考えおいる開発゚ンゞニアに向けお ゜フトりェアに高い品質が求められるようになった今、品質を保蚌するQA゚ンゞニアの存圚は非垞に重芁になるず思われたす。 キャリアチェンゞを考えおいる開発゚ンゞニアの皆さんにずっお、テスト蚭蚈・実斜の経隓を掻甚し適切なテストを蚭蚈するこずができる点や、開発者ずしおの知芋から顧客の開発環境を理解し改善するためのアドバむスもできる点から、QA゚ンゞニアは新たな可胜性を秘めた道であるず思いたす。 最埌に、QA゚ンゞニアを目指す方に是非孊んで欲しい資栌を玹介したす。 [ JSTQB Foundation Leve l] こちらは゜フトりェアテストの基瀎レベルの資栌です。テストに特化した専門資栌で、テストで扱う手法や甚語に぀いお広く孊ぶこずができたす。 この蚘事をもずに、今埌QA゚ンゞニアを目指す皆さんの参考になれば幞いです。 The post 開発゚ンゞニアの新たな道QA゚ンゞニアぞのキャリアチェンゞ first appeared on Sqripts .
振る舞い駆動開発(BDD)は品質向䞊や、テスト自動化の圹に立぀アプロヌチです。たたアゞャむルな゜フトりェア開発やプロダクト開発に取り入れるのもずおも有効ですが、期埅できる効果は少し違ったものになりたす。本蚘事ではアゞャむルコヌチずしお、アゞャむルなチヌムにBDDを玹介するずいう立堎で、働きや効果に぀いお考えおみたす。 なおBDDに぀いおの玠晎らしい解説をブロッコリヌさん(颚間さん)が執筆されおいたす。BDDずはなにか、基本から䜿い方たで䞁寧に説明されおいるので、ぜひそちらを参考にしおください。本蚘事では、TDDずの違い、SbE、「発芋・定匏化・自動化」のプロセスに぀いお、理解されおいる前提で曞いおいきたす。 TDDずBDD/ATDD(1) TDDはテスト手法ではない コミュニケヌションツヌルずしおのBDD BDDは「機胜を開発する前に振る舞い(テスト)を曞く」ずいう点でTDD (テスト駆動開発) に䌌おいたす。䜕を実珟すればいいのか、どんな機胜が求められおいるのか、明らかにしおから䜜業を進めるずいうものです。䜜るものを具䜓的に決めるので、ゎヌルが明確になり、䜜るものがブレたりムダなこずをしないずいうメリットがありたす。 同時にBDDは利甚者やビゞネスナヌザヌずいった、開発者ではない人、すなわち䜿う人の芳点から望たしい振る舞いを定矩したす。同時にその定矩を開発者や技術者、すなわち䜜る人から芋おも自明なように曞き䞋すずいう、コミュニケヌションを促進するツヌルずいう偎面がありたす。 アゞャむルな開発においおは䜿う人ず䜜る人の意思疎通が欠かせたせん。アゞャむル宣蚀の背埌にある原則にもありたす。BDDはそこを匷化する効果があるわけです。 ビゞネス偎の人ず開発者は、 プロゞェクトを通しお日々䞀緒に働かなければなりたせん。 アゞャむル宣蚀の背埌にある原則 䜿う人がほしいものを衚珟したり、䜜る人が䜜るものを蚘述するやりかたはたくさんあり、BDDはそのひず぀です。BDDには特に、以䞋のような匷みがありたす。 䜿う人ず䜜る人が䞀緒に働く堎を提䟛する 成果物である定匏化した振る舞いが、䜿う人ず䜜る人の共通の蚀語で衚珟される 振る舞いをそのたた自動化でき、テスト資産になる 䜿う人ず䜜る人が協働しお進めるBDDは、以䞋のステップで進みたす。 倚様な利甚者や開発者が協力しお、ほしいものを「発芋(Discovery)」する ほしいものを具䜓的に「定匏化(Formulation)」する。開発者にずっおは達成すべきゎヌルずなり、利甚者にずっおは実珟を玄束された内容になる 開発者は、自分たちが䜜ったものがゎヌルを満たすか客芳的に刀定できる   (「自動化(Automation)」すれば刀定が圧倒的に容易になるが、必須ではない) 利甚者は開発者が提䟛したものを確認するずき、玄束は満たしおいるず信頌できる。そのため他の点を確認すればよくなる   (自動化は必須ではないが、されおいれば玄束通りかどうか信頌しやすくなる) 利甚者の期埅ず異なる点があったら、そこから新たな「発芋」に぀ながる 玄束は” 契玄 “ず呌んでもいいかもしれたせん。ひず぀の機胜の䞀郚だけかもしれたせんが、䜜る人が䜜るもの、䜿う人が受け取るものに぀いお双方が守るべき” 契玄 “です。この考え方を広げお適甚するず、ATDD(受け入れテスト駆動開発)に近づいおいきたす。 耇数のメンバヌ、ずりわけ異なるスキルや背景を持った人々が協調するのがアゞャむルの芁諊です。BDDはそこに効きたす。䞀般に芁件定矩ず呌ばれるプロセスを、協調䜜業にできるのです。モブプログラミングあるいはモブワヌクのやり方も向きたす。 協調し䌚話するためには、お互いに通じる蚀葉がないず䞍䟿です。様々な立堎の関係者が共通の語圙ずしお䜿えるナビキタス蚀語があれば、効果的な䌚話ができたす。BDDのテストはナヌザヌの蚀葉で蚘述し、開発者がそれを実装の蚀葉に翻蚳するので、自然ずそこにナビキタス蚀語が䜜られおいきたす。 開発者どうしのコミュニケヌションにもBDDが圹に立぀ BDDで振る舞いを定匏化しお蚘述するず、開発のゎヌルができあがりたす。開発者がチヌムずしお協力するずき、ゎヌルがはっきりしおいるず䜜業蚈画づくりをしやすくなり、分担や連携の切り口もわかりやすくなりたす。振る舞いが䞀連の操䜜をシナリオずしお衚珟しおいるず、どれだけ完成したか進捗も把握しやすくなりたす。 開発しおいるプロダクトが耇数のレむダヌで構成されおいるず、開発者もレむダヌごずに担圓を分けるこずが倚くなりたす。ナヌザヌから芋た振る舞いはすべおのレむダヌを瞫い合わせるように動䜜するため、担圓者同士の連携ポむントを提䟛したす。䞀郚のレむダヌの開発が進んだり遅れたりしおいおも、すぐに気が぀けるわけです。 たたレむダヌごずに開発するずき、レむダヌごずに単䜓テストをするためのテストケヌスやテストデヌタが必芁ずなりたす。担圓者それぞれに適圓なデヌタを䜜るず、認識違いや怜蚎挏れが出る堎合がありたす。BDDの振る舞いに具䜓的な倀を含めおおけば(SbEのアプロヌチ)、共通のテストデヌタができたす。SbEに぀いお、詳しくは ブロッコリヌさんの連茉の第3回 を参照しおください。 TDDずBDD/ATDD(3) BDDずATDDずSbE BDDで衚珟する芁玠ずしない芁玠 BDDでは振る舞いずしお䜜るもののゎヌルを衚珟できたす。ただしBDDでは捉えにくいものもありたす。以䞋に、BDDで衚珟できる芁玠ず衚珟しにくい芁玠を敎理したした。 衚珟できる 機胜芁件 BDDは振る舞いを䞭心にテストを構築するため、具䜓的な機胜芁件を捉えやすい ビゞネスルヌル BDDシナリオはビゞネスプロセスやルヌルを衚珟するのに適しおおり、これらを明確にする ナヌスケヌス ナヌザヌの芖点からの芁件や期埅をシナリオ化し、テストを行うこずができる 衚珟しにくい アりトカムやむンパクト ナヌザヌの行動倉化や長期的な圱響は、プロダクトの盎接的なテストにはならない アヌキテクチャや内郚品質 システムの内郚構造やコヌド品質は、倖郚から芋た振る舞いで衚珟できない 非機胜芁件パフォヌマンス等 パフォヌマンスやセキュリティなどの非機胜芁件は、振る舞いずしお捉えにくいものがある ナヌザヌむンタヌフェヌスの詳现 UIの芋た目芁玠や现かい操䜜方法などは、BDDでは無芖した方が取り扱いやすい 技術的な制玄や䟝存関係 特定の技術的制玄や䟝存関係は、テストシナリオでは衚珟しにくい メンテナンスや運甚の芁玠 機胜ずしお衚珟されないメンテナンスや運甚の芁玠はカバヌしにくい (運甚機胜ずしお䜜るものならできる) 衚珟しにくいものは、別の方法でゎヌルを蚘述したり共有したりする工倫が必芁になりたす。頑匵ればBDDで実珟できるかもしれたせんが、おそらく他にもっず効果的な方法がありたす。自分たちのプロダクトず状況に合わせお、BDDが向くずころを遞ぶようにしたす。 詊行錯誀をコントロヌルするBDD アゞャむルな開発に限らず、スピヌドを重芖しお開発しおいるずき、ムダなこずはやりたくありたせん。䜿う人の芁望が分かりきっおいるならそのたたすぐに䜜りたいですし、䞍確実性が高いなら詊行錯誀を効果的か぀できるだけ頻繁にやりたくなりたす。望たれおいないものを䜜るのはムダです。䞍確実性が高いずきには詊したいポむントが䞍明瞭だずムダが発生しやすく、たたコミュニケヌションやドキュメントも䜙分に過ぎるずムダになりたす。 分かりきっおいるこずはどう衚珟し、䌝えればいいのでしょうか。詊行錯誀するずき、䜕を詊すのかはどう衚珟するのでしょうか。ここでBDDが䜿えたす。 BDDで振る舞いをテストケヌスずしお定匏化したす。ここに曞かれおいるのは、求められおいるこずです。ここには曞かれおいないこずもたくさんありたす。それは郜合よく解釈すればいいのです。郜合よくずいうのは、ランダムや勝手ではありたせん。いたの状況で求められおいる通りにし぀぀、開発者にずっお最もムダがないようにするのです。 業務システムのデヌタ入力機胜なら、決たり切った項目をすべお正しく登録できるずいう、たくさんのステップを曞いたテストになりたす。すべおのデヌタ項目を網矅しないずいけないし、バリデヌションもテストしたいでしょう。 いっぜう、ECサむトの商品怜玢にAIを組み蟌む機胜開発を考えおみるず、話が違っおきたす。おそらく実蚌実隓段階で、さたざたな䜿い道ずその実珟可胜性を怜蚎したいはずです。このずきBDDでテストしたいのは1テストケヌスでひず぀の点のみです。「関連する商品がヒットする」「文意を汲んで結果に反映する」「売りたいものが䞊䜍に出る」などを確認したいわけです。怜玢の现かな手順や䟋倖系、異垞系は、今は関心の察象倖です。関心がない点は、䜜る人が郜合よく、早く出来䞊がるように䜜ればよい。゚ラヌになったらクラッシュしおも構わないわけですね。 䞀発で完党な品質の完成品を狙うのなら、そのように䜜りたす。詊行したい芁玠以倖は関係ないのであれば、できるだけ省略し簡玠にすたせたす。こうしおムダを省きたす。その床合いを、定匏化した内容の詳现さや網矅性でコントロヌルできるずいうわけです。 定匏化した振る舞いを、玄束や契玄ずしお考えるずいう話をしたした。品質の高いものが求められるなら、網矅的で现かい点たで蚘述した契玄になるでしょう。詊行錯誀の䞀環でずにかく早く詊したいなら、その詊すこず以倖は契玄に含めず、倧郚分を開発者の裁量に任せる簡朔な契玄になるでしょう。 玄束や契玄ず蚀われるず、詳现たで完璧に網矅するのが正しいずいう気がしたす。しかしコミュニケヌションツヌルずしお考えれば、そのずきどきに応じお䌝えたいこずを適確に䌝えるのが正しい䜿い方になりたす。協調するのに必芁十分な詳现さ、あるいは曖昧さを遞んでください。 このこずもアゞャむル゜フトりェア開発宣蚀にありたしたね。 契玄亀枉よりも顧客ずの協調を アゞャむル゜フトりェア開発宣蚀 本圓にBDDのほうがスピヌドが出るのか スピヌドを求めるずきBDDが圹に立぀ず曞きたしたが、これは本圓でしょうか。状況による、ずいうのが答えになりたす。考え方ずしお、いたの(BDDを甚いない)やり方ず、BDDを甚いるやり方を比べお、ムダが少ない方が速いわけですね。ではいたのやり方にどんなムダがあるのか、それがBDDでは枛るのか、プラスBDDで発生するコストはないか、怜蚎するこずになりたす。 いちばん兞型的で分かりやすいのは、手戻りのムダでしょう。開発者が䜜ったものが、利甚者の思ったものず違ったり、実際に䜿っおみるず問題があっお、䜜り盎さないずいけない。これが利甚者ず開発者のあいだのコミュニケヌション䞍足に起因するものなら、BDDで䞍足を補えるチャンスがありたす。BDDの発芋プロセスに利甚者ず開発者の䞡者が参加するのでコミュニケヌションそのものの劎力は増えたすが、そのおかげで手戻りや䜜り盎しが枛れば、トヌタルでペむできそうです。 利甚者がほしいものを説明できない、蚀語化に苊劎するような堎合には、BDDやSbEのアプロヌチで楜に蚘述できるかもしれたせん。抜象的な仕様をMECEに曞き䞋すのにはそれなりのスキルや経隓が必芁なので、そのせいでコミュニケヌションのムダが発生しおいるなら、BDDで効率化できるかもしれたせん。 䜜りすぎのムダも、BDDで枛らせるかもしれたせん。䞀般的な仕様曞の曞き方では「このずきはどうなっおもよい」「ここは奜きにしおいい」ずはあたり曞きたせん。そうするず、どうなっおもいいんだけどな ず思い぀぀、䜕か決めお仕様曞に曞くこずになりたす。䜜る人から芋るず、仕様曞に曞いおあればすべおかならず実珟するしかありたせん。遞択肢はありたせん。 このずき、もっず䜎コストで実珟できる仕様にすればムダが枛りたす。開発者はいちばんムダの少ない実珟方法を遞べるかもしれたせん。たた、今の時点では䞍芁な郚分を実装しないですたせれば、これもムダを枛らせたす。「任せる」や「今はどうでもいい」ずいう衚珟、コミュニケヌションを蚱容するために、BDDが圹に立぀かもしれたせん。 すべおの機胜をBDDで䜜ろうずするず、コストがかかりすぎるかもしれたせん。仕様を衚珟する方法はBDDだけではないので、今のやり方で十分ムダなく䜜れるなら、BDDを遞ぶメリットはないかもしれたせん。䞊蚘のムダが発生しそうな箇所のみBDDを適甚すれば十分です。機胜で遞ぶ手もあるし、仕様を把握しおいるのが誰かによっお遞んでもいいでしょう。テストを蚘述したり自動化するのが埗意な人が担圓する郚分だけBDDにする䜜戊もありたす。 BDD≠E2E BDDで「自動化(Automation)」たで取り組むならば、自動化のコストも重芁な芁玠です。TDDに比べるずBDDのほうがテストを実行するためのレむダヌが増えがちで、むンフラや仕組みなどを準備しお自動化にこぎ着けるたでの䜜業は倚くなりたす。たた個々のテストを自動化する際も、ステップ実装たで含めた手間がかかりたす。テスト自動化によっお開発工数党䜓を削枛しようず思うず、BDDはハヌドルが高いかもしれたせん。 BDDは䜿う人の芳点からふるたいを蚘述するので、テスト自動化のテクノロゞヌずしおはE2Eテストになりがちです。しかしE2Eテストは実装やメンテナンス、たた実行コストも高くなりたす。BDDだからずいっおE2Eテストにする必芁はないず、頭を切り替えたしょう。ビゞネスロゞックに関する振る舞いであれば、ロゞックを実装しおいる箇所のナニットテストずしお実珟できるかもしれたせん。シナリオテストであれば、バック゚ンドのAPIテストで十分かもしれたせん。 おわりに BDDのプロセスの最初に「発芋」がありたす。BDDをコミュニケヌションツヌルず考え、ここを䜿う人ず䜜る人の協調䜜業にするのが、ずりわけアゞャむルな開発におけるBDDの倧きなメリットです。シフトレフトずいう蚀葉で考えれば、「仕様を考えるずころ」たで巊に持っお行くこずになりたす。逆に蚀うず、仕様が決たった埌でBDDを利甚するのでは倧きなメリットを捚おるこずになりたす。 BDDの定匏化で曞く内容を増枛しお䜜る内容をコントロヌルできたす。しっかり曞けばしっかり䜜るこずになり、軜く曞けば軜く䜜れるので、いた珟圚倧事なこずにフォヌカスしやすくなりたす。もちろん最終的にはすべおを完党な品質で䜜るわけですが、いた必芁なこずをいたやり、埌でやればいいこずを埌に回しお、時間を味方に぀けるのがアゞャむルな蚈画づくりです。 アゞャむルコヌチからアゞャむルチヌムにBDDを玹介するずいう内容で、本蚘事を曞いおきたした。BDDがみなさんのセンタヌになったら嬉しいです。 The post BDDはアゞャむルに向く ― アゞャむルコヌチから芋たBDD first appeared on Sqripts .
こんにちは、バック゚ンド゚ンゞニアのたさです。 前回 のVSCodeでgithub copilotを䜿った開発効率向䞊の話に匕き続き、今回はVSCodeでGenieAIずいう拡匵機胜を甚いおコヌド品質を高める手法のご玹介をしたいず思いたす。 OpenAIのAPIキヌが必芁になりたすが、こちらも開発を匷力にサポヌトしおくれるツヌルです。 GitHub Copilotを䜿っおみたら開発効率が劇的に向䞊した話 GenieAIずは GenieAIはVSCodeの拡匵機胜の䞀぀でChatGPTを利甚したAIアシスタント機胜を提䟛する拡匵機胜です。 䞻な機胜は以䞋の通りです。 コヌド補完: 開発者がコヌドを入力する際に、文脈に応じた最適なメ゜ッド名や倉数名ずいったコヌド補完候補をリアルタむムで提瀺したす。コヌディング速床の向䞊が期埅できたす。 テスト実装: 既存の関数やメ゜ッドに察しお、入力倀や期埅出力を考慮したテストケヌスをAIを甚いお生成したす。テスト駆動開発を匷力にサポヌトしたす。 バグ怜出: AIによるコヌド解析により、論理゚ラヌや䟋倖凊理挏れなどのバグを即座に怜出し譊告を出したす。手戻りの削枛に぀ながりたす。 コヌド最適化: パフォヌマンスボトルネックやメモリ䜿甚量の改善点を特定し、アルゎリズム倉曎やコヌド修正を提案したす。効率的なコヌドぞのリファクタリングを支揎したす。 コヌド解説: 耇雑な凊理の流れやクラスの蚭蚈意図などを、遞択したコヌド郚分に察しお自然蚀語で䞁寧な解説を生成したす。コヌド理解を加速したす。 コメント生成: コヌドファむルや関数に察しお適切な抂芁説明やむンラむンコメントを自動で付䞎したす。ドキュメント䜜成䜜業の軜枛に寄䞎したす。 GenieAIはAnthropic瀟が開発した新しいAIアシスタントで、VSCodeずChatGPTを連携させるこずが可胜になっおいたす。生産性向䞊やコヌディング䜜業の効率化に有甚なツヌルずいえたす。 GenieAIのむンストヌル GenieAIはVSCodeの拡匵機胜ですので、䞀般的な拡匵機胜ず同様に以䞋のようにしおむンストヌル可胜です。 これでGenieAIのむンストヌルは完了です。 GenieAIは内郚的にOpenAIのAPIを利甚しおいるため、利甚時にはOpenAIのAPIキヌの入力がもずめられたす。こちらには利甚䞭のOpenAIのAPIキヌを入力しおください。 たたGenieAIの各機胜を実珟するためのプロンプトは初期は英語で蚭定されおいるため、こちらを出力結果が日本語になるようにプロンプトを倉曎しおおくこずをオススメしたす。 プロンプトの倉曎は以䞋のようにしお行うこずができたす。 GenieAIの蚭定画面が衚瀺されたす。 䞊蚘で衚瀺した蚭定画面内の各プロンプト蚭定項目を以䞋の䟋のように倉曎したす。 ※こちらは蚭定䟋ですので各皮任意のプロンプト内容でOKです。 Genieai › Prompt Prefix: Add Tests: 「 以䞋のコヌドに察するテストコヌド実装を生成しおください 」等 Genieai › Prompt Prefix: Find Problems: 「 以䞋のコヌドの問題点を日本語で指摘しおください 」等 Genieai › Prompt Prefix: Optimize: 「 以䞋のコヌドを最適化しおください 」等 Genieai › Prompt Prefix: Explain: 「 以䞋のコヌドの内容をわかりやすく日本語で解説しおください 」等 Genieai › Prompt Prefix: Add Comments: 「 以䞋のコヌドに察しお適切なコメントを日本語で远加しおください 」等 Genieai › Prompt Prefix: Complete Code: 「 以䞋の゜ヌスコヌドに察しお適切にコヌド補完しおください 」等 このように蚭定するこずで日本語での利甚がしやすくなりたす。 各機胜を詊しおみる コヌド補完 GenieAIのコヌド補完機胜は、開発者がコヌドを入力しおいる最䞭に次に入力する可胜性が高いコヌド候補をリアルタむムで提瀺する機胜です。 䟋ずしお以䞋のようなコヌドを蚘茉したす。 # 配列デヌタ内のnumdataを合蚈しお返华する関数 def sum_numdata(jsdata): if __name__ == "__main__": jsdata = { [ {"strdata": "a", "numdata": 11,}, {"strdata": "b", "numdata": 21,}, {"strdata": "c", "numdata": 16,}, {"strdata": "d", "numdata": 41,}, {"strdata": "e", "numdata": 15,}, ] } 䞊蚘は䞍完党なコヌドですが、関数「sum_numdata」でメむン内での配列デヌタjsdata内のnumdataを集蚈しお合蚈数を出力する予定です。この状態で以䞋のようにVSCode䞊で操䜜を行いたす。 コヌドを党お遞択し右クリックしお衚瀺されるコンテキストメニュヌで遞択したす。 するずGenieAIのコヌド補完機胜によりサむドバヌに補完されたコヌドが出力されたす。 実装しようずしおいた関数の内容が実装され、メむン内の倉数の定矩も最適化されおいたす。 この状態で以䞋のようにするこずで゚ディタに補完されたコヌドが反映されたす。 補完により䜜成されたコヌドは以䞋のようになりたした。 # 配列デヌタ内のnumdataを合蚈しお返华する関数 def sum_numdata(jsdata): # 合蚈倀を初期化 total = 0 # 配列内の各芁玠に぀いおルヌプ for item in jsdata: # numdataの倀を合蚈倀に加算 total += item["numdata"] # 最終的な合蚈倀を返华 return total # メむン実行ブロック if __name__ == "__main__": # 蟞曞ではなくリストずしおjsdataを定矩 jsdata = [ {"strdata": "a", "numdata": 11}, {"strdata": "b", "numdata": 21}, {"strdata": "c", "numdata": 16}, {"strdata": "d", "numdata": 41}, {"strdata": "e", "numdata": 15}, ] # 関数を呌び出し、結果をprintで衚瀺 result = sum_numdata(jsdata) print(f"合蚈: {result}") # 出力: 合蚈: 104 コヌド補完を甚いるこずでAI偎でコヌド実装を予枬し、実装しようずしおいたコヌドを䜜成しおくれるずいう䟋です。利甚シヌンによっおは倧いに工数を削枛できる可胜性がありたす。 テスト実装 GenieAIのテストコヌド生成機胜は、既存のコヌドから自動的にテストコヌドを生成しおくれる機胜です。ここでは先皋のコヌド内の関数「sum_numdata」に察するテストコヌドの生成を行っおみたす。 関数「sum_numdata」を遞択し右クリックしお衚瀺されるコンテキストメニュヌで遞択したす。 サむドバヌに生成されたテストコヌドが出力されたす。 生成されたテストコヌドは以䞋のようになりたした。 import unittest # 配列デヌタ内のnumdataを合蚈しお返华する関数 def sum_numdata(jsdata): # 合蚈倀を初期化 total = 0 # 配列内の各芁玠に぀いおルヌプ for item in jsdata: # numdataの倀を合蚈倀に加算 total += item["numdata"] # 最終的な合蚈倀を返华 return total # テストケヌスクラスを定矩 class TestSumNumdata(unittest.TestCase): # 正しい合蚈を返すかテスト def test_sum_numdata_correct(self): data = [ {"strdata": "a", "numdata": 10}, {"strdata": "b", "numdata": 20}, {"strdata": "c", "numdata": 30}, ] result = sum_numdata(data) self.assertEqual(result, 60) # 期埅される合蚈倀は60 # 空のリストが枡された堎合、0が返るかテスト def test_sum_numdata_empty(self): data = [] result = sum_numdata(data) self.assertEqual(result, 0) # 期埅される合蚈倀は0 # numdataキヌがない堎合の䟋倖凊理が適切かテスト def test_sum_numdata_missing_key(self): data = [ {"strdata": "a"}, {"strdata": "b", "numdata": 20}, ] with self.assertRaises(KeyError): sum_numdata(data) # テストランナヌを実行 if __name__ == '__main__': unittest.main() 単玔なテストだけでなく準正垞系等のテストコヌドも生成しおくれたす。䞍足分があるなどいう堎合には䞋蚘のように远加の生成芁求も可胜です。 サむドバヌに远加のテストコヌドず説明が出力されたす。 以䞋のようなコヌドが生成されたした。 # numdataに文字デヌタが含たれおいる堎合のテストを远加 # numdataに非数倀デヌタが含たれおいる堎合にTypeErrorが発生するかテスト def test_sum_numdata_non_numeric(self): data = [ {"strdata": "a", "numdata": "10"}, {"strdata": "b", "numdata": 20}, {"strdata": "c", "numdata": 30}, ] with self.assertRaises(TypeError): sum_numdata(data) たたテストコヌドの生成だけではなく察象の関数の修正提案もしおくれおいたす。 (なぜか䞭囜語が混じっおしたっおいるようですが。。) def sum_numdata(jsdata): total = 0 for item in jsdata: try: # 确保只把数字类型的数据加到总和䞭 total += int(item["numdata"]) except ValueError: # 劂果蜬换䞺敎数倱莥抛出TypeError raise TypeError(f"Expected a numeric value for 'numdata', but got '{item['numdata']}' instead.") return total 自身の蚘述したテストコヌドに加えお、こちらで出力されるテストコヌドも远加するずいった䜿い方をするこずでテストを充実させ、よりコヌドの保守性を高めるこずができるようになりたす。 バグ怜出 GenieAIのバグ怜出機胜は、コヌド䞭の朜圚的なバグをAIが自動的に特定しお開発者に譊告する機胜です。実際にコヌドで詊しおみたしょう。 import random # メむン実行ブロック if __name__ == "__main__": RETRY_MAX = 5 retry_count = 0 do_retry = True while do_retry: x = random.randint(1,10) if x == 5: print("ok.") else: retry_count += 1 if retry_count > RETRY_MAX: raise Exception("retry error, x is not 5.") print("complete.") コヌド党䜓を遞択し右クリックしお衚瀺されるコンテキストメニュヌで遞択したす。 サむドバヌにコヌドの問題点が出力されたす。 䞊蚘のずおり、コヌドにはルヌプが終了しない問題がありたしたが、その問題を䞁寧に指摘しおくれおいたす。察凊法も説明しおくれおいたすので修正も容易です。 今回は割ず明らかなミスでしたが、そうでない堎合でもよりセヌフティなコヌドになるような提案をしおくれたりず、よりコヌドの品質が高たるように補助しおくれたす。 最適化 GenieAIのコヌド最適化機胜は、開発者のコヌドをAIが解析し、実行速床やメモリ䜿甚量ずいったパフォヌマンスを向䞊させる提案をしおくれる機胜です。 先皋のコヌドを少し修正したものを察象に実行しおみたす。 import random # メむン実行ブロック if __name__ == "__main__": RETRY_MAX = 5 retry_count = 0 do_retry = True while do_retry: x = random.randint(1,10) if x == 5: print("ok.") do_retry = False else: retry_count += 1 if retry_count > RETRY_MAX: raise Exception("retry error, x is not 5.") print("complete.") コヌド党䜓を遞択し右クリックしお衚瀺されるコンテキストメニュヌで遞択したす。 最適化されたコヌドず解説が出力されたす。 最適化されたコヌドは以䞋のようになりたした。 import random # メむン実行ブロック if __name__ == "__main__": RETRY_MAX = 5 retry_count = 0 while True: # 無限ルヌプ x = random.randint(1, 10) if x == 5: print("ok.") break # ルヌプを抜ける else: retry_count += 1 if retry_count >= RETRY_MAX: # `> RETRY_MAX`から`>= RETRY_MAX`に倉曎 raise Exception("retry error, x is not 5.") print("complete.") こちらの䟋ではフラグ倉数を䜿わずにbreak文でルヌプから抜けるように修正し、よりシンプルになるように最適化しおくれたした。 パフォヌマンスに関わる郚分などでも適切に提案しおくれたすので、现かく掻甚するこずで可読性ず性胜改善に関しおの品質向䞊が期埅できたす。 コヌド解説 GenieAIのコヌド解説機胜は、開発者が遞択したコヌドスニペットに察しお、その凊理内容や意図を自然蚀語で解説しおくれる機胜です。 䟋ずしお以䞋のようなコヌドに察しお解説を実行しおもらいたす。 def sample(nums): n = len(nums) for i in range(n): for j in range(n-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] return nums nums = [5, 2, 4, 1, 3] print(sample(nums)) サむドバヌにコヌドの内容の解説が出力されたす。 䞊蚘のようにsampleずいう関数がバブル゜ヌトのアルゎリズムで゜ヌトしおいるこずを解説しおくれおいたす。匕数や仕組みに぀いお现かく説明しおくれるので非垞に理解しやすいです。 䞻に他者のコヌドを扱うずきのキャッチアップに倧いに圹立぀ず思いたす。このコヌドは䜕をしおいるのだろうずいうずきにこちらを利甚するこずで现かく理解できるず思いたす。 コメント生成 最埌はコメント生成機胜です。GenieAIのコメント生成機胜は、コヌド内に適切なコメントを自動で挿入するこずができる機胜です。こちらもコヌド解説機胜に近いですが、コヌド内に明確に説明が残るずいうメリットがありたす。 䟋ずしお以䞋のコヌドにコメントを付䞎しおもらいたす。 def fetch_user_data(user_id): user = db.find_user(user_id) if not user: return None transactions = get_transactions(user.id) sum_amount = 0 for transaction in transactions: sum_amount += transaction.amount data = { "user_id": user.id, "name": "{} {}".format(user.first_name, user.last_name), "total_transaction_amount": sum_amount } return data コヌド党䜓を遞択し右クリックしお衚瀺されるコンテキストメニュヌで遞択したす。 サむドバヌにコメントを付䞎したコヌドが生成されたす。 コメントを付䞎しおくれた結果は以䞋のようになりたした。 def fetch_user_data(user_id): # ナヌザヌIDを元にデヌタベヌスからナヌザヌ情報を取埗する user = db.find_user(user_id) # ナヌザヌが存圚しない堎合はNoneを返す if not user: return None # ナヌザヌIDに玐づくトランザクション取匕情報を取埗する transactions = get_transactions(user.id) sum_amount = 0 # 取匕の合蚈金額を算出する for transaction in transactions: sum_amount += transaction.amount # 返すナヌザヌデヌタを蟞曞圢匏で構築する data = { "user_id": user.id, # ナヌザヌID "name": "{} {}".format(user.first_name, user.last_name), # フルネヌム "total_transaction_amount": sum_amount # トランザクションの合蚈金額 } # 構築したナヌザヌデヌタを返す return data わかりやすくコメントが远加されおいたすね。未定矩の関数であっおも名称ず前埌の流れから掚枬しおコメントを付䞎しおくれおいたす。コメントの付䞎等は意倖ず工数がかかったりするこずがあったり、人によりわかりやすいコメントの぀け方に悩んだりするものですが、こちらの機胜を利甚するこずで、そうした悩みも無くコメントを付䞎できたす。 コメントもコヌドの品質においお重芁な芁玠の䞀぀ですので、こちらを利甚するこずでたた䞀぀コヌドの品質を高めるこずができたず思いたす。 その他 GenieAIは基本的にコヌドを遞択し、そのコヌドに察しおAIに操䜜をしおもらうずいうような凊理を行っおいたす。以䞋のようにするず䞊蚘以倖に自由にAIに察しお指瀺が可胜です。 このように䞊郚に自由にプロンプトを入力できるようになるので、ここに゜ヌスに察する質問や指瀺を指定するこずで、任意の凊理をAIに䟝頌可胜です。 たずめ いかがでしたでしょうか。GenieAIはGitHub Copilotよりも胜動的にAIに凊理を行わせるこずが可胜です。特にバグ怜出ずコメント生成では、GitHub CopilotよりもGenieAIの方が䜿いやすさず生産性が高いず考えられたす。 GenieAIなら人間の開発者が気づきにくいコヌド䞊の欠陥をAIが特定し、保守性の向䞊に圹立おるこずができたす。工数の削枛ず品質の向䞊を同時に実珟できるため、゜フトりェア開発における生産性向䞊に期埅できるず思いたす。 開発者ずAIアシスタントが協調しお䜜業を進めるアプロヌチも、生成AIを最倧限に掻甚する方法の䞀぀ではないかず思いたす。 The post GenieAIでコヌドの品質を高めようVSCode拡匵機胜GenieAIを甚いおコヌド品質を高める手法 first appeared on Sqripts .
テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀に「論理スキル」がありたす。 この連茉では、「プログラムのレベル」「文や文章のレベル」に分けお、論理スキルの基本である「論理の蚀葉」を培底解説したす。 テスト゚ンゞニアのための論理スキル[再]入門 連茉䞀芧 ※クリックで開きたす [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 【連茉初回、党文公開䞭】 [第2回] プログラムレベルのロゞック (1)抂芁線 [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 [第4回] プログラムレベルのロゞック (3)解説線・論理挔算の組合せ [第5回] 文レベルのロゞック (1)文レベルのAND/OR/NOT 今回の第5回から、「文レベルの論理の蚀葉」に焊点を圓おお解説したす。 長い文章も短い文の぀ながりで筋道が぀くられおいたす。ひず぀の短い文の䞭にも構造がありたす論理挔算で぀ながれるような語句ず語句ずの関係や、前提ず結論ずいった関係など。第5回・第6回は、そのような、䞀般的な文章の構造を支える「論理の蚀葉」を取り䞊げたす。 文䞭では、䞀般的な文章や日垞䌚話などで甚いられる語句や衚珟を 䞀般語 ず呌びたす。 文や語句を吊定する蚀葉、぀なぐ蚀葉 「監芖察象の いずれか が 異状を瀺しおいたら、緊急察応の刀断を䞋す。そうでなければ匕き続き状況を監芖する」 「A、B、Cが すべお 芋぀かり、 か぀ 良奜な状態なら、合流地点に集合する」「どれかが芋぀からないか、 たたは 良奜な状態で ない 堎合は出発点に戻る」 etc.   ずいうように、 䞀般語でも論理挔算 第3回 ・ 第4回 参照に盞圓する蚀葉を䜿っお䞻匵を組み立おたり文を衚したりしたすそもそも、䞀般語の意味や働きから論理的偎面を抜出しお論理の蚀葉を䜜ったのですが。 吊定(NOT)に盞圓する䞀般語の䟋 “でない” 論理積(AND)に盞圓する䞀般語の䟋 “か぀”、“および”、“ならびに”、ほか、ANDの関係であるこずを明瀺する修食語句 論理和(OR)に盞圓する䞀般語の䟋 “たたは”、“あるいは”、ほか、ORの関係であるこずを明瀺する修食語句 䞀般語ずしお䜿われる時は、「論理の蚀葉( 論理的な偎面に焊点を圓おた䜿い方 )」ずは意味や働きがちょっず異なる堎合がありたす。 蚀葉は同じものを䜿うだけに、意味の違いを識別するのが難しいこずもありたす。  æ–‡ç« ã®ç­‹é“を把握しようずいう時には 「どの意味で䜿っおいるか」に泚意を向ける のが望たしいです。 ゜フトりェアやシステムの仕様曞ずいった文曞類は゜フトりェアの振舞いを芏定/蚘述するのが目的ですが、曞き手が「論理の蚀葉」を意識しお䜿っおいるずも限りたせん。 “でない”の留意点 論理ずしおの吊定は、党䜓を打ち消す 吊定「でない」は、「Aである」ずいう䞻匵や刀断 党䜓の吊定 であり、「A でないものや堎合すべお 」を含みたす。 「Aであるずいうこずはない」 ずいう衚珟がニュアンスずしおは“合っおいる”でしょうか。図5-1 図5-1 吊定のベン図 「Aさんは朝食にパンを食べる」の吊定は「Aさんは朝食にパンを食べる、 ずいうこずはない 」 「朝食を食べない」も含むし、「朝食には(パンでなく)癜米を食べる」も含む 「Bさんは毎日朝の散歩をする」の吊定は「Bさんは毎日朝の散歩をする、 ずいうこずはない 」 「朝の散歩を党くしない」も含むし、「朝の散歩をする時もある」も含む 「項目Aは敎数の入力項目に぀き項目Aに敎数を衚す数字 でない 文字を入力するず譊告される」 「敎数を衚す数字 でない 文字」には、英字、蚘号、挢字、平仮名、カタカナ、  などがある 䞀般語では、“反察の意”を衚すこずがある 䞀般語ずしおの吊定の衚珟には、「䞻匵党䜓の吊定」ずいうよりは、もずの䞻匵ず反察のこずを䞻匵したり、感情や考えが蟌められるこずがありたす。 「Cさんは若手に優しく ない 」は、「若手に厳しい」ずいう意味に解釈されるこずがある 「Dさんは、鶏の唐揚げは奜き ではない 」は、 「鶏の唐揚げは嫌い」や「食べたくない」ずいうニュアンスが蟌められおいるこずがある ほか、「今幎の入孊生は党員優秀 ではない 」、「その䜜家の䜜品は党郚読んで いない 」、etc. 数倀の範囲を衚す衚珟の吊定 吊定そのものの話題ではありたせんが、第3回で觊れた「数倀の範囲を衚す衚珟の吊定」ぞの補足です。 䞀般語では、「以䞊」ず「超」、「以䞋」ず「未満」を“曖昧に”衚し/解釈するこずがしばしばありたす。 「より倧きい(超)」の意味合いで「以䞊」ず蚀う 「○○以䞊」の吊定の぀もりで「○○以䞋」ず蚀う etc. SNS投皿のたずめサむトですが、栌奜の䟋がありたす。 「なら䜕ミリでもダメじゃね 」 束屋の䞁床いい肉の厚さに぀いお曞かれた ポスタヌのキャッチコピヌが難しい togetter この䟋のように気づきやすいずは限りたせんし、逆に、“論理的”な意味で䜿われおいるのを蚭蚈者や実装者が「解釈違い」をしおしたう  ずいう悲劇も起こる可胜性がありたす。 “か぀”(AND)の留意点 暗黙の“か぀” 䞀般的な文章では、暗黙の裡に論理積(AND)ず芋なされる読み手が芋なす堎合がありたす。 ANDであるこずを明瀺する接続語などは䜿われおいないが、文脈䞊「これらの条件を同時に満たすこず」が想定されおいるず読み手が解釈しやすい堎合です。 兞型的な䟋ずしお、条件や事項の 列挙 数倀の範囲を瀺す衚珟(「x以䞊y以䞋」など) 耇数の連続する事象で、先行する事象が埌続事象の前提ずなる堎合( 第2回の「ファむルを1文字ず぀出力するプログラム」の䟋 ) 「暗黙のAND」ず解釈できるからずいっお、その解釈が唯䞀で正しいずは限りたせん。 第1回の“䟋題”「遊園地のアトラクションの泚意曞き」 は、そのような衚珟になっおいたす。 本アトラクションは以䞋の方のみ利甚できたす。 ・身長130センチ以䞊190センチ以䞋 ・䜓重90キログラム以䞋 ・幎霢満15歳以䞊 これを最初にANDの関係ず思っお読んだ人は倚いのではないでしょうか。しかし、この衚珟はORの関係ずしお読んでも“劙なアトラクション”なりの条件ず解釈はできるでしょう「こんなのおかしい」「あり埗ない」ずいう感想は抱くかも知れたせんが。どちらずも明瀺されおいない以䞊、どちらの解釈が“正しい”かはこの箇所だけでは刀定できたせん。そしお、どう解釈したかによっお「そのアトラクションを利甚できる人/できない人」の条件も倉わっおきたす。図5-2 図5-2 3条件の AND? OR? ANDの関係であるこずを瀺す語句 論理積(AND)の関係を瀺すのに䜿われる語句はさたざたありたす。 “そしお”、“たた”、“さらに” 事項の列挙などで目にしたす。“そしお”は時間的順序関係を意味するこずもありたすが、ANDの関係には時間的な順序は含みたせん “だが”、“しかし”など逆接の接続語句 逆接の前埌が「ずもに成り立぀」ずした䞊での衚珟なので、ANDの関係になりたす 䟋「入力ファむルを開くこずができるが、䞭身が空の堎合」⇒ 「入力がファむルを開くこずができ、か぀、䞭身が空の堎合」 “たたは”(OR)の留意点 排他的な“たたは” 論理和(OR)の「どちらかが真」には「䞡方ずも真」の堎合も含たれたすが 第3回参照 、䞀般語の“たたは”は「 AかBかどちらか䞀方のみが成り立ち、A, Bずもに成り立぀こずはない 」ずいう意味で䜿われるこずも倚くありたす。 「容疑者Xの逃走先は、札幌か、たたは沖瞄だ」 札幌ず沖瞄に同時に向かうこずはできない 「サヌビスの賌入には、䞀括幎払いか、たたは月払いのどちらかが遞べたす」 䞀括の幎払いず月払いをずもに遞ぶこずはできない この意味合いでの“たたは”を「 排他的な“たたは” 」ず呌んで、論理和の“たたは”ず区別するこずもありたす。図5-3。 論理和の“たたは”は「包含的」 ずされたす 図5-3 論理和(å·Š)ず排他的な”たたは”(右) なお、「排他的な“たたは”」に盞圓する論理挔算もありたすが、論理和ずは異なる挔算です(真理倀衚が異なる)。 “ないし” 論理和(OR)を衚す蚀葉ずしお“ないし(乃至)”も䜿われるこずがありたすが、“ないし”には二通りの意味がありたす。 “たたは”、“あるいは”ず同矩 数量・時間などの䞊䞋・前埌の限界を瀺しお、䞭間を省略する際に甚いる 参考 goo囜語蟞曞  むすび 䞀般的な文章でも䜿われるAND/OR/NOTに盞圓する蚀葉の、論理の蚀葉ずしおの意味や䜿い方ず、䞀般語ずしおの意味や䜿い方、その違いや留意点を芋おきたした。普段はあたり意識するこずはないかも知れたせんが、仕事で読み曞きする時には泚意したしょう。 第6回では、これたで出おこなかった「文レベルの論理の蚀葉」を取り䞊げたす。 筆者のnoteサむトで、「論理スキル[再]入門」を曞こうず思った理由・経緯を綎っおいたす。 ■ 論理スキル・“入門線”のこず (T3:Pt1:Ch01) よろしかったらご芧ください。 参考文献 『入門論理孊』(野矢茂暹 / 䞭倮公論新瀟) 『論理的思考の技法〈1〉第2版 「ならば」をめぐっお』(鈎朚矎䜐子 / 法孊曞院) 『新版 論理トレヌニング』(野矢茂暹 / 産業図曞) 連茉䞀芧 [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 【連茉初回、党文公開䞭】 [第2回] プログラムレベルのロゞック (1)抂芁線 [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 [第4回] プログラムレベルのロゞック (3)解説線・論理挔算の組合せ [第5回] 文レベルのロゞック (1)文レベルのAND/OR/NOT The post [第5回] 文レベルのロゞック (1)文レベルのAND/OR/NOT first appeared on Sqripts .
こんにちは。たヌくヌくたねこです。 ゆるっずシリヌズ第5話です。 前回 から匕き続き、孊び盎し回です 曞籍「基本から孊ぶ゜フトりェアテスト」を読んで、珟圚でも掻かせる内容があるのかないのか䌚話圢匏でお話しさせおいただきたす。 最埌たで楜しんで読んでいただけければ幞いです 自己玹介 たヌくヌ QA業界経隓2x幎のベテランおじさん゚ンゞニア。 床重なる流行り病に䜓力が萜ち、黄昏行く街の䞭、癒しを求めおさたよい続けおたす。。。 くたねこ QA業界経隓1x幎の゚ンゞニア。 ゆるっずゞムに1幎間通い続け、䜓重 -5 ㎏、䜓脂肪率 -6 %を達成。 ゞムにいる本栌的な方々に憧れ、バンダナを着甚しお珟れる。 むラストby くたねこ くたねこ、䜕かが違う  今日も二人のやりずりをお楜しみください ただただ孊び盎しの旅は続く  ・・・今日もゞム行っおきたぞ りォヌキングだけえらいよくやったくたねこあっ、たヌくヌさんだ 䜕やら黄昏れおるぞ 昚日の疲れ匕きずったたたなのかなぁ ちょっずテンション高めに挚拶しおみよう。オゥむ゚ァたヌくヌさんお疲れ様ッスゥ(グヌタッチを求める) お、おう、お぀かれ ちょこんずグヌどうしたんだい䜕やら気合の入ったバンダナもしお  実はゆるっずゞムに通っおたしお、1幎前ず数倀を比范したら結構効果が出おいたんですよ通い始めはゞムに着くなりすぐ垰ろうずしおいたのですが笑、ゆるっず続けおいたら週ぐらいのペヌスに習慣化できおきたした。さすがに本栌的な方々ほど远い蟌めたせんが、雰囲気だけでも出しおいこうず、バンダナを巻いおいたすむェア 䜕かのキャラも混ざっおいる そ、そっか、匕き続き頑匵っおね私もお酒に呑たれおぶくぶく倪り始めたし よし、気合を入れよう早速だけど、今回は前回の続きで孊び盎ししおいくよ。曞籍は我らが神の垫匠が曞いた本「 基本から孊ぶ゜フトりェアテスト 」。今日は第1郚の第3章ず4章をやっおいこうず思う Yeah \ /蚳たヌくヌさん埩掻したけど、孊び盎しを忘れおなかった 第3ç«  テストの皮類ず䜍眮付け を読んで たずは「本章のねらい」からですね。本章では゜フトりェア開発プロセスや甚語、テスト技法に぀いお曞かれおいるずのこず。そしお、この曞籍を読むのを蟞めおしたう人は、倧䜓この章で挫折しおしたうず曞いおありたす (( ))  (震えおみる) 本章を䞀読した感じ、泚意曞き通り党おを现かく理解するずいうよりも、党䜓を広く理解できるようにしおいくず良さそうですが、どうしたしょう ふヌむ、そうだねぇ  (目が笑っおない小刻みに震えおいお怖いぞ笑。でも、䞋蚘のように曞いおあるし、固く考えすぎずにたずは抂芁を぀かめれば良いんだず思うよ。 ここでの目的は、プログラムの内郚蚭蚈に関しお、プログラマに基本的な質問が出来、回答の芁点を理解するこずにある。 基本から孊ぶ゜フトりェアテスト より そ、そうですね (( ))でもただビクビクしおいる・・・フェンスに腰かけよう。 じゃ、内容に入っおいこうか。曞籍に倣っお開発・テストのプロセスレベル蚈画段階蚭蚈段階コヌディング回垰テストブラックボックステスト保守で䞀旊敎理しおみたよ。それぞれの抂芁を理解芚えられるず良さそうだね。今日の䌚話で私たちが気づいたポむントを穎埋めしおみようか。 蚈画段階ず蚭蚈段階のテストでは、レビュヌを甚いお、正しさ、完党性、矛盟の有無、実珟可胜か、劥圓か、テスト可胜かずいう点に぀いお、レビュヌで怜蚌する必芁がある事を説明しおいたすね。 特にりォヌタヌフォヌル型開発だず、芁求仕様や蚭蚈が完党ではなく挏れが有ったりするず、出来䞊がったものも䞍完党な状態になるからね。レビュヌの皮類なんかは JSTQBFLのシラバス にもレビュヌ皮類の蚘茉があるね。シラバスだず非圢匏的レビュヌペアレビュヌなども蚘茉されおいるけど、こちらの曞籍では圓然やっおいる前提かな コヌディングのテストに぀いおは盛りだくさんですね。 うん。ホワむトボックステストのメリットや、皮類、それからメトリクスなど抂芁レベルだけど、蚘茉が倚いね。ミュヌテヌションテストの考え方はこの本の頃からあったんだぁっお、ちず勉匷䞍足を感じたよ 回垰テスト、テストず修正では、回垰テストの性質や、テスト蚈画からテスト完了たでの流れず、テストタむプに぀いお蚘茉されおたすね。 テストタむプは15皮類玹介されおいるね。状態遷移テストなんかなじみのテストタむプもあるし、テストタむプの埩習にはうっお぀けかもしれない。 保守・機胜拡匵では、移怍性テストに぀いお蚘茉されおいたす。 DBの移怍をした時、バヌゞョン違いのDBにそのたた移怍したらあちらこちらでプログラムが動かなくなったなんおこずもあった ハヌドりェアやOSを倉曎したずきには倧事なテストだよね。 たずめるずこんな感じかな 【第3章テストの皮類ず䜍眮づけたヌくヌくたねこたずめ】 良い感じですね「本章のねらい」でも曞いおありたしたが、自分なりに把握しやすいようにたずめおいくずわかりやすいです。Mark’s Map我々の経隓したテストは、ブラックボックステストの範疇が倚いですよね。 以前の蚘事 で曞いた状態遷移テストもこの䞭に含たれたすしね。 ゆるっず♪ファヌムりェアテストよもやた話 他にどの蟺りが気になったかな やっぱりビッグバンテストのずころの蚘茉が痺れたしたね ビッグバンテスト法ではシステムを完党に組み䞊げるたでモゞュヌルもプロセステストしない。党郚を同時にテストし、吹き飛ぶ時も党郚いっしょなのだ。 基本から孊ぶ゜フトりェアテスト より ふむふむふむふむふむふむふむふむテストの名前ず結果が痺れるなぁ  むむ これはたさに「今りブなプロゞェクトのBigbangで俺たちはヘロヘロになるぅ 」っお感じだね Woooowそしたらたヌくヌさんが最埌に「いったいなんだったんだ こんなテスト こんなバグぅ いったいなんだったんだ きっずなにもかもがちがうなにもかもちがうなにもかもがちがうWooooooo」っお蚀っお取り乱しお、もう䞀床Bigbang起こしお宇宙を誕生させおくださいニダニダ オゥヌケむお、おっけヌなのかなぁ 第3章はこのぐらいでしょうか。予定通り第4章たで、アクセル螏み蟌む感じですか Wow退屈が芋えない行くぞ Yeah \ /蚳ぎゃあ 第4ç«  ゜フトりェア゚ラヌ を読んで 第4章ぱラヌ退治の獲物゜フトりェア゚ラヌを13皮に分類しお蚘茉されおいたす。゚ラヌ退治 なんだか冒険に旅立぀ような気持ちです アドベンチャヌ アドベンチャヌ(笑)早速読み進めおいこうたずは「品質」っお䜕っおずころから説明しおいるね。 たヌくヌさん、ここの蚘茉も痺れるぅうう改めお気づかされたすが、仕様通りなこずを確認するだけのテストじゃあやっぱりダメなんですねひえぇヌ ゜フトりェア開発者の顧客の倚くは、このように知識があっお、明確に仕様を定矩しおくれるわけではない。こういった゜フトりェアを䜜る開発者にずっお、補品やサヌビスの品質ずいうのは顧客の満足床であっお、仕様に合っおいるずいうこずでは決しおない。 基本から孊ぶ゜フトりェアテスト より そうだね。゜フトりェアの品質に関する囜際芏栌SQuaREでは゜フトりェア品質ずは以䞋のように定矩されおいお、ドキュメント通りに動䜜するからず蚀っお品質が良いずは限らないんだよね。暗黙のニヌズにも泚意しないず、お客様に満足いただける品質≒テストにはならないんだ。 「明瀺された状況䞋で䜿甚されたずき、   明瀺的ニヌズおよび暗黙のニヌズを   ゜フトりェア補品が満足させる床合い」 ぀ながる䞖界の゜フトりェア品質ガむド より 同じようなこず蚀っおたすね(笑)珟代にも受け継がれおる 次に゜フトりェアの゚ラヌに぀いお蚘茉されおいるね。この蟺りの考え方は JSTQBFLのシラバス にも曞いおあるし、䞡方読むこずで゚ラヌずは䜕かに぀いお、より理解ができるず思うよ。 そうですね。本曞でぱラヌは13皮類に分類され蚘茉されおいお、読み返しお理解しおいきたいず感じたした。この郚分を理解しおおくこずで、探玢的テストや゚ラヌ掚枬テスト等のテストの匕き出しずしおも掻甚できるず感じたした。 Goodあず「テストに関する゚ラヌ」ずいうずころも気になったずころだね。テスト担圓者ずしおは枛らしたい「゚ラヌ」だけど、実際には操䜜を間違えおいたけれど結果的に䞍具合で修正ずなるようなケヌスもある。たた、本圓にテスト担圓者の操䜜ミスであったずしおも、テスト担圓者が間違えやすいむンタヌフェヌスはナヌザヌが䜿甚するずきにも問題ずなるかもしれない、ずいう考え方は良いなぁず思ったよ。 単なる「オペミス」だずテスト担圓者ずしおは恥ずかしいですけど、慎重に調べたうえで恐れずに報告できるようにしたいですね たずめ 今回は様々な甚語が出おきお、新たに芚える郚分が倚いず倧倉に感じる章だったず思いたす。でも、たヌくヌさんがリスト化しおいたように敎理しお、繰り返し読んで理解するこずで、実際の業務の䞭でテスト皮類ごずのポむントをおさえたテストが䜜成・実斜出来たり、゚ラヌを効果的に芋぀けられるようになれるず思いたす。 そうだね。実際のずころ、テストの皮類や甚語に぀いおは珟堎によっお衚珟が倉わったりするこずもあるけれど、本曞の内容を自身の土台ずしお理解しおおくこずは有効だず思うよ。今回もためになる情報を埗るこずができたね俺たちはもっずもっず孊び続けお行かなければ バヌむ  侉 Yeeeeeeeeeeaaaaaaaaaah \ / 次回予告 基本線も残りは第5章だけだね。このたたやっおも良さそうだけど、第5章ず第6章は障害関連だから、今回はここたでにしようか。次回はどんな感じかな 次回のたヌくヌくたねこは、 JSTQB ALTM詊隓、勉匷しおるのただでしょ仮 JSTQB ALTM詊隓、受けるかもどうしたしょ仮 最埌たで読んでいただき、ありがずうございたしたよろしければ、過去のゆるっず♪シリヌズもお楜しみください次回もたた芋おねヌ  侉  侉 The post ゆるっず♪孊び盎し[曞籍] 基本から孊ぶ゜フトりェアテスト②あきらめおしたわないでね 難しさ感じおも first appeared on Sqripts .
むベント抂芁 垂堎の䞍確実性・リリヌススピヌドなどモノづくりにおける課題の倚様化・仕組みの高床化など、開発珟堎では様々な倉化が求められる時代になっおいたす。もちろんテスト・QAにおいおもスピヌド感やAIの掻甚がより求められるようになっおきおいたす。 本むベントではQA業界のパむオニア3名が”アゞャむル・AI時代における品質保蚌の今”ずいうテヌマで、そんな時代を生き抜くためのヒントを皆様にお届けしたす。 本むベントは AGEST Testing Lab の所長である高橋 寿䞀、研究に協力頂いおいる鷲厎 匘宜氏、そしおゲストスピヌカヌの平鍋 健児氏による研究発衚ずなりたす。 QA業界のパむオニアの講挔ず立食圢匏での情報亀換䌚による、 オフラむンならでは の䜓隓をお届けしたす。 ※1 アゞャむル・AI時代を生き抜くための品質保蚌の知芋ず、共に孊ぶ仲間ずの぀ながりを埗る貎重な機䌚をお芋逃しなく ※1 オンラむン配信はありたせん Sqripts䌚員限定でご招埅 今回は圓セミナヌにSqripts䌚員のみなさたを抜遞でご招埅したす。 ぜひご参加ください。 ご来堎者特兞 知識れロから孊ぶ゜フトりェアテスト 第3版 アゞャむル・AI時代の必携教科曞(高橋 寿䞀 著) をプレれント â–Œ セミナヌ参加応募フォヌムはこちら Speakers 鷲厎 匘宜 氏 早皲田倧孊 グロヌバル゜フトりェア゚ンゞニアリング研究所所長、早皲田倧孊基幹理工孊郚情報理工孊科教授、囜立情報孊研究所客員教授 コンピュヌタに関する䞖界最倧の孊䌚IEEE Computer Societyの次期䌚長2025幎 䌚長を務めるずずもに、情報凊理孊䌚゜フトりェア工孊研究䌚䞻査を務め、゜フト りェア゚ンゞニアリングや関連技術の展開を囜内倖でリヌド。研究宀では産孊官連携ならびに囜際連携を通じおビゞネスず瀟䌚のための知的゜フトりェア゚ンゞニアリングの研究、教育、実践、瀟䌚実装を掚進。゜フトりェア解析や品質評䟡・高信頌化、再利甚および機械孊習応甚を埗意ずし、それらの適甚を通じおの芁求から蚭蚈、実装、テスト・怜蚌、運甚・保守、ビゞネス接続、さらには情報教育・人材育成たで幅広く成果を䞊げおいる。 平鍋 健児 氏 ゲストスピヌカヌ 株匏䌚瀟 氞和システムマネゞメント 代衚取締圹瀟長、株匏䌚瀟チェンゞビゞョン 代衚取締圹CTO、Scrum Inc.Japan 取締圹 1989幎東京倧孊工孊郚卒業埌、UML゚ディタastah*の開発などを経お、珟圚は、アゞャむル開発の堎、Agile Studio にお顧客ず共創の環境づくりを実践する経営者。 初代アゞャむルゞャパン実行委員長、著曞『アゞャむル開発ずスクラム 第2版』野䞭郁次郎、及郚敬雄ず共著 他に翻蚳曞倚数。 DXを加速するアゞャむル 倉化を味方にしたチヌムづくり プロロヌグ — 平鍋健児氏ずアゞャむル 高橋 寿䞀 情報工孊博士 株匏䌚瀟AGEST チヌフ技術アドバむザヌ、AGEST Testing Lab.所長、AGEST Academyå­Šé•· フロリダ工科倧孊倧孊院におCemKaner博士(探玢的テスト手法考案者、JamesWhittaker博士(How Google Tests Software著者に゜フトりェア品質の指導を受けたあず、広島垂立倧孊にお゜フトりェア品質研究により博士号取埗。 Microsoftシアトル本瀟・SAPゞャパンで゜フトりェアテスト業務に埓事、゜ニヌ(æ ª)゜フトりェア品質担圓郚長を経お、珟圚は株匏䌚瀟AGEST チヌフ技術アドバむザヌ、AGEST Testing Lab.所長及びAGEST Academy孊長を兌務。 日時・堎所 日時 2024幎3月7日朚曜日15:0018:00Door Open 14:45 ※講挔は15:00-16:55 その埌立食圢匏の情報亀換䌚を17:00-18:00で開催したす 堎所 垝囜ホテル東京 本通2階 蘭の間 〒100-8558東京郜千代田区内幞町1-1-1 亀通アクセス 垝囜ホテル東京「アクセス」ペヌゞ タむムテヌブル 15:00-15:05 開䌚挚拶 15:05-15:45 鷲厎 匘宜 氏 講挔 アゞャむルメトリクスの党䜓像ず利甚者・顧客満足に向けお 15:45-16:25 平鍋 健児 氏 講挔 デゞタルビゞネスの朮流ずアゞャむル開発〜ビゞネスず゚ンゞニアの協働チヌムづくり〜         16:25-16:55 高橋 寿䞀 講挔 AI時代の゜フトりェアテスト入門シフトレフトするのシフトラむトするの 16:55-17:00 䌑憩・移動 (本通2階 牡䞹の間) 17:00-18:00 情報亀換䌚 (立食圢匏) 18:00 閉䌚 â–Œ セミナヌ参加応募フォヌムはこちら 募集芁項 応募資栌 2024幎2月21日氎19時時点で参加応募フォヌムからのお申蟌みか぀、 Sqripts無料䌚員の登録が完了しおいるこず 応募方法 䞋蚘「セミナヌ参加応募フォヌム」に入力の䞊ご応募ください。 Sqripts䌚員未登録の方は、応募フォヌム入力埌画面より無料䌚員登録をお願いしたす。 Sqripts無料䌚員登録は こちら  応募期限 2024幎 2月 21日氎19時00分 定員 50名応募倚数の堎合は抜遞 参加費 無料 来堎者特兞 知識れロから孊ぶ゜フトりェアテスト 第3版 アゞャむル・AI時代の必携教科曞(高橋 寿䞀 著) をプレれント 圓遞発衚 抜遞結果は2月䞋旬にメヌルでご連絡したす ご案内 圓日参加される方は、お名刺を2枚ご持参ください セミナヌ参加応募フォヌム MktoForms2.loadForm("//lp.agest.co.jp", "730-KXO-656", 1808); お問い合わせ先 圓セミナヌに関するお問い合わせ先 株匏䌚瀟AGEST マヌケティング本郚 Mail ml-mk_web@agest.co.jp The post ◆Sqripts䌚員をご招埅◆3.7開催QA業界のパむオニアが語るアゞャむル・AI時代の品質保蚌の今 first appeared on Sqripts .
このシリヌズでは「組織におけるパスワヌド管理」をテヌマに、パスワヌド管理の重芁性、危険性、攻撃に察する備え、ベストプラクティスに぀いおお䌝えしおいきたす。 第1回は、パスワヌドの基瀎知識ず䞻な管理手法に぀いお解説したす。 パスワヌドの基瀎知識 「パスワヌド」ずは、最も長く、たた最も倚く利甚されおいる認蚌芁玠の䞀぀です。䞻な利甚方法ずしおは、固定のパスワヌドをナヌザヌが事前に蚭定し、認蚌時にそれを入力しお利甚したす。 認蚌の芁玠ずしお、ナヌザヌが “知っおいるこず”(what you know)に基づく方匏であり、知識認蚌で代衚的なものず蚀えたす。 パスワヌドを甚いる認蚌においおは、䜕らかの生成手順暗号化アルゎリズムにより生成される暗号文がパスワヌドの実態です。圓然のこずながらパスワヌド自䜓の秘匿性を保぀こずで、認蚌芁玠ずしおの圹割を果たしおいたす。 パスワヌドの歎史 Cepheus, Public domain, via Wikimedia Commons 珟圚ではPCやスマヌトフォンなど様々なシヌンで䜿甚されおいる「パスワヌド」ですが、その起源は暗号の歎史ず密接に関わっおおり、本質的な起源は玀元前の時代たで遡るず考えられおいたす。 䟋えば、歎史的に有名な「シヌザヌ暗号」は玀元前玄100幎に誕生しおたす。 シヌザヌ暗号 は「特定の文字列を3文字ずらすずいう暗号化アルゎリズム」から暗号文が生成される仕組みずなっおおり、この暗号文を「パスワヌド」ず捉えるこずもできるのです。 䞀方で、より䞀般的な意味でのパスワヌドは 、 むンタヌネットが誕生した1960幎代にマサチュヌセッツ工科倧孊MITで誕生したずいう説が有力です。パスワヌドの歎史がいかに長いか想像に容易いかず思いたす。 パスワヌドの特城ず珟状メリット、デメリット 認蚌方匏の䞀぀ずしお広く利甚されおいるパスワヌド認蚌ですが、メリット、デメリットも存圚 したす 。 それぞれ、䞻なものをご玹介したす。 メリット シンプルで䟿利 パスワヌドは特定の文字列を組み合わせれば生成可胜であり、老若男女問わず誰でも利甚が可胜。 高い普及率 䞊述の理由にも䟝存 したす が、Webサむトはもちろん、IoT機噚等のシステムリ゜ヌスが限られる条件䞋でもシンプルな仕組みゆえに、実装可胜な堎合が倚く、普及率は矀を抜いおいたす。 「 パスワヌドレス 」 ずいう蚀葉が䞀般蚀語化し぀぀ある珟圚でも、パスワヌド認蚌を前提にするアカりントは増加傟向にありたす。 デメリット 忘れたら終わり パスワヌド自䜓を忘れた堎合、パスワヌドリセット手続きを正しく行える堎合を陀き、基本的に二床ず該圓アカりントにアクセスできないずいうデヌタ消倱のリスクがありたす。 安党性の䞍安 䟿利さず高い普及率ずいうメリットの裏返しずしお、䞻に“䜿い回し”や、“匱いパスワヌド利甚”に代衚される䞍適切なパスワヌド利甚・管理が䞀般化しおいるず蚀わざるを埗たせん。サむバヌ攻撃の玄8割でパスワヌドを含む認蚌情報が悪甚されおいるずいう調査結果 ※1 があるなど、安党面においお課題があるず蚀えたす。 ※1出兞verizon data breach investigations report 2022 パスワヌドの管理 パスワヌドが䟿利であるこずは疑いの䜙地がないのですが、珟圚のサむバヌ攻撃で最も頻繁に狙われる情報の䞀぀がパスワヌドであるずも蚀えたす。このため、パスワヌドの適切な管理なくしおは、パスワヌドを認蚌芁玠の䞀぀ずしお䜿甚するこずが難しくなっおきおいたす。ここでは、パスワヌド管理の䞻な手法ず特城を考察しおいきたいず思いたす。 パスワヌド管理の手法ず特城 䞻なパスワヌド管理手法は以䞋の3皮類ずなりたす。ここでは、各管理手法のメリット・デメリットを定量的な芖点を含めお解説したす。 メモ/手垳で管理する シンプルで䜎コストであるこずが䞻なメリットです。たた、技術的なセキュリティの芳点では、オフラむンであるこずからサむバヌ攻撃に察しお高い耐性があるこずもメリットずな りたす 。 䞀方で、パスワヌドを利甚するためには垞に持ち運ぶ必芁があり、メモ/手垳自䜓を 忘れる可甚性の䜎さ 玛倱する機密性の䜎さ 芗き芋される機密性の䜎さ 可胜性が高いずいう、物理的なセキュリティの芳点でのデメリットがありたす。 たた、パスワヌド利甚時に毎回キヌボヌド入力をしなくおはいけないずいう業務効率性の䜎さも倧きなデメリットです。 パスワヌドを利甚するたびに毎回キヌボヌド入力を行う時間を詊算しおみたしょう。 䞀般的な組織の劎働圢態ずしお、1日8時間劎働、幎間䌑日120日の組織をモデルケヌスずし、1日圓たりパスワヌド入力に芁する時間を5分ず仮定するず、以䞋の蚈算匏分の時間が幎間でパスワヌド入力䜜業に割かれおいるこずになりたす。 [䞀人圓たりが幎間でパスワヌド入力䜜業に割く時間] 245日(365日―120日) × 5分  1,225分  20時間25分  2.5日 /人 *5分は想定ずなり、パスワヌド忘れやメモ/手垳を探す時間等は含めおおりたせん。 曎に、これが1000人の組織であれば組織党䜓でパスワヌド入力䜜業に芁する時間は以䞋の通りです。 [䞀組織が幎間でパスワヌド入力䜜業に割く時間] 2.5日 × 1,000  2,500日/組織 1,000人の組織ではパスワヌド入力䜜業に幎間で2,500日を費やしおいるこずずなり、いかに無駄が発生しおいるか理解するこずができたす。党おの埓業員がメモ/手垳で管理しおいるケヌスはあたりないずは思いたすが、定量的芳点で業務の無駄を評䟡する際に参考にしお頂ければず思いたす。 スプレッドシヌト゚クセルで管理する シンプルで䜎コストであり、PC等があれば利甚できる利䟿性の高さが䞻なメリットです。 䞀方で、パスワヌド利甚時にキヌボヌド入力若しくはコピペが必芁ずなる業務効率性の䜎さ、オンラむン管理ずなるためPC等がマルりェア感染した堎合に容易に情報挏掩しおしたうサむバヌ攻撃ぞの耐性の䜎さが䞻なデメリットずなりたす。 実際に、スプレッドシヌトを暗号化せず匱いパスワヌドによる暗号化も含むPCのデスクトップ等に保管しおいるケヌスがほずんどかず思いたすが、このような管理䞋でサむバヌ攻撃に遭うず、管理しおいるパスワヌドは容易に挏掩しおしたいたす。 たたメモ/手垳ほどではないにしろ、パスワヌド利甚時に毎回スプレッドシヌトを開き、デヌタを探し、コピペする時間の無駄も無芖できたせん。 以䞋はメモ/手垳で蚘茉した想定ず同じ条件で、スプレッドシヌト管理によるパスワヌド入力䜜業の無駄を定量的に分析する際の参考ずなりたす。 [䞀人圓たりが幎間でパスワヌド入力䜜業に割く時間] 245日(365日―120日) × 1分  245分  4時間  0.5日 /人 *1分は想定ずなり、スプレッドシヌトを探す時間等は含めおおりたせん。 [䞀組織が幎間でパスワヌド入力䜜業に割く時間] 0.5日 × 1,000  500日/組織 パスワヌドマネヌゞャヌ で管理する パスワヌドマネヌゞャヌには䞻に無償ツヌル䟋Google、Microsoft等のブラりザ機胜ず有償ツヌル䟋Keeper、LastPass、1password等が存圚したす。 無償ツヌル、有償ツヌル共に最倧のメリットは、パスワヌド入力、生成ずいった䜜業が䞍芁ずなり、パスワヌドを「芚える必芁がなくなる」こずず蚀えたす。 パスワヌドマネヌゞャヌ導入による業務効率化の定量的な分析は、珟圚のパスワヌド管理手法の状況に応じお、既述の [パスワヌド入力䜜業に関わる蚈算匏] で算出された時間がほが無くなるため、組織党䜓では倧きな効果が埗られるず蚀えたす。 䞀方で、デメリットずしおは、 無償/有償を含め、ツヌル遞定が難しいこず パスワヌドマネヌゞャヌベンダヌ自䜓がサむバヌ攻撃に遭った際のサヌドパヌティヌリスクが存圚するこず が挙げられたす。 尚、パスワヌドマネヌゞャヌの遞定時のポむント等に぀いおは、別の蚘事で詳しくご玹介したす。 たずめ パスワヌドの歎史は叀く、最も普及しおいる認蚌芁玠である。 パスワヌドは知識認蚌に基づく認蚌芁玠である。 パスワヌドはシンプルで䟿利であるが、䞀方で䞍適切な管理を原因ずしたセキュリティ䞊の課題がある。 サむバヌ攻撃の玄8割でパスワヌドを含む認蚌情報が悪甚されおいる。それだけ、攻撃する偎にずっおも貎重な情報ず蚀える。 パスワヌド管理の手法は䞻に「メモ/手垳」「スプレッドシヌト」「パスワヌドマネヌゞャヌ」の぀があり、それぞれメリット/デメリットがある。 「メモ/手垳」「スプレッドシヌト」による管理手法では、パスワヌド入力䜜業ずいう時間の無駄が発生する。 「パスワヌドマネヌゞャヌ」による管理手法では、パスワヌド入力䜜業ずいう時間の無駄を改善するこずができる。 次回はブラりザのパスワヌドマネヌゞャヌの危険性に぀いお解説したす。 The post 【第1回】パスワヌドの基瀎ず䞻な管理手法に぀いお first appeared on Sqripts .
初めたしお。QA゚ンゞニアのたちこです。今はお客様先に垞駐しおWebシステムのUATを担圓しおいたす。テスト分析・蚭蚈、テスト実斜を行う毎日です。 QAの仕事に携わっお幎、今では圓たり前のようにテスト分析・蚭蚈、テスト実斜を行っおいたすが、ただテスト初心者で初めおテスト蚭蚈しお䜜成したテスト仕様曞は、ただテストベヌスのドキュメントに蚘茉しおあるこずだけをコピヌしたようなものでした。テストケヌスの内容も蚘茉方法も党く䞍足しおいお、今の私なら恐ろしいほどのダメだしをしおいるはずです。 「テスト担圓者は、期埅結果を識別する際、画面䞊の出力だけでなく、デヌタおよび環境的な事埌条件も考慮する。テストベヌスが明確に定矩されおいるず、理論的には、正しい結果を容易に識別できる。ただし、テストベヌスのドキュメントは、曖昧で矛盟を含み重芁な領域をカバヌしおいないか、もしくはたったく存圚しないこずがある。」 ISTQB® テスト技術者資栌制床 Advanced Level シラバス日本語版 テストアナリスト Version 3.1.1.J03 1.4.2 テストケヌスの蚭蚈 䞊蚘のようにJSTQBシラバスにも蚘茉がありたすが、テストベヌスのドキュメントは曖昧だったり、矛盟を含むこずがありたす。時には蚘茉内容が䞍足しおいるこずもありたす。その䞭で詊行錯誀し「今では圓たり前」ずいえるようになったテスト分析・蚭蚈、テスト実斜の私なりのコツ心がけおいるこずをご玹介したす。 蚘茉内容から想像・想定を膚らたす 私が仕様理解をする際に心がけおいるこずなのですが、想像・想定を膚らたせながらテストベヌスのドキュメントを読み進めおテストベヌスの「抜け挏れ」を防ぐこずです。 䟋えば・・・ テストベヌスにナヌザヌ登録の手順に぀いお、以䞋の蚘茉があったずしたす。 ■ナヌザヌ登録は次の手順ずする Step1 個人情報入力 Step2 勀務先情報入力 Step3 その他情報入力 Step4 [登録]ボタン クリック 登録完了 このような堎合に 蚘茉通りの手順でのナヌザヌ登録の怜蚌 各Stepでの入力倀の怜蚌が必芁 Stepはスキップが可胜なのだろうか→スキップできるか吊かの怜蚌も必芁 前のStepに戻るこずは可胜なのだろうか→前のStepに戻る怜蚌も必芁 前のStepに戻れたずしお、入力内容は保持されおいるだろうか 等・・・ このような想像は、今たで行っおきたテスト分析・テスト蚭蚈・テスト実斜の経隓が発想の元になっおいるず思いたす。たた、他の方が䜜成したテスト仕様曞のレビュヌからも気づきを埗おきたした。 他にも自分が普段䜿っおいるWEBサヌビスやアプリケヌションを利甚しおいお感じたこずも発想の元になっおいたす。䟋で挙げた「前のStepに戻れたずしお、入力内容は保持されおいるだろうか」ずいう芳点も、アンケヌトの入力䞭に前のペヌゞに戻った際に入力した倀がクリアされおいお䜿いづらさを感じた経隓から想像に至っおいたす。想像を膚らたせお思い぀けるこずは個人差がありたすが、たずは蚘茉内容だけを鵜呑みにするのではなく、意識的に「䜕か他に必芁な怜蚌はないか」ず想像するこずを心がけおいたす。 必芁な怜蚌内容を想定したり、他にどんな怜蚌が必芁かを想像しながらテストベヌスを読み進め、想定した怜蚌内容や䞍明点などを曞き留めおおくようにしたす。 テストベヌスを読み進めお疑問に思っおいたこずが蚘茉されおいお疑問が解消できれば、それをテストケヌスの期埅倀ずしお怜蚌内容を想定できたす。最埌たで残った疑問は開発者ぞ質問したす。 開発者に質問した結果、回答がただの蚘茉挏れであれば、察象のテストベヌスに蚘茉しおもらえば蚘茉挏れを防ぐこずができたこずになりたす。 回答が蚘茉挏れではなく仕様の怜蚎がなされおいなかったために蚘茉しおいなかった、ずいった仕様の怜蚎挏れだった堎合、質問したこずで開発者に仕様怜蚎挏れに気づいおもらうこずができたすので、仕様の怜蚎挏れを防ぐこずができたこずになりたす。 テストベヌスの蚘茉内容が充実すれば、テスト分析・テスト蚭蚈もやりやすくなりたす。なので、仕様理解を進める際に蚘茉内容を鵜呑みにするのではなく、1぀の蚘茉から想像を膚らたせお怜蚌内容を想定しおいくのが1぀目のコツです。 曖昧をそのたたにせずに明確にする 繰り返しになりたすが、テストベヌスのドキュメントは曖昧なこずがありたす。蚘茉が曖昧だずテストケヌスの期埅倀の蚘茉もそのたた曖昧ずなりたす。 䟋えば・・・ テストベヌスのドキュメントの蚘茉に「䞍正な堎合に゚ラヌメッセヌゞを衚瀺する」ずあったずしたす。それをそのたたテストケヌスの期埅倀に採甚したらどうなるのでしょうか自分がテスト実斜する際にテストケヌスの期埅倀ずしお「゚ラヌメッセヌゞを衚瀺する」ずだけあったら、正しく刀断できるでしょうか メッセヌゞの文蚀は䜕 メッセヌゞの衚瀺圢匏はどんなむンラむンで衚瀺メッセヌゞダむアログを衚瀺 ずテスト実斜時に䞍明点が出おしたいたす。 実際に私が参画しおいたプロゞェクトで、テスト実斜のヘルプに入った別チヌムのテスト仕様曞の期埅倀が「゚ラヌメッセヌゞを衚瀺する。」ずなっおいたこずがありたした。衚瀺されたメッセヌゞが正しいものであるのか刀断するこずができずに、テスト仕様曞の䜜成者に確認を取ったり、参照したテストベヌスのドキュメントを探したり、ドキュメントから該圓のメッセヌゞを探し出すずいった䜙蚈な時間がかかっおしたいたした。 䜙蚈な時間がかかるだけではなく、実斜者によっおは衚瀺されたメッセヌゞの内容たで確認せずにメッセヌゞが衚瀺されおいたのでOKずしおしたうかもしれたせん。 テスト仕様曞の蚘茉は、初めお実斜する人でも分かるように確認手順や怜蚌結果の期埅倀は明確に蚘茉されおいるこずが理想です。ですが限られた時間のなかで䜜成するこずもあり、テスト仕様曞を詳现に䜜り蟌むこずができないこずもありたす。 そんな時でも可胜な限り、 テストベヌスの蚘茉内容が曖昧な堎合にはテスト蚭蚈時たでに開発者に質問しお蚘茉内容を明確にするこず テスト仕様曞の確認手順や怜蚌結果の期埅倀は曖昧にせずに明確に蚘茉するこず を心がけおいたす。 テスト実斜者が効率よく、迷うこずのない優しいテスト仕様曞を䜜成できるように、テストベヌスの蚘茉内容の曖昧さやテスト仕様曞の蚘茉を明確にするこずが2぀目のコツです。 ナヌザヌがやるかもしれないず想像しおやっおみる ナヌザヌがやるかもしれないず想像する・・・ずいうずナヌスケヌスを想定しおテストシナリオを考える。ず思われるかもしれたせんが、ちょっず違っおテスト実斜時にテストケヌスにはないけどちょっず気になったこずを「ナヌザヌがやるかもしれない」ず思っおやっおみるずいうこずなんです。 䟋えば・・・ [登録]ボタンをクリックしおから凊理が完了するたでの凊理䞭に、画面に倉化がなく[登録]ボタンがクリックできる状態になっおいたら ナヌザヌに凊理が開始されたのか分からないじゃん ナヌザヌはもう䞀回ボタンをクリックするかも、いや連打しちゃうかも みたいに思ったりしたせんかそんな颚に思ったらテストケヌスには蚘茉はないけどやっおみるんです。 実際にテスト実斜䞭に、ボタンクリック埌の凊理䞭にボタンがクリックできる状態だったこずがあったのでボタンを連打しおみたんです。そしたらアプリケヌションが固たっおしたったずいうこずがありたした。 テストケヌスには「凊理䞭にボタンをクリックする」ずはなくおも、”もしかしたらナヌザヌがクリックしちゃうかもしれないので、クリックしおみよう。”ずナヌザヌがやっちゃうかもしれないず想像しおやっおみるこずで朜んでいたバグを芋぀けるこずができたした。 たた画面に倉化がなく凊理が開始されたのが分からないので「凊理䞭なら凊理䞭ず分かる画面衚瀺にした方がナヌザヌには分かりやすいのでは」ずいった、ナヌザヌにずっお分かりずらい画面衚瀺になっおしたっおいたずいった気づきを埗お問題点を開発者に提瀺し、改善に繋げられたこずもありたした。 このようにテスト実斜䞭にちょっず気になったこずをそのたたにせず、ナヌザヌのこずを想像しおやっおみるこずが3぀目のコツです。 たずめ 今回玹介した぀のコツは、誰もが無意識で実践しおいるような圓たり前のこずかもしれたせん。テスト分析・蚭蚈、テスト実斜がちょっず難しくお苊手ず思っおいる方でも、これらのコツを意識するこずで効果はあるず思いたす。私が今日に至るたでテスト分析・蚭蚈、テスト実斜時に心がけ、実践しお効果がありたしたので そしお、皆さんも日々詊行錯誀しながら自分なりのコツを掎んでより良いテスト分析・蚭蚈、テスト実斜ができればず思いたす。 最埌たで読んでいただき、ありがずうございたした。 The post 無意識から意識的にやさしいテストのコツ first appeared on Sqripts .
本連茉ではプロゞェクトマネゞメントの党䜓像ずプロゞェクトを成功させる䞊で最䜎限抑えるべき知識ず技術はもちろん、プロゞェクトを炎䞊させないための技術やコツをお䌝えしたいず思っおいたす。 みなさんのプロゞェクトが今以䞊に充実し、笑顔でプロゞェクト終結を迎えられるよう䞀緒に孊んでいきたしょう。 第5回ずなる今回のテヌマは「スコヌプマネゞメント」です。  プロゞェクトマネゞメント成功の技術 連茉䞀芧 ※クリックで開きたす 【第1回】プロゞェクトマネゞメントずは䜕か  連茉初回党文公開䞭Sqripts䌚員以倖の方も党文お読みいただけたす 【第2回】プロゞェクトマネヌゞャヌの圹割ずは 【第3回】ステヌクホルダヌマネゞメントの重芁性ず進め方 【第4回】プロゞェクトの統合マネゞメント、7぀のプロセス スコヌプマネゞメントの目的ずは䜕か プロゞェクトの成功に䞍可欠な掻動がこのスコヌプマネゞメントです。同じ目的・目暙に向かっおいるようで実は違う方向を向いおいた、プロゞェクト埌に出来䞊がるシステム成果物に食い違いがあった、ずいうこずは日々のプロゞェクトに少なくありたせん。芖座を合わせる、同じ目的・目暙に向かう、目的目暙を達成しおプロゞェクトをゎヌルたらしめるための「地図」がスコヌプであり、地図に沿っお進めおいくこずがスコヌプマネゞメントです。 (1) 二぀のスコヌプ プロゞェクトでは「プロダクトスコヌプ」ず「プロゞェクトスコヌプ」二぀のスコヌプを明らかにしたす。 ぀たり私たちは䜕を䜜るのかそしお䜜るためにどんな準備や䜜業が必芁かを怜蚎しお、明確にしたしょうずいうこずです。 䟋えば「フルヌツを䜿った新䜜ラヌメンを䜜りたい」ず考え、そのために先ず近隣のラむバル店を調査しメニュヌ考案し、材料を揃え調理、詊䜜や提䟛䟡栌の決定などを経おお客様ぞ提䟛できるよね、ずいう定矩をしたす。どんなものを䜜りたいかずいうゎヌルむメヌゞであるプロダクトスコヌプがなくおはい぀たでも成果物は䜜れたせんし、圓然そのために䜕をすればいいかも明確になりたせん。これら぀のスコヌプは垞に察の関係で考え、敎理しおいきたしょう。 (2) プロゞェクトスコヌプずは スコヌプScopeの語源は「芋る・芳察」を意味するラテン語の「scopium」で、「可芖・適甚・察象の範囲」を指したす。プロゞェクトマネゞメントにおける「スコヌプ」も同じ意味の掻動を意味したす。 【第1回】プロゞェクトマネゞメントずは䜕か でも「独自の目暙ず期限を持぀のがプロゞェクトの特城」であり、プロゞェクトをマネゞメントするこずは、プロゞェクトを「その技術や経隓を適甚しながら、適切にダリクリマネゞメント」する必芁があるずお䌝えしたした。そのように様々な制玄の䞭でプロゞェクトを成功させるには、目的を明確にするこず、どこからどこたでを実行範囲ずするかを定め、達成できるようにマネゞメントするこずがずおも重芁です。 たた、今埌みなさんがプロゞェクトスコヌプを怜蚎する時に忘れないでいただきたいのは「範囲は やるこず だけでなく、 䜕をやらないか範囲倖か も必ず決める」ずいうこずです。 成果物ややるべきこずは挏れなく決められおいるか 䞍芁な成果物はなにか䜜業はなにかそれらが含たれおいないか (3) スコヌプクリヌプを回避する、転ばぬ先のスコヌプマネゞメント スコヌプクリヌプScope Creepずいう蚀葉をご存知でしょうか スコヌプクリヌプずは、プロゞェクトで決めた/定矩した成果物や範囲などが調敎なしに逞脱・倉曎されおネガティブな事象を指したす。プロゞェクトにおいお倉曎は䞍可避だず蚀えたすが、ここでいう倉曎は「調敎のない・倉曎手順に則っおいない」倉曎を指したす。スコヌプクリヌプずいう蚀葉を䜿っおいなくおも「远加芁求・倉曎・差し蟌み」ず蚀えばみなさんの想像にも易く、い぀でも誰にでも起こるずいうずがわかるでしょう。 ● PMIProject Management Instituteの調査によるずプロゞェクトの50%でスコヌプクリヌプが発生しおいる参考 PMI  ● クリヌプ珟象 クリヌプ(creep)は、物䜓に持続応力が䜜甚するず、時間の経過ずずもに歪みが増倧する珟象 プロゞェクト開始埌に予期せぬ倉曎を芁求された チヌムが把握しおない機胜があった远加された 远加の成果物を求められた 成果物の玍期を急に早められた するずどうでしょうか、倉曎に䌎い想定倖のスケゞュヌルやコストの増加調敎が必芁になったり、察応者の䞍足、チヌムから䞍満や䞍安の声も出るかも知れたせん。その圱響床によっおは、プロゞェクトは䞀気に窮地に远い蟌たれたす。 ではスコヌプクリヌプはなぜ起こるのでしょうか 理由は様々で明確なトリガヌがある蚳ではありたせんが、筆者の経隓から元々のスコヌプ蚭定の甘さ、スコヌプの合意が曖昧だった、ステヌクホルダヌが耇雑だったり巻き蟌めおいなかった、コミュニケヌション䞍足、最終合意䞍足などが挙げられたす。 プロゞェクトの倧きなリスクずなるスコヌプクリヌプを少しでも枛らし、プロゞェクトを成功に近づける為、適切なスコヌプマネゞメントを行いたしょう。そのためにも、次から6぀のステップを意識しお進めおみおください スコヌプマネゞメント6぀のステップ (1) スコヌプマネゞメントの蚈画 たず初めにスコヌプマネゞメントをどう進めるか「蚈画」を立おるこずから始めたす。簡単に蚀えば、6぀のステップの2から6をどのようにしお進めるかずいう蚈画です。 䜜成するドキュメント スコヌプマネゞメント蚈画曞 プロゞェクトのスコヌプをどのように定矩、䜜成し、監芖・コントロヌルし、その劥圓性を確認するかずいったこずを蚘茉する。 芁求事項マネゞメント蚈画曞 芁求事項の敎理・分析、メンバヌの具䜓的マネゞメント方法などを蚘茉する (2) 芁求事項の収集 先ずはプロゞェクトに䜕が求められおいるのかを収集・敎理する非垞に重芁なステップです。芁求ず芁件の違いにも泚意したしょう。 「やっおほしいこずをやりたいこずを芁求ずしお敎理すればいいんでしょ」「プロゞェクト憲章やINPUT文曞があるから十分」ず考えおは倱敗の始たりです。確かに、プロゞェクト憲章を元に䜜業範囲や成果物を定矩したすが、ほずんどの堎合は十分ではありたせん。プロゞェクトの成功は、ニヌズを発掘しプロゞェクトプロダクトの芁求事項に芁玠分解できお初めお実珟されたす。そのためにステヌクホルダヌに積極的な関䞎を促すこず、ドキュメントの有無に関わらずステヌクホルダヌぞのヒアリングを行うこずを省略せず、しっかりず芁求事項を文曞化し芁求骚子ずしお残すこずが重芁です。 䜜成されるドキュメント 芁求事項文曞機胜芁求事項、非機胜芁求事項、プロゞェクト芁求事項、品質芁求事項 芁求事項トレヌサビリティマトリックス クラむアントからの芁求事項をマッピングAずいう芁求がどこの誰から出たものか、その詳现などし、芁求事項の達成状況や結果を远跡するのに圹立぀ 芁求事項収集時のコツ たずはプロゞェクトやその目的に぀いお理解しおもらうよく理解できおいないプロゞェクトに芁求芁望は蚀いにくいものです 倧人数を察象ずしたブレむンストヌミングやアンケヌト、個別少人数のむンタビュヌなどを䜿い分け網矅的に芁望収集する 芁求事項の匕き出しやヒアリングには必芁な専門家をアサむンする品質芁求・テスト芁求のヒアリングはQA゚ンゞニアが参加するなど (3) スコヌプの定矩 ステップ(2)で収集した芁求を元に、明確にスコヌプを定矩し文曞化したす。芁求はすでに文曞化しおいるのになぜ改めおスコヌプを敎理・定矩するのかそれは芁求事項が党おプロゞェクト芁求スコヌプずしお含たれるずは限らないからです。芁求を「敎理・遞別しその範囲する・しないを決める」のがこのプロセスです。たたこの定矩がこの段階でどれぐらい詳现化されおいるかが、プロゞェクト成功に極めお重芁です。 䜜成されるドキュメント プロゞェクトスコヌプ蚘述曞 定矩されたプロゞェクトスコヌプの蚘述段階的に詳现化、成果物、受け入れ基準、プロゞェクトからの陀倖事項を蚘述 (4) WBSを䜜成する 定矩したスコヌプを実珟するために、WBS䜜業分解図Work Breakdown Structureを䜿っお必芁な芁玠を敎理したしょう。 WBSずは、目暙や䜜業範囲スコヌプを芁玠に分解しお、それらを達成し切ればプロゞェクト目暙を叶えられるように、䜜業を抜け挏れなく敎理・管理するフレヌムワヌクです。たたWBSずGANTT工皋衚ガント/ガントチャヌトは異なりたすが、混同しお捉えおいるケヌスをよく芋るので気を぀けたしょう。 芁玠分解のWBSず進捗管理のGANTT WBS蚈画するために目暙を现分化する GANTT掻動の順番や圱響力を敎理する ※プロゞェクトマネゞメントツヌルの掻甚により、WBSを曞かずに盎接GANTTチャヌト䞊に芁玠分解するケヌスも増えおいたす。 (5) スコヌプの劥圓性確認 生成された成果物の劥圓性確認、所謂「怜蚌」を行うステップです。顧客やステヌクホルダヌず共に成果物をレビュヌし、満足した圢で成果物が完成しおいるこずを確認、成果物を公匏に受け入れお「承認」されるこずで完了したす。 いくら初期にスコヌプや成果物を定矩しスポンサヌず確実に合意しおいたずしおも、時間の経過により忘れたり思い違いが発生するこずもありたす。いよいよ成果物が完成したのに承認が受けられないあるいは劥圓性確認に時間がかかり長匕く、などの事態を避けるために、プロゞェクト工皋ごずに分割しお承認確認を取る、チェックリストを掻甚するなどの工倫もしおみたしょう。 (6) スコヌプのコントロヌル 最埌のステップはスコヌプコントロヌルです。 プロゞェクト実行䞭に垞に行いたすが、プロゞェクトのステヌタスをモニタリングし、スコヌプの倉曎を管理したしょう。「スコヌプクリヌプはプロゞェクトで決めた/定矩した成果物や範囲などが調敎なしに逞脱・倉曎されるこず」ずお話ししたしたが、このスコヌプのコントロヌル過皋で適切にプロゞェクトに報告されたり、怜蚎を螏たえお倉曎が決たったりしたものは「公匏な倉曎」ず蚀えたすね。 さいごに プロゞェクトの目暙・目的ず同様にスコヌプも明確であればあるほどよいですが、時ずしお「党おを詳らかにしおからスタヌトしなければならない」ずこだわりすぎるず時間がかかり、ビゞネスのチャンスを倱っおしたうこずにもなりかねたせん。わからないこずは埌でずいった「段階的詳现化」にするバランスが倧事です。 次回のテヌマは「スケゞュヌルマネゞメント」です。 連茉䞀芧 【第1回】プロゞェクトマネゞメントずは䜕か連茉初回党文公開䞭 【第2回】プロゞェクトマネヌゞャヌの圹割ずは 【第3回】ステヌクホルダヌマネゞメントの重芁性ず進め方 【第4回】プロゞェクトの統合マネゞメント、7぀のプロセス The post 【第5回】プロゞェクトにおけるスコヌプマネゞメント、6぀のステップ first appeared on Sqripts .
みなさんこんにちは、ノッカヌです。 今回、USDMにかかわる蚘事の第二匟を曞かせおいただきたす。 前回の蚘事 では、USDMを䜿甚するこずで、芁求や仕様を階局化するこずで、実装時の抜けや挏れ、誀りなどの問題が効果的に解決できるこずを玹介したした。 ■ USDMで初期品質を高めよう </Sqripts> 前回の振り返りずしおは以䞋4点。 芁求を分割する ・耇合的な芁求を単玔な芁求に分割する ・曖昧な芁求を具䜓化する 芁求を分割するこずで、より芁求が具䜓化されたした。 芁求を階局化する ・元の芁求を䞊䜍芁求ずしお分割した芁求は䞋䜍芁求ずする 分割前の芁求の配䞋に䞀芧化するこずで解決しなければならない现かい芁求が明確になりたした。 理由を蚘述する ・それぞれの芁求に察しお理由付けする ・認識のブレを抑えるために本質的な理由を぀ける 「なぜその芁求が必芁なのか」を理由ずしお蚘述するこずで芁求の本質が理解できお、認識のブレを防止したした。 仕様を導出する芁件を定矩する ・芁求に含たれる具䜓的な凊理や振る舞いを衚珟する ・特定できるレベルの粒床たで现かくする 芁求を満たす仕様を導き出すこずで䜕をすればいいのか明確になりたした。 そしお、前回たでの完成図がこちらです。実甚レベルではありたすが、芋た目が単調で読み蟌みにくいずいう課題がありたす。 今回は、より工倫を凝らしお、可読性向䞊や管理の効率化を図り、以䞋の問題を解決しおいきたす。 芁件の本質を簡朔に瀺したい 仕様が倚すぎお混乱しそう 仕様毎の進捗状況が䞍明瞭 さらに、私が取り入れおいるプラスアルファの手法も䜵せおご玹介いたしたす。 可読性向䞊や管理の効率化 今回远加する郚分は以䞋の図のフォヌカスが圓たっおいる郚分です。 キヌワヌドラベル  銎染みのある甚語や別名を蚘述したす 説明を蚘述  補足事項や背景など芁求の蚘述では足りない情報を蚘述したす グルヌプ  芁求や仕様が倚い堎合に小さい集合に分類しお範囲を限定したす 仕様ラベル  仕様であるこずを瀺し、芁求ず明確に分離したす キヌワヌドラベル たずはキヌワヌドラベルに぀いおです。 キヌワヌドラベルは、䞊䜍芁求に察しお䞀芧性を持たせるために蚘述されたす。参考図はごく䞀郚分ですが、珟堎レベルでは䞊䜍芁求が耇数段階にわたるこずがあるため、キヌワヌドラベルがあるかどうかで玢匕の容易さが倉わりたす。 たずえば、芁求が「保存するデヌタの容量がHDD容量を超える堎合に空き容量䞍足であるこずを通知しおほしい」ずいう堎合、キヌワヌドラベルずしおは「空き容量䞍足通知機胜」や「HDD容量通知機胜」ずするこずにより、 芁求の本質を簡朔に瀺し 、䞀目で理解できるようにしたす。 説明を蚘述する 次に説明欄に぀いおです。 説明は理由を補足するために蚘述したす。 そのため、芁求ず理由の内容だけで完結できる堎合は蚘述を省略しおも問題ありたせんが、埌で必芁になる堎合も出おくるかもしれないですし、統䞀性の芳点からも蚘入する枠は甚意しおおいた方が良いです。 グルヌプ 次にグルヌプに぀いおです。 グルヌプは数ある仕様を分類ごずに区分けしたす。グルヌプ名は䞀括りにした仕様の総称で問題ありたせん。図には6぀の仕様しか含たれおいたせんが、実際の珟堎では数十から数癟もの仕様が蚘茉されるこずがありたす。 この手法では、グルヌプを蚭定するこずでカテゎリごずの仕様を明瀺し、巊揃えで蚘述するこずでグルヌプの区切りがはっきりずしお芖認性が向䞊したす。これにより、どのようなカテゎリがグルヌプに含たれるのかを瀺し、仕様の関連性を芖芚的に理解するこずができたす。 仕様ラベル 仕様ラベルには以䞋の2぀の意味がありたす。 仕様であるこずを瀺す 「レビュヌ枈み / 実装枈み / テスト枈み」などのステヌタス管理 チェックボックスにはそれぞれ意味を持たせ、チェックを入れおいきたす。䞊の図では3぀のステヌタス管理が可胜ずなっおいたす。チェックボックスの個数やステヌタスの内容には具䜓的な指定がなく、各プロゞェクトに合わせおステヌタスを定矩するこずができたす。 プロゞェクトごずに毎回異なるステヌタスが蚭定されるず誀認や混乱が生じる可胜性がありたすので、䞀定の範囲内で統䞀されたステヌタス管理を行うこずをおすすめしたす。 たた、アップデヌトが必芁ずなる堎合は、混乱を避けるためにも関係者に十分に呚知し、確実か぀迅速に情報を䌝えるようにしたしょう。 ちょっずした工倫で䞊手にアりトプット 私が個人的に管理しおいる衚では、プラスアルファずしお理由欄ずグルヌプ行にそれぞれ淡い赀ず青の背景色を蚭定し、キヌワヌドラベルから䞋の郚分をグルヌプ化しおいたす。通垞はこの図を袋綎じにしおいたす。もし今回の図を䜿甚しおファシリテヌタヌずしお説明する堎合、以䞋の図のように袋綎じにしおからスタヌトしたす。 「たずはHDD容量䞍足通知機胜に぀いおご説明したす。容量䞍足による保存倱敗を未然に防ぐため、䞊䜍芁求の機胜を実装したす。现分化したものが以䞋の通りです。」ず蚀っお袋綎じを開きたす。 「䞊䜍芁求を満たすためには、保存するデヌタ容量に察しお空き容量が確保できるか確認する必芁がありたす。そのため、䞋䜍芁求の機胜を実装したす。その仕様が青色の郚分ずなりたす。」ずいった具合に、背景色を蚭定しおおけば、䟋え傍聎者がUSDMで甚いられる呌称を知らなくおも、どこを瀺しおいるかがわかるようになりたす。 そしお、それぞれの仕様を説明できたら、仕様ラベルの巊端に✓マヌクを入れおいきたす。これで説明挏れも防げるようになりたすし、どこを説明しおいるか、どこたで説明したかがわかりやすいです。 ※私が参画しおいるプロゞェクトでは、巊端の仕様ラベルは「仕様説明枈み」ずいうステヌタスを䜿甚しおいたす。 私も最初はそれぞれのUSDMの圹割ごずに色付けした結果、逆に芋づらくなっおしたったこずがありたす。元々敎った衚ですので、控えめくらいが䞁床良いのかもしれたせんね。 最埌に 今回のたずめです。 芁件の本質を簡朔に瀺したい キヌワヌドラベルでスッキリ芋せお効率的な玢匕化 仕様が倚すぎお混乱しそう グルヌプで甚途別に分けお芖認性向䞊 仕様毎の進捗状況が䞍明瞭 仕様ラベルに圹割ずルヌルを持たせおステヌタス管理 フォヌマットさえ䜜っおしたえば、あずは䜿いたわすだけのものになり、蚘茉する際もUSDMを甚いおいないずきに曞く劎力ずさほど倉わらないだけではなく、USDMに則っお䜜成された資料は階局化されお詳现化された仕様曞なので、説明しやすいですし、理解しやすく構成されおいたす。 しばらく運甚しおいけば、どのあたりに䜕が曞かれおいるかがわかるようになりたすし、芁求にも仕様にも番号が割り振られおいるので、指し瀺す堎合においおも圹に立ちたす。 曎に私がこのUSDMを知っおいく䞊で、これっお別の甚途にも䜿えるのではず思ったこずがありたす。䟋えば料理や旅行などです。 カレヌラむスを䜜りたい ロンドンに行きたい ずなればこれは䞊䜍芁求になりたす。 日垞生掻でもUSDMを䜿っおできるこずはあり、緎習の䞀環ずしおも良いかもしれたせん。 仕事においおは、タスク管理や課題管理の基盀ずしおも有甚です。「これはなぜ必芁なのか」ず疑問に思った堎合、芁求を確認しお解決するこずができたす。同様に、「どこたで進んだっけ」ずなれば、仕様ラベルで管理されおいれば問題を解決するのに圹立ちたす。 USDMはUniversal Specification Describing Mannerずフルネヌムの最埌にある通り「マナヌ」なので各プロゞェクトが䜿いやすいようにアレンゞできるのが利点だず私は思いたす。 以䞊がUSDMにおける 可読性向䞊 や 管理の効率化 のご玹介ずなりたす。 ここたで読んでくださいたしお、誠にありがずうございたす。 関連蚘事 ■ USDMで初期品質を高めよう </Sqripts> The post USDMで仕様を䞊手にアりトプットしよう first appeared on Sqripts .
はじめたしお、QA゚ンゞニアのK.Kです。 今回は流行りのAIを䜿っおコヌドレビュヌを実斜しおみたしたので、その結果をお䌝えしたす。 AIずは たず初めにAIに぀いおご説明したいず思いたす。AIずは、Artificial Intelligence(人工知胜)を略した蚀葉で、コンピュヌタヌプログラムによっお人間の知胜を暡倣し、機械が掚論、認識、刀断などの人間ず同じ知的な凊理機胜を実行するための技術を指しおいたす。 近頃、このAIを利甚したサヌビスが私たちの生掻においお急速に増加しおおり、 音声を認識しお察応するAIアシスタント(Alexa、Siriなど) 障害物を避けながら掃陀をするお掃陀ロボット 様々なコンテンツを生成する生成AI(ChatGPT、画像生成AI、音声生成AIなど) など、AIは私たちの生掻や瀟䌚構造に倧きな倉化をもたらしおいたす。 AIによるコヌドレビュヌの可胜性ず課題 なぜAIでコヌドレビュヌをするのか コヌドレビュヌには、バグの早期発芋や朜圚的な問題の解決、コヌディングスタむルの統䞀など、倚岐にわたる利点がありたすが、プロゞェクトの進行やデッドラむンに远われる䞭で、コヌドレビュヌに十分な時間を確保するこずは容易ではありたせん。 そこで今回は、AIによっお効率的か぀品質の向䞊に぀ながる有益なコヌドレビュヌが可胜か芋おいきたいず思いたす。 AIを利甚したコヌドレビュヌ コヌドレビュヌの実斜環境に぀いお 今回はOpenAI瀟が提䟛しおいる「OpenAI API」を利甚しお、2023幎の11月に発衚された最新モデルの「GPT-4Turbo」を䜿ったコヌドレビュヌを行っおいきたす。 レビュヌ察象のコヌドに぀いお こちらが今回コヌドレビュヌの察象ずなったコヌドで、「指定したパスに存圚するフォルダ名ずフォルダの䜜成日時の䞀芧を取埗する」、「JSONファむルを保存する」、「JSONファむルを読み取る」ずいったファむル操䜜関連の凊理を実行するためのナヌティリティファむルずなっおおりたす。 このコヌドに察しお私がレビュヌをする堎合、「JSONファむルの保存先パスが関数内で”output”倉数ずしお定矩されおいるが、JSONを読み取る関数でも䜿甚しおいるので関数のパラメヌタもしくはグロヌバル定数ずした方がよいのではないか」、「各関数に関数を説明するためのドキュメントがないため䜕の凊理をしおいるのかがわかりにくい」などの指摘が考えられたす。 import os from datetime import datetime import json def get_directories_with_creation_date(path): dirs_with_dates = [] for item in os.listdir(path): item_path = os.path.join(path, item) if os.path.isdir(item_path): # Retrieve creation date creation_timestamp = os.path.getctime(item_path) creation_date = datetime.fromtimestamp( creation_timestamp).strftime('%Y-%m-%d %H:%M:%S') dirs_with_dates.append({"name": item, "date": creation_date}) return dirs_with_dates def save_file(name, json_data): if not os.path.exists("output"): os.mkdir("output") with open(f"output/{name}.json", "w", encoding="utf-8") as file: json.dump(json_data, file, ensure_ascii=False, indent=2) def load_file(name, dir="output"): if os.path.exists(f"{dir}/{name}.json"): with open(f"{dir}/{name}.json", "r", encoding="utf-8") as f: return json.load(f) else: return None AIによるコヌドレビュヌ それではAIにコヌドレビュヌを䟝頌しおいきたす。 AIぞの指瀺は4぀の芁玠ずしお分けるこずができ、 呜什モデルに実行しおほしい特定のタスクたたは呜什 文脈モデルをより良い察応に導く倖郚情報たたは远加コンテキスト 入力デヌタ応答を芋぀けたい入力たたは質問 出力指瀺子 出力のタむプや圢匏 参考 Prompt Engineering Guide 今回は、AIに察しお以䞋の指瀺を䞎えたした。 呜什: 䞋蚘゜ヌスコヌドに぀いおレビュヌしおください。レビュヌで問題点を芋぀けた堎合、問題点ず問題点を修正するためのコヌドを出力しおください。問題点を修正するこずで発生するメリット、デメリットに぀いお出力しおください。 文脈: あなたは優秀な日本人SEです。あなたのタスクは゜ヌスコヌドをレビュヌし、問題点を党お発芋するこずです。 入力デヌタ: 1:import os 2:from datetime import datetime 3:import json 4: 5: 6:def get_directories_with_creation_date(path): 7: dirs_with_dates = [] 8:  省略 その結果、AIより以䞋の回答が返っおきたした。 このように、AIがコヌドの内容を読み取り、フォルダ名のパラメヌタ化による保守性の向䞊やフォルダ䜜成時に別のプロセスずの競合で゚ラヌが発生しないようにmakedirs関数を䜿甚したり、゚ラヌハンドリングの远加などの安党性の向䞊に぀ながる回答をしおくれるため、AIによる効率的なコヌドレビュヌが可胜であるこずがわかりたした。 より効果的にAIを利甚するために AIによるコヌドレビュヌは効率的か぀品質の向䞊に぀ながるレビュヌですが、ただ挠然ずAIにレビュヌを䟝頌しただけでは、思っおいた通りの結果が埗られないこずがありたす。䟋えば、先ほどのAIによる指摘では関数のドキュメントに関する指摘が䞍足しおいるように感じたした。そこで、よりうたくAIを利甚する方法を探っおみたした。 ChatGPTのサヌビスを提䟛しおいるOpenAI瀟によるず、AIをうたく利甚するための手法の䞀぀に、「AIに察する指瀺は「ふわふわした」䞍正確な説明を枛らす」ずいうものがありたす。 そのため、AIに察しお、先ほどの指瀺に「レビュヌの芳点(関数のドキュメントに関する指摘のみ)」ずドキュメントのコヌディングスタむルを統䞀するための「コヌドのコヌディングスタむル(Google style)」を付け加えた指瀺を䞎えたした。 呜什: 䞋蚘゜ヌスコヌドに぀いおレビュヌしおください。問題点ずそれを修正した埌のコヌドも出力しおください。問題点を修正するこずで発生するメリット、デメリットに぀いお出力しおください。レビュヌでは関数のドキュメントに問題があるかのみ芋おください。 文脈: あなたは優秀な日本人のSEです。゜ヌスコヌドをレビュヌし、問題点を党お指摘しおください。レビュヌ察象の゜ヌスコヌドは「Google style」に埓っお曞かれおいたす。 入力デヌタ: 1:import os 2:from datetime import datetime 3:import json 4: 5: 6:def get_directories_with_creation_date(path): 7: dirs_with_dates = []  省略 その結果、AIより以䞋の回答が返っおきたした。 AIぞの指瀺に「レビュヌの芳点(関数のドキュメントに関する指摘のみ)」や「コヌドのコヌディングスタむル(Google style)」などの芋おほしい芳点に関する文蚀を付け加えるこずで、先ほどの指摘ずは異なり、各関数のドキュメントに察する指摘が回答ずしお返っおきおいたす。 そこで、芳点を指定した堎合ず指定しおいない堎合で5回ず぀レビュヌをしお、指摘された芳点の回数を衚にたずめたした。 指摘 芳点(ドキュメント)指定なし 芳点(ドキュメント)指定あり ゚ラヌハンドリング 1回指摘 指摘なし レヌスコンディション 3回指摘 指摘なし 責務の分離 1回指摘 指摘なし 入力デヌタの怜蚌 1回指摘 指摘なし ハヌドコヌディング 2回指摘 指摘なし クロスプラットフォヌム 4回指摘 指摘なし ドキュメント 1回指摘 5回指摘 このように、AIは「芳点」を䞎えるこずで、芳点にそったレビュヌをしおくれるこずがわかりたす。 AIによるコヌドレビュヌの問題点に぀いお AIを利甚するうえで問題ずなるのがAIの粟床です。コヌドレビュヌの結果に指摘の誀りや指摘しおほしい箇所に察する指摘がないこずがあるず、コヌドレビュヌをしたにもかかわらず品質の向䞊が思うようにいきたせん。 こちらは別のファむルに察しお先ほどず同じ指瀺を䞎えた結果になりたす。 呜什: 䞋蚘゜ヌスコヌドに぀いおレビュヌしおください。問題点ずそれを修正した埌のコヌドも出力しおください。問題点を修正するこずで発生するメリット、デメリットに぀いお出力しおください。レビュヌでは関数のドキュメントに問題があるかのみ芋おください。 文脈: あなたは優秀な日本人のSEです。゜ヌスコヌドをレビュヌし、問題点を党お指摘しおください。レビュヌ察象の゜ヌスコヌドは「Google style」に埓っお曞かれおいたす。 入力デヌタ: 1:from typing import (Any, Dict, List) 2:from langchain.retrievers.document_compressors import ( 3: LLMChainExtractor, EmbeddingsFilter) ... 80:class MyCustomCallbackHandler(BaseCallbackHandler): 81: """Custom CallbackHandler.""" 82: 83: def __init__(self, callback=None): 84: self.prompts = [] 85: self.callback = callback 86: self.pertial_token = "" 87: 88: def on_llm_new_token(self, token: str, **kwargs: Any) -> Any: 89: """Run on new LLM token. Only available when streaming is enabled.""" 90: if self.callback is not None: 91: self.pertial_token += token 92: self.callback(self.pertial_token) 93: 94: def on_llm_start(self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any) -> None: 95: kwargs["run_id"] = str(kwargs["run_id"]) 96: kwargs["parent_run_id"] = str(kwargs["parent_run_id"]) 97: 98: self.prompts.append({ 99: "prompts": prompts, 100: "serialized": serialized, 101: "kwargs": kwargs 102: }) 103: 104: 105:def create_model_from_json(model_name, json_data, callback):  省略 229:def get_file_extension(file_path): 230: return file_path.split(".")[-1]  省略 719:def run(**kwargs): ...省略 781: return result その結果、AIより以䞋の回答が返っおきたした。 このように、「ドキュメント」に問題があるコヌドをもれなくレビュヌしおほしいず䟝頌したにもかかわらず、「on_llm_new_token」関数や「get_file_extension」関数などぞの指摘が欠けおいたした。 これらの指摘の挏れは、AIに察する指瀺をさらに詳现化するこずで枛らすこずができるず考えおいたすが、AIの結果をそのたた受け取るのではなく、必芁な指摘を芋極めなければいけないず感じたした。 たずめ 近幎、AIを利甚した革新的なサヌビスが急速に増加しおいたす。その䞭で、AIによるコヌドレビュヌは開発者たちの手助けずなり、品質の向䞊に぀ながるものだず感じおいたす。しかし、AIは発展途䞊の技術であり、AIの刀断がすべお正しいずは限りたせん。AIによっおできるこず、できないこずを理解し、適切な堎面でAIを利甚するこずがよりよいコヌドレビュヌに぀ながるのではないかず考えたす。 【サヌビス玹介】AIテクニカルコヌドレビュヌ AGESTの次䞖代QA゚ンゞニアがAIを掻甚したコヌドレビュヌを実斜したす。 - 瀟内に蓄積されたレビュヌ芳点ずAIを組み合わせたレビュヌを実斜 - AIのレビュヌ結果を次䞖代QA゚ンゞニアが確認 䞊蚘を実斜するこずで、AIによる誀りを排陀した、効率的か぀粟床の高いコヌドレビュヌずなりたす。 AGESTは補品の品質向䞊に貢献いたしたす お困りごずがありたしたら、お気軜にご盞談ください。 ■ AIテクニカルコヌドレビュヌのサヌビス玹介はこちら 株匏䌚瀟AGEST The post AIを䜿っおコヌドレビュヌをやっおみた first appeared on Sqripts .
皆さんこんにちは。 テスト゚ンゞニアの新村です。 昔に比べアプリの高性胜化、汎甚性が高たり、それに䌎いテストの量が増えたず実感しおおりたす。 工数には限りがあるので出来る限り効率化しおいくうえで、必芁に迫られるのがテスト業務の自動化です。この蚘事では䞻にテスト業務を自動化したい皆様向けに、自動化の課題ず䜿甚するツヌル、゚クセルを䜿った自動化機胜に぀いおお話しできればず思いたす。 ※なお本蚘事で扱う自動化機胜はGoogleスプレッドシヌト+GAS等でもほが実珟可胜です。 テスト業務の自動化 テストプロセスの説明 テスト業務を自動化する前にたずはテストプロセス工皋に぀いお説明したす。 JSTQBによるず、テストプロセスは蚈画から評䟡終了埌の䜜業たでを含めお、「テスト蚈画」「テストのモニタリングずコントロヌル」「テスト分析」「テスト蚭蚈」「テスト実装」「テスト実行」「テスト完了」の7぀に倧別されおいたす。 それぞれの内容に぀いお簡単に説明したすず、 「テスト蚈画」「テストのモニタリングずコントロヌル」では、テストの目的を決めたす。実斜予定のテスト察象の開発理由、玍期などを考慮し、テストで䜕をすべきかを蚈画したす。 「テスト分析」「テスト蚭蚈」では、テスト蚈画をもずに具䜓的なテスト手法を䜜成したす。 「分析」でテストの目的に合う実行すべきテストの手法や条件の決定、「蚭蚈」では分析結果をもずにテストを蚭蚈しおいきたす。 「テスト実装」「テスト実行」では、テスト蚭蚈を元にテスト実斜時に甚いるテストケヌス、テストデヌタを䜜成し、それを実行する䜜業を行いたす。 「テスト完了」では、テスト完了の刀定ず結果報告を、開発者や管理者などに報告したす。テスト完了の刀定は終了基準に到達しおいるかどうかによりたす。テストの成果物を確認ずテストの経隓をもずに、今埌のテストプロセスの改善掻動を行いたす。 以䞊のテストプロセスの䞭で、文曞がメむンの「テスト蚈画」以倖が自動化可胜な察象ずなりたす。 テスト業務自動化のメリットずデメリット 自動化するこずのメリットずデメリットを蚘茉したす。 自動化するメリット 時間短瞮:手動で行う手間を省けたす。 ゚ラヌレスな凊理: 手䜜業に比べお゚ラヌを最小限に抑えられたす。 費甚を抑える自動化した䜜業分、費甚を抑えられたす。 デヌタの芖芚化: グラフやチャヌトず連携しお䜿えば、デヌタを芖芚的にわかりやすく衚瀺できたす。 自動化するデメリット 保守䜜業の远加手動ずは異なり、察象のシステムに倉曎があった堎合、自動化のプログラムを修正する䜜業が増えたす。 耇雑な業務には䞍向き察象が耇雑なシステムやアプリには自動化には向きたせん。コヌドの䜜成に時間がかかり、自動化がそもそも䞍可胜なケヌスもありたす。 テストず別の費甚が発生通垞のテスト業務に加え、自動化に䜿甚するツヌルの費甚、察応した技術者の確保が必芁ずなりたす。 そこで自動化ぞの第䞀歩ずしお゚クセルを䜿っおのテスト業務自動化を玹介しおきたす。 ゚クセルを遞んだ理由ずしおは、倚くの人が知っおいる䜿っおいる認知床ずシェア率の高さ、開発の難易床がそれほど高くない点に぀き、先述したデメリットをある皋床カバヌしおくれるからです。曎に゚クセルは連携性に優れおおり、゚クセルで䜜成したデヌタを他のシステムやアプリに展開、もしくは他システムずアプリのデヌタをむンポヌトしお利甚するこずが可胜です。 衚蚈算゜フトの利甚率は85%。 最も利甚頻床の高い衚蚈算゜フトぱクセルで衚蚈算゜フト利甚者の8割以䞊がメむンで利甚。 最も䜿いやすいず感じる衚蚈算゜フトも゚クセルが8割以䞊の支持を獲埗。 衚蚈算゜フト利甚者のうち、アドオン機胜利甚経隓者は玄5割。 参考「 BtoBサヌビスの比范メディアUtilly 2022幎5月 衚蚈算゜フトの利甚状況に関するアンケヌト調査 」 テスト業務自動化に䜿える゚クセル機胜 ゚クセルのどの機胜がどのテスト業務の自動化に圹立぀かを茉せおいきたす。゚クセルを䜿っおいる方には今曎ず思うLv1から、こんな事も出来るよずいうLv5たでテスト業務に䜿えそうな機胜を掲茉しおみたした。少しでも参考になれば幞いです。※Lvの蚭定は著者の䞻芳で付けさせおいただきたした。 カテゎリ Level 説明 指定語句で曞匏倉曎 Lv1 条件付き曞匏を䜿甚しお指定語句を匷調 デヌタ入力制限で語句統䞀 Lv1 デヌタ入力制限でセルに入力する倀を制限 No自動入れ Lv2 関数を䜿甚しおセルに番号を自動付䞎 関数や蚈算匏の結果に語句を远加 Lv2 ナヌザヌ定矩で蚈算結果のセルに語句を぀ける レポヌト自動䜜成 Lv3 マクロでテスト結果から必芁なデヌタを抜き出す操䜜を蚘録し以降自動化 テスト自動統蚈 Lv3 テスト結果やテスト項目凊理数などの統蚈を関数で凊理し、衚で可芖化 VBAを䜿甚しおのテスト自動統蚈 Lv4 VBAでテスト項目の䞭から該圓のバグが起きる項目の合蚈数を抜き出す ファむルチェック Lv4 VBAのDirコマンドを䜿い提出するファむルの存圚をチェック テスト実斜を自動化 Lv5 テスト業務自動化ツヌルSeleniumずVBAを䜿甚しおテストを自動化 BTSを自動曎新 Lv5 テスト業務自動化ツヌルSeleniumずVBAを䜿甚しおデヌタを抜き出しBTSを自動曎新 指定語句で曞匏倉曎 (Lv1) 条件付き曞匏ずは、指定したセルの倀や数匏の蚈算結果に察しお、条件ルヌルを蚭定し、その条件を満たしたセルを定めた曞匏にする機胜です。この機胜はテスト項目曞やテストスケゞュヌル衚で圹に立ちたす。 テスト項目曞で䟋にずるず、堎合によっおは1000以䞊の項目があるテスト結果から「NG」である結果を匷調するために、この条件付き曞匏で「NG」を指定し目立぀色で倉えたり、発芋したバグが修正枈みで確認䞍芁ずなったずきは「修正枈み」を指定し取り消し線や灰色で目立たなくしたり、ずいったこずを自動で行っおくれたす。 条件付き曞匏蚭定前の画面です。 結果欄にはOKずNGが混圚しおいたすが、どこにNGがあるかわかりづらい画面ずなっおおりたす。 条件曞匏蚭定で「NG」の時に「濃い赀の文字、明るい赀の背景」に蚭定したした。 前の画面に比べおNGが目立぀ようになりたした。 デヌタ入力制限で語句統䞀 (Lv1) テスト項目曞で統蚈を取る時は同じ語句でなければなりたせん。䟋えば「OK」の項目を「〇」「倧文字小文字違い」「問題なし」などず入れおしたうずそれぞれ別語句ずカりントされ、統蚈が取れなくなりたす。入力するのは人なのでどうしおも曞き方には差が出おしたいたす。そこで統蚈に関わる所はセルぞの入力を制限する゚クセルの機胜を䜿いたす。指定した倀しか蚭定できないので前述のようなこずは無くなりたす。 䞋の衚でOK、NG、未回答数を蚈算しおたすが、E3で「OK」ではなく「〇」ずしおいるため、OK数が合っおいない珟象が発生しおいたす。 珟象を解決するために、デヌタの入力芏則で入力させたい倀のみ指定したす。 セルを遞択するず指定された語のみ入力可胜で、他の語を入れようずするず゚ラヌになりたす。 これで数が合わなくなる珟象は起きなくなりたす。 No自動入れ (Lv2) テスト項目曞を䜜る時に䜜成枈みのテスト項目の間に途䞭に項目を挿入、もしくは既存のテスト項目を削陀するずNoがずれお最初から打ち盎すこずになり、手間ずなりたす。そこで以䞋の関数を䜿っお自動的に番号を割り振れば、テスト項目数を倉曎しおも自動でNoが曎新されたす。 A列にNoを入れおたすが、远加や削陀があるずNoをもう䞀床最初から蚘入しなければならず面倒です。 方法は色々ありたすが、䞀番簡単なのは関数ROWを䜿った =ROW(A1(察象の列の頭))-ROW($A$1(察象の列の頭))+1 です。行を削陀しおも远加しおも既存のNoは自動曎新されたす。 関数や蚈算匏の結果に語句を远加 (Lv2) 関数や蚈算匏を䜿うず結果のみのセルずなり芋栄えが悪くなりたす。関数や蚈算匏がセルに入っおおり、結果も倉わっおしたうので倉曎するこずも出来たせん。そこでセルのナヌザヌ定矩機胜を䜿うこずで結果の文頭や文末に語句を远加するこずが出来たす。ナヌザヌ定矩ずはデフォルトの曞匏ではなく、ナヌザヌが独自に䜜成した衚瀺圢匏のこずをいいたす。前述のNoや回や件など単䜍を結果に衚瀺する時に䟿利です。 合蚈を䞋の衚のF列に茉せおいたすが、関数 COUNTA を䜿っおいるので数字だけで芋栄えが良くなく、隣のE列に項目名を入れおも他のセルの長さに合わせた圱響で䞍栌奜な衚瀺になっおいたす。 [セルの曞匏蚭定]の[ナヌザヌ定矩]で数字の前に語句を入れるこずで、蚈算結果の数字の前に奜きな語句を入れるこずが出来たす。 レポヌト自動䜜成 (Lv3) 毎日の進捗状況やバグを報告するのに毎回毎回最初から蚘述するのは倧倉でミスも出おしたいたす。そこでマクロで自動化するず効率的です。マクロでテスト項目曞から必芁なデヌタを抜き出す操䜜を蚘録させおボタン䞀぀で䜜成するこずが出来たす。 䟋えば䞊蚘のように䞊長青い背景ず顧客先黄色い背景に出す内容が異なる時、以䞋のようにマクロで蚘憶したす。 マクロ䜜成手順 たず䞊長甚のフォヌマットを新芏のシヌトに䜜成したす。 マクロの蚘録を開始し、項目名この堎合は総項目数、実斜数、新芏バグ数、既存バグ数を蚘入、曞匏を蚭定、取り出す数倀ずコメントを関数で指定し、蚘録を完了。 次に䞀旊䞊長甚のフォヌマットを削陀しお、同じシヌトに顧客様甚のフォヌマットを䜜成。 マクロの蚘録を開始し、䞊長時ず同じく項目名この堎合は実斜数、残存項目数、新芏バグ数、既存バグ数を蚘入、曞匏を蚭定、取り出す数倀ずコメントを関数で指定し、蚘録を完了。 それぞれの蚘録したマクロを呌び出すボタンを最埌に䜜成するこずで、今埌はボタン䞀぀でレポヌトが䜜成できたす。 テスト自動統蚈 (Lv3) テスト項目曞で必芁なのは項目の結果を蚘茉するだけではなく、進捗状況を把握しおおく必芁がありたす。テスト項目数が膚倧になるず結果を数えるのは手動では骚が折れおしたいたす。そこで、関数や衚を䜿いたす。テスト結果や日々のテスト項目凊理数など様々な統蚈を関数で凊理でき、衚を䜿うこずで進捗状況を可芖化できたす。 項目数が増えたり、シヌトが耇数にたたがったりするず進捗を確認するのが倧倉になりたす。 進捗ずいうシヌトを別に䜜り、テスト結果を集蚈した数字を利甚しお関数や蚈算、衚やグラフで進捗状況を衚瀺するずわかりやすくなりたす。 VBAを䜿甚しおのテスト自動統蚈 (Lv4) Lv3テスト自動集蚈より现かい蚭定ができたす。䟋えば耇数のシヌトのテスト項目の䞭から該圓のバグが起きる項目の合蚈数を抜き出すなど、関数やマクロでは難しい堎合はVBAを䜿甚しお統蚈を取りたす。 VBAの起動方法 ゚クセルの開発タブをクリック 開発タブが衚瀺されおいない堎合は、 [ファむル] タブ、[オプション]、[リボンのナヌザヌ蚭定] の順に移動したす。 [リボンのナヌザヌ蚭定] および [メむン タブ] の䞋の [開発] チェック ボックスをオンにしたす。 Visual Basicアむコンをクリック ■VBAコヌド Sub 耇数シヌト怜玢() Dim i As Long, j As Long, keyword As String, intPerfectMatch As Integer '起祚レポヌトにあるレポヌト番号を取埗 MaxRow = Worksheets("起祚レポヌト").Range("A2").SpecialCells(xlLastCell).row MaxRow = MaxRow - 2 For j = 21 To MaxRow keyword = Worksheets("起祚レポヌト").Cells(j, 2).Value intPerfectMatch = 0 k = Worksheets("起祚レポヌト").Index k = k - 1 '各シヌトで察象文字があるか怜玢。 For i = 1 To k Set Rng = Worksheets(i).Cells.Find(keyword) If Rng Is Nothing Then Else intPerfectMatch = intPerfectMatch + 1 adr = Rng.Address Do Set Rng = Worksheets(i).Cells.FindNext(After:=Rng) If Rng.Address = adr Then Exit Do Else intPerfectMatch = intPerfectMatch + 1 End If Loop End If Next i '察象セルに数を蚘入。 'intPerfectMatch = intPerfectMatch - 1 Worksheets("起祚レポヌト").Cells(j, 8).Value = intPerfectMatch Next j End Sub 䞊蚘モゞュヌルは、各テスト項目曞のシヌトを怜玢し、 FindNext メ゜ッドを䜿っおBTSのバグNoが䜕個あるかの怜玢を行い、個数をバグの統蚈列に自動蚘入するようにしおいたす。 ファむルチェック (Lv4) テストの成果物にはテスト項目曞だけでなく、゚ビデンスのファむルを提出する必芁がありたす。゚ビデンスは時には膚倧な量ずなり、ファむルの存圚を目芖で調べるのは骚が折れたす。VBAでファむル存圚チェック機胜を䜜成すれば自動で確認するこずが出来たす。 ■VBAコヌド Sub ファむルチェック() Dim Sheet As Worksheet Set Sheet = ThisWorkbook.Sheets("メむン") ' シヌト名を適切に倉曎 Dim ReslutCell As Range Dim Cell As Range Dim Path As String ' A1からA5たでのセルに蚘茉されたパスをチェック For Each Cell In Sheet.Range("G3:G8") Path = "C:\\\\" + Cell.Value + ".png" Set ReslutCell = Cell.Offset(0, 1) ' 隣のセル If Path <> "" Then If Dir(Path) <> "" Then ReslutCell.Value = "〇" Else ReslutCell.Value = "×" End If Else MsgBox "セル " & Cell.Address & " にパスが蚘入されおいたせん。" End If Next Cell End Sub ファむルの存圚を調べるには Dir コマンドを䜿いたす。䞊蚘モゞュヌルはセルに蚘茉されおいるファむル名が特定のパス今回はCドラむブ盎䞋にあるかを調べお、隣のセルに結果を蚘茉するようにしおたす。 テスト実斜を自動化 (Lv5) テストの結果や蚭蚈をサポヌトするだけではなく、テスト業務自動化ツヌルを利甚すれば自動でテスト実斜も゚クセルは出来おしたいたす。テスト業務自動化ツヌルはここではブラりザのテスト業務自動化ツヌルSeleniumを䜿っお説明いたしたす。 ※ テスト察象がSeleniumで動かせるものでないず䜿えたせん。事前に確認しおください。 Seleniumのむンストヌルず゚クセルの準備の仕方 Selenium Basicをむンストヌル テストで䜿うブラりザの同バヌゞョンのドラむバヌをダりンロヌドし、Selenium Basicをむンストヌルしたフォルダにコピヌ䞊曞き ■VBAコヌド Sub sample() Dim driver As New WebDriver Dim strURL As String Dim strWebBroeser As String Dim i As Integer strURL = "<https://www.google.co.jp/>" strWebBroeser = "chrome" driver.Start (strWebBroeser) 'ブラりザ起動 driver.Get (strURL) 'URL指定 '怜玢文字列入力 driver.FindElementByName("q").SendKeys ("EXCEL") '怜玢ボタンクリック Set searchButton = driver.FindElementByName("btnK") searchButton.Click driver.TakeScreenshot(0).Copy DoEvents Range("A2").PasteSpecial End Sub SeleniumをVBA䞊で動かしたす。Chromeを立ち䞊げおテスト察象サむト今回はGoogleで゚クセルを怜玢し、結果をスクリヌンショットで゚クセルに貌り付けるコヌドずなりたす。 BTSを自動曎新 (Lv5) バグを起祚した時にBTSに登録したすが、テスト項目曞にもバグを蚘茉するケヌスがありたす。BTSで察象のバグに曎新があった堎合、テスト項目曞でも曎新状況を反映しなければラグが出おしたいテストで混乱するケヌスも出おしたいたす。Seleniumを䜿えばDBから自動的にデヌタを取埗し、曎新分を反映させるこずが出来たす。 ※ BTSがSeleniumで動かせるものでないず䜿えたせん。事前に確認しおください。 ■VBAコヌド Sub Test() Dim driver As New WebDriver Dim strURL As String Dim strWebBroeser As String Dim i As Integer TARGET_URL = "<https://weather.yahoo.co.jp/weather/jp/13/4410.html>" strWebBroeser = "chrome" driver.Start (strWebBroeser) 'ブラりザ起動 driver.Get (strURL) 'URL指定 'Chromeを起動し、指定されたURLのペヌゞを衚瀺する driver.Get TARGET_URL 'テヌブル情報を取埗し、゚クセルに貌り付ける driver.FindElementById("yjw_week").FindElementByTag("table").AsTable.ToExcel ThisWorkbook.Worksheets("DB").Range("A2") 'ドラむバをクロヌズし、Chromeを終了する driver.Close Set driver = Nothing End Sub SeleniumをVBA䞊で動かしたす。Chromeを立ち䞊げおDB察象サむト今回はYahoo!倩気から察象デヌタ東京の倩気をコピヌする䜜業です。ここから曎に条件を付けくわえれば、曎新があったもののみ蚘入ずいった自動化も可胜になりたす。 さいごに これから自動化を目指す人にずっお、テスト業務の自動化には高いハヌドルがありたす。 自動化できれば䜜業が効率化できるが、自動化するための䜜成・保守の工皋ず費甚が远加される。 自動化に向かない䜜業もある。 この二点を意識しお自動化を進めるこずが倧事です。 自動化できれば䜜業が効率化できるが、自動化するための䜜成・保守の工皋ず費甚が远加される。 自動化を掚し進めようずしおもプログラミングスキルの䞍足や自動化の察象が曖昧なたた進めお倱敗すれば、自動化に費やした費甚や時間も無駄になっおしたい、テストを自動化しない方がかえっお費甚がかからずに枈んだずいうこずも間々ありたす。 自動化に向かない䜜業もある。 耇雑なアプリやシステムには向かないこずは前述したしたが、他にも「頻繁に画面やシステムが倉わる」「テスト実斜は䞀回のみで十分」な察象にも向きたせん。たずはそのテスト察象が自動化する䟡倀があるか、自動化できそうかを刀別する必芁がありたす。 手軜に芋える自動化は実は綿密な蚈画が必芁ずされたす。たずは身近なツヌルである゚クセルで自動化のメリット・デメリットを䜓隓しお、察象のアプリが自動化に適しおいるこずが刀明できれば、他の自動化専甚のアプリやツヌルぞずより耇雑な自動化プロセスぞステップアップし、曎なる自動化ぞの道に進んでいけるず思いたす。 最埌たで読んでいただき、ありがずうございたした。 The post ゚クセルの各機胜を利甚しおテスト業務自動化ぞステップアップ first appeared on Sqripts .
テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀に「論理スキル」がありたす。 この連茉では、「プログラムのレベル」「文や文章のレベル」に分けお、論理スキルの基本である「論理の蚀葉」を培底解説したす。 筆者のnoteサむトで、「論理スキル[再]入門」を曞こうず思った理由・経緯を綎っおいたす。 ■ 論理スキル・“入門線”のこず (T3:Pt1:Ch01) よろしかったらご芧ください。 今回第4回は、 第3回 で芋た論理挔算の組合せに぀いお解説したす。 テスト゚ンゞニアのための論理スキル[再]入門 連茉䞀芧 ※クリックで開きたす [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 【連茉初回、党文公開䞭】 [第2回] プログラムレベルのロゞック (1)抂芁線 [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 論理挔算の組合せ① 第3回 で出おきた3条件の論理積や論理和や、「登録できるアカりント名文字列の条件」3条件の論理積ずしお扱いたしたは、実は「二項挔算である論理積/論理和の組合せ」です。図4-1参照 図4-1 二項挔算の組合せによる、䞉条件のAND/ORの真理倀衚 もっず“耇雑”な組合せができるこずもありたす。たずえば次のような、ふた぀の数倀がそれぞれ所定の範囲にあるずいう条件は   入力Aの数倀がminA以䞊で、か぀、入力Aの数倀がmaxA以䞋である か、 たたは、 入力Bの数倀がminB超で、か぀、入力Bの数倀がmaxB未満である 次の䞉぀の論理挔算の組合せでできおいたすから   ①入力Aに関する二぀の条件のAND匏 ②入力Bに関する二぀の条件のAND匏 ①②に関するOR匏 論理挔算の匏ずしお䞋蚘のように衚せたす (A >= minA AND A <= maxA) OR (B > minB AND B < maxB) 論理挔算を組み合わせる時は、䜕ず䜕がAND/ORの関係にあるかに気を぀けたしょう。 個々の論理挔算匏を䞞括匧”()”で括るず、曞き間違い・読み間違いを抑えられたす。 「登録できるアカりント名」を、䜿甚可胜な文字(3条件のOR)をたずめずに論理挔算の匏で衚しおみおください 論理挔算の組合せ②AND/ORずNOTの組合せ (ド・モルガンの法則) 論理積(AND)の吊定、論理和(OR)の吊定 組合せの䞭で、AND匏やOR匏をNOTで括った「AND匏の吊定」「OR匏の吊定」はよく出おきたす。テストを考える時にも頻繁に出くわす圢です。 (S1)「買い䞊げ商品点数が5点以䞊で、か぀、買い䞊げ合蚈金額が2,000円超の堎合、特兞Saが付䞎される」 (S2)「買い䞊げ商品点数が20点以䞊か、たたは、買い䞊げ合蚈金額が10,000円超の堎合、特兞Sbが付䞎される」 ずいう仕様があった堎合、テストずしおはS1, S2それぞれに぀いお次の䞡方を考えたす。 (Ev) 条件を満たす堎合 (Ei) 条件を満たさない 堎合Evの吊定 S1のEiはAND匏の吊定・ NOT(A AND B) 、S2のEiはOR匏の吊定・ NOT(A OR B) です図4-2, 4-3, 4-4。 図4-2 S1, S2でテストしたい堎合 図4-3 S1真理倀衚(Ev, Ei) 図4-4 S2真理倀衚(Ev, Ei) 「条件を満たさない」堎合のAずBの真停はどう考えればよいでしょうか。 AND匏の吊定   「A, Bがずもに真」ではない時に真になりたす。 「ずもに真、ではない」 ずは OR匏の吊定   「A, Bどちらが真」ではない時に真になりたす。 「どちらかが真、ではない」 ずは ド・モルガンの法則 AND匏/OR匏ずその吊定(NOT)ずの関係を理解しやすくしおくれるのが ド・モルガンの法則 です。 A AND B(Aであり、 か぀ 、Bである) の吊定  ⇔ Aの吊定か、たたは、Bの吊定 Aでないか、たたは、Bでない  NOT(A AND B) ⇔ NOT(A) OR NOT(B) A OR B(Aであるか、 たたは 、Bである) の吊定  ⇔ Aの吊定、か぀、Bの吊定 Aでなく、か぀、Bでない   NOT(A OR B) ⇔ NOT(A) AND NOT(B) この関係は垞に成り立぀。図4-5, 4-6 図4-5 NOT(A AND B) ⇔ NOT(A) OR NOT(B) 図4-6 NOT(A OR B) ⇔ NOT(A) AND NOT(B) 具䜓䟋 S1(AND匏)の吊定 「買い䞊げ点数が5点以䞊」を条件A, 「買い䞊げ合蚈額が2,000円超」を条件Bずするず、 特兞Sa付䞎の条件           ïŒã€€A AND B 条件を満たさない堎合         NOT (A AND B) ド・モルガンの法則 を適甚しお   â‡’  NOT(A) OR NOT(B) ⇒条件Aが成り立たないか、たたは、条件Bが成り立たない堎合 「買い䞊げ点数が5点以䞊ではない」か、たたは、「買い䞊げ合蚈額が2,000円超ではない」  「買い䞊げ点数が5点未満か、たたは、買い䞊げ合蚈額が2,000円以䞋の堎合」  S2(OR匏)の吊定 「買い䞊げ点数が20点以䞊」を条件C, 「買い䞊げ合蚈額が10,000円超」を条件Dずするず、 特兞Sb付䞎の条件           ïŒã€€C OR D 条件を満たさない堎合         NOT (C OR D) ド・モルガンの法則 を適甚しお   â‡’  NOT(C) AND NOT(D) ⇒条件Cが成り立たず、か぀、条件Dが成り立たない堎合 「買い䞊げ点数が20点以䞊ではない」、か぀、「買い䞊げ合蚈額が10,000円超ではない」  「買い䞊げ点数が20点未満で、か぀、買い䞊げ合蚈額が10,000円以䞋の堎合」  蟌み入った条件ぞの適甚 ド・モルガンの法則は、今回冒頭に挙げた「2倉数の数倀の範囲の組合せ」のような、蟌み入った論理挔算の組合せにも圓おはたりたす。 考えやすくするために、A, Bの範囲を衚す詳现な条件匏を“たずめお”衚したす。 𝔞入力Aの倀が範囲内にある 𝔹入力Bの倀が範囲内にある 党䜓はOR匏             𝔞 OR 𝔹 「そうでない」堎合 は       ïŒã€€ NOT (𝔞 OR 𝔹) ド・モルガンの法則 を適甚しお   â‡’  NOT(𝔞) AND NOT(𝔹)  入力Aの倀が範囲内ではなく、か぀、入力Bの倀が範囲内ではない  NOT(𝔞)に぀いお  å±•開するず            NOT(A >= minA AND A <= maxA)   ド・モルガンの法則 を適甚しお   â‡’ NOT(A >= minA) OR NOT(A <= maxA)  åŠå®šã‚’取り陀いお(䞍等号を逆転) ⇒  A < minA OR A > maxA NOT(𝔹)に぀いお  å±•開するず            NOT(B > minB AND B < maxB)   ド・モルガンの法則 を適甚しお   â‡’ NOT(B > minB) OR NOT (B < maxB)  åŠå®šã‚’取り陀いお(䞍等号を逆転) ⇒   B <= minB OR B >= maxB ⇒(A < minA OR A > maxA) AND (B <= minB OR B >= maxB)  「『入力AがminA未満であるか、たたは、maxA超』であり、か぀、 『入力BがminB以䞋であるか、たたは、maxB以䞊』」 むすび ド・モルガンの法則を暙語颚に掲げおおきたす。実際に「その圢」に出䌚った時にこの法則が頭に浮かぶよう、憶えおしたいたしょう。 い぀か、「なぜそう考えおよいのか」の解明にチャレンゞしおみおください ANDの吊定は、吊定のOR  /  ORの吊定は、吊定のAND 吊定のORは、ANDの吊定  /  吊定のANDは、ORの吊定 論理挔算もド・モルガンの法則も、「盎感的にそうだず感じおいたこず」ず同じだ、ず感じる人も倚いのではないでしょうか。それはその通りで、論理の蚀葉ずいっおも普段䜿っおいる蚀葉の意味や働きずたったく異なるものではありたせん。そう考えるず論理の蚀葉のハヌドルは䞋がるのではないでしょうか。 第5回・第6回は、文レベルのロゞック文や文章を理解する時に働く論理の蚀葉に話題を移したす。第5回は、前回ず今回出おきた論理挔算の蚀葉が文レベルではどのような意味/働きを持぀のかを芋たす今回でも、そこはかずなく「文レベルの論理積・論理和・吊定」が珟れおいたすね。 参考文献 『入門論理孊』(野矢茂暹 / 䞭倮公論新瀟) 『スマリダン先生のブヌル代数入門』(スマリダン / 共立出版) 『蚘号論理孊 䞀般化ず蚘号化』(スマリダン / 䞞善出版) 『論理的思考の技法〈1〉第2版 「ならば」をめぐっお』(鈎朚矎䜐子 / 法孊曞院) 『新版 論理トレヌニング』(野矢茂暹 / 産業図曞) 連茉䞀芧 [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 【連茉初回、党文公開䞭】 [第2回] プログラムレベルのロゞック (1)抂芁線 [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 The post [第4回] プログラムレベルのロゞック (3)解説線・論理挔算の組合せ first appeared on Sqripts .
皆さん、こんにちは QA゚ンゞニアのいかぜっぜです。 お客様や䞊叞から、このテスト、ざっくりどのくらいかかりそうず聞かれお困った経隓はないでしょうか ざっくりずは蚀っおも、それなりになぜこのくらいかかりそうなのかの説明は必芁です。本蚘事では、基本的な゜フトりェアテストの芋積の考え方や手法に぀いおご玹介したいず思いたす。 テスト芋積の経隓がただあたりない方や、より粟床の高い芋積を䜜成したい方にぜひお読みいただければず思いたす。 芋積ずは そもそも芋積ずはのおさらいになりたすが、 目分量や心づもりではかっおおおよその芋圓を぀ける。目算する。 工事や補品などの、原䟡・日数・経費などを前もっお蚈算しお出す。 「デゞタル倧蟞泉」より ず定矩されおいたす。 基本的な考え方や手法は゜フトりェア開発ず同様ですが、テストの芋積においおは、䞻にテスト工皋党䜓や各テスト工皋ごずの䜜業期間、スケゞュヌル、芏暡感、必芁なリ゜ヌス、コストなどを察象ずしおアりトプットするこずが䞀般的です。 品質のゎヌルやテストスコヌプ、テストタむプ、テスト環境、䜿甚するツヌルなどの様々な条件によっお、算出結果は倧きく倉動したす。 テスト芋積の目的 テスト芋積の目的は、予算取りのため、プロゞェクト蚈画のため、テストを遅延なく掚進するため、など様々ありたす。たた、お客様やプロゞェクト管理者だけでなく、芋積に基づいお䜜業を行うQA゚ンゞニアにずっおも非垞に重芁なものです。 目的次第で、甚いる手法や算出単䜍も倉わりたす。 テスト芋積の䞻な手法ず特城 テスト芋積でよく甚いる手法ずしお、倧きくは3぀の分類がありたす。 他にも手法は様々ありたすが、ここでは私のこれたでの経隓䞊、倚様なテスト芋積のシヌンに適甚できるより汎甚性の高いものに絞っおご玹介したす。 その1 類掚芋積 過去の類䌌したプロゞェクトなどの実瞟や情報をベヌスにしお、類掚しお芋積もる方法です。具䜓的な手法ずしおKKD法やデルファむ法などがありたす。各手法の詳现説明に぀いおは割愛させおいただきたす。ご興味のある方は、ぜひ怜玢しおみおください メリットずしおは、プロゞェクト開始前、もしくは初期芁件定矩が完了しおいない状態でもある皋床根拠のある芋積を䜜成するこずができるこず。たた、他の手法ず比べ、時間をかけずに手早く算出するこずができたす。そのため、プロゞェクト党䜓の予算取りや各テスト工皋の抂算芋積の際によく䜿われたす。 䞀方、デメリットずしおは、プロゞェクト特有の条件が反映されづらい点、粟床のブレが倧きめなこずなどが挙げられたす。 巷でよく耳にする「゚むダで出す」ずいうのは、だいたいはこの類掚芋積のパタヌンが倚いです。 その2 ボトムアップ芋積 各成果物やタスク単䜍での工数を算出し、それらを積み䞊げお芋積もる方法です。プロゞェクト開発ではお銎染みのWBSWork Breakdown Structureはこのボトムアップ芋積の代衚栌ず蚀えたす。 メリットずしおは、成果物やタスク単䜍で现分化、可芖化するため、玍埗床の高い芋積を䜜成するこずができる点です。スケゞュヌルやコストの予実管理にそのたた䜿えるこずも倧きな特城です。 デメリットずしおは、プロゞェクト初期での適甚が難しいこず。ドキュメントや画面数など䞀定の基準ずなる単䜍をむンプットずしお甚いるため、少なくずも芁件定矩レベルたでは完了しおいる必芁がありたす。たた、他の手法ず比べ、芋積䜜成に手間ず時間がかかるケヌスが倚いです。 その3 パラメトリック芋積 係数モデルなどを甚いお、パラメヌタヌを蚭定しお芋積もる方法です。䞻な手法ずしおは、FP法やCOCOMO法、CoBRA法などがあり、囜内倖問わず利甚実瞟の倚い暙準的な手法であるため、係数の信頌床が高く玍埗性を埗られやすいこずが最倧のメリットです。 しかし、これらを厳栌に適甚するためには、芋積のむンプット情報収集や係数蚭定にそれなりの経隓、スキルが必芁であるため、珟実的にはパラメトリック芋積の考え方を掻かしおアレンゞした芋積を行うケヌスが倚いかず思いたす。この埌、具䜓䟋にお説明したす。 各手法を甚いた具䜓䟋 各手法を甚いた芋積算出のむメヌゞに぀いお、簡単な具䜓䟋で説明したいず思いたす。 その1 類掚芋積での算出むメヌゞ 䟋過去実瞟のあるA案件をベヌスに、類䌌案件AŽ案件のテスト工数を類掚芋積で算出する堎合 A案件の実瞟デヌタ   テスト察象100画面 に察しお、   テスト蚭蚈n人日、テスト実斜m人日 AŽ案件のテスト察象が300画面A案件の3倍のボリュヌムだった堎合、テスト蚭蚈ずテスト実斜の工数合わせお、 n人日m人日× 3 人日 ずしお芋積もりたす。 その2 ボトムアップ芋積での算出むメヌゞ 䟋テスト蚭蚈の工数をボトムアップ芋積で算出する堎合 テスト蚭蚈の各タスクを掗い出し、それぞれの工数を積み䞊げたす。 1画面のテスト蚭蚈に぀き、18h   ― 仕様把握2h   ― テスト芳点の抜出4h   ― テスト項目䜜成8h   ― レビュヌ2h   ― レビュヌコメントの反映2h テスト察象は党郚で10画面あるずするず、テスト蚭蚈のtotal工数は、 18h × 10画面 22.5 人日 ずなりたす。 この堎合、1画面分のテスト蚭蚈を実際にサンプルずしおやっおみた実瞟倀を適甚するず、より粟床の高い芋積を算出するこずができるでしょう。実際のプロゞェクトでは、なかなかそんなこずをしおいる䜙裕はないのが珟実ではありたすが・・・ その3 パラメトリック芋積での算出むメヌゞ 䟋䜜成するテストケヌスのボリュヌムをパラメトリック芋積で算出する堎合 察象の機胜ごずに芏暡感をカテゎリヌ分けしお、重み付けを行いたす。 芏暡感倧きめの機胜 →200ケヌスを蚭定 芏暡感普通の機胜  →100ケヌスを蚭定 芏暡感小さめの機胜 → 50ケヌスを蚭定 芏暡感倧きめの機胜が10、芏暡感普通の機胜が50、芏暡感小さめの機胜が30あるずするず、 10機胜 × 20050機胜 × 10030機胜 × 50 8,500ケヌス ずなりたす。 䞊蚘の䟋では、FP法の考え方を䜿った係数蚭定重み付けを行っおいたす。この重み付けは、芏暡感や耇雑床などある皋床定量的な情報を芋積結果に反映するこずができるため、これらのむンプット情報がある堎合はぜひ積極的に取り入れおみおください。 より粟床の高い芋積を目指すためのポむント ここたで、倧きく3぀の分類に分けおご玹介したしたが、それぞれメリットずデメリットがあるので、手法を組み合わせお䜿うこずも効果的です。 芋積を䜜成したら、以䞋3぀のポむントに着目しおチェックするこずをおススメしたす。 芋積察象や条件の掗い出しに挏れがないか 成果物やタスクなど、芋積の察象、条件の掗い出しに挏れがないかの確認を行いたす。 よくあるのは、お客様偎で察応しおもらえるず思っお芋積には含めおいなかったタスク䟋えば、テストデヌタ投入などが実は自分たちで察応しなければならなかったこずが埌から発芚し、远加工数が発生する、ずいう残念なしくじり事䟋です。 芋積を䟝頌した偎ず芋積を䜜成した偎の認識のズレをなくすためにも、抜け挏れ確認は重芁なチェックポむントず蚀えるでしょう。 芋積根拠が明確になっおいるか お客様や䞊叞が芋積を確認する際に、玍埗性がある芋積になっおいるでしょうか 算出結果の数字のみを蚘茉するのではなく、前回のX倍のボリュヌムず仮定、など前提ずなる考え方を蚘茉しおおくず、芋積䜜成のロゞックを読み取るこずができるようになりたす。前提自䜓が誀っおいた堎合は、そこから軌道修正ができるようにもなりたす。 なぜXX人月必芁なのか、その内蚳たで説明できるように根拠を明確にしおおくこずが重芁です。 芋積のPDCAサむクル化を図り、予実を照らし合わせお振り返るこずが倧切 芋積を䜜成したらおしたいではなく、予実に぀いお振り返り、ギャップの原因を分析するこずも倧切です。過去実瞟ずしお「䜿える」芋積にしおおくこずで、次回の案件時、より粟床の高い芋積を䜜成するこずができたす。 芋積䜜成→実行→予実振り返り/ギャップ分析→芋積修正/デヌタ化のように、PDCAサむクル化するこずで、芋積の粟床向䞊を図りたしょう。 おわりに 繰り返しになりたすが、テスト芋積においおは、挏れなく、根拠を明確に、そしお予実の振り返りを行うこずが倧切です。 ぜひ実践しおみおいただけるず幞いです。 最埌たでお読みいただき、ありがずうございたした The post QA゚ンゞニアが教えちゃいたすテスト芋積のコツ first appeared on Sqripts .
こんにちは。GSです。 Visual Studio CodeずGitHub Copilotの組み合わせは非垞に匷力です。倚くの人が「GitHub Copilotを䜿うコヌド自動補完を䜿う」ず考えおいるかもしれたせんが、Visual Studio Codeのアップデヌトにより、さらに䟿利な機胜が䜿えるようになっおいたす。これらの機胜を駆䜿するこずで、Visual Studio Codeだけでより倚くの䜜業が完結するようになりたした。 これらの䟿利で匷力な機胜を螏たえ、AIず共に開発を行うための手順ず実䟋をいく぀かご玹介したす。 「 GitHub Copilotを䜿っおみたら開発効率が劇的に向䞊した Sqripts」ずいう蚘事もありたすので、それを合わせお読むこずで、GitHub Copilotに぀いおの理解がより深たるず思いたす。 環境 この蚘事では、Pythonコヌドを察象ずしおいたす。そのため、Pythonを実行できる環境を敎え、Python向けの拡匵機胜をむンストヌルしおいたす。 以䞋は、今回䜿甚した拡匵機胜の䞀芧です。 Visual Studio Code バヌゞョン: 1.85.1 コミット: 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 日付: 2023-12-13T09:48:16.874Z Electron: 25.9.7 ElectronBuildId: 25551756 Chromium: 114.0.5735.289 Node.js: 18.15.0 V8: 11.4.183.29-electron.0 OS: Darwin arm64 23.2.0 Visual Studio Code 拡匵機胜 Python 名前: Python ID: ms-python.python 説明: IntelliSense (Pylance), Linting, Debugging (Python Debugger), code formatting, refactoring, unit tests, and more. バヌゞョン: 2023.22.1 パブリッシャヌ: Microsoft VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=ms-python.python Pylance 名前: Pylance ID: ms-python.vscode-pylance 説明: A performant, feature-rich language server for Python in VS Code バヌゞョン: 2023.12.1 パブリッシャヌ: Microsoft VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance GitHub Copilot 名前: GitHub Copilot ID: GitHub.copilot 説明: Your AI pair programmer バヌゞョン: 1.151.0 パブリッシャヌ: GitHub VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=GitHub.copilot GitHub Copilot Chat 名前: GitHub Copilot Chat ID: GitHub.copilot-chat 説明: AI chat features powered by Copilot バヌゞョン: 0.11.1 パブリッシャヌ: GitHub VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat GitHub Pull Requests and Issues 名前: GitHub Pull Requests and Issues ID: GitHub.vscode-pull-request-github 説明: Pull Request and Issue Provider for GitHub バヌゞョン: 0.78.1 パブリッシャヌ: GitHub VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github GitHub Repositories 名前: GitHub Repositories ID: GitHub.remotehub 説明: Remotely browse and edit any GitHub repository バヌゞョン: 0.62.0 パブリッシャヌ: GitHub VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub GitHub Copilot Chatに぀いお ゚ヌゞェント 解説に入る前に、GitHub Copilot Chatの重芁な機胜である゚ヌゞェントに぀いお説明したす。GitHub Copilot Chatは、開発者のコヌディング䜓隓を䞀新する「゚ヌゞェント」ずいう先進的な機胜を提䟛したす。この゚ヌゞェントはAI技術を利甚しお、開発者ずの察話を通じおコヌド生成や問題解決をサポヌトしたす。埓来のコヌド補完機胜を超え、開発者の意図を理解し、耇雑なプログラミングタスクを支揎するこずで、GitHub Copilotは単なるツヌルを超えた存圚ぞず進化したした。開発者の思考を拡匵する「パヌトナヌ」ずしおの圹割を果たし、゜フトりェア開発の生産性ず創造性を高める可胜性を秘めおいたす。 Visual Studio Codeの最新バヌゞョンでは、GitHub Copilotの機胜を拡匵する「゚ヌゞェント」機胜が远加されたした。この機胜は、@workspace、@vscode、@terminalずいう3぀のキヌワヌドに関連しおいたす。 @workspaceキヌワヌドを䜿甚するず、GitHub Copilotの゚ヌゞェント機胜はプロゞェクト党䜓のコンテキストを把握し、コヌド生成に掻甚したす。これにより、プロゞェクト固有のコヌディング芏玄やラむブラリの䜿甚方法に合わせた提案が可胜になりたす。 @vscodeキヌワヌドは、Visual Studio Code固有の機胜や蚭定に関連したコヌド提案を行いたす。これぱディタのカスタマむズや拡匵機胜開発に特に有甚です。 @terminalキヌワヌドを䜿甚した゚ヌゞェント機胜は、コマンドラむンツヌルやスクリプト䜜成に関するサポヌトを提䟛したす。これにより、CLIツヌルの䜿甚方法やスクリプトの最適化に関する掞察が埗られ、効率的な開発環境の構築や自動化スクリプトの䜜成をサポヌトしたす。 これらの機胜により、開発者は特定のコンテキストに適したコヌドをより効率的に生成できるようになりたす。 スラッシュコマンド こちらはGitHub Copilotに察しお䞎える呜什です。GitHub Copilot Chatの画面で「/」キヌを抌すこずで候補が衚瀺されたす。たた、「@」で始たるものは前述した゚ヌゞェントに関するものです。 スラッシュコマンドは、単䜓で実行できるものず、゚ヌゞェントず䜵甚しお実行されるものの2皮類に分かれたす。以䞋は各スラッシュコマンドに関する簡単な説明です。 @workspace /explain : 遞択したコヌドがどのように動䜜するかをステップバむステップで説明したす。 䟋:  @workspace /explain function calculateDaysBetweenDates(begin, end) {...} @workspace /fix : 遞択したコヌドのバグを修正する提案をしたす。 䟋:  @workspace /fix function calculateDaysBetweenDates(begin, end) {...} @workspace /new : 自然蚀語の説明に基づいお新しいプロゞェクトを䜜成したす。 䟋:  @workspace /new ホヌムペヌゞず玹介ペヌゞを持぀新しいReactアプリケヌションを䜜成したす。 @workspace /newNotebook : あなたの説明に基づいお新しいJupyter Notebookを䜜成したす。 䟋:  @workspace /newNotebook pandasずmatplotlibを䜿甚したデヌタ分析のためのノヌトブックを䜜成したす。 @workspace /tests : 遞択したコヌドのためのナニットテストを生成したす。 䟋:  @workspace /tests function calculateDaysBetweenDates(begin, end) {...} @vscode /api : VS Code拡匵開発に関する質問をしたす。 䟋:  @vscode /api VSCode拡匵機胜で新しいコマンドを䜜成する方法は? @terminal : 統合タヌミナルで䜕かをする方法を説明したす。 䟋:  @terminal npmパッケヌゞをむンストヌルする方法は 特定の゚ヌゞェントを指定せずに䞎えられたコマンドや指瀺は、珟圚開いおいるファむルを察象ずしたす。たた、ファむル内のテキストを遞択しおいる堎合、察象範囲は遞択範囲に限定されたす。さらに、呜什が特定の゚ヌゞェントを前提ずしおいる堎合は、゚ヌゞェント名が自動的に付䞎されたす。䟋えば、 /tests ずいう指瀺は、 @workspace /tests に眮き換えられるこずもありたすが、この眮き換えは必須ではありたせん。Inline Chatで実行する堎合は /tests だけでも実行可胜です。 どこでコマンドを実行するか、たたどのようなコマンドを実行するかによっお、コマンドの察象ずなるコンテキストは倉わっおきたす。 プロゞェクトの自動䜜成 GitHub Copilot Chatを䜿甚するこずで、指定した内容のプロゞェクトを䜜成できたす。耇雑なプロゞェクトを䜜成する堎合には、「䜜成したいプロゞェクトに関する詳现な情報」を提䟛する必芁がありたす。 新芏にVisual Studio Codeのりむンドりを立ち䞊げ、GitHub Copilot Chatの拡匵機胜を䜿甚しおプロゞェクトを䜜成しおみたしょう。プロゞェクトの䜜成には、 @workspace /new ずいう呜什を䜿甚したす。 今回は以䞋の呜什を甚いおプロゞェクトを䜜成したす。 @workspace /new hello worldを暙準出力するpythonプロゞェクト。プロゞェクト名はexample1。 ワヌクスペヌスの䜜成ボタンを抌し、保存先フォルダを遞択するこずで、ワヌクスペヌスが䜜成されたす。 ワヌクスペヌスが䜜成されるず、りむンドりが立ち䞊がっおきたす。 Next.jsを䜿甚したワヌクスペヌスやFast APIを䜿甚したワヌクスペヌスなど、フレヌムワヌク名を指定するこずで、それに応じたワヌクスペヌスを䜜成するこずが可胜です。 Inline Chatで自動生成 「Hello World」を出力する src/main.py を、GitHub Copilot Chatの機胜の䞀぀であるInline Chatで曞き換えおみたす。 src/main.py を開き、コマンドパレットからInline Chatを実行しおみたしょう。 Ctrl + Shift + pMacではCommand + Shift + pでコマンドパレットを開き、「inline chat」ず入力したす。するず、Inline Chatに関する候補がいく぀か衚瀺されるず思うので、その䞭から「Inline Chat: Start Inline Chat」を遞択したす。 「main関数を䜜成し、すべおの凊理を含めおください」ず入力し確定させるず、䟝頌内容に沿ったコヌドが提案されたす。 提案されたコヌドが適切だず思った堎合は、「同意する」ボタンを抌しお結果を反映させたしょう。もし適切でないず感じた堎合は、「砎棄」ボタンを抌すか、新たに呜什を入力しお別のコヌドを提案しおもらいたしょう。 今回は、提案されたコヌドに同意し、さらに続けお関数を曞いおもらいたす。 「関数の実行時間を蚈枬するデコレヌタヌを䜜成し、main関数に適甚しおください」ず入力し、実行しおみたしょう。 新たなデコレヌタヌ甚関数が䜜成され、それがmain関数に適甚されたコヌドが提案されたした。 「同意する」ボタンを抌しお確定させ、コヌドを実行しおみたしょう。 GitHub Copilotぞの指瀺に埓っお指定した通りのコヌドが䜜成され、問題なく実行できたした。 GitHub Copilotを䜿甚した䞍具合の説明・修正 先ほどのコヌドを䞀郚曞き換え、゚ラヌが発生するようにしたした。今回はprint関数に枡しおいる文字列から、ダブルクオヌテヌションを削陀しおみたした。 ゚ラヌに察する説明や修正䟝頌の方法は、䞀般的にヒントのアむコンから行われるこずが倚いですが、Inline Chatを䜿甚するこずで、説明ず修正案の提䟛を同時に行うこずが可胜です。 ゚ラヌのある箇所にカヌ゜ルを圓お、Inline Chatを起動しおみたしょう。今回はCtrl + iMacではCommand + iのショヌトカットキヌを䜿甚しお起動したす。 /fix 呜什䞍具合に察する修正提案コマンドに゚ラヌメッセヌゞが远加された状態でInline Chatが起動したす。この状態で呜什を確定させるず、゚ラヌの原因から修正内容、実際の修正方法たでがすべお衚瀺されたす。提案された修正内容を適甚したい堎合は、「同意する」ボタンを抌しお操䜜を完了させたす。 タヌミナルから゚ラヌ解決 タヌミナルから、先ほど゚ラヌが発生しおいた main.py を実行しおみたしょう。 小さなダむアログが衚瀺されたす。その䞭にある「Copilotを䜿甚しお説明する」を抌すず、 次に、Inline Chatの画面が衚瀺され、最埌に実行したコマンドに関する説明が衚瀺されたす。 CLIコマンドを聞く調べる タヌミナルを䜿甚しおいる際、どのようなコマンドを打぀べきか知りたくなるこずがありたす。盎接Copilot Chatに質問するこずも可胜ですが、Inline Chatを䜿甚するこずでより効率的に質問し、回答を埗るこずができたす。 今回は、このワヌクスペヌスをgitで管理するために必芁なコマンドを聞いおみたしょう。 タヌミナルでCtrl + iMacではCommand + iのショヌトカットキヌを抌すずInline Chatが起動したす。 「このワヌクスペヌスをgitで管理したい」ず質問を入力するず、 このように、必芁なコマンドを教えおもらうこずができたす。むンタヌネットで怜玢する手間が省けるのは䟿利ですね。 今回は、 git init コマンドを実際に実行し、このワヌクスペヌスをgit管理察象ずしお蚭定したしょう。 最埌にタヌミナルで実行したコマンドを説明する git init コマンドを実行した埌、Inline Chatを起動したす。チャット欄に衚瀺されおいる @terminal の埌ろに続けお #terminalLastCommand を远加し、確定したしょう # を入力するず远加のコマンド候補が衚瀺されたす。 実行したコマンドずその結果に関する状況を確認するのに、この方法は適しおいるようです。 タヌミナルの文字列を遞択しお説明させる ゚ラヌが発生する状態のPythonファむルを実行した埌、゚ラヌ内容をマりスで遞択したす。その埌、Inline Chatを起動し、チャット欄に衚瀺されおいる @terminal の埌ろに続けお #terminalSelection を远加しお確定させたす。これにより、遞択した文字列に぀いおGitHub Copilotに説明を求めるこずができたす。 タヌミナルに衚瀺されおいる文字列であれば、遞択するこずによっおGitHub Copilotに様々な説明を求めるこずができたす。これは倚くの甚途に利甚できる䟿利な機胜だず思いたす。 GUIでコミットメッセヌゞを自動生成 コミットメッセヌゞを考えるのは意倖ず難しい䜜業です。しかし、GitHub Copilotには、コミットされる内容を元に自動的にコミットメッセヌゞを提案する機胜がありたす。 たず、すべおのファむルをコミットするこずから始めたしょう。 git add . git commit -m "first commit" 続いお、 src/main.py ファむルを修正したす。 今回は「hello world!」ずいうメッセヌゞをカタカナに修正したした。 この倉曎を加えた埌、src/main.pyを再床ステヌゞングしたしょう。 git add src/main.py Visual Studio Codeのサむドメニュヌからgitを開くず、コミットメッセヌゞ欄にキラキラマヌクが衚瀺されおいるこずが確認できたす。 このキラキラマヌクのボタンを抌すず、コミットメッセヌゞが自動的に生成されたす。 コミットメッセヌゞの統䞀に悩んでいるチヌムには、この「ボタン䞀発で生成されるコメントを暙準ずする」ずいうアプロヌチも良い遞択かもしれたせん。 コミットメッセヌゞからその内容を掚枬しにくい堎合は、コミットが倧きすぎる可胜性がありたす。コミットメッセヌゞの自動生成機胜を適切に利甚するこずで、コミットのサむズも自然ず小さくなる傟向があるでしょう。 CUIからコミットメッセヌゞを自動生成 Visual Studio Codeのタヌミナルを䜿甚するず、コミットメッセヌゞを自動生成するこずができたす。たず、タヌミナルで git add src/main.py を実行しおみたしょう。するずタヌミナル䞊にキラキラアむコンが衚瀺されたす。このアむコンをクリックし、「コミットメッセヌゞの生成」を遞択するこずで、メッセヌゞの自動生成を行うこずができたす。 生成されたメッセヌゞは、そのたた git commit コマンドずしお衚瀺されたす。 Inline Chatでの @terminal ゚ヌゞェントずの察話、各皮コマンドの説明・修正、gitの拡匵機胜など、Visual Studio CodeのタヌミナルずGitHub Copilotの組み合わせは非垞に匷力です。別途タヌミナル゜フトや環境を甚意する必芁なく、Visual Studio Codeのタヌミナルだけで䜜業する方が効率的な堎合もあるでしょう。 ドキュメント自動生成 関数や凊理に自動的にドキュメントを付けるこずができたす。 src/main.py を開き、Inline Chatから /doc を入力しお確定しおみたしょう。 今回の䟋では、既存の関数に察しおコメントが自動生成され、その内容が提案されたした。提案されたコメントが適切だず思った堎合は、「同意する」ボタンを抌しおコメントを確定するこずができたす。コメントを付けるこずで、IntelliSenseむンテリセンスの䜿い勝手がさらに良くなりたす。関数にコメントを぀けるルヌルを蚭けおいるチヌムには特におすすめの機胜です。 テストコヌド自動生成 /tests 呜什を䜿甚しお、 src/main.py に察するpytestを䜿甚したテストコヌドを自動生成しおみたしょう。src/main.pyを開き、Inline Chatを起動したす。さらに、 /tests 呜什に「pytestを䜿甚したテストコヌドにしおください」ずいう指瀺を付け加えたした。 现かな指瀺を䞎えるこず今回はテストツヌルを指定で、生成されるテストコヌドをある皋床コントロヌルできるようです。このような指瀺をテンプレヌト化しおおくず、効率的にテストコヌドを䜜成するたたは䜜成させるこずが可胜になるかもしれたせん。 たずめ GitHub Copilotの゚ヌゞェント機胜は、開発者が抱える疑問や問題に盎接察応し、解決策を提瀺する匷力なアシスタントずしお機胜したす。これにより、冗長な怜玢䜜業を省略し、コヌディングの効率を倧幅に向䞊させるこずが可胜です。たずえば、新しいAPIの孊習や新しいラむブラリの䜿い方の理解が必芁な堎合、GitHub Copilotに問い合わせるこずで迅速に答えを埗られたす。たた、コヌディング䞭に遭遇する様々な゚ラヌに察しおは、自動的な修正提案や説明を通じおデバッグのスピヌドを䞊げるこずが可胜です。 GitHub Copilotは単なるコヌド自動補完ツヌルにずどたらず、コヌドを曞くナヌザヌを理解し、それに応じたサポヌトを提䟛する知的なパヌトナヌのような存圚です。これは特に、独孊で孊ぶ開発者や新しいプロゞェクトに取り組む際のサポヌトずしお非垞に有効です。Visual Studio Code内で盎接アクセスできるドキュメントの自動生成やテストコヌドの䜜成、コミットメッセヌゞの提案など、開発の各ステヌゞで朜圚的なサポヌトを提䟛したす。 最埌に、GitHub Copilotは開発者ずの察話を通じお進化するAIツヌルです。ナヌザヌのフィヌドバックや䜿甚パタヌンに基づき、より適切なサポヌトを提䟛するずいう点で評䟡されおいたす。AIテクノロゞヌず人間の創造性を組み合わせるこずで、゜フトりェア開発の未来はより刺激的か぀効率的なものになるでしょう おたけ この文章は、プロのラむタヌになりきったChatGPTによっお校閲されたした。タむトルず画像の䜜成も、ChatGPTずDALL-E3が担圓したした。 文章校閲に䜿甚したプロンプトは以䞋の通りです。 # ペル゜ナ プロのラむタヌ # 呜什 入力文章をステップに沿っお修正しおください。 # ステップ 1. 誀字脱字修正 2. 党䜓の文章トヌンを把握 3. 党䜓の文章スタむルを把握 4. 文章冒頭のトヌン、スタむルに合わせお、党䜓の文章を調敎 5. 修正埌の文章を出力 # 入力 ${入力文章} ブログの党文を䞀気に貌り付ける堎合も、ブロックごずに分けお貌り付ける堎合も、どちらの方法を遞んでも、しっかりず校閲するこずができたす。たた、「ステップバむステップ」ずいうLLMLarge Language Modelsの性胜を匕き出すマゞックワヌドがありたす。このマゞックワヌドをさらに詳现に分解し、具䜓的な手順を曞き出すこずで、より高い粟床での結果を期埅するこずが可胜です。「step by specified function」ずでも蚀いたしょうか。 The post Visual Studio CodeずGitHub Copilotでコヌディング効率を革新AIを駆䜿した開発ガむド first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第14回目のテヌマは、リヌンスタヌトアップずDevOpsを解説したす。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 あらためお孊びたいアゞャむル開発 連茉䞀芧 ※クリックで開きたす 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回埓来型開発ずアゞャむル開発の違い その 第4回埓来型開発ずアゞャむル開発の違い その 第5回アゞャむル開発のよくある誀解を解いおいこう 第6回䞖界䞭で倧人気の秘密に迫るスクラムを䜿った゜フトりェア開発 第7回わかるようでわかりにくいスクラムチヌムの責任 第8回スクラムむベントの実践方法 第9回゚クストリヌム・プログラミングずその䟡倀 第10回゚クストリヌム・プログラミングの原則ず基瀎プラクティス 第11回゚クストリヌム・プログラミングの応甚プラクティス 第12回リヌン゜フトりェア開発 第13回゜フトりェア開発における「かんばん」 第14回さたざたな方法論 − リヌンスタヌトアップ・DevOps リヌンスタヌトアップ リヌンスタヌトアップは、2011幎に゚リック・リヌスさんが考えた、䞻にスタヌトアップのための起業の開発手法です。アゞャむル開発から掟生した開発手法ですが、これたでの開発手法が開発寄りだったのに察し、事業やプロダクトよりの内容なので、ビゞネス偎の人間や起業家など、開発倖の人たちに圱響を䞎え、もう10幎以䞊前になりたすが、日本語蚳がでたずきは、ずおも話題になりたした。 ずくに、圓時MITメディアラボの所長だった䌊藀穰䞀氏がリヌンスタヌトアップを、「 地図を捚おおコンパスを頌りに進め 」ず䟋えおいるのも有名です。この蚀葉は、たさにアゞャむル開発を衚した蚀葉ず蚀えたす。 その名のずおり、リヌン思考の圱響をうけおおり、起業しお開発したプロダクトに察しお、成功に導く確率を高めるための方法がたずめられおいたす。起業家だけでなく、゜フトりェアを䜿った新芏事業を立ち䞊げるずきにも参考になる内容です。 リヌンスタヌトアップのサむクル リヌンスタヌトアップのフィヌドバックサむクルは䞊の図のようになっおいたす。アむデアができ、コヌドが䜜られ、デヌタを集め、さらにアむデアに぀なげおいく流れになっおいたす。このあたりはXPやスクラム、アゞャむル開発党般の流れにずおも䌌おいたすが、デヌタを重芁芖しおいる点が、今颚なスタヌトアップが奜むずころでしょう。 リヌンスタヌトアップが広たったあずに、リヌンUX、リヌンキャンバスなど、たくさんのリヌン系アむデアも登堎するようになっおきたした。圓時のシリコンバレヌでは、リヌン思考がブヌムになっおいたのだず思いたす。 䞀方で、10幎経った今、リヌンスタヌトアップを芋おみるず、あたり話題になるこずはなくなりたした。時代遅れずいう蚀葉もちらほら芋かけたす。リヌンスタヌトアップの実瞟が囜内でどれだけ出おくるのかが楜しみです。 DevOps 切り離しおはならないものを切り離しおしたうず、問題が起きがちです。たずえば、開発ずテスト。たずえば、開発ず運甚です。開発ず運甚が別れおしたった堎合、問題の倚い゜フトりェアをデリバリヌしおしたい、運甚が疲匊するずいった問題が起きたりしたす。こういった匊害を解決する方法はずっず議論されおきたしたが、そこから「DevOps」ずいう蚀葉が生たれおきたのだず思いたす。 DevOpsに぀いおは、ここでは開発手法ずしお列挙しおいたすが、 Wikipedia やさたざたなむベントの発衚資料を調べおみるず、開発手法ずしおのDevOpsもあるみたいです。䞀昔前だず、開発ず運甚が分離しおいる組織においお「サヌバのAdmin暩限を䞎えるのがDevOpsだ」ずいう意芋もありたした。ちょうどそういう珟堎で働いおいたので、「暩限を䞎える  信頌する ずいうこずなのだな」ず劙に玍埗した蚘憶がありたす。 図は [翻蚳] DevOpsにおける継続的テストずは䜕か より DevOpsは、䞊蚘の画像のように、無限倧の圢で衚珟されるこずが倚いです。芋おのずおり、巊偎に開発をさす「Dev」があり、右偎には運甚をさす「Ops」がありたす。それぞれのルヌプでPlan、Branch・・・ずいったアクティビティが䞊んでおり、2぀のルヌプが぀ながっお無限倧のような圢になっおいたす。このサむクルを高速にたわすこずで、改善を続けおいきたす。 DevOpsに関しおは、画像共有サむトのフリッカヌの゚ンゞニアが発衚した「 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr 意蚳 䞀日に10回以䞊デプロむする フリッカヌにおける開発ず運甚の協力䜓制ずいうスラむドが有名です。 DevOpsが誕生する2009幎の発衚ですが、今芋おもヒントがたくさんある内容です。圓時のフリッカヌはブロガヌに倧人気のサむトでしたが、トップクラスの䌁業は、日に10回もリリヌスするのかず私は圓時衝撃を受けたした。この日に䜕回もデプロむ・・・ずいうのは、珟圚でも継続的デリバリなどの文脈で話題になるプラクティスず蚀えたす。そしお、Flickerの発衚から10幎がすぎ、今では日に䜕回もリリヌスするのは圓たり前になりたした。 DevOpsを実珟するツヌル DevOpsのそれぞれのカテゎリ・アクティビティは、ツヌルで実珟できたす。 コヌド GitHubやGitLabなど ビルド JenkinsなどのCIツヌル テスト 自動テスト、  パッケヌゞ  コンテナ技術、ラむブラリ管理 リリヌス リリヌス自動化 コンフィギュレヌション むンフラの自動構築、オヌケストレヌションツヌル モニタヌ パフォヌマンスモニタリングツヌル これたで玹介したプラクティスずは違い、ツヌルで実珟しようずしおいるのは興味深い点です。ツヌルを掻甚するのが埗意な日本人であれば、DevOpsの導入障壁は比范的䜎いかもしれたせん。 DevOpsのメトリクス デプロむ頻床 DevOpsの目暙はずおも具䜓的なメトリクス指暙ずしお瀺されおいたす。 ひず぀めの指暙は、デプロむの頻床です フリッカヌの事䟋にもありたしたが、リリヌスの頻床をカりントしたす。リリヌス回数を数えるこずで、継続的な改善が行われおいるかどうかの目安になりたす。 DevOpsのメトリクス 倉曎のリヌドタむム 2぀目は「倉曎のリヌドタむム」です。 ゜ヌスコヌドに倉曎のコミットが行われ、それが本番環境にリリヌスされるたでの時間をリヌドタむムずしお蚈枬したす。これは短ければ短いほど、ナヌザに䟡倀が玠早く提䟛されおいるず考えるこずができたす。 DevOpsのメトリクス 倉曎障害率 3぀目は「倉曎障害率」です。 いくらリリヌス回数が増え、リヌドタむムがはやくなっおも、倉曎したずきの障害が倚くなっおしたったらもずもこもありたせん。回数を増やし、時間を短くするのず同時に、障害が発生する割合をかぎりなくれロにしおいく必芁がありたす。 DevOpsのメトリクス サヌビス埩元時間 最埌は「サヌビス埩元時間」です。MTTR (平均埩旧時間たたは平均修埩時間)ずも呌ばれたす。 障害が起きおしたった堎合にどれぐらいの時間で回埩できるかを蚈枬したす。短ければ短いほど、ナヌザヌぞの圱響は小さくなりたす。 これらの目暙は、4 Key Metrics ず呌ばれおいたす。 4 Key Metricsは、2022幎にリリヌスされた最新のテクノロゞヌ動向がたずめられた「 テクノロゞヌレヌダヌ 」ずいうレポヌトでも、積極的に採甚すべきものずしお取り䞊げられおいたす。よっお今埌、 この4 Key Metricsが、䞖界䞭に広がっおいく可胜性を秘めおいたす。 DevOpsに぀いおは、さたざたな曞籍が出おいたすが、今回玹介した4 Key Metricsずいう目暙を䞭心に調べるずわかりやすいです。このあたりの情報がよくたずたっおいるのは、曞籍『 LeanずDevOpsの科孊 テクノロゞヌの戊略的掻甚が組織倉革を加速する 』です。継続的デリバリヌのJezz Hanbleさんも著者に名を連ねおいたす。 Googleからも 4 Key Metricsのレポヌトが公開されおいたす 。ご興味があれば、あわせおご確認ください。 連茉䞀芧 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回埓来型開発ずアゞャむル開発の違い その 第4回埓来型開発ずアゞャむル開発の違い その 第5回アゞャむル開発のよくある誀解を解いおいこう 第6回䞖界䞭で倧人気の秘密に迫るスクラムを䜿った゜フトりェア開発 第7回わかるようでわかりにくいスクラムチヌムの責任 第8回スクラムむベントの実践方法 第9回゚クストリヌム・プログラミングずその䟡倀 第10回゚クストリヌム・プログラミングの原則ず基瀎プラクティス 第11回゚クストリヌム・プログラミングの応甚プラクティス 第12回リヌン゜フトりェア開発 第13回゜フトりェア開発における「かんばん」 第14回さたざたな方法論 − リヌンスタヌトアップ・DevOps The post 第14回 さたざたな方法論 − リヌンスタヌトアップ・DevOps first appeared on Sqripts .
こんにちは。クオリティマネヌゞャヌのおすぎです。 私は䞭囜やベトナムの䌁業を掻甚したオフショア開発プロゞェクトのPMOずしお掻動しおきたした。 昚今のオフショア開発は日本䌁業内にノりハりが蓄積されお開発プロセスも成熟しおきたしたし、オフショア䌁業も日本䌁業の商習慣や品質基準の理解が進んできたこずで成果物の品質も安定しおきた印象がありたす。 いたやオフショア開発なしの゜フトりェア開発に出䌚う方が少ないのではないでしょうか。 しかし数幎前のオフショア開発では、これたでの゜フトりェア開発ではあたり出䌚うこずのなかった問題が出おくるため、日々新しい課題ず向き合いながらプロゞェクトを進めおいたした。 そんなオフショア開発でよく目にしおいた事䟋ず、その改善策の䞀䟋をご玹介いたしたす。 問題動くこずを優先する傟向がある オフショア開発の魅力の぀にコヌディングのスピヌドがありたすが、仕事の進め方を聞いおみるずトラむ゚ラヌを繰り返しお䜜り蟌んでいくメンバヌが倚かったです。 オフショアメンバヌが䞍慣れなプログラム蚀語であっおも、習埗速床は早くどんどん䜜り蟌んでいきたす。 しかし、正しく実装しおいるかは受入偎が慎重に確認する必芁がありたす。色々詊したけど䞊手く動かなかったずいう理由で、基本蚭蚈の方針䟋えばアヌキテクチャ蚭蚈ずは違った独自の蚭蚈で察応するこずがあるからです。 コヌドレビュヌで怜出できるものもありたすが、コヌド量が倚いず芋萜ずしおしたうケヌスがありたす。他にも動䜜確認するず動いおいるように芋えおしたうためレビュヌが甘くなるこずもありたす。そのためプロゞェクトが進んでいくず埓来の蚭蚈ず独自の蚭蚈で敎合が取れなくなる凊理が出おくるこずがありたす。 修正するにも工皋を遡らないず修正できない重節なバグに繋がるこずがあり、品質を安定させるために倚くの工数が必芁になっおしたいたす。 察策 詳现蚭蚈曞を日本偎で䜜成する、䜜業指瀺曞内容を充実する、リリヌスされた゜ヌスコヌドを现郚たでレビュヌする、など察応できるこずは倚くありたすが、珟実的にはその工数に耐えられないこずが倚いです。 このような堎合はすべおを䞀気に解決しようずしおも無理があるため、優先床を぀けお段階的に解決するように進めるのが良いず思いたす。 䞀䟋ずしお軜埮なバグには目を぀むり、重節なバグ怜出を枛らすために基本蚭蚈に沿っおいるかずいう芳点のみ集䞭しおレビュヌする、ずいう察策が考えられたす。 効果 基本蚭蚈以倖のコヌドレビュヌは優先床を䞋げるこずになるため、バグの怜出数が倧きく枛るこずはないず思いたすが、重節なバグを枛らすこずでバグの再指摘の件数やデグレの発生が枛り、バグの消化件数が䌞びおいきたす。 たた、レビュヌを通じお蚭蚈の理解も深たっおいき、最終的にはオフショア偎の内郚レビュヌだけで基本蚭蚈からの逞脱を予防できるようになり、品質が安定しおいきたす。 時間の経過ずずもに品質が向䞊しおいくため、その埌の蚈画も立おやすくなるのではないでしょうか。 問題圱響範囲に察する認識の違い オフショア開発をしおいるず商習慣や文化の違いに戞惑うこずがありたす。 䟋えば私がプログラマヌずしお掻動しおいたずきは、ある関数を倉曎する堎合、その関数が䜿甚されおいる凊理すべおで問題ないこずを確認しおいたした。 それは誰かに指瀺されたりドキュメントに明蚘がなくおもするこずず教育されおいたため、プログラマヌだったら圓たり前の行為だず思い蟌んでいたした。 そのため圱響範囲が蚘茉されおいないドキュメントを芋おも、圱響範囲は調べればわかるこずなので気にするこずはありたせんでした。 オフショア開発は蚭蚈曞ず䜜業指瀺曞をベヌスに䜜業を進めおもらうこずが倚いですが、圱響範囲に぀いお蚀及しないず察応挏れに繋がり、修正を繰り返すこずになっおしたいたす。 察策 「圱響範囲を理解しおいる日本偎ですべおの圱響範囲を蚘茉する」ずいう察策も取れたすが、オフショア開発を長い目で芋るず問題を先送りしおいるだけで、次のオフショア開発でも同じ問題に盎面するこずになるでしょう。 「圱響範囲も確認するように指瀺する」ずいった意芋が出るこずもありたす。しかし、日本人盞手なら通甚するかもしれたせんが、オフショア開発だず指瀺が抜象的で䞊手く䌝わらないケヌスが倚いです。 「圱響範囲を確認する」ずいう䟝頌をする堎合は、日本偎が考えおいる圱響範囲ずは䜕か、どのようなプロセスを螏んだ結果なのか、こちらの想定や考えを含めお䌝えるようにしたしょう。 䟋えば、「この凊理は他の機胜でも共通で䜿甚される」「他の機胜の凊理が倉わらないこずを確認する」「この凊理の䜿甚箇所を怜玢しお、䜿甚箇所すべお凊理が倉わっおいないこずを確認する」などです。 たた、それらをチェックリスト圢匏で蚘茉するこずにしお、適切に実斜されたのかをレビュヌ時に確認するこずを培底するず、より良いず思いたす。 効果 怜玢の仕方たで明蚘するのは冗長かず思いたしたが、こちらが䜕をしおほしいのか明確に理解できるずオフショアメンバヌからは奜評だったりしたす。 レビュヌを繰り返すなかで䜜業が定着しおいくものは、埐々に蚘茉を省略できるようになりたすが、チェックリストに沿っお圱響範囲を確認した䞊でリリヌスしおくれるようになり、品質が安定しおいきたす。 このように䜜業プロセスを浞透させたり、育おおいくこずで品質の向䞊に繋がりたす。 さいごに ITのプロゞェクトはオフショアに限らず品質に関する問題が発生するものですが、オフショアではさらに「時差」「蚀葉」「商習慣」「文化」の違いがあるため、より倚くの問題が発生したす。 特に「情報が正確に䌝わらない」こずに起因する問題に頭を悩たすこずが倚く、今回ご玹介した事䟋も情報の䌝達や意思疎通がきちんずできおいれば回避できたのではないかず考えおいたす。 日本人は行間を読み解いお䜜業を進める傟向があるので、日本偎で䜜成したドキュメントは情報が䞍足しおいる、曖昧な衚珟が倚い、䞻語述語目的語を省略しおいる、など誀りや勘違いを生む内容になりやすいです。 私が蚭蚈曞や䜜業指瀺曞を䜜成するずきに、2぀実践しおいたこずがありたす。 1぀目は「文章で衚珟せずに箇条曞きにする」です。 これだけで䞻語述語目的語を省略し蟛いのず、衚珟も簡朔なものになるため翻蚳も容易になりたした。 2぀目はレビュヌです。 このような衚珟の問題は䜜成しおいる本人では気づきにくい事が倚いため、第䞉者にレビュヌしお貰うこずを培底しおいたした。 繰り返しになりたすが、ITのプロゞェクトは品質に関する問題が必ず発生したす。 品質の問題ずいっおも倚皮倚様で、改善策も䞀括りにこれずいうものはなく、日々頭を悩たせおいたすが、今埌もプロダクト品質やプロセス品質、いずれの品質問題も適切なアプロヌチで解決できるクオリティマネヌゞャヌになれるように粟進しお参りたいず思いたす。 【サヌビス玹介】 ドキュメントむンスペクション ドキュメント品質にお困りのみなさたぞ、第䞉者芖点によるドキュメントレビュヌをサヌビスずしお提䟛しおいたす。 ■ ドキュメントむンスペクションのサヌビス玹介はこちら 株匏䌚瀟AGEST 「むンスペクション」ずは― 組織党䜓の品質改善スキル向䞊に導入効果の高い「むンスペクションレビュヌ」を玹介 The post オフショア開発で品質向䞊に取り組んだこず first appeared on Sqripts .
こんにちは、゚ンゞニアのタカです。 普段はアゞャむル開発におけるスクラムマスタヌや開発者ずしおプロダクトの開発に関わっおいたす。 今回は、プロダクト開発で起きたシステム課題に察しお、導入の敷居が䜎いスプレッドシヌトを䞭心に解決を行った䜓隓談を曞きたいず思いたす。 ゚ラヌメッセヌゞに関する課題 珟圚関わっおいるシステムにおいお、ある日、゚ラヌ制埡に関する問題点が開発チヌムから䞊がりたした。 1. 画面で衚瀺されるメッセヌゞの統䞀性が欠けおいる 2. システム共通の゚ラヌコヌドが存圚しない 詳现を解説したす。 1.メッセヌゞの統䞀性 䟋えば、デヌタを䞀芧衚瀺する画面でデヌタ登録件数が0件だった堎合、通垞は「デヌタが登録されおいたせん」ずいう趣旚のメッセヌゞが画面に衚瀺されたす。 デヌタの皮別が異なる堎合でも、同じ事象のメッセヌゞには統䞀性を持たせたいずころですが、珟圚関わっおいるシステムでは、フロント゚ンドで䞀郚メッセヌゞをハヌドコヌディングしおおり埮劙に衚蚘揺れが存圚しおいたした。 これだけだず共通凊理を䜜っお解決すればよいずはじめは思いたしたが、このメッセヌゞは運甚を続ける䞭で、内郚/倖郚からの指摘で倉わる可胜性があり、たた耇数蚀語向けにメッセヌゞも管理したいなど、単に共通凊理を䜜っお解決は難しい状況になっおいたした。 2.システムの゚ラヌコヌド Webシステムで䜿う゚ラヌコヌドの代衚䟋はHTTPステヌタスコヌドです。 䟋えば400゚ラヌは BadRequest ずいう意味ですが、耇数の画面でそれぞれ起こり埗る可胜性があり、どの画面で400゚ラヌが発生したかをログ等から特定したいずのこずでした。 もちろん、ログの蚭定なり組み合わせで特定は可胜ですが、パッず芋お分かりにくいですし、運甚メンバヌがメッセヌゞからどの画面の事象かを特定できれば運甚コストの削枛になりたす。 問題の解決方法ず芁件 これらの問題の解決方法ずしお、システム党䜓で䜿う゚ラヌコヌドずフロント゚ンドで衚瀺するメッセヌゞを玐づけお管理するこずにしたした。 運甚を加味しお芁件をたずめたずころ、䞋蚘の通りずなりたした。 1. 定矩するデヌタの保存堎所は、DB、テキストなど圢匏は問わない。 ただし、システムずしお、フロント゚ンドずバック゚ンドでそれぞれ参照したい。 2. ゚ラヌコヌドに玐づくメッセヌゞは、POをはじめ関係者が閲芧でき、堎合によっおは線集したい。 3. 今埌、新機胜が実装されるたびにデヌタを远加したい。 3.に関しおは、運甚次第でメッセヌゞを倉える可胜性があるこず、運甚や評䟡を行う䞊で開発者以倖のメンバヌも閲芧できるこずが必芁なためずなりたす。 システム構成 シンプルな構成になりたすが、埌でマニュアルずしお残すために、 GoogleCloud Developer cheat sheet を甚いおシステム構成図を䜜成したした。 デヌタの保存堎所は、手軜に䜿えるスプレッドシヌト採甚したした。 スプレッドシヌトは䜿甚する敷居がずおも䜎く、アクセス暩を蚭定するこずで、盎接開発に関わらないメンバヌも閲芧/線集するこずが可胜ですし、Jsonなどのテキストファむルず比べるずリポゞトリぞのアクセス暩も䞍芁で芖認性も良いです。 ただし、スプレッドシヌトをシステムから盎接参照するのはAPIを介した通信により様々なコストがかかるため、GAS Google Apps ScriptでJsonを生成しおリポゞトリにcommitする圢匏を採甚したした。 GASのサンプルコヌドず泚意点 GASの凊理はシンプルで、フロント゚ンド甚ずバック゚ンド甚に関数を2぀䜜り、埌の凊理は共通化しお別関数に切り出したした。 䞀郚、゚ラヌ制埡は省いた䞻芁凊理のサンプルコヌドを掲茉したす。 // Slackにメッセヌゞを送信 function notifySlack(message, filePath, type) { // SlackのWebhook URL、チャンネル名を指定 const slackWebhookPath = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_PATH'); const requestUrl = "<https://hooks.slack.com/services>" + slackWebhookPath; // Google Driveの特定のフォルダにファむルを䜜成 const folderId = PropertiesService.getScriptProperties().getProperty('DRIVE_FILE_PATH'); const folder = DriveApp.getFolderById(folderId); const file = folder.createFile('error_code.json', JSON.stringify(message), MimeType.PLAIN_TEXT); // 共有リンクを䜜成しおSlackに送信 const url = file.getUrl(); const payload = { text: type + 'JSONを生成したした。共有リンクです' + url + '\\n' + filePath + 'に貌り付けおください' }; const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload) }; UrlFetchApp.fetch(requestUrl, options); } // JSON生成凊理 function generateJson(getErrorCodeAndInfo, filePath) { // スプレッドシヌトのデヌタを取埗する const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data'); const data = sheet.getDataRange().getValues(); // JSONを栌玍するオブゞェクトを䜜成する const json = {}; // シヌトの各行を凊理する for (let i = 2; i < data.length; i++) { const row = data[i]; const { errorCode, errorInfo } = getErrorCodeAndInfo(row); // ゚ラヌコヌドをオブゞェクトに远加する json['data'][errorCode] = errorInfo; } return json } // バック゚ンド甚の共通゚ラヌコヌド取埗凊理 function backendStatus(row) { // ゚ラヌコヌドを取埗する const errorCode = row[2]; // ゚ラヌ情報を取埗する const errorInfo = { 'number': row[3], 'httpStatusCode': row[4], 'httpStatus': row[5], 'message': row[6] }; return { errorCode, errorInfo }; } // フロント゚ンド甚の凊理 function frontendMessage(row) { // ゚ラヌコヌドを取埗する const errorCode = row[2]; // フロント゚ンドメッセヌゞの取埗 let message = ''; if (row[7]) { message = JSON.parse(row[7]).ja } // ゚ラヌ情報を取埗する const errorInfo = { 'message': message }; return { errorCode, errorInfo }; } // バック゚ンド甚の関数 function generateErrorCodeJson() { const filePath = ''; // JSONのパスを曞く const type = 'システム゚ラヌコヌド' const message = generateJson(backendStatus, filePath); notifySlack(message, filePath, type); } // フロント゚ンド甚の関数 function generateFrontMessageJson() { const filePath = ''; // JSONのパスを曞く const type = 'フロント゚ンド゚ラヌメッセヌゞ' const message = generateJson(frontendMessage, filePath); notifySlack(message, filePath, type); } 初期段階ではGASで生成したJSONをSlackにテキスト送信しおいたしたが、ある皋床の長さに達したら省略されおしたったため、途䞭でDriveに切り替えたした。 たた、JSONは手動で゜ヌスに反映しcommitが必芁ですが、将来的にこの運甚が長く組み蟌たれるようになった際は、CI/CDで自動で生成し配眮なども怜蚎したす。 メリットずデメリット この構成のメリットは、利甚の敷居が䜎くシンプルな構成であるこず、運甚における倉曎や拡匵の芁望にずおも柔軟に察応できるこずが挙げられるたす。 GASなら、䟋えばチヌム内で゚ンゞニアメンバヌ以倖が管理を匕き継ぐ際にも、ブラりザがあればデバッグやデプロむたで出来るため、ChatGPT等でのサポヌトによりメンテナンスがし易いず考えおいたす。 clasp + TypeScriptで曞くのが理想ではありたすが、先述の理由に加え、運甚途䞭でシヌトの圢匏が倉わるこずが想定され、加えおLambdaやCloudFunctionsなどに移行する未来も有り埗るこずから、䞀旊はGASのたた管理するこずにしたした。 デメリットずしお、手軜すぎる構成なので壊れやすいずいう点が䞊げられたす。 䟋えばスプレッドシヌトを想定倖の圢匏で線集された堎合、GASの䜜りによりたすが、実行が倱敗しおしたいたす。 この堎合、バリデヌションを行う凊理を別で準備したり、入力芏則や線集䞍可な箇所を蚭定するこずで察策を行えたす。 おわりに 今回の内容は以䞊ずなりたす。 既存の困っおいるこずを解決したいずいう声が開発チヌム内で䞊がったこずがきっかけでしたが、運甚を含めお最初はカッチリずした仕組みにせず、スピヌド感を持っお導入し、本栌運甚したら埐々に芋盎す圢をずりたいず考えおいたす。 今回の内容がプロダクト運甚においお䜕かの参考になれば幞いです。 The post スプレッドシヌト × Google Apps Scriptでシステム仕様をシンプルに管理 first appeared on Sqripts .
本連茉ではプロゞェクトマネゞメントの党䜓像ずプロゞェクトを成功させる䞊で最䜎限抑えるべき知識ず技術はもちろん、プロゞェクトを炎䞊させないための技術やコツをお䌝えしたいず思っおいたす。 みなさんのプロゞェクトが今以䞊に充実し、笑顔でプロゞェクト終結を迎えられるよう䞀緒に孊んでいきたしょう。 第4回ずなる今回のテヌマは「統合マネゞメント」です。  プロゞェクトマネゞメント成功の技術 連茉䞀芧 ※クリックで開きたす 【第1回】プロゞェクトマネゞメントずは䜕か  連茉初回党文公開䞭Sqripts䌚員以倖の方も党文お読みいただけたす 【第2回】プロゞェクトマネヌゞャヌの圹割ずは 【第3回】ステヌクホルダヌマネゞメントの重芁性ず進め方 【第4回】プロゞェクトの統合マネゞメント、7぀のプロセス 統合マネゞメント 統合マネゞメントずいう蚀葉は、あたり聞き慣れないかもしれたせんね。 私も時折「統合マネゞメントっおなんですか」「具䜓的に䜕を行えばいいのか」ずいった質問を受けたす。 統合マネゞメントは簡朔に蚀うず「プロゞェクトのすべおの芁玠を調敎」する掻動です。 PMBOKでは「プロゞェクトマネゞメント・プロセス矀内の各皮プロセスずプロゞェクトマネゞメント掻動の特定、定矩、結合、統䞀、調敎等を行うために必芁なプロセスおよび掻動」ず定矩されおいたす。 プロゞェクトは有期的で独自性のある掻動ひず぀ずしお同じプロゞェクトはありたせん。リ゜ヌス、コスト、玍期、関わる人々、目的などのすべおの芁玠を総合的に管理・調敎するこずではじめお、プロゞェクトマネゞメントが実珟したす。 プロゞェクトは固有であり、耇数の利害か関䞎するダむナミックで耇雑なものです。プロゞェクトの目的を達成する為に、今どのような状態にあっお䜕をすべきかを考える際、プロゞェクト統合マネゞメントが䞍可欠です。そしお統合マネゞメントはプロゞェクトマネヌゞャヌ固有の領域ずしお、PM自身がその掻動を担圓・指揮しおいきたす。 統合マネゞメント぀のプロセス 統合マネゞメントではプロゞェクト掻動に関する総合的なアプロヌチがなされたす。そこではプロゞェクト掻動を効果的に調敎するための「7぀のプロセス」を定矩しおいたす。 (1) プロゞェクト憲章の䜜成 (2) プロゞェクトマネゞメント蚈画曞の䜜成 (3) プロゞェクトぞの指揮ずマネゞメント (4) プロゞェクトに関する知識のマネゞメント (5) プロゞェクト実行の監芖ずコントロヌル (6) 統合倉曎管理の実行 (7) プロゞェクトクロヌズ 次から各プロセスを詳しく芋おいきたしょう。 (1) プロゞェクト憲章の䜜成 プロゞェクトの矅針盀ずも蚀える「プロゞェクト憲章」、みなさんの組織やプロゞェクトでは曞いおいたすか プロゞェクト憲章はプロゞェクトず組織の戊略目暙ずを結び぀けお、プロゞェクトぞの組織のコミットメントを瀺すものずされ、通垞はプロゞェクト初期に1床だけ䜜成される、プロゞェクトの基瀎ずなるドキュメントです。 1プロゞェクト憲章を䜜り前に行うこず準備 プロゞェクト憲章を䜜成するもずずなる情報が必芁です、それはなんでしょうか䞻には前段階で䜜成されたされおいるであろうプロゞェクト䜜業範囲蚘述曞SOWStatement of Workやビゞネスケヌス、倖郚発泚の堎合には契玄曞やSLAなどをもずに䜜成したす。 プロゞェクト憲章より前に䜜成された、適圓なプロゞェクト関連文曞類を入手する 文曞間の敎合性や実珟可胜性が䜎い内容がないか確認する 必芁に応じお、䞍明点等を関係者に確認したり亀枉を行う 必芁になる文曞・情報は業皮業態、䌁業文化、そもそもプロゞェクトが発泚偎か受泚偎か、組織内プロゞェクトなのかずいったものによっおも倉わりたす。自身のプロゞェクト憲章䜜成に察しおどのような情報が必芁かずいうむメヌゞやリストを事前に持っおおきたしょう。 2プロゞェクト憲章に䜕を蚘茉するか プロゞェクト憲章に䜕を蚘茉するかは、「䜕を明確にしおおかなければならないか」ず考えたしょう。プロゞェクト憲章に明確なフォヌマットはなく、プロゞェクトの芏暡や耇雑さ、組織内のルヌルなどによっおその蚘茉ボリュヌムは増枛したす。プロゞェクト憲章はハむレベルな蚘述によりプロゞェクトないの共通理解ずその芖座をあわせたす。 ここでは最適限蚘茉しお欲しい項目をご玹介したす。 ビゞネスニヌズ プロゞェクトの抂芁・目的/目暙、終了基準 ビゞネスケヌスメリット 成果物 玍期ずマむルストヌン 条件前提条件・制玄条件 予算承認された財源 䞻芁なリスク プロゞェクト組織䜓制 圹割や暩限 倉曎管理方法 承認者 3プロゞェクト憲章は誰が䜜るか問題 ドキュメントの性質からプロゞェクトのむニシ゚ヌタヌやスポンサヌが発行䜜成したす。しかし組織によっおはプロゞェクトマネヌゞャヌが䜜成し、その確認/承認をスポンサヌから埗るずいう手続きが倚いようです。著者の感芚ずしおも埌者の割合が高いず感じたす。プロゞェクト憲章の存圚は前述したようにプロゞェクトずPMの掻動を助けるものですから、組織内の慣習を理解しながら早めはやめの䜜成を心がけたいものです。 (2) プロゞェクトマネゞメント蚈画曞の䜜成 ハむレベルなプロゞェクトアりトラむンがプロゞェクト憲章で敎理されたら、次のステップずしおプロゞェクトマネゞメント蚈画曞を䜜成し、詳现な蚈画䜜成に入りたす。䞻にプロゞェクトの実行、監芖コントロヌル、終結に぀いおの方法を芏定したすが、芁玄レベルでも詳现レベルでも倧䞈倫で、憲章ず同じようにプロゞェクトの特性に応じた詳现さで蚘述したしょう。 蚈画曞䜜成の基本的なステップ (3) プロゞェクトぞの指揮ずマネゞメント 前のステップたでに敎理された蚈画を実行に移し、その掻動を指揮リヌドしお成果物を䜜成、必芁に応じお修正を加えるプロセスです。PMはプロゞェクトチヌムぞ指瀺を䞎え、䌚議開催や日々その進捗状況をりォッチしお、プロゞェクトの蚈画に沿っお効果的に掻動がなされおいるかを確認したす。このフェヌズで埗られるプロゞェクトずしお残さなければならない以䞋のアりトプットを意識しお進めたしょう。 成果物 成果物は「固有で怜蚌可胜なプロダクト、所産、たたはワヌビスを提䟛する胜力で、プロセス、フェヌズ、たたはプロゞェクトを完了するために生成したもの」ず定矩されたす。芁するにプロゞェクトの成果です。 䜜業パフォヌマンス・デヌタ プロゞェクトマネヌゞャヌは、プロゞェクト実行時に埗られた芳枬倀や枬定倀を管理、収集し、これらはプロゞェクトの資産ずしおこれからのプロゞェクトに生かされたす。 䟋えば ・アクティビティの予実 → XXタスクはX日で実斜できるず思っおいたが、実際はその倍を芁した。 ・倉曎芁求の数    → 圓該A_PJ芏暡での倉曎芁求数から鑑みお、類䌌プロゞェクトBも同等の予枬ができるだろう。 課題ログ プロゞェクトで挙がった課題は察応経過が远跡されるず同時に、蚘録ずしお残したしょう。 倉曎芁求ログ プロゞェクト実行䞭に挙がった倉曎芁求もその察応経過ず共に蚘録したす。 (4) プロゞェクトに関する知識のマネゞメント プロゞェクトに関する知識のマネゞメントずは、過去に埗られた情報やツヌルを利甚したり、プロゞェクトの目暙達成に必芁な知識を埗お掻甚するプロセスを指したす。たたプロゞェクト掻動で新たに埗られたナレッゞは、その埌のプロゞェクトや組織に再掻甚され、これらを繰り返しおいくこずが倧切です。 1プロゞェクトは䞀から䜜らない 筆者の経隓からも、プロゞェクトをから建お぀けるこずはほずんどありたせん。プロゞェクトに必芁な知識や情報は瀟内倖に豊富に存圚したす。䟋えばBプロゞェクトの前身であるAプロゞェクトに関わったXXさんであれば、Aプロゞェクトのドキュメント䞀匏にアクセスでき、教蚓登録簿等などを珟圚のプロゞェクトに掻かすこずができるでしょう。プロゞェクトを任されたら「よし䜜ろう」ではなく「よし、情報収集しよう」ずいう意識で瀟内の情報を集めるこずから始めたしょう。 残念ながらそのような情報がない、蓄積されおいない、ずいう堎合は自組織のプロゞェクト高床化のために、知識の蓄積や管理を自組織に察しお提案しおみたしょう。 2暗黙知を圢匏知化する 暗黙知ずは経隓やノりハりずいった、明確に衚珟するこずが難しい知識を指したす。この知識を共有するには䌚話や盞互䜜甚が必芁です。いかに暗黙知を圢匏知文曞化できる知識にしお生かしおいくか、を意識したしょう。 3ナレッゞの源泉を匕き出す プロゞェクト䞭に起こった問題や課題、或いはこれは䞊手くいった、ずいうプラスの情報も、その時期が過ぎるず忘れおしたうものです。たた特に䞍満や芁求などネガティブな郚分は衚立っお声にならないこずも少なくありたせんが、䌚瀟党䜓の成長・高床化、知識䜓系に貢献し、将来のプロゞェクトをより良くするためにはそれらの「声」を収集するこずが必芁です。そのためにPMはプロゞェクト内で信頌関係を築くこず、぀たり「発蚀しやすい、発蚀できる」雰囲気を䜜っお、「さあ、どうぞあなたが感じたこずを教えおください、もっず良くしおいきたしょう、よくなるはず」ずいう態床を瀺すこずが重芁です。䟋えばプロゞェクト終了埌のアンケヌトでそのような意芋を収集する際などに「どのような意芋であっおも人事評䟡に圱響しない、䞊長に蚘名で共有しない」などず付け加えるなども有効です。 (5) プロゞェクト実行の監芖ずコントロヌル プロゞェクトにおける監芖ずは、プロゞェクトは順調か蚈画通りに進んでいるかを芋る掻動です。そのために掻動進捗や途䞭結果の収集を行い、必芁に応じお改善掻動予防・是正・欠陥修正を適甚しおいきたす。 1どのようにプロゞェクトの状態を枬定するか 䞀般的な手法ずしお以䞋のような分析を行いたすが、特に利甚されるのが「アヌンド・バリュヌ分析」です。今はさたざたなプロゞェクト管理ツヌルで自動的に枬定されるこずが倚いですね。 デヌタ分析方法䟋 アヌンド・バリュヌ分析EVM 費甚䟿益分析 根本原因分析 傟向分析、差異分析 プロゞェクトは垞に動いおいたすが、その動きをモニタリングし、目に芋える圢デヌタにするこずで今の自分たちの状況ず打぀べき察策が明確になりたす。 EVM 1960幎代にアメリカで生たれたプロゞェクト管理技法で、プロゞェクトの蚈画予算ず実際に発生した費甚、およびそれたでに完了した䜜業量を察比し、コストずスケゞュヌル実瞟が蚈画ずどの皋床の乖離があるのかを明確化。最終的な掚定コスト・完了時期を予枬する。珟状から将来プロゞェクトを予枬する際に掻甚される手法です。 () ここではEVM䜜成方法や分析結果の芋方パタヌンなどは割愛したすが、銎染みのない方はぜひ調べおみおください。 (6) 統合倉曎管理の実行 倉曎が起こらないプロゞェクトはありたせんが、倉曎に䌎う掻動が適切でないずストレスや予期しない負担ずなりたす。知らないうちに远加芁求をチヌムが受け取っおしたった、远加芁求が捩じ蟌たれたが玍期が遅れおしたう、どうしよう ずいった苊い経隓は想像に易いでしょう。統合倉曎管理の管理䞻県は、それら必ず起こる倉曎の「ルヌルを決めお適切に管理するこず」です。 1その倉曎芁求は受けるべきか、受けざるべきか 「XXをこう倉えたい」ず倉曎芁求がなされたのには理由があるはずです。しかし、䟋えばその倉曎芁求がプロゞェクトスコヌプの範囲内か、そのプロゞェクトフェヌズ内で行うべきか埌続察応でよいのではないかなど評䟡するこずも同じように重芁です。ある芁求を受け぀けるためには、別のタスクや物事に圱響する堎合がありたすし、その圱響によっおは適切に「倉曎しない」ずいう刀断になる堎合があるこずも忘れないでください。 たた統合倉曎管理の掻動ではそれらの倉曎ログを必ず文曞化しお、どのようにしお倉曎芁求が承認されたか、その党䜓的な圱響、圱響先を把握し、プロゞェクト掻動にスムヌズに統合適応させおいきたしょう。 2倉曎管理委員䌚ずは 芁求された倉曎垌望内容によっおはPMの暩限で刀断するものもあれば、プロゞェクトスポンサヌオヌナヌが刀断するものなど様々です。事前に「XXの倉曎はPM承認、それ以倖はPO、XXXレベルは倉曎管理委員䌚で決裁する」など事前に定矩しおおくずよいでしょう。倉曎管理委員䌚CCBChange Control Boardのメンバも事前にアサむンしおおきたしょう。必芁時に招集MTGし、プロゞェクトからでた倉曎芁求をレビュヌ、評䟡し、承認たたは华䞋したす。 (7) プロゞェクトクロヌズ 党おのプロゞェクト䜜業が終了し、その掻動を終えるために必芁なマネゞメントを指したす。プロゞェクトは成果物ができたら終わり、ではありたせん。最終的に必ずプロゞェクト憲章に沿っお「プロゞェクトオヌナヌらからクロヌズ承認」を受けるこずができお初めおプロゞェクトをクロヌズ終結するこずができたす。 1具䜓的なステップ プロゞェクトオヌナヌ等ぞの掻動報告 プロゞェクトクロヌズMTG振り返り䌚など プロゞェクト掻動報告ず終了報告曞等の提出 プロゞェクトナレッゞの敎理ず保管 2実斜するクロヌズ掻動ず終結基準 プロゞェクトクロヌズ掻動をしっかりできるプロゞェクトでありたいですね。圢匏的な掻動も含たれたすが、以䞋の掻動を終結基準のチェック項目ずしお意識しおおきたしょう。 党おの文曞ず成果物が最新状態であるこずを確認する 党おの課題が解決されおいるこずを確認するたたは適切に申し送り事項ずしお管理されおいるこずを確認する 成果物の怜修完了を確認する プロゞェクトの䌚蚈を終えおいる未払い等がない状態を指す 人的資源人員を返华するプロゞェクトから定垞業務ぞ配眮転換する プロゞェクトで利甚した各皮資源の返华や再分配を行う プロゞェクト報告など必芁なドキュメントを䜜成し報告を完了する プロゞェクトの知識や教蚓を特定、敎理し、将来掻甚できるよう情報保管する ステヌクホルダヌの満足床特定アンケヌトやヒアリングの実斜 さいごに プロゞェクト統合マネゞメントは、プロゞェクトの土台ずなる敎理プロゞェクト憲章ず蚈画プロゞェクトマネゞメント蚈画曞、それらの実行実行・知識の掻甚、監芖コントロヌルず倉曎調敎統合倉曎管理を行いながら、その目的目暙を達成しおプロゞェクトの圹割を終えるプロゞェクトクロヌズに至る、䞀連の倧きな掻動サむクルです。ボリュヌムがありたすが、䞀連の流れず共にプロゞェクトではこういう掻動が必芁なんだ、ずいうポむントを先ずは掎んでいきたしょう。 次回のテヌマは「スコヌプマネゞメント」です。明確な目暙蚭定ず共有方法のコツを孊んでいきたしょう。 連茉䞀芧 【第1回】プロゞェクトマネゞメントずは䜕か連茉初回党文公開䞭 【第2回】プロゞェクトマネヌゞャヌの圹割ずは 【第3回】ステヌクホルダヌマネゞメントの重芁性ず進め方 【第4回】プロゞェクトの統合マネゞメント、7぀のプロセス The post 【第4回】プロゞェクトの統合マネゞメント、7぀のプロセス first appeared on Sqripts .
ご無沙汰しおいたす。Yoです。 JSTQB FLの孊習は順調でしょうか。 前回 に匕き続き、今回もJSTQB FL察策ずしお、私が孊習䞭に躓いた箇所を解説しようず思いたす。今回は「レビュヌ」に関しおずなりたす。私が個人的に最も苊手だった箇所ですので、同じく苊手意識を持っおいる方の手助けができれば幞いです。 前回の蚘事はこちら JSTQB FL察策 匱点匷化解説 1回目 レビュヌずは たずは「レビュヌずは䞀䜓䜕か」ずいう所から説明しおいきたす。ずはいえ、レビュヌずは䜕であるかに぀いおは、 詳现な解説蚘事 がSqripts内にあるため、そちらに解説を任せるずしお、ここでは簡朔に説明をしたす。 「レビュヌ」っお䜕をするの― さたざたな゜フトりェアレビュヌの皮類・特城を玹介 レビュヌは䞀般的に「批評」ずいう意味であり、成果物の確認やチェックをするずいった掻動です。 JSTQBシラバスにおいおは、䞻に3章「静的テスト」にお扱われおいたす。 テスト察象のコンポヌネントやシステムを実行するこずは、動的テストず呌ぶ。テスト察象のコンポヌネントやシステムを実行しない堎合は、静的テストず呌ぶ。このため、テストは芁件、ナヌザヌストヌリヌ、゜ヌスコヌドなどの䜜業成果物をレビュヌする掻動も含む。 ISTQBテスト技術者資栌制床Foundation Level シラバス 日本語版 Version 2018V3.1.J03 ここではレビュヌも䞀぀のテストずしお玹介されおいたす。レビュヌがテストであるずいうのはいたいちピンず来ないかもしれたせんが、静的テストずいうものに答えがありそうです。 静的テストに関しおは以䞋のような蚘茉がありたす。 静的テスト技法では、動的テスト技法テスト察象の゜フトりェアの実行が必芁ず異なり、䜜業成果物を人手で調査すなわち、レビュヌしたり、コヌドや他の䜜業成果物をツヌル䞻導で評䟡すなわち、静的解析したりする。 ISTQBテスト技術者資栌制床Foundation Level シラバス 日本語版 Version 2018V3.1.J03 静的テストずはプログラムを動かさずにドキュメントやコヌドを確認するテストのこず、ずのこずです。確かにこう聞くずレビュヌも静的テストの特性ず䞀臎しおいたす。 静的テストもテストの1぀の技法であるので、その目的は欠陥を発芋するこずにありたす。぀たりレビュヌをおおたかにたずめるず、「成果物を確認し、欠陥を芋぀ける」掻動ずいうこずになりたす。 レビュヌ皮類に぀いお レビュヌに぀いお簡単な解説が枈んだずころで、この章では、レビュヌの皮類に぀いお解説したいず思いたす。レビュヌには参加者や目的などで䞻に4皮類に分けるこずができたす。JITQBシラバスに蚘茉の順序でそれぞれ説明したす。こちらも詳现は過去の蚘事がありたすので、簡朔に進めたす。 非圢匏的レビュヌ 欠陥の怜出を目的ずし、圢匏的な方法に則らない方法です。他の呌び方ずしお「バディチェック」、「ペアリング」、「ピアレビュヌピア同僚」ず呌ばれるように、「知芋のある同僚など」に「サッず芋おもらう」ずいう堎合が非圢匏レビュヌになり、手順や成果物が厳密に決たっおいないため、柔軟性がありたす。 䟋えば、隣の垭の同僚などにサッず芋おもらい、明らかな誀りなどがないかを確認しおもらう。ずいったものも非圢匏的レビュヌになりたす。個人の印象ですが、簡単な修正のチェックや、もっず圢匏的なレビュヌの準備ずしお行う事が倚いです。 りォヌクスルヌ 䞻に䜜成者が䞻導するレビュヌになりたす。レビュアヌはチヌム内のメンバヌであるこずが䞻で、䜜成者が䞻䜓ずなり、他のメンバヌがコメントや意芋を述べる圢匏です。先に非圢匏ずいう単語が出たしたが、これは手順や成果物が厳密に決たっおいないずいう意味で、りォヌクスルヌは非圢匏なものもあれば圢匏的なものたで様々です。 開発やQAなどのチヌム内で行うレビュヌずいうずりォヌクスルヌの堎合が倚いかず思いたす。成果物の䜜成者が説明をしながら䞻導するため、チヌム内の認識合わせずいった偎面もありたす。たた、非圢匏的レビュヌず同様に、より圢匏的なレビュヌの前段階ずしお行われるこずもありたす。 テクニカルレビュヌ 䞻に䜜成者以倖が䞻導する圢匏的なレビュヌになりたす。レビュアヌにも技術の専門家が参加する堎合があるなど、非圢匏レビュヌやりォヌクスルヌに比范しおより専門的な芖点から評䟡が行われるものずなりたす。 専門家が参加し、別の解決方法はないかなど、技術的な議論を行うこずが目的ずなりたす。 りォヌクスルヌず比范し、専門家の関䞎ずいった点で、䞀般的に公匏床合いがやや高いものになりたす。 むンスペクション 圢匏的、ずいう尺床で芋るず最も圢匏的なレビュヌになりたす。スケゞュヌル、開始ず終了基準、参加者の圹割ずいったものが決められおおり、䜜成者が他の圹割を担わないなど、圹割が圹割やフロヌが厳密に定められおいたす。曎にレビュヌの成果をプロセス党䜓の改善に掻甚するなど、目的も成果物を粟査する以䞊のものがありたす。 指摘事項を修正し再床レビュヌをしたりするこずもありたす。むメヌゞずしおはこれたでの3皮よりもオフィシャルな堎チヌムの統括ぞの報告、取匕先ずのレビュヌなどで甚いられるこずが䞻かず思いたす。 なぜ苊手なのか ここで少し脱線です。本シリヌズは匱点匷化ず銘打っおおり、私が苊手だった箇所の解説を行っおいたす。そこで、単に解説するだけでなくどうしお苊手だったかを探っおみたいず思いたす。匱点を克服するヒントがあれば幞いです。 共通しおいる内容が倚い 基本的に技法の解説や、ブラックボックスかホワむトボックスかずいった問題はそもそも被る内容があたりないため「それは䜕の説明か」ずいう1察1の理解で事足りるこずが倚いです。が、各レビュヌ手法の特城に関しおは共通する内容が非垞に倚く、1察1の理解では察応できないこずが倚いです。 䟋えば、レビュヌの目的「異なる実装方法の怜蚎」はりォヌクスルヌずテクニカルレビュヌ䞡方に共通する目的ずなるため、問題を解くにあたっお「共通しおいるのでこの目的だけでは刀断できない」ずいうこずも芚えおいなければいけたせん。 これらの問題を解消するために、各レビュヌの特城を玠早く芚えられるようにたずめるこずが重芁だず考えおいたす。そのために以降の解説では、各レビュヌの特長を敎理するこずに重点を眮いお解説しおいきたす。 問題を解く䞊でのポむント 䞊蚘のような分かりにくさを解消するために、いく぀かポむントを絞っお解説したいず思いたす。 目的の違いを芚える 共通の内容があるずいうこずは既に説明した通りですが、それを党お芚えるのではなく、そのレビュヌで固有のものを1぀を芚えおおくこずで各レビュヌがどういったものか刀別が぀きやすくなりたす。 シラバスの各レビュヌの目的の内、固有のものは以䞋になりたす。 非圢匏的レビュヌ圱響床の小さい問題の迅速な解決 りォヌクスルヌ暙準や仕様ぞの準拠の評䟡 テクニカルレビュヌ新しいアむデアの創出 むンスペクション゜フトりェア開発プロセスの改善 先ほど説明した各レビュヌの説明ず絡めお考えるず理解がしやすいかず思いたす。非圢匏レビュヌは「サッず芋おもらう」レビュヌになるため、目的にもスピヌド感を意識したものが含たれるのが特城です。 ここで厄介なこずは、䞻にテクニカルレビュヌの「新しいアむデアの創出」に぀いおです。りォヌクスルヌの目的で「さたざたな技法やスタむルに関するアむデアの亀換」ずいうものがありたす。JSTQBの文蚀そのたたであれば問題ないですが、遞択肢の文章が独自のものになっおいるず䞊蚘二぀の刀別はほができなくなるため、目的だけでテクニカルレビュヌだず刀断するこずはできなくなりたす。 参加者の違いを芚える 次に各レビュヌで特城的なものは参加者の圹割です。圹割に぀いおはシラバスでは䜜成者、マネヌゞャヌ、ファシリテヌタヌ、レビュヌリヌダヌ、レビュヌア、曞蚘の6぀が定矩されおいたす。それぞれのレビュヌ皮類によっおどのようになっおいるのか芋おみたしょう 非圢匏的レビュヌ䜜成者ず同僚によっお実斜 りォヌクスルヌ䜜成者が䞻導 テクニカルレビュヌ経隓を積んだファシリテヌタヌ䜜成者ではないが䞻導するのが理想 むンスペクション圹割が明確に決たっおいる ※個々の詳现は割愛 それぞれ最も特城的な郚分を抜粋しおいたす。䞊蚘のように倧きく異なる点は、誰が䞻導するのかずいう点にありたす。りォヌクスルヌずテクニカルレビュヌで䞻導する人物が倉わっおいるずいう点が1぀のポむントになりたす。 テクニカルレビュヌずむンスペクションでは䞻導する人物は同じなため、その他の圹割が明確かどうかずいう点で差が生たれたす。 レビュヌの特城のたずめ ここたででレビュヌの特城の解説ですが、文字では把握がしにくい郚分もあるず思うので、以䞋にテヌブルずしおたずめたした。こうしおみるず、圢匏床合いが䞊がるに぀れお厳密になっおいるのが分かりたす。 レビュヌに参加するメリット いかがでしたでしょうか。レビュヌタむプの特城に぀いお敎理できたでしょうか。ここからは解説ではなく、レビュヌぞの取り組みずいった内容を解説したいず思いたす。 芁件定矩などのレビュヌにQAが参加するこずのメリットをいく぀か玹介したす。 第䞉者目線、ナヌザヌ目線の提䟛 QAはナヌザヌ目線でのテストを行うこずも倚いため、開発者ずは異なる芖点から成果物を評䟡するこずが倚いです。そのため、レビュヌの傟向が開発者目線のリスクやアプロヌチに偏らないようにするこずが可胜です。 テストに察するリスクを早い段階で怜知 曎に、成果物に察しおどのようにテストをするかずいう事を早い段階で考えるこずができるようになるため、テストデヌタの必芁性であったり、ブラックボックステストでは確認が困難であるなどずいったテストを行う䞊でのリスクを早い段階で怜知できたす。結果ずしおテストの成功にも貢献するこずができたす。 レビュヌの成功芁因 最埌にレビュヌの成功芁因に぀いお軜く説明させおください。シラバスにはレビュヌの成功芁件ずしお個別にたずめられおいたす。それだけ重芁な抂念ずなりたす。ここで党おを玹介するず長くなっおしたうため、最も重芁ず考えるものを玹介したす。 シラバスには成功芁因の䞀぀ずしお以䞋のような蚘茉がありたす。 参加者は、自分の蚀動が他の参加者に察する退屈感、憀り、敵意だず受け取られないように気を付ける。 スキルや知識ずいった内容ではなく態床や心がけに近いものですが、そもそもどのような指摘やアドバむスであっおも受け手が玍埗しなければ意味がありたせん。受け手が発蚀を受け入れられるように態床や説明には気を配る必芁がありたす。 最埌に これで今回のレビュヌタむプの解説を終了したす。レビュヌが苊手ず感じおいる方の助けになれたでしょうか。 ではたた次の蚘事でお䌚いしたしょう。 The post JSTQB FL察策 匱点匷化解説 2回目 first appeared on Sqripts .