My RSS Reader

Description about Blog Author


Docker DesktopのDocker AI「Gordon」を使う

最近、いろいろなソフトウェアにAI機能が搭載されていますが、Docker Desktopにも実装されていたので触ってみることにしました。 私が触ったのはバージョン4.40.0のDocker Desktopで、このAI機能はベータ機能として利用可能になっています。利用するにはDockerのアカウントがあり、Docker Desktopにログインしている必要があるようです。 インストール直後は機能が有効化されていないので、Docker Desktopを起動したらDocker AIを有効化してください。 これだけで利用可能になります。 Docker AI (Gordon)のバックエンドはDocker社のサーバー上で実行されているようです。Docker Desktopがそのクライアントになる構成で動いていて、一部は外部のAIサーバーを利用して動くため、データのアップロードに関する規約に同意する必要があります。 Docker AIに自由文で質問する Docker AI機能を有効化すると、次のような画面に切り替わります。5つの作業のショートカットのほか、一般的なAIと同様、プロンプトの入力欄が表示されています。ショートカットではDockerfileの最適化、Dockerfileの分析と評価、アプリケーションのDocker化の補助をやってくれます。 プロンプトを入力して、コンテナに関する質問をDocker AIに尋ねて回答してもらうこともできます。 残念だったのは、文字入力にCTK圏独自の文字入力に対する最適化がされていない点は残念でした。 ただ、テキストエディターなどで日本語の質問文で質問を書いてコピペしてみると、日本語で回答してくれました。 質問したこと: DockerでLinuxコンテナでGo言語で作ったアプリケーションを実行したい。main.goだけがある前提で、この後何をすればいいか教えてください。 回答: Go言語で作成したアプリケーションをDockerでLinuxコンテナとして実行するためには、以下の手順を実行します。 Dockerfileの作成: まず、main.goがあるディレクトリにDockerfileを作成します。このファイルには、Goアプリケーションをビルドして実行するための指示が含まれます。 # ベースイメージとして公式のGolangイメージを使用 FROM golang:1.20-alpine AS builder # 作業ディレクトリを設定 WORKDIR /app # アプリケーションのソースコードをコンテナにコピー COPY main.go . # Goアプリケーションをビルド RUN go build -o myapp main.go # 最終的な軽量イメージを作成 FROM alpine:3.17 # ビルドしたバイナリをコピー COPY --from=builder /app/myapp /usr/local/bin/myapp # アプリケーションのポートを公開 EXPOSE 8080 # アプリケーションを実行 CMD [“myapp”] Dockerイメージのビルド: ターミナルで、Dockerfileがあるディレクトリに移動し、以下のコマンドを実行してDockerイメージをビルドします。

Read more...

月刊DevOpsニュース4月号

4月に入り新年度がスタートしました。異動や体制の変更などで、慌ただしく慣れない日々を過ごされている方も多いのではないでしょうか。 今月も月が変わりましたので、恒例の月刊DevOpsニュースをお届けします。 クラウド プログラミング 生成AI リリース その他 クラウド 国内のIaaS/PaaSクラウドサービス市場は2024年からの4年で約2倍の4兆4900億円規模に。矢野経済研究所 www.publickey1.jp 大規模分散データベースGoogle Cloud Spannerに階層型ストレージが導入、コールドデータをSSDからHDDに自動移行 www.publickey1.jp プログラミング Java 24正式リリース。HotSpot JVMやガベージコレクタの改善による性能向上、32ビット版Windowsが削除など www.publickey1.jp 生成AI OpenAI、GPT-4oに組み込まれた画像生成機能を提供開始 ——画像内テキストの指定・一貫した画像の複数回出力が可能に gihyo.jp Geminiアプリ⁠⁠、文書作成やコーディングでGeminiとの協同作業を強化するCanvas機能を追加 gihyo.jp AIによるコーディングアシスタント、コーディングエージェント、アプリケーション自動生成サービスまとめ(2025年3月版) www.publickey1.jp Microsoft⁠⁠⁠⁠、CopilotでOpenAIの推論モデルo1の機能を無料提供 gihyo.jp 生成AIが自律的にテストを生成、実行しバグや脆弱性を発見してくれる「Spark」、Code Intelligenceが正式リリース www.publickey1.jp JetBrainsも自律的にコーディングを行うAIエージェント「Junie」を発表 www.publickey1.jp OpenAI⁠⁠、コンパクトな推論モデルOpenAI o3-miniをリリース gihyo.jp リリース Linux 6.14リリース、AMD Ryzen AIのNPUをサポート gihyo.jp その他 マイクロソフト、AIエージェントがセキュリティ対応を自動化。Security Copilotエージェント群を発表 www.publickey1.jp Figmaで作ったデザインが自動的に生成AIでWebアプリに。「Bolt.new」がFigmaインポートに対応 www.publickey1.jp 今日3月31日は「世界バックアップデー」、バックアップとリストアについて見直してみては? www.publickey1.jp OpenStackの開発元がLinux Foundation傘下に。OpenInfra FoundationがLinux Foundationのメンバーファウンデーションとして参加 www.publickey1.jp GIMP 3.0リリース gihyo.jp [source]

