見出し画像

AI開発によるライター・ブロガー向けテキストエディタ「KageriEditor」

ライター・ブロガー向けのテキストエディタ「KageriEditor」を作った。プログラミングの知識ゼロだったが、ClaudeCodeを使うことで、仕事に使えるレベルのアプリができた。

KageriEditorのアイコン

原稿執筆には、長い間mac用テキストエディタ「Jedit」シリーズを愛用してきた。軽快に動作し、文字数の常時表示や指定した桁数での改行挿入、選択範囲の改行除去といった機能を気に入っていた。

ところが、2025年末にJeditΩがコードの老朽化を理由に開発を終了。オープンソースの「Jedit」に移行したが、僕が愛用していた機能は多くが削られてしまった。

他のアプリも、どうも合わない。そこで、AIを使って自作してみようと思い立ったのだ。正直なところ、ネタになればいいな……くらいに思っていたのだが、希望する仕様を伝えただけで、あっという間に実用になるアプリができてしまい驚いた。なるほど、ClaudeCodeがもてはやされるわけだ。この時点では公開を考えておらず、自分の名前をとって「KageriEditor」と名付けた。

ClaudeCodeで開発
KageriEditor mac版

僕がテキストエディタに求める主な機能は、次のようなものだ。

① 表示行(折り返しも1行)での行番号表示
② 全角換算文字数(選択範囲の全角換算文字数)をステータスバーに常時表示
③ 1行目の文字列をファイル名として設定したフォルタに自動保存
④ 設定時間ごとの自動保存
⑤ 設定文字数での改行挿入(選択範囲/未選択の場合は文書全体)
⑥ 改行の除去(1文字下げた段落冒頭と改行のみの行は削除しない/箇条書きなども認識する)

①②は、クライアントに指定された文字数を守るために必須の機能だ。
また、ファイル保存で作業の手を止めたくないので、③④も重要だ。いちいち保存を選択して、ファイル名を自分で入力していたら、流れが止まってしまう。
⑤⑥は、先にデザインが決まっていて、文字を流し込む場合に重宝する。写真の配置などで1行の文字数が変わる時に、細かく調整できるからだ。また、PDFなどの資料から文字をコピーして保存すると、不要な改行が多数入る場合がある。段落認識付きの改行一括除去は、こうした資料を整理するのに役立つ。

いずれの機能も、mac版ではSwift(プログラミング言語)で簡単に実現してしまった。そこで、次にチャレンジしたのがAndroid版だ。

iPhoneなどのiOSは、Appleの審査を経ないアプリ、いわゆるサイドローディングが制限されているが、Androidは比較的制限が緩やかだ。警告はでるものの、自分だけが使う勝手アプリの存在が許されている。

XiaomiPadMiniや、Xiaomi17Ultraで、macと同一仕様のエディタを実現できれば、仕事の幅が広がる。特にPadMiniは、Bluetoothキーボードを接続してノートPCのようにも使うので、整形機能を搭載したエディタがあれば重宝するはずだ。

Claudeは、「Kotlin言語を使えば技術的に困難なことはひとつもない」という。早速、制作した。

KageriEditor Android版

Android版は、当然スマホでも使うことがあるので、タッチ操作に適した機能が必要だ。例えば、画面下部のメニュー機能。ファイル操作やコピー&ペースト、整形といった機能は、画面上でワンタッチで実行できないと、キーボードを持たないスマホでは使い勝手が悪い。メニューは、表示のオンオフや順番の入れ換えができるようにしたい。

 カーソルジョイスティックも、特にiOSからの移行では必須の機能だ。Androidは、iOSのようにカーソルを自由に移動できるトラックパッドモードがない。いちいち画面上で長押しなどをしなくてはならず、指に吸い付くようにカーソルを動かせるジョイスティックがあると便利だ。

 ファイルの扱いも、macとは異なる。原稿を扱う場合、直近で使ったファイルほど頻繁に編集するので、ファイルオープンのダイアログは「変更日(新しい順)」で表示してほしい。ところが、Androidの標準ファイルピッカーは、必ず名前順がデフォルトになってしまう。そこで、ファイルを開く時だけ、必ず時系列で表示される独自のファイルピッカーを実装した。

時系列ファイルピッカー 青字はすでに開いているファイル

 保存自体も、macより慎重さが求められる。macでは、Dropboxで同期するフォルダを指定していたので、仮に保存に失敗しても、Dropbox側に履歴が残るので30日以内はファイルを復活できる。だが、Androidのファイル管理は根本的に異なり、Cloudを利用する度にネットにアクセスするため、速度と安定性に問題が生じる。

 そこで、利用できるCloudはOS標準機能となっているGoogleDriveに限定し、ローカルに自動保存する場合は安全策を採ることにした。具体的には、いきなりファイルを上書きするのではなく、「一時ファイルに保存」→「元のtxtファイルの拡張子をbakにリネーム」→「一時ファイルを元のファイル名にリネーム」→「正しく保存できたら、一時ファイルとbakファイルを削除」という手順だ。こうすれば、ファイルがいきなり失われるリスクを回避でき、また一時ファイルやbakファイルが残っていれば、前回保存を失敗した可能性を判断できる。

 実装してみると、「一時ファイルやbakファイルが残っていないか」チェックするのに時間がかかり、動作が重くなるといった問題が生じたが、Claudeが改善策を提案してくれて、まともに動くようになった。

 現在のバージョンは、Android版が1.73、mac版が1.5。ルーラーを搭載して見栄えが良くなり、Android版は明朝体を搭載しないスマホにも対応できるようNoto Serif JPを内蔵、ジョイスティック(パッド)の動きもある程度調整できるようにした。1000行を超えるような大きなファイルを開くと時々クラッシュする不具合も、原因を特定して改善できた。

 ここまで来れば、僕個人の仕事道具としてはほぼ完成。mac・Androidともテキストファイルを関連付けて、鉄道ダイヤ情報などの原稿作成に使い始めている。

 さて、これだけ本格的なアプリになると、自分専用にしておくのはもったいない。Android版については、完全無料のエディタとして、GooglePlayでの公開を検討中だ。

8月15日追記 GooglePlayで公開しました。
KageriEditor Android版

いいなと思ったら応援しよう!