Yabai環境設定

はじめに

最近、LGの31インチモニタ*1を購入し、作業環境が大きく変わりました*2。そしてこれを機に、作業スペースをより効率的に活用する方法を模索し始めました。そこで、タイル型ウィンドウマネージャ「Yabai」を導入することにしました。

なぜタイル型ウィンドウマネージャか?

今までは16インチのMacBookの画面を1つのウィンドウを全画面表示していました。31インチモニタへの移行すると情報が散漫になりがちだったのでスペースの有効活用をしたくなりました。

それに私はマウスよりはキーボード操作を多用するので、ウィンドウを操作するために広い画面をマウスで移動するのにはストレスを感じました。

複数のウィンドウを自動で分割配置し、マウス操作を最小化してキーボード主体で操作できる環境が必要と感じました。

過去にLinuxでxmonaddwmを使用していた経験もあり、Mac環境で同様のツールを探していました。

タイル型ウィンドウマネージャとは?

タイル型ウィンドウマネージャは、デスクトップ環境にあるウィンドウを管理するために常駐起動しておくプログラムです。主な特徴は以下の通りです:

  • 初期状態でウィンドウをグリッド状に自動配置
  • 新規ウィンドウが開くと自動で画面分割
  • キーボードによるウィンドウサイズ・配置方式の変更など

Yabaiの特徴

github.com

Yabaiは、macOS向けのタイル型ウィンドウマネージャです。ノルウェーのkoekeishiyaさんが開発し、詳細な設定ファイルによる制御が可能です。

プラグインシステムもサポートしており、操作感がXmonadに似ているため、私はYabaiを選びました。

skhdについて

github.com

skhdは、Yabaiと組み合わせて使用するグローバルキーボードショートカットツールで、Simple HotKey Daemonの略です。

Yabaiの開発者koekeishiyaさんよって作成されており、組み合わせて使える設計になっています。yabaiに依存しないので、skhd単独でも使用可能です。skhdで任意コマンドを割り当てることが可能です。

インストール方法

Yabaiとskhdのインストールは以下の手順で行います:

Homebrewを使用してインストール

brew install koekeishiya/formulae/yabai
brew install koekeishiya/formulae/skhd

設定ファイルの準備

Yabaiとskhdの設定ファイルは別です。通常以下から読み込まれます

  • Yabai: ~/.yabairc
  • skhd: ~/.skhdrc

インストールディレクトリにテンプレートがあるのでこれをコピーしてきます

cp /opt/homebrew/opt/yabai/share/yabai/examples/yabairc ~/.yabairc
cp /opt/homebrew/opt/yabai/share/yabai/examples/skhdrc ~/.skhdrc

設定のカスタマイズ

私の好みでは基本的にはデフォルト設定を使用し、必要に応じて少しずつカスタマイズを追加します。

.yabaircはシンプルなシェルスクリプトで起動時に実行されます。個別の設定はコマンドラインからも実行できるので、コマンドで試してそれを設定に残しておきます

❯ yabai --help       
Usage: yabai [option]
Options:
    --load-sa              Install and load the scripting-addition.
    --uninstall-sa         Uninstall the scripting-addition.
    --install-service      Write launchd service file to disk.
    --uninstall-service    Remove launchd service file from disk.
    --start-service        Enable, load, and start the launchd service.
    --restart-service      Attempts to restart the service instance.
    --stop-service         Stops a running instance of the service.
    --message, -m <msg>    Send message to a running instance of yabai.
    --config, -c <config>  Use the specified configuration file.
    --verbose, -V          Output debug information to stdout.
    --version, -v          Print version to stdout and exit.
    --help, -h             Print options to stdout and exit.
Type `man yabai` for more information, or visit: https://github.com/koekeishiya/yabai/blob/v7.1.2/doc/yabai.asciidoc
yabai --start-service

を実行するとプロセスが起動します

macOSのlaunchdで自動起動する設定ファイルが以下に配置されます

ls ~/Library/LaunchAgents/com.koekeishiya.*.plist

.skhdrc はショートカットキー:実行するコマンドを列挙して設定するシンプルなファイルです。ここにyabaiコマンドを書いておくことでキーボード操作できるようになります

私の設定は以下のようにしています

# on/off toggle for yabai
cmd + alt - y : yabai --start-service
cmd + alt - d : yabai --stop-service

# focus window
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east

# swap managed window
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east

# toggle window split type
alt - e : yabai -m window --toggle split

# float / unfloat window and center on screen
alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2