月刊VS Code通信(2025/4月号)

今月もVisual Studio Codeの新バージョンがリリースされたので、リリースノートを見ていきましょう。 余談ですが、今月からリリースノートのUIが変わりましたね。 目次 目次 新バージョンのリリース情報 主なリリース 今月のピックアップ おわりに 新バージョンのリリース情報 Visual Studio Codeのバージョン1.99がリリースされました。 主なリリース 変更点 変更内容 Agentモードが安定版VS Codeで利用可能に 設定 chat.agent.enabled でAgentモードを有効化可能に。今後は自動で有効になる予定 AgentモードでMCPサーバーをサポート AIモデルが外部ツールやデータと連携できるMCPサーバーに対応。ファイル操作やDBアクセスなどが可能に エージェントモードに思考ツール追加 モデルがツール呼び出しの間に「考える」プロセスを挟めるように。複雑なタスクでの性能向上に貢献(実験的) エージェントモードにフェッチツール追加 Webページの内容をローカルにキャッシュしてプロンプトに活用可能に。自動選択されるが明示的利用も可能 エージェントモードに使用状況ツール追加 参照・実装・定義の情報を統合的に取得可能。クラスや関数の関係性把握やリファクタリング時に便利 エージェントモードでワークスペース作成機能(実験的) 新しい開発用ワークスペースをエージェントモードで初期化・構成・起動可能に インスタントインデックスによる高速検索 GitHub上の大規模コードベースを即時にインデックス化し、AIによるコード検索を高速化 その他詳しいリリース内容については March 2025 (version 1.99) にアクセスしてください。 今月のピックアップ 『エージェント機能で広がる開発の可能性』 Visual Studio Codeで提供されている「エージェント機能」は、従来のコード補完やチャット型の支援を一歩進めた、新しいAIとの連携スタイルです。この機能を有効にすることで、Copilotが開発環境やプロジェクトの文脈をより深く理解し、さらに高度な支援を行えるようになります。 たとえば、検索やナビゲーションを支援する「使用状況ツール」、外部のWebページから情報を取得できる「フェッチツール」、さらにはタスクの途中で思考のステップを挟む「思考ツール」など、複数のツールが組み込まれています。これらは必要に応じて自動的に呼び出され、ユーザーの作業をサポートします。 加えて、MCP(Model Context Protocol)サーバーを利用することで、AIが外部のツールやデータソースと連携し、より柔軟で文脈に応じた支援が可能になります。さらに、エージェントモードでは新しいワークスペースを自動で構成することもでき、開発の初期設定を手早く行えるのも大きな利点です。 エージェント機能は、単なるAIアシスタントではなく、プロジェクトに深く関与する「共同開発者」としての存在に近づいています。開発の効率化だけでなく、複雑な作業への対応力や発想の支援など、今後の開発スタイルを大きく変える可能性を秘めています。 おわりに 今月のリリースもAI機能が中心となっていましたが、特にエージェント機能の進化を見ると、AIが単なる補助ではなく、開発そのもののスタイルを変えつつあることを実感します。最近のAIとエディタの融合が進む今、開発環境や開発のあり方そのものが、大きな転換期を迎えているのかもしれませんね。 [source]

