見出し画像

ライターが自分用にAIで作ったAndroid用テキストエディタを公開

はじめに

 Android版「KageriEditor」をGooglePlayで公開した。非エンジニアの鉄道・韓国ライターである僕が、100%AI(ClaudeCode)で開発した日本語用テキストエディタだ。完全無料・広告なし・外部送信なしの、安心して使えるエディタに仕上がっている。

KageriEditorのイメージ

▼Google Playからダウンロード
KageriEditor - 日本語のためのテキストエディタ
https://play.google.com/store/apps/details?id=local.kageri.editor

なぜAndroid版だったのか

 前回の記事でも書いたように、最初に作ったのはmac版だった。これがある程度形になってくると、Androidへの移植にチャレンジした。

 僕は、最近コンパクトなXiaomi Pad Miniを持ち歩いている。8インチクラスのAndroidタブレットだ。iPadに比べると、ペンの動作が最適化されていない印象はあるものの、外付けキーボードとの相性が抜群。iPadが、外付けキーボードでは事実上標準のApple日本語入力しか使えず、自動変換を強制されるのに対し、Androidなら外付けキーボードでもATOKやShimejiなど好みの日本語入力アプリを使える。長年育てたユーザー辞書を使えるのはありがたい。

この記事もXiaomiPadMiniとKageriEditorで作成

 XiaomiPadMiniの本体重量は326g。実はmac用AppleMagicKeyboardとの相性がよく、これが約230g。合わせて約560g、ケースやスタンドを含めても700~800gだ。これだけ軽いノートPCはなかなかない。そのXiaomiで、自分の手に馴染む機能を実装したKageriEditorが動けば、完全な執筆環境を持ち歩けるようになるのではないか。

原稿ができるまで

 僕が必要とする機能を、原稿執筆の流れに沿って紹介しよう。

起動する——ファイル名は考えない

 書き始めるときの最大の敵は、思考が止まること。ファイル名をどうするか、どこに保存するか。そんなことを考えているうちに、頭に浮かんでいた文章は逃げていき、イライラしてくる。
 KageriEditorは、起動したらすぐ書ける。インストール後の初回起動時に保存フォルダを決めておくので、ファイル作成時にはダイアログを一切出さない。自動保存をオンにすれば、執筆している間に勝手に保存される。ファイル名は、冒頭の20文字。ちゃんとしたファイル名をつけるのは原稿が形になってからでいい。

冒頭のテキストがファイル名になる なおタブ機能で複数ファイルを同時に開いておける

書き進める——文字数を常に見ている

 特に紙媒体の場合、原稿は文字数が決まっていることが多い。デザインが先に決まっているようなケースでは、シビアな字数管理が求められる。
 多くのエディタは、メニューを開かないと文字数がわからない。以前は、文字数を常にカウント・表示するのにリソースを消費していたからだ。また、プログラミングを念頭においたエディタは、そもそも文字数カウントに価値を認めていないアプリも多い。だが、これもまた原稿執筆中には面倒くさい。ほんの一手間が、作業を止めてしまう。また、改行を1文字と数えるアプリや、全角・半角を問わず1文字を1文字とカウントするアプリもある。これらは、日本語原稿の文字数を不正確にする要因だ。そこで、全角換算の文字数を常時表示させた。半角は0.5文字とし、■◯△といった本来半角だけど日本語原稿上は全角1文字と同等に扱われる文字は1文字とカウントするようにした。いま何字書いているかを、視界の端で把握しながら書き進められる。

選択部分の文字数もリアルタイムで表示

レイアウトに合わせる——整形と非整形

 紙媒体の仕事では、先にデザインが上がってくることが珍しくない。数行ごとに字詰めの変わる枠へ、テキストを流し込んでいく作業が発生する。
 そこで、選択範囲をあらかじめ決めた文字数で自動的に整形する機能をつけた。この機能は、1996年にWindows用アプリとしてリリースされた「超仕事人」(現・Infostudio)が実装し、Jeditシリーズも搭載していた。秀丸エディタなどもプラグインで近い機能を実現していたが、近年はニーズが減り、JeditΩに代わって登場したオープンソースのJeditからも省略されてしまった。
 段落を認識し、句読点のぶら下がりにも対応する整形機能は、原稿の細かい調整に重宝する。Kadokawaのように、行頭1~2文字で改行することを嫌う媒体も多く、整形機能はそうした事態を防ぐ機能としても使えた。

