My RSS Reader

Description about Blog Author


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]

イベントレポート '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]

DVC(Data Version Control)を触ってみた

機械学習という言葉を耳にし始めた頃に興味を持ってあれこれ調べていた時期がありましたが、そこから随分と遠のいてしまいました。久々に機械学習について触れる機会が出てきたので、学び直しです。 久々に色々と情報収集している中でDVCというキーワードをよく目にする印象があったので、何ごとも試してみる精神で触ってみることにしました。 DVCとは? DVC(Data version Control)は、Gitのようなバージョン管理をデータや機械学習のワークフローに適用できるツールです。機械学習プロジェクトでは、コードだけでなくデータやモデルの管理も重要ですが、DVCを使うとデータセットのバージョン管理や再現性の確保が容易になります。 dvc.org なぜ機械学習にはDVCのような仕組みが求められるのか? ChatGPT先生に聞いてみたり、ググってみたりしたところ、機械学習のプロジェクトでは、コードのバージョン管理だけでなく、データやモデルの管理も重要な要素のようです。 データの変化が結果に影響する: 機械学習では、データのわずかな変更がモデルの精度や挙動に大きな影響を与えます。そのため、データのバージョン管理が欠かせません。 再現性の確保: 過去の実験を再現するには、特定のコードバージョンだけでなく、使用したデータセットやハイパーパラメータも正確に管理する必要があります。 大規模データの扱い: 一般的なGitリポジトリでは、数十GBやTB単位のデータを管理するのは現実的ではありません。DVCのような仕組みを導入することで、ストレージの負担を抑えつつ、バージョン管理を実現できます。 チーム開発の効率化: 機械学習プロジェクトでは、データサイエンティストやエンジニアが協力して開発を進めることが多いため、統一したデータ管理の仕組みが求められます。 AIなどが身近になってきた今では、どんなデータで学習させたかによってモデルの精度や品質が変わってくることを理解するのは難しくですね。 もちろん、DVCがベストな方法かは分かりませんが、知識の1つの点を手に入れるという意味で触ってみることにします。 インストール 公式ドキュメントにはWindows、macOS、Linuxの各OSごとに手順が記載されています。ここではmacOSを例にインストール手順を紹介します。 brew install dvc ツールのインストールが完了したら、バージョンを表示するコマンドを実行してみます。 $ dvc --version 3.59.0 バージョンが表示されたので、無事にインストールが完了していることが確認できました。 DVCの基本的な使い方 1. プロジェクトの初期化 Gitと同様に、DVCもプロジェクトの初期化が必要です。 DVCを使用するプロジェクトのルートディレクトリで以下のコマンドを実行します。 mkdir dvc-sample dvc init ERROR: failed to initiate DVC - /Users/xxxxxx/Documents/works/dvc-sample is not tracked by any supported SCM tool (e.g. Git). Use `–no-scm` if you don’t want to use any SCM or `–subdir` if initializing inside a subdirectory of a parent SCM repository.

Read more...

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

今年1回目の月刊VS Code通信の執筆です。本年も毎月新しいバージョンのリリースに合わせて 今月も新しいバージョンがリリースされたので、リリースノートを眺めていきたいと思います。 目次 目次 Visual Studio Codeニューリリース 主なリリース 今月のピックアップ Visual Studio Codeニューリリース Visual Studio Codeのバージョン1.97がリリースされました。 主なリリース 変更点 変更内容 次の編集提案(Coplilot) 次の編集箇所を予測し、迅速な修正を支援する新機能 Copilot Editsの一般提供 Copilot Editsが一般提供されるように o3-mini モデル追加(Copilot) OpenAIから発表された最新モデルのo3-miniが有料プラン向けに段階的に展開 コマンドパレットの移動 コマンドパレットとクイック入力のウィンドウの表示位置が自由に移動可能に 拡張機能発行者の信頼 拡張機能インストール時に信頼性を評価する確認ダイアログが表示されるように SVG画像プレビュー SVG画像のプレビュー表示がサポートされるように その他詳しいリリース内容については January 2025 (version 1.97) にアクセスしてください。 今月のピックアップ 今月は、「Copilot Edits」の機能について紹介します。すでにChatGPTなどのチャット形式の生成AIを活用したことがある方も多いのではないでしょうか。 Copilot Edits は、Visual Studio Code上でコードを直接編集できる機能です。Copilot Chat を使ってチャット上で指示を出すことで、エディタ内のコードを自動的に修正・変更できます。ChatGPTの「キャンバス機能」に近いイメージを持つと理解しやすいかもしれません。 特に、ChatGPTをプログラミングに活用している方にとっては、この機能を活用することで、より効率的にコード編集が可能 になります。さらに、#selection を使って特定の範囲を指定したり、#file:xxx.ts のように特定のファイルを指定したりすることで、ピンポイントな指示 を出すこともできます。 この便利な機能を活用できる環境にある方は、ぜひ試してみてください。 [source]

