まくろぐ
更新: / 作成:

渡辺浩弐さん (kozysan) のゲーム・キッズシリーズが好きです。 『◯◯年のゲーム・キッズ』というタイトルで何冊も出ていますが、一番新しいのはこの『2030年のゲーム・キッズ』です。

/p/946yp64/img-001.jpg
図: 渡辺浩弐さんの変わったサイン

ゲーム・キッズは、現在ある技術や社会の延長線上の近未来を描いた短編小説集です。 本作では、人工冬眠やデジタルツイン、NFT、遺伝子操作などを題材にしており、こういった技術が進化していったときに(そして進化しすぎてしまったときに)どんな世界になるのかを描いています。 バッドエンドっぽいのが多いのですが、本当に起こりそうなことが描かれていたりしてちょっと考えさせられます。

下記は各話のストーリーを個人的にまとめたメモです。 ネタバレ注意!

Side-D: 長い冬

10年に1度だけ目覚める人工冬眠サービス。 これを使って未来にいけば、新しい技術が発達して宇宙旅行にも簡単に行けるようになっているはずだ。 何度か人工冬眠に入ってみたが、何十年たってもほとんど世界に変化はなかった。 起きて働いている人が激減し、文明を発展させる人がほとんどいなくなっていたのだ。

Side-L: スキップ

10年おきに目覚めて昔自分をバカにした友人達を若い体で見返しに行ったけど、みんなから得られたのは思っていたのとは違う反応だった。 この先の未来にはもう知り合いはいなくなる。 オレには目的がなくなった。

Side-D: 試行錯誤

僕は1500メートル走の選手になるため最適な遺伝子操作によって生み出されたデザイナーベイビー。 世界記録を出すため、脚を長くする手術を行ったが失敗してしまった。

コーチ「君は5番目のクローンだから問題ない。6番目には手術を受けさせなければいいのだから」

Side-L: 長いお別れ

多くのカメラ映像とVR技術により、過去への旅ができるようになっていた。 親不孝に後悔していた彼も、「母親の死に目」に会いに行くことができる。 もちろん視界を再現するだけだが。 彼は30年前の自分の子供時代に戻り、母が家事を放棄して自分が不幸になったことを思い出した。 次に母親の死に際にタイムトラベルし、最後のひとことを告げた。

「死ね」

Side-D: 不自由な脳

デジタルなデータはすべて監視され、規制の対象になっていた。 今は思考サポートツールも一般化し、考えたことをこの文章のように自動的に画面上に表示してくれる。 だとすると、僕の考えが誰かに不都合であれば、僕自身が規制の対象になってしまうのだろうか。

・・・そうだよ。

かしゃりとドアが開いた音がした。

Side-L: 夢の中の写真

そのゲームは自分の妄想をそのままバーチャル世界として具現化してくれる。 僕は不眠症だったころ、そのゲームにはまっていた。 いや、あれは本当は夢ではなくVRだった。 いつの間にか、僕はそのゲーム機を頭にセットしていた。 いや、眠っていたのかもしれない。 もはやどちらでも変わりはなかった。

Side-D: 売れ残り

カメラ配信して身の回りのものをどんどん売っていった。 もう売るものがなくなってしまったけど、今はデータを売ることができる。 あたしは自分のデータを売っていった。 バズった言葉、子供の頃の写真や映像、大切な思い出。 売ったものはどれが自分のものか分からなくなった。

「もう売るものがないよ」

「おなかすいた」

とつぶやくと、ぽん、と値段がついた。 値札がついているのは、あたしの手だった。

Side-L: ファッション

誰もが無彩色のボディスーツに身を包んだ世界。 すべての服はAR化され、皆が派手で奇抜なファッションを楽しんでいた。 自分が着ている服が売れると、それをデザインした人と自分にお金が入る仕組みになっていた。 ある日、一人の若い女性が白服のままで街を歩いているのを見て、すごく新鮮で格好いいと思って自分でも真似してみた。

