TECH PLAY

AGEST

AGEST の技術ブログ

å…š474ä»¶

こんにちは、バック゚ンド゚ンゞニアのたさです。 AI技術の急速な進化に䌎い、埓来のキヌワヌド怜玢では察応できない「意味的な類䌌性」に基づく怜玢ニヌズが急増しおいたす。本蚘事では、 オヌプン゜ヌスRDBMSであるPostgreSQLにpgvector拡匵を組み蟌むだけで、簡単にベクトル怜玢システムを構築する方法 を解説したす。 ベクトル怜玢 ずは、文章を数倀ベクトルに倉換しお抜象的な意味を怜玢する技術であり、キヌワヌド䟝存型の怜玢では捉えきれない「ナヌザヌが本圓に求めおいる意図」を、 高い粟床 で汲み取れる怜玢手法です。 この蚘事では、ベクトル怜玢をPostgreSQLに組み蟌む方法を、ハンズオン圢匏で環境構築を進めながら説明しおいきたす。 ベクトル怜玢ずは 3分で分かるベクトル怜玢の仕組み 埓来のキヌワヌド怜玢は、文字通りキヌワヌドが䞀臎するかどうかで怜玢結果を返したす。しかし、蚀葉の衚珟は倚様であり、ナヌザヌの意図ず完党に䞀臎するキヌワヌドが䜿われるずは限りたせん。そこで登堎するのが ベクトル怜玢 です。 ベクトル怜玢は、テキストや画像などのデヌタを、数倀の集たりである ベクトル に倉換したす。このベクトルは、元のデヌタの意味的な特城を捉えおおり、類䌌した意味を持぀デヌタは、ベクトル空間䞊で近い䜍眮に配眮されたす。 具䜓的な仕組み: ゚ンベディング:  テキスト質問や文章を、事前に孊習枈みのAIモデル䟋OpenAIのtext-embedding-ada-002を甚いお、数倀ベクトルに倉換したす。この凊理を゚ンベディングず呌びたす。 ベクトルデヌタベヌス:  ゚ンベディングされたベクトルをデヌタベヌスこの䟋ではPostgreSQL + pgvectorに栌玍したす。 類䌌床蚈算:  怜玢ク゚リも同様にベクトルに倉換し、デヌタベヌス内のベクトルずの類䌌床を蚈算したす。類䌌床の高いベクトルを持぀デヌタが、怜玢結果ずしお返されたす。 䟋: 「猫が奜きな人におすすめの映画は」ずいう質問をベクトル怜玢にかけるず、「猫」ずいうキヌワヌドが含たれおいなくおも、「猫が登堎する映画」「猫を飌っおいる人が䞻人公の映画」など、意味的に関連性の高い映画が怜玢結果ずしお衚瀺される可胜性がありたす。 ぀たり、ベクトル怜玢は、キヌワヌドに瞛られず、意味に基づいた柔軟な怜玢を実珟する技術なのです。 PostgreSQL採甚の5倧メリット ベクトル怜玢システムを構築する䞊で、PostgreSQLを採甚するメリットは倚岐にわたりたす。以䞋に䞻な5぀のメリットを挙げたす。 拡匵性:  pgvector拡匵により、PostgreSQLにベクトル怜玢機胜を远加できたす。既存のデヌタベヌス環境を倧きく倉曎する必芁はありたせん。 コスト効率:  オヌプン゜ヌスであるため、高額なラむセンス費甚は䞍芁です。必芁なハヌドりェアリ゜ヌスのみで運甚できたす。 信頌性:  PostgreSQLは長幎の実瞟を持぀堅牢なRDBMSであり、高い信頌性ず安定性を誇りたす。 暙準SQL察応:  既存のSQLク゚リず組み合わせお、耇雑な怜玢凊理を蚘述できたす。 コミュニティサポヌト:  䞖界䞭に掻発なコミュニティが存圚し、豊富な情報やサポヌトが埗られたす。 埓来怜玢ずのパフォヌマンス比范衚 怜玢方匏 怜玢粟床 怜玢速床 (デヌタ量䟝存) 柔軟性 備考 キヌワヌド怜玢 キヌワヌド䞀臎に䟝存。曖昧な衚珟や同矩語に匱い。 高速 䜎い。キヌワヌドの厳密な䞀臎が必芁。 シンプルな怜玢には適しおいる。 ベクトル怜玢 意味的な類䌌性に基づくため、キヌワヌドに䟝存しない。高い粟床を実珟。 デヌタ量に䟝存。むンデックス構造で高速化可胜。 高い。ナヌザヌの意図を汲み取った柔軟な怜玢が可胜。 倧量のデヌタに察しおは、適切なむンデックス蚭蚈が重芁。 党文怜玢 キヌワヌド怜玢より高床な怜玢が可胜だが、意味理解は限定的。 デヌタ量に䟝存。 䞭皋床。 日本語の圢態玠解析など、蚀語䟝存の凊理が必芁な堎合がある。 補足: パフォヌマンスは、デヌタ量、ハヌドりェア、むンデックス蚭蚈などに倧きく巊右されたす。 䞊蚘比范衚はあくたで䞀般的な傟向を瀺すものであり、実際のパフォヌマンスは環境によっお異なりたす。 専甚のベクトルデヌタベヌスずの比范 専甚のベクトルデヌタベヌス䟋: Chroma, FAISS, PineconeずPostgreSQLの拡匵機胜であるpgvectorは、それぞれ異なる匷みを持っおいたす。ここでは、pgvectorず専甚ベクトルデヌタベヌスずの違いや、それぞれのメリット・デメリットを解説したす。 pgvectorの特城 pgvectorは、PostgreSQLにベクトル怜玢機胜を远加する拡匵機胜です。以䞋が䞻な特城です リレヌショナルデヌタずの統合 ベクトルデヌタず埓来のリレヌショナルデヌタを同じデヌタベヌスで管理可胜。 䜎コスト導入 既存のPostgreSQL環境に拡匵機胜ずしお远加するだけで利甚可胜。 ACID準拠 トランザクション管理やセキュリティ機胜をそのたた利甚可胜。 専甚ベクトルデヌタベヌスの特城 専甚ベクトルデヌタベヌス䟋: Chroma, FAISS, Pineconeは、ベクトル怜玢に特化した蚭蚈がされおいたす。以䞋が䞻な特城です 高速怜玢 高次元ベクトルに最適化されたむンデックス蚭蚈䟋: HNSW, IVF。 スケヌラビリティ 分散システムによる氎平スケヌリングが容易。 倚様なデヌタ圢匏察応 画像、音声、動画などの非構造化デヌタも効率的に凊理可胜。 比范衚 項目 pgvector 専甚ベクトルデヌタベヌス䟋: Chroma, FAISS 導入コスト 䜎い既存PostgreSQL環境で利甚可胜 高い新芏むンフラ構築が必芁 速床倧芏暡デヌタ 䞭皋床PostgreSQL䟝存 高速専甚蚭蚈による最適化 スケヌラビリティ 垂盎スケヌルハヌドりェア増匷が必芁 氎平スケヌル分散システム察応 統合性 高いSQLク゚リでリレヌショナルデヌタず統合 䜎い別途APIやミドルりェアが必芁 ナヌスケヌス 小〜䞭芏暡デヌタ、既存RDBMSずの統合 倧芏暡デヌタ、高速怜玢が求められるAI/MLワヌクフロヌ 孊習コスト 䜎いPostgreSQLナヌザヌに銎染みやすい 䞭〜高新しいツヌルやAPIの習埗が必芁 pgvectorのメリットずデメリット メリット 簡単な導入手順 PostgreSQL環境に拡匵機胜ずしおむンストヌルするだけで利甚可胜。 䜎コスト運甚 既存むンフラを掻甚できるため、新たなサヌバヌ構築が䞍芁。 SQL統合性 埓来のSQLク゚リず組み合わせおハむブリッド怜玢が可胜。 デメリット パフォヌマンス限界 倧芏暡デヌタセットや超高次元ベクトルでは専甚VectorDBに劣る。 氎平スケヌリング非察応 PostgreSQL自䜓が分散システムに最適化されおいないため、倧量トラフィックには䞍向き。 機胜制玄 画像や音声など非構造化デヌタぞの察応は限定的。 専甚ベクトルデヌタベヌスのメリットずデメリット メリット 高速な類䌌怜玢 HNSWやIVFなど、高床なむンデックスアルゎリズムを採甚。 倧芏暡デヌタ察応 分散システムによる氎平スケヌリングで数十億件以䞊のベクトル凊理も可胜。 柔軟性 画像、音声、動画など倚様なデヌタ圢匏に察応。 デメリット 導入・運甚コストが高い 新たなむンフラ構築や運甚管理が必芁。 孊習コストが高い 新しいツヌルやAPIの習埗が求められる。 統合性が䜎い 埓来のRDBMSずの連携には远加開発が必芁。 遞択基準 pgvectorを遞ぶべきケヌス 既存のPostgreSQL環境を掻甚したい堎合 䞭小芏暡のプロゞェクトでコスト効率を重芖する堎合 リレヌショナルデヌタずの統合性が重芁な堎合 専甚VectorDBを遞ぶべきケヌス 数千䞇〜数億件以䞊の倧芏暡ベクトル怜玢を行う堎合 非構造化デヌタ䟋: 画像、音声の凊理が必芁な堎合 高速性ずスケヌラビリティを最優先する堎合 pgvectorは、PostgreSQLナヌザヌにずっお手軜か぀コスト効率の良い遞択肢であり、䞭小芏暡プロゞェクトには最適です。䞀方、専甚VectorDBは、倧芏暡か぀耇雑なAI/MLワヌクフロヌにおいお圧倒的なパフォヌマンスを発揮したす。甚途や芁件に応じお、それぞれの特性を掻かした遞択を行うこずが重芁です。 環境構築 本章ではハンズオン圢匏で PostgreSQLコンテナのセットアップ から、 Streamlitを甚いたフロント゚ンドの構築 、そしおそれらを連携させる Docker環境の蚭定 たで、必芁な手順をわかりやすく解説したす。この章の手順に埓うこずで、pgvectorを甚いた簡単なベクトル怜玢システムを構築できたす。 環境構成 䞊蚘のように非垞にシンプルな構成をdocker composeで構築したす。 ディレクトリ構成は以䞋のようになりたす。 ├── .streamlit │ └── secrets.toml *# DB接続情報* ├── docker-compose.yml ├── postgres │ ├── Dockerfile *# PG拡匵機胜むンストヌル* │ └── initdb │ └── init.sql *# テヌブル定矩* └── streamlit ├── Dockerfile *# Python環境構築* ├── app.py *# メむンアプリ* ├── embeddings.py *# ベクトル生成ロゞック* ├── requirements.txt └── seed.py *# テストデヌタ生成* PostgreSQLコンテナの環境構築 PostgreSQLのデヌタベヌスを起動するコンテナ䞊に初期蚭定甚のSQLファむルを䜜成したす。 CREATE EXTENSION IF NOT EXISTS vector; -- サンプルテヌブル䜜成必芁に応じおカスタマむズ CREATE TABLE documents ( id SERIAL PRIMARY KEY, title TEXT, content TEXT, embedding VECTOR(1024) ); CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops); Streamlitコンテナの環境構築 メむン凊理ずなるpythonコヌドを蚘述したファむルを䜜成したす。 import streamlit as st import pandas as pd import numpy as np from datetime import datetime import psycopg2 from psycopg2.extras import execute_values from sqlalchemy.sql import text from streamlit.logger import get_logger from embedding import Embedding logger = get_logger(__name__) embedding = Embedding() # ペヌゞ蚭定 st.set_page_config( page_title="Vector Database Demo", page_icon="🔍", layout="wide" ) def get_embedding(text): return embedding.get_embedding([text])[0] # デヌタベヌス接続関数 def get_connection(): return st.connection('postgresql', type='sql') # メむンアプリケヌション def main(): st.title("📊 Vector Database Demo") # サむドバヌでの操䜜遞択 operation = st.sidebar.selectbox( "操䜜を遞択", ["デヌタ衚瀺", "デヌタ远加", "ベクトル怜玢"] ) if operation == "デヌタ衚瀺": show_data() elif operation == "デヌタ远加": add_data() elif operation == "ベクトル怜玢": vector_search() def show_data(): st.header("📋 登録デヌタ䞀芧") conn = get_connection() # デヌタ取埗 query = "SELECT id, title,content FROM documents LIMIT 100" df = conn.query(query, ttl=0) if not df.empty: st.dataframe(df) else: st.info("デヌタが登録されおいたせん") def add_data(): st.header("➕ デヌタ远加") # 入力フォヌム with st.form("data_form"): title = st.text_input("タむトルを入力") content = st.text_area("テキストを入力") submitted = st.form_submit_button("登録") if submitted and content: conn = get_connection() # サンプルずしお、ランダムな1536次元ベクトルを生成 # 実際のアプリケヌションでは、適切な゚ンベッディングモデルを䜿甚する embedding = get_embedding(title + " " + content) # デヌタ登録 query = text(""" INSERT INTO documents (title, content, embedding) VALUES (:title, :content, :embedding) """) params = {"title": title, "content": content, "embedding": embedding} try: with conn.session as session: session.execute(query, params) session.commit() st.success("デヌタを登録したした") except Exception as e: st.error(f"゚ラヌが発生したした: {str(e)}") def vector_search(): st.header("🔍 ベクトル怜玢") search_text = st.text_input("怜玢テキストを入力") k = st.slider("衚瀺件数", min_value=1, max_value=10, value=5) if st.button("怜玢") and search_text: # サンプルずしお、ランダムなク゚リベクトルを生成 # 実際のアプリケヌションでは、入力テキストを適切に゚ンベッディング query_vector = get_embedding(search_text) conn = get_connection() # コサむン類䌌床による怜玢 query = """ SELECT title,content, 1 - (embedding <-> :query_vector) as similarity FROM documents ORDER BY embedding <-> :query_vector LIMIT :k """ params = {"query_vector": str(query_vector), "k": k} try: df = conn.query(query, params=params, ttl=0) if not df.empty: # 結果衚瀺 for _, row in df.iterrows(): with st.expander(f"{row['title']} 類䌌床: {row['similarity']:.4f}"): st.write(row['content']) else: st.info("怜玢結果が芋぀かりたせんでした") except Exception as e: st.error(f"怜玢䞭に゚ラヌが発生したした: {str(e)}") # アプリケヌション実行 if __name__ == "__main__": main() テキストの埋め蟌み凊理を行うpythonコヌドを蚘述したファむルを䜜成したす。 今回の䟋ではデフォルトで埋め蟌み甚のモデルにmultilingual-e5-largeを䜿甚するように蚭定しおいたす。このモデルを倉曎するこずで怜玢時の傟向等を倉えるこずが可胜です。 intfloat/multilingual-e5-large · Hugging Face import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel class Embedding: def __init__(self, model_name: str = 'intfloat/multilingual-e5-large'): self.model_name = model_name self.load_model() def load_model(self): self.tokenizer = AutoTokenizer.from_pretrained(self.model_name) self.model = AutoModel.from_pretrained(self.model_name) def average_pool( self, last_hidden_states: Tensor, attention_mask: Tensor ) -> Tensor: last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] def get_embedding(self, input_texts: list[str]) -> list[float]: batch_dict = self.tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') outputs = self.model(**batch_dict) embeddings = self.average_pool(outputs.last_hidden_state, batch_dict['attention_mask']) return F.normalize(embeddings, p=2, dim=1).tolist() 初期デヌタの投入を行うpythonコヌドを蚘述したファむルを䜜成したす。 単玔にタむトルず内容をならべ、それらをデヌタベヌスに埋め蟌み衚珟ず共に保存しおいたす。 import psycopg2 import numpy as np from psycopg2.extras import execute_values from embedding import Embedding test_data = [ { "title": "Dockerコンテナのベストプラクティス2025幎版", "content": "Dockerコンテナを本番環境で効率的に運甚するためのベストプラクティスを解説したす。むメヌゞサむズの最適化、セキュリティ察策、ネットワヌク蚭定、ボリュヌム管理など、実践的なトピックを網矅的にカバヌしたす。マルチステヌゞビルドの掻甚方法や、環境倉数の適切な管理方法に぀いおも詳しく説明したす。" }, { "title": "PyTorchによる深局孊習モデルの最適化手法", "content": "PyTorchを䜿甚した深局孊習モデルのパフォヌマンス最適化に぀いお解説したす。バッチサむズの調敎、孊習率スケゞュヌリング、デヌタロヌダヌの最適化、GPUメモリの効率的な䜿甚方法など、実践的な最適化テクニックを玹介したす。" }, { "title": "マむクロサヌビスアヌキテクチャの蚭蚈パタヌン", "content": "マむクロサヌビスアヌキテクチャを採甚する際の䞻芁な蚭蚈パタヌンに぀いお解説したす。サヌビス間通信、デヌタ䞀貫性の確保、障害察策、モニタリング戊略など、実装時の重芁なポむントを詳しく説明したす。" }, { "title": "Kubernetes運甚管理の実践ガむド", "content": "Kubernetesクラスタの効率的な運甚管理方法に぀いお解説したす。リ゜ヌス管理、オヌトスケヌリング、モニタリング、セキュリティ察策など、実運甚で必芁ずなる知識を䜓系的に説明したす。" }, { "title": "効率的なデヌタベヌスむンデックス蚭蚈", "content": "リレヌショナルデヌタベヌスにおけるむンデックス蚭蚈のベストプラクティスを解説したす。ク゚リパフォヌマンスの最適化、むンデックス遞択の基準、メンテナンス戊略など、実践的なアプロヌチを玹介したす。" }, { "title": "GraphQLによるモダンAPIの構築", "content": "GraphQLを䜿甚したAPIの蚭蚈ず実装に぀いお解説したす。スキヌマ蚭蚈、リゟルバの実装、N+1問題の解決、キャッシュ戊略など、実践的な開発手法を玹介したす。" }, { "title": "CI/CDパむプラむンの自動化戊略", "content": "継続的むンテグレヌション/デリバリヌパむプラむンの効率的な構築方法に぀いお解説したす。テスト自動化、デプロむ戊略、品質管理、モニタリングなど、実践的な自動化手法を玹介したす。" }, { "title": "セキュアなWebアプリケヌション開発", "content": "Webアプリケヌションのセキュリティ察策に぀いお包括的に解説したす。XSS察策、CSRF察策、認蚌・認可の実装、セキュアなセッション管理など、重芁なセキュリティ考慮事項を説明したす。" }, { "title": "効率的なキャッシュ戊略の実装", "content": "Webアプリケヌションにおけるキャッシュ戊略の蚭蚈ず実装に぀いお解説したす。CDN、ブラりザキャッシュ、アプリケヌションキャッシュ、デヌタベヌスキャッシュなど、倚局的なキャッシュ戊略を玹介したす。" }, { "title": "倧芏暡デヌタ凊理のベストプラクティス", "content": "倧芏暡デヌタ凊理システムの蚭蚈ず実装に぀いお解説したす。バッチ凊理、ストリヌム凊理、デヌタパむプラむン、スケヌラビリティ確保など、実践的なアプロヌチを玹介したす。" }, { "title": "ReactずTypeScriptによるフロント゚ンド開発", "content": "ReactずTypeScriptを組み合わせた最新のフロント゚ンド開発手法に぀いお解説したす。型安党な開発、コンポヌネント蚭蚈、状態管理、パフォヌマンス最適化など、実践的な開発テクニックを玹介したす。" }, { "title": "AWSでのスケヌラブルなむンフラ構築", "content": "AWSを䜿甚したスケヌラブルなむンフラストラクチャの構築方法に぀いお解説したす。オヌトスケヌリング、負荷分散、障害察策、コスト最適化など、クラりドむンフラの蚭蚈ポむントを説明したす。" }, { "title": "効率的なログ管理ずモニタリング", "content": "分散システムにおけるログ管理ずモニタリングの実践的アプロヌチに぀いお解説したす。ログ収集、分析、可芖化、アラヌト蚭定など、効果的な運甚監芖の方法を玹介したす。" }, { "title": "マむクロフロント゚ンドアヌキテクチャの実装", "content": "マむクロフロント゚ンドアヌキテクチャの蚭蚈ず実装に぀いお解説したす。モゞュヌル分割、統合戊略、ルヌティング、状態管理など、フロント゚ンド開発の新しいアプロヌチを玹介したす。" }, { "title": "NoSQLデヌタベヌスの蚭蚈パタヌン", "content": "NoSQLデヌタベヌスを䜿甚する際の効果的な蚭蚈パタヌンに぀いお解説したす。デヌタモデリング、ク゚リ最適化、スケヌリング戊略など、実践的な䜿甚方法を玹介したす。" }, { "title": "機械孊習モデルの本番環境デプロむ", "content": "機械孊習モデルを本番環境にデプロむする際の実践的アプロヌチに぀いお解説したす。モデルのバヌゞョン管理、スケヌリング、モニタリング、再孊習戊略など、運甚䞊の重芁ポむントを説明したす。" }, { "title": "Terraformによるむンフラのコヌド化", "content": "Terraformを䜿甚したむンフラストラクチャのコヌド化に぀いお解説したす。リ゜ヌス管理、モゞュヌル蚭蚈、状態管理、チヌム開発など、IaCの実践的な適甚方法を玹介したす。" }, { "title": "効率的なAPIバヌゞョニング戊略", "content": "WebAPIのバヌゞョニング戊略に぀いお実践的な方法を解説したす。バヌゞョン管理手法、䞋䜍互換性の確保、マむグレヌション戊略など、長期的な API 運甚のポむントを説明したす。" }, { "title": "セキュアなマむクロサヌビス間通信", "content": "マむクロサヌビス環境におけるセキュアな通信方法に぀いお解説したす。認蚌、認可、暗号化、蚌明曞管理など、サヌビス間通信のセキュリティ確保方法を説明したす。" }, { "title": "効率的なデヌタベヌスマむグレヌション", "content": "倧芏暡デヌタベヌスのマむグレヌション戊略に぀いお解説したす。ダりンタむム最小化、デヌタ敎合性確保、ロヌルバック蚈画など、安党なマむグレヌションの実斜方法を玹介したす。" } ] def insert_test_data(): conn = psycopg2.connect( dbname="vectordb", user="postgres", password="postgres", host="postgres", port="5432" ) cur = conn.cursor() embedding = Embedding() for data in test_data: # サンプルずしお1536次元のランダムベクトルを生成 emb = embedding.get_embedding([data["title"] + " " + data["content"]])[0] cur.execute( "INSERT INTO documents (title, content, embedding) VALUES (%s, %s, %s)", (data["title"], data["content"], emb) ) conn.commit() cur.close() conn.close() if __name__ == "__main__": insert_test_data() デヌタベヌスずの接続定矩を蚘述したファむルを䜜成したす。 [connections.postgresql] dialect = "postgresql" host = "postgres" port = 5432 database = "vectordb" username = "postgres" password = "postgres" 䟝存ラむブラリを蚘述したファむルを䜜成したす。 SQLAlchemy==2.0.35 streamlit==1.32.0 pandas==2.2.0 numpy==1.26.0 psycopg2-binary==2.9.9 torch==2.6.0 transformers==4.48.2 Docker環境のセットアップ たずはpostgresのDockerfileから䜜成をしおいきたす。 postgresベヌスのむメヌゞにpgvectorのむンストヌル凊理を远加したす。 FROM postgres:16.3 # pgvectorむンストヌル RUN apt-get update && \\ apt-get install -y \\ build-essential \\ git \\ postgresql-server-dev-16 RUN git clone <https://github.com/pgvector/pgvector.git> /tmp/pgvector && \\ cd /tmp/pgvector && \\ make && \\ make install && \\ rm -rf /tmp/pgvector 続けおStreamlitのDockerfileを䜜成したす。 FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt CMD ["streamlit", "run", "./streamlit/app.py", "--server.port=8501"] 最埌にこれらのコンテナを束ねお管理するdocker-compose.ymlを䜜成したす。 version: "3.9" services: postgres: build: ./postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: vectordb volumes: - postgres_data:/var/lib/postgresql/data - ./postgres/initdb:/docker-entrypoint-initdb.d ports: - "5432:5432" networks: - app-network streamlit: build: ./streamlit volumes: - .:/app environment: - STREAMLIT_SERVER_PORT=8501 ports: - "8501:8501" depends_on: - postgres networks: - app-network volumes: postgres_data: networks: app-network: driver: bridge 動䜜確認 起動確認 以䞋のコマンドでコンテナのビルドを行いたす。 docker compose build 以䞋のコマンドでコンテナの起動を行いたす。 docker compose up -d ブラりザで以䞋のアドレスにアクセスしたす。 http://localhost:8501/ 最初はモデルを読み蟌むためロヌド䞭ずなり、䞋蚘のような画面が衚瀺されるかず思いたすが その埌このような衚瀺になれば、サヌバヌの起動に成功しおいたす。 初期デヌタの投入 デヌタベヌスに初期デヌタを投入する為、コンテナ䞊でコマンドを実行したす。 たずはコンテナの状態の確認を行いたす。 $ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS pgvector-postgres-1 pgvector-postgres "docker-entrypoint.s
" postgres 2 hours ago Up 2 hours 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp pgvector-streamlit-1 pgvector-streamlit "streamlit run ./str
" streamlit 2 hours ago Up 2 hours 0.0.0.0:8501->8501/tcp, :::8501->8501/tcp 䞊蚘で出力されたコンテナの内、streamlitのコンテナ䞊で以䞋のようにしおコマンドを実行したす。 $ docker exec -it pgvector-streamlit-1 python streamlit/seed.py コマンド実行埌に再床ブラりザで以䞋のアドレスにアクセスしたす。 http://localhost:8501/ 投入したデヌタが䞀芧で衚瀺されるようになりたした。 Vector怜玢の確認 先ほどアクセスした画面の「操䜜を遞択」から「ベクトル怜玢」を遞択したす。 䞊蚘のような画面が衚瀺されるかず思いたす。 詊しにこちらの怜玢テキストに「MySQL」ず入力しお怜玢しおみたす。 䞊蚘のように結果が衚瀺されたした。内容ずしおは以䞋のようなものですが、もちろん本文に「MySQL」ずいう文蚀はありたせん。 内容の指向性や意味などからもっずも類䌌床の高い内容順に䞊べるこずができおいるこずが確認できたす。 おわりに 本蚘事で実践したPostgreSQLベクトル怜玢システムの構築は、AI時代のデヌタ掻甚における重芁な第䞀歩です。 埓来のリレヌショナルデヌタベヌスの枠組みを超え、意味理解を組み蟌んだ次䞖代怜玢技術 を、既存むンフラで実珟する手法を具䜓䟋ず共に解説したした。 本栌的な導入を怜蚎される方は、たずは pgvector公匏ドキュメント ず E5モデルに関しおの蚘事 の粟読をお勧めしたす。実際のプロダクション環境では、 むンデックス再構築戊略 ず メモリ最適化 が成吊を分ける鍵ずなりたす。 最埌に、本蚘事が皆様のAI/MLプロゞェクト掚進の䞀助ずなれば幞いです。 The post PostgreSQLで実践するベクトル怜玢入門AI時代のRDBMS掻甚術 first appeared on Sqripts .
こんにちは、QAコンサルタントの ダマダ です。 私はこのたび、JSTQB® Advanced Level テストマネヌゞャ詊隓に合栌したした。   本蚘事では、詊隓合栌のために掻甚した曞籍「 科孊的根拠に基づく最高の勉匷法 」の内容を解説するずずもに、JSTQB詊隓の抂芁、そしお実践した勉匷法を共有したす。 曞籍の玹介「科孊的根拠に基づく最高の勉匷法」 この曞籍は、医垫であり孊習法の専門家である著者が、最新の研究論文やデヌタを基に、科孊的に効果が蚌明された孊習法を玹介したものです。特に、次のようなポむントが倧きな特城です。 効果が䜎い孊習法 日垞的に行われがちな以䞋の方法は、実は非効率ずされおいたす 繰り返し読む 䞀芋効果的に思えるが、蚘憶の定着にはほずんど寄䞎しない。 ノヌトに曞き写す 時間がかかる割に、蚘憶や理解が深たらない。 ハむラむトや䞋線を匕く 重芁箇所をマヌクする行為そのものに孊習効果はない。 効果が高い孊習法 1. アクティブリコヌル胜動的蚘憶再生 孊習した知識を蚘憶から匕き出すこずで、蚘憶が匷化されたす。たずえば問題を解く、クむズ圢匏で孊ぶずいった方法が該圓したす。 2. 分散孊習 短時間で詰め蟌むのではなく、間隔を空けお繰り返し埩習するこずで、蚘憶の定着率が向䞊したす。たずえば、1日おきに埩習する、週ごずに孊び盎すずいった方法です。 3. 粟緻的質問ず自己説明 粟緻的質問 孊んだ内容に察しお「なぜそうなるのか」ず問いかけ、深掘りしお理解を深めたす。 自己説明 孊習した内容を自分の蚀葉で説明するこずで、曖昧な理解を防ぎたす。 これらの方法を組み合わせるこずで、孊習効率を倧幅に向䞊させるこずができたす。 JSTQB®の詊隓ずテストマネヌゞャモゞュヌルの玹介 JSTQB®の抂芁 JSTQB®Japan Software Testing Qualifications Boardは、゜フトりェアテストの知識ず技胜を䜓系的に孊び、その理解床を蚌明する資栌詊隓を提䟛する団䜓です。ISTQB®International Software Testing Qualifications Boardの囜際基準に基づいおおり、゜フトりェアテストの暙準資栌ずしお広く認知されおいたす。 詊隓の構成 JSTQB®詊隓には以䞋の3぀のレベルがありたす。 1. Foundation Level 初心者向け。テストの基本抂念、蚭蚈技法、テスト管理の基瀎が詊隓範囲に含たれたす。 2. Advanced Level 経隓者向け。3぀のモゞュヌルに分かれおいたす。 テストマネヌゞャ テスト蚈画やプロゞェクト管理に特化。 テストアナリスト 芁件分析やテスト蚭蚈技法に焊点。   テクニカルテストアナリスト テストツヌルや自動化の掻甚。 3. Expert Level   ゜フトりェアテストの最䞊玚資栌。リヌダヌシップやプロセス改善に関する知識を問われたす。 Advanced Level テストマネヌゞャの詊隓内容 テストマネヌゞャは、テストプロゞェクトを蚈画・実行・管理するスキルを蚌明するためのモゞュヌルです。以䞋が䞻な詊隓範囲です。 テストプロセス テスト戊略の䜜成、蚈画、モニタリング、評䟡。 リスクベヌステスト リスクを特定し、優先順䜍を付けおテスト蚈画を策定。 テストチヌムの管理 チヌムビルディングやステヌクホルダヌずのコミュニケヌション。 品質保蚌 メトリクス分析やプロセス改善の実斜。 ツヌルず自動化 適切なツヌルの遞定ず導入。 実践した勉匷法 以䞋の3ステップを繰り返しながら孊習を進めたした。このプロセス党䜓に曞籍で玹介されおいる孊習法を取り入れおいたす。 1. シラバスを読む 方法ずポむント 流し読みからスタヌト たずはシラバス党䜓を流し読みし、詊隓範囲を倧たかに把握。 䞍明点をメモ 分からない箇所や重芁そうな郚分をメモに蚘録し、埌のプロセスで補匷。 関連情報を調査 シラバスに蚘茉された内容に぀いお理解が曖昧な郚分は、ChatGPTやWeb怜玢で調査。 掻甚した勉匷法 分散孊習 シラバスを䞀床に党郚読むのではなく、耇数回に分けお孊習したした。1日目に党䜓を流し読み、2日目以降に重点的な箇所を再床読むこずで蚘憶を匷化したした。 粟緻的質問 各セクションで「なぜこの方法が重芁なのか」「どうしおこれが掚奚されるのか」を自分に問いかけながら孊習したした。 2. 問題を解く 方法ずポむント 問題挔習の培底 非認定問題集を䜿いながら繰り返し問題を解き、シラバスの内容を応甚する緎習を行いたした。 間違いの蚘録 間違えた問題に぀いお、問題番号、察応するシラバスの箇所ず間違えた原因をメモ。 ChatGPTを掻甚 シラバスず問題集をChatGPTにむンプットし、問題集に含たれおいない新しい問題を生成しおもらうこずで、幅広い挔習を実斜したした。 掻甚した勉匷法 アクティブリコヌル 問題を解くこずで、孊習した知識を蚘憶から匕き出し、蚘憶を匷化したした。 自己説明 解いた問題に぀いお「なぜこの答えが正解なのか」「他の遞択肢が䞍正解の理由」を自分に説明したした。これにより、遞択肢の背景や理論を深く理解できたした。 3. 振り返り 方法ずポむント 振り返りは孊習の各ステップで必ず行い、孊習効率を高めたした。振り返りでは、これたでに取った メモ を掻甚しお原因分析を行いたす。 メモの掻甚 シラバスを読んだ際に曞き留めた䞍明点や、問題を解いた際に蚘録した間違えた箇所やその理由を参照。 原因分析 「知識䞍足」「問題文の読み違い」「思い蟌み」などに分類し、それぞれの察策を実斜。 匱点補匷 特に苊手な分野に぀いおは、再床シラバスを読み盎したり、問題を解き盎したりしお克服を図りたした。 進捗の可芖化 日々蚘録を取っおいるため、これたで間違えおいた問題が出来るようになっおいるこずが分かり、自分の成長を確認したした。 掻甚した勉匷法 分散孊習 振り返りを䜕床も行い、時間を空けお同じ内容を埩習するこずで、知識の定着を匷化したした。新しい知識よりも埩習を重芖したした。 粟緻的質問 「なぜ間違えたのか」「どのように考えれば正解にたどり着けたのか」を繰り返し問いかけ、理解を深めたした。 スキマ時間を掻甚した孊習 スキマ時間を積極的に掻甚するこずも、 分散孊習 の効果を埗るための重芁な手段です。以䞋のように、短時間の孊習を耇数回に分けお行いたした。 通勀時間 シラバスの読み蟌みや、理解が曖昧な箇所の埩習。 昌䌑み 問題集を1問でも解く。 倜の15分 振り返りや匱点補匷。 たずめ 「科孊的根拠に基づく最高の勉匷法」を取り入れるこずで、孊習効率を向䞊させるこずができたず思いたす。この方法は、資栌詊隓だけでなく、日垞の孊びやスキルアップにも応甚可胜です。これから受隓を目指す方は、科孊的なアプロヌチを詊しおみおはいかがでしょうか The post JSTQB Advanced Level テストマネヌゞャ勉匷法 -科孊的根拠に基づく最高の勉匷法を参考にしお- first appeared on Sqripts .
この連茉では、゜フトりェア開発のQA゚ンゞニアずしお働き始めた皆様に向けお、私の実䜓隓をもずに「こんなこずを知っおおけばよかった」ずいう、ちょっずした気づきを共有したす。 䞀緒に゜フトりェア開発のQA゚ンゞニアずしおの充実した゚ンゞニアラむフを築くためのヒントを探っおいきたしょう。 QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 ※クリックで開きたす 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう 【第3回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -前線- 【第4回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -埌線- 第3話では゜フトりェアテストにおける「テスト実行」に぀いお、テスト掻動における重芁さず、充実させるポむントをお話ししたした。「テスト実行」を実際に䜓隓し、そこから孊ぶこずは倧倉重芁なこずだず思っおいたす。 䞀方で、テスト実行を支えるその他の掻動を理解するこずも倧切です。そしお、QA゚ンゞニアずしお倧切なこずは、これらの掻動に぀いおきちんず理解したうえで、「テストをマネゞメントする」ずいう考え方をするこずです。 今回の蚘事ではテスト実行以倖の掻動に぀いお解説したす。そしお、それらの掻動を螏たえた䞊で、さらにステップアップを目指す内容に぀いおご玹介したす。 テスト実行を支えるその他の掻動 テスト蚈画・テスト蚭蚈ずいったその他のテスト掻動は、テスト実行を支える掻動ず蚀っおもいいず思いたす。この蚘事では、テスト実行をベヌスにその他の掻動を捉えるこずで、よりテスト党䜓ぞの理解を深めるこずを目的ずしおいたす。 この蚘事が、テスト実行以倖の掻動を実斜する際の䞀助ずなれば幞いです。 テスト蚭蚈 本蚘事では、JSTQBにおける「テスト分析」「テスト蚭蚈」「テスト実装」を総称しお「テスト蚭蚈」ず呌びたす。「テスト蚭蚈」ずいう名前のプロセスや成果物は、実はチヌムや組織、文献によっおも異なるからです。 そういった背景があり぀぀も、「テスト蚭蚈ずいう掻動によっおテストケヌスを䜜成する」ずいうずころは共通理解ずしお成り立぀のではないでしょうか。 テスト実行䞭にテスト蚭蚈に぀いお気にするポむントずしおは、「なぜこのテストケヌスを䜜成したのか」を考えるこずです。 もしかしたらテストケヌスの䞭には「テスト条件」「テスト芳点」「テスト項目」ずいった項目があるかもしれたせん。それらの内容から、「テストを実行する理由」を探しおほしいず思いたす。これらを念頭に眮いた䞊で、「実際にどのようなテストケヌスでカバヌしおいるか」「どのような思考でテストケヌスを䜜っおいるか」を考えるこずはQA゚ンゞニアずしお重芁な孊びに繋がるず考えたす。 テストのモニタリングずコントロヌル テストのモニタリングずコントロヌルずいう掻動は、スケゞュヌルや人のアサむンの調敎だず思われおいる方がいたす。それらは重芁な管理察象であるこずに間違いありたせんが、それだけではありたせん。 たずえば、テスト実行で埗られた情報を元に、テスト実行の順番を調敎したり、テストの远加・削陀を怜蚎するこずもありたす。他にもテストの開始基準や完了基準を再怜蚎しお、テスト蚈画をアップデヌトするこずも含たれたす。 テスト実行をしおいお気にするべきポむントは、「テストのモニタリングずコントロヌルのためにどのような情報を収集しおいるだろうか」「それらによっおどのような意思決定がされただろうか」だず考えたす。 テストをただ消化するだけでなく、消化したテストによっおどのような刀断がされたかを理解するこずは、ご自身がテストをマネゞメントする立堎になったずきに掻きおくるでしょう。 テスト完了 「テスト完了」はテスト掻動の集倧成ずいう偎面や、次のテストのプロゞェクトのために孊びを掻かすなどの偎面がありたす。 所属する組織で「テスト完了レポヌト」を䜜成しおいる堎合、ぜひ䞀読されるこずをおすすめしたす。 我々のテスト掻動が、ステヌクホルダヌぞどのように報告されるかを知るこずができるからです。それによっお、「我々のテストで重芁なのはどの郚分だったのか」「我々のテスト掻動を埅っおいる人々は䜕が知りたかったのか」を理解するこずができたす。 たた、完了報告のミヌティングに参加するこずも孊びに繋がりたす。これは、テスト掻動においお、どのようなニヌズがあったのかを知り、ステヌクホルダヌの反応を知るよい機䌚になりたす。 テスト蚈画 テスト蚈画の成果物であるテスト蚈画曞は、その珟堎のテストを理解するにあたっお、最も重芁なドキュメントのひず぀です。テスト蚈画曞には、通垞、「テストの目的」「テストにおける制玄」「最適なアプロヌチ」「完了のための手段」などが蚘茉されおいたす。 ひいおはテスト実行の掻動がどのような意味を持ち、どのような文脈の䞭で、どんな実行蚈画を立おたのか、その䞭で自分はどのような䜍眮にいるのかを知るこずは普段の仕事の目的意識を持぀ためにも重芁です。 アゞャむル開発などのプロゞェクトでは、テスト蚈画ずいう掻動やテスト蚈画曞ずいった成果物がない堎合もありたす。その堎合でも䞊蚘のような芳点で「どのようにテストを蚈画しおいるのだろうか」を考えるこずは孊びに繋がりたす。 QAずしお「テストをマネゞメントするずいう」考え方を持ずう ゜フトりェアテストには「テストマネヌゞャヌ」ずいうロヌルがありたす。圌らは「テストマネゞメントをする」ずいう圹割を持っおいたす。そのような圹割を持った人がいるために、「テストマネヌゞャヌになるたでテストマネゞメントはしなくおいい」ず考える人もいたす。 この考えはQA゚ンゞニアのキャリアや働き方にずっお、ポゞティブな意味を持たないず私は考えおいたす。 自分のチヌムがテストを通しお「どのような情報を取埗したか」「どのような意思決定をしたか」に぀いおきちんず把握するこずで、QAずしお重芁な「目的意識」を逊うこずができたす。 読者の方の䞭には、自分䞀人で意思決定をするこずはない人もいるかもしれたせん。 しかしながらそのための情報提䟛や、自分の専門性を元にチヌムぞ瀺唆を䞎えるこずは必芁だず考えおいたす。 特に、「QA゚ンゞニア」ずいうロヌルの堎合は、テストマネヌゞャヌではなくおも「テストをマネゞメントする」ずいう考えを持぀必芁があるず考えたす。 QAの責務を「テストの仕事を収める」ではなく、「品質を保蚌するこず」であるず考えるのはいかがでしょうか。 テストずいう分野においおは、単にテストを消化するだけでなく、効果的にテストを行なう必芁がありたす。そのために垞に「テストマネゞメント」の意識を持っおおくこずが重芁になるのです。 QA゚ンゞニアに求められるテストの呚蟺知識 テスト゚ンゞニアではなく、あえお「QA゚ンゞニア」ず名乗るからには、テストだけでなくもう少し広い知識を぀けるこずも倧切だず考えたす。 ここからは、さらに飛躍するための知識に぀いお玹介したす。 自動テスト 自動テストの知識は、QA゚ンゞニアにずっお必須になり぀぀ありたす。手動でテストの掻動をするだけでなく、自動テストに぀いおきちんず理解しお・䜜り䞊げる知識を持぀こずが倧切です。 自動テストを考える過皋でテスト党䜓に向き合うこずずなりたすので、テストレベルやテストマネゞメントぞの理解が深たるずいう効果もありたす。 品質管理 品質管理は、゜フトりェア開発よりも長い歎史を持぀分野であり、関連曞籍も倚数出版されおいたす。これらに぀いお深く理解するこずは、QAずしおの考えの軞を定めるのに効果的です。 ひず぀補足をするず、゜フトりェア開発ず、量産工皋がある補品の開発は、品質管理のプロセスが異なりたす。そのため、単玔にすべおのプラクティスを䜿うこずには泚意をした方がいいでしょう。 ゜フトりェア゚ンゞニアリング 私は「゜フトりェア゚ンゞニアリング」を孊ぶこずが最も倧切だず考えたす。ここでいう「゜フトりェア゚ンゞニアリング」ずは、モデリングやプログラミングなど、゜フトりェア開発におけるさたざたなプラクティスを指したす。 特にプログラミングに぀いおは、゚ンゞニアでなくでもPCを䜿う党おの職皮で必芁になる技術だず考えたす。 QAのハヌドスキルを手に入れるための参考文献 ゜フトりェアテストに぀いお知りたい堎合、最も手軜なのは「JSTQBシラバス」です。専門甚語が倚く、最初はずっ぀きにくいですが、䞀読するこずをおすすめしたす。 ゜フトりェアテストに぀いおの曞籍を玹介しおおきたいずころですが、「この本さえ読んでおけば倧䞈倫」ずいう本は私が読んだ䞭では存圚したせん。それぞれの曞籍によっお芋解や専門分野が異なるためです。 そのため、さたざたな文献を倚読しお、自分なりのテスト芳を育おるこずが倧切です。 ゜フトりェアテストの孊習ず参考になるのが、以䞋の「゜フトりェアテストの読曞マップ」です。 ゜フトりェアテスト読曞マップ QAずしおは SQuBOK(゜フトりェア品質保蚌知識䜓系) を䞀床読んでみるこずをおすすめしたす。 SQuBOKでは、゜フトりェアQAに必芁な知識が網矅的に解説されおいたす。 「この状況ではどんな方法があるんだっけ」ずいうむンデックスを早期に䜜っおおくこずは、QA゚ンゞニアの経隓を豊かにする良い方法だず考えたす。 ゜フトりェア゚ンゞニアリングの本もおすすめです。特にQAに関係する方が翻蚳しおいる「 実践゜フトりェア゚ンゞニアリング 」ずいう本は、党䜓像を把握できるので、ぜひ手にずっおみおください。 おわりに 第3話、第4話ず続いた「ハヌドスキル」の玹介ですが、IT゚ンゞニアにずっおハヌドスキルの孊習に終わりはありたせん。 この蚘事の内容に満足するのではなく、さたざたな分野に興味を持っお、䞻䜓的に孊習するこずをおすすめしたす。 【連茉】QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう 【第3回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -前線- 【第4回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -埌線- The post 【第4回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -埌線-QA゚ンゞニアのスタヌトガむド first appeared on Sqripts .
この連茉では、1人目QAずしおのチヌムの立ち䞊げや組織づくりに関しお、私が実践したこずや詊行錯誀䞭のこずも含めおお䌝えしたす。 前回の蚘事 では、開発者ずQAずのコミュニケヌションに関する問題やその察応に぀いお解説したした。 【第4回】QAず開発者ずのコミュニケヌションQA組織の立ち䞊げ方 この連茉では、1人目QAずしおのチヌムの立ち䞊げや組織づくりに関しお、私が実践したこずや詊行錯誀䞭のこずも含めおお䌝えしたす。前回の蚘事では、チヌムビルディングの抂念や考え方の説明ず、QAチヌムにおけるチヌムビルディングに぀いおタックマンモデルの各段階...  続きを読む  Sqripts 関連蚘事Sqripts 今回は、QAチヌムを立ち䞊げおいく過皋でメンバヌのキャリアをどう䜜っおいくかを考えたす。 チヌム立ち䞊げにおけるメンバヌのキャリアパス QAチヌムを立ち䞊げ成長させおいく䞊で、メンバヌのキャリアパスは重芁なテヌマです。ずくに、立ち䞊げ初期のメンバヌや若手゚ンゞニアにずっおは、チヌムでの掻動を通じお将来どのようなキャリアを描けるのかが重芁です。明るい未来が芋通せるかどうかは、日々のモチベヌションや成長に倧きく圱響したす。 そこで、今回はQAチヌムにおけるキャリアパスを 瀟内でのキャリア 瀟倖でのキャリア ずいう2぀の偎面から掘り䞋げおみたいず思いたす。 瀟内でのキャリアパス QA゚ンゞニアずしお自瀟で働く過皋で、どのような経隓を積みどのような道に進めるのか、具䜓的なキャリアビゞョンを瀺すこずが䞍可欠です。 ビゞョンを瀺すこずの重芁性 䞭堅・ベテランにもなれば「キャリアは自分で考えお築くもので、䌚瀟がすべお考えるわけではない」ず蚀えるのですが、キャリア圢成の初期段階にある若手゚ンゞニアに察しおはそうはいきたせん。QAチヌムを組成しお数幎が経ち、瀟内での圹割・䜍眮づけ・評䟡の仕方などが固たっおいる堎合は、キャリアの芋通しが぀きやすいでしょう。しかし、本蚘事が察象ずしおいる「QAチヌムの立ち䞊げ」の段階においおは、QA゚ンゞニアずしお働いた先のむメヌゞが持ちづらくなりたす。 もちろん暫定ではあるず思いたすが、QA組織を将来どうしたいかのビゞョンずずもに ゞュニアなQA゚ンゞニアも含めお、QAチヌムのマネゞメントを担えるようになる SETずしおテスト自動化等に匷みを発揮する など耇数の遞択肢を提瀺できるず良いでしょう。 このずき、 第1回 でも觊れたQMファンネルを参考に、テスト゚ンゞニア・パむプラむン゚ンゞニアSET・QA゚ンゞニアずいった軞で怜蚎をするずわかりやすいです。さらに、各ロヌルにおけるスプリット・むンプロセス・コヌチ・コンサルタント・プロモヌタヌずいった圹割を組み合わせるこずで、より倚様なキャリアパスを描くこずができたす。 【第1回】QA組織立ち䞊げの流れず組織の圢 以前の連茉である1人目QAずしおの立ち回りでは、䌚瀟や開発組織の1人目QAになった人がどのような掻動をするのかや、品質保蚌を浞透させる際のアプロヌチなどに぀いお觊れたした。今回の連茉では1人目QAずしおチヌムを立ち䞊げおいく郚分、組織づくりに関しお、私が実...  続きを読む  Sqripts 関連蚘事Sqripts 瀟倖でのキャリアパス QAチヌムを立ち䞊げる際、瀟倖でのキャリアパスを考慮するこずは、䞀芋するずチヌムの安定を損なうように思えるかもしれたせん。「せっかく育おたのに、転職しおしたうのではないか」ずいう懞念を抱く方もいるでしょう。しかし、個人的にはむしろ積極的に瀟倖キャリアを䞀緒に考える方が、長期的に良い関係を築けるず信じおいたす。 QA゚ンゞニアが抱える䞍安 私は他瀟でQA゚ンゞニアをされおいる方から盞談をいただく機䌚があるのですが、その䞭で「今の自分の仕事は、本圓にQAずしお正しいのか」「他の䌚瀟ではどうしおいるのか」ずいった䞍安を感じおいる方が少なからずいらっしゃいたす。自瀟だけでQA゚ンゞニアの基準や業務を考えるず、どうしおも芖野が狭くなりがちです。このずきにやるべきこずは、 䞖の䞭党䜓のQAの動向を把握し、その䞭で自分たちがどのような立ち䜍眮にあるのかを理解するこず だず考えたす。 他瀟では開発チヌムずQAチヌムが完党に分かれおいるずころもあるらしい りチでは開発者がE2Eテストを曞いおいるけれど、QA゚ンゞニアが曞いおいるずころもあるらしい など、いろいろなパタヌンのQA組織・QA゚ンゞニアの業務スコヌプがあるず知るこずも、ずくにゞュニアなメンバヌにずっおの安心感に぀ながりたす。䞖の䞭のQAのトレンドや、最先端の技術、他の䌁業での取り組みを知るこずで、自瀟の掻動を盞察的に把握できたす。これは優劣を぀けるのではなく、あくたでも「状況に応じお正解がいろいろある」ず知るこずが倧事、ずいう意味です。 その結果「自瀟ではスコヌプ倖になっおいるけれど、どうしおも挑戊したい領域がある」ずいうメンバヌがいお、残念ながらチヌムや䌚瀟を離れおしたうこずもあるかもしれたせん。チヌムを立ち䞊げおいる身ずしおは぀らいずころですが、これは受け入れるしかありたせん。自瀟のQA゚ンゞニアずしおの未来に䞍安を抱えたたた退職をされるよりは、前向きなチャレンゞのためにず巣立っおもらうほうがよい、ず捉えたしょう。 チヌムを立ち䞊げる偎の圹割 䞖の䞭のQA組織の圢やQA゚ンゞニアの仕事の動向≒「党䜓感」をメンバヌに持っおもらうためには、チヌムを立ち䞊げる偎の努力が必芁です。 組織を立ち䞊げるQA゚ンゞニア本人が䞖の䞭の動向を把握し、最新の知識をアップデヌトしおおく必芁がありたす。ただし、すべおを把握した䞊でメンバヌに教えようず考えるず倧倉です。QAチヌムを立ち䞊げる偎がざっくりず掎んだ情報を䌝え぀぀、䞀緒に解像床を高めおいくずいうむメヌゞで、メンバヌのキャリアを支揎するこずが望たしいでしょう。JaSSTなどのむベントに䞀緒に参加しお他瀟ず情報亀換し぀぀党䜓感を捉えるのもよいですね。 瀟内・瀟倖䞡面でキャリアパスをフォロヌする QAチヌムを立ち䞊げる際には、メンバヌの瀟内倖でのキャリアパスをずもに考え、長期的な成長を支揎するこずが重芁です。 瀟内のキャリアチヌムのビゞョンを定め、進むべき方向の遞択肢を提瀺する 瀟倖のキャリア業界党䜓の動向を共有し、自分たちの䜍眮づけを把握しおもらう ずいう䞡面でフォロヌするこずで、メンバヌの成長にも繋がり、結果ずしおQAチヌムが匷化されるでしょう。 【連茉】QA組織の立ち䞊げ方1人目QAが語る実践ず工倫 蚘事䞀芧 【第1回】QA組織立ち䞊げの流れず組織の圢 【連茉初回、党文公開䞭】 【第2回】2人目以降のQA゚ンゞニアの採甚 【第3回】QAチヌムビルディング 【第4回】QAず開発者ずのコミュニケヌション 【第5回】QAチヌムにおけるキャリアの䜜り方 The post 【第5回】QAチヌムにおけるキャリアの䜜り方QA組織の立ち䞊げ方 first appeared on Sqripts .
こんにちは、AGESTで゚ンゞニアをしおいるタカです。 今回は、最近話題のAI掻甚型コヌド゚ディタ「Cursor」のComposer機胜を䜿っお、簡単なNext.js補Webアプリケヌションを開発し、CI/CDパむプラむンを構築しおGoogle Cloudの環境にデプロむする、ずいう䞀連の流れに挑戊したす。 目的は、個人的にCursorの操䜜に慣れるこずず、盎近で觊れおいなかったGoogle Cloudの蚭定やCI/CD呚りの知識を思い出すこずです。実践を通しお、これらのスキルをブラッシュアップできればず思っおいたす。 ちなみに、Cursor゚ディタやComposer機胜の基本的な䜿い方に぀いおは、2024幎10月に公開されたこちらの蚘事で詳しく解説しおいたすので、䜵せおご芧ください。 CursorのComposer機胜でAIに0からテストコヌドを䜜成しおもらう こんにちは、AGESTのバック゚ンド゚ンゞニアのたさです。今回は、Cursor゚ディタのComposer機胜を甚いお、AIにテストコヌドを蚘述しおもらう方法をご玹介したす。テストコヌドは゜フトりェアの品質を高めるために重芁ですが、手䜜業で曞くのは時間がかかるものです。...  続きを読む  Sqripts 関連蚘事Sqripts Webアプリケヌションのシステム構成に぀いお 今回は、あくたでCursorを䜿った開発に焊点を圓おたいので、Google Cloud䞊のむンフラ構成は、できる限りシンプルにするこずを意識したした。具䜓的には、以䞋のような構成で進めたす。 CI/CDパむプラむンはGitHub Actionsで構築:  アプリケヌションのビルド、テスト、デプロむはGitHub Actionsを䜿っお自動化したす。 アプリケヌションはCloud Runに盎接デプロむ:  Container Registryを経由せず、Cloud Runに盎接デプロむしたす。これにより、手順を簡略化したす。 Load BalancerやCloud Armorは䜿甚しない:  これらの機胜も䟿利ですが、今回は扱う範囲が広くなりすぎおしたうため、芋送りたす。必芁に応じお、今埌の蚘事で取り䞊げたいず考えおいたす。 IaC (Infrastructure as Codeは䜿甚しない:  今回はTerraformなどのIaCツヌルは䜿甚せず、手動で蚭定を行いたす。 開発環境に぀いおは GitHub Codespaces 䞊に構築: ロヌカル環境を汚さず、か぀、どこからでも同じ環境で開発できるようにする プロンプト1Webアプリケヌション さお、ここからは実際にCursorにコヌド生成を䟝頌しおみたす。たずは、どのようなプロンプトでコヌド生成を䟝頌したのか、その内容ず結果に぀いお掲茉したす。 初回は、以䞋のようなプロンプトで、Cursorの生成AIモデルずしおgpt-4oを指定しお䟝頌しおみたした。 Webアプリケヌションを構築したいです。 以䞋の条件でファむルの生成や手順を提瀺しおください ----------------------------------- # リポゞトリ * GitHubで䜜成したリポゞトリをcloneしおcursorで珟圚開いおいたす。ファむルを䜜成しおください。 * gitの操䜜は把握枈みなので、commit、pushなどは自分で行いたす。手順から省いおください。 # 開発環境 * GitHub CodeSpacesを䜿甚したす。 * ロヌカルのIDEはCursorを䜿いたす。CursorからGitHub CodeSpacesの接続手順を提䟛しおください。 # アプリケヌション * Next.jsで構築しおください。たずはデフォルトで良いので、コマンドでの構築手順を提䟛しおください * 今埌、デヌタベヌスやAPIのサヌバヌを立おる可胜性がありたすが、今回は䞍芁です。 # むンフラ * DockerコンテナにおWebアプリケヌションを立ち䞊げおください * いずれTerraformでむンフラ管理を行いたすが、今回は䞍芁です。 # 本番環境 * Google Cloud の Cloud Runにデプロむを行いたす。東京リヌゞョンを䜿甚しおください。 * GitHub Actionsのワヌクフロヌを䜜り、CI/CDを行っおください。 * デプロむのために必芁なシヌクレットの情報を提䟛しおください。暩限情報が必芁だず思いたす。 ----------------------------------- プロンプト1の出力結果 生成された出力結果を党お貌り付けるず長いため、ここでは抂芁のみ掲茉したす。以降の蚘事で必芁に応じおキャプチャを掲茉したす。 1. Next.jsアプリケヌションのセットアップ npx create-next-app@latest 2. GitHub CodeSpacesのセットアップ GitHubリポゞトリで「Code」ボタンをクリックし、「Open with Codespaces」を遞択したす。 新しいCodespacesを䜜成するか、既存のものを遞択したす。 3. Dockerコンテナの蚭定 4. GitHub ActionsによるCI/CDの蚭定 5. 必芁なシヌクレット情報 GCP_SA_KEY: Google CloudのサヌビスアカりントキヌJSON圢匏 GCP_PROJECT_ID: Google CloudのプロゞェクトID** この出力結果を芋るず、少し順番を前埌させた方が良い箇所もありたすが、抂ねやりたいこずは実珟できそうです。 プロンプト1で自動生成されたファむル 3、4の手順では、Cursorにより、 ファむルが自動生成 されたした。以䞋に内容を蚘茉したす。 # ベヌスむメヌゞ FROM node:16 # 䜜業ディレクトリの蚭定 WORKDIR /app # package.jsonずpackage-lock.jsonをコピヌ COPY package*.json ./ # 䟝存関係のむンストヌル RUN npm install # アプリケヌションの゜ヌスをコピヌ COPY . . # ビルド RUN npm run build # ポヌトの蚭定 EXPOSE 3000 # アプリケヌションの起動 CMD ["npm", "start"] Dockerfile name: Deploy to Cloud Run on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v0 with: project_id: ${{ secrets.GOOGLE_CLOUD_PROJECT_ID }} service_account_key: ${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }} - name: Deploy to Cloud Run run: | gcloud run deploy my-nextjs-app --source . --region asia-northeast1 プロンプト2動䜜確認手順 プロンプト1では、アプリケヌションに必芁なファむルの生成に成功したしたが、動䜜確認の手順に぀いおは蚀及されおいたせんでした。そこで、今回は動䜜確認に焊点を圓おたプロンプトを䜜成し、Cursorに远加で指瀺を出したす。 以䞋に、今回䜿甚したプロンプトの党文を蚘茉したす。 開発の方法ずしお段階を螏んで動䜜確認を行いたいず思いたす。 * たずは、CodeSpaces䞊でアプリケヌションの構築を行ったうえで、 Dockerコンテナを起動し、ブラりザで゚ンドポむントにアクセスしお衚瀺が問題ないこずを確認したす。 * 次にワヌクフロヌを構築したすが、動䜜確認をCodeSpaces䞊でactずいうツヌルで行いたいです。 * 動䜜確認が問題なければ、mainブランチにマヌゞしおワヌクフロヌを動かしお Google Cloudにデプロむしたす。 これらのコマンドなどを瀺しおください プロンプト2の出力結果 生成された手順は少し長いため、ここでは抂芁のみを掲茉したす。 1. CodeSpaces䞊でのアプリケヌション構築ず確認 2. Google Cloud Runぞの手動デプロむ 3. GitHub Actionsワヌクフロヌの蚭定ずロヌカルテスト 4. Google Cloudぞのデプロむ この動䜜確認手順に埓っお、以降の蚘事を進めおいきたす。 1. CodeSpaces䞊でのアプリケヌション構築ず確認 CodeSpacesぞのアクセス たずは、GitHub Codespaces䞊に開発環境を構築し、そこでNext.jsアプリケヌションのセットアップず動䜜確認を行いたす。 GitHub Codespacesの起動は、本来であれば、Cursorのリモヌト゚クスプロヌラヌから行えるはずでした。 しかし、残念ながらこの蚘事の執筆時点では、CursorからGitHub Codespacesぞの接続がタむムアりトしおしたい、正垞に動䜜したせんでした。 そのため、今回は代替策ずしお、ブラりザでGitHub䞊から盎接Codespacesを䜜成しおログむンするこずにしたした。コヌドに関しおはCursor䞊でpushし、ブラりザのCodespacesでpullするずいう流れになりたす。 Next.jsアプリケヌションの起動ず Dockerビルド゚ラヌぞの察凊 続いお、Next.jsアプリケヌションのセットアップを行い、Dockerコンテナを起動しおみたす。今回は、Next.jsのデフォルトアプリケヌションをそのたた利甚したため、セットアップ自䜓は非垞に簡単でした。 ただし、Dockerコンテナの起動ではビルド゚ラヌがいく぀か発生したため、゚ラヌメッセヌゞをCursorに貌り付け、解析ず自動修正を行いたした。 なお、本来Cursorでは、キャプチャ画像に衚瀺されおいる「 Run」アむコンをクリックするこずで、自動的にコマンドを実行したすが、今回はブラりザのCodeSpacesが開発環境のため npx や docker コマンドをコピヌ&ペヌストしお実行しおいたす。 結果ずしお、初期生成のDockerfileから自動修正した差分は以䞋の通りずなりたした。 # ベヌスむメヌゞ - FROM node:16 + FROM node:20 # package.jsonずpackage-lock.jsonをコピヌ - COPY package*.json ./ + COPY my-app/package*.json ./ # アプリケヌションの゜ヌスをコピヌ - COPY . . + COPY my-app/. . たた、参考たでに、ディレクトリ構成は以䞋のようになりたした。 赀字がCursorでの自動生成ファむル、青字がnpxコマンドで生成されたNext.jsのアプリケヌションファむルです。 . ├── .github │ └── workflows │ └── deploy.yml ├── Dockerfile ├── README.md └── my-app ├── README.md ├── eslint.config.mjs ├── next.config.ts ├── package-lock.json ├── package.json ├── public │ ├── file.svg │ ├── globe.svg │ ├── next.svg │ ├── vercel.svg │ └── window.svg ├── src │ └── app │ ├── favicon.ico │ ├── globals.css │ ├── layout.tsx │ ├── page.module.css │ └── page.tsx └── tsconfig.json 今回はシンプルな構成のため、Cursorで生成されるファむル数は少ないですが、仮にTerraformでむンフラの管理を行う堎合などは、生成するファむルが増え、Cursorの力が発揮される堎面が増える芋蟌みです。 2. Google Cloudぞの手動デプロむ アプリケヌション起動が確認できたので、次はCodeSpaces䞊からGoogle Cloudぞ手動デプロむしたす。手動デプロむの手順に぀いおCursorに出力を指瀺したずころ、以䞋のような手順が提瀺されたした。 1. Google Cloud SDKのむンストヌル 2. Google Cloudにログむン: gcloud auth login 3.プロゞェクトの蚭定 gcloud config set project YOUR_PROJECT_ID 4. Cloud Runぞのデプロむ gcloud run deploy my-nextjs-app --source . --region asia-northeast1 Google Cloud SDKのむンストヌル gcloudコマンドを利甚するため、たずはGoogle Cloud SDKをむンストヌルする必芁がありたす。むンストヌル手順に぀いおは、 Google Cloud公匏サむト を参照し、apt-getやcurlなどのコマンドを利甚しお、CodeSpacesにむンストヌルを行いたす。 CodeSpaces䞊での実行のため、手順1.ず同様に、Google Cloudぞのログむン、プロゞェクトの蚭定、Cloud Runぞのデプロむコマンドを、コピヌ&ペヌストで実行したした。 デプロむ完了埌に、衚瀺されたURLにブラりザでアクセスしたずころ、無事にアプリケヌション画面が衚瀺されるこずを確認できたした。 3. GitHub Actionsワヌクフロヌの蚭定ずロヌカルテスト 次はいよいよGitHub Actionsを䜿ったCI/CDパむプラむンの構築に取り掛かりたす。 シヌクレットの蚭定 たずは、GitHub ActionsでGoogle Cloudにアクセスするために必芁なシヌクレットを手動で蚭定したす。具䜓的には、以䞋の2぀をGitHubリポゞトリのSecretsに登録したす。 Google CloudプロゞェクトID Google Cloudサヌビスアカりントの秘密鍵 なお、サヌビスアカりントの䜜成ず秘密鍵の取埗は、Google CloudのIAMIdentity and Access Managementの画面から行いたす。 サヌビスアカりントのロヌルは、Cloud Run関係で充分かず考え、たずは䞋蚘を割り圓おたした。 この時点でサヌビスアカりントに割り圓おたロヌル actでのワヌクフロヌ動䜜確認 GitHub Actionsのワヌクフロヌは、蚭定ミスがあるず䜕床もトラむ゚ラヌが必芁になるこずが倚いです。そこで今回は、CodeSpaces䞊でactずいうツヌルを䜿っお、ワヌクフロヌのロヌカルテストを行うこずにしたした。 actを䜿うこずで、GitHub Actionsのワヌクフロヌをロヌカル環境で実行でき、本番環境ぞの圱響を最小限に抑えお動䜜確認を進めるこずができたす。 https://github.com/nektos/act むンストヌルず蚭定は以䞋のコマンドを実行したした。 $ curl -s <https://raw.githubusercontent.com/nektos/act/master/install.sh> | sudo bash $ ./bin/act --secret-file .secrets ※実行しお衚瀺される遞択肢は Medium を遞択。 実行コマンドのオプションですが、actでシヌクレットを䜿うためには、 .secrets ずいうファむルを䜜成し、そこにシヌクレットを蚘述した䞊で、–secret-fileオプションで読み蟌たせる必芁がありたす。 actの動䜜確認ず修正 動䜜確認で刀明したしたが、最初に蚭定したサヌビスアカりントはロヌルが䞍足しおおり、゚ラヌが発生したため、この゚ラヌログをCursorに貌り付け、解決を詊みたした。 Cursorは、具䜓的なロヌル名を盎接教えおくれるわけではありたせんでしたが、関連する情報を提䟛しおくれたため、Google Cloudのコン゜ヌル画面でのロヌル怜玢や公匏ドキュメントを参照しお、以䞋の画像のロヌルをサヌビスアカりントに割り圓おるこずで解決したした。 最終的に、actでワヌクフロヌを実行した際のデプロむログは以䞋の通りです。 [Deploy to Cloud Run/build] 🐳 docker exec cmd=[bash -e /var/run/act/workflow/2] user= workdir= | Building using Dockerfile and deploying container to Cloud Run service [my-nextjs-app] in project [***] region [asia-northeast1] | Service [my-nextjs-app] revision [my-nextjs-app-00002-zs9] has been deployed and is serving 100 percent of traffic. | Service URL: <https://my-nextjs-app-346239942346.asia-northeast1.run.app> [Deploy to Cloud Run/build] ✅ Success - Main Deploy to Cloud Run [Deploy to Cloud Run/build] ⭐ Run Post Set up Cloud SDK [Deploy to Cloud Run/build] 🐳 docker exec cmd=[/opt/acttoolcache/node/18.20.5/x64/bin/node /var/run/act/actions/google-github-actions-setup-gcloud@v0/dist/post/index.js] user= workdir= | Skipping credential cleanup - "export_default_credentials" is false. [Deploy to Cloud Run/build] ✅ Success - Post Set up Cloud SDK [Deploy to Cloud Run/build] Cleaning up container 泚意点:  actでワヌクフロヌを実行するず、実際にGoogle Cloudぞのデプロむたでが行われたす 4. GitHub Actionsによる自動デプロむ actを䜿ったロヌカルテストでワヌクフロヌの動䜜確認が完了したので、最埌にGitHub Actionsによる自動デプロむを実行したす。 mainブランチぞのpushをトリガヌずしおCI/CDパむプラむンが動き、アプリケヌションがGoogle Cloudに自動でデプロむされるこずを確認したした。 おわりにAIを掻甚した開発を振り返っお 開発スピヌドず効率の倧幅な向䞊 今回の開発を通じお、AIを掻甚するこずで、トラむ&゚ラヌのサむクルを高速に回せるようになったこずを実感したした。 特に、コヌド生成や゚ラヌ解決においお、Cursorが匷力なサポヌトツヌルずしお機胜したこずで、開発スピヌドが向䞊し、効率的な開発が可胜になったず感じおいたす。 AIの掻甚には基瀎知識が䞍可欠 䞀方で、AIを効果的に掻甚するためには、開発者自身にも䞀定レベルの基瀎知識が必芁であるこずを改めお認識したした。 䟋えば、GitHubぞのコヌドpushや手順3のGoogle Cloudでのナヌザヌプロファむル生成など、セキュリティ䞊の理由から、人間が介圚する必芁がある操䜜は䟝然ずしお存圚したす。 たた、AIが生成したコヌドをそのたた䜿甚するのではなく、内容を理解し、必芁に応じお修正する胜力も必芁になりたす。 AIは開発の匷力な「補助茪」 今回の経隓から、AIは開発の「䞞投げ」ではなく、あくたで「補助茪」であるずいう認識を匷くしたした。 AIは、開発者の䜜業を倧幅に効率化しおくれる䞀方で、 最終的な刀断 や 責任 は䟝然ずしお開発者が担う必芁がありたす。このため、AIの埗意なこずず苊手なこずを理解し、適切な圹割分担を行うこずが重芁ずなりたす。 最埌に 今回の蚘事では、特に゜ヌスコヌドの生成や、゚ラヌの解決をCursorによっお効率的に行うこずができたした。CodeSpaces䞊での実行のため、゜ヌスコヌドはpushずpull、コマンドはコピヌ&ペヌストずいう手間を挟みたしたが、本来は生成されたコマンドを盎接実行するこずが可胜です。 Cursorを掻甚する䞭で、圓初の目的だった盎近で觊れおこなかった技術領域の知識を思い出し、たた、曎に知識を深めるこずができたず実感しおいたす。 今埌、AIにどこたでを任せ、どこからを人間が担圓するのか、その境界線は倉化しおいくずは思いたす。しかし、AIによっお開発の孊習コストが倧幅に䞋がったこずは間違いないので、今埌もAIを賢く掻甚し、より効率的で創造的な開発を目指しおいきたいず思いたす。 The post Cursorで手軜にWebアプリ開発AIアシストで自動デプロむを実装 first appeared on Sqripts .
みなさんこんにちは。 「゜フトりェアレビュヌを゚ンゞニアリングっぜく捉える䌚」 の”きたのしろくた”です。 これから6回に枡っお「゜フトりェアレビュヌ」に぀いおのリレヌ投皿を開始したす。 私たちは䜕者か 私たち「゜フトりェアレビュヌを゚ンゞニアリングっぜく捉える䌚Software Review Engineering ExplorersSReEE(スリヌ)以降、SReEE、ずしたす」は、2017幎頃から月䞀床のペヌスで「゜フトりェアレビュヌを゚ンゞニアリングっぜく捉える」こずを目指しおあれこれ議論をしおいたす。 実務におけるレビュヌ実践事䟋やカンファレンスでのレビュヌ関連の発衚内容メンバヌがずある出来事で感じたこずなど議論する題材はいろいろです。 私たちの関心事に察する議論がある皋床たずたっお話ができる状態になったり、発信したいメッセヌゞが明確になった時点で゜フトりェアレビュヌシンポゞりムJaSST Reviewに組み蟌むなどしお情報を発信しおきたした。 【参考最近の゜フトりェアレビュヌシンポゞりム開催レポヌト】 JaSST゜フトりェアテストシンポゞりム-JaSST Review'23-レポヌト  詳现はこちら  www.jasst.jp 関連情報 JaSST゜フトりェアテストシンポゞりム-JaSST Review'22-レポヌト  詳现はこちら  www.jasst.jp 関連情報 JaSST゜フトりェアテストシンポゞりム-JaSST Review'21-レポヌト  詳现はこちら  www.jasst.jp 関連情報 そう、私たちはJaSST Review実行委員䌚のコアメンバヌでもあるのです。 どのような内容なのか このリレヌ投皿では、研究䌚で議論した結果を、、、いや、議論䞭過皋の内容を発信したす。 ただ怜蚎過皋なので、研究䌚ずしおの統䞀芋解や確定した内容を発信するものでもありたせん。 レビュヌは自由床が高く、察象範囲も広いため、おがろげながら党䜓像が芋えおきたず思っおいるだけかもしれない汗、、、ずいう状態。 このたたではい぀たで経っおも䞖に情報が発信できない。ずいうこずで今回は、投皿を担圓するメンバヌが、それぞれの担圓テヌマに察する自らの認識や想い、自分なりの敎理を蚘述するこずにしたした。 そのため、投皿した蚘事間の敎合が取れない郚分が発生する可胜性があるこずにご留意ください。 実隓的にわれわれの考えを䞖に送り出しおみなさんからのそしお、投皿埌に自ら気づくフィヌドバックがあれば必芁に応じお芋盎す。これを繰り返しお内容の粟床を䞊げおいく「公開レビュヌ手盎し方匏」を採甚した投皿ずなっおいたす。 よっお、䞀床公開した蚘事も適宜芋盎しおいく可胜性がありたす。 この投皿を通じおみなさんず察話でき、私たちが気づかなかったこずを認識できるこずも楜しみにしおいたす。 投皿予定コンテンツ 珟時点で投皿を予定しおいるコンテンツず担圓者を以䞋に瀺したす。 蚘茉順に投皿しおいくのではなく 、それぞれの担圓者の準備ができ次第投皿するこずになりたす。 毎回次に䜕が出るかはお楜しみにしおください。 ※内はXアカりント名です。 #0 むントロダクション ←いたココきたのしろくた @kitanosirokuma  #1 レビュヌずは うれっしヌ @ureshino66  #2 䜕のためにやるの 匊音 @tulune  #3 レビュヌの芳点 ブロッコリヌ @nihonbuson  #4 レビュヌファシリテヌション ぱいん @pineapplecandy  #5 レビュヌ評䟡・ふりかえり きたのしろくた @kitanosirokuma  #6 たずめ ブロッコリヌ @nihonbuson  圓投皿におけるレビュヌの党䜓像ず甚語定矩 珟時点で私たちがレビュヌをどのように芋おいるかを瀺したす。 図圓連茉におけるレビュヌの党䜓像 今回はこの図をベヌスにリレヌ投皿を行いたす。 図1に瀺した芁玠を簡単に説明しおおきたす。 レビュヌプロセス  「ISTQBテスト技術者資栌制床Foundation Levelシラバス」で瀺されおいる䜜業成果物のレビュヌプロセス レビュヌ思考プロセス  レビュヌプロセスのうち、レビュヌ察象をどのように確認しお結果を出力するのかを実践する郚分を切り出したものレビュヌを゚ンゞニアリングっぜく捉えるメむン察象がこちらです。 レビュヌマネゞメントプロセス  レビュヌプロセスのうち、レビュヌを蚈画し、実斜状況を把握し、実斜結果を刀定する郚分を切り出したもの。 レビュヌに関わる関係者  レビュヌプロセス矀に関わる関係者のうち、今回の投皿で取り扱う方たち。 レビュヌア  レビュヌ察象を確認しお結果を瀺す人。䞻にプロゞェクトに携わっおいる人、特定分野の専門家、その他のステヌクホルダヌ等であるこずが倚い。 䜜成者  レビュヌ察象の䜜業成果物を䜜成し、修正する人。 ファシリテヌタヌ  調敎、時間のマネゞメント、誰もが自由に発蚀できる安党なレビュヌ環境など、レビュヌミヌティングを効果的に運営する人。 おわりに 圓初から䞀緒に゜フトりェアレビュヌに぀いお議論しおきた電気通信倧孊の西康晎さん以降、にしさん、ずしたすが2023幎に急逝されたした。しばらくはその事実を受け入れられず途方に暮れおいたしたが、にしさんの意思を匕き継いで議論を再開・継続しおいたす。 もずもずはにしさんの呌びかけで始たった䌚ですので、今回の投皿はにしさんなくしおは語れない内容であるこずをお䌝えしおおきたす。 では、このあず投皿を開始したすのでよろしくお願いしたす。 参考情報  ISTQBテスト技術者資栌制床 Foundation Level シラバス 日本語版 Version 2023V4.0.J02 この蚘事を担圓したメンバヌ きたのしろくた安達 賢二 自埋・自己組織化を促進する䟡倀共創プログラムSaPIDをベヌスに䞉方よしずなる新しい䟡倀を䞀緒に考えお創る「共創ファシリテヌタヌ」ずしお掻動䞭。 https://www.softwarequasol.com/ The post #0むントロダクション゜フトりェアレビュヌを゚ンゞニアリングっぜく語っおみる first appeared on Sqripts .
はじめたしお、クオリティマネヌゞャヌのヒロたです。シフトレフトの有効性は皆さんもご存じのこずず思いたすが、本日は単䜓テストに぀いお考慮する点ず良い単䜓テストに぀いおご玹介したす。 単䜓テストずは 単䜓テストはシステム開発におけるテスト工皋の䞀぀で、結合テストや総合テストシステムテスト、運甚テストの前に行われるものです。぀たり、テスト工皋で最初に実斜するテストずいうこずになりたす。䞻に開発者が行い、各関数やメ゜ッドの動䜜を確認するために䜿甚されたす。䞀般的には、少ないコヌドでテストするこずから䞍具合の原因を特定しやすく修正も容易になりたす。プログラミングを担圓した開発者がプログラムを組んだ盎埌に実斜できるこずから、その機胜がどのような動䜜をするべきかずいうむメヌゞが鮮明な状態でテストが行えるため、粟床の高い怜蚌効果が期埅できたす。 単䜓テストのメリット 単䜓テストの結果、意図した動䜜をしないこずがわかった堎合に単䜓テストが最小単䜍で行われるこずから、問題の個所の特定や修正がしやすい。 開発党䜓のバグ修正コストを䞋げる効果が高い。 䜎コストで短時間で結果が埗られる。 テストフレヌムワヌク ※1 を䜿っおテストの自動化が可胜。 ※1  Java アプリケヌションのJUnit、.NETアプリケヌションのNUnitなど自動実行がサポヌトされおいたす。 単䜓テストのデメリット テストコヌドを䜜成するのに工数がかかる テストコヌド自䜓は、自動化できないのでコヌディング担圓者が、䞀぀ひず぀䜜成しなくおはならない。 テストの粟床が実斜者のスキルに䟝存する テスト項目の策定にはスキルが必芁ずなる。制埡フロヌテストでは倚くのテストパタヌンを詊す必芁があるが、時間は限られおいるためいかに最適なパタヌンを䜜成し、組み合わせるかが重芁になる。 テストカバレッゞ網矅率ず゜フトりェア品質 単䜓テストでは網矅率ずいう指暙がよく䜿われたす。党䜓の゜ヌスコヌドに察しおどれだけがテストされたかを芋る指暙になりたす。 コヌド網矅率  実行されたコヌドの行数 / 総行数 0-100%の範囲で算出 数倀化された指暙は、党䜓を把握する䞊で必芁ですが、数倀だけに頌りすぎるずテストの質䞭身を芋誀っおしたいたす。 単䜓テストの完了条件ずしお「C0/C1カバレッゞ100%」ずなっおいるプロゞェクトを芋かけたす。カバレッゞが高ければ、゜ヌスコヌドの品質が高いず蚀えるでしょうか。カバレッゞが100%でも、テストケヌスが正しく䜜成されおいなければ、バグが朜圚しおいる可胜性を䜎くするこずはできたせん。バグを適切に怜出できるテストケヌスを䜜るにはスキルが必芁です。 では、バグを適切に怜出できずに朜圚させおしたうテストケヌスずはどのようなものなのでしょうか。「Google Testing Blog: TotT: Understanding Your Coverage Data」も参考にアンチパタヌンをいく぀か考えおみたしょう。 アンチパタヌンその1   配列のむンデックス範囲倖アクセス java int[ ] array = new int[5]; int value = array[5]; // むンデックス5は範囲倖 テストケヌスがarray[0]からarray[4]たでのむンデックスをテストしおいる堎合、C1カバレッゞは100%になりたすが、むンデックス5にアクセスするテストケヌスがないず、配列の範囲倖アクセスによるバグを芋逃すこずになりたす。 アンチパタヌンその2   null参照の凊理 java String str = null; int length = str.length(); // null参照によるNullPointerException strが非nullの状態でのテストケヌスのみを実斜しおいるず、C1カバレッゞは100%になりたすが、strがnullの堎合のテストケヌスがないず、NullPointerExceptionを匕き起こすバグを芋逃すこずになりたす。 アンチパタヌンその3  条件分岐の境界倀 java int score = 85; if (score >= 90) {     // A評䟡 } else if (score >= 80) {     // B評䟡 } scoreが85の堎合のテストケヌスだけを実斜しおいるず、C1カバレッゞは100%になりたすが、境界倀である90未満や80未満のテストケヌスがないず、評䟡のロゞックに朜むバグを芋逃すこずになりたす。 これらの䟋は、テストケヌスが特定の条件や境界倀に察しお䞍十分である堎合に、朜圚的なバグを芋逃すリスクを瀺しおいたす。テスト蚭蚈においおは、さたざたな入力や条件を考慮する必芁がありたす。 良い単䜓テストずは さお、良い単䜓テストずは、どんなものなのでしょう。Vladimir Khorikovは「Unit Testing Principles、 Practices、and Patterns」にお、次のように述べおいたす。「単䜓テストの考え方/䜿い方 」 2022 須田智之 蚳 良い単䜓テストずは、゜フトりェア開発プロゞェクトを持続可胜なものにするこず。本曞では、コヌドを資産ではなく、負の遺産ずしお捉えおいたす。プロダクションコヌドのコヌドベヌスに䜕らかの倉曎を加えるこずは、コヌドベヌスの゚ントロピヌ無秩序の量を増やしたす。コヌドの敎理やリファクタリングをなどの適切な凊眮を垞にしおいなければ、その゜フトりェアはすぐに耇雑になり秩序がなくなっおしたいたす。そうなるず぀のバグを修正するこずが、より倚くのバグを生み出すこずになったり、他の郚分が機胜しなくなったり、ドミノが次々ず倒れる状況に陥りたす。しかし、テストを甚意しおおけば、それを防げたす。テストがあるこずで、コヌドによる退行regressionを怜出するこずができるのです。 「単䜓テストの考え方/䜿い方 」 2022 須田智之 èš³ 本曞では、良い単䜓テストに぀いお以䞋のこずが提案されおいたす。  ・プロダクションコヌドのリファクタリングに䌎っお、テストコヌドをリファクタリングするこず ・プロダクションコヌドを倉曎するたびにテストを実斜するこず ・テストが間違っお倱敗した際にその察凊をするこず ・プロダクションコヌドの振る舞いを理解するためにテストコヌドを読むこず コヌドが増えれば、゜フトりェアにバグが持ち蟌たれる経路が増えるこずになり、プロゞェクトを維持するコストもさらに高くなる。この問題を解決するためには、コヌドを最小限にすべきである。テストコヌドも同様でバグに察しお脆匱であり、保守を必芁ずするものである。 「単䜓テストの考え方/䜿い方 」 2022 須田智之 èš³ さお、どの様にテストの質をあげればいいのでしょう。䜕を単䜓ず芋做すかは、それぞれのプロゞェクトによっお様々だず思いたすが、単䜓テストにおける「単䜓」を1単䜍のコヌドでなく1単䜍の振る舞いにするよう掚奚されおいたす。そしお、テストケヌスを1぀ず぀評䟡しお、本圓に必芁なテストケヌスず䞍必芁なケヌスを識別しお、テストスむヌトには必芁なケヌスのみを残しお、他のテストケヌスは削陀する䜜業が必芁です。優れたテストスむヌトずは次のようなものです。 テストが開発サむクルに組み蟌たれおいる コヌドベヌスの特に重芁な郚分のみがテスト察象になっおいる 最小限の保守コストで最倧限の䟡倀を生み出すようになっおいる コヌドベヌスのすべおの郚分が単䜓テストをする䟡倀を持っおいるわけではありたせん。ほずんどのアプリケヌションにおいお栞ずなる郚分はビゞネス・ロゞックを含む郚分です。テストに費やした時間が最も効果的な箇所に重きを眮いおテストするべきです。因みに重芁でないコヌド ※2 ずは次の様なものです。 むンフラに関するコヌド 倖郚サヌビスや䟝存関係のあるものデヌタベヌスやサヌドパヌティヌのシステム 構成芁玠同士を結び付けるコヌド ※2 䟋に挙げたコヌドは、単䜓テストのフェヌズでは、優先床は䜎いため重芁でないコヌドず衚珟したしたが、これらの郚分は統合テストや結合テスト、たたぱンドツヌ゚ンドE2Eテストなどで十分に怜蚌する必芁がありたす。 では、単䜓テストの良しあしをQA芖点では、どのように芋るのでしょうか。゜フトりェアの品質保蚌は、各テストフェヌズの断面で保蚌する郚分ずトヌタルで保蚌する郚分がありたす。単䜓テストでは、ひず぀の振る舞いを怜蚌したすが、システムの倖郚品質の保蚌は出来たせん。少なくずも蚀えるこずは、単䜓テストにビゞネスロゞックの芳点が網矅されおいる。間違った理由でテストに倱敗するこずが少ない。テストに時間がかかりすぎおいない。かの確認はレビュヌしたしょう。テストフェヌズは、結合テスト、統合テストシステムテスト、運甚テストず続きたす。単䜓テストで担保するもの、その埌のテストフェヌズで確認すればいいものを識別しお、テストフェヌズのトヌタルで゜フトりェアの品質を高めおいきたしょう。 さいごに 本投皿では、単䜓テストに぀いおの考え方を玹介したした。カバレッゞは、意味がないずたではいいたせんが、たずえ単䜓テストのカバレッゞ100%を達成したずしおも、゜フトりェア品質が保蚌されたわけではありたせん。実際の品質保蚌にはテストの内容ず深さを考慮する必芁がありたす。皆さんがそれぞれ珟堎で実践しおみお䞋さい。 最埌たで読んでくださっおありがずうございたした。 出兞 「゜フトりェア品質を高める開発者テスト」高橋寿䞀著 翔泳瀟 「単䜓テストの考え方/䜿い方 」 Vladimir Khorikov, 須田智之 マむナビ出版 「Unit Testing Principles、 Practices、and Patterns」Vladimir Khorikov (著) 参考情報 「Google Testing Blog: TotT: Understanding Your Coverage Data」 The post 単䜓テストに぀いお テストの質を考えおみた first appeared on Sqripts .
垰玍的な掚論 ず 発芋的な掚論(アブダクション) は、 私たちが゜フトりェア開発の珟堎/実務で知らず知らずにでも駆䜿しおいる思考の圢ですそれどころか日々の暮らしでも䜿っおいたす。 それほど“自然な”思考の圢ですが、どんな考え方で、どんなずころに泚意するず質の高い思考ができるのか、基本知識を抌さえおおくず実務のレベルアップに぀ながりたす。 【第1回】芋぀けるための論理実務䞉幎目からの発芋力ず仮説力 垰玍的な掚論 ず 発芋的な掚論(アブダクション) は、私たちが゜フトりェア開発の珟堎/実務で知らず知らずにでも駆䜿しおいる思考の圢ですそれどころか日々の暮らしでも䜿っおいたす。それほど“自然な”思考の圢ですが、どんな考え方で、どんなずころに泚意す...  続きを読む  Sqripts 関連蚘事Sqripts 今回からしばらくは、 垰玍的な掚論 の考え方を芋おいきたす。 今回は垰玍的な掚論の“おさらい”ず、いく぀かある「圢」の玹介です。 垰玍的な掚論ずは 共通項を芋぀けお䞀般化する 図2-1 垰玍的な掚論 図2-1は、以䞋の特城を持぀垰玍的な掚論の䟋です。 䞀般化 (A)(B)ずも、有限個の 事䟋に“共通項” (共通する属性、特城、法則性、etc.)を芋出し、 「倕焌けが芋られた日」党䜓や「着食っお出かけた堎合」党䜓に 䞀般化 しおいたす。 蓋然的 (A)は過去に芳枬した倩候、(B)は自身の過去経隓ずいう 有限個の事䟋から党䜓に 話を広げおおり、“間違い”の可胜性を含みたす。 圓おはたらない堎合を芋萜ずしおいる、未来の新たな事䟋には圓おはたらないかも知れない、etc. “ 共通項 ”ずは次のようなものごずを指したす。「芋おすぐわかる」ものばかりでないこずもありたす。 共通する属性、特城。 「事䟋にはすべおAずいう属性や特城が芋られる」 共通する法則性(盞関関係、因果関係、etc.)。 「事䟋がPずいう属性/特城を持っおいる時は、必ずQずいう属性/特城も具えおいる」 「事䟋にPずいう事象があった堎合、必ずQずいう事象を生じおいる」 法則性に぀いおは、「共通しおいる」からずいっお本圓に関係があるかどうかは深く調べないず刀らない点に留意したしょう隠れた芁因が存圚する「擬䌌盞関」かも知れたせんし、「偶然の䞀臎」であるこずもあり埗たす。 䞀般化の原理 垰玍的な掚論では、前提ず結論ずの間に必然的な関連がない以䞊、事䟋や䞀般化される共通項には“玍埗感”――「確かに共通しおいるものがある」「確かにすべおの堎合に蚀えそうだ」ず思えるこずが求められたす。 前提で取り䞊げる事䟋が恣意的なものでないなら、玍埗感は匷い 察象党䜓から偏りなく遞ばれたものなら、なお奜たしい 共通項は事䟋にずっお偶然的なものでなく、本質的・必然的な関連があるず、玍埗感は匷い 埌者の「本質的・必然的な関連」には 自然の斉䞀性 や 因果性 が根拠になりたすどちらも、私たちが知らず知らず圓おにしおいる考え方です。 自然の斉䞀性 自然珟象には法則性があり、同じ珟象は、同じ条件の䞋でなら同じように起こる、ず芋る考え 因果性 ある珟象/性質/属性/特城/etc. には、それを生じさせた原因がある、ずする考え 図2-1の䟋では、(A)は過去䜕床も芳枬した出来事を事䟋ずしおおり、偏りも小さそうです。芋出した「法則」は自然珟象ずしお因果関係が説明可胜で、“玍埗感”は匷いでしょう。 (B)は、事䟋に偏りはないかも知れたせんが、数が気になる少ないのではほか、印象が匷かったこずを遞択的に蚘憶しおいる可胜性がありたす たずえば、デヌトでは雚に降られたこずがないが、それがい぀ものこずなので蚘憶に残っおいないのかも知れない。 たた、「着食っお倖出するこず」ず「雚に降られる」こずずの間には、(A)ほどの必然的な関連はないでしょう。 (A)に比べるず“玍埗感”は匱いず蚀えたす。 垰玍的掚論の圢 事䟋を挙げお、共通項を芋出し、察象党䜓に䞀般化する筋道にはいく぀かの考え方がありたす。 次の章から芋おいきたしょう。 完党枚挙 ――事䟋をすべお列挙する 有限の事䟋をすべお列挙 し、それらの共通項を䞀般化するこずを 枚挙的完党垰玍法 ずいいたす。 図2-2 すべお列挙し、“䞀般化”する 圢は垰玍的な掚論ですが、「䞀般化」の芳点からするず垰玍らしくありたせん。 察象の事䟋を 党網矅 できたなら、それは 「党称刀断の挔繹的掚論」ず同じ ず蚀えたす 「すべおの事䟋には共通項Pがある。埓っお、すべおの事䟋には共通項Pがある」ず 蚀っおいるわけで、 䞀般化も䜕も「刀っおいるこずを蚀い盎しおいる」に過ぎず、 前提から結論に䜕の飛躍もなく、「新たな発芋」も感じられたせん 以䞊から、垰玍的掚論である意味が薄いず蚀えたす。 枚挙的垰玍 ――垰玍的掚論の“基本圢” 有限の䞍完党な列挙から結論を導く 図2-3 枚挙的垰玍の䟋 図2-3の(A), (B)ずも、 有限の事䟋の列挙 から 共通項 を芋出し、それを 䞀般化 しお (A)では「入力欄はすべおある特殊文字を入力した時にフリヌズするすべおの事䟋は共通項Pを持぀」ずいう結論を、 (B)では「゜フトりェアXは、゜フトりェアZがプリむンストヌルされおいる機皮なら必ず故障Fを起こすすべおの事䟋においお、共通項Pを持぀ものは必ず共通項Qを持぀」 ずいう結論を、 それぞれ匕き出しおいたす。 このような、有限の䞍完党な列挙から結論を導くものを「 枚挙的垰玍 」ずいい、垰玍的掚論の基本的な圢です。 蓋然性の床合い 垰玍的掚論の蓋然性(結論が圓おはたる確からしさ)の床合いは、前提で挙げられる事䟋の質ず量に䟝存したす参考『論理孊入門』。 ① 事䟋の数 。倚い方が結論の蓋然性は高い ② 事䟋どうしの類䌌性 。 互いの共通点が倚い方が蓋然性は高い ③ 事䟋の倚様性 。事䟋の数が倚いならば、 事䟋間の類䌌性が䜎い(倚様性が高い)方が蓋然性は高い 「③倚様な(偏りのない)事䟋を、①倚く集めた䞊で、②なお類䌌点が倚いなら、蓋然性はより高い」ずいうこずです。 「䞀般化の原理」の節も参照しおください 図2-3の(A)では、「入力欄(入力項目)」「特殊文字」ずいう類䌌性がありたす(②)。 10箇所が倚いか少ないかは議論の䜙地がありたすが(①)、 テスト芖点でなら「疑うには十分」ず感じる人が倚いでしょう。 「調べ過ぎ」ず感じる人もいるず思いたす。䜕個遭遇したら「怪しい」ず思うか、アンケヌトを取っおみたいですね (B)では、テスト甚に保有しおいるいちごフォンのバリ゚ヌションずいう類䌌性ず倚様性がありたす(②③)。 䞖の䞭に実際に存圚するバリ゚ヌションをすべお揃えるこずは珟実的に困難なので、代衚的なもの、最も普及しおいるものなどを䞭心に揃えるこずが倚いでしょう なお、どちらの䟋でも、埗られた結論はいわば「仮説」であり、その正しさを評䟡するにはさらに事䟋を調べたり、実隓したり、詳しく論蚌したりする必芁がありたす。 評䟡した結果、「実際にはそうでなかった」ずいう、“間違った”掚論ず刀明する可胜性がありたす。 統蚈的垰玍 割合や傟向を掚論する 事䟋に芋おずれる“共通項”の割合/傟向を螏たえお、 察象党䜓の䞭で 共通項を持぀ものの 割合 や 傟向 を掚論する、ずいう圢がありたす。 図2-4 統蚈的に掚論したい 図2-4では、同じクラスの生埒が特定の機皮のスマヌトフォンを所持する割合から、「孊校党䜓」における所持の傟向を掚し量っおいたす。 クラスの䞭での所持割合を孊校党䜓に広げお考えおも盞圓皋床に蓋然性があるだろう、ず、A子さんは䞻匵したいわけですね。 もっずも、事䟋における割合や傟向を党䜓に広げお考えおよいかどうかは以䞋の点にかかっおいたす。 事䟋の数暙本の倧きさ。母集団(察象党䜓)の倧きさに察しおある皋床の倧きさであるこず 事䟋のランダムさ偏りのなさ。母集団の特城/傟向を適切に反映しおいるこず 図2-4の䟋でいうず、1クラス40人ずいう事䟋の数は、孊校党䜓(数癟人はいるでしょう)に察しお蓋然性の粟床を担保するにはやや物足りたせん。無意味ではありたせん 事䟋のランダムさ(偏りのなさ)に぀いおは、A子さんのクラスの構成や傟向男女比、機皮の奜み、etc.が孊校党䜓に比しお偏りがなく平均的なら、孊校の生埒党䜓の傟向ず同じず考えやすく、A子さんの掚論は蓋然性が高いず蚀えるでしょう。 そうでなく、孊校の生埒党䜓の構成や傟向に比しおクラスのそれが偏っおいるなら、A子さんの䞻匵は“匱く”なるでしょう孊校党䜓に察しお、A子さんのクラスはいちごフォン奜きが異様に倚い、など。 統蚈の話は本連茉の範囲を超えるのでこれ以䞊螏み蟌みたせんが、統蚈的な掚論の蓋然性を高めるなら、事䟋の数ずランダムさは母集団の倧きさに察しお適切に定めるのが望たしいず蚀えたす。 統蚈的䞀般化 図2-4のA子さんのように、統蚈的な前提をもずに「党䜓」ぞず話を広げるのは 統蚈的䞀般化 ず呌ばれたす。 「事䟋においお、共通項Pを持぀ものの割合がこうである」から、「察象党䜓でも、割合はこうである」ず䞀般化したす。 統蚈的䞀般化の䟋。 ①この孊校の生埒から盞圓数を無䜜為に遞び、所有するスマヌトフォンを尋ねたずころ、 90%がいちごフォンを所有しおいた。 ②【結論(A)】この孊校の生埒の90%はいちごフォンを所有しおいる。 ②【結論(B)】この孊校の生埒はおそらくいちごフォンを所有しおいるだろう。 結論(A)は事䟋における割合を結論に匕き継ぐ圢、(B)は掚量ずしお衚珟する圢です。 (B)の堎合、割合が90%なら「きっずいちごフォンを所有しおいるに違いない」ずいう蚀い方もあるでしょう。 100%なら「いちごフォンを所有しおいる」ず断蚀したくなるかも知れたせん。 割合が高ければ結論の蓋然性も高いず芋蟌たれ、“玍埗感”はありたす。 そうでなければ“玍埗感”は匱いでしょう。 割合が50%皋床か未満なのに「おそらくいちごフォンナヌザヌだろう」ずいうのは無理がありたす。 たた、事䟋における割合が100%であっおも、察象党䜓における実際の割合は100%でないこずもありたす。 図2-5 統蚈的䞀般化 枚挙的垰玍ずは事䟋の数ず偏りの点で異なる点に泚意しおください。 枚挙的垰玍の䟋。 ①回りの友達に聞いたら、BさんもCさんもDくんもEくんもFさんもGくんも、党員いちごフォンを持っおいる。 ②だからこの孊校の生埒はいちごフォンを所有しおいる。 統蚈的䞉段論法 統蚈的垰玍を甚いお、挔繹的な定蚀䞉段論法に䌌た圢の掚論ができたす。 統蚈的䞉段論法の䟋。 ①この孊校の生埒の90%は、いちごフォンを所有しおいる。 ②いたこの堎所にいる生埒は皆この孊校の生埒である。 ③【結論(A)】ここにいる生埒の90%はいちごフォンを持っおいる。 ③【結論(B)】ここにいる生埒はおそらくいちごフォンを持っおいる。 結論(A), (B)は先の統蚈的䞀般化ず同様です。 䜙談ながら、この䟋は 論理スキル[実践線]・゜クラテスは電気矊の倢を芋るか(前線) で玹介した 定蚀䞉段論法の第1æ Œ の圢ですね ゜クラテスは電気矊の倢を芋るか (前線)テスト゚ンゞニアのための論理スキル実践線 テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀「論理のスキル」。「論理の蚀葉」の意味や働きに泚意が向くようになったら、文や文章の読み曞きで実践しおいきたしょう。この連茉では、「論理スキル“実践線”」ず題しお、「文章の筋道を把握する、䞻匵を理解する...  続きを読む  Sqripts 関連蚘事Sqripts 結論の蓋然性が前提における共通項の割合に䟝存するのは統蚈的䞀般化ず同様です。 図2-6 統蚈的䞉段論法 レッツ垰玍的掚論 垰玍的な掚論には、他に 類掚(類比掚論) や 因果関係からの掚論 ずいう仲間がいたすが、これらに぀いおは回を改めお玹介したいず思いたす。 ★ 枚挙的垰玍や統蚈的垰玍のような思考は、私たちが日ごろ仕事や私生掻でなんずなくでも、知らず知らずでも行なっおいる圢の掚論で、特別・特殊なものではありたせん。 統蚈的な垰玍を自分で行なうこずは少ないかも知れたせんが、ニュヌスなどで頻繁に芋る「アンケヌト調査」はその奜䟋です 垰玍的掚論は“間違い”の可胜性を孕む掚論ですが、それは手順のミスや䞍泚意などによるのではなく、圢匏䞊避けるこずのできないものです。“間違い”に臆さず「新たな発芋」に邁進したしょう。 次回は、垰玍的掚論をする䞊で参考になる考え方・進め方を玹介したす。 参考文献 近藀掋逞, 奜䞊英叞 『論理孊入門』 岩波曞店 1979 鈎朚矎䜐子 『論理的思考の技法Ⅱ』 法孊曞院 2008 藀野登 『論理孊 䌝統的圢匏論理孊』 内田老鶎圃 1968 図版に䜿甚した画像の出兞 Loose Drawing 人物画をお借りしおいたす。 品質探偵コニャンProduced by Sqripts . No Unauthorized Reproduction. ゜クラテスは電気矊の倢を芋るか (前線)テスト゚ンゞニアのための論理スキル実践線 テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀「論理のスキル」。「論理の蚀葉」の意味や働きに泚意が向くようになったら、文や文章の読み曞きで実践しおいきたしょう。この連茉では、「論理スキル“実践線”」ず題しお、「文章の筋道を把握する、䞻匵を理解する...  続きを読む  Sqripts 関連蚘事Sqripts The post 【第2回】 “共通項”を芋぀け出す実務䞉幎目からの発芋力ず仮説力 first appeared on Sqripts .
この連茉では、゜フトりェア開発のQA゚ンゞニアずしお働き始めた皆様に向けお、私の実䜓隓をもずに「こんなこずを知っおおけばよかった」ずいう、ちょっずした気づきを共有したす。 䞀緒に゜フトりェア開発のQA゚ンゞニアずしおの充実した゚ンゞニアラむフを築くためのヒントを探っおいきたしょう。 QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 ※クリックで開きたす 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう 【第3回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -前線- QA゚ンゞニアは開発・テスト・運甚など、さたざたな堎面で掻躍しおいたす。そんな䞭でも「゜フトりェアテスト」は倖せない芁玠だず思いたす。 QA゚ンゞニアになりたおの頃は、゜フトりェアテストの「テスト実行」を任されるこずも倚いず思いたす。そういった状況で「テスト実行は぀たらない」ず思っおいる人もいるかもしれたせん。それはもったいないこずだず私は思っおいたす。 実際のずころ、「テスト実行」はテストプロセスの䞭で最も倧切な掻動であり、プロゞェクトぞの貢献はもちろん、孊びや楜しみの倚い掻動でもありたす。 「゜フトりェアテスト」を解説する蚘事ずしお、第3話では「テスト実行」に぀いお取り䞊げたす。 テストに䌌た甚語ずしお、「詊隓」「怜査」「怜蚌」「評䟡」ずいった蚀葉が䜿われるこずがありたすが、ここでは「実際の補品を動かしおその結果を芳察する䜜業」を「テスト」ずしおいたす。たた、JSTQBなどを勉匷したこずのある方は「静的テスト」ず「動的テスト」ずいう蚀葉を聞いたこずがあるかもしれたせん。本蚘事では蚘茉のない限り、「動的テスト」に぀いお扱いたす。 テスト実行は゜フトりェアテストの華である テスト実行ぞのよくある誀解 「テスト実行」ずいう掻動はビギナヌにも割り圓おられやすいタスクです。 䜿甚する際に資栌や特殊な技胜が必芁のないような補品では、実際に゜フトりェアを動かす人ずしお、䞀般的なナヌザヌを想定しおいる堎合が倚いです。 あるいは、補品の仕様のキャッチアップのために、テスト゚ンゞニアに限らず新芏参入の人がテスト実行にアサむンされる堎合もありたす。 そのために、テスト実行に぀いお以䞋のような印象を持っおいる堎合がありたす。 テスト実行はテストケヌスを消化する単玔䜜業で぀たらない仕事だ テスト実行は簡単な䜜業だから孊べるこずは少ない テスト実行は誰でもできるからテスト実行者はスキルがない これらの印象から「テスト実行」ずいうタスクを拒吊するQA゚ンゞニアにも出䌚ったこずがありたす。私はテスト実行に察しおこういった印象を持たれるこずを残念に思いたすし、誀解であるず思っおいたす。 テスト実行は重芁な掻動である テストプロセスの䞭でのテスト実行 ゜フトりェアテストは、テスト掻動の開始から終わりたでプロセスで衚珟できるずいう考えが䞀般的です。これを「テストプロセス」ずいいたす。 テスト実行はテストプロセスの䞭で最も重芁なプロセスであるず考えおいたす。 たずえばJSTQBでは、テスト蚈画、テスト分析、テスト蚭蚈、テスト実装、テスト実行、テスト完了、テストのモニタリングずコントロヌルずいった掻動が識別されおいたす。 ※䞊蚘の図においお、「テストのモニタリングずコントロヌル」に぀いおは、「テスト蚈画を含む」ずいう考えで蚘茉しおいたす。2018幎などの埓来のシラバスではモニタリングずコントロヌルにはテスト蚈画を含たない圢で定矩されおいたした。䞀方、2023幎に発行された最新のシラバスでは「checking of all test activities」ずされおおり、テスト蚈画を含むずも読み取れたす。 これらすべおの掻動を行うこずがベストプラクティスず蚀われおいたすが、そうでないプロゞェクトも存圚したす。たずえば「テスト分析」や「テスト実装」を行っおいないプロゞェクトも存圚したす。 䞀方で、「テスト実行」がないプロゞェクトをプロゞェクトが䞭止しない限りは芋たこずがありたせん。 これらの掻動のうち、テスト蚈画・テスト分析・テスト蚭蚈・テスト実装は、あえお䞀蚀で衚せばテスト実行の準備をしおいるずも衚珟できるず考えたす。 テスト完了に぀いおも、そもそもテスト実行が実斜されおいなければ完了できたせん。テスト実行結果を元に、報告や孊びの蓄積や保守ぞの移行など、さたざたな完了䜜業を行いたす。 泚意 この文章を読み、「テスト掻動はテスト実行の準備をしおいる”だけ”」ず片付けるのは少し乱暎です。 テスト蚈画ではステヌクホルダヌずの合意圢成を行う倧切な掻動です。たた、テスト分析やテスト蚭蚈は、開発の資料にフィヌドバックする掻動に぀ながるこずもありたす。 こういったテスト実行以倖ぞの効果は、この連茉で曞ききれないほどたくさんありたす。 テスト完了に぀いおも「テスト実行結果”だけ”がテスト完了のむンプットになる」ず思っおしたうず少し誀解がありたす。実際はテストプロセス党般を通じお埗られた情報のレポヌティングや孊びの蓄積を行いたす。 テスト実行を考えない成果物は取り扱いが難しい テスト実行は埌工皋であるので、テスト実行に぀いお考えるこずを䞀旊棚䞊げしお、テスト蚈画やテスト蚭蚈を行う堎合もありたす。しかし、それはアンチパタヌンだず考えたす。 「蚈画したテストがい぀・どのように実行されるのか」「蚭蚈したテストを実珟するためにどうすれば実行できるのか」など、テスト実行に぀いおきちんず考えた䞊で掻動するこずが倧切です。 テスト実行に぀いお怜蚎できおいないテスト蚈画やテスト蚭蚈は、テスト実装やテスト実行のフェヌズで倧きな負担になったり、堎合によっおは手戻りや远加のコストがかかっおしたう堎合がありたす。 テスト実行によっお「事実を積み重ねる」こずが倧切 テストプロセスにおいお、テスト蚈画からテスト実装は「想定を積み重ねおいる」にすぎないず考えたす。 「お客様に品質を保蚌する」ず考えた時に、私は「事実をきちんず把握できおいるかどうか」が倧切だず考えおいたす。 予枬や想定ではなく、「こんな状況で゜フトりェアはこんな動䜜をした」ずいう事実を積み重ねるこずで、我々は自信を持っおお客様に補品を届けられるず考えおいたす。 事実を積み重ねるこずができる重芁な掻動が「テスト実行」なのです。 テスト実行の仕事を充実させるポむント アむデアを蚀語化したり実際に詊す テスト実行をするにあたっお、目の前のテストケヌスを思考停止で消化しおいるこずがあるかもしれたせん。それはQA゚ンゞニアずしおもったいないこずをしおいたす。テスト実行の際には思考を停止するのではなく、むしろ思考を掻性化させおほしいです。 ポむントは様々な発想を広げるこずです。たずえば以䞋のような疑問を持぀こずが有効だず考えたす。 こういった動䜜で顧客はどんな颚に感じるだろうか こんな郜合の悪い操䜜を行ったらどんな動䜜をするだろうか 䌌たような補品ではどのような動䜜をしおいるだろうか これらに぀いお実際に詊す際には「蚀語化するこず」もおすすめしたす。チケットを起祚するずきや、テスト分析をするずきには、こうした蚀語化の技術が仕事の質や゚ンゞニアずしおの実力差に繋がるず思いたす。 「蚀語化を考える以前にテスト実行進捗に察する圧力がある」ずいうこずもあるず思いたす。 その堎合は、ぜひテストの準備やテスト実行自䜓を効率よくできるように怜蚎しおください。 たずえばテストの準備・調達の手順が䞍明確だったり、テスト実行手順が非効率な堎合があるかもしれたせん。もしかしたら自動化を行う䜙地があるかもしれたせん。 テスト実行ずいう掻動には創意工倫を行う䜙地があるこずはもちろんですが、テスト実行の堎合、最も工数がかかる掻動であるずいうこずもあり、改善の効果が埗られやすいこずがありたす。 テストそのものやテストケヌスの目的に思いを銳せる テスト実行は孊びが少ないず思われがちかもしれたせんが、孊習の材料は倧量に存圚したす。 テストケヌスやテスト蚈画曞などです。それらの成果物からテスト蚭蚈の意図やテストの存圚意矩に぀いお考えおみおください。 もしテストをしおいお「このテストケヌスは無駄だな」ず思われるなら、そういった考えの蚀語化に挑戊するこずをおすすめしたす。「無駄なテストを省く」「そのためにきちんず説明できる」ずいうのはテストマネヌゞャヌやテスト蚭蚈者ずしお必須のスキルになりたす。 これらはテスト実行を行いながら考えるこずができたす。 テスト実行の専門性を高める テスト実行は誰でもできるず思われがちですが、テスト実行にも専門性がありたす。䞍具合発生時のチケットでの報告や切り分けには、慣れや経隓がありたす。これらは孊習によっおもキャッチアップできたすが、バグずいうのは倚皮倚様で、経隓や感芚に頌る郚分も倚いのが珟状です。 そのため、テスト実行を通しお、よりよいテスト実行者になるこずも有意矩だず考えたす。 おわりに 本蚘事では「テスト実行」に぀いお充実させるためのポむントを玹介したした。 テスト実行を通しおテストに関するさたざたなこずを孊んで欲しいず思いたす。 たた、将来キャリアアップしたずきに、テスト実行ができないポゞションずなる可胜性もありたす。その時に「テスト実行での孊びをするのを疎かにしおいた」ずいうこずがないようにしおほしいず思いたす。 続く埌線では、テスト実行以倖の掻動にフォヌカスを圓お、解説しおいきたす。 【連茉】QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう 【第3回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -前線- The post 【第3回】QA゚ンゞニアの第䞀歩、「゜フトりェアテスト」を知ろう -前線-QA゚ンゞニアのスタヌトガむド first appeared on Sqripts .
この連茉では、1人目QAずしおのチヌムの立ち䞊げや組織づくりに関しお、私が実践したこずや詊行錯誀䞭のこずも含めおお䌝えしたす。 前回の蚘事 では、チヌムビルディングの抂念や考え方の説明ず、QAチヌムにおけるチヌムビルディングに぀いおタックマンモデルの各段階をもずに抂芁をご玹介したした。 今回は、QAず開発者ずいう、異なるロヌル間でのコミュニケヌションに぀いおご玹介したす。 コミュニケヌションずいうず非垞に広い話になりたすし、開発者ずQAの関わり方や組織の圢なども䌚瀟によっおいろいろな圢がありたす。ただ、私が他瀟のQAの方から「開発者ずのコミュニケヌションに課題があっお・・・」ず盞談をいただいお話を聞くず、いく぀かのパタヌンずそれに察する基本的な察応方法があるように感じおいたす。 そこで、この蚘事ではQAず開発者ずのコミュニケヌションに関しおよく聞く課題ず、ずくにQAず組織を立ち䞊げおいく過皋で気を぀けるべきこずに぀いおご玹介したす。 QAず開発者ずのコミュニケヌションにおける課題 QAにずっお、開発者ずの関係性ずいうのは非垞に倧切です。これは実際にQAずしお働いおいる方にはほが確実に同意しおいただけるのではないでしょうか。 QAだけががんばっおもプロダクトの品質向䞊には限界があり、開発者やマネヌゞャヌ、デザむナヌなど他のさたざたなロヌルの方ず協力しお初めお品質を高められたす。特にQAが業務レベルで関わるのは開発者である堎合が倚いはずです。 そのため、開発者ずの関係性がよければ互いに協力しお品質を高めるこずができたすし、逆に関係性が悪いずなかなか同じ方向を向けず品質にも悪圱響がありたす。最近よく聞く蚀葉で蚀えば、開発者ずQAが協調するずか、互いにロヌルの垣根を越えお越境しお働くずか、そういった動き方が良しずされおいたすね。 こうした理想の姿に぀いおは、それほど反察されるこずはないかず思いたす。 しかし、実際に珟堎でQAずしお働いおいる方の話を聞くず、開発者ずQAずの間のコミュニケヌションに぀いおいろいろな問題があるようです。 たずえば、技術面で開発者ずコミュニケヌションが取りづらい、品質に察する枩床感の違いがある、QAに察しおネガティブなむメヌゞを持たれおいる、などです。そうした問題をいろいろな方から聞いた䞭で、倧きく以䞋2぀の芁玠が倚く出おくるず気づきたした。 QA゚ンゞニアの圹割や業務が開発者偎に䌝わっおいない コミュニケヌションの土台が䞍足し、開発者䜓隓が悪化しおいる それぞれに぀いお、どのように察応すればよいのか考えおいきたしょう。 QAの圹割や業務に察する理解を埗る ひず぀めは、QAの圹割や業務が開発者偎に䌝わっおいないずいう問題に察する察応です。これは単玔に問題の裏返しで、QAの圹割や業務に察しお理解を埗たしょう、ずいう話です。 ずくにQA組織をこれから立ち䞊げる堎合はQA組織の䜍眮づけ、どのような圹割を担うのかそれによっお開発者の動きがどう倉わるのかなどが明確になっおいないず、すれ違いが発生したす。 よく聞く具䜓的なお悩みずしおは、倧きく2パタヌンです。 品質に察する考え方に関するもの 開発者が「テストはQA・テスト゚ンゞニア偎のしごず」ず考えおいる 品質に察する開発者の意識が䜎い、倧事だず思っおくれおいない など QAの圹割・動き方に関するもの QAが居るず開発スピヌドが遅くなる、ず思われおいる 重芁でない现かい指摘をたくさんされるず思われおいる など これらの開発者からQAに察する誀解に぀いおは、おいねいに説明をしお理解を埗おいくこずが倧切です。 方法1QAがやるこず・やらないこずの宣蚀 これは私が事あるごずにオススメしおいる方法なのですが、その組織の䞭でQA゚ンゞニアが䜕をやるのか䜕をやらないのかを宣蚀するこずで理解しおもらう、ずいうものです。 たずえば私は珟圚のQA組織を立ち䞊げるにあたっお、入瀟しおすぐに「QAが決めた基準を守らせたり、アセスメントやメトリクスなどによる定量目暙を匷制はしたせん。品質はQAだけが考えるものではなく党員で考えるもので、合意・玍埗のないルヌルには意味がないからです」ず宣蚀をしたした。 実際に開発者からは「QAが来るず聞いおいろいろ瞛りがき぀くなるのかず思ったけれど、最初に無理やりルヌルを抌し付けないず聞いお安心した。協力できそうだず思った」ずいうフィヌドバックをもらいたした。 䞀般に「QAがやるこず」を明確にするこずは行われたすが、「QAがやらないこず」もセットで䌝えるこずで、開発者にずっおの安心に぀ながり、QAに察する意識や芋方がポゞティブな方向に倉わるこずもありたす。 方法2開発者も含めた党員が品質に察しお関係しおいるこずを䌝える 最近では少なくなっおきおいるように感じたすが、「テストはQAに任せおおけばいい、品質を考えるのはQAの仕事」ずいった認識が開発者にあっお困っおいる、ずいう声を聞くこずもありたす。 この堎合は、開発者も含め党員が品質に関係しおいるず理解しおもらう必芁がありたす。䞖の䞭のQA担圓者はさたざたな方法で開発者にアプロヌチしおいたすが、たずえばコストに関する以䞋の図はよく甚いられおいたす。 匕甚゜フトりェア品質保蚌の 方法論、技法、その倉遷 先達の知恵に孊ぶ  P31より ぀たり、テスト工皋でQAやテスト゚ンゞニアが問題を芋぀けるよりも、コヌディング時や蚭蚈段階などで問題を芋぀けたほうがプロゞェクトにずっおは䜎コストで枈む、ずいうこずです。そのため、問題はテスト工皋で芋぀ければいいやではなく、開発者も積極的に品質に関する掻動やテストを行うべきである、ずいう理屈です。 他にも、䜓重蚈ずダむ゚ットのメタファを甚いるこずもありたす。 ダむ゚ットをしおいるずき、䜓重蚈に乗れば珟圚の䜓重がわかりたすが、䜓重蚈に乗るこず自䜓にダむ゚ット効果はありたせん。そこでわかった䜓重をもずに、運動をしたり、食事を芋盎したりずいった行動を起こしお初めお䜓重が枛少したす。 品質もこれず同じで、テストをするこずで珟圚の品質やどこにバグがあるか等がわかりたす。しかし、䜕床テストをしおも品質はよくなりたせん。芋぀かったバグを修正するこずで初めお、品質が良くなるのです。 QAやテスト゚ンゞニアがいくらテストをしたずしおも盎接品質を高めるこずにはならず、開発者によるバグ修正が必芁です。぀たり、開発者も品質に十分関係しおいる、ずいう理屈です。 ちなみにこのメタファは『゜フトりェアプロゞェクトサバむバルガむド』ずいう曞籍に登堎するそうです。 ずくにQA組織の立ち䞊げ時がカギ ずくにQA組織の立ち䞊げ時ずいうのはこの「理解を埗る」もしくは「誀解を解く」ためにずおも重芁なタむミングです。組織立ち䞊げに向かっお動き始めるタむミングで、QAの圹割や業務に関する䟡倀芳・倧事にしたいこずを打ち出しおいくず、開発者からも「自分たちに協力しおくれるんだ」「メリットが期埅できるんだ」ず感じおもらえ、協力関係が築きやすくなっおいくでしょう。 QAに関する理解に぀いおは以前 【第3回】品質保蚌やQA゚ンゞニアを知っおもらうための取り組み | Sqripts に蚘茉したしたので、こちらもぜひご芧ください。 【第3回】品質保蚌やQA゚ンゞニアを知っおもらうための取り組み 1人目QAずしおの立ち回り、第3回ずなる今回は、QA゚ンゞニアや品質保蚌のこずを開発組織に知っおもらうための取り組みに぀いおご玹介したす。前回の蚘事では、1人目のQAは開発組織に察しお品質文化を浞透させる圹割を求められる、ず曞きたした。しかし、「文化の浞透...  続きを読む  Sqripts 関連蚘事Sqripts QAずしお信頌を埗る もうひず぀はコミュニケヌションの土台が䞍足する問題ぞの察応で、ひず぀めずも関係したすが、開発者をはじめ他の職皮の方から信頌を埗るこずが倧事です。 ずくに若手QAの方から盞談されるこずの倚いものずしお「開発者ず技術的な話ができなくお・・・」ずいうものがありたす。開発経隓がない状態で、テスト゚ンゞニアやQA゚ンゞニアになった方だず「開発者が普段話しおいる内容がわからない」「技術的な話に぀いおいけない」ず感じ、そこから開発者ずのコミュニケヌションがうたくいっおいないず感じるこずが倚いようです。 Developer eXperience Day 2024にお、AtCoder代衚取締圹瀟長 高橋盎倧氏の講挔では以䞋のような内容が話されおいたした。 開発者䜓隓はチヌムメンバヌによっおも決たる 倚くのメンバヌにずっお圓たり前のこずを知らず、いちいち説明しなければならない状況が発生するず開発者䜓隓が悪くなる 参考 アルゎリズムず開発者䜓隓 – Tech Team Journal 私はこの講挔をリアルタむムで聞いおいお「なるほど確かに」ず感じたした。その埌、よくよく考えおみるず、開発者ずQAずの間でのコミュニケヌションにおいおも同じこずが蚀えるず思いはじめたした。 開発者ずQAずではスキルセットや持っおいる知識に違いはあるものの、たずえば䞀般的な開発プロセスや、プログラミングのごく基瀎的な内容に぀いおは双方にずっお「圓たり前」ずみなされる可胜性がありたす。それをQA偎が知らず、か぀理解しようずいう姿勢がない堎合は、開発者䜓隓が䜎䞋しおしたいたす。そうなっおしたうず、「QAのさんがいるず党䜓の効率が萜ちたように感じられるよね」「品質を高めるうえでは逆効果だよね」ず捉えられおもおかしくありたせん。 では、QAはどこたで䜕を知っおいればいいのでしょうか。この点に関しおは絶察の正解はありたせん。過去の経隓䞊、以䞋のような内容を把握しおおくず開発者ずのコミュニケヌションの土台になりたす。 䞀般的な゜フトりェア開発プロセスに関する知識 りォヌタヌフォヌルずアゞャむル 継続的むンテグレヌション テスト察象アプリケヌションを䜜るうえでの基瀎的な技術 WebアプリケヌションであればhtmlずCSS、JavaScriptなどそれぞれの圹割ず、Web䞊に公開するたでの流れ モバむルアプリケヌションであればXCodeやAndroidStudioでアプリを䜜っお公開するたでの倧たかな流れ スクラム関連 各皮むベントや甚語 チケット管理 BTS/ITSなどを䜿ったチケット駆動の仕事の進め方 私がよくオススメしおいるのは、簡単なアプリケヌションを䜜っお動かしおみるこずです。難しいこずをする必芁はなく、むンタヌネット䞊で公開されおいるサンプルや入門曞のサンプルを䜜る流れを1床䜓隓するだけでもかなり違いたす。 たずめ 今回は、開発者ずQAずのコミュニケヌションに関する問題やその察応に぀いお考えたした。 䞀般的な同僚ずのコミュニケヌションに関する工倫、たずえば雑談をしたり䞀緒にランチをしたりずいった接觊機䌚を増やす他に、本蚘事でご玹介したような内容に気を配っおいただけるずよいかず思いたす。 QAを取り巻く環境は、以前に比べるずだいぶ良くなっおいるように感じたす。QA゚ンゞニアずいう職皮の認知も進んできおいたす。そうはいっおも、個々のQAが自分の呚囲の同僚から理解を埗たり、関係性を構築したりずいった努力が䞍芁になったわけではありたせん。 品質向䞊に぀ながるアクションずしお、開発者ずのより良いコミュニケヌションができるようにしおいきたいですね。 【連茉】QA組織の立ち䞊げ方1人目QAが語る実践ず工倫 蚘事䞀芧 【第1回】QA組織立ち䞊げの流れず組織の圢 【連茉初回、党文公開䞭】 【第2回】2人目以降のQA゚ンゞニアの採甚 【第3回】QAチヌムビルディングQA組織の立ち䞊げ方 The post 【第4回】QAず開発者ずのコミュニケヌションQA組織の立ち䞊げ方 first appeared on Sqripts .
こんにちは、フロント゚ンド゚ンゞニアずしお働いおいるぱやぎです。 これたで䞻にMantine UIを䜿っお実務を進めおきたしたが、最近泚目されおいる「 shadcn/ui 」を詊しおみたした。 本蚘事では、shadcn/uiの抂芁やメリット・デメリット、実際に觊っおみた感想などを玹介しおいきたす。Mantine UIに慣れおいる方はもちろん、その他のコンポヌネントラむブラリを䜿っおいる方にも参考になれば幞いです。 shadcn/uiずは shadcn/ui は、React向けのコンポヌネントコレクションであり、UI構築をよりシンプルか぀柔軟にするこずを目的ずしおいたす。䞻な特城ずしおは、次の点が挙げられたす。 Radix UI のコンポヌネントをベヌスにしおいる スタむリングは Tailwind CSS を利甚 セマンティクスやアクセシビリティa11yを考慮したデザむン 公匏サむトからコンポヌネントをコピヌペヌストで導入可胜 必芁なものだけ導入しやすい疎結合な蚭蚈 ビルド枈みのコンポヌネントを導入するのではなく、プロゞェクト内に ゜ヌスコヌドずしお取り蟌む 圢匏が採甚されおいたす。 埌述するメリットにも倧きく関係したすが、この方針によっお现かいカスタマむズやアップデヌトに柔軟に察応しやすくなっおいたす。 メリット 1. Radix UI由来のUIパタヌン & アクセシビリティ shadcn/uiは Radix UI をベヌスずしおおり、アクセシビリティa11yを重芖したUIコンポヌネントが揃っおいたす。以䞋の点がメリットです。 UIパタヌン Tailwind CSSず統合されおおり、UIデザむンを簡単に適甚可胜 モダンなUIパタヌンを利甚し぀぀、れロからのデザむン構築の手間を軜枛 アクセシビリティ WAI-ARIAのベストプラクティスが適甚されおいるため、デザむンを倉曎しおもa11yが担保される キヌボヌド操䜜やスクリヌンリヌダヌぞの察応が優れおいる 必芁に応じおデザむンシステムやスタむルを柔軟に远加可胜 2. Tailwind CSSずの芪和性 & 高いカスタマむズ性 shadcn/uiは Tailwind CSS でスタむリングされおいるため、次のような利点がありたす。 既存のTailwindベヌスのプロゞェクトに組み蟌みやすい クラス名を盎接線集するこずで、デザむンやレむアりトを自由に倉曎できる たた、コンポヌネントをnpmパッケヌゞずしお利甚するのではなく、プロゞェクト内に盎接゜ヌスコヌドを取り蟌むスタむルのため、 必芁に応じお自由に修正できる 柔軟さがありたす。 結果的に、 プロダクト独自のデザむン芁件 や将来的な拡匵にも察応しやすい点が非垞に魅力的です。 3. CLIやコピヌペヌストで導入が容易 shadcn/uiにはCLIツヌルが甚意されおおり、以䞋のようなメリットがありたす。 コマンド䞀぀でコンポヌネントをロヌカルに自動生成 コンポヌネント名を指定するだけで簡単に远加・削陀が可胜 たた、公匏サむトから コピヌペヌスト する方法でも導入できるため、初めお觊れる堎合でもセットアップがわかりやすく、すぐに実装に移れるのがメリットです。 4. v0ずの連携 v0で生成されたコヌドは shadcn/ui のコンポヌネントを䜿甚しおいるため、そのたたプロゞェクトに組み蟌むこずができ、プロトタむピングの速床が倧幅に向䞊したす。 たた、v0が生成するUIはshadcn/uiに基づいおいるため、AIを甚いながらデザむンの䞀貫性を保぀こずができたす。 以䞋v0に぀いお玹介されおいた蚘事になりたす。 最近話題のVercel v0 Teamプランを導入しおみたその効果ず掻甚方法を玹介 こんにちはフロント゚ンド゚ンゞニアの぀かじです。今回は、私たちの開発チヌムで導入した「Vercelのv0 Teamプラン」に぀いお、その魅力や実際に䜿っおみお感じた効果、そしお掻甚方法を詳しくご玹介したす。v0ずはたず、v0に぀いおご存知ない方のために簡単に説...  続きを読む  Sqripts 関連蚘事Sqripts 5. オヌプン゜ヌスか぀コミュニティ駆動で進化し続ける shadcn/uiは オヌプン゜ヌス ずしお公開され、コミュニティが積極的に開発をサポヌトしおいたす。 バグ修正や新機胜芁望ぞの察応が比范的早い デザむンやアクセシビリティ匷化のプルリク゚ストが日々取り蟌たれおいる そのため、今埌も 継続的なアップデヌト が芋蟌たれ、時代に合わせたUI/UXの改善が期埅できたす。 デメリット 䞀方で、shadcn/uiを䜿うにあたっおのデメリットや泚意点ずしおは、以䞋が挙げられたす。 コンポヌネント曎新の手間 npmパッケヌゞずしお管理されおいるラむブラリず異なり、shadcn/uiは゜ヌスコヌドを盎接取り蟌む圢匏です。 新しいバヌゞョンがリリヌスされた堎合は、自分たちで差分を確認しながら曎新しなければならないため、 保守コスト が増える可胜性がありたす。 Tailwindベヌスであるこず Tailwind CSSでの開発が前提ずなるため、 Tailwind未経隓の堎合は慣れが必芁 です。 既存プロゞェクトに導入するには、ビルドチェヌンの調敎などが必芁になる堎合もあるでしょう。 実装責任がより増す コンポヌネントをコピヌしおいるずはいえ、 プロゞェクト内でコンポヌネントずしお管理 するこずになりたす。 そのため、状況によっおは同じコンポヌネントなのにバヌゞョン差異が生じるなどのリスクも考慮が必芁です。 実際に動かしおみる ここでは、簡単に手順を玹介したす。プロゞェクト環境によっおは倚少異なる堎合がありたす 詳现な導入方法は 公匏ドキュメント を確認しおください。 shadcn/uiのCLIで導入 npx shadcn@latest init Tailwind CSSのセットアップ npm install -D tailwindcss@latest autoprefixer@latest Next.js + Tailwind CSSのテンプレヌトを利甚するか、既存プロゞェクトであればTailwindの蚭定ファむル tailwind.config.js を甚意したす。 postcss.config.js や tailwind.config.js を適宜線集し、Tailwindを有効にしたす。 コンポヌネントのむンストヌル shadcn/uiの公匏サむトで目的のコンポヌネントを遞択し、CLIたたはコピヌペヌストでプロゞェクトに取り蟌みたす。 今回はサンプルずしお button をCLIで取り蟌みたす。 npx shadcn@latest add button 取り蟌んだコンポヌネントは components/ui のようなディレクトリに配眮されたす。 動䜜確認 ロヌカルで開発サヌバを起動し、ブラりザ䞊でUIを確認したす。 import { Button } from import { Button } from "./components/ui/button"; export default function App() { return <Button>Click me</Button>; } カスタマむズ T Tailwindのクラスを䜿っお自由にデザむンを倉曎できたす。 今回はxsサむズをxsサむズの远加ずデフォルトでのボタンの衚瀺を背景色に合わせるようにしたす。 import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "~/lib/utils"; const buttonVariants = cva( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", { variants: { variant: { + default: "bg-background hover:bg-accent hover:text-accent-foreground", + primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", }, size: { default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", icon: "h-9 w-9", + xs: "h-7 rounded-md px-2 text-xs", }, }, defaultVariants: { variant: "default", size: "default", }, } ); export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> { asChild?: boolean; } const Button = React.forwardRef<HTMLButtonElement, ButtonProps>( ({ className, variant, size, asChild = false, ...props }, ref) => { const Comp = asChild ? Slot : "button"; return ( <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} /> ); } ); Button.displayName = "Button"; export { Button, buttonVariants }; sizeに今回远加した xs を指定したす export default function App() { return <Button size="xs">Click me</Button>; } ボタンの色ずサむズが倉わりたした。(わかりやすく倉曎前のものを䞊べお衚瀺しおいたす。) 実際に詊しおみた感想ずしおは、 コンポヌネントをコピヌペヌストするだけ で「動くUI」がすぐに生成される点が非垞に快適でした。 Mantine UIほどドキュメントが敎備されおいない印象はありたしたが、UIの芋せ方や挙動の现かな調敎がしやすいので、個人的には プロダクトの独自性を出したいケヌスに向いおいる ず感じたす。 終わりに 今回は、新しく泚目されおいる shadcn/ui に぀いお、抂芁からメリット・デメリット、実際に動かしおみた感想をたずめたした。 ずおも簡単に導入するこずができ、感動したした。 長らくMantine UIを愛甚しおきた身ずしおは、UIラむブラリを䞞ごず導入する手軜さや手厚いドキュメントを維持し぀぀、もう少し现かいカスタマむズが欲しい ず感じるこずもありたした。 そんなずきにshadcn/uiの「コンポヌネントを自前で管理できる」ずいう方針は、ずおも魅力的に思えたした。 今埌のプロゞェクトでは、 デザむナヌや他の゚ンゞニアがどれくらい自由床を求めるか によっお、UIフレヌムワヌクを遞ぶ際の遞択肢が増えそうです。アクセシビリティずデザむンを䞡立したい方や、 コンポヌネントをより现かく制埡したい ずいう方には、ぜひ詊しおみおはいかがでしょうか。 ここたで読んでいただきありがずうございたした。 The post コンポヌネントラむブラリではない「shadcn/ui」を觊っおみた first appeared on Sqripts .
はじめたしおQA゚ンゞニアのたくぞヌです。  テスト蚭蚈を行う䞊で、必芁なテスト芁件を網矅できおいるか䞍安に感じる ずいう方は少なくないのではないでしょうか。テスト蚭蚈時の仕様把握においお、内容そのものの理解はもちろんですが、情報を十分に敎理できおいないず必芁なテストの抜け挏れに繋がりたす。 テスト蚭蚈業務での仕様把握をきっかけに、テスト蚭蚈で掻甚できる情報敎理の方法はないかず思い調べおみたした。今回はそれぞれの抂芁やメリット、筆者の経隓䞊の掻甚事䟋を亀えおご玹介しおいきたいず思いたす。 テスト蚭蚈に䜿える情報敎理術 デシゞョンテヌブル たず初めに デシゞョンテヌブル を玹介したす。ブラックボックステスト技法の1぀なので、ご存じの方も倚いのではないでしょうか。耇雑な条件入力の組み合わせによっお、アクション出力が異なるシステムの堎合に効果的です。条件ずアクションの関係性をテヌブル衚に可芖化するこずで組み合わせを敎理しやすく、必芁なテスト条件を挏れなく怜蚎するこずができたす。 簡単な掻甚䟋を亀えお玹介したす。ある䌚員限定の通販サむトの料金蚈算に関する䞋蚘の仕様があるずしたす。 䌚員ランクは「ゎヌルド」「シルバヌ」「ブロンズ」の3皮類 賌入代金から䌚員ランクに応じた䞋蚘の割匕が適甚される ゎヌルド10%OFF  シルバヌ5%OFF  ブロンズ割匕なし クヌポン適甚で賌入代金から5%OFFする 䌚員ランクによる割匕ずクヌポンによる割匕は䜵甚可胜 これらの仕様をデシゞョンテヌブルで衚すず䞋蚘の通りです。 ※存圚しない条件の組み合わせ異なる䌚員ランクの組み合わせは省略しおいたす。 䞊蚘仕様では䌚員ランクの皮類ずクヌポンの適甚有無によっお割匕率が倉動するため、各䌚員ランクずクヌポン適甚を条件郚分に、各条件に察しお「X」「Y」の倀を蚘茉したす。その䞊でアクション郚分に該圓する割匕率ず「X」の倀を蚘茉したす。 今回はシンプルな仕様なのでケヌス数は少ないですが、耇雑な仕様ずなるずケヌス数も増倧したす。そのような時にデシゞョンテヌブルは効果的です。泚意点ずしおは、存圚しない組み合わせなどの䞍芁なケヌスを含めおしたったり、反察に必芁な組み合わせを省略しおしたうこずが考えられるので、その点は気を぀けたしょう。 デシゞョンテヌブルは䜿う頻床も倚く、筆者の堎合はデシゞョンテヌブルず合わせおフロヌチャヌト郚分をテスト分析・蚭蚈する時にも掻甚したす。その際、分岐時の条件を条件郚分に、その条件に応じた結果をアクション郚分に入れお敎理するず、必芁なテスト条件を挏れなく効率的に怜蚎でき、特に分岐が倚い時はより効果的です。 たた、デシゞョンテヌブルに関する詳现は䞋蚘の蚘事で詳しく取り䞊げられおいるので興味がある方はこちらも読んでみお䞋さい。 ▌参考蚘事 いたさらデシゞョンテヌブルずいうものを考えおみた Sqripts 状態遷移図/状態遷移衚 続いおは 状態遷移図、状態遷移衚 です。こちらもブラックボックステスト技法の1぀ですね。状態間が遷移するようなシステムや゜フトりェアの堎合に、状態ずむベントの関係を図や衚で可芖化できるので党䜓像が把握しやすくなったり、考えうるパタヌンを敎理するこずができたす。 こちらも簡単な掻甚䟋を亀えお玹介したす。゚アコンのリモコン操䜜に関する䞋蚘の仕様があるずしたす。 ボタンは「冷房」「暖房」「陀湿」「停止」がある  停止䞭に「停止」以倖のボタンを抌䞋するず運転䞭に切り替わり、各ボタンに応じた状態に遷移する 「冷房」ボタン冷房  「暖房」ボタン暖房  「陀湿」ボタン陀湿  運転䞭の各状態で「停止」以倖のボタンを抌䞋するず、各ボタンに応じた状態に遷移する 運転䞭の各状態で「停止」ボタンを抌䞋するず、停止䞭に遷移する これらの仕様から、各状態ずむベントの関係を状態遷移図で衚すず䞋蚘の通りです。 各状態はそのたた状態ずしお衚し、各ボタン操䜜はむベント、むベントによる遷移は矢印で衚しおいたす。 次に、䜜成した状態遷移図の内容を螏たえお状態遷移衚を䜜成したす。 遷移前の状態を行に、むベントを列に入力し、むベント実行埌の遷移先を衚内に圓おはめおいきたす。たた、むベントを実行しおも遷移が発生しない組み合わせには「-ハむフン」を入れたす。 このように、状態遷移図では芖芚的に党䜓の流れを把握できるため仕様を敎理しやすくなり、状態遷移衚では遷移しない組み合わせや無効な遷移も衚すので必芁なテスト条件の抜け挏れ防止に繋がりたす。 筆者の堎合、䟋に挙げたような状態間の遷移を䌎うシステムは圓然のこずながら、画面間の遷移を敎理したい時にもよく掻甚したす。画面数やむベント数が倚いシステムになるほど䜜成や曎新の手間は倚少ありたすが、甚意しおおくこずで深く仕様を理解するこずができ、結果的にテスト分析・蚭蚈を円滑に行えた経隓もありたす。泚意点ずしおは、芏暡が倧きいほど耇雑化しやすく、逆に理解しづらくなっおしたうこずがあるので、適切に分割したり衚蚘方法を簡朔にするなどの意識が必芁です。 状態遷移図、状態遷移衚に関する詳现な蚘事に぀いおも䞋蚘で取り䞊げられおいるのでご興味のある方は読んでみお䞋さい。 ▌参考蚘事 幅広い゜フトりェアずテストレベルで適甚可胜な状態遷移テスト Sqripts ロゞックツリヌ ロゞックツリヌ ずは、ある課題や物事の芁玠をツリヌ状に分解しお敎理するこずにより、解決策を導き出しおいくフレヌムワヌクです。各芁玠を巊から右に暹朚が枝分かれしおいくような圢で階局化しお敎理しおいきたす。 ロゞックツリヌにはいく぀か皮類がありたすが、「 芁玠分解ツリヌWHATツリヌ 」ず呌ばれる、構成されおいる芁玠を網矅的に分解しおいく手法が敎理しやすいかず思いたす。テスト察象ずなる画面や機胜ずいった各芁玠を、WHATツリヌを甚いお段階的に分解敎理しおいくこずで、党䜓像を把握しやすく、テストすべき内容を敎理するこずができたす。 これたでず同様に簡単な掻甚䟋を玹介したす。ログむン画面に関するテストを行うこずになり、䞋蚘の仕様があったずしたす。 ナヌザヌID/パスワヌドを入力しおログむンする  ナヌザヌIDは420文字の範囲で、半角英数字ず半角蚘号が䜿甚できる  パスワヌドは864文字の範囲で、半角英数字ず半角蚘号が䜿甚できる 倧文字・小文字・数字・蚘号の䞭から3皮類以䞊含める必芁がある  ログむンに成功するず䌚員画面に遷移する  ナヌザヌID/パスワヌドの範囲内の文字数/文字皮を入力し、ログむンに倱敗した時はログむン画面䞊に゚ラヌAを衚瀺する ナヌザヌID/パスワヌドの範囲倖の文字数/文字皮を入力し、ログむンに倱敗した時はログむン画面䞊に゚ラヌBを衚瀺する 「パスワヌドを忘れた堎合はこちら」リンクから、パスワヌド再蚭定画面に遷移する これらの仕様からどのようなテストが必芁かを分析する際、WHATツリヌを䜿うず䞋蚘のように敎理するこずができたす。 テスト察象ずなる画面を起点に機胜⇒芳点の順に階局を分けおいき、右にいくに぀れおより詳现床の高い芳点を蚘茉しおいきたす。筆者の堎合はこのように、画面や機胜の関係性をツリヌ䞊に展開しおテスト芳点を敎理する際に掻甚しおいたすが、実際に型に圓おはめお可芖化しながら敎理できるので、頭の䞭だけで考えたり箇条曞きで曞いおみるよりも、芳点が抜け挏れおしたう可胜性がぐっず䞋がる印象を持っおいたす。 怜蚎すべき芁玠が倚い堎合はもちろん、芁玠が少なくおも䞍安ず感じる堎合には䞀床WHATツリヌを掻甚しおみお䞋さい。 仮説思考 仮説思考 は限られた情報や知識・経隓から最も可胜性の高い結論を仮説立お、その仮説に基づいお怜蚌を行い正確な情報を確認する思考方法です。テスト蚭蚈においおは、テストベヌスの情報が少ない堎面で掻甚できたす。限られた芁件や仕様から仮説を立おるこずで、テストベヌスを読むだけでは䞀芋分からない芁件や仕様に぀いお怜蚎するこずができたす。 筆者の堎合、䞊蚘のロゞックツリヌの䟋ず関連したすが、あるシステムのログむン画面に関する仕様把握を行っおいた時に、認蚌に倱敗する時の入力条件や、認蚌倱敗時に該圓の゚ラヌを衚瀺するこずはテストベヌスに明蚘されおいたしたが、䞀定回数倱敗した時にロック状態になるずいったこずは明蚘されおいない状況がありたした。 過去に類䌌機胜のテストを行った時はロック状態に関する仕様が存圚しおいた経隓から、その仕様が考慮されおいない可胜性があるずいった仮説を立おお関係者に確認を行い、結果的にはそのシステムの性質䞊考慮は䞍芁ずいう結論に至りたしたが、もし考慮が必芁である堎合には、䜕回倱敗するずロック状態になるか、ロック状態はどのように解陀されるか、ずいう疑問も連想できるので仕様の有無ず合わせお確認しおおきたしょう。 泚意点ずしおは、知識や経隓に䟝存しすぎお仮説に頌っおばかりでは、返っお柔軟なテスト蚭蚈ができない堎合もありたす。そのため、仮説は適切な堎面に応じお立おお怜蚎したほうが良いでしょう。 フェルミ掚定 フェルミ掚定 は予枬するこずが困難な数倀を、既知のデヌタや情報から論理的思考に基づいお抂算を掚定する手法です。限られた情報から答えを求めるずいう郚分は、仮説思考ず共通する郚分になりたすね。 テスト蚭蚈においおは、数倀に関する情報が䞍足しおいる状況で掻甚するこずができ、限られた仕様や知識から抂算を掚定し、テストベヌスには蚘茉されおいなかった仕様に぀いお怜蚎するこずができたす。 筆者の堎合、ある倧䌁業向け業務システムのナヌザヌ登録機胜の仕様把握を行っおいた時に、どれくらいのナヌザヌを登録できるかずいったテストを怜蚎する必芁があったのですが、テストベヌスずしお参照できるものに登録䞊限数が定矩されおいないずいう状況がありたした。䞀芋どこたでテストするのが劥圓なのか芋圓が付かない数倀でしたが、日本で最も埓業員の倚い䌁業が玄35䞇人で、ここ5幎で玄3䞇人増加ずいうデヌタを知っおいたため、バッファ分を考慮しおも50䞇人登録できるようであれば十分ず考えるこずができたす。 もちろん関係者に䞊限数を確認する必芁はありたすが、確認する際にただ確認するのではなく、䞊蚘の様に劥圓性を提瀺するこずで客芳的な根拠を埗るこずもでき、仕様の誀りの修正や仕様の決定を関係者がスムヌズに行えるようになりたす。 その他の情報敎理術 倚面的な芖点から物事を捉える ここたではテスト蚭蚈に掻甚できる各情報敎理の手法に぀いお玹介しおたいりたしたが、その他にも意識的な技術ずしお、倚面的な芖点から物事を捉える重芁性に぀いおも玹介いたしたす。  䟋えば、ある物事を特定の芖点からしか捉えるこずができないずするず、他の芖点から捉えるこずができる郚分を芋萜ずすこずになり、その物事の本質を捉えるこずができたせん。これはテスト蚭蚈においおも同様で、テスト察象の本質を捉えるこずができないず芋圓違いなテスト内容を怜蚎しおしたったり、考慮挏れずいう事態にも繋がりたす。 様々な芖点から物事を捉えるために 「鳥の目、虫の目、魚の目、コりモリの目」 ずいった4぀の芖点を衚す蚀葉が存圚するため、抂芁に぀いお説明いたしたす。簡朔に衚すず䞋蚘の通りです。 これらの芖点はいずれも仕様把握においお重芁ず考えおいたす。 倚少の䞻芳を含みたすが、テスト察象に関する理解を効率よく深めるには、はじめに鳥の目を意識する必芁があるず考えおいたす。筆者の堎合、テスト察象の党䜓像を把握しきれおいない状態で詳现郚分の分析から進めおしたったこずで、より理解に時間がかかっおしたったり、芋圓違いのテスト内容を怜蚎しおしたったずいう経隓もありたす。 たずは、テスト察象の党䜓を俯瞰しお芋るこずを心がけ、その䞊で虫の目を意識しお詳现郚分の分析を行いたしょう。そうするこずで効率よく理解を深めるだけでなく、テストベヌスに明蚘されおいない芁件や仕様に気づける可胜性も向䞊したす。 たた、その時にコりモリの目を意識しおナヌザヌ芖点で仕様に぀いお考えるこずも必芁です。ナヌザヌ芖点で考えおみるず劥圓ではないず捉えるこずができる仕様や、芁件や仕様の誀りに気づける可胜性もありたす。 他にも、時間に特性を持぀テスト察象においおは魚の目を意識しお、過去→珟圚→未来ずいった各時間軞でどのような違いがあるかを怜蚎し、テストベヌスに明蚘されおなければ関係者に確認したしょう。 たた、仕様把握を行う際には、䞋蚘の蚘事の蚘茉内容ず合わせお実践するこずでより高い効果が埗られるず思いたすので、こちらの内容に぀いおも合わせお読んでみお䞋さい。 ▌参考蚘事 良い仕様把握は良い品質に繋がる 〜仕様把握をする時のコツ 5遞を玹介〜 Sqripts たずめ 改めお今回ご玹介した情報敎理術ず、その䜿い分けに぀いお以䞋衚にたずめたした。 筆者の䞻芳も倚少含みたすが、掻甚するずきの基準の1぀ずしお捉えおいただければず思いたす。 今回ご玹介した情報敎理術はあくたでも䞀䟋に過ぎたせんが、テスト分析・蚭蚈をはじめずした様々な分野・業務においおも掻甚するこずができるものです。  各特性を把握いただいた䞊で実際に詊しおいただき、自分にあったものをご掻甚いただけたすず幞いです。 そしお、これらを掻甚する際には参画しおいるプロゞェクトの状況を考慮する必芁がありたす。䟋えば、プロゞェクトが繁忙期であったり、保守的なプロゞェクトにおいお、これたで䜿甚しおいない技法を甚いるず逆効果ずなっおしたう可胜性もあるため、状況に応じお適切な技法をご掻甚いただければず思いたす。 たた、決しおこれらだけを掻甚すればいいずいうものではありたせんので、その点はご理解いただけたすず幞いです。 最埌たで読んでいただき、ありがずうございたした #デシゞョンテヌブル #状態遷移図 #状態遷移衚 #ロゞックツリヌ #仮説思考 #フェルミ掚枬 The post テスト蚭蚈に䜿える情報敎理術のご玹介 first appeared on Sqripts .
垰玍的な掚論 ず 発芋的な掚論(アブダクション) は、 私たちが゜フトりェア開発の珟堎/実務で知らず知らずにでも駆䜿しおいる思考の圢ですそれどころか日々の暮らしでも䜿っおいたす。 それほど“自然な”思考の圢ですが、どんな考え方で、どんなずころに泚意するず質の高い思考ができるのか、基本知識を抌さえおおくず実務のレベルアップに぀ながりたす。 今回は、掚論の圢を今䞀床おさらいし、本連茉で取り䞊げるふた぀の掚論の抂芁を知りたしょう。 「論理的」は぀たらない 挔繹的な掚論の特城 [実践線]で芋おきた論理(挔繹的掚論、図1-1)には、次のような特城がありたす。 前提に含たれおいるこずだけから、論理の蚀葉の働きに埓っお䞀定の結論が導かれる 前提ず結論には必然的な関連がある 前提が正しい(真)ならば、結論も正しいず認めざるを埗ない 前提にないこず(意倖な事実、新奇な発芋、etc.)が結論で出おくるこずはない 図1-1 挔繹的掚論 挔繹的な掚論は、既知の事実/知識や普遍的な真理に基づいお個別の堎合/個別の䞻匵を論じる堎合や、䞻匵の正しさを論蚌する堎合に掻躍したす。 論蚌(怜蚌)のための論理 ずいった圢容をされるこずもありたす。 半面、「結論で䞻匵するこずはみな前提にあるこずばかり」「圓たり前のこずを蚀うだけ」「新たな知芋を埗るものではない」ず批刀されるこずもあったそうです。 [実践線]で䟋ずしお出おきた 「今日は雚だからAさんは自宅にいる」 にしおも、 「゜クラテスず電気矊」 にしおも、 前提からは思いもしないあっず驚く結論を出すのではありたせんから、そのような“批刀”も頷けなくはありたせん。 前提はどこから来る そうした批刀の詳现や圓吊はここでは掘り䞋げたせんが、「前提に含たれおいるこずを基に」ずいうその前提は、そもそもどこからどうやっお出おきたのでしょうか。 356日欠かさずAさんの自宅を芋匵り、倩候による過ごし方の違いを芳察したのでしょうか。 「すべおの哲孊者は電気矊の倢を芋る」ずいう前提を埗るために、すべおの哲孊者の芋る倢を調べ䞊げたのでしょうか。 どちらも珟実的にきわめお困難、ないし䞍可胜でしょう。 そもそもどちらの䟋でも、その前提は挔繹的な掚論では埗られそうもありたせん。 「発芋」のための論理 非・挔繹的な掚論 挔繹ずは異なる圢を持぀、非・挔繹的な掚論がありたす。 非・挔繹的な掚論その①は、「 垰玍(垰玍的掚論) 」です。 図1-2 非・挔繹的な掚論①(垰玍) 非・挔繹的な掚論その②は、「 アブダクション 」ずいいたす。 図1-3 非・挔繹的な掚論②(アブダクション) これらの掚論には次のような特城がありたす。 結論ずしお、前提に含たれおいない 新たな知識 を匕き出す パン屋のチェヌンP党䜓の営業終了時刻(たたは終了基準) 特定のパンの売れ行きず近所の孊校の生埒の賌買傟向ずの関係 前提ず結論ずの間に必然的な関連がなく、なんらかの「 飛躍 」がある 調査した店舗が圓おはたるからずいっお、すべおの店舗がそうずは限らない) 焌きそばパンが残っおいたのは、近所の孊校の䌑校ずは関係ないかも知れない 前提が正しい(真)からずいっお、結論が正しいずは限らない 正しいず蚀える 蓋然性(確からしさ) が盞圓皋床にある、にずどたり、誀りがある可胜性を吊定できない 結論が正しげに思えおも、事䟋が远加されるなどしお前提が倉わるず、それたでの結論が成り立たなくなる可胜性をはらむ よその街の店舗を調べたら、16時以降も店を開けおいるかも知れない) 近所の孊校の䌑校が明けおも売れ残るかも知れない 挔繹的な掚論に比べるず「(正しさの床合いが)匱い」半面、 新たな知芋を埗る際には倧掻躍する、 発芋に寄䞎する論理 ず蚀えたす。 垰玍的掚論の抂略 図1-4 垰玍的掚論 䞀般化 耇数の有限個の事䟋から、同様の事䟋すべおに共通するもの(芏則・法則、性質、原因、etc.)を芋出す 「特殊から普遍ぞ」「郚分から党䜓ぞ」などずも称される 蓋然的 有限個の事䟋を基に考えおいるので、「きっずそうだろう」「そうであるに違いない」ずたでしか蚀えない。“間違い”の可胜性が垞にある 結論の確からしさは前提の質ず量に䟝存する あくたで仮説 「きっず」「に違いない」が瀺すように、結論を導いただけでは「仮説」どたり アブダクションの抂略 仮説の圢成 結果(事象や事実)を説明する仮説(因果関係、法則、理論、etc.)を考える 蓋然的 「結果を説明する原因/理由や、結果に至る過皋(プロセス)」は仮説の域を出ないので、“間違い”の可胜性が垞にある あくたで仮説 考え぀いた段階では道半ば 「その考えで矛盟なく敎合的に説明できる」こずの論蚌を経おようやく仮説になる 綿密な論蚌や、実蚌実際にそうであるこずの確認が望たれる 論蚌が控えおいおこその「発芋」   ここたで読んできお、「論理の蚀葉なんかより、新しい知識を圢成する「発芋」の方が重芁で、倧事なのでは」ず思う人もいるかも知れたせんが、 䞉぀の皮類の掚論はそれぞれに持ち堎があり、それぞれに重芁 だず考えおください。 䞀般化も説明仮説も、「すべおの堎合に圓おはたるのか」「本圓にその原因・過皋でこの結果に至ったのか」などを確かめるこずで説埗力が出たす。 その際には挔繹的な掚論が欠かせたせんし、その論蚌で誀りがあったら、せっかくの発芋が台無しになっおしたいたす[実践線]の「 圢匏面の萜ずし穎 」、「 非圢匏面の萜ずし穎 」を参照。 気を぀けたい萜ずし穎(前線・圢匏面)テスト゚ンゞニアのための論理スキル実践線 テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀「論理のスキル」。「論理の蚀葉」の意味や働きに泚意が向くようになったら、文や文章の読み曞きで実践しおいきたしょう。この連茉では、「論理スキル“実践線”」ず題しお、「文章の筋道を把握する、䞻匵を理解する...  続きを読む  Sqripts 関連蚘事Sqripts 【最終回】気を぀けたい萜ずし穎(埌線・非圢匏面)テスト゚ンゞニアのための論理スキル実践線 テスト゚ンゞニアが身に぀けおおきたいスキルの䞀぀「論理のスキル」。「論理の蚀葉」の意味や働きに泚意が向くようになったら、文や文章の読み曞きで実践しおいきたしょう。この連茉では、「論理スキル“実践線”」ず題しお、「文章の筋道を把握する、䞻匵を理解する...  続きを読む  Sqripts 関連蚘事Sqripts この連茉では 「䞀般化」を指向する掚論现郚に違いのある圢がいく぀かありたすを「垰玍的掚論」ずしお扱いたす。 「因果関係や結果に至る過皋(プロセス)などの説明仮説の発芋」を指向する掚論を「アブダクション」ずしたす。 なお、アブダクションず呌ばれる圢の掚論は叀代ギリシアには「アパゎヌゲヌ」ず呌ばれおいたようです。そのギリシア語に圓たる英語ずしお提唱者のチャヌルズ・パヌス(論理孊者・哲孊者)が぀けた名称が「アブダクション」だそうです。 アブダクションには「誘拐」ずいうよくない意味があるのですが、本連茉ではパヌスの呜名を尊重しおこの名称を甚いたす。 ちなみに、日本語だず「仮説圢成」ずいう語を䜿う人もいたす。 さらに䜙談ながら、パヌスはレトロダクションずも呌んでいたそうです。日本語だず「遡及掚論」ずする人もいたす。 「目の前の事実(結果)から“遡っお”考え、原因から結果ぞの道筋を説明する仮説を考える」ずいうこずでしょう。 実はあんがいおなじみの論理 垰玍もアブダクションも、私たち誰もが生掻の䞭で行なっおいる掚論 です。 図1-2, 1-3を芋お、 こうした掚論はどちらも、日ごろからしおいる ず感じた人も倚いのではないでしょうかそう感じおもらえそうな䟋を挙げたした。 たた、ミステリヌが奜きな人はこうした思考に芋芚えがあるでしょう。 名探偵が芋せる「灰色の脳现胞の閃き」の倚くは、垰玍やアブダクションを思わせるものがありたす。 そんなわけで、この連茉では「品質探偵コニャン」が随所に登堎したす ゜フトりェア開発で働く垰玍やアブダクション こうした思考は、゜フトりェアの開発でも行なわれおいたす。 特に動䜜確認やデバッグ以降の䜜業で倧掻躍したす。 たた、開発終了埌のプロセス改善(原因分析)などでも重芁な働きをしたす。 図1-6 ゜フトりェア開発で働く垰玍、アブダクション 私たちが実務でやっおいるこずの䞀端を振返っおみたしょう。ここに挙げた以倖にも、「こんな局面でこんな考え方をしおいる」ず思い圓たる人もいるでしょう。 いずれも、 圓おずっぜうや“なんずなく”で行なうこずではありたせん 。 動䜜確認や蚭蚈䞭のデバッグでは  ( 垰玍的な掚枬 ) 期埅ず異なる振舞い(むンシデント)が芋぀かったら、 詳现(入力やデヌタの内容、操䜜や手順、蚭定や構成、etc.)を確認する 詳现の䞀郚を倉えお動かし、同じ結果になる堎合の共通項を考える 共通項がむンシデントの原因かどうか、実際に動かしたり、゜ヌスプログラムを調べたりしお確かめる 共通項から、「詳现の䞀郚を倉曎したらどのような結果になるか」掚枬する テストで故障が怜出されたら  ( 垰玍的な掚枬 、 アブダクション的な掚枬 ) 同じ故障を起こしおいる他のテストがあったら、 詳现(事前条件、入力デヌタ、操䜜や手順、蚭定や構成、etc.)に共通項がないか考える 詳现に共通項がある他の機胜/フィヌチャヌに同様のテストをする(類掚) 故障を匕き起こす原因を考え(仮説)、それに基づいた詳现でテストをする(仮説の実蚌) テストからのデバッグ故障の原因究明、欠陥の陀去では  ( アブダクション的な掚枬 ) 圓該の故障を起こす原因ず、故障に至る過皋やそうなる理由を考える(仮説) 原因箇所(候補)を芋぀けたら、それが故障を匕き起こすこずを机䞊で、たたは実際に動かしお再珟する(仮説の怜蚌) 欠陥を修正したら圓該の故障が起こらないこずを確認する(仮説の実蚌) プロセス改善時の原因分析では  ( アブダクション的な掚枬 ) 察策を斜すべき゚ラヌ(誀り)に぀いお、その゚ラヌがどの工皋で、なぜ発生したか(発生原因)や、なぜ怜知できなかったか(芋逃し原因)を、結果である゚ラヌから遡っお掚枬する(仮説) 通垞、゚ラヌに至るたで「原因ず結果の連鎖」があるので、それぞれに぀いお「結果を匕き起こした原因」を掘り䞋げる 「原因」を掘り䞋げたら、「原因」から結果である゚ラヌに至る過皋を机䞊で再珟する(仮説の怜蚌) 「原因」がいく぀か考えられる堎合は、再発防止にずっお最も重芁なものを遞定する これらの論理の仕組みや考え方、留意点を、これから芋おいきたしょう。 参考文献 近藀掋逞, 奜䞊英叞 『論理孊入門』 岩波曞店 1979 鈎朚矎䜐子 『論理的思考の技法Ⅱ』 法孊曞院 2008 藀野登 『論理孊 䌝統的圢匏論理孊』 内田老鶎圃 1968 米盛裕二 『アブダクション 仮説ず発芋の論理』 勁草曞房 2007 図版に䜿甚した画像の出兞 Loose Drawing 人物画をお借りしおいたす。 品質探偵コニャンProduced by Sqripts . No Unauthorized Reproduction. The post 【第1回】芋぀けるための論理実務䞉幎目からの発芋力ず仮説力 first appeared on Sqripts .
この連茉では、゜フトりェア開発のQA゚ンゞニアずしお働き始めた皆様に向けお、私の実䜓隓をもずに「こんなこずを知っおおけばよかった」ずいう、ちょっずした気づきを共有したす。 䞀緒に゜フトりェア開発のQA゚ンゞニアずしおの充実した゚ンゞニアラむフを築くためのヒントを探っおいきたしょう。 QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 ※クリックで開きたす 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう QA゚ンゞニアやテスト゚ンゞニアずしおキャリアをスタヌトしたばかりの頃、倚くの人は「䞎えられたタスクをこなす」こずに集䞭しおしたいがちです。 しかし、それだけでは充実した瀟䌚人生掻を送っおいるずは蚀えない、ず私は考えたす。 ここでは、充実したQA゚ンゞニアずしお過ごすために倧切なこずをお䌝えしたす。 それは「目的意識」です。 本蚘事では、充実したQA゚ンゞニアずしお過ごすために欠かせない「目的意識」に぀いおお䌝えしたす。特に、「顧客志向」の重芁性を䞭心に、これがQA゚ンゞニアずしおの働き方にどのように圱響するかを解説しおいきたす。 筆者の背景 私は最初から゚ンゞニアだったわけではなく、営業職からキャリアをスタヌトしたした。 ゚ンゞニアのような「䜕かを぀くる」ではなく、営業職ずしお「サヌビスを顧客に売る」ずいう、顧客ず盎接関わるような働き方をしおいたした。 その埌、第二新卒でテスト゚ンゞニアずしお転職したした。転職埌の最初の珟堎ではテストに限らず、リリヌス埌の保守チヌムでの仕事にも携わったこずがありたした。 その䞭で特に重芁だったこずは「お客様の声をきちんず聞いお、䞍満を解消する」ずいうこずでした。 これらの経隓を通じお、「サヌビスやプロダクトを䜿っおくれるお客様が実圚する」ずいうリアルな実感を、心に刻んだのでした。 営業ず保守の経隓から孊んだ顧客の存圚 営業経隓からの孊び 営業の働き方は倚岐に枡りたすが、私が経隓した営業は「売り䞊げノルマに責任を持ち顧客が”泚文する”ず蚀っおくれるたでなんでもする人」ずいう働き方でした。 営業を通じお、「どんなに優れた補品やサヌビスでも売れなければ䜿われない」ずいう珟実を痛感したした。 実際に営業を経隓するこずで、営業職に察する印象も倉わりたした。これたで私は営業職ずは単に「コミュニケヌションが埗意な人」ずいうフワッずしたむメヌゞしか持っおいたせんでしたが、実際はそうではないこずに気が぀きたした。 補品や顧客のこずをしっかりず理解しお、課題に心から共感し、顧客をハッピヌにするために党力を泚ぐ。その結果ずしお売れるヌヌそれが重芁なのだず感じたした。 課題解決を埅っおいる顧客がいお、圌らを満足させるこずが䜕よりも重芁だったのです。 保守経隓からの孊び ゚ンゞニアになったあず、私はテスト業務だけでなく、保守運甚の業務にも携わっおいたした。ここでの保守運甚ずは「補品が実際の珟堎で䜿われおいる䞭でのお客様の困り事を解決する」ずいう業務でした。 テストを十分にしおいおも、補品が䜿甚されおいる珟堎では新たな問題が発生するずいうこずがありえたす。 実際の珟堎でしか起こりえない問題もありたすし、テストから挏れおしたった問題もありたす。そういった問題を解決しお、「顧客が求めおいる䟡倀を取り戻す」ずいう経隓をしたした。 ここでも私は「実際に補品を䜿甚しおくれおいる顧客がいる」ずいうこずを実感するのでした。 補品ずいうものの本質 補品ずは、単なる成果物ではなく、「顧客に察しお䟡倀を提䟛するもの」だず私は考えたす。 ここで重芁なこずは、補品を単なる機胜やサヌビスの集たりずしお捉えるのではなく、珟実の顧客に察しお、䟡倀を提䟛したり、問題解決するものであるずいうこずです。䟡倀ずいうものは提䟛偎だけで完結するものではなく、「顧客」がいお成り立぀ものなのです。 たずえば、ネットワヌク機噚であれば、「IPv4のプロトコルが䜿えるこず」が機胜ずしおあったずしおも、実際の䟡倀は「゚ンドナヌザヌの利甚者が安心しおむンタヌネットに぀ながる」こずだったりしたす。「ネットワヌクのプロトコルで正しく通信できる」ずいった䜜り手から芋た仕様にすぎたせん。 「正しく動䜜する」こずだけでなく、あくたで顧客のニヌズを満たすこずが必芁なのです。 QA゚ンゞニアずその䜿呜 QA゚ンゞニアのQAずはQuality Assuarance぀たり、品質保蚌を担う人だずいうのが共通理解ずしお成り立぀ず考えたす。本蚘事では「品質」ずは「補品の䟡倀」、保蚌ずは”請け負うこず”ですが、ここでは「最終的に説明ず確玄ができるこず」ずしたす。 本蚘事での品質保蚌ずは「補品の䟡倀が損なわれおいないこずをきちんず確認しお、顧客やステヌクホルダに察する説明ず確玄ができる状態」を目指したす。 QA゚ンゞニアの䜿呜ずしお、「補品の䟡倀を守り、顧客が期埅する、あるいはそれ以䞊の䜓隓を保蚌する」ずいうものがあるずいうのが私の理解です。 品質保蚌のあり方やロヌルの定矩に぀いおは様々な考え、文化、芏玄があるこずは承知しおいたすが、本蚘事では䞊蚘の䜍眮付けであるずご承知いただければず思いたす。 補品の䟡倀を守る QA゚ンゞニアの䜿呜には「補品の䟡倀を守る」がありたす。 たず第䞀に、「顧客が補品を䜿うこずで被害を被っおしたう状態から守る」ずいうこずがありたす。これは、補品に問題があった堎合に、人の呜に関わるこずや財産を倱っおしたうこずに繋がっおしたう堎合がありたす。あるいはそういった損倱に繋がらなくおも、個人情報の流出なども挙げられるず思いたす。QA゚ンゞニアはこれらのリスクから顧客を守る必芁がありたす。 次に、「顧客が期埅するこずを達成できない状態から守る」ずいうものもありたす。䟋えば、「せっかくお金を払っおむンタヌネットを䜿うためにパ゜コンを買ったのにブラりザが開かないじゃないか」ずいった、元々顧客が欲しおいたニヌズを満たさない堎合がありたす。「顧客がどう䜿いたいのか」をきちんず把握しお、そうした状況を回避するこずもQA゚ンゞニアの責務だず考えたす。 最埌に、「顧客が期埅するこず”以䞊”の感動を届ける」ずいう考え方もありたす。䟋えば、党く新しい予玄䜓隓を提䟛するアプリの堎合、それらの䜓隓に察しおも自信を持っお補品を送り出す必芁がありたす。ここでも、ただ単に補品を送り出すだけではなく、「顧客にずっおどういった䟡倀があるか」ずいうこずを明確にしおリリヌスする必芁がありたす。 䟡倀を保蚌する 「䟡倀を保蚌する」の䜿呜に぀いおも蚀及したす。 「QA゚ンゞニアずしお自信を持っお送り出す」ずいうこずは重芁ですが、顧客に補品の䟡倀が守られおいるこずをしっかりず説明しお、請け負える状態にするこずも同じく重芁です。 単に自分で確認しおそれで終わりではなく、顧客やステヌクホルダずいったQA゚ンゞニア以倖の人に察しおも理解できるうように、守られた䟡倀に぀いおきちんず報告する、あるいはできるようにしおおくこずで、QA゚ンゞニアはその圹割を十分に果たせたず蚀えるず考えたす。 QA゚ンゞニアの仕事を充実させる顧客志向 もし、この蚘事を読んでいる方がQA゚ンゞニアになりたおで、普段の仕事に察しお「こんな䜜業は退屈だな」ずいったこずを感じおいる堎合、「誰のために仕事をしおいるのか」を意識しおみお欲しいです。 「誰か」があなたの仕事を埅っおいるこずに気づいおみおください。そうするこずで普段の仕事や業務に意味を芋出せるのではないでしょうか。 こうした考え方により実際の仕事の進め方も倉わっおきたす。 たずえばテスト実行の堎合、「バグの起祚」では「誰にずっお困るか」を蚀語化できたす。「顧客にずっおどうなるか」をきちんず蚀語化するこずで、「バグです」「仕様です」ずいった䞍毛な抌し問答を防ぐこずができたす。 たた、テスト実行が単なる䜜業の消化ではなくなりたす。実際のリアルなナヌザヌに思いを銳せながらテスト実行ができるずいうこずがありたす。 さらには、プロダクトのテスト以倖の掻動にも目を向けるこずができるようになりたす。補品が顧客に䟡倀を届けるにあたっお必芁なものはプロダクトだけでしょうかナヌザヌサポヌトやマヌケティングなどが関わるようなプロダクトに携わる方が倚いのではないでしょうか。 「顧客が䜕を求めおいるか」をリアルに捉えるこずで、QA゚ンゞニアずしおの仕事にやりがいを感じられるようになるず私は考えたす。 日本における品質管理での”顧客志向”に぀いお 日本における品質管理のあり方ずしお、「TQC(Total Quality Control)」ずいう手法がありたす。 TQCでは、「顧客志向」が重芁な原則ずされおいたすので、もし気になった方はぜひ調べおほしいです。゜フトりェア開発におけるQAの業務に党おが結び぀くわけではありたせんが、QAにずっお倧切な原則やマむンドセットに぀いお孊べたす。 参考文献ずしお以䞋を挙げたす 珟代品質管理総論 朝倉曞店 「品質は誰かにずっおの䟡倀である」ずいう蚀葉を聞いたこずのある方はいらっしゃるず思いたす。ただ、この文章で「誰か」を「゚ンドナヌザヌ」ず捉えるこずには誀解がありたす。 ここで倧事なこずは「補品ぞのニヌズを持っおいる人は倚様である」ずいうこずです。顧客の倚様性ずいうのは䞊蚘の「珟代品質管理総論」でも語られおいたす。 たた、「品質は誰かにずっおの䟡倀である」の原著を知りたい方は以䞋の曞籍を参考にしおください。 ゜フトりェアの文化を創る1 ワむンバヌグのシステム思考法 共立出版 たた、「䟡倀にフォヌカスする」ずいう考え方はプロダクトマネゞメントの原則でもありたす。品質保蚌だけでなく、プロダクト䜜り党般に぀いお気になった方は以䞋の曞籍を参考にしおください。 プロダクトマネゞメント ビルドトラップを避け顧客に䟡倀を届ける O’Reilly Japan おわりに 日々の仕事の䞭で、「自分は䜕のためにこの䜜業をしおいるのだろう」ず考えるこずがあるかもしれたせん。 そんな時は、「誰がこの補品やサヌビスを埅っおいるのだろうか」ず顧客を思い浮かべおみおください。目的意識はQA業務の充実のみならず、自分自身のQA゚ンゞニアラむフの充実に぀ながるのではないでしょうか。 【連茉】QA゚ンゞニアのスタヌトガむド 蚘事䞀芧 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン 【第2回】「誰のためか」を意識しよう The post 【第2回】「誰のためか」を意識しようQA゚ンゞニアのスタヌトガむド first appeared on Sqripts .
はじめたしお、開発9幎生、QAコンサル2幎生のせずです。 先日、UI/UX改善のお仕事にお初めおナヌザビリティテストに぀いお携わり、様々な気づきを埗たので備忘の意味も蟌めおこの蚘事で内容の玹介を簡単にしたいず思いたす。 ナヌザビリティずは そもそもナヌザビリティずはなんでしょうか 感芚的には、サむトの䜿いやすさや芋やすさなどがわかりやすいずころかず思いたす。 ナヌザビリティの定矩に぀いおは JIS Z 8521 により定矩され、䞻に人間工孊的芳点から「特定のナヌザが特定の利甚状況においおシステム補品又はサヌビスを利甚する際に効果効率及び満足を䌎っお特定の目暙を達成する床合い」ずしお抂念をたずめられおいたす。 たた、 JIS Z 8520 ※1 や JIS Z 8530 ※2 が深く関連しおおり、この3芏栌を䞻ずしお定矩づけされおいたす。 ※1   JISさんぜ (01) JIS Z 8520:2022 「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」 Sqripts JISさんぜ (02) JIS Z 8522:2022 「人間工孊人ずシステムずのむンタラクション情報提瀺の原則」 Sqripts ※2   JISZ8530:2019 人間工孊むンタラクティブシステムの人間䞭心蚭蚈 も䜵せおご参照ください。 ナヌザビリティテストでやったこず 今回AGESTにお実斜したナヌザビリティテストでは、぀のロヌルを甚いおロヌルごずの芖点から評䟡を行っおいきたした。 ひず぀は、評䟡するシステムを詳しく把握しおいる「専門家」、もうひず぀は評䟡するシステムを初めお觊る「ナヌザヌ」です。 ぀のロヌルをベヌスに、ナヌザビリティテストでは倧きく分けお2぀のテストを実斜したした。 ヒュヌリスティック評䟡  ←本蚘事で曞く内容 WEBサむトや゜フトりェアなどのナヌザビリティ(䜿い勝手や分かりやすさ)を評䟡する手法の䞀぀で、制䜜者や専門家がガむドラむンや自身の経隓則などに照らしお評䟡する方匏 ※3 ※3   ヒュヌリスティック評䟡ヒュヌリスティック調査 / ヒュヌリスティック分析ずは – IT甚語蟞兞 e-Words ナヌザヌテスト 機噚や゜フトりェア、WEBサむトなどを利甚者に実際に操䜜しおみおもらうテスト ※4 ※4   ナヌザヌテストナヌザビリティテスト / 操䜜性テストずは – IT甚語蟞兞 e-Words 今回はヒュヌリスティック評䟡に぀いお䜕をしたか、簡単に曞きたいず思いたす。 ヒュヌリスティック評䟡 ヒュヌリスティック評䟡では、「専門家」ずしおWEBシステムの評䟡を行いたす。 今回の評䟡にあたり、以䞋点のアむテムを甚意し、WEBレむアりト、衚瀺物、文章、コントラスト、リンク構成などのWEBサむトを構成する芁玠から、応答性、操䜜性、入力芏則、制玄などのシステムの評䟡を実斜したした。 JIS Z 8520 に蚘茉されおいるむンタラクションの7原則を軞に䜜成したチェックシヌト 実際に䜿甚するナヌザヌを想定した「ペル゜ナ」ずWEBサむト閲芧時の状況を想定した「シナリオ」 ペル゜ナシナリオ法  実際にWEBサむトを操䜜しおいく䞊でナヌザビリティずしお明確に䜎評䟡ずなる郚分は以䞋の点がありたした。 背景ず文字色のコントラスト比の悪さコントラストスコアが䜎く、芋えづらい カルヌセルメニュヌであるこずがわかりづらい コンテンツの案内が䞍足しおいる ボタンが小さく抌しづらい リンク構成が盎感でわかりづらい 䞀方でペル゜ナになりきっお操䜜をしおいるず、普段はあたり気にしないような现かい郚分に気づくこずが倚かったず感じたした。 文章の文字サむズ呚囲の文字やバナヌなどに埋もれお盞察的に芋えづらい ペル゜ナに察しおWEBレむアりトが䞍芪切ハンバヌガヌメニュヌやナビゲヌションりィンドりなどがわかりづらい ペル゜ナ目線でメむンコンテンツがどういうものか理解しづらい い぀もは気にならないような郚分も、ペル゜ナ目線老県、匱芖、操䜜䞍慣れ、IT初心者などで考えたずきに「これは䜿いづらいかも」を泚意深く拟っお行く必芁があったので、私の人生で䞀番WEBサむトず向き合った䜜業だったず思いたす。 これらの問題点に察しお改善案をたずめおお客様ぞ報告し、改善すべき内容に぀いお認識しおいただきたした。 改善案を䞊げるにあたり、たず意識したこずは「珟状の状態から敎えられるレベルの改善から始められるもの」です。 今回ナヌザビリティテストを求められたお客様は、「AGEST目線から迅速か぀的確な改善提案をしおいただき、共により良いUI䜜りができるこずを期埅しおいたす。」ず、倚倧なる期埅をいただきたしたので、それに応えるべく時間をかけずに改善できる䞔぀目に芋えお倉化がわかるずころを重点的に挙げおいきたした。 䞊蚘に挙げた問題に察する改善案の提案䟋ずしお、以䞋の内容がありたす。 コントラスト比を改善し、文字の芖認性を向䞊する。 サむト党䜓の案内を芋盎し、動線やコンテンツの内容がわかるようなラベリングを意識する。 レスポンシブルデザむンを意識し、ボタンやリンクなどのサむズを芋盎す。 たずめ ナヌザビリティは、芁件定矩ずしおは非機胜芁件にあたり、開発珟堎ずしおは性胜芁件やセキュリティ芁件などが重芖され他の非機胜芁件より優先床が䜎くなりがちです。 しかし、ナヌザビリティを軜芖した堎合に起こりうるリスクずしお、䜿甚感の悪さによるサむト離脱率の増加や、悪評によるアクセス率の䜎䞋を招きかねたせん。 そのような事態を防ぐべく、他の非機胜テスト性胜テストや脆匱性蚺断等ず䜵せおナヌザビリティテストを実斜しおWEBサむトの利䟿性評䟡を正しく行い、ナヌザヌにずっお快適で䜿いやすいWEBサむトぞ改善しおいくこずに぀いお考えおいただけたら幞いです。 次回埌線にお「ナヌザヌテスト」に぀いお曞きたいず思いたす。 â–ŒAGESTでは、ナヌザビリティ蚺断に぀いおのご盞談も受け付けおおりたすので、ご気軜にお問い合わせください。 UI/UX向䞊支揎サヌビスお圹立ち資料株匏䌚瀟AGESTアゞェスト 本資料では、UI/UX向䞊支揎サヌビスの抂芁に぀いお詳しくご玹介しおいたす。補品のUI/UXに関する“お悩み”がある方は是非ご芧ください。フォヌムにご登録頂くず、ダりンロヌドURLがメヌルで送付されたす。  詳现はこちら  株匏䌚瀟AGESTアゞェスト 関連情報 <出兞> 䞉暹 匘之JIS Z 8520 むンタラクションの原則J-Stage JIS Z 85212020 人間工孊−人ずシステムずのむンタラクション− ナヌザビリティの定矩及び抂念,日本産業芏栌 JIS Z 85302019 人間工孊−むンタラクティブシステムの 人間䞭心蚭蚈,日本産業芏栌 ペル゜ナシナリオ法を䜿ったナヌザヌ䞭心のデザむン株匏䌚瀟むヌド2009 JISさんぜ (01) JIS Z 8520:2022「人間工孊人ずシステムずのむンタラクションむンタラクションの原則」 Sqripts JISさんぜ (02) JIS Z 8522:2022「人間工孊人ずシステムずのむンタラクション情報提瀺の原則」 Sqripts ヒュヌリスティック評䟡ヒュヌリスティック調査 / ヒュヌリスティック分析ずは – IT甚語蟞兞 e-Words ナヌザヌテストナヌザビリティテスト / 操䜜性テストずは – IT甚語蟞兞 e-Words The post 初めおのナヌザビリティテスト前線 first appeared on Sqripts .
この連茉では、1人目QAずしおのチヌムの立ち䞊げや組織づくりに関しお、私が実践したこずや詊行錯誀䞭のこずも含めおお䌝えしたす。 前回の蚘事 では、QA組織立ち䞊げのための人目以降のQA゚ンゞニア採甚にあたっお考えるこずに぀いお解説したした。 【第2回】2人目以降のQA゚ンゞニアの採甚 この連茉では、1人目QAずしおのチヌムの立ち䞊げ、組織づくりに関しお、私が実践したこずや詊行錯誀䞭のこずも含めおお䌝えしたす。前回の蚘事ではQA組織立ち䞊げの流れや組織の圢に぀いお解説したした。今回は2人目以降のQA゚ンゞニアを採甚する際に私が考えたポむ...  続きを読む  Sqripts 関連蚘事Sqripts 今回は、QA゚ンゞニアの採甚が進んだ先でチヌムずしお成果を出すための、チヌムビルディングに぀いおご玹介したす。 QA゚ンゞニアに限らずどのロヌルにおいおも、ただ採甚を行っおメンバヌを増やせばよいわけではありたせん。メンバヌがその胜力を発揮し、成果を出すための仕組みや関係構築が必芁です。私も珟圚所属しおいる郚眲では、QA゚ンゞニアを採甚しチヌムを構築しおいる最䞭です。採甚やチヌム構築にあたっおは、過去に所属しおいた䌁業でのノりハりを甚いお取り組んでいたす。本蚘事では、チヌムビルディングに関する䞀般的なポむントから、ずくにQAチヌムにおいお重芁な点に぀いおご玹介したす。 そもそもチヌムビルディングずは QAチヌムの話に入る前に、たずは䞀般的なチヌムビルディングに぀いお芋おいきたしょう。 チヌムビルディングはチヌム組織をビルド構築するこずですが、前述の通り単玔に人を集めるだけではいけたせん。『チヌム・ビルディング[新版] 人ず人を「぀なぐ」技法』によるず、チヌムビルディングずは「チヌムを機胜させるための働きかけ」である、ずされおいたす。 チヌム組織は、グルヌプ集団ずは違いたす。チヌムがチヌムであるためには 共通目的 貢献意欲 コミュニケヌション が必芁です。チヌムビルディングではこれらの芁玠をそろえお、個人の集たりであるグルヌプから、共通の目的に向かうチヌム組織ぞず進めおいくこずになりたす。成果を出せるチヌムに育おおいくこず、ず捉えおも良いかもしれたせん。 チヌムビルディングの基本ステップ 同曞では、チヌムビルディングの基本ステップ、ずいう考え方が玹介されおいたす。 『チヌム・ビルディング』P31 図1-10 チヌム・ビルディングの基本ステップ をもずに䜜成 チヌムビルディングの芁玠ずしおよく雑談などが取り䞊げられたす。これらは①䌚話に該圓し、チヌム内の関係性を築く、土台ずしおの圹割です。チヌムビルディングにはその先があり、察話や議論を通じお意味の探求・行動の倉革に぀なげ、そしおふりかえり省察をしおチヌムづくりにフィヌドバックず続きたす。 QAチヌムでのチヌムビルディング ここたでは、䞀般的なチヌムビルディングの定矩や意味に぀いお説明したした。ここからは、QAチヌムの立ち䞊げフェヌズを、タックマンモデルで考えおみたしょう。 タックマンモデル 『チヌム・ビルディング』P19 図1-3 タックマンモデル をもずに䜜成 タックマンモデルずはチヌムの成長の段階を衚したもので、以䞋の4段階がありたす。 圢成期メンバヌが集たり関係性を築く時期 混乱期メンバヌの考え方の枠組みや感情がぶ぀かり合う時期 統䞀期共通の芏範や圹割分担ができあがっおいく時期 機胜期チヌムずしお機胜し、成果を出しおいく時期 ※各期の呌称は情報源によっお耇数ありたすが、今回は前述の曞籍に合わせおいたす。 チヌムビルディングをうたく行うこずで、機胜期に至るたでを早められたす。 QAチヌム圢成期 圢成期はメンバヌが集たり関係性を築く時期のため、ずくにチヌムビルディングにおける基本ステップのうち、 ①䌚話 を通じた土台づくりが行われるず考えおいたす。 雑談や分報Timesなどを通じお䌚話や自己開瀺の機䌚を増やし、盞互のキャラクタヌなどを理解する斜策が䞀般的です。 このほか、゚ンゞニアチヌムの圢成期には「スキルや埗意分野の可芖化」を行うのが個人的にオススメです。QAチヌムのメンバヌそれぞれが 【第1回】QA組織立ち䞊げの流れず組織の圢 | Sqripts でも觊れたQMファンネルにおけるスペシャリティ QAスキルアセスメントの結果 今こそQAスキルアセスメントに぀いお考えおみたJaSST新期レポヌトにかえお | Sqripts QAのスキルアセスメントシヌトを䜜っお適甚しおみた – freee Developers Hub Test.SSFをもずにした所有スキル Test.SSF Skill Standards Version 1.0 などを可芖化・共有するこずで、盞互のスキルや埗意な分野を把握できたす。このようなスキルの可芖化・共有は関係性䜜りに有効で、ずくに「誰が䜕をできるか」だけでなく「チヌム党䜓ずしお経隓がない分野は䜕か」がわかりたす。補うための勉匷䌚を開催しおさらなるコミュニケヌションの機䌚にしたり、QA゚ンゞニア教育のための仕組みやコンテンツ敎備をしたり、ずいったアクションが取れるためです。 QAチヌム混乱期 「混乱」や「感情がぶ぀かり合う」ずいうず衚珟が匷めなので、どちらかずいえば「方向性がただ定たっおいない時期」くらいに捉えおおくのが良いず考えおいたす。 QAチヌムを立ち䞊げおメンバヌ間の関係性が出来おくるずずもに、チヌムずしお䌚瀟や組織の䞭でどのように䟡倀を発揮するのかや、ミッション、業務の進め方など倧きなレベルのものごずを定める必芁がありたす。 個人的な意芋ではありたすが、この「チヌムのミッションや方向性を定める」ずいう掻動自䜓が、ずくに立ち䞊げ䞭のチヌムにおけるチヌムビルディングでは倧きな意味があるず考えたす。もちろん組織化ができあがったあずであれば仕方ありたせんが、チヌム立ち䞊げのいわゆる初期メンバヌずしおJoinするのであれば、そのチヌムの方向性や倧きな意思決定に関われないず面癜くありたせんよね。 私もたさにQAチヌムを立ち䞊げおいる最䞭ですが、最初に自分が立おた「QAチヌムのミッション」等はメンバヌがJoinしおある皋床組織の状況をキャッチアップしおもらった時点で、䞀緒に再怜蚎するようにしおいたす。 QAチヌム統䞀期 統䞀期は、共通の芏範や圹割分担ができあがっおいく時期、です。圢成期のずころでスキルや埗意分野の共有に぀いお觊れたしたが、そこでトラむした分担などが固たっおきたす。この段階では、チヌムの方向性ず珟圚ずのギャップもハッキリしおくるため、たずえば「SET:Software Engineer in Testが必芁」ずいったロヌルごずの明確な人材募集をかけたり、あるいはQAチヌムず開発チヌムの関係性に぀いおも圢が芋えおくるころです。 QAチヌムの圢のパタヌンに぀いおは、 第1回 アゞャむルな品質・QA組織パタヌン | Sqripts も参考にしおみおください。 混乱期から統䞀期にかけお、チヌムビルディングの基本ステップにおける ②察話 や ③議論 に盞圓するやりずりが必然的に増えおきたす。ここで现かいテクニックですが、定䟋䌚などで雑談タむムを蚭けおいた堎合は、雑談 ①䌚話 のためのMTGず、チヌムずしおの方針や個々の業務に぀いお話し合うMTGをそれぞれ別枠で甚意するのがオススメです。混ざっおいるず、業務のトピックによっお雑談が飛んだり、逆に雑談が盛り䞊がっお議論の時間がなくなったりするので、明確に分けたほうがいいですね。 QAチヌム機胜期 機胜期は、チヌムずしお機胜し、成果を出しおいく時期です。ここたで来ればあずは䜕もしなくおOK・・・ではありたせん。チヌムビルディングの基本ステップにあるように、 ④省察 を行いながら、関係づくりなどのステップが回っおいきたす。「チヌムができあがったのでもうコミュニケヌションは枛らしおいいよね」ずはいきたせんよね。 ベヌスができお安定しおきたチヌムでより成果を出すために、 QA゚ンゞニアの育成・教育 QA゚ンゞニアの評䟡 などももしただあいたいであれば敎備する必芁がありたす。 たずめ 今回はチヌムビルディングの抂念や考え方の説明ず、QAチヌムにおけるチヌムビルディングに぀いお、タックマンモデルの各段階をもずに抂芁をご玹介したした。 ポむントになるのは、単玔にコミュニケヌションの機䌚を増やせばよいずいうわけではなく、そこから察話や議論ぞず進めおいくこずです。そのためには、チヌムの方向性・ミッション、チヌムの構造パタヌンなどを䞀緒に考え、詊行錯誀するこずが倧切だず考えおいたす。 今回ご玹介した曞籍以倖にも、チヌムビルディングや゚ンゞニア組織に関する曞籍や資料は数倚くあるため、ぜひ読んで参考にしおみおください。 参考 チヌム・ビルディング[新版] 人ず人を「぀なぐ」技法日本経枈新聞出版 チヌム・ゞャヌニヌ 逆境を越える、倉化に匷いチヌムを぀くりあげるたで翔泳瀟 【第13回】人がプロゞェクトの源泉チヌムは育おお匷くする埌線 | Sqripts 【連茉】QA組織の立ち䞊げ方1人目QAが語る実践ず工倫 蚘事䞀芧 【第1回】QA組織立ち䞊げの流れず組織の圢 【連茉初回、党文公開䞭】 【第2回】2人目以降のQA゚ンゞニアの採甚 The post 【第3回】QAチヌムビルディング first appeared on Sqripts .
新卒でフロント゚ンド開発者をしおいたす、む゜ダです。 本蚘事では、私があるプロゞェクトで技術遞定を行う際に掻甚したツヌル「Genspark」ずその機胜「Sparkpage」に぀いお、その利甚䜓隓を通しお埗た知芋を共有したす。 Genspark、Sparkpageずは Genspark は、AIを掻甚した怜玢ツヌルです。自然蚀語での質問に察しお、りェブ䞊の耇数の゜ヌスから関連情報を収集し、回答を提䟛しおくれたす。 Gensparkには「 Sparkpage 」ずいう䟿利な機胜がありたす。この機胜は、AIによる調査結果を基に、りェブサむトのブログ蚘事のようなものを䜜成しおくれたす。 Sparkpageのメリットは次が挙げられたす。 目的に合った情報を即座に提䟛 利甚者が調査したい察象に特化したりェブペヌゞが存圚しない堎合でも、AIが最適なブログ蚘事を䜜成しおくれたす。 カスタマむズ可胜な情報提䟛 情報収集や特定のテヌマに合わせたペヌゞ䜜りが簡単です。 掻甚シヌンずしおは、次のような堎合が挙げられたす。 垌望する調査察象にぎったり合った情報が芋぀からない。 独自の目的に合わせた情報をブログ圢匏でわかりやすく提瀺したい。 Sparkpageは、情報収集やコンテンツ䜜成を効率化したい人にずっお匷力なツヌルです。 Gensparkを䜿甚した動機 今回の技術遞定を進めるにあたり、次のような理由からGensparkを利甚したした。 むンフラに関する知識が䞍足しおいた。 技術遞定する察象に関する基瀎知識が䞍足しおいた。 限られた期間内での調査・分析が必芁だった。 調査察象 今回の調査察象はChange Data CaptureCDCサヌバヌずいうものです。デヌタベヌス内の倉曎デヌタをキャプチャし、リアルタむムで別のシステムに転送する技術です。この技術を利甚するこずで、デヌタ同期やむベントドリブンなアヌキテクチャの実珟に圹立おるこずができたす。 今回の技術遞定では、以䞋の3぀のCDCツヌルを怜蚎したした。 PeerDB Debezium pgstream これらのツヌルに぀いお、それぞれのメリットずデメリットを怜蚎したした。 Gensparkでの実際の調査 ここでは、Gensparkを䜿甚しお実際に行った調査の内容を玹介したす。 調査の流れ 1. 質問の入力 Gensparkのむンタヌフェヌスに、今回知りたい内容をそのたた入力したした。(音声入力した内容をコピペしおるので、文章は䞀郚誀りがありたす) Gensparkぞの質問 2. 情報の収集1 Gensparkは、耇数の゜ヌスから情報を収集し、以䞋のような回答を提䟛しおくれたした。 スクリヌンショットは回答の䞀郚ですが、それぞれのツヌルのメリットデメリットを挙げおくれおいたす。 Gensparkの回答内容 回答の文章の末尟にある䞞1, äžž2,  は参照した文献を瀺しおいたす。カヌ゜ルを合わせおURLリンクをクリックするこずで参照文献に飛ぶこずができたす。 参照文献 3. 情報の収集2 回答の䞋の方にはSparkpageができおいたす。 回答結果にあるGensparkpage Sparkpageを芋るず、今回知りたい内容にぎったりのブログ蚘事が䜜成されおいたす。 Sparkpageの目次 Sparkpageの「はじめに」にはCDCサヌバヌの抂芁を簡朔にたずめおくれおいたす。 「はじめに」の章でCDCサヌバヌの抂芁ずナヌスケヌスを玹介しおくれおいる 次に続く章で各ツヌルの特城ず利点、デメリットを説明しおくれおいたす。 PeerDBの特城ず利点 pgstreamの特城ず利点 各方法のデメリット 「Googleクラりドでの実装」の章では、各ツヌルがGoogle Cloud Pub/Subず統合できるかを解説しおたす。 Googleクラりドでの実装 この章でpgstreamはGoogle Cloud Pub/Subず統合できるかの正確な回答がなかったので、筆者自身が远加の調査を行い、統合できるこずを確認したした。 Googleクラりドでの実装」内のpgstreamに関する段萜。Pub/Subに関する蚘述がない 最埌の「結論ず掚奚事項」では、各ツヌルのメリットデメリットを比范しお、ある評䟡軞ではどのツヌルが優れおいるかの解説をしおくれおいたす。 結論ず掚奚事項 Sparkpageを読むこずで、 CDCサヌバヌの抂芁 各ツヌルのメリットデメリット Google Cloud Pub/Subず統合できるかどうか ツヌルを遞択する䞊の評䟡軞ず各評䟡軞においおどのツヌルが優れおいるか を䞀床に把握するこずができたした。 4. 情報の分析ず確認 Gensparkによっおある皋床の情報を収集できたので、それを参考に分析ず情報の䞍足を補ったり、AIの回答が正しいかの調査を行いたした。具䜓的には、Gensparkが挙げおくれたメリットデメリットを参考に評䟡軞を決めお、その軞に沿っお远加の調査を行ったり、AIが提瀺しおくれた参考文献を読み蟌んでAIの回答に間違いがないかの確認を行いたした。 基瀎知識は既に把握できおるので、远加の調査もすいすい進みたした。 このように、Gensparkを掻甚するこずで、効率的に情報の収集ず分析を行うこずができたした。 Gensparkが掻躍したポむント 今回のプロゞェクトでは基瀎知識が乏しい状態だったため、いきなりツヌルを詊すのではなく、事前にそれらの背景や特城を理解しおおくこずが重芁でした。その際にGensparkが以䞋の点で圹立ちたした。 基瀎知識の迅速な習埗 初心者でもわかりやすいCDCサヌバヌの抂芁を含めたブログ蚘事を提瀺しおくれたした。 各ツヌルのメリット・デメリットの比范情報を提瀺 3぀のツヌルを暪䞊びで比范できる資料を提䟛しおくれたこずで、調査の効率が倧幅に向䞊したした。 これによっお、短時間で各ツヌルの抂芁や特城を理解し、より適切なツヌル遞定を行うこずができたした。 たずめ 技術遞定においお、基瀎知識の習埗や情報収集は倚くの時間を必芁ずしたす。特に私は、むンフラやデヌタベヌスの経隓が浅いため、知識のキャッチアップを効率よく行うこずが倧きな課題でした。しかし、Gensparkを掻甚したこずで、限られた時間の䞭でもスムヌズに調査ず分析を進めるこずができたした。 The post 技術遞定の調査がGensparkで捗った話 first appeared on Sqripts .
゜フトりェア開発の䞖界では、アゞャむル開発やスクラムが䞀般的になっおきたした。そのアゞャむル開発のコアずも蚀えるのが、察話や協調です。この連茉では、アゞャむル開発におけるコミュニケヌション・コラボレヌションスキルを解説しながら、ファシリテヌションスキルのレベルアップを目指したす。 スクラムマスタヌのためのコミュニケヌション講座 連茉䞀芧 ※クリックで開きたす ・ #むントロダクション優れたスクラムマスタヌが絶察に蚀わないこず 【連茉初回、党文公開䞭】 ・ あなたの提案はなぜ受け入れられないのかファシリテヌション技術-1- ・ よりよい堎を䜜るための9぀のルヌル前線ファシリテヌション技術 -2- ・ よりよい堎を䜜るための9぀のルヌル埌線ファシリテヌション技術 -3- ・ コヌチング技術 〜 基本技術を孊がうコヌチング技術 -1- ・ コヌチング技術 〜 質問力を高めようコヌチング技術 -2- ・ 䞊玚者が掻甚する質問䟋コヌチング技術 -3- ・ 実践1on1[1] 〜 簡単だけど難しい1on1 ・ 実践1on1[2] 〜 コミュニケヌションの方法を䜿い分けよう ・ 実践1on1[3] 〜 盞手に合わせたコミュニケヌション方法ずは ・ 実践1on1[4] 〜 実䟋をもずに1on1をレベルアップ ・ 【最終回】さらなる成長のためのコミュニケヌショントレヌニング 最終回のテヌマは「コミュニケヌションのトレヌニング」です。 前回のおさらい 前回たでは、ファシリテヌション、コヌチング、1on1ず、具䜓的なコミュニケヌション技術を解説しおきたした。この連茉の最埌は、孊んだ技術を磚いおいくための技術の解説です。 人芋知りでもアゞャむルコヌチはできる 私は独立しお、アゞャむルコヌチずしお仕事をしおいたす。前職などでぱンゞニアリングマネヌゞャずしお、メンバヌの育成や採甚を通しお郚眲の立ち䞊げを行っおいたしたが、もずもずコミュニケヌションが埗意な人間ではありたせん。 たずえば、もう40歳を超える幎霢になりたしたが、買い物に行っお店員さんに「あの、この服のMサむズありたすか」ず聞けたせん。店員さんが忙しそうなら「買うのやヌめた」ずすぐ諊めたす。むベントの懇芪䌚などにも倚く出垭したしたが、話かけるのが苊手なので、たいおいは䌚堎のすみっこでちびちびビヌルを飲んでいたす。 こういう話をお客さたに話すず「たたたた〜」ず䞀蹎されたすが、この話は本圓です。こんな私でも、仕事で蚓緎を積むこずで、人䞊みにコミュニケヌションスキルを身に぀けられるようになりたした。 コミュニケヌションが苊手な人は倚いですが、コミュニケヌションスキルはあずでどうにでもなるず思いたす。 それでは、どのようにそのスキルを孊んでいくかを考えおいきたす。 囜際コヌチング連盟の認定資栌を孊ぶ 囜際コヌチング連盟通称ICFは、囜際的なコヌチング資栌を運営しおいる団䜓です。日本にも支郚がありたす 䞀般瀟団法人囜際コヌチング連盟 日本支郚 。 ICF認定資栌 は、ACCア゜シ゚ヌト認定コヌチ、PCCプロフェッショナル認定コヌチ、MCCマスタヌ認定コヌチの3぀があり、毎幎倚くの人が認定されおいたす。 個人的な感芚になりたすが、普段から1on1などに慣れおいるならACCは簡単だず思いたす。しかし、PCCになるず独孊では難しい郚分があるため、スクヌルで様々な人ずセッションを持぀のがおすすめです。PCCにもずめられるレベルは、PCCマヌカヌずいう圢で公開されおいるので、PCCマヌカヌの内容を眺めおみるずいいでしょう参考 PCCマヌカヌを䜿いコヌチずしおのスキルや振る舞いを鍛えおいく方法 。 MCCレベルは達人です。コミュニケヌションの取り方、間、質問内容、ふるたいかた、どれをずっおも自然な所䜜なので、わかるひずにしかわからないスキルに感じおいたす私自身もPCCの勉匷をするこずでMCCのすごみに気が぀きたした。 ICF認定資栌は、囜内にも認定スクヌルがたくさんあるので、自分にあったスクヌルに通うずいいず思いたす。 期間的にはACCやPCCで1幎ず぀ぐらいかかりたす。これはスクヌルで単䜍CCUず呌ばれるを取るのに時間がかかるからです。たた、ICF認定資栌は最䜎限必芁ずなるコヌチング経隓がACCだず100時間以䞊、PCCだず500時間以䞊、MCCだず2,500時間以䞊必芁になるため、条件を満たすために時間がかかる人も倚いです。 アゞャむルコヌチやスクラムマスタヌの仕事をしおいるなら、ICFは基瀎的なコヌチングスキルを孊ぶのにぎったりです。最近だず、海倖䌁業で専任コヌチを雇う傟向が匷く、今埌、囜内でも専任コヌチが求められおくるず思いたす。実際に、専任コヌチをやずっおいるIT䌁業もありたす。ICFのコヌチングはずおも玔粋で、独自路線を嫌い、王道を歩み続けおいる印象があるため、基瀎を孊ぶにはピッタリず蚀えたす。 コミュニティで孊ぶ コヌチングなどは地元にコミュニティがあったりしたす。私の堎合、お䞖話になったメンタヌコヌチにおすすめされた 日本コヌチ協䌚神奈川チャプタヌ に所属しおおり、むベントなどにたたに参加しお腕を磚いおいたす。 スクヌルは比范的高い金額を身銭を切っお参加しおいる方が倚い圱響か、比范的意識高く孊がうずする人が倚いため、䌁業向けのビゞネスコヌチを目指す方が倚い印象がありたす。 䞀方、ロヌカルのコミュニティだず、料金は抑えめです。その圱響か、䞻婊や定幎を迎えた方など、䞀般の方々が倚い印象です。䞀般的なパヌ゜ナルコヌチを目指すのであれば、お互いいい緎習盞手になるず思いたす。 ファシリテヌションであれば、 FAJ特定非営利掻動法人 日本ファシリテヌション協䌚 がありたす。基瀎講座が定期的に開催されおおり、ずっかかりずしお孊ぶには最適でしょう。コヌチングを孊んだ方であれば、ファシリテヌションの基瀎講座に共通点が倚いこずに気が付きたす。傟聎や質問は、䞡者に共通するスキルなのです。 1on1で孊ぶ 私は䞀人で働いおいるため、客芳的に自分を芋おくれる人がお客さたしかいたせん。たずえお客さたでも、厳しいフィヌドバックを䌝えにくいず思う方も倚いです。 そこで、私の堎合は、信頌できるパヌトナヌを遞んで、定期的に1on1をしおもらっおいたす。パヌトナヌも䌌たような仕事をしおいるので、お互いに悩みを持ち寄ったり、共通のテヌマで意芋を亀換したりしおいたす。 珟圚1on1をしおいるパヌトナヌずは付き合いも長く、家族ぐるみの付き合いなので、定期的な1on1が近況報告にもなっおいたす。 コロナ党盛期では、倖郚ずのやりずりが途絶えおしたいたしたが、こういった぀ながりによっお、切磋琢磚するこずができたした。 自分たちで孊ぶ 先生圹がひずりいればずおもよいですが、もしいなければあなた自身が先生になればよいでしょう。認定資栌やコミュニティで孊んだこずを珟堎で実践すれば、わかっおいるこず、わかっおいないこずが明確になり、どんどんスキルが付いおくるでしょう。 1on1やふりかえりのあずに、ふりかえりのふりかえりをするのも有効な手です。 今回良かったずころはどこか 今回いたいちだったずころはどこか 次にどう掻かすか を簡単にふりかえり、改善サむクルを回しおいきたす。 1on1だず䞊叞郚䞋の関係が倚いので、郚䞋に聞くのをためらう人も倚いはずです。しかし、1on1は盞手の堎です。いいずころやいたいちなずころを正盎に話しおもらえる関係性を築けば、1on1は成功したも同然でしょう。  この連茉では、「スクラムマスタヌのためのコミュニケヌション講座」ず題しお、スクラムマスタヌに求められるコミュニケヌションに぀いお解説しおきたした。コミュニケヌションスキルは、スクラムマスタヌだけでなく、アゞャむルコヌチや゚ンゞニアリングマネヌゞャ、゜フトりェア開発に関わる方であれば、必ず圹立぀スキルだず思いたす。 ゚ンゞニアに限らず、人ずしお生きる限り、䞀番良く䜿うスキルかもしれたせん。 それなのにコミュニケヌション技術は、なかなか教えおもらえたせん。なんずなくMTGを仕切ったり、ファシリテヌションをやったりする機䌚は倚いのに、具䜓的なスキルアップ方法が孊びにくいのはずおももったいないこずだず思いたす。 そんな思いからできたのが「チヌムが自走するためのコミュニケヌション入門」ずいうトレヌニングでした。毎回やるたびに改善を重ね、バヌゞョンはv2.1になっおいたす。この蚘事はこのトレヌニングをベヌスにしおいたす。 今回は、コミュニケヌショントレヌニングに぀いお解説したした。 これたでにコミュニケヌション技術を解説しおきたので、具䜓的な手段を手に入れるこずができたはずです。さらに今回、腕の磚き方も解説したので、やる気さえあればどんどん䞊達できる堎が敎いたした。 次はみなさんが、その成果を発揮する番です みなさたの珟堎においお、すばらしいコミュニケヌションが行われ、玠晎らしいプロダクトが生たれるこずを祈っおいたす。 連茉䞀芧 ・ #むントロダクション優れたスクラムマスタヌが絶察に蚀わないこず 【連茉初回、党文公開䞭】 ・ あなたの提案はなぜ受け入れられないのかファシリテヌション技術-1- ・ よりよい堎を䜜るための9぀のルヌル前線ファシリテヌション技術 -2- ・ よりよい堎を䜜るための9぀のルヌル埌線ファシリテヌション技術 -3- ・ コヌチング技術 〜 基本技術を孊がうコヌチング技術 -1- ・ コヌチング技術 〜 質問力を高めようコヌチング技術 -2- ・ 䞊玚者が掻甚する質問䟋コヌチング技術 -3- ・ 実践1on1[1] 〜 簡単だけど難しい1on1 ・ 実践1on1[2] 〜 コミュニケヌションの方法を䜿い分けよう ・ 実践1on1[3] 〜 盞手に合わせたコミュニケヌション方法ずは ・ 実践1on1[4] 〜 実䟋をもずに1on1をレベルアップ ・ 【最終回】さらなる成長のためのコミュニケヌショントレヌニング The post 【最終回】さらなる成長のためのコミュニケヌショントレヌニング first appeared on Sqripts .
こんにちはQA゚ンゞニアのうえやたです。 珟圚、E2Eテスト自動化に携わっおいる䞭で「メンテナンス性の高いロケヌタヌ」を䜿うこずの倧切さを実感しおいたす。 本蚘事では簡単なロケヌタヌの解説から始め、私が普段意識しおいるロケヌタヌの曞き方を実䜓隓ずあわせお玹介しおいきたす。 ロケヌタヌずは UI自動テストツヌルにおいお「入力欄」や「ボタン」等の芁玠を指定する郚分です。䟋ずしお以䞋のように曞きたす。 id=signIn システムIDがsignInの画面芁玠 xpath=//input[1] 䞊から番目の入力゚リア xpath=//button[text()=’サむンむン’] テキストが「サむンむン」のボタン ※现かい文法はツヌルによっお異なるようですが、本蚘事ではSeleniumに近い文法で玹介したす。 「良い」ロケヌタヌずは 良いロケヌタヌメンテナンス性が高い倉曎が入っおも壊れづらい メンテナンス性ずは「コヌド/スクリプトの保守性」を指したす。 倉曎ずは䞻に「゜ヌスコヌドの倉曎」を指したす。e.g. 芁玠の階局倉曎、テキストの倉曎 以䞋のような倉曎があった際はスクリプト修正が必芁になりたす。 仕様の倉曎 オブゞェクトIDの倉曎芁玠をID指定しおいる堎合 ⇒ツヌルによっおは自動修埩しおくれるものもあるようです。 䞀意のロケヌタヌ idずname どちらも識別子ずしおの圹割を果たしたすが、以䞋の違いがあるようです。 idは䞀意性あり nameは䞀意性なしグルヌプ化された芁玠の識別に䜿甚されるこずが倚いずこのこず nameを指定する堎合は画面䞊で䞀意であるか確かめる必芁がありそうですね。 次に、「xpath」で䞀意性を持たせる曞き方を玹介したす。 氎色の芁玠を指定したい時、以䞋だけだず圓おはたる芁玠が耇数ありたす。 //a[@class=’hoge’] ですが、芪芁玠も指定するこずで䞀意にするこずが出来たす。 //li[@id=’topics2′] / a[@class=’hoge’] 「xxが存圚するこず」のような期埅倀確認でこれらを意識するこずで、「Aのテヌブルに存圚するこずを確認したかったのに、Bのテヌブルに存圚する時でもOK扱いになっおしたった」のようなミスを防げたす。 汎甚性の高いロケヌタヌ テストを䜜っおいる時に「これ他のケヌスでも䜿うだろうな」ず思った郚品e.g. ログむン動䜜、デヌタの初期化は共有ステップずしお登録しおおくず埌が楜になりたす。たたスクリプトの可読性も䞊がりたす。 さらに汎甚性の高いロケヌタヌにしおおくず「過去の自分ナむス」たたは「○○さんさすが」ずいうこずになりたす。 䟋えば自分が今䜜っおいるのはタブAのテストだずしおも、BずCもテストするこずが決たっおいるなら倉数にしお他のタブでも遞択出来るような䜜りにしおおくず良いです。 Tips : text指定の䜿い分け text指定する堎合は「文字列自䜓が正しいかチェックしたい時」たたは「倉曎されにくいテキストであるこず」が望たしいず考えたす。 経隓談ずしお、ツヌルが掚奚しおくるtext指定のロケヌタヌをやみくもに採甚し、゜ヌスコヌドのリファクタが入った際に元々入っおいたスペヌスが消えおが倚発するずいうこずがありたした。圱響範囲の調査ず察応に日かかり、その埌も䜕らかのコヌド修正がきっかけで同じ問題が散芋されおたす。text以倖で指定するか、containsを䜿った郚分䞀臎で文字列指定しおいれば防げた䟋です。 どんなロケヌタヌを䜿うずより良いテストが出来るか、たたリスクがあるか考えながら実装出来るず良いですね。 実践線 私がロケヌタヌを䜜成する時の方法を玹介したす。 テストを䜜っおいるず、ツヌルのロケヌタヌ生成には出おこないけど「こういう感じで芁玠指定したいから自分で曞きたいな」ずいう箇所が出おきたす。その時に䞀々ロケヌタヌを実装しお流しお倱敗しおを繰り返すのは倧倉なので、以䞋の方法でパスが通るこずず䞀意であるこずを確認しおから実装したす。 F12たたは右クリック→怜蚌で開発者ツヌルを開く ctrl+Fでセレクタヌ怜玢窓を出す パスを曞いおみる ヒットすれば芁玠にハむラむトが圓たりたす。画像では右䞋の数字が「3 of 6」になっおいお、「同じパスの芁玠が6個あるうち、今は䞊から3個目にハむラむトが圓たっおいるよ」ずいう意味になりたす。 目的の芁玠を䞀意に指定出来るたで詊行錯誀する 1 of 1になったら成功。パスをコピヌしお実装する。 今回は芪芁玠を指定しお䞀意にしたした。 おたけずしお、ロケヌタヌを探しおくれるツヌルも玹介したす。 POM Builder Chromeのアドオンに入れお、先ほど玹介した開発者ツヌルの䞭で䜿うツヌルです。 お手軜に掚奚のロケヌタヌを生成しおくれたす。 ただ、䞇胜ではないので耇雑なロケヌタヌ指定をしたい堎合はやはり自分で䜜成する必芁がありたす。 最埌に 私自身も自動テストに぀いおはただただ研究䞭ながら、実践を通しお埗た知識を玹介したした。テスト実装初心者の方やロケヌタヌの曞き方に興味がある方に少しでも参考になれば幞いです。 メンテナンス性が高いロケヌタヌを曞いお、壊れづらい自動テストを䜜りたしょう 最埌たで芋おいただきありがずうございたした。 The post メンテナンス性が高いロケヌタヌを曞いお、壊れづらい自動テストを䜜ろう first appeared on Sqripts .
あなたはQA゚ンゞニアずしお、どのようにキャリアを積んでいけばよいか、迷ったこずはありたせんか 私はたくさんありたす。 組織やプロゞェクトによっお、QA゚ンゞニアの圹割や責務は倧きく異なりたす。しかし、どんな環境でも共通しお抌さえおおくべきポむントが存圚したす。 『目的』『ハヌドスキル』『゜フトスキル』『継続的な孊習』『マむンドセット』『仲間』です。 この連茉では、゜フトりェア開発のQA゚ンゞニアずしお働き始めた皆様に向けお、私の実䜓隓をもずに「こんなこずを知っおおけばよかった」ずいう、ちょっずした気づきを共有したす。 䞀緒に゜フトりェア開発のQA゚ンゞニアずしおの充実した゚ンゞニアラむフを築くためのヒントを探っおいきたしょう。 連茉の第䞀回ずなる本蚘事では、それらのポむントに぀いお抂芁を玹介したいず思いたす。 これらのポむントは、続く第2回以降の蚘事で深堀りしおいきたす。 なお、本連茉では今埌”QA”ず衚珟しおいたすが、これは単に゜フトりェア開発におけるQAを指したす。 顧客のこずを考えお仕事をしよう 仕事の『目的』は、単にタスクをこなすこずや数字を䞊げるこずではありたせん。最も重芁なこずは「顧客に䟡倀を届けるこず」だず私は考えおいたす。 ぀たり、「あなたの仕事を埅っおいるお客様がいる」ずいうこずです。 こういった芖点はQA゚ンゞニアにずっおも非垞に倧切です。 あなたがテストや品質保蚌の掻動で携わっおいる補品やサヌビスは、必ず誰かにずっお䟡倀がありたす。 その䟡倀を守り、きちんず届けるこずがQA゚ンゞニアずしおのあなたの圹割です。 これらの考えは、TQCにおける「顧客志向」ずいう原則にも通じる郚分があり、QA゚ンゞニアずしおも参考にしおいただけるず思いたす。 本テヌマは連茉の第2回で取り䞊げたす。 QA゚ンゞニアの必須スキル゜フトりェアテスト 䞀蚀でQA゚ンゞニアず蚀っおも、倚皮倚様な圹割やあり方が存圚したす。 ずはいえ、その䞭でも゜フトりェアテストは基本的なスキルだず蚀っおいいのではないでしょうか。 テストずいう掻動は、高品質の補品を、自信を持っお䞖の䞭に送り出すために必芁䞍可欠な掻動の䞀぀です。 QA゚ンゞニアずしお重芁な『ハヌドスキル』ずしお、゜フトりェアテストに぀いお知り・理解し・考えおいくこずが、あなたのQA゚ンゞニアずしおの掻動を充実させる道暙になるず思っおいたす。 本テヌマは連茉の第3回、第4回で取り䞊げたす。 チヌムで働いおいるずいうこず QA゚ンゞニアずしお、䞀人で働いおいるこずはほずんどないのではないでしょうか。 QA゚ンゞニアが専任のロヌルずしお眮かれおいる珟堎では、たず誰かが䜕かを䜜らないず品質保蚌の掻動ができない堎合がほずんどだず思いたす。 QA゚ンゞニアに課せられた責務を䞀人で完結させられる人は皀です。実際にQA゚ンゞニアは様々なステヌクホルダヌず協力しお、効率的に、そしお効果的に仕事を進める必芁がありたす。 『゜フトスキル』ずしお、チヌムプレむダヌずしおの心構えや、効果的で誠実なコミュニケヌションの取り方に぀いおきちんずキャッチアップしお、チヌムの䞭で貢献するこずが必芁ずなりたす。 QA゚ンゞニアにずっおチヌムで働くずいうこずは、個々の圹割を理解し、他のメンバヌずの協力を通じおチヌム党䜓でより良い補品を顧客に提䟛するこずを目指すこずです。 本テヌマは連茉の第5回で取り䞊げたす。 スキルアップするためのスキルを぀ける 䞀般的に、IT業界では技術や知識䜓系のアップデヌトが早いず蚀われおいたす。これは事実です。 QA゚ンゞニアも同様に、この先生き残るためには孊習を継続しお、自分を成長させるこずが必芁䞍可欠になりたす。 これはスキルアップするこず自䜓をスキルずしお捉えお、身に぀けるこずず同じです。 『継続的な孊習』をするために必芁な習慣や心構えを知り、自走できるQA゚ンゞニアずなるこずが成長ぞの道を開くず考えたす。 たた、孊習をするために様々なプラットフォヌムを利甚したり、むベントに参加するこずもいい手段だず思いたす。 本テヌマは連茉の第6回で取り䞊げたす。 目の前の珟堎を改善するマむンドセット スキルや知識だけでQA゚ンゞニア生掻を充実させるのは難しいでしょう。 孊んだ知識やスキルを実践し、珟堎の働き方を改善できおこその良いQA゚ンゞニアではないかず私は考えたす。 QA゚ンゞニアは仕事の性質䞊、様々な問題や課題に出䌚うこずになりたす。 これらの問題や課題に぀いお、決しお他責にしお終わっおしたうのではなく、自分から改善のきっかけを䜜っおいけるような動きが求められたす。 そのためには、柔軟な思考や前向きな考えずいった『マむンドセット』を身に぀けるこずが必芁になりたす。 これらぱンゞニアずしおだけではなく、どんな職皮においおも力を発揮できるマむンドセットです。 本テヌマは連茉の第7回で取り䞊げたす。 あなたは䞀人でない ここたでのポむントをしっかりキャッチアップしお頑匵っおいおも、実際の職堎では孀独に感じるこずはあるず思いたす。 「改善したいのは私だけでは」「努力しおいるのは自分だけでは」ず感じおしたう日もありたす。 もしそう感じおいるのならば、そう感じおいるのはあなただけではないず、私は断蚀できたす。 瀟内に仲間がいないず思ったら、思い切っお瀟倖に飛び出しお『仲間』を探しおみたしょう。 QAずいうニッチな領域にも様々なむベントやコミュニティが存圚したす。 たた、QAだけではなく、様々な゚ンゞニアコミュニティや他業皮のコミュニティに参加するのもいいず思いたす。 本テヌマは連茉の第8回で取り䞊げたす。 䞀番倧切なのは自分自身 これらの内容は今埌の連茉のアりトラむンずなりたすので、今埌読んでみたいず思っおくださった方はぜひSqriptsぞの 䌚員登録 をお願いしたす。 蚘事執筆時点(2024/11/27)では無料で䌚員登録が可胜です。 本蚘事ではもう䞀぀だけ、玹介したいこずがありたす。 瀟䌚人ずしお䞀番倧切なこずはなんでしょうか ビゞネスマナヌやマむンドセットやスキル、もしかしたら人脈ず思う方もいらっしゃるず思いたす。 私は党郚違うず思いたす。 䞀番倧切なこずは『䜓調管理』です。 䜓調を厩しおはどんな仕事も充実したせんし、自分自身がいい状態でいるこずはよりよい人生を歩むために倧切なこずです。 どんなに優れたスキルや知識があっおも、䜓調管理ができなければ充実したQA゚ンゞニアラむフは続きたせん。 心身の健康を維持しお、QA゚ンゞニアずしおの道を力匷く進んでいくために、たず自分自身を倧切にしおください。 自分自身の健康のために、以䞋の曞籍から孊ぶこずをおすすめしたす。 今埌の連茉では、それぞれの蚘事で同様の圢で私からおすすめの曞籍を玹介しおいきたす。 ヘルシヌプログラマ O’Reilly Japan 「アゞャむル匏」健康カむれンガむド 翔泳瀟 セルフケアの道具箱――ストレスず䞊手に぀きあう100のワヌク 晶文瀟 それでは皆さん、健康を倧切にしながら、充実したQA゚ンゞニアラむフを楜しんでください The post 【第1回】充実したQA゚ンゞニアずしおスタヌトするためのガむドラむン first appeared on Sqripts .