cmd + alt - yでオフにできるようにしているのは外出先では16インチで作業するからです。この時は全画面勢に戻りたい。

alt - tは再配置対象から除外したいモーダルダイアログなどに適用しています。

特定のウィンドウをタイル内に表示せずにしばらくお休みさせておきたい場合はmacOSのデフォルトウィンドウマネージャの⌘+Hで隠しています

終わりに

Yabaiの導入により、大画面モニタでの作業効率が向上しました。キーボード主体の操作と自動ウィンドウ管理により、ストレスなく複数のアプリケーションを同時に扱えるようになりました。

私の場合は、これをmacOSの仮想デスクトップを組み合わせて利用しています。デスクトップ1「開発ツールのみのタイル群」デスクトップ2「コミュニケーションツールを集めたタイル群」など。

タイル型ウィンドウマネージャに興味があるキーボード派なMacユーザーは、ぜひYabaiを試してみてください。初期設定に少し時間がかかりますが、慣れれば快適に大画面生活が送れます*3

Structured Outputsを使うとかしこい文章校正ツールを手軽につくることができる

Structured Outputsは、Chat Completions APIから得られる返答のデータの構造と型を強制するための機能で、最近OpenAIのSDKにも追加されました。

https://platform.openai.com/docs/guides/structured-outputs/ui-generation

この機能を利用することで、簡単な文章校正ツールを作ることができます。

仕組み

  1. 文章データをOpenAIのAPIに送信する際に、各行に番号を付与します。これにより、GPTは各文がどの行にあるかを特定できるようになります。

  2. 文章に対する指示をプロンプトに添えます。例えば、「前提情報が足りない部分を指摘して」といった指示を加えます。

  3. 返答をStructured Outputsで制限することで、「何行目に対するコメント」という形式の結果を得ることができます。

この方法は「LLM にコードを「差分」で書き換えさせるためのアイデア」から着想をえています。

以下は、この文章校正ツールのサンプルコードです:

#!/usr/bin/env python
import sys
from pydantic import BaseModel
from openai import OpenAI


class LintResultItem(BaseModel):
    num: int
    line: str
    comment: str

class LintResult(BaseModel):
    items: list[LintResultItem]


if __name__ == "__main__":
    input_file = sys.argv[1]
    rule = sys.argv[2]
    with open(input_file, "r", encoding="utf-8") as infile:
        text = infile.readlines()
        text_with_line_numbers = "\n".join(
            [f"{i+1}: {line}" for i, line in enumerate(text)]
        )
        
        client = OpenAI()
        completion = client.beta.chat.completions.parse(
            model="gpt-4o-2024-08-06",
            messages=[
                {"role": "system", "content": f"下記は行番号付きのテキストです。ユーザーの指示に従い、必要な箇所にコメントをしてください。\n指示: {rule}"},
                {"role": "user", "content": text_with_line_numbers},
            ],
            response_format=LintResult,
        )

        result = completion.choices[0].message.parsed
        result_items = result.items
        for item in result_items:
            print(f"{item.comment}")
            print(f"  {item.num}: {item.line}")
            print("")

すべての処理を手動でChatGPTに入力することも可能ですが、行番号をすべて入力するなどの作業は煩雑です。このような定型的なタスクは自動化する方が効率的で現実的です。

出力をStructured Outputsにすることで、メタ情報が付与されるので以下のような利点があります:

  1. リントツールとしてエディタに組み込みやすくなる
  2. ウェブアプリ化など、他のプログラムと連携しやすくなる
  3. 書き換えの自動化など、結果の解析や処理が容易になる

使用例

以下は、本記事の執筆中の文章に対して校正をお願いした例です:

❯ python main.py sizu.md 前提情報が足りない部分を指摘して      
この行の主張を具体的に示すため、Structured Outputsがどのように文章校正に役立つのか、またその利点や応用例を説明する必要があります。
  1: # Structured Outputsを使うとかしこい文章校正ツールを手軽に作ることができる

プロンプトに添える指示の具体例を示し、Structured Outputsがどのように機能するのか、プロンプトと出力の間のメカニズムを具体的に説明すると読者にとって分かりやすくなります。
  5: 文章に対する指示をプロンプトに添える。返答をStructured Outputsで制限することで「何行目に対するコメント」という結果を得ることができる

自動化する利点をより具体的に示すことで、手動の方法に対する自動化の優位性を明確に説明する必要があります。また、具体的な例やシナリオを挙げると理解が深まります。
  7: これによって簡単な文章校正ツールを書ける。その気になれば全ての処理は手動でChatGPTに向かって打ち込むことで代用はできるが、しかし、この程度のタスクなら自動化する方が現実的です。