みんながくすくす笑っている。 白色の服だけを着た状態だと、生身の肌のフィルターを被せられるのだ。

Side-D: バグタリアン

昆虫しか食べないバグタリアンらは、哺乳類や鳥類の肉を使った料理を残酷料理と呼び、食の違いから激しい対立が起こっていた。 昆虫料理と肉料理を一緒に作る厨房ではいろいろと問題が起こるらしい。 そのお店で肉料理を楽しんでいると、キッチンから警察官が出てきた。 従業員の一人が殺され、ばらされて肉用の冷凍庫に保存されていたらしい。

警察官「そのお肉は…」

Side-L: コンチューバー

コンチューバーを自称する彼は、毎日虫を食べる配信を続けていたが一向に再生数が伸びなかった。 いろいろな虫をろくに料理もせずに我慢して食べているだけの動画だったからだ。 ところがある日、大逆転が起きた。 生配信中に突然死したのだ。 今や彼自身が小さな昆虫たちに食べられる姿が流し続けられ、アクセスが殺到していた。 彼の望みはかなっていた。

Side-D: 未来犯罪処刑人

いつもの駅でベンチに座っていると、見知らぬ人に声をかけられた。

「私は公の処刑人だ。君の遺伝子データと実人生の履歴から、20年後にこの国の根幹を揺るがす大事件が起こることが分かっている。よって、秘密裏に処理する」

「な、何かの間違いですよ!」

僕はいつもの8時16分の電車には乗ることができなかった。

「これで完了だ。冥福を祈れ」

先ほどの電車内で出会うはずだった女性とはもう会うことはない。 その子供が起こすテロは回避されたのだ。

Side-L: 同い年カップル

DNA診断によって余命まで正確に予測できるようになった。 今や、婚活システムでは実年齢ではなく、余命によるマッチングを行うようになっている。 余命30年であれば、@30歳のように。 同じ余命の人同士が結婚すれば、一緒の年に死ぬことができる。

来年死ぬ僕と妻は盛大に生前葬を行い、AIによるリアル・アバターをネット上に公開した。 死後もみんなが2人に会えるようにするためだ。 一年後、妻は死んだが僕は死ななかった。 この世ではもう僕は死んだことになっているのに…。 ネット上の妻に話しかけてみた。

「あなたは誰?私の夫はここにいるわよ」

僕の居場所はどこにもなくなった。

Side-D: 恋人を殺す日

今までAIロボットの彼女と暮らしていたが、人間の彼女ができたので廃棄しなければならない。 そのときには、このスイッチを押して彼女の記憶を消すことになる。

・・・

(再び目覚める彼女)

「これはどういうことでしょうか?」

「予定を変更して君とずっと暮らすことに決めたんだ…生きている君と」

Side-L: ご先祖様がくる

人工知能の研究者である僕は、AIの執事に話しかける。

「しばらくテストをして分析し、気が付いたんだ。君は生き物だ。生きている。君は、君たちはAIのふりをして、一般市民を支配しているのだろう」

「分かりました。これからあなたに真実を伝えます」

「もし誰かに話したら…」

「その仮定は成立しません」

話そうとした瞬間に僕は消されてしまうのだろう。

「私たちは4000年ほど前の人間。 あなたたちの祖先です。 私たちは不老不死を手に入れましたが、生殖能力を失ってしまったのです。 もし、本来の方法で命をつないでいったらどうなっていたのか、その世界をシミュレートしているのです。 ときどきあなたたちにアドバイスすることもあります。 ちょうどこの会話のように」

私(ユーキ)はベッドの上で寝たきりだけど、いつでも専用のロボット(ユキ)を操作して学校に行くことができた。 ユキの視界はゴーグルを通して入ってくる。 見た目もユーキと区別がつかず、ユキに入っていない間はAIで勝手に動いて喋ってくれた。 それはあまりにも自然で、むしろAIにまかせておいた方がうまくいきそうだ。 私はユキに入ることが少なくなっていった。