整形したら段落のラストが「だ。」だけに。これを嫌う媒体は多い

 原稿を整形して、指定されたレイアウトに収まることを確認したら、改行を除去して納品する。数千文字の原稿では、改行の除去もいちいち手作業でやっていては労力の無駄なので、改行を除去する非整形機能も重要だ。

スマホで撮影・OCRしたテキストの整理にも便利。これはプチプチ学会での、川上産業創業の話
KageriEditorはOCRで生じた無駄な改行・スペースを除去できる

全体を貫くもの——キーボードショートカット

 本格的な原稿の執筆には、やはり外付けキーボードが欠かせない。キーボードを使う以上、ショートカットは必須だ。何か操作をするたびに、キーボードから手を離して画面をタッチするのは非能率的。そこで、標準的なショートカットとともに、KageriEditor独自の機能にもショートカットを割り当てた。自由にカスタマイズできるのが理想的だが、管理が煩雑になる。ここは割り切って、僕が好んで使うキーバインドで設定した。

カーソルパッドという発見

 スマホやタブレット単体で原稿を書くとき、最大のネックになるのがカーソルの移動と選択だ。

 画面を指でつついて、狙った一文字の隙間にカーソルを置く。あのもどかしさは、能率を著しく落とす。長年iOSを使ってきた身としては、スペースキーを長押しすると画面全体がトラックパッドになる、あの機能に相当助けられていた。

 ところがAndroidには、これがない。

 ないなら作るしかない。試しに、半透明の操作パネルを表示して、カーソルをジョイスティックのように動かす「カーソルパッド機能」をつけてみた。指を置いて、動かした方向にカーソルが滑っていく。それだけの機能だ。

カーソルパッド。中央の●を指でスライドさせる。右上は十字キーモード切替、右下は選択モード切替。それぞれ0.2秒長押しでバイブとともに切り替わる
テスターさんの要望で取り入れた十字キーモード。4つの●をタップするごとに1文字ずつカーソルが移動。なおカーソルパッドは非表示にもできる

 これが思ったよりいい感じに動いてくれた。トラックパッドモードの代わりというより、これはこれで別の使い心地がある。最初は、大きくスライドさせると動きがどんどん加速するようにしてみたが、これは細かいコントロールが難しい。Claudeと相談しながら調整し、感度もある程度調整できるようにして、仕様を落ち着かせていった。

野良アプリからGoogle Playへ

 ここまでは、自分ひとりが使えればよかった。Googleは今のところ、いわゆる野良アプリを許容しており、apkファイルを直接インストールできれば十分だった。

 だが、開発が進んでちゃんとしたアプリになってくると、広く公開してみたくなった。

 調べてみると、Googleの開発者登録は最初に25ドル払えば済む。毎年99ドルかかるAppleと比べると、ずいぶん手軽だ。25ドルを支払い、Claudeと相談しながらGoogle Play Storeでの公開を目指すことにした。

 そこで立ちはだかったのがGoogleが課す「14日間、12人以上でのクローズドテスト」という壁だった。

 個人開発者がアプリを公開するには、12人以上のテスターを集めて、14日間続けてテストしてもらわなければならない。12人は、なかなかの人数だ。

 まずFacebookで知り合いに呼びかけてみたが、反応はゼロ。僕の周囲にはアプリを開発している人はほとんどいないから、無理もない話だ。

 次に浮かんだのがココナラで、数千円出せば引き受けてくれる人がいるらしい。それも手だなと思っていたところ、Discordに開発者同士の互助会のようなグループがあることを知った。お互いのアプリをテストし合う仕組みだ。さっそく参加した。

 それでも苦労はした。テキストエディタは、個人開発のアプリとしては地味なので、あまり目に止まらないのかもしれない。なんとかクリアできたのは8月上旬のことだった。

