Skip to content

yahoojapan/ly-corporation-mobile-nlp-sdk

Repository files navigation

License

LY Corporation Mobile NLP SDK

LY Corporation Mobile NLP SDK は、モバイル端末上で動作するアプリ内で自然言語解析処理を手軽に利用できるようにすることを目的とした SDK です。

現在はその手段のひとつとして、Yahoo!デベロッパーネットワーク(YJDN) が提供するテキスト解析 Web API を Android/iOS アプリ上から簡単に利用できる実装を提供しています。

特長

  • クロスプラットフォーム: Android は .aar、iOS は .xcframework を提供
  • 最小限のセットアップ: APPID を設定するだけで API 呼び出しを開始
  • デモ同梱: 導入・実行手順を確認できるデモアプリを同梱(導入手順にはデモアプリの例が含まれていますが、利用者のアプリに組み込むことを目的としています)

本 SDK で利用可能なテキスト解析 WebAPI の機能

機能 リクエストパラメータの method
日本語形態素解析 jlp.maservice.parse
かな漢字変換 jlp.jimservice.conversion
ルビ振り jlp.furiganaservice.furigana
校正支援 jlp.kouseiservice.kousei
日本語係り受け解析 jlp.daservice.parse
キーフレーズ抽出 jlp.keyphraseservice.extract
自然言語理解 jlp.nluservice.analyze
固有表現抽出 jlp.nerservice.extract

詳細はテキスト解析 WebAPI のドキュメントをご覧ください。

プロジェクト構成

graph TD

%% 全体を縦方向
direction TB

%% =====================
%% 利用者のアプリ/デモアプリ
%% =====================
subgraph apps["アプリ"]
    androidApp["androidApp"]
    iosApp["iosApp"]
end

%% =====================
%% 配布物
%% =====================
subgraph artifacts["配布物"]
    aarDist["Android用 AAR"]
    xcDist["iOS用 XCFramework(MobileNLPKit)"]
end

%% 接続(アプリ -> 配布物)
androidApp --> |組み込む| aarDist
iosApp --> |組み込む| xcDist

%% =====================
%% SDK内部構造
%% =====================
subgraph sdk["SDKの内部構造"]
    direction TB

    %% Android向けSDK
    subgraph sdkA["Android向けSDK"]
        direction TB
        subgraph kmmA["mobilenlp-kit (KMP)"]
            direction TB
            commonMainA["MobileNLPKitCore (commonMain)"]
            androidMainA["Android固有実装 (androidMain)"]
            androidMainA --> commonMainA
        end
    end

    %% iOS向けSDK
    subgraph sdkI["iOS向けSDK"]
        direction TB
        subgraph kmmI["mobilenlp-kit (KMP)"]
            direction TB
            coreI["MobileNLPKitCore (commonMain)"]
        end
        objcxx["Objective-C++ ブリッジ"]
        swiftAPI["MobileNLPKit (Swift API)"]
        swiftAPI --> objcxx --> coreI
    end
end

%% 矢印: 配布物 -> SDK内部構造
aarDist --> |ビルド元| sdkA
xcDist --> |ビルド元| sdkI

Loading

サポート環境

Platform OS / API Toolchain
Android API Level 24+ Kotlin 2.1.21, JDK 17
iOS iOS 16+ Xcode 16, Swift 5 系

Note: 上記は検証済みの推奨構成です。その他の組み合わせは動作を保証しません。

導入方法

APPID の発行(必須)

Yahoo! JAPAN の Web API を利用するには、アプリケーションごとに発行される アプリケーション ID(APPID) が必要です。以下の手順で発行してください。

  1. https://e.developer.yahoo.co.jp/register にアクセス
  2. Yahoo! JAPAN ID でログイン
  3. 「新しいアプリケーションを開発」で必要事項を入力
  4. 登録完了後、APPID が発行されます

APPID の詳細については、こちらのサポート記事をご覧ください。

Android

1. AAR の生成

本リポジトリのルートディレクトリで以下を実行してください。

$ ./gradlew :mobilenlp-kit:assemble

生成先は mobilenlp-kit/build/outputs/aar/mobilenlp-kit-{debug,release}.aar です。

$ ls -L1 mobilenlp-kit/build/outputs/aar/
mobilenlp-kit/build/outputs/aar/mobilenlp-kit-debug.aar
mobilenlp-kit/build/outputs/aar/mobilenlp-kit-release.aar

2. AAR の読み込み

利用者のアプリでの設定

導入先モジュール(<module_root>)に libs ディレクトリを作成し、生成した .aar ファイルを配置してください。

# 例: リリース版の AAR を配置する場合
$ mkdir -p <module_root>/libs
$ cp mobilenlp-kit/build/outputs/aar/mobilenlp-kit-release.aar <module_root>/libs/

続いて、導入先モジュールの build.gradle.kts に以下を追記して、Gradle への依存関係を追加してください。

dependencies {
    // for mobilenlp-kit
    implementation(files("libs/mobilenlp-kit-release.aar"))

    // SDK が利用する依存ライブラリ
    // ※ 利用者側で確認して追加してください
}