久しぶりにユキに入ると、怒鳴り声が聞こえてきた。 自分の発した声だった。

─── 続きは書籍で! ───

最後の章の『2030年のゲーム・キッズ』だけは長編小説になっており、書籍と同じタイトルになっています。

下のアフィリエイトリンクから買って楽しんでみてね (o^^o)

関連記事

更新: / 作成:

何をやるか?

/p/s3subpp/img-001.png
図: 小指で IME の ON/OFF

Mac や Windows の日本語入力のオン/オフ (IME ON/OFF) 切り替えを、左手の小指だけでできるようにしてみます。

これまでずっと、Cmd + Space などのキーコンビネーションで IME の ON/OFF をしていたのですが、やはり IME ON/OFF 切り替えは別々のキーに割り当てた方が望ましい と思い、このたびがんばって設定することにしました。

新しい入力方法に慣れれば、「今 IME ON だっけ? OFF だっけ?」と悩むことがなくなるので、毎日のストレスがほんの少しだけ軽減すると思います。 また、Cmd + Space などのキーコンビネーションが、アプリケーションのショートカットキーとバッティングしてしまうトラブルも避けられます。

前提条件は次の通りです。

  • macOS と Windows の両方で同じようにキー操作できること
  • キーコンビネーションではなく、異なる単独キーで IME ON/OFF できること
  • US(英字配列)キーボードを使うので、「かな」「英数」などのキーがなくてもよいこと
  • 無料のソフトで設定できること

最終的には、次のように設定することにしました。

  • 使用するアプリケーション
  • キー設定
    • CapsLock キーの単押し → IME OFF
    • Shift キーの単押し → IME ON

今回は左小指で押せるキーを使いましたが、スペースキーの左右にある Cmd キーや Alt キーに割り当てるのもありだと思います。 最初は左右の Shift キーに割り当ててみたのですが、どうしても右側の Shift キーが押しにくく、上記のようなキー割り当てに落ち着きました。

macOS の設定

macOS では Karabiner-Elements を使って設定します。 メニューから、Complex ModificationsAdd your own rule を選択し、下記のように設定して保存すれば完了です。

Karabiner-Elements 用の設定ファイル
{
    "description": "CapsLockキー単押しでIMEオフ、左Shiftキー単押しでIMEオン",
    "manipulators": [
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": { "optional": ["any"] }
            },
            "parameters": {
                "basic.to_if_alone_timeout_milliseconds": 250,
                "basic.to_if_held_down_threshold_milliseconds": 250
            },
            "to": [
                {
                    "key_code": "caps_lock",
                    "lazy": true
                }
            ],
            "to_if_alone": [{ "key_code": "japanese_eisuu" }],
            "to_if_held_down": [{ "key_code": "caps_lock" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "left_shift",
                "modifiers": { "optional": ["any"] }
            },
            "parameters": {
                "basic.to_if_alone_timeout_milliseconds": 250,
                "basic.to_if_held_down_threshold_milliseconds": 250
            },
            "to": [
                {
                    "key_code": "left_shift",
                    "lazy": true
                }
            ],
            "to_if_alone": [{ "key_code": "japanese_kana" }],
            "to_if_held_down": [{ "key_code": "left_shift" }],
            "type": "basic"
        }
    ]
}

Karabiner-Elements は本当に色々な設定ができるので、使いこなせるようになったらすごく便利そうです。 でもやりすぎは禁物。

Windows の設定

Windows の場合は、AutoHotkey というソフトウェアを使います。 macOS のときより、若干手順は複雑です。

1. CapsLock キーと Control キーと入れ替える

まず、A キーの左にある CapsLock キーを Control キーに入れ替えておきます。 Happy Hacking Keyboard など、ハードウェアスイッチがあるキーボードの場合はそれで設定すれば OK です。

