Views: 0
DS Audioの光カートリッジ試聴会、4/19-26に東京・エス・アイ・エスにて開催

東京都文京区のオーディオショップ「エス・アイ・エス」は、DS Audioの光カートリッジの音を楽しめる試聴会を4月19日(土)から26日(土)の期間、完全予約制にて開催する。
Source link
Views: 0
【ランクマでも勝てる非ex】「ポケポケ:シャイニングハイ」マスカーニャ採用デッキ2選

ポケポケの強いデッキ、流行のデッキを紹介するコーナー。今回は、新パック「シャイニングハイ」の中でも注目の非exポケモン、マスカーニャを採用したデッキを2つご紹介。特に、2つ目は私がランクマッチでも愛用しているデッキで、勝率70%以上というおすすめデッキになってます。
Views: 0
Azure FunctionsでMCPサーバーを作る!
注目MCPニュース
昨今LLM界隈を賑わせているMCP(Model Context Protocol)ですが、個人的には最近のビッグニュースとして以下の2つが挙げられます。
Azure FunctionsトリガーがMCPに対応!
Azure Functionsは「トリガー」と呼ばれる仕組みを使ってイベントドリブンなアプリケーションを構築することができます(たとえばタイマートリガーで定期実行、HTTPトリガーでWeb APIを作る、など)。
2025年4月5日にAzure FunctionsのMCPトリガーがプレビュー版として公開されたことがMicrosoftの公式ブログで発表されました。本記事執筆時点での対応言語はC#、Python、Nodeの3つです。
VS Code Stable 1.99でMCPが正式サポート!
GitHub CopilotにAgent modeが追加され、それと同時にMCPががサポートされました(プレビュー)。
これまでGitHub CopilotはClineなどと比較してAgenticな動作が弱いとされていましたが、このアップデートによって業界の最先端に並んだ状況です。
というわけで今回はこの2つを掛け合わせて、Azure Functionsを使ってMCPサーバーを作り、VS CodeのGitHub CopilotのAgent modeで、そのMCPサーバーを使ってみます。
作るもの
今回は主にMCPサーバー(Azure Functions)の実装とMCPクライアントの疎通確認ができれば良いので、MCPサーバーの処理はあまり凝らずに、MCPのサンプルとしてよく使われるmcp_server_timeと同じく現在時刻を返すだけの処理にします。
なお今回Azure Functionsの実装はC#を使用しますが、Azure FunctionsのMCPサーバートリガーは前述の通りPythonとNodeにも対応しています。
やってみる
MCPサーバー:Azure Functionsの作成と実行
Azure Functionsプロジェクトの作成
はじめにVisual Studio Code を使用して Azure Functions を開発するの「Azure Functions プロジェクトを作成する」セクションを参考にAzure Functionsのプロジェクトを作成します。
MCPエクステンションの追加
続いてAzure FunctionsのプロジェクトにMCPエクステンションを追加します。
パッケージは以下で公開されているため、コマンドもしくはコマンドパレット(Shift + Ctrl + P)からnugetでインストールします。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.0.0-preview.1
MCPサーバーのツール実装
続いて実際のToolにあたる関数を実装します。冒頭にAzure Functionsのテンプレートを使用してHTTPトリガーの関数を作成したので、その関数を改変するのが楽です。
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Mcp;
using System.Globalization;
using System.Text.Json;
namespace AzfuncMcp;
public class TimeUtil
{
[Function(nameof(GetCurrentTime))]
public string GetCurrentTime(
[McpToolTrigger("getcurrenttime", "Gets the current time. If no timezone is specified, the tool will return the time in UTC.")] ToolInvocationContext context,
[McpToolProperty("timezone", "string", "The name of the timezone.")] string timezone = "UTC"
)
{
try
{
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timezone);
DateTime currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneInfo);
var response = new
{
timezone = timeZoneInfo.StandardName,
time = currentTime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
displayName = timeZoneInfo.DisplayName
};
return JsonSerializer.Serialize(response);
}
catch (TimeZoneNotFoundException)
{
return $"The timezone '{timezone}' was not found.";
}
catch (InvalidTimeZoneException)
{
return $"The timezone '{timezone}' is invalid.";
}
catch
{
return "Could not get the current time.";
}
}
}
MCPサーバーのスタートアップ処理
関数が実装できたら、次はAzure Functionsのスタートアップ処理であるProgram.csを修正してMCPツールを登録します。
using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.Hosting;
using AzfuncMcp;
var builder = FunctionsApplication.CreateBuilder(args);
builder.ConfigureFunctionsWebApplication();
builder.EnableMcpToolMetadata();
builder.ConfigureMcpTool(nameof(TimeUtil.GetCurrentTime))
.WithProperty("timezone", "string", "The timezone.");
builder.Build().Run();
Azure ストレージエミュレーター「Azurite」 の起動
特にブログ記事などでの説明が見つけられませんでしたが、MCP拡張機能はBlobストレージを使用するようです。そのためローカルで実行する場合は、AzureストレージのエミュレーターであるAzuriteを起動しておく必要があります。
まだAzuriteをインストールしたことがない場合はAzurite をインストールするを参考にインストールします。
Azuriteをインストールしたら、Shift + Ctrl + Pでコマンドパレットを開き、「Azurite: Start」を選択します。そしてAzure Functionsプロジェクトのlocal.settings.jsonでAzuriteを使用するように設定します。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
Azure Functionsの起動
では、Azure Functionsをローカルで起動して動作確認してみましょう。
またはVS Codeのデバッグ機能を使ってデバッグ起動します。
テンプレートを使用してAzure Functionsを作成した場合、デバッグ起動のためのlaunch.jsonが自動生成されているはずです。
「Run and Debug」メニューから「Attach to .NET Functions」を選択してデバッグ起動します。
起動に成功するとMCPツールトリガーの関数が起動されたことが確認できます。
MCPクライアント:VS CodeのGitHub Copilotの設定
Shift + Ctrl + Pでコマンドパレットを開き、「MCP: Add Server」を選択します。
MCPサーバーの種類を選択します。今回はHTTP経由でAzure Functionsを使用するので、HTTPを選択します。
MCPサーバーのURLを入力します。今回はローカルで起動しているので、http://localhost:7071を使用します。
MCPサーバーの拡張機能を使用すると「/runtime/webhooks/mcp/sse」のパスが自動的に生成されるので、「http://localhost:7071/runtime/webhooks/mcp/sse
」を指定します。
MCPサーバーの名前を入力します。任意の名前でOKです。
MCPサーバーの追加が完了するとsettings.jsonが更新され、MCPサーバーの情報が追加されます。
もし、初期状態から何も変えていなければ、MCPサーバーのサンプルとして「”mcp-server-time」という名前のpythonのMCPサーバーがすでに存在しているはずです。今回作成したツールとの競合を避けるために、”mcp-server-time”は削除して、作成したMCPサーバーのみが登録された状態にします。
"mcp": {
"inputs": [],
"servers": {
"my-azfunc-mcp-server": {
"type": "sse",
"url": "http://localhost:7071/runtime/webhooks/mcp/sse"
}
}
},
疎通確認
GitHub Copilotのチャットウインドウを開きます。
この時にモードが「Agent」に設定することに注意してください。
続いてMCPの設定アイコン(スパナとドライバーのアイコン)をクリックして、MCPサーバーの設定を開きます。
有効なMCPサーバーのリストが表示されるので追加したMCPサーバーが有効化されていることを確認します。
そしてチャットウインドウに「今何時?」などと入力します。
すると、MCPサーバーを呼び出して良いかの確認が表示されるので、「Continue」を選択します。
実際にMCPサーバーが呼び出され、現在時刻が表示されます。
なお、Azure FunctionsのデバッグウインドウにもMCPサーバーが呼び出されたことが表示されます。
作成したMCPサーバーは、引数にタイムゾーンを指定することができるので、例えば「シアトルは今何時?」と入力すると、自動的にシアトルのタイムゾーンが設定されMCPサーバーが呼び出されます。
まとめ
Azure Functionsは以前からLLMアプリケーションのシナリオと相性が良い場面が多かったですが、MCPサーバーにも対応したことで、よりLLMアプリケーションシナリオ適用の幅が広がりました。
MCPはまだまだ新しい技術ですが、標準のプロトコルがあり、その利用者が増えていることはエコシステムの面でも非常に良いことだと思います。
補足:クラウド上にデプロイする場合
ローカルで疎通確認が完了したAzure Functionsをクラウド上にデプロイする場合は、通常のAzure Functionsと同様にデプロイができます(参考情報)。
その場合の注意点として、クラウド上のAzure Functionsはデフォルトでキー認証が設定されているため、MCPクライアントから使用する場合は設定を変更してキー情報を含める必要があります。その場合のMCPサーバーの設定(settings.json)は以下のようになります。
このように構成するとMCPサーバーを起動した際にFunctionsのキーの入力を求められ、実際にAzure Functionsの設定画面から取得したキーを入力するとクラウド上のAzure Functionsにキー認証付きで接続することができます。
"mcp": {
"inputs": [],
"servers": {
"my-azfunc-mcp-server": {
"type": "sse",
"url": "/runtime/webhooks/mcp/sse",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
},
参考
Azure FunctionsでのMCPサーバーの実装サンプル
MCPサーバー全般の実装サンプル
Views: 0
オオカミの大地緑化ゲーム『Lyca』4月8日Steam向けにリリースへ。荒れ地を駆けてあたりを草原にする、「放置」モードありのリラックス体験 – AUTOMATON
パブリッシャーのPretty SoonおよびデベロッパーのSyphono4氏は4月1日、『Lyca』を日本時間4月8日にリリースすると発表した。対応プラットフォームはPC(Steam)、ゲーム内は日本語表示に対応している。
『Lyca』は荒野を緑豊かな土地にするアクティブ・インクリメンタルゲームだ。インクリメンタルゲームとは『クッキークリッカー』に代表されるクリッカーゲームや、放置系ゲームなど、徐々にゲーム内のオブジェクトや生産速度などの規模が大きくなっていくことを楽しむゲームの総称である。本作でプレイヤーは緑をもたらす魔法のオオカミLycaとなり、荒れ果てた土地を駆け回って緑豊かな草原に変えていく。取り戻された自然からはLycaを強化するためのリソースが獲得できる。Lycaの魔法の力を高め、より広く豊かな草原を作り出すことを目指すこととなる。
ゲームは大きく、荒れ地を駆け回る「ラン」と、Lycaの能力強化の2つ場面に分けられる。「ラン」では方向キーでLycaを操作して荒れ地を草原に変えていく。Lycaが一度の「ラン」で使えるエネルギーには限りがあり、エネルギーが尽きると「ラン」は終了となる。エネルギーは時間経過で減っていくほか、地面や岩などの荒れた土地を変化させることでも徐々になくなっていく。限られたエネルギーの許す範囲で自然を取り戻し、自然からリソースを回収する必要があるわけだ。
ちなみに、本作では土地により獲得できるリソースが異なっている。たとえば地面を変化させると経験値(緑色)が、草原に変えた土地を駆け回ると小さな水色の花が咲いて、水色のリソースが手に入る。Lycaの能力が強化されていくとエネルギーが増え、一度により広い土地に草を生やすことができるようになっていく。それだけでなく、花を咲かせることができるようになったり、岩をも砕いて草原に変えることができるようになったりもする。花からも岩からも、それぞれ違ったリソースが獲得でき、Lycaの能力はさらに高まっていくという仕組みだ。


ゲーム中はPurrple Cat氏が手がけたLo-Fiサウンドが流れており、Lycaとして駆け回っているだけでリラックスした気分を味わえるだろう。ゲームを進行すれば「放置」モードをアンロックすることもできるため、Lycaを自由に走らせてBGMとして利用することもできる。また「エンドレス」モードも存在するため、ゲームに好きなだけ浸ることも可能だ。
本作を手がけたSyphono4氏は個人のゲームデベロッパー。過去にSteam上では、『ゼルダの伝説』と『DARK SOULS』にインスパイアされた見下ろし型2Dソウルライクゲーム『The Golden Eyed Ghosts』をリリースしている。こちらのSteamユーザーレビューは、バトルの操作性やいくつかのクエストにバグがあることなどを理由に「賛否両論」ステータスとなっているが、自由度の高い冒険とやりごたえのある戦闘、そして世界観を含めたコンセプトや、ドット絵によるグラフィックなどの演出面は好評のようだ。今回の『Lyca』は、過去作でも高く評価されているグラフィックにPurrple Cat氏の協力を得たLo-Fiサウンドが加わっており、同氏の強みをより活かした作品になっていると思われる。

『Lyca』は日本時間4月8日、PC(Steam)向けにリリース予定。ゲーム内は日本語表示に対応している。
Views: 0
クリスのコーナー:クリエイティブコーディング – Codepen
ジェイク 考えてください 開発者は、クリエイティブコーディングを再度受け入れる必要があります、 どれの、 わかった、創造的なコーディング本部のようによく感じることがよくあることで、私の机から反対するのは難しいです。なぜトー?ジェイクの観点からは、それは露出に関するものです。
多くのデザイナーと開発者は馴染みのある制約の範囲内で作業していますが、ブラウザは静かな革命を受けています。 Webは、コンテナクエリ、高度なスコーピングと継承、ユーザーの好みへの応答性などの機能をサポートするようになりました。色、タイポグラフィ、ダイナミックユニット、レイアウト、アニメーションの点ではるかに洗練されています。しかし、Figmaの開発者の擁護者として私が話している多くの若いデザイナーや開発者は、これらの可能性を認識していません
創造的なコーディングは、あなたの仕事が必要とするものではなく、あなたが適用するような制約の下でコーディングすることができます。そして、皮肉なことに、その仕事であなたを良くします。
創造的なコーディングを渦巻き、渦巻き、ブリープ、ブループ、サルをサングラスで考えると、それはあなたのために何もしません。デイブの最近の旅だと思います 彼のコード編集者を作るために突っ込む this
迷惑が少ない 絶対にクリエイティブとしての資格があります(グループ)コーディング。 5人のキャラクターを「This」に回すまで行きました。 Webコンポーネントの世界では非常に繰り返されたため、サイズを縮小するためにプログラミングフォントのグリフに入ります。
必ずしも芸術を作っているわけではないが、とにかく創造的な心を曲げている他の創造的なアイデアはどうですか。
すべての「a」文字が自動的に2〜他のすべてのキャラクターのサイズが表示されていても、どこにもサイズが必要な場合はどうなりますか?それは奇妙です。私は頭の上の素晴らしいユースケースを考えることはできませんが、ウェブは大きな場所であり、あなたは決して知りません。 テレンス・エデンは実際にこれで遊んだ ただし、「A」キャラクターではなく、「Any Emoji」です。カスタムを取り入れた素敵な小さなトリックです @font-face
文字(絵文字)のサブセットのみを介して一致するフォント unicode-range
プロパティ、次に使用します size-adjust
それらを強化するために。使用済みのスタックにフォントを含めるだけで、機能します!これは、他の何よりもクリエイティブなコーディングとして資格があると思います。
アダムは、古典的なCSSのトリックを少しカバーしました 先日、要素の上に浮かぶとき、すべての要素がフェードアウトする を除外する あなたがいるもの。の使用 @media (hover)
私にはファンキーですが、それは素晴らしいタッチであり、実際に「通常の」ホバー状態を持つデバイスでのみ効果が発生することを保証します。繰り返しますが、それは日常の有用な概念にかなり直接的につながるような創造的なコーディングです。
OK最後のもの。 RSSフィードをクールに見せるために、創造的なコーディングをチャネリングするのでしょうか?これがそれがどのように見えるかを見るためのツールです。それは絶対に奇妙なものを使用します あなたがXMLに接続するラインとそれはスタイルシートのようにロードされます、それは 完全に事。
Views: 0