❯ python main.py sizu.md "漢字とかなの使い分けの方針は一貫しているか"
漢字とかなの使い分けに関して、一貫性が欠けている可能性があります。"作る"は漢字にしており、他の動詞(例:"できる"など)は平仮名が使われています。
  1: # Structured Outputsを使うとかしこい文章校正ツールを手軽に作ることができる

漢字とかなの使い分けに関して、一貫性が欠けています。"得て"は漢字にしているが、他の動詞(例:"込む"など)は平仮名です。
  15: この方法は「LLM にコードを「差分」で書き換えさせるためのアイデア」から着想を得ています。

"全て"は漢字で、"すべて"は平仮名が混在しています。記述が一貫していないようです。
  23: 全ての処理を手動でChatGPTに入力することも可能ですが、行番号をすべて入力するなどの作業は煩雑です。このような定型的なタスクは自動化する方が効率的で現実的です。

"しやすく"は平仮名ですが、他の動詞(例:"使う"など)は漢字になっています。記述が一貫していない可能性があります。
  46: 他のプログラムと連携しやすくなる

Meta Quest アプリの開発環境を構築する

なぜMeta Questか

インターネットの人の終わり: pha『パーティーが終わって、中年が始まる』で書いたようにVRヘッドセットは私が思っていたより普及しているのを知りました。そこで現時点で一番普及しているMeta Quest 3を入手して体験してみたいと思い、先日購入しました。

消費者視点としてはしばらく使ってみて満足したので、次はクリエイター視点で遊んでみることにしてアプリ開発をする方法を調べました。

Quest 3はAndroidベースのOSなので、開発者はUnityやUnreal Engineなどのツールで3Dゲームを作って、それをAndroidアプリとして提供するというイメージです。

私の環境はApple SiliconのmacOSデスクトップで、Unityを使って開発します。

Meta Questのセットアップ

  1. Meta Quest Developer Hubのインストール: macOS用のMeta Quest Developer Hub(MQDH)をダウンロードします。このツールはデバイスの管理やアプリのリリース作業まで使えます。
  2. 開発者モードの有効化: Meta Questの開発者モードを有効にします。これでデバイスにアプリを直接インストールしてテストできます。

開発環境のセットアップ

  1. Unityのインストール: Unityの公式サイトからUnity Hubをダウンロードしてインストールします。対象バージョンはLTSの2022でOKです。
  2. Android SDKとADBのインストール: アプリケーションのビルドとデプロイにはAndroid SDKとADB(Android Debug Bridge)が必要です。これらはUnity Hubを通じてセットアップすると、Unity Editorから直接Meta Questに接続してデバッグ実行することもサポートしてくれます。私はAndroidアプリ開発環境がすでにあるので最小限のセットアップで済みました。
  3. Unityプラグインの追加: Unityのアセットストア経由でMeta XR All-in-One SDKをインストールします。

assetstore.unity.com

アプリ開発

  1. Unityの“VR Core”のテンプレートからプロジェクトを作成します。
  2. APKのビルド: UnityでアプリをAPKファイルとしてビルドします。
  3. Meta Questへのデプロイ: Meta Quest Developer Hubを使用してAPKを直接インストールできます。
  4. テスト: デプロイ後、Meta Questヘッドセット内でアプリケーションを起動できます。

リリース

  1. Meta Questデベロッパーアカウント: Meta Developer Centerでデベロッパーアカウントに登録します。
  2. Meta Horizon Storeへの登録: Meta Horizon Storeにアプリを登録します。Meta Horizon StoreはAndroidでいうPlayストアに相当します。

参考資料

developer.oculus.comの以下のページから始めるのが一番効率がよかったです

developer.oculus.com

データベース中心の設計になってしまう問題と闘う

『手を動かしてわかるクリーンアーキテクチャ 』の第二章の冒頭に登場する話題に共感したので紹介。

従来の多層アーキテクチャでは、データベースを中心にアプリケーションの 開発が行なわれます。この場合、Web 層はドメイン層に依存し、ドメイン層は 永続化層、つまり、データベースに依存することになります。そうなると、す べてのものは永続化層上に構築されることになり、その結果、いくつかの要因 が絡まり合って、問題が起きやすくなります。
手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発 20p

