二号君の作業小屋
今日もスイちゃんのピトピトという頬つつきから一日が始まります。
今日は一週間ぶりに菜園を訪れる日です。
水やりを担当しているのは二号君です。二号君は、毎日、幻空間からこの場所に顕現しては、レバーを押してくれているようです。
「二号君はわたくしの部屋に帰らなくても良いのですか?」
「ぽふぃ!」
スイがそういうのならば良いのでしょう。
けれど、雨風に当たれば消耗してしまうのがスイボです。スローライフへの道に妥協は許されません。仲間が皆快適に過ごせてこそ、スローライフなのです。
台車に資材を乗せ、菜園に到着しました。
今はネギだけですが、以前よりも青々と育っています。
「二号君のおかげですね」
「ぽふぃ♪」
「今日は二号君のために小さな小屋を用意してあげましょう」
「ぽふぃ!」
「その前に。スイちゃん、いつものをやりますよ」
「ぽふぃ?」
「スキル〝C#〟お手」
``` csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSwibo();
builder.Services.AddSkillDiscoveryMetadataGenerator();
var app = builder.Build();
app.ExposeSkillDiscoveryMetadata("csharp.お手");
app.MapPost("/", async (ISwiboContext context, CancellationToken cancellationToken) =>
{
var swibo = context.Swibos.OfType<SwiboBot>().First();
await swibo.PressAsync(cancellationToken);
return Results.Ok();
});
app.Run();
```
「ぽふ」
スイは光りますが、動きません。
「は~ぴぃ!」
二号君がレバーを押し、畑に噴水が上がりました。
「スイちゃんはできないのですか?」
「ぽふぃ……」
スイは少し気まずそうに口腕を伸ばし、わたくしの指にピトっと触れました。
どういうことでしょうか。
「スキル〝C#〟スイちゃんお手」
``` csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSwibo();
builder.Services.AddSkillDiscoveryMetadataGenerator();
var app = builder.Build();
app.ExposeSkillDiscoveryMetadata("csharp.スイちゃんお手");
app.MapPost("/", async (ISwiboContext context, CancellationToken cancellationToken) =>
{
var スイ = context.Swibos.OfType<SwiboHub>().First(x => x.Name == "スイ");
await スイ.PressAsync(cancellationToken);
return Results.Ok();
});
app.Run();
```
『コンパイルエラー、'SwiboHub' に 'PressAsync' の定義が含まれておらず、型 'SwiboHub' の最初の引数を受け付けるアクセス可能な拡張メソッド 'PressAsync' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。』
どこからともなく声が聞こえてきます。
――世界の声?
そんな伝承を聞いたことがあります。この世界の仕組みに触れたとき、世界の声が聞こえると。コンパイルエラーとは何か分かりませんが、少なくとも『スイボハブ』と聞こえました。
そして、スキルで生成された文言が一行大きく変わっています。
``` csharp
var swibo = context.Swibos.OfType<SwiboBot>().First();
```
``` csharp
var スイ = context.Swibos.OfType<SwiboHub>().First(x => x.Name == "スイ");
```
変化は、`OfType`の次が`SwiboBot`から`SwiboHub`に変わっていること、そして、`First`の次が`x.Name == "スイ"`に変わっていることです。
よくは分かりませんが、スイのクラスがボットからハブに変わったこと、複数のスイボの中から名前で命令しようとしたことが影響しているようです。
「ぽふぃ……」
スイは、また気まずそうに口腕を伸ばし、私の指に触れました。
つまりは、こういうことでしょうか。
「〝C#〟でスイちゃんに命令できなくなったということなのですね?」
「ぽふぃ……」
「今朝はスイちゃんの意思で起こしてくれたのですか?」
「ぽふぃ」
「今もスイちゃんが気を利かせて?」
「ぽふぃ……」
そして、目覚ましの命令は、本当は二号君に伝わっていて、今朝、二号君は無駄に何回も水を撒いていたということになるのでしょう。
なるほど、「ハブ」は「ボット」の上位互換クラスというわけではないようです。
「偉いですね、よしよし。もうスイちゃんには命令しなくても良いのですね」
幻素水晶を与えます。
「ぽふぃ!」
スイは一口ずつ味わうように幻素水晶を口に運びます。
二号君にも与えましょう。
「はぁぴ!」
二号君は遠慮がありません。幻素水晶が一気に消えてしまいました。
もうスイに対して行動を命令をすることができないということは、正直少し寂しくもあります。けれど、スイとは少しだけ対等な関係に近づけたということなのかもしれません。それは喜ばしいことでした。
「けほっ、けほっ」
「ぽふぃ?」
「大丈夫、ただの咳払いです。では今日の作業開始です」
「ぽふぃ!」
今日の作業は、二号君のミニチュア作業小屋作りです。
まずは樽の前に杭を四本打ち込みます。これが小屋の基礎になります。そして、小屋の基本構造には献上品の輸送用木箱をそのまま使用します。大きさはピクニック用のバスケットほどです。防腐剤や防虫剤が染み込んでいるので、屋外でも多少は耐えてくれるでしょう。ヤスリを掛けて汚れを落とします。
「綺麗になりました」
「ぽふぃ!」
次に、ノコギリで出入口を作ります。実際のところ、幻空間を自由に出入りできるスイボに出入口は必要ありませんが、わたくしが様子を見たり幻素水晶を与えたりするために必要です。動物が侵入しないように、蝶番で扉を付けましょう。閂もあるといいですね。内側からも操作できるように、扉の隙間は大きくします。
採光用、通気用、排水レバー操作用のスリットを何カ所かに入れた後、三角屋根を作っていきます。これには木箱の蓋を加工して使います。あとから内部のメンテナンスがしやすいように、屋根は蝶番と留め金で、パカッと開ける構造にしておきましょう。
「ぽふぃ~?」
「次は明かりを付けましょう」
屋根の内側には発光石をとりつけます。スイが近づくと、発光石は明るく光ります。そう、この発光石は幻生生物の息に反応するのです。二号君が近くにいる間は室内を明るく照らしてくれることでしょう。
最後に、防雨用にブリキ板を、錫メッキの釘で屋根に打ち付けていきます。このブリキ板は調理用の四角い平皿を切り抜いたもので、折り曲げてそのまま使います。
「ぽふぃ~」
スイが釘を差し出します。
「ありがとうスイちゃん」
「ぽふぃ!」
仕上げに、速乾性のペンキで、屋根は赤く、壁は白く塗装し、杭と樽に固定して完成です。
さて、二号君は気に入ってくれるでしょうか?
「はぁぴ?」
スイが招き入れると、二号君はきょろきょろとしながら中に入ります。発光石が反応して光を放ち、小屋の中が明るくなりました。
定位置に収まると、二号君は、口腕を伸ばしてレバーに乗せました。
「はぁぴ♪」
「どうやら気に入ってくれたようですね」
「ぽふぃ♪」
「スイちゃんも、この部屋を自由に使っていいですよ」
「ぽふぃ!」
ついでに、豆やきゅうりの苗を植え付けて、今日の作業は終了です。
「スイちゃん、お手伝いありがとうございました。ご褒美の幻素水晶です」
「ぽふぃ~♪」
幻素水晶を頬張りながら、スイはわたくしの周りをくるくると泳ぎ回りました。
こうして、わたくしはまたスローライフへの道を一歩進んだのでした。