AzooKeyKanakanjiConverter

0.7.0

Kana-Kanji Conversion Module written in Swift
ensan-hcl/AzooKeyKanaKanjiConverter

What's New

v0.7.0

2024-04-21T15:32:45Z

Note

v0.7.0はv0.6以前と互換性がありません。特にSwiftUtilsに破壊的変更が含まれているため、注意してください。

What's Changed

  • [Experimental] InputGraphベースの入力管理の実装 by @ensan-hcl in #44
  • [Experimental] InputGraphベースの辞書ルックアップ by @ensan-hcl in #45
  • [Experimental] InputGraphの構造を変更し、LookupGraphによる辞書引きを実装 by @ensan-hcl in #46
  • [Experimental] ConvertGraphを実装し、その上での完全一致変換を実装 by @ensan-hcl in #47
  • [Experimental] InputGraphのアルゴリズムの改善 by @ensan-hcl in #48
  • [Tool] cliツールとしてancoを追加 by @ensan-hcl in #50
  • [Feature] 予測変換用の辞書検索を単純化 by @ensan-hcl in #51
  • [Feature] 動的ユーザ辞書の機能を明記 by @ensan-hcl in #52
  • Refactor dropping "ネン" from string in CalendarCandidate.swift by @k-taro56 in #54
  • [Fix] Swift 5.10でのビルドエラーを修正 by @ensan-hcl in #56
  • [Docs] 開発ガイドを追加 by @ensan-hcl in #59
  • [Docs] Update failures.md by @ensan-hcl in #60
  • Bump swift-actions/setup-swift from 1 to 2 by @dependabot in #62
  • [Experimental] ConvertGraph周りのテストを増やしてバグを治す by @ensan-hcl in #49
  • [Experimental] 実験的実装から不要なものを削除し、lintを適用 by @ensan-hcl in #64
  • [Experimental] Graph-based変換で差分変換の準備 by @ensan-hcl in #65
  • [Experimental] グラフベースの実験的実装についてドキュメントを書いた by @ensan-hcl in #67
  • [Tools] Swift 5.10のCIを追加する by @k-taro56 in #69
  • Add devcontainer.json for Swift development and daily update schedule for devcontainers package ecosystem by @k-taro56 in #55
  • [Experimental] テストケースの追加 by @ensan-hcl in #70
  • [Docs] 開発ガイドにDevContainerに関して記述 by @ensan-hcl in #71
  • Update Swift image version to 5.10 by @k-taro56 in #72
  • [Refactoring] SwiftUtilsの不必要なAPIを削除する by @ensan-hcl in #73
  • [Experimental] LookupGraphの差分ベース構築を実装 by @ensan-hcl in #74
  • [Experimental] ConvertGraphの差分ベース構築を実装 by @ensan-hcl in #77
  • [Experimental] ComposingTextV2を実装 by @ensan-hcl in #78
  • [Experimental] 削除操作についてもグラフベースに変更 by @ensan-hcl in #79
  • fix: temporary memoryの更新ロジックのバグを修正 by @ensan-hcl in #81

New Contributors

Full Changelog: v0.6.1...v0.7.0

AzooKeyKanaKanjiConverter

AzooKeyKanaKanjiConverterはazooKeyのために開発したかな漢字変換エンジンです。数行のコードでかな漢字変換をiOS / macOS / visionOSのアプリケーションに組み込むことができます。

動作環境

iOS 14以降, macOS 11以降, visionOS 1以降, Ubuntu 22.04以降で動作を確認しています。

AzooKeyKanaKanjiConverterの開発については開発ガイドをご覧ください。

KanaKanjiConverterModule

かな漢字変換を受け持つモジュールです。

セットアップ

  • Xcodeprojの場合、XcodeでAdd Packageしてください。

  • Swift Packageの場合、Package.swiftのPackageの引数にdependencies以下の記述を追加してください。

    dependencies: [
        .package(url: "https://github.com/ensan-hcl/AzooKeyKanaKanjiConverter", .upToNextMinor(from: "0.6.0"))
    ],

    また、ターゲットのdependenciesにも同様に追加してください。

    .target(
        name: "MyPackage",
        dependencies: [
            .product(name: "KanaKanjiConverterModuleWithDefaultDictionary", package: "AzooKeyKanaKanjiConverter")
        ],
    ),

Important

AzooKeyKanaKanjiConverterはバージョン1.0のリリースまで開発版として運用するため、マイナーバージョンの変更で破壊的変更を実施する可能性があります。バージョンを指定する際にはマイナーバージョンが上がらないよう、.upToNextMinor(from: "0.6.0")のように指定することを推奨します。