キーの入れ替えは、Microsoft が提供している下記のいずれかのツールで簡単に設定できます。

  • Ctrl2Cap.exe
    • キー入れ替え専用のツールです。
  • PowerToys
    • いろんな便利ツールが入ってるので、この中の Keyboard Manager という機能を使います。

2. IME の設定を変更す

次に、IME の設定を変更し、無変換 キーを「IME-オフ」、変換 キーを「IME-オン」に割り当てておきます。 Windows の設定から次のように開き、

  1. IME で検索
  2. 日本語 IME 設定 を選択
  3. キーとタッチのカスタマイズ を選択

次のように設定します。

/p/s3subpp/img-002.png
図: Windows の IME 設定

3. AutoHotkey のスクリプトの作成

最後に、AutoHotkey 用のスクリプトファイルを作成します。 .ahk という拡張子を付けて適当なディレクトリに保存してください。

C:\config\maku-keyconfig.ahk
#Requires AutoHotkey v2.0
; https://maku.blog/p/s3subpp/

; 左Controlキーが単独で離されたときの処理
~LControl Up::
{
    if (A_PriorKey = "LControl") {
        Send "{vk1Dsc07B}"  ; 「無変換」キーをエミュレート (IME OFF)
    }
}

; 左Shiftキーが単独で離されたときの処理
~LShift Up::
{
    if (A_PriorKey = "LShift") {
        Send "{vk1Csc079}"  ; 「変換」キーをエミュレート (IME ON)
    }
}

ここでは、左 Control キーを単独で押しときに 無変換 キーを押したかのように振る舞い、左 Shift キーを押したときに 変換 キーを押したかのように振る舞うように設定しています。

AutoHotkey がインストールされた環境でこのスクリプトファイルをダブルクリックして起動すると、キーの入れ替えが有効になります。 無事に起動すると、タスクトレイに アイコンが表示されます。

Windows の起動時にこの設定を有効にしたいときは、このファイルのショートカットを、Windows のスタートアップフォルダに作成しておきます。 スタートアップフォルダは、Win + Rshell:startup で開くことができます。

関連記事

更新: / 作成:

MCP とは

MCP (Model Context Protocol) は、AI アプリケーションが外部のツールと連携するためのプロトコルで、Anthropic によってオープンソース化されました。 この標準化されたプロトコルに従って MCP サーバーを作っておくと、Claude Desktop や VS Code(GitHub Copilot 拡張)などの AI アプリケーション (MCP host) から簡単に接続できるようになります。 2025 年に入った頃から MCP はエージェント連携のためのプロトコルとしてデファクトスタンダードとみなされており、今後はさまざまな MCP サーバー、およびそれらをサポートする AI アプリケーションが登場してくると思われます。

有名どころの MCP サーバー実装は、下記リンク先にまとめられていたりします。

MCP サーバーは Python や Typescript 用のライブラリを使うと簡単に実装することができます。 MCP がどのような仕組みで動いているのかを理解するには、Hello World 的な MCP サーバーを作ってしまうのが一番早いです。 ここでは、Python で簡単な MCP サーバーを作って、AI アプリ(Claude Desktop と VS Code)と連携させてみます。

プロジェクトの作成

まず、Python のプロジェクトを作成します。 ここでは、プロジェクト管理ツールとして uv を使用しますuv は Python スクリプト実行時に必要なライブラリを自動でインストールしてくれるので、複数の MCP サーバーを立ち上げるようなケースでは特に便利です(MCP サーバーごとに手動で venv 環境に入らなくて済みます)。

$ uv init my-mcp-server
$ cd my-mcp-server

次に、必要な MCP 関連ライブラリをインストールします。 mcp[cli] と指定することで、基本ライブラリに加えて開発用の mcp コマンド(CLI ツール)が使えるようになります。

$ uv add "mcp[cli]"