テスターが教えてくれたこと

 苦労はしたけれど、クローズドテストには十分な価値があった。
 テスターの方から、いくつも要望が届いたのだ。「カーソルパッドは、1回押すごとに1文字ずつ動く十字キーモードがあると嬉しい」「メニューを二段で表示したい」。特に、キーリピートが効かない十字キーモードは、実装してみると便利であることに気づいた。カーソルを1~2文字ぶんだけ動かすのが、スマホでは面倒なのだ。
 自分の使い方とぶつからない限り、届いた要望はなるべく実装していった。大抵の機能はClaude Codeと相談するだけで簡単に形になってしまう。要望を読んで、こういう動きにしたいと伝えて、動作を確認する。それだけだ。
 カーソルパッドに範囲選択モードも追加した。スマホでの文字選択のしづらさが、これでいくらか改善できたと思う。
 自分ひとりのために作ったアプリが、他人の目を通ることで別のものになっていく。この感覚は面白かった。

コストの話

 開発に使うモデルの話も少し書いておきたい。
 当初は最も高性能だがコストも桁違いに高い、Fableで開発していた。ところが進めるうちに、この程度のアプリならスタンダードなSonnet 5でも十分だと次第にわかってきた。

 これはかなり大きな話だ。仕事で毎日使うレベルの、自分に合ったアプリが月額3000円程度でいくらでも作れる。プログラミングができない人間でも、必要な道具を自分で作れる時代になった。

公開、そしてその後

 8月8日、製品版の審査を無事に突破して公開にこぎつけた。
 完全無料、広告なし、外部送信なし。本当はDropboxとの連携機能を実装したかったが、実装と審査のハードルが上がる。幸いAndroidは、クラウドと連携しようと思えば標準でGoogleDriveと連携できる。同期速度にやや不満があるが、当面はこれで十分だ。

 公開バージョンは1.99。個人アプリとして使っていた頃からバージョンを重ねていたので、この数字になった。その後ファイルのプレビューと削除機能を実装したタイミングで、2.0とした。

 リリース後もアップデートは続けている。2.1で搭載したのがメモ機能だ。固定のファイル名「quickmemo.txt」を用意しておき、メニューかショートカットキーでいつでもワンタッチで呼び出せる。さらにアプリを問わずテキストを選択して、メニューから「メモに追記」を選ぶと、メモファイルの末尾に日付と時刻つきで追記される。

 ネットを調べている時に見かけた表示、メモしておきたいメールの文面、思いついた見出し、あとで確認したい固有名詞。そういうものを放り込んでおく場所ができた。単なるテキストエディタから、情報メモアプリに進化しつつある。

 ただしこの機能はまだ発展途上だ。v2.11では、quickmemo.txtを開いた状態で、別アプリで取り込みを行った時の動作に問題があった。ストレージに保存されているファイルには書き込まれるものの、すでに開いているメモは読み込み直さないので表示には反映されない。開発を続けると、こうした思わぬ不具合に遭遇する。

 早速、ClaudeCodeに相談して修正版を作成した。Claude曰く、「外部編集を監視しているので、追記した内容が勝手に消えてしまうことはない」。ただし、開いているメモに追記内容が反映されないのは確かに気持ち悪いので、修正しましょう、と。

 ついでに、メモはなるべくカーソルがファイルの最後にあるように修正、アイコン長押しでクリップボードの中身を追記する機能を追加して、v2.12としてリリースした。Googleの審査が速いこともあって、あっと言う間に更新できた。

おわりに

 このアプリで収益を得るつもりはない。
 初めてClaude Codeで作ったアプリだし、そもそも自分が使うために作ったものだ。完全無料のまま公開を続けていく。

 アプリ名に自分の名前をつけたのは、当初は自分専用で公開を考えていなかったからだが、今は「ライターが自分の仕事で使うために、AIで作成した本格的なテキストエディタ」という看板を背負ってもらっている。

 仕事の道具は、もう自分で作れる。ClaudeやChatGPTを使っている人は、一度試してみてはいかが。

▼Google Playからダウンロード
KageriEditor - 日本語のためのテキストエディタ
https://play.google.com/store/apps/details?id=local.kageri.editor

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