イベントレポート '25/3月開催 とことんDevOps勉強会「Proxmox VE超入門」

今回のとことんDevOps勉強会は「Proxmox VE超入門」と題して、日本仮想化技術の水野が講師として登壇しました。 Proxmox VE(Virtual Environment)は、オープンソースで提供されている仮想化プラットフォームで、KVMによる仮想マシンとLXCによるコンテナを一元管理できる強力なツールです。サーバー仮想化に興味がある方や、オンプレミス環境での柔軟なインフラ構築を目指すエンジニアにとって、注目度の高い技術と言えるでしょう。 メインセッションでは、Proxmox VEの基本的な概念から、インストール方法、実際の仮想マシンの立ち上げまで、デモを交えながらわかりやすく解説しました。仮想化に初めて触れる方にも理解しやすい内容となっています。見逃した方は、アーカイブ動画や資料も公開しておりますので、ぜひご覧ください。 セミナー動画 発表資料 Q&Aまとめ Web UIの冗長化について インストール時のホスト名の指定について VMとLXCの使い分け、Docker利用時のベストプラクティス ハードウェア要件と異種構成ノードでの運用について 起動できない仮想マシンのディスク拡張について LVM on LVM環境でのディスク拡張の混乱について 異なる世代のホスト間でのライブマイグレーションについて 自宅のProxmox VMに外出先からアクセスする方法について 異なるPCでクラスタを組む場合の注意点について 書籍選びに迷ったときの判断について 複数NICを搭載したVMの優先NIC設定について PVEのアカウント権限に関する分かりやすいドキュメントについて 初期ネットワーク設定時のDNSサーバーの指定について ディスクの割り当てはシンプロビジョニングかどうか LXCコンテナから外部ストレージを参照する方法について 複数ストレージ構成時のインストール先とストレージの扱いについて ProxmoxのWeb UIへ別サブネットからアクセスする方法について おわりに セミナー動画 www.youtube.com 発表資料 speakerdeck.com Q&Aまとめ Web UIの冗長化について 質問 クラスタを組んだ際のWeb UIの冗長化?をどうするか気になってます(Node落とした時に切れないようにしたい) 回答 Proxmox VEでは、どのノードからでも同様の管理操作が可能です。そのため、特定のノードが落ちても、別のノードへアクセスすれば操作を継続できます。 インストール時のホスト名の指定について 質問 インストール時にしていするHostnameはどうするのがいいのでしょう ベストプラクティスがあれば知りたいです 回答 ホスト名に厳密なルールはありませんが、pve1やnode1のようにシンプルな名前で管理しているケースも多く、組織内で分かりやすければ十分です。役割や識別がしやすい命名を心がけると後々の運用が楽になります。 VMとLXCの使い分け、Docker利用時のベストプラクティス 質問 VM/LXCの使い分けと、Proxmox上でDockerを使うときのベストプラクティスみたいなものがあればお伺いしたいです。 回答 VMとLXCの使い分けは、主にカーネルへの依存度で判断します。MySQLやPHPなど、特定のカーネル機能に依存しない構成であれば、軽量なLXCの方が手軽で扱いやすいです。Dockerを使う場合、Proxmox上で直接動かすことはできないため、通常はVMを立て、その中にDocker環境を構築します。LXC上でもNested ContainerとしてDockerを動かすことは可能ですが、対応しているバージョンに制限があるなど注意点もあります。 ハードウェア要件と異種構成ノードでの運用について 質問 ハードウェア要件は仮想が使えるCPUであればいけますかね?ノードもハードウェアバラバラ構成でも行けますか? 回答 仮想化機能(Intel VT-xやAMD-V)に対応していれば基本的に動作可能です。ノードが異なるハードウェア構成でもクラスタは組めますが、CPUの世代や機能が異なると、ライブマイグレーション時に問題が出ることがあります。 起動できない仮想マシンのディスク拡張について 質問 仮想ディスクが容量超えて起動もできなくなった状態でも、仮想ディスクを拡張・割り当てて起動することは可能ですか?拡張したくても起動できない状態でハマってます 回答 ディスクの割り当て方法によりますが、起動不能な状態でもディスクの拡張を行う方法はあります。例えばより大きなディスクを用意した上で、新旧両方のディスクを別の仮想マシンにマウントし、中身をコピーするといった対応もできます。事前にスナップショットを取るなど、安全策も忘れずに。 LVM on LVM環境でのディスク拡張の混乱について 質問

