iPhoneのmanuscriptで始めた執筆はデビュー後にScrivenerに移り、コロナ禍の最中にVS Code用プラグインnovel-writerへと移りました。それぞれ理由も愛着もある環境でしたが、この春に引っ越すことを考え始めました。
背中を押してくれたのは、AIエージェントです。
LLMを使う開発支援は、これまでもnovel-writerのリファクタリングやLLM会議システムなどで使ってきたのですが、世代が変わり、本格的なネイティブアプリケーションが作れるようになってきました。Web Viewアプリのシャンポリオンデックを試し、Swiftで作るネイティブなmacOSアプリのzenバベルやFM-Deckなど書いてみて、仕事に使うエディターも自分で作れるのではないかと思ったわけです。甘くないのは分かってるけど、ローカルAIであるApple Intelligenceをヘルパーに使える縦書き対応の執筆環境はちょっと夢があります。
そう思い立ったのが、先週(23日)木曜の午後。ChatGPTと仕様を練ってから15:00ごろに実装開始。ステップバイステップでほとんど後戻りなく進めて、夕食前にはiOSとmacOSの縦書きエディターがビルドできるようになりました。

ものすごく順調に進んだように聞こえるかもしれませんが、そこそこストレスはありました。何よりきつかったのが、ChatGPTの思い込みです。
iOSとmacOSで動く縦書き対応エディタ? つまりモバイルとPCで動くエディタですね。それならElectron(ChromeのWebViewを使うアプリケーション基盤)で間違いありません。WebViewは縦書きも対応してます。Gitも必要ですね。わかりました、それではnodeのモジュールから入れていきましょう。React Nativeもいいですね。重いのが嫌ならTauriもあります。yarnはこんな感じで――
一旦落ち着こうな、と何回止めたかわかりません。2026年にもなってこんなハルシネーションまみれの提案ぶつけられるとは思いませんでした。iOSでElectronやGitは動かないし、「iOSとmacOSで」と言ってるのに互換用の巨大贅沢プラットフォームを提案してくるのも意味がわからない。
一時間ほどやりとりして、なんとかSwiftネイティブなアプリケーションを作るためのagent.mdを書かせました。AI開発がよくある実装に引きずられるのは分かっていたけど、相当自覚的にやらないと、何をねじ込まれるかわからない。実際この後も「Version1ですか。いいですね、Git入れます!」とか「縦書きレンダリングですね、わかりました。GhostScriptとTeX入れます」みたいな劇薬提案は続きます。プロジェクトに参加したばかりの開発者が第一声に「わかりました」と言うときはだいたい間違っているものですが、AIエージェントは優秀に再演してくれます。AI開発してる人、一回プロジェクトの中見てみるといいですよ。
動き出した後も、Codexはリクエストを出すたびに状態監視を差し込みたがります。ウインドウのサイズ変更に編集、ステータスの変動などですね。これらの処理はユーザー操作の裏で動く非同期で実行されるしCodex 5.2あたりから機能の衝突ぐらいは回避はしてくれるので、アプリ自体は動いちゃうんですが、十重二十重にかけられた監視はアプリケーション体験を悪化させます。監視がなくても動くような設計に戻して、穴を塞いでもらう。これを繰り返して体験を向上させ、レジリエンスのある設計がタイトなコードで実装されていく。分離できる機能を見つけたらブランチを分け、確実に進むタイミングでgitの履歴を積んでいく。こうなればAIエージェントも賢くなります。
動き出してから数日。現時点で、withは、日本語ベタ組2で行間を調整して縦横編集ができるエディターに成長しました。マルチウインドウのあるアプリケーションになりましたし(これもAIがなかなかやってくれなかったことです。今はシングルウインドウアプリケーションが多いですからね)、スクロールバーも表示されます(AIはすぐ消そうとします)。自前実装しているiOSの縦書きは和欧混植もできるようになりました(AIは何度言っても横倒しに描かれるasciiを全角縦組ににしようとがんばってしまいます)。そしてマークダウン見出しと青空文庫のルビをマーキー表示することもできるようになりました。マークダウン太字は太字、傍点はまだ対応してないのでマーキーです。

標準のテキストエディットよりも機能が少ないので、動作は軽快そのもの。下の動画は『マン・カインド』の全文(23万文字)を開いているところですが、ウインドウの幅を変えるようなレイアウト変更も我慢できる速度ですし、スクロールも途中の編集にもストレスはありません。macOSのNSTextには非同期の長文レイアウト評価があるからですね。縦書きだとこのレイアウト評価で描画が欠けたりするのでOS任せにできないところもありますが、解消する方法はいくつか考えてあります。なんとかなるでしょう。
マークダウン見出しや青空文庫スタイルのルビが評価されているのはちょっと感動。昨日はタイプライタースクロールを実装しました。
今日か明日には段落や単語の移動も搭載したいところ。こうやって作っていくと、だんだん見たことのないエディターに育っていきますが、私が使うために作っているアプリケーションなので、好き勝手に作ることができますね。iOSでもキーボードを繋ぐとmacOS並みに動くことを目指しています。最近XREALを使うようになったので、拡張ディスプレイにも対応させたいですね。
iCloudを使った同期やGit風の履歴(iOSにgitを載せるの面倒だし重くなるし)、赤字や鉛筆風の推敲エディターなんかも欲しいですね。せっかく自分で作ってるんだから。
安定しているとは言い難いのでまだ公開できませんが、いずれ、皆さんにも使っていただけるように考えてはいます。
あ、そうそう。Gitのスポンサー、募集してます。