使い方

// デフォルト辞書つきの変換モジュールをインポート
import KanaKanjiConverterModuleWithDefaultDictionary

// 変換器を初期化する
let converter = KanaKanjiConverter()
// 入力を初期化する
var c = ComposingText()
// 変換したい文章を追加する
c.insertAtCursorPosition("あずーきーはしんじだいのきーぼーどあぷりです", inputStyle: .direct)
// 変換のためのオプションを指定して、変換を要求
let results = converter.requestCandidates(c, options: .withDefaultDictionary(...))
// 結果の一番目を表示
print(results.mainResults.first!.text)  // azooKeyは新時代のキーボードアプリです

options: .withDefaultDictionary(...)は、ConvertRequestOptionsを生成し、変換リクエストに必要な情報を指定します。詳しくはコード内のドキュメントコメントを参照してください。

ConvertRequestOptions

ConvertRequestOptionsは変換リクエストに必要な設定値です。例えば以下のように設定します。

let options = ConvertRequestOptions.withDefaultDictionary(
    // 日本語予測変換
    requireJapanesePrediction: true,
    // 英語予測変換 
    requireEnglishPrediction: false,
    // 入力言語 
    keyboardLanguage: .ja_JP,
    // 学習タイプ 
    learningType: .nothing, 
    // 学習データを保存するディレクトリのURL(書類フォルダを指定)
    memoryDirectoryURL: .documentsDirectory, 
    // ユーザ辞書データのあるディレクトリのURL(書類フォルダを指定)
    sharedContainerURL: .documentsDirectory, 
    // メタデータ
    metadata: .init(appVersionString: "Version X")
)

ComposingText

ComposingTextは入力管理を行いつつ変換をリクエストするためのAPIです。ローマ字入力などを適切にハンドルするために利用できます。詳しくはドキュメントを参照してください。

辞書データ

AzooKeyKanaKanjiConverterのデフォルト辞書としてazooKey_dictionary_storageがサブモジュールとして指定されています。過去のバージョンの辞書データはGoogle Driveからもダウンロードすることができます。

また、以下のフォーマットであれば自前で用意した辞書データを利用することもできます。カスタム辞書データのサポートは限定的なので、ソースコードを確認の上ご利用ください。

- Dictionary/
  - louds/
    - charId.chid
    - X.louds
    - X.loudschars2
    - X.loudstxt3
    - ...
  - p/
    - X.csv
  - cb/
    - 0.binary
    - 1.binary
    - ...
  - mm.binary

デフォルト以外の辞書データを利用する場合、ターゲットのdependenciesに以下を追加してください。

.target(
  name: "MyPackage",
  dependencies: [
      .product(name: "KanaKanjiConverterModule", package: "AzooKeyKanaKanjiConverter")
  ],
),

利用時に、辞書データのディレクトリを明示的に指定する必要があります。

// デフォルト辞書を含まない変換モジュールを指定
import KanaKanjiConverterModule

let options = ConvertRequestOptions(
    // 日本語予測変換
    requireJapanesePrediction: true,
    // 英語予測変換 
    requireEnglishPrediction: false,
    // 入力言語 
    keyboardLanguage: .ja_JP,
    // 学習タイプ 
    learningType: .nothing, 
    // ここが必要
    // 辞書データのURL(先ほど追加した辞書リソースを指定)
    dictionaryResourceURL: Bundle.main.bundleURL.appending(path: "Dictionary", directoryHint: .isDirectory),
    // 学習データを保存するディレクトリのURL(書類フォルダを指定)
    memoryDirectoryURL: .documentsDirectory, 
    // ユーザ辞書データのあるディレクトリのURL(書類フォルダを指定)
    sharedContainerURL: .documentsDirectory, 
    // メタデータ
    metadata: .init(appVersionString: "Version X")
)

dictionaryResourceURLのオプションはKanaKanjiConverterModuleWithDefaultDictionaryモジュールでも利用できますが、バンドルに含まれる辞書リソースが利用されないため、アプリケーションサイズが不必要に大きくなります。デフォルトでない辞書データを利用する場合はKanaKanjiConverterModuleを利用してください。

SwiftUtils

Swift一般に利用できるユーティリティのモジュールです。

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

Last updated: Sat May 04 2024 18:09:13 GMT-0900 (Hawaii-Aleutian Daylight Time)