Homebrew版JDKを卒業してSDKMANでJDKをインストールする!

macOSでは色々なソフトウェアのインストールに、ずっとHomebrewを使っていました。 手元のマシンで普段使いのほとんどのGUIのアプリケーションやコマンドラインツールの導入にHomebrewを使っています。 仕事でJavaでうごくApache Jmeterを最近利用するのもあってこれまでHomebrewで古いバージョンのJavaをインストールしていたのですが、とうとう新しいバージョンに移行せよというお達しが出てしまったため、移行先を検討していました。 % brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don’t worry or file an issue; just ignore this. Thanks! Warning: Some installed casks are deprecated or disabled. You should find replacements for the following casks: oracle-jdk@17 Homebrewはコマンドラインで利用するFormulaeと、GUIを備えられたアプリケーションが中心に提供されるCasksが提供されています。 Casksはそのほか、配布に制限がある*1アプリケーションなども収録されています。 話を本題に戻して、HomebrewでJavaをインストールするなら普通はFormulaeの方のJavaをインストールすると思うのですが、なぜかFormulaeの方のJavaをインストールしてApache JMeterを起動しようとすると、うまく動かすことができなかったのですよね。 そこであれこれ調べてたどり着いた結果が、Casksで提供されていたOracle JDK 17のインストールだったというわけです。

Read more...

月刊DevOpsニュース 2025年2月号

2025年の最初の月刊DevOpsニュースです。厳しい寒さの日もありますが、暦上では立春を過ぎて少しずつ春の気配を感じ始める頃ではないでしょうか。 今回は、2024年12月と1月の合併号のような形で2ヶ月分のニュースをまとめています。 仮想化/コンテナ クラウド プログラミング 生成AI その他 仮想化/コンテナ Docker Desktop 4.37: AI Catalog and Command-Line Efficiency www.docker.com クラウド AWS、VMware社ではなくAWS自身が提供する「Amazon Elastic VMware Service」プレビュー公開 www.publickey1.jp プログラミング VSCodeで「GitHub Copilot Free」プランが利用可能に。使えるモデルはClaude 3.5 SonnetまたはGPT-4o、1月あたり2000回のコード補完と50回のチャットまで www.publickey1.jp Denoとして初の長期サポート版「Deno 2.1」正式リリース。WebAssemblyの実行が容易に、「npm init」など新機能 www.publickey1.jp MySQL Shell for VS Code GAリリース⁠⁠、PostgreSQLが2週連続で更新版リリース gihyo.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 その他 PublickeyのIT業界予想2025。AIはプロンプトからエージェントへ、ソブリンクラウドに注目、RDBはスケーラブルが基本になるなど www.publickey1.jp マイクロソフト、NoSQL標準の策定を目指し、Cosmos DBで使われている「DocumentDB」をオープンソースで公開。PostgreSQLをベースに

Read more...

イベントレポート '25/1月開催 とことんDevOps勉強会「今日からはじめるWSL実践入門」

