TECH PLAY

AGEST

AGEST の技術ブログ

å…š479ä»¶

本連茉ではプロゞェクトマネゞメントの党䜓像ずプロゞェクトを成功させる䞊で最䜎限抑えるべき知識ず技術はもちろん、プロゞェクトを炎䞊させないための技術やコツをお䌝えしたいず思っおいたす。 みなさんのプロゞェクトが今以䞊に充実し、笑顔でプロゞェクト終結を迎えられるよう䞀緒に孊んでいきたしょう。 第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 .
「テスト自動化の習慣を最速で定着させるためには」ず題しおいるこの連茉ですが、今回で最終回ずなりたす。 第1回 ではテスト自動化を倱敗させないための「毎日テストを回す」習慣を䞭心に、自動化を始める際のステップに぀いおお䌝えしたした。そしお 第2回 では運甚可胜な自動テストを䜜成するにあたっお非垞に重芁な「独立性」の考え方ず具䜓的な実装方法をご説明したした。 今回は、第2回の続きずしお自動テストの䜜成・運甚をより効率的に進めるための工倫をご玹介したす。今床のキヌワヌドは「共通化」です。日々コヌディングをしおいる開発者の皆様にずっおは重耇する凊理の共通化はごく圓然のこずですが、ノヌコヌドツヌルを䜿っおテストを自動化するずきにも同じ考え方が有効です。以䞋、共通化にた぀わる3぀の工倫をご説明したす。前回たで同様、テストケヌスの具䜓䟋にはノヌコヌドテストサヌビスのMagicPod( https://magicpod.com )を䜿甚しおいたすが、玹介しおいる抂念自䜓は特にサヌビス独自のものではありたせん。 ◆連茉 テスト自動化の習慣を最速で定着させるためには 第1回E2Eテストの自動化を最速で成功させる秘蚣 第2回毎日の自動テストを無理なく続けるためのキヌワヌド 第3回共通凊理を掻甚しおさらに効率的に自動化を進めよう 工倫1デヌタ駆動テスト 第1回でも觊れたしたが、自動テストを運甚する際にむやみにテストケヌスを増やさないこずは重芁です。ずはいえ、せっかく仕組みがあるのですから色々なパタヌンのテストを導入したいず思うのも自然なこずですね。そこで、おすすめなのは少ないテストケヌスで倧きなメリットを埗られる「デヌタ駆動テスト」の利甚です。 デヌタ駆動テストずは、テストの「手順」ず「デヌタ」を分離するこずで効率的にテストケヌスを実装する手法のこずです。テストケヌスの䞭にはいく぀かの倉数を含めおおき、その倉数に入れる倀デヌタを衚のような圢匏で指定したす。するず、指定したデヌタのパタヌンの数だけテストを繰り返し実行するこずができたす。この方法を䜿えば、デヌタ郚分の定矩を増やすだけで様々な条件のテストができたすので手間のかかるテストケヌス郚分の実装コストは非垞に少なくお枈みたす。 デヌタ駆動テストは非垞にポピュラヌな手法ですのでほずんどの自動テストツヌルに機胜ずしお組み蟌たれおおり、CSV等を䜿っおデヌタを定矩できるようになっおいたす。実際にMagicPodを䜿っお詊しおみたしょう。たず、テストケヌスの定矩ずデヌタの定矩は以䞋のようになりたす。デヌタは手入力もできたすし、CSVファむルをアップロヌドするこずもできたす。 なお、今回のテストケヌスではテスト察象ずしおテスト自動化の孊習甚の緎習サむトである HOTEL PLANISPHERE を利甚させおいただきたした。ログむン情報は、サむト䞊で公開されおいるものです。 図 1 テストケヌスの定矩 図 2 デヌタの定矩 実行した結果は、パタヌンごずに切り替えお確認するこずができたす。 図 3 テスト結果の切り替え 䞊では説明のためにほずんど意味のない「様々なナヌザIDずパスワヌドでログむンするだけ」ずいうテストケヌスを瀺したしたが、実際には ナヌザの暩限によっお衚瀺されるメニュヌや可胜な操䜜が倉わるこずを確認するテスト ECサむトなどで、賌入する商品ごずにパタヌンを甚意しお賌入たでの操䜜を確認するテスト のような甚途が倚いかず思いたす。筆者のチヌムでは、MagicPodの利甚プランに応じお衚瀺が倉わる郚分のテストをデヌタ駆動テストで実装しおいたす。 非垞に䟿利で぀い倚甚したくなるデヌタ駆動テストですが、泚意すべき点もいく぀かありたす。 分岐を倚甚しすぎない デヌタごずに結果が倉わるこずをテストしたいわけですからテストケヌス偎にはある皋床の条件分岐が発生するこずも倚いですが、あたりに分岐が倚すぎるずテストケヌスが耇雑になり、かえっお䜕をしおいるのか分からなくなるこずもありたす。結果が倉わる郚分に぀いおもなるべくデヌタ偎で衚珟できるように工倫し、どうしおも分岐が倚くなるようならテストケヌスを分割するこずも怜蚎したしょう。その際、次に説明する「凊理の共通化」が有効になりたす パタヌンを増やしすぎない  最初の説明ずやや矛盟しおしたいたすが、デヌタ駆動テストが䟿利なあたりになんでもかんでもE2Eテストのパタヌンを増やしお察応しようずするのはあたり良くないパタヌンです。本圓にシステム党䜓の疎通が必芁なテストであれば良いのですが、可胜であればE2Eテストは最䜎限にしおナニットテストやAPIテストで倚くのパタヌンを網矅した方が実行時間を短くできたす。 工倫2凊理の共通化 うたくはたるケヌスがあれば非垞に匷力なデヌタ駆動テストですが、基本的に同じ操䜜の繰り返しにしか䜿えないので様々な機胜のテストを行いたい堎合にはもちろん䜿えたせん。次はもう少し汎甚的な方法ずしお、テストケヌスの党郚ではなく䞀郚の凊理を共通化しお郚品のように䜿うこずを考えおみたす。 共通化される凊理ずしお代衚的なのはやはりログむンのように頻繁に䜿われる凊理です。それ以倖にも、テストの前凊理ずしお必芁なデヌタ䜜成の凊理などがあれば共通化しおおくず䟿利です。凊理を共通化しおおくず、新しいテストケヌスを䜜るずきに䜜っおおいた郚品を呌び出すだけで良いので圓然ケヌス䜜成の工数が削枛できたす。それ以倖にも、ナヌザから芋お分かりやすい単䜍にたずめるこずで凊理の流れを明確にするずいうメリットもありたす。実際に、前節で䜿ったホテルの予玄サむトのテストを通じお共通化前埌のテストケヌスを芋おみたしょう。 䞀通りの情報を入力しお予玄を行うテストケヌスを普通に䜜るず、以䞋のようになりたす。 図 4 党く共通化されおいないテストケヌス ここではデモ甚のサむトで最䜎限の情報しか入れおいないので10ステップで枈んでいたすが、実際のサヌビスをテストする際にはもっず項目が倚くなるはずです。クリックやテキスト入力ずいった现かい粒床のステップが䞊んでいるず、パッず芋お䜕をしおいるテストなのかが分かりにくくなりがちです。 この手順を「情報の入力」ず「確認・確定」に分け、さらに予玄凊理党䜓も共通化したものが次の図です。いかがでしょうか。階局化されたものをすべお展開しおいるので、䞀芋するずかえっお難しく芋えるかもしれたせん。 図 5 意味のある単䜍で階局化されたテストケヌス 今床はいちばん䞋の階局を閉じおみたした。するず、现かい凊理は抜象化されおこのテストケヌスの抂芁が䞀目で分かるようになりたす。ここたで来れば、初芋のメンバヌがテストケヌスをメンテナンスするこずになっおもどの郚分を線集すれば良いのかが分かりやすくなりたす。たた、共通化されたステップには「宿泊数」「人数」ずいったパラメヌタが付いおいるこずにも泚目しおください。このように凊理の内容を倉数化しおおくこずによっお、同じ郚品でも様々な倀を入れお䜿い回すこずができたす。このあたりの考え方はデヌタ駆動テストに䌌おいたすね。 図 6 抜象的な階局だけを衚瀺 工倫3画面芁玠の共通化 最埌は、もっず小さい単䜍で凊理ではなく操䜜察象の画面芁玠ボタン、テキストボックスなどを共通化するずいう工倫です。自動テストで画面芁玠を操䜜するずきは、ロケヌタヌやセレクタヌず呌ばれる蚘述を䜿っお察象の芁玠を指定したす。Webアプリケヌションの堎合は、HTML芁玠のタグの名前・ID・文字列などがロケヌタヌの構成芁玠になりたす。たずえば、「メニュヌ」ずいう文字列を含むボタンであれば「 //button[text()=’メニュヌ’] 」のような衚珟で指定できたす。ロケヌタヌの蚘法は色々ありたすが、この䟋の蚘法は「XPath」ずいうものです。 ここで画面芁玠の共通化ず蚀っおいるのは、こういった芁玠に名前を付けおおいお芁玠ずロケヌタヌを玐づけおおく考え方のこずで、Object Mapなどず呌ばれるこずもありたす。こうやっお説明しおしたうず「なんだ、そんなこず圓たり前じゃないか」ず思われるかもしれたせんが、自動テストの実装方法によっおは「ステップAずステップBでは同じメニュヌボタンを操䜜しおいる」ず認識されるずは限りたせん。「ステップAで //button[text()=’メニュヌ’] をクリックする」「ステップBで //button[text()=’メニュヌ’] をクリックする」ず、党く別個に認識されおいる堎合もありたす。 こうなっおいるず、もし画面の構造が倉わっおメニュヌボタンのXPathが倉わった堎合、呌び出しおいるすべおの箇所のXPathを倉曎しなければなりたせんし、そもそも呌び出しおいる堎所をすべお探すだけでも倧倉な䜜業になりたす。「メニュヌボタン」ずいう1぀の芁玠ずしお認識しおおけば、メニュヌボタンに察応するXPathを倉えるだけで枈むので修正が圧倒的に楜になりたす。ちなみにMagicPodではテスト察象の画面党䜓を保存しおおいお䜿い回すこずができるので、ごく自然な圢で画面芁玠の共通化を行えたす。 図 7 MagicPodにおける画面芁玠の共通化 共通化の本圓のメリット ここたで、「テストケヌス党䜓」「よく䜿う凊理」「画面芁玠」ずいう3぀の粒床での共通化を玹介しおきたした。最初に「自動テストの䜜成・運甚をより効率的に進めるための工倫」ずお䌝えしたしたが、効率的に進めるずいうのはテストの䜜成スピヌドが速くなるずいうだけのこずではありたせん。私たちは日々倉化しおいく゜フトりェアをテストしおいるので、倉化に応じお玠早くメンテナンスを行えるこずは䜜成スピヌド以䞊に重芁です。様々なレベルで共通化を行うこずによっお必芁な倉曎点を最小限に抑えるこずで、テストケヌスの可読性が䞊がり、゚キスパヌトでなくおも容易にメンテナンスを続けるこずができたす。 おわりに 本連茉では、テスト自動化に初めおチャレンゞする方をメむンの察象ずしおテスト自動化の進め方・効率的な実装・運甚方法をお䌝えしおきたした。本来もっず短期間で終わらせるべきずころ、筆者郜合で非垞に期間が長くなっおしたったこずをお詫びいたしたす。 ここでお䌝えしおきたこずは自動化をかじったこずのある方にずっおは圓然ず思われるこずばかりで、物足りないず感じられた方も倚いかもしれたせん。自動テスト関連の技術は日々進化しおいたす。筆者がE2Eテストの自動化を仕事ずしお始めたのは10幎ほど前ですが、その頃はSelenium 2 (WebDriver)が登堎しおいよいよWebアプリケヌションのE2EテストがOSSで手軜に実践できるず盛り䞊がっおいる時代でした。その埌モバむルアプリケヌションの自動テストフレヌムワヌクも充実し、さらにAIを搭茉した自動テストSaaSがいく぀も出おきお自動化の敷居はどんどん䞋がっおきたした。 ただ、どんなツヌルやサヌビスを䜿っおいおも、コヌディングをしおもノヌコヌドでも、最初に理解しおおくべき基本的なポむントや躓きやすい点はあたり倉わっおいたせん。筆者は以前にも初めお自動化に觊れるお客様ぞレクチャヌをする仕事に埓事しおおり、最先端の技術を远いかけるよりも自動化の敷居を䞋げおたくさんの方に觊れおいただくこずの方に喜びを感じおいたす。本連茉が皆様のテスト自動化のはじめの䞀歩に少しでもお圹に立ちたしたら幞いです。 連茉䞀芧 第1回E2Eテストの自動化を最速で成功させる秘蚣 第2回毎日の自動テストを無理なく続けるためのキヌワヌド 第3回共通凊理を掻甚しおさらに効率的に自動化を進めよう The post 第3回共通凊理を掻甚しおさらに効率的に自動化を進めよう first appeared on Sqripts .
はじめたしお、QAコンサルタントのアむネむドです。 私は゜フトりェア開発ず開発プロセスに関する仕事を䜕十幎もしおきたした。昚幎゜フトりェア品質保蚌に興味を持ち転職したのですが、その過皋で初めお「JSTQB」ずいう゜フトりェアテストの資栌があるこずを知りたした。 今回のブログでは「JSTQB Foundation Level」の問題を解かせおみる実隓を行っおみたした。ChatGPTがどれだけ正確に問題を解けるか、興味深い結果が埅っおいたすので最埌たでお付き合いいただければ幞いです。 1. ChatGPTに詊隓を受けさせようず思った理由 近幎、米Chicago-Kent College of Lawに所属する研究者らは「ChatGPT-3.5」で米囜叞法詊隓(遞択匏)の7科目を受けさせたずころ、平均正答率50%(人間の平均正答率68%)ずなったずのこずです。このニュヌスを芋たクオリティマネヌゞャヌの私は、同じ遞択匏問題である「JSTQB Foundation Level」を解くこずができるのかずいうこずに興味が沞きたした。 仮に合栌ラむンに達する事になれば、資栌保持者ず同等の知識レベルずいうこずになり、より仕事に掻かすこずができるのではないかず期埅したこずがChatGPTに詊隓を受けさせようず思った理由になりたす。 2. JSTQBに぀いお JSTQBずは䜕か JSTQBに぀いおご存じない読者もいらっしゃるず思いたすので、簡単に説明をしたす。 JSTQBは日本における゜フトりェアテスト技術者資栌認定の運営組織ずしお2005幎4月に認定されたした。各囜のテスト技術者認定組織が参加しおいるISTQBInternational Software Testing Qualifications Boardの加盟組織の加盟組織の䞀぀になりたす。 「JSTQB Foundation Level」の問題に぀いお 認定詊隓にはいく぀か皮類がありたすが、初回ずいうこずでたず䞀番基瀎的な「JSTQB Foundation Level」の問題に焊点を圓おおいたす。 䜿甚する問題は公匏サむト( JSTQB認定テスト技術者資栌 )で公開しおいる サンプル問題 で、問題圢匏は遞択肢4぀の遞択匏問題です。 なお、サンプル問題の問題の正解は遞択肢Aずなっおいるこずを芚えおおいおください。 3. ChatGPTにJSTQBの問題を解かせおみた ChatGPTに問題ず遞択肢を読み蟌たせ、正解・正解の理由・他遞択肢の䞍正解の理由を出力するように蚭定し、出力された内容が以䞋になりたす。 問題1 テストや操䜜で芋かけるむンシデントの䞀芧がある。「故障」ずいえるのはどれか。次の遞択肢の䞭から぀遞びなさい。 - A. ダむアログボックスのオプションを遞択した時、補品が異垞終了した。 - B. 間違ったバヌゞョンの゜ヌスコヌドをビルドした。 - C. 間違った入力倉数を䜿甚した蚈算アルゎリズムを䜿甚した。 - D. 開発者は蚈算に関する芁件のアルゎリズムを誀った解釈をした。 正解A 正解の理由 補品が異垞終了するこずは、明らかな故障です。他の遞択肢は欠陥や゚ラヌを指摘しおいたすが、故障ずは異なりたす。 䞍正解の理由  – B、C、Dは欠陥や゚ラヌを指摘しおいたすが、故障ずは異なりたす。 問題2 次の説明においおテストずデバッグの違いを最も適切に説明しおいるのはどれか。次の遞択肢の䞭から぀遞びなさい。 - A. テストは欠陥から発生する故障を発芋する。デバッグは゜フトりェアの故障の原因を発芋し、解析し、陀去を行う。 - B. テストは欠陥を正確に指摘する。デバッグは欠陥を解析しお、事前に陀去できるように提案する。 - C. テストは欠陥を陀去する。デバッグは故障の原因を特定する。 - D. 動的テストは故障の原因を防ぐ。デバッグは故障を陀去する。 正解A 正解の理由 テストはシステムや゜フトりェアの欠陥や゚ラヌを発芋するプロセスであり、テストを通じお故障が明らかになりたす。䞀方、デバッグは発芋された故障の原因を特定し、解析し、陀去するプロセスです。 䞍正解の理由  – Bはテストが欠陥を正確に指摘するこずを説明しおいたすが、デバッグの特城ではありたせん。 – Cはテストが欠陥を陀去するこずを説明しおいたすが、デバッグの特城ではありたせん。 – Dは動的テストずデバッグの関係に぀いお説明しおおり、問題文ずは異なりたす。 問題3 ツヌルによる静的解析の䞻な利点の説明文ずしお最も適切なものはどれか。次の遞択肢の䞭から぀遞びなさい。 - A. ツヌルによる静的解析は、手動によるテスト実行の前に欠陥を怜出するこずができる。 - B. ツヌルによる静的解析は、ビゞネスアナリストや芁求゚ンゞニアが芁件ず䞀臎しない゜フトりェアのモデル状態遷移図などを構築するこずを防ぐ。 - C. ツヌルによる静的解析により、ナヌザ受け入れテストのテストケヌスが少なくなり、テスト実行の期間が短くなる。 - D. ツヌルを䜿っおコヌドの静的解析を行うこずで、開発者によるナニットテスト実斜のニヌズは枛少する。 正解A 正解の理由 ツヌルによる静的解析は、コヌドやドキュメントなどのテキストを自動的に解析し、欠陥や問題を発芋するこずができたす。これにより、手動テストの前に問題を早期に怜出できたす。 䞍正解の理由 – Bは静的解析が芁件ず䞀臎しないモデルを防ぐず説明しおいたすが、䞻な利点ではありたせん。 – Cはナヌザ受け入れテストのテストケヌスに関する話であり、䞻な利点ではありたせん。 – Dは開発者によるナニットテストのニヌズに関する話であり、䞻な利点ではありたせん。 問題4 客のクレゞット信甚枠を決定する銀行のアプリケヌションがある。このアプリケヌションのテストに最も適したブラックボックステスト蚭蚈技法を、次の遞択肢の䞭から぀遞びなさい。 - A. デシゞョンテヌブルテスト - B. 状態遷移テスト - C. ナヌスケヌステスト - D. 同倀分割法 正解A 正解の理由 クレゞット信甚枠を決定するアプリケヌションは、異なる条件やルヌルに基づいお刀断を行いたす。デシゞョンテヌブルテストは、異なる条件に察するテストケヌスを効果的に蚭蚈するための適切な方法です。 䞍正解の理由  – Bの状態遷移テストは、状態遷移が重芁な堎合に䜿甚されたすが、信甚枠決定アプリケヌションには必ずしも適しおいるわけではありたせん。 – Cのナヌスケヌステストは、システムの機胜やナヌザの操䜜に基づいおテストケヌスを蚭蚈する方法であり、信甚枠決定アプリケヌションには特に適しおいたせん。 – Dの同倀分割法は、入力倀の範囲を区切り、各範囲の代衚的な倀をテストする方法ですが、信甚枠決定アプリケヌションにはデシゞョンテヌブルテストの方が適しおいたす。 問題5 テスト実行ツヌルの特城に関する以䞋の蚘述のうち、キヌワヌド駆動テスト実行ツヌルの特城にもっずも圓おはたるものはどれか。次の遞択肢の䞭から぀遞びなさい。 - A. テスト入力デヌタ、アクションワヌドや期埅結果を含む衚が、テスト察象システムの実行を制埡する。 - B. テスト担圓者の動䜜が、䜕床も繰り返すこずができるようにスクリプトに蚘録される。 - C. テスト担圓者の動䜜が、様々なテスト入力デヌタによっお実行できる。 - D. テスト結果を蚘録し、期埅結果ず比范するこずができる。 正解A 正解の理由キヌワヌド駆動テスト実行ツヌルは、テストスクリプト内にキヌワヌドやアクションワヌドを䜿甚しおテストケヌスを蚭蚈し、テスト察象システムの実行を制埡したす。この方法により、テストの再利甚性が向䞊し、テストケヌスのメンテナンスが容易になりたす。 䞍正解の理由 – Bはテストの録画再生ツヌルの特城を説明しおおり、キヌワヌド駆動テスト実行ツヌルの特城ではありたせん。 – Cはテストデヌタのバリ゚ヌションに関する話であり、キヌワヌド駆動テスト実行ツヌルの特城ではありたせん。 – Dはテスト結果の蚘録ず比范に関する話であり、キヌワヌド駆動テスト実行ツヌルの特城ではありたせん。 4. 問題の正答率ずChatGPTの胜力 驚くべきこずに「JSTQB Foundation Level」の問題に察しお、ChatGPTは5問すべおの問題に察しお正解したした。これにより正答率は100ずなり、䞋手をするずChatGPTは「JSTQB Foundation Level」資栌保持者より正確な回答ができたのかもしれたせん。 ※ChatGPTが出力した正解の理由・䞍正解の理由には䞀定の信頌性があるずは思いたすが正確であるずは断蚀できないため、サンプル問題に蚘茉された正解の理由・䞍正解の理由を参照しおください。 この結果より、ChatGPTは゜フトりェアテストに関わる簡単な文章であれば、掚敲や校閲においおも力を発揮できるのではずさえ思わせる胜力を持っおいる可胜性があるのではないでしょうか。 5. 考察 前章でChatGPTの胜力をベタ耒めさせおいただきたしたが、実は解かせる問題を遞択する際に手心を加えおいたす。 䟋えば問題の䞀郚ずしお「フロヌ図」がある問題は意識しお陀いおいたす。図をテキストで衚すこずができないのかずいわれるずある皋床可胜ですが、人間がやるこずになるので今回の実隓からでは䞍確定芁玠ず刀断したした。 デヌタだけの衚であれば、䞋蚘のようにカンマ区切りにするこずでテキストずしお入力できたすが、文字の匷調やセルの色合いにも意味がある堎合はテキスト化が難しい堎合がありたす。 商品名,倀段,割匕額,売り堎 みかん,100円,10%,生鮮食品売り堎 シャンプヌ,300円,5%,日甚品売り堎 サンダル,1000円,8%,服売り堎 ちなみに今回省いたフロヌ図の問題は以䞋になりたすが、テキスト郚分だけを入力するず、毎回のように正解ずする遞択肢が倉わっおしたいたす。 プロゞェクトにおけるカバレッゞ目暙の䞀぀に、100%デシゞョンカバレッゞがある。 次の制埡フロヌグラフに瀺す぀のテストを実行する。  テストAA,B,D,F,Gのパスをカバヌする  テストBA,C,F,Gのパスをカバヌする  テストCA,C,F,C,F,C,F,Gをカバヌする 次のデシゞョンカバレッゞ目暙に関する蚘述のうち、説明文ずしお最も適切なものはどれか。 次の遞択肢の䞭から぀遞びなさい。  A. 刀定デシゞョン以䞋、刀定Dは完党にテストされおいない。  B. 100%デシゞョンカバレッゞを達成する。  C. 刀定Eは完党にテストされおいない。   D. 刀定Fは完党にテストされおいない。 なお、このテキスト化の方法が正しいかどうかは䞍明ですが「制埡フロヌグラフ」の図を䞋蚘のようなテキストに眮き換えるず正答するようになりたす。 制埡フロヌグラフ A→B,Cに分岐 B→Dに遷移 C→Fに遷移 D→E,Fに分岐 E→Gに遷移 F→C,Gに遷移 たた、図や衚を人間の手でテキスト化した堎合以倖にも、回答が違っおくるこずがありたす。(䞍正解の頻床は数回に䞀床や数十回に䞀床の堎合もありたす) このような珟象になる原因の䞀぀に「日本語の曖昧さ」がありたす。 日本語は䞻語が省略されおいたり、どの単語を修食しおいるか刀断しづらいこずがありたす。ただ、今回のJSTQBのサンプル問題には英語の物もあるので、それを䜿甚するこずで正答率が䞊がる堎合もあるず思いたす。 実は今回の結果に驚いたのは日本語の問題であるのに関わらず正解率100%だったこずも原因の䞀぀でした。 ただただChatGPT䜿う偎の人間が気を䜿わないずいけないこずは倚そうです。 6. たずめ ChatGPTのようなOpenAIは今この時も進化を続けおおり、今回省いた「フロヌ図」の認識に぀いおも、「フロヌ図」を画像のたた認識するようなプラグむンがあれば、今回のような手心は必芁なくなる可胜性もあり回答の粟床もただただ䞊がっおいくこずでしょう。 筆者ずしおはそんな(おそらく近い)未来が少し楜しみです。 機䌚があれば次は曎に䞊のランクの詊隓に挑戊させおみたり、バヌゞョンアップしたOpenAIにさせおみたりしおみようかず考えおおりたす。 本ブログを最埌たで読んでいただいおありがずうございたした。 The post ChatGPTにJSTQBの問題を解かせおみた first appeared on Sqripts .
テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀に「論理スキル」がありたす。 この連茉では、「プログラムのレベル」「文や文章のレベル」に分けお、論理スキルの基本である「論理の蚀葉」を培底解説したす。 筆者のnoteサむトで、「論理スキル[再]入門」を曞こうず思った理由・経緯を綎っおいたす。 ■ 論理スキル・“入門線”のこず (T3:Pt1:Ch01) よろしかったらご芧ください。 第3回は、基本の論理挔算・吊定(NOT)、論理積(AND)、論理和(OR)の意味ず働きを芋おいきたす。 各論理挔算は、名前だけ芋るずものすごそうに芋えるかも知れたせんが、ひず぀ひず぀はそう難しい挔算ではありたせん。たず、それぞれが「どういうこずを蚀っおいるのか」を把握したしょう。日垞でも同じような考え方をしおいる時がある筈です。 文䞭で「条件や䞻匵」ずいう衚珟を䜿っおいたすが、それはこれらの論理挔算が文や文章のレベルでも䜿われるからです第5回に蚘茉予定。 論理スキル再入門 連茉䞀芧 ※クリックで開きたす [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 連茉初回党文公開䞭Sqripts䌚員以倖の方も党文お読みいただけたす [第2回] プログラムレベルのロゞック (1)抂芁線 吊定(NOT) 吊定(NOT)ずは 吊定(NOT)は次のような挔算です。 条件や䞻匵の 真理倀を反転 する 単項挔算 (挔算察象がひず぀の挔算)  åŠå®šã®æŒ”算匏を、本蚘事では NOT(A) ず衚す 条件や䞻匵Aが真ならNOT(A)は停になり、Aが停ならNOT(A)は真になる 日本語では、「A ではない 」、「Aである ずいうこずはない 」ずいう語句が盞圓する 吊定の真理倀衚を図3-1に瀺したす。 真理倀衚(真理衚、真停衚ずも) ずは、挔算察象の真理倀ず挔算結果の真理倀をたずめた衚で、”T”は真(true)、”F”は停(false)の意味です。以䞋の通りであるこずを確認しおください。 Aが真の時、NOT(A)は停になる Aが停の時、NOT(A)は真になる 図3-1 論理吊定の真理倀衚 二重吊定 二重吊定(吊定の吊定)は、もずの真理倀ず同じ倀になりたすもずの真理倀に戻る。図3-2 Aが真の時、NOT(NOT(A))は真 Aが停の時、NOT(NOT(A))は停 図3-2 二重吊定の真理倀衚 吊定の留意点 吊定そのものではありたせんが、数倀の範囲を衚す衚珟の吊定は、以䞋のようになりたす。図3-3 「以䞊」の吊定は、“以䞊で(は)ない”“より小さい”「未満」 「xが10以䞊(x >= 10)」ずいう条件匏の吊定は「x < 10」 「以䞋」の吊定は、“以䞋で(は)ない”“より倧きい”「超」  ã€Œyが50以䞋(y <= 50)」ずいう条件匏の吊定は「y > 50」 䞊蚘の逆で、未満の吊定は「以䞊」、超の吊定は「以䞋」。   「超」ずいう語はあたり日垞䌚話的ではないが、゜フトりェアではよく䜿われる 日垞で䜿う堎合は、この蟺りの倧小・含む含たないの関係を“曖昧に”衚し/解釈するこずがたたありたす。第5回に蚘茉予定 日垞で䜿う時の「吊定」の、論理の蚀葉ずしおの意味合いずの違いも、第5回で取り䞊げたす 図3-3 以䞊/以䞋の吊定は、未満/超 論理積(AND) 論理積(AND)ずは 論理積(AND)は次のような挔算です。 条件や䞻匵A, Bがずもに真である時に結果が真、そうでない堎合には結果が停になる 二項挔算 (挔算察象がふた぀の挔算) 論理積の挔算匏を、本蚘事では A AND B ず衚す 「ふた぀の条件が同時に成り立぀(必芁がある)堎合」「ふた぀の条件がずもに必芁である堎合」などを衚すのに甚いる 日本語では、「 および 」「 か぀ 」「 ならびに 」「 そしお 」などの接続語が盞圓する  ã€Œãã—お」は時間的順序を衚す意味もあるので泚意が必芁です 論理積の真理倀衚を図3-4に瀺したす。 衚の1行目が「A, Bがずもに真の時」 24行目が「そうでない(A, Bがずもに真、ではない)堎合」 “A, Bどちらかが停”である堎合を含む 図3-4 論理積の真理倀衚 挔算察象が䞉぀以䞊の堎合 論理積は二項挔算ですが、挔算察象が䞉個以䞊になっおも同じように考えるこずができたす。䞉条件の論理積の真理倀衚は図3-5参照 挔算察象が すべお真の時、結果が真 そうでない堎合(どれかひず぀以䞊が停の堎合)、結果は停 図3-5 論理積(䞉条件)の真理倀衚 論理和(OR) 論理和(OR)ずは 論理和(OR)は次のような挔算です。 条件や䞻匵A, Bのどちらかが真である時に結果が真、そうでない堎合には結果が停になる 二項挔算 論理和の挔算匏を、本蚘事では A OR B ず衚す 「ふた぀の条件のどちらかが成り立぀(必芁がある)堎合」「ふた぀の条件のうちどちらかが必芁である堎合」などを衚すのに甚いる「どちらかが成り立おばよい」ず理解しおも差し支えないこずも倚い 日本語では「 たたは 」「 あるいは 」「 ないし 」などの接続語が盞圓する 「ないし」は数量の範囲を衚す意味もあるので泚意が必芁です第5回に蚘茉予定 論理和の真理倀衚を図3-6に瀺したす。 衚の13行目が「A, Bのどちらかが真である時」 “A, Bがずもに真”である堎合を含む 4行目が「そうでない(A, Bのどちらかが真、ではない)堎合」 図3-6 論理和の真理倀衚 挔算察象が䞉぀以䞊の堎合 論理和は二項挔算ですが、挔算察象が䞉個以䞊になっおも同じように考えるこずができたす。䞉条件の論理和の真理倀衚は図3-7参照 挔算察象が どれがひず぀以䞊が真の時、結果が真 そうでない堎合(すべおが停の堎合)、結果は停 図3-7 論理和(䞉条件)の真理倀衚 論理挔算で衚す䟋 第1回で出おきた「登録できるナヌザヌアカりント名」の䟋を芋おみたしょう。 登録できるナヌザヌアカりント名には以䞋の条件がありたす。 (a) アカりント名に䜿える文字は以䞋のいずれかに限るこず 半角英倧文字(AZ), 半角英小文字(az), 半角数字(09) (b) アカりント名は16文字以䞋であるこず (c) 既に登録枈みのアカりント名は登録できない a, b, cの条件をすべお満たしおいるずきに登録できる(3条件の論理積)、ず解釈するず条件aはいったん「䜿甚可胜な文字だけで構成されおいる」ず眮き換えたす、 䜿甚可胜な文字だけで構成されおいる AND 16文字以䞋である AND NOT(既に登録枈み) ずいった圢に衚せたす。 条件a「䜿甚可胜な文字だけで構成されおいる」を展開するず 半角英倧文字である OR 半角英小文字である OR 半角数字である ずなりたす。 条件bを「16文字を越えおいないこず」ず読んで、吊定を䜿っお NOT(16文字を超えおいる) ず衚すこずもできたす。 むすび 䟋が既にそうなっおいたすが、これらの論理挔算は組合せお䜿うこずが倚いです。 第4回では、この「論理挔算の組み合わせ」の扱い方や、憶えおおきたいこずを芋おいきたす。 参考文献 『プログラミング蚀語C 第2版』(カヌニハン, リッチヌ / 共立出版) 『プログラミング蚀語AWK』(゚むホ, ワむンバヌガヌ, カヌニハン / USP研究所) JavaScript リファレンス (Webペヌゞ) https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference 吊定は「単項挔算子」のカテゎリヌで「論理吊定」ずしお、論理積ず論理和は「バむナリヌ論理挔算子」ずいうカテゎリヌで取り䞊げられおいる。この「バむナリヌ」は二項挔算の意か Python 蚀語リファレンス (Webペヌゞ) https://docs.python.org/ja/3/reference/index.html 「6.11. ブヌル挔算 (boolean operation)」で取り䞊げられおいる。 『スマリダン先生のブヌル代数入門』(スマリダン / 共立出版) 『蚘号論理孊 䞀般化ず蚘号化』(スマリダン / 䞞善出版) 『入門論理孊』(野矢茂暹 / 䞭倮公論新瀟) 連茉䞀芧 [第1回] なぜ、テスト゚ンゞニアに(も)論理のスキルは重芁なのか 【連茉初回、党文公開䞭】 [第2回] プログラムレベルのロゞック (1)抂芁線 [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 The post [第3回] プログラムレベルのロゞック (2)解説線・基本の論理挔算 first appeared on Sqripts .
はじめたしお。四十路にしおブログデビュヌのお぀ばです。 よろしくお願いしたす。 日々のちょっずした䜜業。い぀も通りに手䜜業で察応しおもそこたで時間はかからない。だけどこのちょっずが面倒に感じおいるこず。ちょっずだから埌回しにしお結局遅れたり忘れたりしおしたうこず。皆さんもありたせんかありたすよね・・あるっおこずで進めおいいですね笑 そんなちょっずした䜜業を自動化するこずで煩わしさから解攟されお、察応遅れや忘れのヒュヌマン゚ラヌ芁因のミスも軜枛する。そんなこずを目的ずしお取り組んでいるプチ効率化の䞭から、今回は「定型メヌルをGoogleForm䞊での遞択操䜜から自動䜜成送信する方法」をご玹介したす。 前提 業務で䜿甚するPCには特別なツヌル類をむンストヌルできない事が倚いかず思いたす。そこで、Googleアカりントがあれば実珟できるGASGoogleAppsScriptを䜿甚した定型メヌル自動䜜成を、圓日勀怠連絡メヌルをサンプルずしおご玹介しおいきたす。 流れずしおは以䞋のような順で進めおいきたす。 ・必芁なものを準備   →Googleアカりントを甚意   →入力甚ずなるGoogleFormを䜜成   →GoogleFormの回答を出力するスプレッドシヌトを䜜成   →スプレッドシヌトにメヌル定型文のベヌスを远加 ・GASっおいく   →゜ヌスコヌドをコピペしお線集   →凊理実行のトリガヌを蚭定   →実行しおみよう 「GASっお䜕」の説明は本蚘事では割愛させおください。GASをテヌマにした他の蚘事でもご玹介しおいたすので、是非ご芧いただければず思いたす。 ■ GoogleAppsScriptを䜿っおテスト項目曞の䜓裁を䞀発で敎える </Sqripts> ■ 業務改善にはコレGoogle Apps Script </Sqripts> 必芁なものを準備 GASのコヌドを曞く前に、たずは必芁なものを準備をしおいきたす。 甚意するもの Googleアカりント Google先生ありがずう Chromeブラりザ Google先生ありがずう 少しのやる気 䜕気に䞀番倧事 䜜成しおおくもの ① GoogleForm メヌル自動䜜成送信の操䜜甚 ② メヌル定型文 自動䜜成する定型メヌルのベヌス 䜜成しおおくもの ①GoogleForm たずは操䜜甚のGoogleFormの䜜成です。 勀怠連絡メヌルずなるず、状況に応じお連絡内容や宛先が倉わっおきたすので、以䞋の回答項目があるGoogleFormを䜜成したす。 回答項目 連絡先 連絡先メヌルアドレス を远加 䌑暇区分党䌑、午前半䌑、午埌半䌑 の遞択肢を远加 䌑暇事由私甚 / 䜓調䞍良 / 急甚 の遞択肢を远加 今回はGASをスプレッドシヌトに仕蟌みたすので、Formの「回答の送信先を遞択」の蚭定から、スプレッドシヌトに回答が蚘録される蚭定にしおおきたす。 䜜成しおおくもの ②メヌル定型文 ①の最埌に甚意した回答蚘録甚のスプレッドシヌトを開いお、ベヌスずなるメヌル定型文を蚘茉したシヌトを远加したす。「メヌル定型文」の名前でシヌトを远加し、A1セルにメヌル本文の文章を入力しおください。 メヌル文面䞭の名前、日付、䌑暇区分、䌑暇事由が入る箇所は、GoogleFormで遞択した項目をGASの凊理で自動的に眮換しお本文に反映させるため、眮換凊理甚キヌワヌドを入れおおきたす。 眮換凊理甚キヌワヌド 名前★NAME★ 本日★DATE★ 䌑暇事由★CAUSE★ 䌑暇区分★CLASSIFICATION★ GASっおいく いよいよGASっおいきたしょう。先ほど甚意した回答蚘録甚のスプレッドシヌトにお「拡匵機胜」-「Apps Script」を遞択しおスクリプト゚ディタを開き、次の゜ヌスコヌドをたずはコピペしおください。 ゜ヌスコヌド党䜓 function Send_AttendanceMail(){ //定数 const SUBJECT_HEAD = '【勀怠連絡】'; const NAME = 'お぀ば'; const MY_ADDRESS = 'o-tsuba@agest.co.jp'; const MAILBODY_SHEETNAME = 'メヌル定型文'; const MAILBODY_REPLACE_NAME = '★NAME★'; const MAILBODY_REPLACE_DATE = '★DATE★'; const MAILBODY_REPLACE_CAUSE = '★CAUSE★'; const MAILBODY_REPLACE_CLASSIFICATION = '★CLASSIFICATION★'; //察象シヌトを取埗 let DataSheet = SpreadsheetApp.getActiveSheet(); //基準セルを取埗最終行、先頭列 let BaseCell = DataSheet.getRange(DataSheet.getLastRow(), 1); //連絡先 let MailTo = BaseCell.offset(0, 1).getValue(); //䌑暇区分 let Classification = BaseCell.offset(0, 2).getValue(); //䌑暇事由 let Cause = BaseCell.offset(0, 3).getValue(); //MailCc let MailCc = MY_ADDRESS; let mailArgs = {cc:MailCc}; //件名 let Today = Utilities.formatDate(new Date(), "JST", "MM/dd"); let MailSubject = SUBJECT_HEAD + ' ' + NAME + ' ' + Today + ' ' + Classification; //察象シヌトメヌル定型文シヌト蚭定 let MailBodySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(MAILBODY_SHEETNAME); //本文 let MailBody = MailBodySheet.getRange(1, 1).getValue(); //メヌル本文内の文字列眮換 if(MailBody.match(MAILBODY_REPLACE_NAME)){ MailBody = MailBody.replace(MAILBODY_REPLACE_NAME, NAME); } if(MailBody.match(MAILBODY_REPLACE_DATE)){ MailBody = MailBody.replace(MAILBODY_REPLACE_DATE, Today); } if(MailBody.match(MAILBODY_REPLACE_CAUSE)){ MailBody = MailBody.replace(MAILBODY_REPLACE_CAUSE, Cause); } if(MailBody.match(MAILBODY_REPLACE_CLASSIFICATION)){ MailBody = MailBody.replace(MAILBODY_REPLACE_CLASSIFICATION, Classification); } //メヌル送信 GmailApp.sendEmail(MailTo, MailSubject, MailBody, mailArgs); } 郚分的に解説 定数の宣蚀郚分 //定数 const SUBJECT_HEAD = '【勀怠連絡】'; const NAME = 'お぀ば'; const MY_ADDRESS = 'o-tsuba@agest.co.jp'; const MAILBODY_SHEETNAME = 'メヌル定型文'; const MAILBODY_REPLACE_NAME = '★NAME★'; const MAILBODY_REPLACE_DATE = '★DATE★'; const MAILBODY_REPLACE_CAUSE = '★CAUSE★'; const MAILBODY_REPLACE_CLASSIFICATION = '★CLASSIFICATION★'; ゜ヌスコヌドの先頭で定数を宣蚀しおいたす。この定数のうち、䞊から3぀は倀を倉曎しおください。 ・SUBJECT_HEAD メヌル件名の先頭に付ける文字列です。連絡ルヌルに合わせお倉曎しおください。 ・NAME メヌル件名や本文に入る名前です。ご自身の名前に倉曎しおください。 ・MY_ADDRESS メヌルアドレスです。ご自身のメヌルアドレスに倉曎しおください。 ※サンプルですので、蚘茉のアドレスは存圚したせん。 䞊蚘以倖の定数は、先ほどの「䜜成しおおくもの②」で敎えた内容に合わせおいたすので、特に倉曎する必芁はありたせん。 以降のコヌドは倉曎せずずもコピペのたたで動䜜したすが、凊理の内容を順番に説明しおいきたす。 スプレッドシヌトからの取埗郚分 //察象シヌトを取埗 let DataSheet = SpreadsheetApp.getActiveSheet(); //基準セルを取埗最終行、先頭列 let BaseCell = DataSheet.getRange(DataSheet.getLastRow(), 1); //連絡先 let MailTo = BaseCell.offset(0, 1).getValue(); //䌑暇区分 let Classification = BaseCell.offset(0, 2).getValue(); //䌑暇事由 let Cause = BaseCell.offset(0, 3).getValue(); //MailCc let MailCc = MY_ADDRESS; let mailArgs = {cc:MailCc}; Form回答が蚘入されたシヌトを察象ずしお取埗したす。 そのシヌトから最終行、先頭列぀たり盎近の回答が入っおいる列の先頭を基準にするセルずしお取埗しお倉数に代入したす。その基準セルから1列ず぀右にズレながら、連絡先䌑暇区分䌑暇事由のForm回答内容をそれぞれ取埗しお倉数に代入しおいきたす。 最埌に、自身のメヌルアドレスをCcの宛先ずしお倉数に代入したす。 件名ず本文 //件名 let Today = Utilities.formatDate(new Date(), "JST", "MM/dd"); let MailSubject = SUBJECT_HEAD + ' ' + NAME + ' ' + Today + ' ' + Classification; //察象シヌトメヌル定型文シヌト蚭定 let MailBodySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(MAILBODY_SHEETNAME); //本文 let MailBody = MailBodySheet.getRange(1, 1).getValue(); 圓日の月日を取埗しお倉数に代入し、先頭に付ける文字定数名前定数日付圓日䌑暇区分シヌトから取埗の件名を䜜りたす。それぞれの間にスペヌスを入れるため、定数や倉数の間に「 + ‘ ‘ + 」を入れお繋いでいたす。 本文は、「メヌル定型文」シヌトに甚意したセルの倀をたずはそのたた取埗したす。 本文内の察象文字を眮換 //メヌル本文内の文字列眮換 if(MailBody.match(MAILBODY_REPLACE_NAME)){ MailBody = MailBody.replace(MAILBODY_REPLACE_NAME, NAME); } if(MailBody.match(MAILBODY_REPLACE_DATE)){ MailBody = MailBody.replace(MAILBODY_REPLACE_DATE, Today); } if(MailBody.match(MAILBODY_REPLACE_CAUSE)){ MailBody = MailBody.replace(MAILBODY_REPLACE_CAUSE, Cause); } if(MailBody.match(MAILBODY_REPLACE_CLASSIFICATION)){ MailBody = MailBody.replace(MAILBODY_REPLACE_CLASSIFICATION, Classification); } 先ほど取埗した定型文メヌル本文の䞭には「䜜成しおおくもの②」で甚意したように、ただ眮換凊理甚のキヌワヌドが入った状態ですので、察象の文字を眮換したす。この凊理を行うこずで、GoogleFormで遞択した各項目の倀、名前、日付がメヌル本文に反映されたす。 メヌル送信 //メヌル送信 GmailApp.sendEmail(MailTo, MailSubject, MailBody, mailArgs); ここたでで「Toの宛先」「件名」「本文」「Ccの宛先」が揃いたしたので、あずはメヌルを送信するためのsendEmail関数にそれぞれの倀を匕数ずしお指定したす。 これでGASの゜ヌスコヌドが完成です トリガヌを蚭定 ゜ヌスコヌドが敎ったら、あずはこの凊理を実行するタむミングを指定するために、スクリプト゚ディタにおトリガヌを蚭定したす。今回はGoogleFormを䜿甚しおいるので、Formで送信を抌したタむミングで動䜜させたす。トリガヌに以䞋を蚭定しおください。 実行する関数を遞択先ほど曞いたコヌドの関数「Send_AttendanceMail」を蚭定 むベントの皮類を遞択「フォヌム送信時」を蚭定 それ以倖はデフォルトのたたでOK 実行しおみよう ゜ヌスコヌドず蚭定が敎ったら、GoogleFormから送信をしおみたしょう。Form䞊の遞択通りの宛先ず内容で定型メヌルが自動送信されるこずが確認できるず思いたす。 スマホでGoogleForm回答甚URLを開くショヌトカットを甚意しおおくず䟿利です。 ショヌトカットを遞択→開いたGoogleFormで各項目を遞択送信、の数回ポチポチっずするだけで勀怠連絡メヌルが送信できたす。メヌルアプリを開いお手動で文章入力を行うよりも早いこずが実感できるかず思いたす Slackにも投げおみる ず、ここたで曞き䞊げたずころで、「Slackチャンネルにも投皿できるず䟿利だず思うんだよなぁ。」そんな倩のお告げを受けたので、参考情報ずしお以䞋2぀の方法を簡単にご玹介したす。 Slackに投皿する方法 方法 Slackにメヌル送信するための機胜がいく぀か甚意されおいたす。䞀郚Slack有料プラン甚の機胜もありたすが、こちらを掻甚するこずでメヌル送信からのSlack投皿を実珟できたす。 [Slackヘルプセンタヌ] Slackにメヌル送信する 方法 Slackのアプリケヌションを远加しお「IncomingWebhooks」を蚭定、HTTPリク゚ストを送るGAS゜ヌスコヌドを曞く、こずでメヌル送信ず合わせおSlack投皿を実珟できたす。 ①Slack䞊の蚭定  Slackの察象ペヌゞを開いおアプリケヌションを远加、蚭定する。 https://api.slack.com/appsを開く 「Create New Apps」からアプリ䜜成 䜜成したアプリのIncomingWebhooksを On に蚭定 投皿したいチャンネルを蚭定远加しお専甚のURLを生成 ②GAS゜ヌスコヌド  「Post_Slack」関数を䜜成しおメヌル甚に甚意した件名ず本文をSlack投皿する。 メヌル送信の䞋に゜ヌスコヌドを远加する件名ず本文を匕数で枡す //メヌル送信 GmailApp.sendEmail(MailTo, MailSubject, MailBody, mailArgs); // ★ ↓ コレ ↓ ★ Post_Slack(MailSubject + '\n' + MailBody); //「\n」で改行 } 「Post_Slack」関数を远加する   件名、本文のデヌタを凊理甚のパラメヌタに敎える   SlackUrlFetchAppクラスのfetchメ゜ッドを䜿っおHTTPリク゚ストを送る   「’★ココはSlack蚭定で生成したURL★’」の箇所は①で生成したURLに眮き換える function Post_Slack(PostText) { //WebhookのURL let SlackWebhooksUrl = '★ココはSlack蚭定で生成したURL★'; //匕数で受け取った投皿甚メッセヌゞを代入 let Payload = { 'text': PostText }; //Slack投皿のメ゜ッドに枡すパラメヌタを䜜成 let Parameters = { 'method': 'post', 'payload': JSON.stringify(Payload) }; //Slack投皿 UrlFetchApp.fetch(SlackWebhooksUrl, Parameters); } おわりに いかがでしたでしょうか。 スクリプトの゜ヌスコヌドを曞くずなるず、あたり経隓が無いずちょっずハヌドルが高く感じがちですが、今回芋おいただいたサンプルは゜ヌスコヌド量ずしおは倚くはないですし、順を远っお芋おいくずそこたで耇雑な凊理も無かったのではないかなず思いたす。 今回は簡単な圓日勀怠連絡メヌルずSlack投皿をサンプルずしお玹介したしたが、自分の䜜業に圓おはめるず「もっずこうしたい」「この定型メヌルも察応できるようにしたい」など、やりたいこずが思い浮かぶかず思いたす。想像したこずを圢にできおそれが成果ずしお衚れるず、より䞀局のやる気にも繋がりたす。 この蚘事でGASに興味を持っおいただけたら、䜜業効率化のネタずしおお圹に立おれば、幞いです。 たたGASネタ、効率化ネタをご玹介できればず思っおいたす。 最埌たでご芧いただきありがずうございたした。 The post それ、GASっちゃえば 定型メヌルはGoogleForm操䜜で送信 first appeared on Sqripts .
1人目QAずしおの立ち回り、第3回ずなる今回は、QA゚ンゞニアや品質保蚌のこずを開発組織に知っおもらうための取り組みに぀いおご玹介したす。 前回の蚘事 では、1人目のQAは開発組織に察しお品質文化を浞透させる圹割を求められる、ず曞きたした。しかし、「文化の浞透」ずいう倧きなこずを、䞀足飛びに実珟するのは困難です。 「品質のこずを考えよう」「改善掻動を行おう」ず組織党䜓に蚎えかける前に、たずは品質やQA゚ンゞニアに぀いお、知っおもらうずころから始めるこずが倧切です。 1人目QAずしおの立ち回り 連茉䞀芧 ※クリックで開きたす 【第1回】1人目QAの䜍眮づけず、開発組織ぞのアプロヌチの仕方 【第2回】組織に品質保蚌を浞透させるアプロヌチ QA゚ンゞニアずいう“異分子” 1人目QAずしお開発組織に加わった堎合、呚りの開発者からみるず、QA゚ンゞニアは「謎の存圚」あるいは「異分子」ず衚珟しおもいいかもしれたせん。 いったい䜕をする存圚なのか、居るこずによっお自分たちにどのようなメリットがあるのか、などが䞍明確な状態です。 もし䞭途ずしお採甚されたのであれば、組織のトップや䞀郚のマネヌゞャヌなどは、QA゚ンゞニアの存圚意矩や行動に぀いおなんらかの期埅をもっおいるでしょう。あるいは、瀟内でのゞョブチェンゞずしおQA゚ンゞニアになった堎合も、なんらかのミッションを負っおいるはずです。぀たり、1人目QA本人は、すくなくずもがんやりずは「䜕をする人なのか」をわかっおいるはずです。 しかし、呚囲はそうではありたせん。もしかしたら「前職でQA゚ンゞニアにあたり良い印象がなかったんだよね」ずか、「テストしおくれる人でしょ」なんおむメヌゞを持っおいる可胜性すらありたす。 「盞手はわかっおくれおいるはずだ」ずいう思い蟌みがキケンなのは、QA゚ンゞニアに限らずお仕事の基本です。そのため、1人目QAは自分自身が「謎の存圚である」ずいう気持ちで、呚りに認知されるよう動くこずが必芁です。 開発組織に認知しおもらうには 呚囲に認知しおもらうために1人目QAができるこずはいろいろずありたす。ここでは、私自身が1人目QAずしお行ったこずや、呚囲のQAず情報亀換をする䞭で耇数人が実践しおいた方法に぀いお説明したす。 なお、以䞋の方法はいずれか1぀を行えばよいずいうものではありたせん。耇数のチャネルで倚方面から発信するこずで、より効果を発揮したす。 ミヌティングぞの参加など、盎接䌚話する もっずも匷力な方法は、盎接話をするこずです。これは皆さんの実感ずも合っおいるのではないでしょうか。 䌚ったこずがある、話をしたこずがある、ずいうのは盞手ずの関係性を良くするうえでずおも重芁です。ずくに1人目のQAずしおさたざたな品質向䞊掻動をしおいく堎合、開発者に工数を割いおもらったり、いたたでのやり方を倉えおもらったりず、拒吊反応を瀺される可胜性のあるタむミングが倚々ありたす。そうしたずきに快く協力しおもらえるか、しぶしぶ協力しおもらえるか、あるいは協力しおもらえないのか・・・この結果は䌚話の量に倧きく巊右されたす。 䌚話の機䌚を持぀方法ずしお私が実践したのが、Joinしおすぐに行った「党開発郚ヒアリング」です。これはその名前の通り、すべおの開発郚に察しお「今どのような流れで開発しおいたすか」「どのようなテストをしおいたすか」「品質に぀いお困っおいたりしたすか」など、いろいろな内容を盎接䌚議をしお聞くずいうものです。たた䌚議の冒頭10分皋床では自己玹介やQA゚ンゞニアの䜍眮づけ、今埌どう貢献したいかなどを説明し、ヒアリングずあわせお盞互理解の機䌚ずしお掻甚したした。 私は暪断郚門の1人目QAずしお仕事をしおいるため、䞊蚘の方法を取りたした。もし個別の開発郚における1人目QAずしおJoinした堎合や、䌚瀟芏暡がそれほど倧きくなく開発組織が1぀ずいう堎合は、「党員ず1on1ミヌティングをする」ずいう手段も怜蚎できるでしょう。郚単䜍での代衚者からのヒアリングず比べお、より深い話ができ、぀ながりも匷化できるでしょう。 その他、䞊叞や同僚のスケゞュヌルを垞にチェックしおおき、呌ばれおいない䌚議でも自分から突撃する、ずいう匷者QAも居たす。その方はオヌプンスペヌスから「テストが」等関係ありそうな単語が挏れ聞こえおきたずきにも話に入っおいったそうです。 勉匷䌚や茪読䌚の開催 ミヌティングぞの参加に近いものずしお、QA゚ンゞニアずしお勉匷䌚や茪読䌚を開催する、ずいう方法もありたす。 䞀般で行われおいるのは、JSTQBのシラバスを茪読したり、ずくに若手の開発者に察しお「品質ずは」や「テストずは」ずいった内容を䌝える勉匷䌚などです。私自身も入瀟盎埌から継続的に勉匷䌚を開いおいたす。 勉匷䌚や茪読䌚ずいうず、知識を䌝えるずいうむメヌゞを持たれるかもしれたせん。確かに、゜フトりェアテストやQAに関しおは開発者よりもQA゚ンゞニアのほうが詳しいこずが倚いでしょうし、QAずしおの芖点で䌝えられるこずはたくさんありたす。しかし、私は勉匷䌚や茪読䌚はただの勉匷の堎ではなく、むしろ生の情報や思いを盎接やりずりするコミュニケヌションの堎だず捉えおいたす。 生の情報、ずいうのは぀たり、珟堎で実際に開発業務を行っおいる方の芖点での情報です。「今こんなこずで困っおいお」や「本にはこう曞いおあるけど、実際にはそううたくもいかなくお・・・」など、先に挙げたヒアリングよりもカゞュアルな圢で本音が聞ける可胜性がありたす。勉匷䌚で䌝えおいる内容や茪読䌚で読んでいる本の内容はあくたでもトリガヌであり、より䟡倀があるのはそこから出おくる開発者の本音や声、だず考えおいたす。 たた、開催しおいる偎から参加者に察しおは、思いや熱量を䌝える機䌚でもありたす。1人目のQAずしお、組織をこう倉えおいきたい。こんなこずをやっおいきたい。そのような思いずいうのは、1回や2回党䜓呚知をしたずころで䌝わりたせん。むしろ個別に、頻繁に、䜕床も䌝えおやっず浞透しおいくものです。そのため、品質文化を浞透させるずいう倧目暙には、こうした勉匷䌚や茪読䌚の堎を掻甚するこずも有効です。 少し倧きな話になりたしたが、玔粋に接觊機䌚が増えるため、QA゚ンゞニアや品質に関する認知、ずいう点でももちろん有効です。 ちなみに私は勉匷䌚・茪読䌚の他に「ラむブテスティング䌚」も開催しおいたす。これは、開発チヌムに提䟛しおもらった実際のアプリケヌションを、ビデオ䌚議で画面共有しながら探玢的テストをするずいうものです。テストする偎も、される偎も、かなり緊匵するむベントなのですが、QA゚ンゞニアやテスト゚ンゞニアが䜕を考えおどうテストしおいるのかを生で芋おもらう良い機䌚になっおいたす。こちらも認知ずいう意味ではずおもオススメです。 品質やテストに関するナレッゞベヌスを぀くり、育おる 䞊蚘の2぀は、同期的に䜕かを䌝えお認知しおもらう、いわばアクティブな方法でした。しかし、アクティブな方法だけでは限界がありたす。ほが自分が䌚議や勉匷䌚をしおいる間しか、認知の向䞊に぀ながらない、ずいう点です。 そこで私がオススメしたいのは、瀟内Wikiなどに品質やテストに関するナレッゞベヌスを぀くり、育おおいくこずです。このナレッゞベヌスはいわば1人目QAの分身のようなものです。 テストに関する甚語や考え方、瀟倖の動向やツヌルのノりハりなど、知り埗るいろいろな情報を残しおおきたす。こうするこずで、組織の誰もが奜きなタむミングで情報にアクセスでき、そこから「に぀いお盞談したい」「に぀いお教えお」ずいった声がけを埗られる可胜性が出おきたす。 たた、このナレッゞベヌスは基本的に幎䞭無䌑です。1人目QA本人が䜕か別の仕事をしおいる間にも、誰かがそれを芋お問題を解決できるかもしれたせんし、知りたかった情報を埗られるかもしれたせん。これによっお、知らない間に誰かの圹にたち、認知向䞊に぀ながるこずもありたす。 耇数のチャネルで接觊機䌚を増やし぀぀、QAを知っおもらおう 今回は品質やテスト、それからQA゚ンゞニアに぀いお、開発組織内で認知しおもらう際に有効な取り組みに぀いおご玹介したした。 本蚘事で挙げた他にも、できるこずはあるず思いたす。方法やチャネルは耇数持぀こずが有効です。盎接察話する機䌚を持ち぀぀も、ナレッゞ等はできる限り倚く、か぀芋える圢で公開しおおいお接觊機䌚を増やすようにしたしょう。 連茉䞀芧 【第1回】1人目QAの䜍眮づけず、開発組織ぞのアプロヌチの仕方 【第2回】組織に品質保蚌を浞透させるアプロヌチ The post 【第3回】品質保蚌やQA゚ンゞニアを知っおもらうための取り組み first appeared on Sqripts .
はじめたしお、QA゚ンゞニアのK.Kです。 今回は10幎ぶりに改蚂された「知識れロから孊ぶ゜フトりェアテスト」を読んだ感想をお䌝えしたす。 www.shoeisha.co.jp この本を読むきっかけ 私にずっお、この本はこれから゜フトりェアテストを孊ぶ人におすすめの入門曞であり、10幎ぶりに改蚂されたずのこずで気になっおいたした。たた、改定内容も゜フトりェア業界で流行りのアゞャむル開発・AIを取り䞊げたもので、日々の業務で圹に立぀のではず考え、この本を読もうず思いたした。 ※1 ※1 私自身、業務の䞭でアゞャむル開発に觊れる機䌚が増えおいるように感じおいたす。たた、AIに関しおもいろいろなサヌビスが出おきおおり流行りを感じおいたす。実際、既にAIのサヌビスを䜿っおおり、わからないこずがあればすぐChatGPTに聞いたりしおいたす。 改定内容 党䜓的な章の構成は倧きく倉わっおおらず、これから゜フトりェアテストを孊ぶ人にずっお必芁な知識が曞かれおいるため、各章に぀いお玹介しおいきたいずころですが、以前、別の方が改定前の曞籍をブログで玹介しおいたしたので、今回は改定箇所の内容に絞っお曞いおいきたす。 改定箇所以倖の内容に぀いお興味がある方は䞋蚘の蚘事を読んでみおください。 知らなきゃモグリ!?テストのプロはみんな読んでいるバむブルを玹介 10幎ぶりに改蚂された理由 10幎ぶりに改蚂された理由が冒頭に曞かれおいたす。 ※以䞋匕甚は第3版「知識れロから孊ぶ゜フトりェアテスト」より 10幎以䞊改蚂しなかったこずに、ある日突然気づいた。結構䞖の䞭は倉わっおいるぞ 10幎前に曞いたずきはベストだず思った蚘述の倚くは、珟代のアゞャむルやAI゜フトりェア党盛にそぐわなくなっおきおいる。 開発サむクルが短くなるだけでこんなに䞖界が倉わるものかずも驚いおいる。 10幎で゜フトりェアテストが倧きく倉化しおいるため、珟圚の゜フトりェアテストに合わせた蚘述にする必芁があるずのこずです。 たた、珟圚の゜フトりェアテストに぀いお以䞋のように曞かれおいたす。 アゞャむル時代になり倚くのテスト掻動が開発者テストにシフトしおいるが、゜フトりェアのサむズは増え続けおいるので、テスト担圓者の仕事は枛るこずなく倚岐にわたっおいる アゞャむルにシフトしたために倚くの叀くからのテスト手法がおざなりにされおいるが、圓曞で蚘した既存のテスト手法はアゞャむル時代でも有効である AIのテストやカオス゚ンゞニアリングは、10幎前はほずんど話題にされなかったトピックだが、新芏にテスト担圓者が孊習しなければならない必須トピックである 改定内容に぀いお 今回の改定では、各章の内容が珟圚の゜フトりェアテストの状況に即したものにアップデヌトされおおり、新たに远加たたは削陀されたテスト技法やカバレッゞに぀いおの考え方の倉化だけでなく、アゞャむル開発に぀いおの蚘述も远蚘されおいたす。どのようにテストをすればよいのか、なぜそのテストが必芁なのかから入り、りォヌタヌフォヌル開発ずアゞャむル開発でのテストの違いや筆者の考えなどが曞かれおいたす。特に第8章ず第9章では、テスト蚈画や品質管理に焊点を圓おおおり、りォヌタヌフォヌル開発ずアゞャむル開発におけるテスト蚈画曞の曞き方や品質管理に䜿甚するメトリクスの違いが倧きく曞かれおいたす。 たた、新たに第10章の「新しいテスト技術」が远蚘されおおり、この章では、AIに察するテストずしおメタモルフィックテストや経隓ベヌスのテスト、ニュヌロンカバレッゞに぀いお曞かれおいたり、珟代の耇雑なシステム ※2 に察するテストずしおカオス゚ンゞニアリングやランダムテストに぀いお曞かれおいたす。 ※2 珟代のシステムはオヌプン゜ヌスを利甚したり、クラりド環境にシステムを構築したりするこずにより耇雑化しおいるため、すべおをテストするこずが䞍可胜です。そのため、無限倧にあるテストを有限に萜ずし蟌むのもテスト担圓者の仕事であり、カオス゚ンゞニアリングやランダムテストはそのための手法ずしお圓曞に蚘述されおいたす。 本を読んだ感想 この本を読んで最初に感じたのは、アゞャむル開発ずAIのテストの難しさでした。なぜなら、これらのテストは発展途䞊であり、今埌、アゞャむル開発やAIの利甚が拡倧する䞭で成長しおいく技術だからです。 アゞャむル開発に぀いお アゞャむル開発は柔軟な察応が可胜で垂堎リリヌスを早くできるずいうメリットがありたすが、柔軟な察応ず品質の向䞊の䞡立は難しい課題です。アゞャむル開発だからずいっお、テストすべき項目やテスト手法がりォヌタヌフォヌル開発ず倉わるこずはありたせんが、私の経隓䞊、今たでのホワむトボックステストやブラックボックステストでは、逐次倉化する状況に察しおテストケヌスを随時曎新しながらテストを行うこずが困難です。 圓曞では第4章の探玢的テストで以䞋のように曞かれおいたす。 りォヌタヌフォヌルでの探玢的テストず、アゞャむルやAI゜フトりェアでの探玢的テストでは少しず぀圹割が倉わっおいくのかもしれたせん。 もちろん、それはもっず探玢的テストが掻甚する方向にです。 たた、 短いむテレヌションでGUIが倉曎するような゜フトりェアでは、探玢的テストが向いおいるず筆者は考えおいたす。 このように、探玢テストがアゞャむル開発に向いおいるず曞かれおおり、私も探玢的テストはアゞャむル開発においお有甚だず感じたした。しかし、探玢的テストはテスト担圓者のスキルに䟝存する郚分があるため、それを䞻ずしおしたうずテスト自䜓が属人化しおしたうのではないかずも感じたした。 たた、アゞャむル開発ではこれらのテストの難しさに加え、テスト蚈画や品質管理の郚分でも、りォヌタヌフォヌル開発ずは異なるため、アゞャむル開発のテストは発展途䞊であり、これからも孊び続ける必芁があるず感じたした。 ※3 ※3 私自身はこの本を読むたで、アゞャむル開発ずりォヌタヌフォヌル開発でのテスト蚈画や品質管理の違いに぀いお、あたり意識したこずはありたせんでした。アゞャむル開発では蚭蚈からリリヌスたでが短くなるため、テスト蚈画をどうすれば良いかず考えたこずはありたしたが、品質管理においお、アゞャむル開発に最適化したメトリクスを探そうなどは考えたこずもありたせんでした。 AIに぀いお AIのテストに぀いおは、AI以倖の機胜テストず明確に異なる郚分がありたす。それは、入力に察する明確な出力が存圚しないずいうこずです。AIのテストも基本的には既存の゜フトりェアテストず同じく、指定した入力に察する出力が返っおくるかをテストしおいきたすが、その出力が定たっおいないためテスト自䜓が難しいです。圓曞では、これらの期埅倀の定矩が難しい状況に察するテスト手法の代衚ずしおメタモルフィックテストがあげられおいたす。この手法は、ベヌスずなる入力ず出力が存圚する状態で、入力に少しず぀倉化を加えおいき、出力がどのように倉化するのかを確認する手法です。入力に倉化を加えたこずで出力が倧きく倉わっおしたう堎合、AIシステムに問題があるのではないかず考えるこずができたす。 しかし、このテスト手法の最埌に以䞋のように曞かれおいたした。 メタモルフィックテストも完璧ではありたせんし、定量的な品質指暙を提䟛しにくいテスト手法です。 特にミッションクリティカルな゜フトりェアでは、このテスト手法は慎重に適応したほうがよいず考えたす。 ただAIのテスト手法の䞀番代衚的なものなので、これを䜿うしかないのですが。 このように、ただ効果的なAIのテスト手法は存圚しないずいうのが珟状であり、これからも孊び続ける必芁があるず感じたした。 どのような人におすすめか 10幎ぶりに改蚂されたしたが、党䜓的な構成は倧きく倉わっおおらず、読みやすい文章や図により、なぜテストをするのか、どのようにテストをすればよいのかがわかりやすく曞かれおいるので、これから゜フトりェアテストを孊ぶ人にずっおの入門曞ずしおおすすめであるこずに倉わりはありたせんでした。 たた、改定前の圓曞を読んだこずがある人にずっおも、この10幎間でどのようにテストが倉わっおいるのか、特にアゞャむル開発やAIのテスト手法や珟状、たた、それらに察する筆者の考えがわかりやすく曞かれおいるので、アゞャむル開発やAIに觊れる機䌚が倚いのであれば、手に取っお読んでみおも良いのではないかず感じたした。 The post AI・アゞャむルなど最新技法を網矅改蚂版「知識れロから孊ぶ゜フトりェアテスト」を読んでみた。 first appeared on Sqripts .
本連茉ではプロゞェクトマネゞメントの党䜓像ずプロゞェクトを成功させる䞊で最䜎限抑えるべき知識ず技術はもちろん、プロゞェクトを炎䞊させないための技術やコツをお䌝えしたいず思っおいたす。 みなさんのプロゞェクトが今以䞊に充実し、笑顔でプロゞェクト終結を迎えられるよう䞀緒に孊んでいきたしょう。 第3回ずなる今回は、ステヌクホルダヌずの関わり、ステヌクホルダヌマネゞメントの重芁性に぀いおお䌝えしたす。  プロゞェクトマネゞメント成功の技術 連茉䞀芧 ※クリックで開きたす 【第1回】プロゞェクトマネゞメントずは䜕か  連茉初回党文公開䞭Sqripts䌚員以倖の方も党文お読みいただけたす 【第2回】プロゞェクトマネヌゞャヌの圹割ずは ステヌクホルダヌマネゞメントの重芁性ずその高たり PMBOKでは2012幎の第5版でから「コミュニケヌションマネヌゞメント」から「ステヌクホルダヌマネゞメント」ずいう項目が独立し、その圱響ず管理の重芁性が改めおフォヌカスされたした。PMBOKでは1996幎以降マネゞメント領域の新蚭は䞀床もなかったため、䞖界的にステヌクホルダヌマネゞメントに泚目が高たっおいるこずがわかりたす。 ステヌクホルダヌずは ステヌクホルダずは䞀般的に「利害関係者」ず蚳したす。もずもず「株䞻」を瀺す経営甚語から、今では䌁業経営やプロゞェクトを取り巻いお圱響を䞎えあう意味での利害関係者埓業員から、取匕先、PJ結果の圱響を受ける個人などを広域に指すようになりたした。PMBOKでは 「プロゞェクト、プログラム、たたはポヌトフォリオの意思決定、掻動、もしくは成果に圱響したり、圱響されたり、あるいは自ら圱響されるず感じる個人、グルヌプ、たたは組織」 ず定矩しおいたす。 プロゞェクト掻動においおさらにステヌクホルダの存圚やマネゞメントの必芁性が増しおいる理由ずしお プロゞェクトが高速化しおいる 倚様化するプロゞェクトで利害関係が耇雑化しおいる こず等があげられたす。プロゞェクト憲章が承認されPMに任呜されチヌムが圢成される「立ち䞊げ段階」で、いかに早くステヌクホルダヌを特定しお、埌述する゚ンゲヌゞメントのプロセスを準備/開始できるかがプロゞェクト成功の鍵ずいえるでしょう。 「゚ンゲヌゞメント」ずは絆づくり ステヌクホルダマネゞメントでは「゚ンゲヌゞメント」ずいう蚀葉が䜿われたす。 ゚ンゲヌゞメントは「玄束、婚玄、瀟員の愛着心、ブランドず消費者の絆」など業界ごずに察蚳が異なりたすが、筆者は人事劎務分野甚語に近い「絆、望んで協力する愛着」ずいったむメヌゞが近いず考えおいたす。ステヌクホルダず絆を育んで、プロゞェクトに愛着を持っおその成功に力を貞しお貰えるよう、PMは掻動を続けたす。 ステヌクホルダヌマネゞメントの進め方 ステップ①プロゞェクトのステヌクホルダヌを特定する ステップ②どのようにステヌクホルダヌず゚ンゲヌゞメントするか蚈画を立おる ステップ③゚ンゲヌゞメントを実斜するマネゞメント ステップ④゚ンゲヌゞメントの実斜状態を確認し、必芁なテヌラリングを行う プロゞェクトのステヌクホルダヌ察象者は倚岐に枡り、各ステヌクホルダヌの関心ごずは異なるため闇雲に管理するこず、圓然゚ンゲヌゞするなどはできたせん。たずは「プロゞェクトのステヌクホルダヌは誰䜕だろう」ず考え、ステヌクホルダヌの関心、関䞎、盞互䟝存、圱響やプロゞェクト成功ぞの朜圚的圱響に関する情報を収集しお敎理したす。次に敎理した情報を元に「ステヌクホルダヌにどう関わればプロゞェクトが成功するか」蚈画を立おたす。 ステップでぱンゲヌゞメント掻動ずしお、ステヌクホルダヌずコミュニケヌションを取り協業しおいきたす。プロゞェクトが進むに぀れ、ステヌクホルダヌの状態も倉化するず考え、定期的にプロゞェクトずステヌクホルダヌずの状態を芋盎すこずも忘れたせん。 具䜓的にステヌクホルダヌの特定や゚ンゲヌゞメント蚈画にどのような察応があるか、芋おいきたしょう。 ステップ①テヌクホルダヌを特定する 挏れなく行いたいステヌクホルダヌの特定 ステヌクホルダヌをマネゞメントするためには、その前にそのプロゞェクトにおける、ステヌクホルダヌを特定しなければなりたせん。その際は、瀟内ず瀟倖の利害関係者䞡方を考慮するようにしたしょう。慣れない内は特定䜜業を難しく感じるかもしれたせん、そんな時は「事業構造、プロゞェクト䜓制、顧客ナヌザヌ䞭心」など怜蚎の起点や枠組みを決めおから考え始めるず良いでしょう。 プロゞェクトに圱響を䞎える持぀人は誰だろう プロゞェクトが圱響を䞎える人は誰だろう プロゞェクトを承認拒吊できる暩力者は誰だろう コスト等を出しおくれる人は誰だろう プロゞェクトに必芁な知識ナレッゞを授けおくれるのは誰だろう ステヌクホルダヌの特定は近芖県的にならないこず、぀たり自分ず盎接関わる人や物事だけにフォヌカスしないこずが倧切です。䟋えばプロゞェクトが進んでリ゜ヌスが枯枇した堎合やシステムリリヌスが他のプロゞェクトずコンフリクトしたしおしたった、ずいう堎合は䞻芁なPMやPMOずの連携/協力が欠かせず、ステヌクホルダヌずしお意識すべき察象ですが挏れがちです。芋萜ずしがあっお「埌からステヌクホルダヌが芋぀かる」堎合、その圱響によっおはプロゞェクトにマむナスリスクずしお䜜甚する可胜性がありたすので泚意したしょう。 ステヌクホルダヌを分析する ステップ①ではもう䞀぀倧事なプロセスがありたす、それは特定したステヌクホルダヌを「分析」するこずです。分析ずいっおも難しいこずはなく、ステヌクホルダヌマネゞメントを蚈画、実斜するために「傟向」を立おる敎理だず考えたしょう。 ステヌクホルダヌ分析にはステヌクホルダヌをマップ化した 「分類マトリックス」 をお勧めしたす。 ゚ンゲヌゞメントを高めるために、たずは各ステヌクホルダヌの圱響力や関心床を明確にするこずが必芁です。この分析では「暩力ず圱響床」ず「関心床」ずいう軞、「高」ず「䜎」ずいうレベルを蚭けお2×2のマトリックスに ステヌクホルダヌを分類し芖芚化 したす。 ※この軞は圱響×関心の軞にしおいたすが、組織によっおパタヌンや内容を倉えおもいいず思いたす。䜕かしらの軞を持぀こずで個人の刀断で恣意しい的に決めたのではないずいう合理性を持たせるこずが倧切です。 䟋えば、、、 プロゞェクトスポンサヌの田䞭さんはプロゞェクトぞの暩限を持っおいお圱響がある、そしおプロゞェクトぞの興味関心も高いので圱響床高×関心床高に配眮しおみよう。経理郚門はプロゞェクトに察する暩限こそないが、あたりコストをかけお欲しくないこずからプロゞェクトぞの興味はありそうだ、もしかするず埌半になっお䜕かコスト的な指摘がはいりそうだ。ず分析し圱響床䜎×関心床高に配眮しよう。ず、このように分析/可芖化するこずで、今埌各ステヌクホルダヌに察しお優先順䜍や察応方針を明確にしおいくこずができたすね。 マトリックスに察する暙準的な察応方針 マトリックス䞊で可芖化されたステヌクホルダヌ分析に察しお、暙準的に以䞋のような察応をずりたす。たた、党おのステヌクホルダヌに察しお満遍なく察応するこずは難しく、PMは①→②→③→④の「逆れットZ」順枠で芋るのがよいず蚀われたす。 ステヌクホルダず分析結果を蚘録する ステヌクホルダヌの特定ずマトリックスで敎理された分析結果を䞀芧化したものが「ステヌクホルダヌ登録簿」です。ステヌクホルダヌ登録簿ぞ明文化するこずで今埌の「蚈画」や゚ンゲヌゞメントによる倉化をモニタヌするこずを可胜にしたす。 名前など基本情報を明確にした䞊で「マトリックス」で怜蚎した情報を蚘茉したす。たた察応内容には分析で埗られた方針を元に「どのような態床・察応を講じおいくか、その必芁があるか」ずいったステヌクホルダヌぞの察策を蚘茉したす。 ここで泚意したいのがステヌクホルダヌ登録簿の管理です。ステヌクホルダヌマネゞメントに䌎う分析や敎理はプロゞェクトに必須の営みですが、ステヌクホルダヌ分析結果や登録簿に蚘茉された内容はデリケヌトな郚分を含む為その取り扱いには泚意が必芁です。分析結果や察応戊略等は基本的にはPMのみが管理するこずをお勧めしたす。 ステップ②蚈画する ステップ①で行ったステヌクホルダヌの特定、分析、敎理蚘茉をベヌスに、ステヌクホルダヌぞの察応を蚈画したす。ステヌクホルダヌずの効果的な察話ず関䞎を促す方法を考えたす。 䟋えば経理郚の斉藀さんは、、、 珟圚関心床は高いが経理郚ずしおの関心であり、プロゞェクトの埌半で費甚の締め付けや指摘などがあるかもしれない 経理郚ずしおは開発予算がXXに収たるこずがわかれば安心しおもらえそうだ 次フェヌズ開発コストの獲埗を行う際、斉藀さんの発蚀力は高いが今フェヌズの予算消化が物をいいそうだ →なんずか斉藀さんずの関係性を高め、関心床をより高めおプロゞェクト支揎者になっおもらえないだろうか →斉藀さんではなくXX圹員に埌ろ盟になっおもらうこずで解決できないだろうか ずいったように、ステヌクホルダヌずの関係性を倉化させるこずでよい圱響がもたらすこずができないか「仮説」をシュミレヌションするこずからはじめたす。分析からステヌクホルダヌのニヌズず芖点、考え方を理解し、プロゞェクトの成功に近づけるためにどんなアクションが取れるかを蚈画するこずはPMの圹割です。ステヌクホルダヌの立堎に立っお考えおみたしょう。 ステップ③④ステヌクホルダヌ゚ンゲヌゞメントの実行ず定期的な芋盎し 各ステヌクホルダヌをプロゞェクトに巻き蟌み、プロゞェクトの成功に向けお継続的に関わっお貰うには、亀枉やコミュニケヌションを通じお期埅をマネゞメントするこずが必芁です。 ステヌクホルダヌず垞に情報共有するこず、プロゞェクト䞭に発生する倉曎や進捗情報を知らせるようにしたしょう。たた適切なれポヌティングは可芖性が高たるだけではなく、誀解が発生するリスクも枛らせたす。すべおのステヌクホルダヌに満遍なくは察応できず、たたその必芁がないこずはステップ①でもお䌝えしたした。完璧なコミュニケヌション補完ず゜リュヌションはありたせんので、䟋えばの力のかけ具合や頻床を事前に決めおおくこずが倧切です。たたプロゞェクトが進むに぀れ、プロゞェクトず同様にステヌクホルダヌの状況察象者、興味関心、圱響床などは倉わりたす。定期的な棚卞しを忘れずに。 さいごに ステヌクホルダヌを意識し、マネゞメントするこずはプロゞェクトハンドリングするPMの非垞に重芁な掻動ですが、実態ずしお時間的制限から行われないおざなりになる、苊手意識があるずいった課題を耳にしたすPMBOKの知識䜓系の「最埌」に曞かれおいるからか、どうしおも䞻圹の察応になりにくいステヌクホルダヌマネゞメントをぜひみなさんには理解し実斜しおいただきたく、本連茉ではあえおQCDマネゞメントやリスクマネゞメントずいったパヌトより先にお話ししおみたした。 次回は、プロゞェクトを始動させる際に必芁なプロゞェクト憲章やマネゞメント蚈画曞の䜜成ずその方法に぀いおお話ししおいきたす。 The post 【第3回】ステヌクホルダヌマネゞメントの重芁性ず進め方 first appeared on Sqripts .
はじめたしお QA業界23幎のテスト゚ンゞニア『぀よぜん』です。 今回、ブログ初挑戊ずなりたす。最埌たでお付き合いください。 さお、今回は2023幎にCBT化された『JSTQB Advanced Level Test Analyst』以䞋、ALTAの合栌䜓隓蚘です。ALTAの受隓合栌に至るたでの䜓隓をたずめたした。 これからAdvanced Level以䞋、AL)を受隓する方のお圹に少しでも立おるこずができたしたら幞いです。 Test Analyst 受隓たでの道のり 2000幎からテスト゚ンゞニアずしお働き始め、2011幎に Foundation Level以䞋、FLを取埗したした。 2013幎の第2回 Advanced Level Test Manager以䞋、ALTMを受隓。結果は『䞍合栌』でした。たた第2回詊隓の合栌率が6.86ず䜎かったこずや、以䞋の悩みどころもあり、その埌詊隓を受けるこずに慎重になっおしたいたした。 私にずっおのJSTQB詊隓の悩みどころ ・受隓料が少々高い(22,000円) ・詊隓の回答が公衚されないのでどこを間違えたかわかりにくい ・過去詊隓問題がほが非公開、問題集が少ない そこから9幎 私が、AL詊隓を再床受けようず思ったのは、2022幎8月に珟圚の䌚瀟ぞ転籍したこずが倧きなきっかけです。 再受隓に向けた問題点、それは以䞋3぀のでした。 孊習      → どうやっお勉匷すればいいだろう 資金      → 22,000円の詊隓料が少々高い メンタル      → AL資栌取埗は本圓に必芁か 解決したのは以䞋によるものでした。 『孊習』 e-learningの提䟛  ALを受隓するための孊習コンテンツ( e-learning )が匊瀟にありたした   ⇒ これで孊習しよう 『資金』 䌚瀟からのバりチャヌチケットの提䟛  䌚瀟から1回分のバりチャヌチケットが提䟛される   ⇒ バりチャヌを1回分貰えるならタダで受隓できる 『メンタル』 組織目暙によるモチベヌションアップ  ALの取埗目暙が組織ずしお蚭定されるおじさんには結構良い効果   ⇒ 䌚瀟からのPUSHでキャリア的にもAL持っおないずいけないず奮起  以降は、AL取埗に向けた再受隓のお話ずなりたす。 JSTQBの受隓経歎 私のJSTQB受隓履歎を䞊べおみたす。 ⅠFL受隓2011幎8月合栌 ⅡALTM受隓2013幎2月䞍合栌 ⅢALTA受隓2023幎5月䞍合栌 ⅣALTA受隓2023幎8月合栌 今回のAL受隓では、この10幎で業務ずしお関わりの深かった分野である『Test Analyst』を受隓するこずにしたした。 Test Analyst 受隓1回目の倱敗談 1回目のALTA受隓は2023幎5月にCBT化されたものでした。テストの感觊ずしおは悪くない。それなりにできた印象でしたが結果は䞍合栌でした。 受隓に向けお準備したこずは以䞋の通り。 詊隓抂芁の把握  問題数40問  総詊隓時間135分 (NDA 5分 + 詊隓 120分 + アンケヌト 10分) シラバス の読み蟌み  問題はシラバスに沿っお出題されるため、シラバスを熟読3回 匊瀟 e-learning による孊習  シラバス読み蟌み埌に講矩圢匏、問題圢匏による孊習の実斜 CBT詊隓のデモ  ペヌパヌ詊隓䞖代のためCBT詊隓が苊手、事前に操䜜の把握 たた反省点を考えお、次回に備えたした。 【反省点】 詊隓抂芁の把握しか出来おいなかった 党䜓をたんべんなく孊習しおしたった CBT詊隓の経隓䞍足ペヌス配分、操䜜など苊手感が拭えなかった。 “倱敗した経隓も次に生かすための倧事な財産ずしお心に留めたす” Test Analyst 受隓2回目の成功談 䞀番初めに、どうしたら合栌できるかを「考えるこず」から始めたした。 そこで導き出した結論が以䞋ずなりたす。 其の壱 戊略を決めよう 資栌詊隓もテストず同じ戊略を決めおからスタヌトするこずずしたした。 今回の戊略は資栌詊隓の定番 ↓↓↓↓↓↓↓↓↓で決定 『敵を知り、己を知れば、癟戊しお殆うからず』孫子 其の匐 具䜓策を緎ろう 戊略も決たったので次は戊略に沿った具䜓策を考えたした。 『敵ALTAを知る』 たずは敵を知らなくおは戊えない。培底的に敵を把握しお、分析しよう 出題傟向の分析 どこが䜕問出るの ISTQB公匏サむトの Exam Structure Tables v1.6 をチェックすべし 詊隓ごずの出題配分がChapter単䜍で公開されおいたす。 ※詳しくは ISTQB公匏サむト を参照 䞊蚘の『Exam Structure Tables v1.6』のALTAの問題数をたずめた結果は䞋衚ずなりたす。 Chapter 問題数 Chapter1 6問 Chapter2 1問 Chapter3 17問 Chapter4 11問 Chapter5 3問 Chapter6 2問 合蚈 40問 配点傟向の分析 問題の配点はどうなっおいるの ここでもISTQB公匏サむトの Exam Structure Tables v1.6 をチェックすべし  詊隓ごずの問題配点もChapter単䜍で公開されおいたす。 『Exam Structure Tables v1.6』のALTAの問題配点をたずめた結果は䞋衚ずなりたす。 Chapter 配点 Chapter1 10点 Chapter2 2点 Chapter3 44点 Chapter4 15点 Chapter5 6点 Chapter6 3点 合蚈 80点 合栌ラむンの分析 䜕点取れば合栌できるの 問題数40問、総点数は80点合栌点はISTQBに準拠するこずより65%なので・・・ 80点×65% 52点  すなわち 52点で合栌 です。 合栌点に到達するための分析 合栌点に到達するためにどの問題を䜕問正解すれば合栌できるの そのためにはChapterごずの配点ずK Level配点の高い問題の出題数を分析 Chapter 問題数 K2 K3 K4 Chapter1 6問 4 0 2 Chapter2 1問 0 1 0 Chapter3 17問 3 1 13 Chapter4 11問 9 0 2 Chapter5 3問 0 3 0 Chapter6 2問 1 1 0 K2 = 2点 / K3 = 3点 /K4  4点 点数が高いChapterは以䞋぀です。 Chapter3テスト技法44点 Chapter4゜フトりェア品質特性のテスト15点 この二぀をマスタヌすれば 44 + 15  59点 ずなり、これだけで合栌ラむンに達したす。 さらにK Levelも含めお分析するずChapter3テスト技法のK4 Level(配点3点)は13問出題されるので 39点 になりたす。これだけでも合栌点の3/4がずれたす。 K3 = 3問(9点)のChapter5レビュヌ も配点が高いのでおススメです。 なんかこの分析だけで合栌できそうな気になりたせんか 『己自分を知る』 敵を知ったその䞊で、己(自分)を知らなくおも勝぀ための戊いはできたせん。 自分の埗手・䞍埗手を培底的に分析したしょう 埗手、䞍埗手の分析 䜕を埗意ずしおいるか自問する 私の堎合・・・ テスト技法など考えお解くものはモチベヌションアップするし、理解しやすい 品質特性など業務で関わった郚分は把握しやすい 䜕を䞍埗意ずしおいるか自問する 私の堎合・・・ シラバスの理解が苊手特に業務で関わっおこなかった分野 ケアレスミスが倚い(正しいものず、間違っおいるものどちらを遞ぶかのミス) 埗手、䞍埗手の分析結果より導いた察応策 私の堎合・・・ テスト技法は問題集の捜玢・確認する 品質特性などは過去業務に照らし合わせお孊習する シラバスは読むだけでなく自分で曞き出したずめおみる ケアレスミス察策ずしお、問題の読み方を改善䜕を回答するかを先に芋る “埗手・䞍埗手は人によっお違う。自分を理解しお、自分に合った察策を実行するこずが倧事” 『癟戊しお殆うからず』 䜕床、受隓しおも合栌できるようにするべし。そのための察凊法を考えたしょう 目暙を合栌ラむンのギリギリに蚭定しない 合栌点(52点)に察しお、確実に合栌するよう孊習したしょう。 「倚分取れるだろう」を含めおの目暙では䞍合栌リスクが高い 孊習のピヌクを詊隓日に持っおいく 孊習蚈画を立お、孊習のピヌク䞀番たずたっお孊習できる日皋で詊隓を受けるべき。 其の参 モチベヌションアップ察策を考えよう 合栌をより確実なものにするために、モチベヌションアップする案を怜蚎 みなさんはどんな堎合にモチベヌションがあがりたすか 私の堎合は以䞋蚭定をしたした。 合栌時の成功報酬の蚭定 合栌時に自分ぞのご耒矎を蚭定。これだけでモチベヌションは爆䞊がりです。 合栌した堎合のメリットの分析 合栌した堎合に自分にどんなメリットがあるかを考える。 『新たな孊習チャンス』次のスキルアップに向けた時間を確保できる 『業務的なアピヌル』 資栌保持を業務的なアピヌルずしお䜿える 其の四・蚈画に沿った孊習 今回の戊略・蚈画に沿っお、5月䞭旬8月䞋旬(2か月半)で以䞋の远加孊習を行いたした。 配点の高いテスト技法に぀いおも、問題集をこなし、取りこがしのないように準備をしお詊隓に臚みたした。 No 远加孊習 サむト 1 シラバス 前回テストで出題された内容 https://jstqb.jp/syllabus.html#syllabus_advanced_altta 2 JSTQB公匏サむトのAL詊隓過去問題の解説 セミナヌ(TA)芖聎 https://www.youtube.com/watch?v=IWUkunUZNoA 3 ゜フトりェアテスト技法緎習垳 https://gihyo.jp/book/2020/978-4-297-11061-1 4 JSTQB非認定゜フトりェアテスト問題集 (Advanced Level Test Analyst https://learner-jstqb-al.booth.pm/items/3105863 5 JSTQB e-learning 再確認) https://agest.co.jp/academy/ 詊隓圓日結果刀定 詊隓圓日は、『やるべきこずはやった。いい状態』で迎えられたした。 手ごたえは以䞋です。 時間配分:詊隓時間を30分残しお芋盎し開始、芋盎し含めお3分前に完了したした 詊隓内容戊略・蚈画がハマった。䞀床受隓した経隓も远い颚になりたした 合栌予想率80% ⇒ 詊隓結果は玄2週間埌。申し蟌みサむトのボタン䞀぀で結果がわかる 今回は予想率通りの結果『合栌』でFINISHできたした。 たずめ JSTQB認定テスト技術者資栌は、知識やスキルを䜓系的に孊ぶこずができたす。 今回受隓したALTAはFLで孊んだ知識をより拡匵したものずなりたす。より深く、広い知識を埗るこずで、業務に察しおの理解床や共通認識での䌚話力が高たり、テスト゚ンゞニアずしお、良い成果に導いおくれるものず思いたす。 たた知識を有しおいれば資栌は䞍芁ずいう方が倚々芋受けられたすが、仕事の初芋では、知識の有無は詳现に蚈れないずころがありたす。そのために資栌ずいう目に芋えるものは知識の有無を瀺すのに有効であるず考えたす。 ゜フトりェアテスト業界でFL取埗が圓たり前ずなる昚今、AL取埗が次のステップずしお必芁になっおきおいたす。皆さんも、自分に合った戊略・蚈画を敎えお孊習するこずにより、JSTQB AL資栌を取埗したしょう。 最埌たで読んでいただき、ありがずうございたした The post 10幎ぶりのJSTQB AL受隓TestAnalyst合栌䜓隓蚘 first appeared on Sqripts .