Read more...

GitHub ActionsでGitHub Scriptを使ってみよう

はじめに GitHub Actionsを活用してCI/CDや各種自動化を行っていると、「特定の条件で処理を分岐したい」「IssueやPull Request(PR)に対して自動でコメントを投稿したい」といった、ちょっとした処理を柔軟に実行したくなる場面があります。 こうした細かなニーズに対応するために便利なのが GitHub Script です。GitHub Scriptを使えば、JavaScriptで簡潔にロジックを書き、GitHub APIを通じてさまざまな操作を実行できます。ワークフローの中に直接スクリプトを埋め込めるため、外部スクリプトの管理や複雑な設定も不要です。 本記事では、GitHub Scriptの基本的な仕組みから、具体的なユースケース、活用時のベストプラクティスまでを丁寧に解説します。「GitHub Actionsの中で、もう少し自由に処理を書きたい」と感じたことのある方は、ぜひ参考にしてみてください。 GitHub Scriptとは GitHub Scriptは、GitHubが公式に提供しているActionsのひとつで、JavaScriptを使ってGitHub APIやワークフローに手軽にアクセスできるのが特徴です。 actions/github-scriptという名前で公開されており、ワークフロー内で直接JavaScriptコードを記述して実行できます。 たとえば、「特定の条件でIssueにコメントしたい」「Pull Requestに応じてラベルを変更したい」といった処理を、非常に短いコードで柔軟に実現できます。通常であれば、curlや外部スクリプトを使って実装するような処理も、1つのステップで完結します。 ライブラリのインストールや外部ファイルの準備は不要で、実行環境にはあらかじめGitHubのAPIクライアント(Octokit)やワークフローの文脈情報(contextオブジェクト)が組み込まれているため、最小限の記述で自動化が可能です。 このように、GitHub Scriptは「ちょっとした自動化」を素早く、シンプルに実装したい場面で非常に有効なツールです。 GitHub Scriptを使わずに実現しようとする場合 GitHub ActionsでPull Requestにラベルを付けたり、Issueにコメントを残したりする処理は、curl や bash を使ってGitHub APIを直接操作する方法でも実現可能です。ただし、この方法には思わぬ手間が発生します。 たとえば、APIを呼び出すための認証トークンやヘッダーの設定、レスポンスの解析に使う jq、条件分岐やループ処理を書く bash など、複数のツールを組み合わせる必要があります。また、GitHubのイベント情報をシェルスクリプトで扱うには、環境変数の参照やJSONの加工が必要になり、実装が煩雑になりがちです。 こうした「ちょっとした処理」こそ、GitHub Scriptが得意とする分野です。次のセクションでは、その基本的な使い方を紹介します。 GitHub Scriptの基本的な使い方 GitHub Scriptを使うには、GitHubが公式に提供している actions/github-script を利用します。このActionを使うことで、JavaScript(Node.js)を記述し、GitHub APIやワークフローの情報に直接アクセスできます。 通常、GitHub APIを扱うには curl や jq などのツールを組み合わせる必要がありますが、GitHub Scriptを使えば、より簡潔に柔軟な処理を記述できます。 基本構成 - name: GitHub Scriptを使った処理 uses: actions/github-script@v7 with: script: | // JavaScriptコード スクリプト内では、以下の2つのオブジェクトがあらかじめ利用可能です。 github: GitHub REST APIクライアント(Octokitベース) context: 実行中のイベントやリポジトリ、Pull Request番号などの情報を含むオブジェクト Pull Requestにコメントを投稿する 以下は、Pull Request が作成されたときに、自動でコメントを投稿する例です。