今回のとことんDevOps勉強会は「今日からはじめるWSL実践入門」と題して、日本仮想化技術の水野が講師として登壇しました。 WSL(Windows Subsystem for Linux)とは、Windows上でLinux環境を手軽に利用できる機能です。Windowsを使ったことがある方なら、一度は耳にしたことがあるかもしれません。しかし、「名前は知っているけれど、使い方がよく分からず、まだ活用できていない」という方も少なくないのではないでしょうか。 そこで、本勉強会では、これからWSLを使い始めたい方向けに、実践的な入門編として開催しました。 アーカイブ動画や発表資料も公開しておりますので、ぜひご覧ください。 セミナー動画 発表資料 Q&Aまとめ PowerShellの記述方法と挙動への戸惑い Service for Unix デーモンが使えない Hyper-V起動時の構成について ディストリビューションの複数同時稼働 ドライブへのアクセス制限の方法について セミナー動画 youtu.be 発表資料 speakerdeck.com Q&Aまとめ PowerShellの記述方法と挙動への戸惑い 質問 macOS上でスマホアプリ開発Jenkinsを運用していたのですが、WindowsでJenkinsを動かすため、WSLを利用しました。 呼び出すコマンドがWindows版だったら、パラメータで渡すパスがWindows形式である必要であったり、パイプの挙動がちょっと違って悩みました。 回答 LinuxとWSLでは基本的にコマンドの挙動に違いはありません。ただし、WindowsのPowerShellを使用する場合、書き方に違いがあるため注意が必要です。 PowerShellは高機能で便利なツールですが、Linux環境に慣れている方にとっては、独自の書き方に戸惑うこともあるかもしれません。慣れるまで試行錯誤しながら使っていくのが良いでしょう。 Service for Unix 質問 Service for Unixも使っていました。 回答 Service for Unix(SFU)は、Microsoftが提供していたWindows向けのUnix互換環境で、Windows上でUnixのツールやアプリケーションを動作させるための機能群です。主に開発者やシステム管理者がWindowsとUnix/Linuxのシステムを統合しやすくする目的で提供されていました。 SFUはWindows XPやWindows Server 2003の時代に利用されていましたが、のちにSubsystem for UNIX-based Applications(SUA)に統合され、さらに現在ではWSL(Windows Subsystem for Linux)がその役割を引き継いでいます。 デーモンが使えない 質問 起動時に何かを動かす、たとえばsshdを動かしたい場合、BATファイルを作成してWindowsの流儀で起動しました。デーモンが使えないんですよね。 回答 現在のUbuntuでは、デフォルトで systemd が動作しているため、従来のinitシステムに関連する問題は解決されていると考えられます。以前のWSL環境では、systemdが有効化されておらず、サービスの管理に制約がありました。しかし、WSL 2ではsystemdのサポートが追加され、Ubuntuを含む多くのディストリビューションで、より本来のLinuxに近い環境が利用できるようになっています。 Hyper-V起動時の構成について 質問 Windows Pro上で従来のHyper-Vを起動した場合、Hyper-V on Windows on Hyper-Vという構成になる? 回答 (こちらの質問に関しては知見がなく、参考になる回答ができませんでした) ディストリビューションの複数同時稼働 質問

Read more...

Docker Composeで既存のDockerネットワークにアプリケーションを追加する

今回はちょっとした小ネタです。 最近お仕事でKubernetesよりDockerを多く使っている私です(KubernetesもDockerも好きです)。 これまで、普段Dockerは決めた構成で動かすということしかやってきていませんでした。 具体的にいうと「こういう構成で動かす」と決まってから、そのマニフェストを作って環境作成という感じです。 その場合は必要最低限のマニフェストを記述してdocker compose up -dを実行すれば、足りない情報はDockerが補って環境を構築してくれるので特にハマることはないです。 一方、もうすでに動いているものに新しいアプリを追加するときはそうはいきません。 ちょっとだけハマったので、その時の話をシェアしたいと思います。 まずはアプリセットを作成 例えば、マニフェストは次のようなディレクトリー構成であると仮定します。 % tree ~/test /Users/ytooyama/test ├── add │ └── docker-compose.yml ├── docker-compose.yml └── web ├── Dockerfile └── nginx.conf そして、まずはこんなマニフェストでアプリケーションを展開したとします。 services: web: build: ./web ports: - “80:80” networks: - app-network depends_on: - db db: image: postgres:16.6 environment: POSTGRES_USER: pguser01 POSTGRES_PASSWORD: strongpg5656# ports: - “5432:5432” networks: - app-network volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data: networks: app-network: 起動してみます。問題なく起動しました。 % docker compose up -d % docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS test-db-1 postgres:16.

Read more...
Previous Page 3 of 3