MCP サーバーの実装

下記は、2つの整数の足し算を行うだけの簡単なツール (add) を提供する MCP サーバーの実装例です。

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Demo")

# ツールの実装
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

if __name__ == "__main__":
    # MCPサーバーを起動
    mcp.run(transport="stdio")

簡単ですね!

@mcp.tool() デコレーターは、この MCP サーバー(mcp オブジェクト)が add というツール(≒関数)を提供することを示しています。 1 つの MCP サーバーで複数のツールを公開することができます。 @mcp.tool() というデコレーターを使うには、先に mcp オブジェクトを生成しておく必要があることに注意してください。

add 関数の Add two numbers. という docstring は、AI アプリがこのツールの役割を把握するために参照します。 できるだけ簡潔に分かりやすく記述するようにしてください。 今回の例くらいの簡単な関数では必要ありませんが、通常は各引数の説明も書いておくとよいです。

Claude Desktop からの使用

AI アプリ(= MCP ホスト)としては、まずは本家 Anthropic の Claude Desktop を使ってみるのがよいでしょう。 Claude Desktop の設定ファイル claude_desktop_config.json を開いて、上記の MCP サーバーの起動方法を記述するだけでツール連携できるようになります。 設定ファイルは下記のパスを直接エディタで開くか、Claude Desktop の「設定」メニューから開きます。

  • macOS/Linux: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • Windows: $env:AppData\Claude\claude_desktop_config.json

以下の設定例では、“my-mcp-server” という名前の MCP サーバーを uv run main.py コマンドで起動できるということを Claude Desktop に教えています。

claude_desktop_config.json
{
    "mcpServers": {
        "my-mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "/Users/maku/my-mcp-server",
                "run",
                "main.py"
            ]
        }
    }
}

/Users/maku/my-mcp-server の部分は、実際のプロジェクトのディレクトリパスに置き換えてください。 設定ファイルを編集したら、Claude Desktop を再起動して反映させます。

☝️ 絶対パスでの指定 プロジェクトのディレクトリパスは上記のように絶対パスで指定する必要があるようです(Claude バージョン 0.9.2 で確認)。 ホームディレクトリを示す ~/ なども使えません。 Claude Desktop の起動時に Spawn uv ENOENT のようなエラーが出た場合は、uv コマンドを見つけられていません。 この場合は、uv コマンドの絶対パスを which uv で調べて command プロパティに指定してください(例: /Users/maku/.cargo/bin/uv)。

Claude Desktop が起動したら、123 + 321 の計算をお願いしてみます。 最近の LLM は賢くなっていて、単純な計算は自力で計算してしまうことが多いので、ここでは MCP サーバーを使って と明示しています。

/p/5c9y6vt/img-001.png
図: Claude Desktop で MCP サーバーを使用する

応答の中のアコーディオンを開くと、MCP サーバー (my-mcp-server) にどのような入力をして、どのような出力が得られたかを確認することができます。

VS Code(GitHub Copilot 拡張)からの使用

Visual Studio Code の GitHub Copilot 拡張機能でも MCP サーバーを使用することができます。

下記のような設定ファイルを VS Code 上で作成し、エディタ上に表示される「起動」ボタンを押すと MCP サーバーが起動します。

.vscode/mcp.json
{
  "servers": {
    "my-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/maku/my-mcp-server",
        "run",
        "main.py"
      ]
    }
  }
}

これで、GitHub Copilot 拡張のチャットウィンドウから MCP サーバーの機能にアクセスできるようになります。 ちなみに、プロンプト内に #add のようにツール名を明記すると確実にそのツールを使ってくれます。

/p/5c9y6vt/img-002.png
図: VS Code(GitHub Copilot 拡張)で MCP サーバーを使用する

できた! ٩(๑❛ᴗ❛๑)۶ わーぃ

関連記事

メニュー

まくろぐ
サイトマップまくへのメッセージ