開発史
旧仮名キーボードの開発にまつわる記録をまとめます。
| 時期 | 内容 |
|---|---|
| R2の年末 | かねて温めていたところの企画「旧字旧仮名で日本語入力できるスマホ用キーボード」を実現すべく、構想をまとめはじめる。名称を「旧仮名キーボード」と定める。 |
| R3/1/2 | 漢字辞典は『新修漢和大字典』を典拠とすることに決定し、古本屋に注文(この本は国会図書館デジタルコレクションでも閲覧できるが、当時のデジタルライブラリは今のように使い勝手の良い閲覧画面ではなかったため、紙の辞書を使用した)。 |
| R3/1/6 | 国語辞典は『辞苑』を典拠とすることに決定し、古本屋に注文。 |
| R3/1/17 | noteにて旧仮名キーボード開発記をスタート。 |
| R3/1/24 | 採用する文法体系を検討するため、益岡田窪文法の資料として『基礎日本語文法』『24週日本語文法ツアー』を注文。 |
| R3/1/26 | 形態素解析器としてMeCabを採用。また、MeCabとSwiftの連携のため、mecab-ioc-sampleを下敷きとして利用。その他、キーボード作成ノウハウに関する貴重な日本語資料として「iOSカスタムキーボードの作り方」「Swiftで日本語入力できるキーボードアプリを作った」などを参照。異体字セレクタ確認ツールとして「異体字セレクタセレクタ」を利用。 |
| R3/5/24 | キーボードの機能部分がほぼ完成し、辞書作成に着手。将来的な文語体対応を考慮した結果、益岡田窪文法ではなく橋本文法(あるいはそれによく似た品詞体系)を採用することにし、NAIST Japanese Dictionaryを下敷きとして採用。Google Apps Scriptにより、スプレッドシート上で動作する辞書更新支援ツールを何種類も自作し、辞書の書き換えを細々と続ける。なお、旧仮名キーボード開発記は、この日公開した#6を境に長期休載となる。 |
| R4の年初 | 名詞以外の辞書の書き換えはほぼ完成したが、試行錯誤の過程で辞書仕様が再定義されたことにより、機能の追加開発(それに伴う大規模な修正)が発生。パフォーマンスを維持したまま各種機能を実現するため、MeCabのソースコードの改造を始める。しばらくアルゴリズムの読解に苦戦していたが、MeCab作者の著作『形態素解析の理論と実践』(非常に良書だった)を購入したのをきっかけに、MeCab改造が高速で進むようになる。 |
| R4の中頃 | MeCab改造が完了し、入力文字列の後ろを補う予測変換や濁点入力がなくても爆速で辞書引きできる機能に対応。名詞の辞書の書き換えに着手するも、その後長く作業が停滞する。 |
| R5の春 | 作業再開。とりあえずアプリとしてまとめあげることを重視し、11月リリースを目指す計画を立てる。また、国会図書館デジタルコレクションが大改修され、非常に使い勝手が良くなったことに気付いた(特に画像内の文字をテキスト検索できる機能が付いたことに驚いた)ため、以後積極的に利用するようになる。 |
| R5の夏 | 一般名詞の辞書については完成。固有名詞の書き換えは作業量的にリリース日に間に合わないので、9月末までに完成したところをもってリリース版とする方針に変更。地名の仮名遣いについては、国会図書館デジタルコレクションの『大日本地名辞書』を典拠とした。 |
| R5の10月 | 細かい設定機能、UI、パフォーマンス、変換精度の改善に着手。ある時期からアプリが突然落ちるようになる。調査の結果、使用メモリが大きくなりすぎることが原因と判明し、キーに設定したSVG画像を削除したところ大幅に改善。そこで、平成23年に購入したWindows向けフォント作成ソフトTTEditにて自作フォントを作成し、それをSVG画像の代わりとして使用。さらに、全面的なリファクタリングを兼ねてソースコードのメモリ効率を改善し、50MB超だった使用メモリを16MBまで削減。これで10月の工数を使い切る。 |
| R5/11/5 | 連休最終日に審査に申請完了するつもりだったが、10月の積み残し機能が消化しきれておらず、開発期限を1週間先に再設定。 |
| R5/11/12 | 開発切り上げ。さまざまな機種のエミュレータで動作確認を実施。審査用のメタデータ作成開始。 |
| R5/11/13 | 早朝7:50、期限切れになっていたApple Developer Programのメンバーシップを有効化。アプリのバイナリファイルをApp Store Connectにアップロードしようとしたが、「キーボード拡張で別のフレームワーク(MeCab)を使用している」という理由で失敗。MeCabのフォルダをキーボード拡張フォルダに移し替えようとするも、変な操作をしてしまい、MeCabのファイル一式を消してしまう。ゴミ箱から復元しようとしてもなぜかフォルダしか復元できず、中身のファイルがどこにも見当たらない。Gitにも改造版MeCabをコミットしていなかったので、完全にファイルが消えたことに気づく。ここで、仕事のため作業中断。帰宅後、どこかにファイルが残っていないかゴミ箱を探していたところ、「Mecab copy」というフォルダ(Mecabフォルダ移し替えのときに誤ってフォルダを二重に登録してしまい、すぐに消したもの)を発見し、中身にすべてのファイルが残存していることを確認。すぐにバックアップを取り、キーボード拡張フォルダに移し入れる。ところが、MeCab(C言語)とキーボード機能(Swift)のブリッジを作成して連携するとMeCab側にエラーが大量発生。エラーは、この日のうちには解決できなかった。 |
| R5/11/14 | 試行錯誤の末、モグラ叩き式に問題部分をコメントアウトしていったところ、ついにエラーは出なくなった。動作も正常に見えたので、これをコンパイルしてApp Store Connectにアップロード。リリース日時を「R5/11/16 1:00JST以降」と設定し、審査に提出。提出後、アプリ内に公式サイトへのリンクを貼っていたことに気付く(以前、別のアプリの申請のときに外部リンクのトラッキング問題で不備を指摘され、却下されたことがある)。安全のために自分で申請を一時取り下げ、アプリ内のリンクを削除した上で再提出した。 |
| R5/11/15 | 深夜1時以降、久しぶりに旧仮名キーボード開発記を更新しようと思い、noteに原稿を書き始める。記事執筆中の2:07に審査ステータスが「審査待ち」から「審査中」に切り替わる。審査結果を待ちながら、旧仮名キーボード開発記を2年6ヶ月ぶりに更新。その後、5:00に審査結果が「却下」として返却される。曰く、アプリ名のサブタイトルが「旧仮名使いで入力変換できる無料キーボード」となっているが「無料」という語が含まれるのは規約に反するとのこと。すぐに修正し、5:11に再提出。再審査は15:09から始まり、15:44に完了。結果は「合格」。ステータスが「審査中」から「リリース待ち」に変わる。リリース発表のためのnoteを執筆開始。 |
| R5/11/16 | 深夜1:00、自動でリリース完了。リリースに寄せてのnoteを公開。疲れて寝る。また、その日の夜23:00頃、夕食を食べながら、2年5ヶ月ほど放置していたフォロワー数3人のTwitterアカウントを開き、noteのリンクを一応ツイート。ここで、公式Twitterアカウントを作成すべきことに気付き、大急ぎで作成。23:59に滑り込みで最初のツイートを公開するに至る。 |
| R5/11/17 | App Store上でのアプリの対応言語がなぜか「英語」になっていたのでアップデート。そのほか軽微な修正数件。 |
| R5/11/18 | 11:22、公式Twitterアカウントのツイートが初めてのリツイートを受ける。おそらく、ここで旧仮名キーボードに初めて利用者が付く。App Store Connectによれば、この日に45人のユニークユーザがダウンロードしたことになっている。問合せ窓口から初めてメッセージを受ける(2人)。利用者からnote経由で初めてサポート(金銭的支援)を贈られる。 |
| R5/11/19 | App Storeにて旧仮名キーボードが初めて評価を受ける(星5つ)。iPhone版 ダウンロード数 50人突破。さらに、60人突破。 |
| R5/11/21 | iPhone版 ダウンロード数 70人突破。さらに、80人突破。 |
| R5/11/25 | iPhone版 ダウンロード数 90人突破。 |
| R5/12/2 | iPhone版 ダウンロード数 100人突破。 |
| R6/1/22 | iPhone版 ダウンロード数 200人突破。 |
| R6/4/11 | iPhone版 ダウンロード数 300人突破。 |
| R6/4/18 | 文語モードを公開。従来の文法体系を抜本的に見直したほか、文語体と口語体とを1つのアプリに同居させたことにより、全体としての変換精度が劣化したおそれがある。しかし、新しい文法体系を構築するにあたっては、精度管理の容易性を重視したため、今後の変換精度改善作業は順調に進行することが可能。新しい文法体系においては、従来のIPA辞書等にみられたような各形態素単位で品詞を想定する方式を完全に廃止し、隣接する形態素との承接のみを考慮する方式を採用した(MeCabにおける左連接IDと右連接IDの仕様を最大限に活かした)。なお、今回のバージョンアップにおいては、文語体モードのほか、要望のあった機能をいくつか同時公開した(旧字新仮名モードの追加、空白文字の種類の設定など)。 |
| R6/4/29 | 使用しているMacbookのサポート切れのため、アプリや辞書のアップデート配信が一切できなくなる。 |
| R6/5/4 | iPhone版 ダウンロード数 400人突破。 |
| R6/6/27 | iPhone版 ダウンロード数 500人突破。 |
| R6/6/28 | Macbook買い換えおよび環境構築の完了に伴い、この日からアプリのアップデート配信を再開。 |
| R6/8/14 | iPhone版 ダウンロード数 600人突破。 |
| R6/9/2 | Android版の旧仮名キーボードの開発を開始。iPhone版アプリの1周年である11月16日のリリースを目指す。 |
| R6/10/2 | iPhone版 ダウンロード数 700人突破。 |
| R6/10/29 | Android版アプリ開発完了。Google Play Consoleに登録。登録料25ドルを支払う。 |
| R6/10/30 | Android版アプリをクローズドテスト用の審査に提出。クローズドテストでは14日間のテスト期間が必要であり、テスト担当者(最低20人)は自分で手配しなければならないため、11月16日のリリースには間に合わない可能性あり。審査完了日次第で、間に合う可能性が出てきた場合のために、クラウドワークスでテスト担当者募集のための文面を準備。間に合わない可能性が高ければ、11月16日でのリリースを諦め、クローズドテスト担当者を11月16日にXで募るという計画に切り替える。 |
| R6/11/4 | Android版アプリのクローズドテストの審査が0:37に完了。11月16日のリリースには間に合わないため、クローズドテスト版を11月16日に公開する計画に変更。それまでの期間は軽微な問題やレイアウト崩れを修正することとし、品質を安定させる。 |
| R6/11/11 | iPhone版 ダウンロード数 800人突破。 |
| R6/11/16 | Android版アプリのクローズドテスト公開。Twitterでテスト協力者を募集したところ、当日中に20人以上集まる。 |
| R6/12/3 | Android版アプリ製品版を審査に提出。 |
| R6/12/5 | Android版アプリ製品版の審査通過。ただし、キーボードの高さを調節する機能を追加するため、公開はしばらく延期。 |
| R6/12/7 | iPhone版 ダウンロード数 900人突破。IMEもくもく会に初参加。 |
| R6/12/10 | iPhone版、Android版ともに、キーボードの高さを調節する機能を実装完了。また、変体仮名や半角カタカナの候補を追加。審査に提出。 |
| R6/12/20 | Android版アプリ製品版を公開。 |
| R7/1/7 | iPhone版 ダウンロード数 1000人突破。 |
| R6/3/28 | Android版 ユニークユーザ数 100人突破。 |
| R6/4/15 | iPhone版のアップデートを行ったところ、変換入力に失敗する不具合が発生。ローカルでのテスト時には再現せず、Profileビルドの場合のみ発生する不具合であることが判明。試行錯誤をした結果、Swiftコンパイルの最適化をオフにすると不具合が解消された。 |
| R7/10/25 | この1日でiPhone版・Android版あわせてダウンロード数400回以上あり。俳句・短歌界隈からのダウンロードか。iPhone版 ダウンロード数 2000人突破。 |
| R7/11/15 | iPhone版において、テンキー配列(トグル入力)・QWERTY配列・旧字旧仮名(字音新仮名)・新字旧仮名(字音新仮名)を公開。 |
| R7/11/27 | Android版 ユニークユーザ数 200人突破。 |
| R8/2/26 | カ行変格活用動詞が出てこない問題、QWERTY配列で和文句読点を打てない問題、Procreateで使用するとクラッシュする問題について、note経由で報告あり、修正開始。 |
| R8/3/5 | 報告があった問題の一部を修正。また、テストの過程で見つかったその他の不具合についてもあわせて修正。修正版を公開。また、Android版の機能をiPhone版に追いつけるべく、本格的に実装開始。 |
| R8/3/19 | Android版の不足機能の実装は完了したが、SDKバージョンを上げた後、C++との連携が失敗するようになり、しばらく苦闘。 |
| R8/3/20 | Android版において、テンキー配列(トグル入力)・QWERTY配列・旧字旧仮名(字音新仮名)・新字旧仮名(字音新仮名)を公開。 |
| R8/7/7 | iPhone版 ダウンロード数 3000人突破。 |
| R8/7/9 | Android版 ユニークユーザ数 300人突破。 |
| R8の7月 | AIを用いて設定機能の大幅拡張に着手。「仮名遣いと字体の設定を分離」「字形補正で節約モード・カスタム設定に対応」「大書きにする仮名の種類の選択」「清音にする仮名の種類の選択」「統一する仮名の種類の選択および平仮名と片仮名の逆転設定」「句読点の種類」「踊り字にする仮名の種類の選択」「漢字の踊り字の設定」「ユーザ辞書」「変換の学習」「手書き入力」を実装した。このうち、「手書き入力」は、漢字の手書き図形データ作成に時間が掛かるため、当面は非公開にすることにした。設定の組み合わせが増えたことにより、テストに莫大な手間がかかるようになった。また、有料プランを実装し、8枠までは無料とするが、1枠追加するごとに月額100円を課することにした(従来の設定が8種類であることを踏まえ、既存の利用者が有料にならないように8枠は無料とした)。有料化の目的は、「Apple Developer Programの年間契約料を補填するため」および「有料版のAIを活用し、開発速度を上げるため」であり、年間目標収益は3万円とした。枠単価は、約25人が平均150円の有料契約をする可能性があると見込み、そこから手数料を引いて年間目標収益になるように設定した。 |
| R8/8/2 | 公式サイトをAIでリニューアル(Wordpressから脱却)し、新しいURLに移転した。 |
| R8/8/3 | 19:29、有料プランを含む新バージョンを審査に提出。 |
| R8/8/5 | 早朝5:25に審査が始まり、6:52に審査結果「却下」として通知あり。有料プランに対応するにあたっては、利用規約を提出物に含める必要があるとのこと。19:17、概要の末尾にApple標準のEULAのリンクを載せて再提出。 |
| R8/8/6 | 13:43再度却下。アプリ内にも利用規約のハイパーリンクが必要と指摘されたため、ハイパーリンクに対応。併せて、今までURLを掲載していた部分もハイパーリンクに変更した。再提出のために、ビルドをバンドル1からバンドル2に差し替えようとしたところ、既存ビルド(バンドル1)の削除も変更もできない状態であったため、一旦アプリ本体を提出物から削除し、ビルドを差し替え、再度提出物に追加しようとしたが、原因不明のエラーが発生。17:44、解決方法をたずねる質問を送信。 |
| R8/8/7 | 審査に進むボタンを押した際に表示された「審査への送信中に、予期しないエラーが発生しました。問題が解決されない場合はお問い合わせください。」というエラーメッセージに従い、スクリーンショット付きで問い合わせたにもかかわらず、「準備ができ次第、再提出をお願いします」という指示が返ってきただけであった。改めて再提出を試みたが、同じエラーで失敗。こちらではどうしようもないので、このレビューはキャンセルし、また新しい審査の列に並び直すことにした。19:41、新しい審査に申請した。 |
| R8/8/8 | 8:07、まだ「審査中」の状態に移っていなかったため、設定アプリの文言を若干するために審査申請を取り下げ、再提出。また、今回は大幅に機能拡張をしたため、note記事を執筆。 |