1️⃣ 言語の選択
✅ Kotlin を採用するのがベスト
理由:
- stera SDK は Java で提供 されているが、Kotlin でも問題なく利用可能
- Jetpack Compose を使うなら Kotlin 必須
- Google が Kotlin First を推奨 しており、今後のアップデートでも Kotlin が主流になる
- コードの簡潔さ、非同期処理のしやすさ、公式サポート など、Kotlin のメリットが大きい
🔹 例外的に Java を選ぶ理由
- 既存の Java コードを流用する必要がある
- チームのスキルセットが Java に寄っている
2️⃣ UI の設計
✅ Jetpack Compose を採用するのがベスト
理由:
- Figma との連携がしやすい(デザイン → コード変換が簡単)
- 宣言型 UI でコードがシンプルになり、メンテナンス性が向上
- Kotlin との親和性が高く、状態管理がしやすい
- XML を使わず UI を作れる(
findViewById()
が不要)
❌ Jetpack Compose を使わない場合
- すでに XML で作られた UI を流用する場合
- Jetpack Compose に慣れていないなら、部分導入も可
3️⃣ stera SDK の利用
✅ Java で提供される stera SDK を Kotlin から利用
注意点:
null
の処理に注意(?.
,!!
,?:
を適切に使う)- Java の コールバックを Kotlin で実装する
suspendCoroutine
を使って Kotlin コルーチンと連携LiveData
やStateFlow
で非同期データを管理
🔹 Kotlin での suspend
を活用した書き方
suspend fun getTerminalInfo(): String = suspendCoroutine { continuation ->
val steraApiManager = SteraApiManager()
steraApiManager.fetchTerminalInfo { info ->
continuation.resume(info) // 非同期データ取得後にコルーチンを再開
}
}
4️⃣ データ管理(StateFlow vs LiveData)
✅ StateFlow をメインに使う
- stera API からの端末情報を リアルタイムで取得 & 監視
- 非同期データの管理 に適している(Flow の
collect()
を使う) Flow
を使うと Kotlin の 非同期処理と統一しやすい
✅ UI の状態管理には LiveData
- Fragment や Activity のライフサイクルに応じたデータ管理
LiveData.observe()
を使って UI にデータをバインド
🔹 StateFlow の例
object TerminalInfoRepository {
private val _terminalInfo = MutableStateFlow<String>("Unknown Terminal")
val terminalInfo = _terminalInfo.asStateFlow()
fun updateInfo(newInfo: String) {
_terminalInfo.value = newInfo
}
}
🔹 LiveData の例
class TerminalViewModel : ViewModel() {
private val _terminalInfo = MutableLiveData<String>()
val terminalInfo: LiveData<String> get() = _terminalInfo
fun updateTerminalInfo(newInfo: String) {
_terminalInfo.postValue(newInfo)
}
}
5️⃣ 非同期処理の実装
✅ Kotlin コルーチンを活用
- stera SDK の API は 非同期処理が多い ため、コルーチン (
suspend
) を使うとシンプルに記述可能 suspendCoroutine
を利用して Java のコールバックを Kotlin のsuspend
関数に変換Dispatchers.IO
を使い、適切なスレッドで処理を実行
🔹 非同期データの取得
suspend fun getTerminalData(): String = withContext(Dispatchers.IO) {
steraApiManager.fetchTerminalData()
}
🚀 stera terminal アプリ開発のベストプラクティス
項目 | 最適な方法 |
言語 | ✅ Kotlin(stera SDK が Java でも問題なく利用可能) |
UI設計 | ✅ Jetpack Compose(宣言型 UI、Figma との相性が良い) |
stera SDK の利用 | ✅ Java の API を Kotlin で適切に処理( suspendCoroutine を活用) |
データ管理 | ✅ StateFlow (非同期データ)、LiveData (UI 状態管理) |
非同期処理 | ✅ Kotlin コルーチン( Dispatchers.IO + suspend ) |
🎯 結論
stera terminal 向けのアプリを開発するなら、以下の方法を採用するのがベスト。
1️⃣ 言語は Kotlin を採用(stera SDK は Java だが、相互運用可能)
2️⃣ UI は Jetpack Compose を使い、Figma との連携を強化
3️⃣ Java の stera SDK を Kotlin で安全に扱う(suspendCoroutine
を活用)
4️⃣ データ管理は StateFlow
と LiveData
を適材適所で使い分け
5️⃣ 非同期処理は Kotlin コルーチンを活用し、スレッド管理を最適化
✅ この方法なら、シンプルなコードで stera terminal に最適なアプリを開発でき、将来的な拡張やメンテナンスもしやすくなる! 🚀