著者によれば、機能開発をデータベース中心に設計すると、ドメイン層と永続化層の密結合が発生し、保守性が低下することがある。この問題を解決するために、本の後半でヘキサゴナルアーキテクチャ1による解決策が提示されるという構成になっています。

例えば、機能開発を以下のようなフローで進めると、このアンチパターンに陥りやすくなります。

  1. カンプデザインから開発を開始する。
  2. これを実装するためにデータベース設計を考える。
  3. データベースに保存するコードを作成する。
  4. ビジネスロジックを完全に実装する。
  5. Viewにデザインを適用し、全体を繋げて完成させる。

ORMのAPIを使えばオブジェクトをモデルとして表現できるため、ビジネスロジックに自然に組み込むことが可能です。そのため必然とビジネスロジック内にDBの呼び出しが発生します。なので、一部の人々はこれをORMのせいにすることもあります。

ヘキサゴナルアーキテクチャでは、ビジネスロジックはインターフェイス(ポート)のみに依存し、データベースとの結合をアダプタ層へ切り離します。そのため、内部でデータベースの読み込み方法を変更したり、キャッシュ操作などをしてもビジネスロジックには影響がないとされています(本当か?)。

私のやり方

「初手で2回実装する」

まず、プロトタイプはUXテストだけを目的に実装します。多くの場合、MVCフレームワークのコントローラーレイヤー(本書で言うWeb 層)にベタ書きします。

人間の使い心地を確認したのち、次の段階でソフトウェア視点での使い心地を考慮して書き直します。この時、インターフェイスを決定し、全てのマイグレーションを無かったことにして、インターフェイスからクエリを決め、スキーマも決定します。実行計画でクエリの効率もこの時点で確認しておく。

インターフェイスが決まったら、それを使ってテストコードとプロダクションコードを書きます。Viewレイヤーは、プロトタイプのものをそのまま使えることが多いです。

一発で解決するのは難しいため、このスタイルに落ち着きました。2倍の時間がかかるかというとそうでもありません。ほとんどがコードの移動作業ですし、UXテスト中に発生する「やっぱりこう変えたい」という手戻りを回避できるので、感覚的には同じくらいの時間で済むと感じています。


  1. 本書ではクリーンアーキテクチャを実現するための具体的なアーキテクチャの1つがヘキサゴナルアーキテクチャであると解釈します

それはメタモヒカン族ですね:麻布競馬場『令和元年の人生ゲーム』

『令和元年の人生ゲーム』は2024年2月に文藝春秋から発売された小説で第171回直木賞の候補作。

著者の麻布競馬場はTwitterの有名人らしいが私はクラスタが違うのか一度も見たことはなかった。

Twitter上で投稿された小作品は「タワマン文学」などと呼ばれる。主に高級タワーマンションに住む人々の生活の悲哀や葛藤を描く。表面的には成功した生活を送っているように見える人々が、内心では虚無感や劣等感を抱えているという筋書き。

本作の評判だけ聞いて京大生の文化を書くような小説があるけどそれの慶應版かぐらいに予想していた。

この作品は、「Z世代」の若者たちのリアルな姿を描いた群像劇という説明がされているが著者は1991年に生まれでミレニアル世代に分類される。

インタビューによると毎夜港区界隈を飲み歩き、Z世代たちと交流することで得た話を創作に活かしているという。ほな『東京都北区赤羽』かぁ…

著者いわく我々現役世代の平成の競争社会を生き抜いてきた世代にとって成功の象徴だった"タワーマンション"への憧れのような価値観を、Z世代の若者たちは共有していないことに注目したという。

私自身はZ世代との繋がりはなく何も共感できてないのでTogetterまとめで見かけるN=1伝聞ストーリーのような気分で読んでいた。意識高い系の前提条件として家柄や育ちの良さがあり、それが私の人間関係と繋がりがないことの表れになっているのかもしれない。

本作は4つの章に分かれておりそれぞれの話で観測者になる語り手が変わる。語り手は名前のない参加者として物語に存在するが、全編にわたって沼田というキーパーソンが出てきて全ての話に関与する。各章は数年の空白期間がありその間に沼田の性格や立場がガラっと変わっている。

あらすじに載っている「クビにならない最低限の仕事をして、毎日定時で上がって、そうですね、皇居ランでもしたいと思ってます」というセリフは沼田が就活で人材大手ベンチャーの面接で言った言葉で第2話のもの。

第1話時点では沼田はビジコンサークルで起業家志望の新人にリーダーの座を奪われ、皮肉な評論家となってしまった大学生として描かれている。