Read more...

XGBoostを使って機械学習を始めてみよう

XGBoostとは? XGBoost(eXtreme Gradient Boosting)は、勾配ブースティング(Gradient Boosting)に基づいた機械学習アルゴリズムの一つであり、高速かつ高精度な予測を実現する手法です。 機械学習の分野では、複数のシンプルなモデル(それぞれの精度は低いが、組み合わせることで改善できるモデル)を統合して、個々のモデル単体よりも高い予測精度を得る「アンサンブル学習」が重要な役割を果たします。アンサンブル学習には、バギング(Bagging)、ブースティング(Boosting)、スタッキング(Stacking)といった手法があります。その中でも、ブースティングは、モデルを逐次的に学習させ、前のモデルの誤差を修正することで予測精度を向上させる手法です。 XGBoostが採用する「勾配ブースティング」は、ブースティングの一種で、決定木(Decision Tree)をベースとしたアンサンブル学習手法です。複数のシンプルな決定木を組み合わせ、前のモデルの誤差を補正しながら学習することで、単純な決定木よりも高い精度を達成し、非線形な関係を学習することができます。また、XGBoostはこの手法をさらに改良し、高速化や正則化の導入によって、より実用的なモデルを構築できるようにしていると言われています。 XGBoostと他のアルゴリズムとの比較 XGBoostは、ランダムフォレストや通常の決定木と比べて、以下のような利点を持ちます。 アルゴリズム 特徴 過学習の抑制 並列計算 欠損値処理 決定木 単純なルールベースのモデル なし なし なし ランダムフォレスト 複数の決定木を組み合わせて安定した予測を行う あり あり なし XGBoost 勾配ブースティングを最適化し、高速かつ高精度 あり(正則化あり) あり あり XGBoostは、ランダムフォレストのように複数の決定木を組み合わせるアンサンブル学習の手法を採用しつつ、勾配ブースティングによって学習の精度を向上させています。さらに、並列計算や欠損値処理の自動化といった最適化が施されているため、実用上のパフォーマンスが高いのが特徴です。 このように、XGBoostは他の決定木ベースのアルゴリズムと比べて多くのメリットを持っており、多くの機械学習コンペティションや実務で広く利用されています。 XGBoostのインストール XGBoostはPython環境で簡単にインストールできます。パッケージの管理には、requirements.txt を使用しています。 requirements.txt ファイルは、以下の内容を記述して作成します。 xgboost scikit-learn その後、以下のコマンドを実行してインストールします。 pip install -r requirements.txt この方法を使用することで、他の依存パッケージとともに一括管理でき、環境の再現性が向上します。 動作確認 インストールが正しく行われたか確認するために、main.pyを作成して次のコードを記述して実行します。 import xgboost as xgb print(xgb.__version__) エラーが発生せず、XGBoostのバージョンが表示されれば、正常にインストールされています。 $ python main.py 2.1.4 以上で、XGBoostのインストールが完了しました。次のセクションでは、XGBoostの基本的な使い方について解説します。 XGBoostの基本的な使い方 このセクションでは、XGBoostを使用した基本的な機械学習モデルの作成方法を解説します。具体的には、データの準備、前処理、モデルの作成、訓練、評価の手順を紹介します。 データの準備 XGBoostを用いる前に、データセットを準備する必要があります。ここでは、scikit-learn の datasets モジュールを使ってサンプルデータを取得します。 scikit-learnとは? scikit-learn は、Pythonで機械学習を行うためのライブラリで、多くの機械学習アルゴリズムやデータセットの処理ツールを提供しています。データの前処理、モデルの学習・評価、ハイパーパラメータの調整など、幅広い用途に対応しています。 from sklearn.datasets import load_breast_cancer from sklearn.

Read more...

月刊VS Code通信(2025/3月号)

