---
title: Unity の Java インターフェース
product: Unity Editor
version: '6000.0'
latest_version: '7000.0'
status: This page documents version 6000.0. The latest version is 7000.0.
canonical: https://docs.unity.com/ja-jp/engine/6000.0/manual/platform-specific/android/developing/plugins-for/plugins-java-code-from-c-sharp/jni-apis-unity
latest_url: https://docs.unity.com/ja-jp/engine/7000.0/manual/platform-specific/android/developing/plugins-for/plugins-java-code-from-c-sharp/jni-apis-unity.md
last_updated: 2026-10-30
generated_at: 2026-11-11T17:35:53.624Z
locale: ja-jp
---

# Unity の Java インターフェース

> C# スクリプトから Java/Kotlin コードをコールために使用できる Unity の Java ネイティブ インターフェース API について説明します。

Unity には、C# スクリプトから Java コードと対話する低レベルおよび高レベルの [Java ネイティブインターフェース](https://developer.android.com/training/articles/perf-jni) (JNI) API があります。

## 低レベル API##low-level-api

低レベルの [AndroidJNI](/engine/6000.0/script-reference/unityengine/androidjni.md) クラスは JNI 呼び出しをラップし、JNI メソッドに直接マップする静的メソッドを提供します。[AndroidJNIHelper](/engine/6000.0/script-reference/unityengine/androidjnihelper.md) API は、主に高レベル API で使用されるヘルパー機能を提供しますが、特定の状況で役立つ場合があります。

## 高レベル API##high-level-api

高レベルの [AndroidJavaObject](/engine/6000.0/script-reference/unityengine/androidjavaobject.md)、[AndroidJavaClass](/engine/6000.0/script-reference/unityengine/androidjavaclass.md)、および [AndroidJavaProxy](/engine/6000.0/script-reference/unityengine/androidjavaproxy.md) クラスは、JNI 呼び出しに必要な多くのタスクを自動化します。また、キャッシュを使用して Java の呼び出しを高速化します。`AndroidJavaObject` と `AndroidJavaClass` の組み合わせは、`AndroidJNI` と `AndroidJNIHelper` の上に構築されていますが、Java クラスの静的メンバーにアクセスするために使用できる静的メソッドなどの追加機能も含まれています。

さらに、Unity はアプリケーションの `currentActivity`、`currentContext`、および `currentConfiguration` のインスタンスへのアクセスを簡単にする [AndroidApplication](/engine/6000.0/script-reference/unityengine/android/androidapplication.md) クラスを提供します。このクラスでは、アプリケーションの要件に基づいて、UI またはメインスレッドでのコード実行をデリゲートすることもできます。

`AndroidJavaObject` と `AndroidJavaClass` のインスタンスは、それぞれ [java.lang.オブジェクト](https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html)と [java.lang.クラス](https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html)のインスタンスに 1 対 1 でマッピングされます。Java/Kotlin コードとの相互作用には 3 種類あります。

* メソッドを[コール](/engine/6000.0/script-reference/unityengine/androidjavaobject/call.md)します。
* フィールドの値を[取得](/engine/6000.0/script-reference/unityengine/androidjavaobject/get.md)します。
* フィールドの値を[設定](/engine/6000.0/script-reference/unityengine/androidjavaobject/set.md)します。

各インタラクションには静的バージョンもあります。

* 静的メソッドをコールする [CallStatic](/engine/6000.0/script-reference/unityengine/androidjavaobject/callstatic.md)。
* 静的フィールドの値を取得[する GetStatic](/engine/6000.0/script-reference/unityengine/androidjavaobject/getstatic.md)。
* 静的フィールドの値を設定する [SetStatic](/engine/6000.0/script-reference/unityengine/androidjavaobject/setstatic.md)。

フィールドの値を取得するか、値を返すメソッドを呼び出す場合は、[ジェネリック](https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/types/generics)を使用して戻り値の型を指定します。フィールドの値を設定する場合は、ジェネリックを使用して設定するフィールドのタイプも指定します。値を返さないメソッドには、通常の非ジェネリックバージョンの[コール](/engine/6000.0/script-reference/unityengine/androidjavaobject/call.md)があります。

> **Important:**
>
> 任意の [非プリミティブ型](http://developer.android.com/reference/java/lang/Class.html) に`AndroidJavaObject`としてアクセスする必要があります。唯一の例外は、Java のプリミティブ型を表さなくても、直接アクセスできる文字列です。

## 追加リソース##additional-resources

* [コード例：C# スクリプト](/engine/6000.0/manual/platform-specific/android/developing/plugins-for/plugins-java-code-from-c-sharp/high-level-api-code-examples.md)からの Java/Kotlin コードのコール
* [Java/Kotlin コードを呼び出すためのベストプラクティス](/engine/6000.0/manual/platform-specific/android/developing/plugins-for/plugins-java-code-from-c-sharp/call-java-kotlin-code-best-practices.md)