語り手は新入生としてそのサークルに参加した1年生で、そんな沼田や起業家の卵の言動を分析して心の中で評価する。

このように他人を自分の想像の中で分析して評価し続ける文体がこの作品の特徴で常に登場人物たちが自意識バトルを仕掛ける。

途中まで読んでいた段階でこれは私の周りのはてな民は嫌いだろうなと感じたのだけど、検索してみたら案の定めっちゃ嫌われていた。一昔前のはてなグループ「モヒカン族」の活動がちょうどこういう扱いを受けていたのを思い出した*1

先のとうり第2話では沼田が堂々と社内ニート宣言する空気を読まない変人に変化しているのだけど、こういう性格の人物はWeb業界にしばしばいる。一昔前のこの業界は現在のように人材の需要と供給のバランスが崩れていた上に共同作業の機会も少なかったので、社会性のないオタクでも潜り込みやすかったのだ。かくゆう私自身がそうであるし、ちょっと言動も沼田と似てる。

第3話では若者の集まるシェアハウスに社会人のチューターとして沼田が存在する。「若者に教えることなど何もない」とのたまう沼田だが、同居は了承する。

ここで注目したいのは沼田が大学生時代から全編にわたって「飲み会に全参加する人物である」という描写があることで。仕事や恋愛や他人のことはどうでもいいという言動と、つながりを常に求めている仕草が描かれていない場面にあるのが面白い。

最後の第4話では沼田に重大な変化が起き、飲み会に来なくなる場面がある。この後の第4話は今までストーリーの全てを総括するようなメタファーが展開されるので是非直接確認して欲しい。

機会によって自らを変えよ:安野 貴博『松岡まどか、起業します AIスタートアップ戦記 』

『松岡まどか、起業します AIスタートアップ戦記 』は先の東京都知事選候補でSF作家の安野貴博による新刊。前作『サーキット・スイッチャー』を楽しく読んだため、この新刊も期待して購入した。

日本有数の大企業・リクディード社のインターン生だった女子大生の松岡まどかは、突然内定の取り消しを言い渡される。さらに邪悪なスカウトに騙されて、1年以内に時価総額10億円の会社を起業で作らねばならず……!? 令和、AI時代のスタートアップ快進撃!

物語は、主人公である松岡まどかがスタートアップ起業に挑む姿を描いており、今回もIT業界ネタが各所に出てくる。

ちょうど、二週間後に日本最大のピッチイベント──アンリミテッド・ベンチャーズ・サミットがある。
UVSのランディングページには《スタートアップを加速させる》といったタグラインと共に、壇上でプレゼンをする起業家たちの映像が流れていた。

サーキット・スイッチャー』では天才学生プログラマーが起業しろおじさんに騙されて自動運転車の人命トロッコ問題の責任を押し付けらえるという話だったが、『松岡まどか、起業します AIスタートアップ戦記 』では学生に不利な創業株主間契約を結ばせて搾取しようとする起業しろおばさんや元プロスポーツ選手のキャピタリスト△氏というどこかで聞いたような属性の人たちも登場。

そこにリクディード社という業界大手IT人材会社なのにAI利用禁止を規則にもつJTC的な企業で、社内政治で改革派として燻っていたバリキャリ女性社員をCOOに、はたまたアカデミックから産業界への転身を志すXで求職ツイートをするAI研究者インフルエンサーをCTOを仲間にして共にAI✖️HR領域で企業価値10億円を目指す!

ちょうど、思い当たる節があった。
「最近、SNSで話題のAI研究者がいるんです。ちょうど数日前、転職を考えているとXでポストしていました。今は東北大のポスドクで、界隈では知名度も抜群です」

お話としては「半沢直樹」シリーズのように素直なビジネスウォーズが展開されその舞台が最近のITとかWebのスタートアップでの出来事のような事件やハードシングスやら真犯人は誰だやらが起こる。トリリオンゲームスタンドUPスタートのような作品が好きな人なら楽しめるだろう。この作品もどこかでドラマ化されるかもしれない。

『サーキット・スイッチャー』と違い本作はアフターChatGPTな世界なのでAIチャットボット要素もふんだんに入っていて、主人公の女子はまさに子供の頃からなりチャで複数のチャットボットを運用しバーチャル彼氏として調教してきたような人物として描かれている。そしてそれがプロダクトのアイデアにつながったりする。

彼女は歩みを止め、身体ごとこちらに向き直った。
「これからの世界を変えるのは、君たちAIネイティブだ」