本 SDK は、ネットワーク通信や JSON 解析などに外部ライブラリを利用しています。 これらのライブラリは SDK に同梱されないため、利用者のアプリ側で追加が必要です。

どのライブラリが必要かは、以下のコマンドで確認してください。

$ ./gradlew :mobilenlp-kit:dependencies --configuration releaseRuntimeClasspath | grep -E '^(\+|\\)--- '

出力例:

+--- io.ktor:ktor-client-okhttp:3.2.1
+--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 (*)
+--- io.ktor:ktor-client-core:3.2.1 (*)
+--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
\--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*)

この場合、kotlin-stdlib を除いた以下の依存を追加する必要があります。

implementation("io.ktor:ktor-client-okhttp:3.2.1")
implementation("io.ktor:ktor-client-core:3.2.1")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")

⚠️ 依存ライブラリやバージョンは SDK の更新により変わる可能性があります。 プロジェクトに組み込む際は、必ず上記コマンドで最新の依存関係を確認してください。

さらに、ネットワーク通信を行うためには AndroidManifest.xml に以下のパーミッションを追加してください。

<uses-permission android:name="android.permission.INTERNET"/>
デモアプリ(androidApp)

本リポジトリに含まれる デモアプリ(androidApp)では、mobilenlp-kit モジュールを直接依存関係に含めています。 そのため、デモアプリをビルドする際には .aarlibs/ に配置する必要はありません。

iOS

1. xcframework の生成

本リポジトリのルートディレクトリで以下を実行してください。

$ ./gradlew :mobilenlp-kit:assembleMobileNLPKitCoreXCFramework

生成先は mobilenlp-kit/build/XCFrameworks/{debug,release}/MobileNLPKitCore.xcframework です。

$ ls -L1 mobilenlp-kit/build/XCFrameworks/*/*.xcframework
mobilenlp-kit/build/XCFrameworks/debug/MobileNLPKitCore.xcframework:
Info.plist
ios-arm64
ios-arm64_x86_64-simulator

mobilenlp-kit/build/XCFrameworks/release/MobileNLPKitCore.xcframework:
Info.plist
ios-arm64
ios-arm64_x86_64-simulator

2. xcframework の読み込み

Note: iOS 向け SDK 本体は MobileNLPKit で、内部で mobilenlp-kitcommonMain を利用します。

利用者のアプリでの設定

Swift Package Manager(SPM)経由で MobileNLPKit を追加してください。

  1. Xcode でアプリのプロジェクトを開く
  2. 「PROJECT > Package Dependencies > +」 を開く
  3. 「Add Local」を選択してこのリポジトリの Package.swift を指定する
  4. 「Frameworks, Libraries, and Embedded Content」に MobileNLPKitを追加する
デモアプリ(iosApp)

本リポジトリ内のデモアプリは、生成した MobileNLPKit.framework を直接参照しています。 そのため、iosApp をビルドする際に SPM の追加設定を行う必要はありません。

使い方

Android (Kotlin)

import jp.co.lycorp.jlp.mobilenlp.kit.JlpHandlerType
import jp.co.lycorp.jlp.mobilenlp.kit.MobileJlpHandlerFactory
import jp.co.lycorp.jlp.mobilenlp.kit.model.JlpMethod
import kotlinx.coroutines.runBlocking

viewModelScope.launch(Dispatchers.IO) {
    // 1) ハンドラ作成
    val handler = MobileJlpHandlerFactory.create(JlpHandlerType.Online("<APPID>"))

    // 2) 解析(suspend)
    val response = handler.analyze(JlpMethod.MA, "美しい水車小屋の娘", id = "1234")

    // 3) 出力
    println(response)
}

iOS (Swift)

import MobileNLPKit

// 1) ハンドラ作成
let handler = MobileJlpHandlerFactory.create(JlpHandlerType.online(appid: "<APPID>"))

// 2) 解析(completion)
handler.analyze(method: .ma, query: "美しい水車小屋の娘", id: "1234") { jlpResponse, _ in
    // 3) 出力
    if let response = jlpResponse {
        print(response)
    }
}

デモアプリの利用

APPID の設定

こちらで発行した APPID は、デモアプリで利用するために secrets.properties に以下のように記載してください。

$ cat secrets.properties
appid=your_appid_here  # 発行された APPID をここに記載

ビルドと実行

Android

  1. Android Studio でプロジェクトを開く
  2. Run Configuration を androidApp に設定して実行

iOS

  1. iosApp/JlpTestApp.xcworkspace を Xcode で開く
  2. ターゲットを iosApp に設定し、シミュレータまたは実機で実行

デモアプリの使い方

  1. 利用するメソッド(例:日本語形態素解析)を選択
  2. 「入力テキスト」に自然文を入力 (デフォルトでサンプルテキストが入力済み)
  3. 「解析する」ボタンを押下
  4. JSON 形式の結果が画面下部に表示されることを確認

デモ画面

ライセンス

本プロジェクトのライセンスファイルはこちらからご覧いただけます。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published