今年1回目の月刊VS Code通信の執筆です。本年も毎月新しいバージョンのリリースに合わせて 今月も新しいバージョンがリリースされたので、リリースノートを眺めていきたいと思います。 目次 目次 Visual Studio Codeニューリリース 主なリリース 今月のピックアップ Visual Studio Codeニューリリース Visual Studio Codeのバージョン1.98がリリースされました。 主なリリース 変更点 変更内容 Copilot Editsでノートブックをサポート Copilot Editでノートブックがサポート(プレビュー) カスタム指示の一般提供 Copilotにカスタム指示を追加できるファイルが一般でも利用可能に ターミナル版インテリセンス ターミナル シェルの補完機能が大幅に改善 Copilot Vison Copilot Chatで添付した画像を理解して会話可能に(プレビュー) macOS 10.15のサポート終了 1.98からmacOS 10.16のサポートが終了に その他詳しいリリース内容については February 2025 (version 1.98) にアクセスしてください。 今月のピックアップ 今月はCopilotへのカスタム指示です。ChatGPTなどを使いこなしている方は、カスタム指示などの機能を知っているかもしれません。GitHub Copilotでもカスタム指示機能が一般でも利用可能になりました。 生成AIを使っている中で毎回同じような指示をしててから、具体的なタスクを指示したことはないでしょうか。例えば、「あなたはPythonで開発しています」「合計する処理を作ってください」など毎回指示しないと思うようなコードを生成してくれないことがあります。 そんなときに、カスタム指示を使い生成AIに事前に指示を出しておくことができます。これにより、毎回前提条件などを伝えずに済んだり、思い通りの回答をしてもらえるようにすることができます。 筆者が最近良かったと感じたシーンは、Next.jsで開発しているときにUI部分を生成AIに書いてもらうときに、CSSのスタイルで生成されることがありました。このカスタム指示に「UIのスタイルはTailwind CSSを使ってください」と書いておくことで、何も言わずともTailwind CSSを使った記述スタイルでコード生成をしてくれるようになりました。 カスタム指示の作り方は、簡単です。次のファイルを作成して、指示を書くだけです。markdown形式なので箇条書きにしたり、見出しをつけたりしながら意図した回答になるように微調整することもできます。 mkdir .github/copilot-instructions.md ぜひ、気になった方は試してみてください。 [source]

月刊DevOpsニュース3月号

ようやく春らしい暖かさがきたと思えば、急に雪が降る日があったりと寒暖差が激しいですが、日本には「三寒四温」という言葉があるように、日によって寒暖を感じていると季節の変わり目を感じますね。体調管理にはより一層の注意が必要ですが。 さて、月が変わりDevOpsニュースをお届けする時期になりました。 仮想化/コンテナ プログラミング 生成AI その他 仮想化/コンテナ Dockerfileの最適化やエラーの原因などの質問に答える「Docker AI Agent」ベータ公開、Docker Desktopで利用可能に www.publickey1.jp 12年サポートのKubernetes “Canonical Kubernetes”⁠⁠、Ubuntu 24.04.2のリリース延期 gihyo.jp プログラミング GitHub Copilot ChatがXcodeで利用可能に「GitHub Copilot for Xcode Chat」、マイクロソフトがパブリックプレビュー公開 www.publickey1.jp マイクロソフト、「Copilot for Eclipse」をパブリックプレビュー公開 www.publickey1.jp GitHub、Issueに親子関係を設定できる「Sub-Issues」機能をパブリックプレビューとして公開、誰でも利用可能に www.publickey1.jp GitHub、マイクロソフトの独自開発CPU、Cobalt 100プロセッサによるLinux Arm64ホステッドランナーを無料プランユーザーにも提供へ www.publickey1.jp 警察庁、中国の関与が疑われる日本国内へのサイバー攻撃に注意喚起。侵入手口など解説、CLI版VSCodeが悪用される例も www.publickey1.jp GitHub Copilot FreeプランがJetBrains IDEでも利用可能に、VSCodeに続き www.publickey1.jp 生成AI 生成AIが人間の介在なしに自律的にソフトウェアテストを生成し実行、バグや脆弱性を発見してくれるAIテストエージェント「Spark」登場 www.publickey1.jp 生成AI「Gordon」がDockerコンテナの問題を解決してくれる、Docker Desktopに統合へ www.publickey1.jp DeepSeek⁠⁠、推論型のLLM「DeepSeek-R1」をリリース gihyo.jp 「Google Agentspace」発表、生成AIがGoogleドライブ、Slack、SharePoint、JIRAなど社内情報を横断的に読み取って質問に答えてくれる www.publickey1.jp その他 ITエンジニア向けQ&Aサイト「Stack Overflow」がAIによる回答の掲載実験を開始 www.publickey1.jp マイクロソフト、NoSQL標準の策定を目指し、Cosmos DBで使われている「DocumentDB」をオープンソースで公開。PostgreSQLをベースに www.publickey1.jp アジャイルアライアンスがPMBOKなどを策定するプロジェクトマネジメント協会に加盟。「PMIアジャイルアライアンス」に www.publickey1.jp 2025年に注目すべき11のIT戦略テーマ、調査会社ITRが発表「ITR注目トレンド2025」 www.publickey1.jp [source]