他には作者特有のやたら技術考証のディテールに立ち入って2024年時点でのAI人格による自由意志の実現性の考察や社会実装にまつわる哲学的な話とか出てきたりもする。

ちょっと気になるのは中盤のストーリーはKADOKAWAのサイバー攻撃事件*1後に変更されたものなんだろうか、それとも偶然? まぁ偶然の可能性が高い。

そして私はリクディード社では絶対働かないようにしよう・・と思いました。邪悪すぎる。

PS: 一箇所、登場人物の誤植があった気がする。GitHubで修正を受け付けていたら*2再読して探します

laiso.hatenablog.com

GitHub Copilot Workspace ファーストインプレッション

概要

GitHub Copilot WorkspaceはAIが組み込まれた開発環境。「見えてきたプログラマー不要時代」で有名。テクニカルプレビュー中で、ウェイトリストに申請すると招待が来る。 githubnext.com

巷で言う”仕様書から開発自動化コーディングエージェント”とはちょっと違って、あくまでCopilot WorkspaceはCo-pilotの役割のみで、コーディングするのは自分、と考えると良い。今までブロック単位のコード補完だったものがレポジトリ全体に及んでる、というようなアナロジーだと思う。

自然言語を使用してタスクを指定し、AIが生成したコードの微調整、レビュー、繰り返しをユーザーが行うことができる。タスクの定義をIssueからインポートすると画像も認識する。

特徴

自然言語で目的(Task)、現在値・期待値(Specification)、変更計画(Plan)の各フェーズのメタ情報を定義し、定義した情報から実装となるコード変更が自動で行われる(Implementation)。

各ステップが箇条書きリストになりユーザー側が上書き訂正もできる。この段階で編集する対象のファイルを確認できる。

Implementationまで進んだらページ内にターミナルを表示して、変更内容を専用の実行環境でコマンドライン起動し動作確認できる。

さらに、GitHub Codespacesを外部エディタとして起動してソースコードを同期しつつ編集とデバッグできる。

ウェブアプリもパブリックアクセス可能なURLを作ってくれるので、Claude Artifacts*1のような「指示→プレビュ→繰り返し」の手続きができる。

意図に介さなかったら前のフェーズに戻って繰り返すことができる。生成されたソースコードも上書きできる。

最後に、これまでの情報をまとめてプルリクエストに変換してドキュメント化できる。

技術的詳細

実態はGitHubアカウント認証する外部連携Webアプリケーション(LLMアプリ!)。copilot-workspace.githubnext.comで動作する。

cloudapp.azure.comにデプロイされており、GitHubの情報を入力としてこのサーバーでソースコード処理をして、最後に吐き出してGitHub側にコミットやプルリクエストをつくる。

使用例

例としてbadtodoのSQLインジェクションを修正してもらった。何も加工せず全部yesで通したらいくつか修正をしてくれたが、修正漏れがある。logindo.phpなどは対象に含めてなかった。

結果を以下のようにシェアできる(招待を受けてなくてもいいがアカウント連携しないと閲覧できない)

copilot-workspace.githubnext.com

あとはGitHub - github/haikus-for-codespacesというシンプルなWebアプリの画面のレイアウトをサンプル画像に沿ってCSSを変えてもらうとかはできた。

github.com

他に試している方法は、任意のOSSリポジトリから解決済みIssueをピックしてきてプルリクエストと付き合わせて答え合わせする。というもの。

いくつかやってみたけど、プルリクエストと同じ変更になるケースはなかった。Issueを完全に理解しないと、そもそもCopilotの修正が別解なのか誤りなのか分からない。

評価

自分の実装したものなら把握できるのでsite2pdfという100行ぐらいのクローラープログラムも何パターンか変更してもらったけど「robots.txtに対応する」「sitemap.xmlがあったら使う」程度なら違和感なくできた。

がそれはChatGPT等のコンテキストウィンドウ内でもやってくれるので、Workspace氏には「単体ウェブアプリケーションの1画面を変更する」などの人間が主にやりがちなタスクの代替をしてもらいたい。

その精度としては現状はまだ満足いくものではなくて、「ログイン機能作って」などの二・三段階の思考が必要な実践的タスクは解決してくれない。画像はいけるけどインターネットリソースもまだ読み込んでくれない。他のユーザーの評判も似たようなものだった。

そのためメタ情報部分に一生懸命ガイドとなるテキストをこちらで入れないと機能しないが、それをするなら自分でコード書けるという状態。

しかし逆にいうとインテリジェンスが飛躍的に進化してたら結構便利に使えそうと感じる。将来に期待。