イベントレポート '25/2月開催 とことんDevOps勉強会「E2Eテスト自動化入門」

今回のとことんDevOps勉強会は「今E2Eテスト自動化入門」と題して、日本仮想化技術の石本が講師として登壇しました。 E2E(End-to-End)テストとは、ソフトウェアやシステム全体のフローを検証し、エンドユーザーが期待通りに操作できるかを確認するテスト手法です。システム開発に関わる方にとって、テストは避けて通れないプロセスの一つです。テストには単体テストや結合テスト、UIテストなどさまざまな種類がありますが、今回は UIテスト をテーマに勉強会を開催しました。 勉強会では、実際にデモを交えながら説明を行いました。これからE2Eテストを始めたい方や、基本を学びたい方にとって役立つ内容となっています。見逃した方は、アーカイブ動画や発表資料も公開しておりますので、ぜひご覧ください。 セミナー動画 発表資料 Q&Aまとめ E2Eテストの導入タイミングと最適な開始時期 PlaywrightとSeleniumの違いは?どこが良くなったの? Playwrightとノーコード・ローコードツールの違いは? E2Eテストは専門の担当者が書くべき?それとも分担すべき? AIでテストを自動生成できる? E2Eテストのデータ管理、どうするのがベスト? セミナー動画 youtu.be 発表資料 speakerdeck.com Q&Aまとめ E2Eテストの導入タイミングと最適な開始時期 質問 E2E(End-to-End)テストは、開発プロジェクトの進行状況や目的に応じて適切なタイミングで導入することが重要です。一般的には、以下のようなタイミングで取り組むのが望ましいです。 回答 E2Eテストを始めるタイミングは、基本的な機能ができて仕様変更が落ち着いた頃がちょうどいいです。開発の初期から無理にやろうとすると、変更が多くてメンテナンスが大変になりがちなので、安定してからのほうがスムーズです。 また、CI/CDを導入するタイミングで一緒に組み込むのもおすすめ。自動テストがあると、リリース前のチェックが楽になって安心してデプロイできます。手動での確認が増えてきて「そろそろ大変だな」と感じたら、自動化を考えるタイミングかもしれません。特に、ログインや決済などユーザーにとって重要なフローが固まったら、E2Eテストを作ることでミスを減らし、品質をキープできます。 PlaywrightとSeleniumの違いは?どこが良くなったの? 質問 Playwrightは、Seliniumに比べて、どのように良くなったのでしょうか? 回答 PlaywrightはSeleniumと比べて、ページの読み込みを待つ処理が自動で行われるので、テストの安定性が高く、タイミング調整に悩まされることが少なくなりました。また、複数のブラウザを簡単に切り替えてテストできるのも便利なポイントです。 さらに、ネットワークのリクエストを操作したり、シングルページアプリケーション(SPA)にも強い設計になっているため、最新のWebアプリとの相性がいいと言われています。 Playwrightとノーコード・ローコードツールの違いは? 質問 AutifyやMagicPodと言ったノーコード、ローコードと比較した場合に、Playwrightとの位置づけの違いは、「コーディングが必要だけど、細かい制御ができる」と言う認識で合っているでしょうか? 回答 はい、その認識でほぼ合っています!Playwrightはコードを書く必要がありますが、その分、細かい制御ができて自由度が高いのが特徴です。特に、複雑なテストシナリオやカスタマイズが必要な場合には強みを発揮します。 一方で、AutifyやMagicPodのようなノーコード・ローコードのツールは、プログラミングの知識がなくても使える手軽さが魅力です。UI操作でテストを作成できるため、エンジニアでなくてもテストを実施でき、導入のハードルが低いのがメリットです。ただし、細かい制御が難しく、特殊な動作や複雑な分岐がある場合には対応しづらいこともあります。 つまり、手軽さを重視するならノーコード・ローコードツール、細かい制御やカスタマイズ性を求めるならPlaywrightという位置づけになります。チームのスキルセットやテストの目的に応じて、どちらを選ぶか決めるのが良さそうですね。 E2Eテストは専門の担当者が書くべき?それとも分担すべき? 質問 E2Eテストは誰かが専門に書くべきなのか、みんなで分担すべきなのか悩みます 回答 E2Eテストを誰が書くかは、チームの体制や開発の進め方によって変わります。専門の担当者がいるとテストの品質が安定しやすく、メンテナンスもしやすいですが、その人に依存しすぎると属人化のリスクがあります。 一方で、チーム全体で分担すれば負担が分散され、テストの知識が広まるので、誰でも対応しやすくなるメリットがあります。ただし、テストの設計やルールを統一しないと、バラバラなコードになり、かえって管理が大変になることも。 理想的なのは、基本的なルールを決めた上で、みんなで協力しながら進めることです。テストの設計や戦略を専門の担当者がリードしつつ、開発者も自分が担当した機能のテストを書くようにすると、バランスよく運用できると思います。 AIでテストを自動生成できる? 質問 AIでテストを生成したりできますか? 回答 はい、最近はAIを使ってE2Eテストを自動生成することも可能になっています!例えば、AutifyやMagicPodのようなノーコードツールはAIを活用してテストシナリオを自動で作成・修正してくれますし、GitHub CopilotのようなAIコード補助ツールを使えば、PlaywrightやSeleniumのテストコードを効率よく書くこともできます。 ただし、完全に自動で正確なテストを作るのはまだ難しく、最終的には人のチェックや調整が必要になります。AIを活用しながら、必要な部分は手動で補いテストコードを作成していくやり方も珍しくはなくなりそうですね。 E2Eテストのデータ管理、どうするのがベスト? 質問 E2Eテストはどういうタイミングで行うのが適していますか。リリース前や、大きな機能追加などを行った時か、頻繁にやるべきか コンテナアプリのテストの質問をしたものです。開発環境のDB等にデータを毎回作るのに時間がかかることが多く、E2Eテスト用のデータをE2Eテスト用のDBに入れてテストしたいです。本番環境DBはコンテナではないです。固定のテスト用の環境を立てていると課金されるので、E2Eテストを実施する時だけ、環境を作りたいと考えています 回答 E2Eテストでは、毎回データを準備するのに時間がかかることが多いですが、テスト用のDBを用意して効率的に管理することで、開発環境の負担を減らせます。 テスト時だけ環境を作る場合、テスト用のDBコンテナを起動し、テストデータを投入する方法が有効です。例えば、Docker Composeを使って、Playwright・アプリケーションサーバ・テスト用DBを一時的に立ち上げ、テスト完了後に環境を削除すれば、コストを抑えつつ運用できます。 また、データの準備時間を短縮するために、あらかじめスナップショットを作成しておき、テスト前にリストアする方法や、最低限のデータ投入スクリプトを用意する方法も有効かもしれませんね。 [source]

Previous Page 3 of 3